Proxmox forum administrators, please increase maximum character count per post from 16KB to 128KB, thanks !

shodan

Well-Known Member
Sep 1, 2022
329
78
48
Hi,
I wish to paste a command script
Unfortunately, it is 17579 characters so it is over the limit of 16384 characters.

I know SSDs went up but the storage bill for these forum is still going to be alright if you spare me a couple more KBs !
 
Hi @shodan ,why not post this script on github and provide a link?


Blockbridge : Ultra low latency all-NVME shared storage for Proxmox - https://www.blockbridge.com/proxmox
Because that's a lot more work including agreeing to microsoft's terms and including third parties.

Versus pressing CTRL+V, I think it's it's to see why not.
Plus with random free hosts, well, we remember what happened to photobucket.

If I post the script here's it's going to reliably stay here as long as the forum exists.
But if I paste it to a 3rd party website, who knows how long that will remain functioning.
 
It sounds like we may have different views on the intended use of the forum. In my view, forum posts are not the ideal place for large code dumps, particularly ones approaching 16 KB, let alone 128 KB.

For larger code samples, a repository or another suitable hosting platform would make the code easier to read, maintain, and share. Providing a link also gives others a better opportunity to review and reuse the work.

Ultimately, the goal is to make contributions as accessible and useful to the community as possible.


Blockbridge : Ultra low latency all-NVME shared storage for Proxmox - https://www.blockbridge.com/proxmox
 
  • Like
Reactions: fba
Sure and I might, but also, maybe now that it's out of my clipboard and my thingy work, I might move on to other thing and forget to come back and share it.
And having a thing were you're reading about it, is also easier than having to go to another place to get it.
 
I wish to paste a command script
Unfortunately, it is 17579 characters so it is over the limit of 16384 characters.
You can attach a file to a post (the "Attach files" button below the composing window).

I can see attachments easily exceeding a few hundreds of KB in this Forum.
 
I understand there are workaround, ok, yes I can save it to a file, then other users could download the file and open it.

Or they could also just, copy this text

Code:
init_colors(){ if [ -t 1 ] && [ -z "${NO_COLOR:-}" ]; then RED=$(printf '\033[31m'); GREEN=$(printf '\033[32m'); CYAN=$(printf '\033[36m'); BOLD=$(printf '\033[1m'); RESET=$(printf '\033[0m'); else RED=; GREEN=; CYAN=; BOLD=; RESET=; fi; }; info(){ printf '%s[INFO]%s %s\n' "$CYAN" "$RESET" "$*"; }; pass(){ printf '%s[PASS]%s %s\n' "$GREEN" "$RESET" "$*"; }; fail(){ printf '%s[FAIL]%s %s\n' "$RED" "$RESET" "$*" >&2; }; require_root(){ if [ "$(id -u)" -eq 0 ]; then pass "Running as root"; return 0; else fail "This installer must be run as root"; return 1; fi; }; create_iommu_passthrough_service(){ if printf '%s\n' '[Unit]' 'Description=Set IOMMU mode for next boot - Pass-Through' '' '[Service]' Type=oneshot SyslogIdentifier=iommu-passthrough 'ExecStart=/bin/sh -c '"'"'find_tty(){ tty=; i=0; while [ "$$i" -lt 10 ] && [ -z "$$tty" ]; do for p in /proc/[0-9]*; do case "$$(readlink "$$p/exe" 2>/dev/null)" in */systemctl) c=$$(tr "\0" " " <"$$p/cmdline" 2>/dev/null); case "$$c" in *iommu-passthrough*) t=$$(readlink "$$p/fd/1" 2>/dev/null); case "$$t" in /dev/pts/*|/dev/tty*) tty=$$t; break;; esac;; esac;; esac; done; i=$$((i+1)); [ -n "$$tty" ] || sleep 0.05; done; }; emit(){ printf "%%s\n" "$$1"; [ -n "$$tty" ] && [ -w "$$tty" ] && printf "%%b\n" "$${2:-$$1}" >"$$tty"; }; clean_args(){ out=; for x in $$1; do case "$$x" in iommu=pt|iommu.strict=*|iommu.passthrough=*) :;; *) out="$${out:+$$out }$$x";; esac; done; printf "%%s" "$$out"; }; find_tty; C=$$(printf "\033[1;36m"); Y=$$(printf "\033[1;33m"); R=$$(printf "\033[1;31m"); Z=$$(printf "\033[0m"); M=$$(printf "\033[1;32m"); mode="iommu=pt"; name="Pass-Through"; [ "$$(id -u)" -eq 0 ] || { emit "ERROR: run as root" "$${R}ERROR:$${Z} run as root"; exit 1; }; src=; if [ -f /etc/kernel/cmdline ] && [ -s /etc/kernel/proxmox-boot-uuids ]; then old=$$(cat /etc/kernel/cmdline) || exit 1; clean=$$(clean_args "$$old"); printf "%%s\n" "$${clean:+$$clean }$$mode" >/etc/kernel/cmdline || { emit "ERROR: could not update /etc/kernel/cmdline" "$${R}ERROR:$${Z} could not update /etc/kernel/cmdline"; exit 1; }; command -v proxmox-boot-tool >/dev/null 2>&1 || { emit "ERROR: proxmox-boot-tool not found" "$${R}ERROR:$${Z} proxmox-boot-tool not found"; exit 1; }; proxmox-boot-tool refresh || exit 1; src=/etc/kernel/cmdline; elif [ -f /etc/default/grub ] && command -v update-grub >/dev/null 2>&1; then tmp=$$(mktemp) || exit 1; found=0; : >"$$tmp" || exit 1; while IFS= read -r line || [ -n "$$line" ]; do trim=$${line#"$${line%%%%[![:space:]]*}"}; case "$$trim" in GRUB_CMDLINE_LINUX_DEFAULT=*) val=$${trim#*=}; val=$$(printf "%%s" "$$val" | sed "s/^\"//;s/\"$$//"); clean=$$(clean_args "$$val"); printf "GRUB_CMDLINE_LINUX_DEFAULT=\"%%s\"\n" "$${clean:+$$clean }$$mode" >>"$$tmp"; found=1;; GRUB_CMDLINE_LINUX=*) val=$${trim#*=}; val=$$(printf "%%s" "$$val" | sed "s/^\"//;s/\"$$//"); clean=$$(clean_args "$$val"); printf "GRUB_CMDLINE_LINUX=\"%%s\"\n" "$$clean" >>"$$tmp";; *) printf "%%s\n" "$$line" >>"$$tmp";; esac; done </etc/default/grub; [ "$$found" -eq 1 ] || printf "GRUB_CMDLINE_LINUX_DEFAULT=\"%%s\"\n" "$$mode" >>"$$tmp"; cat "$$tmp" >/etc/default/grub; r=$$?; rm -f "$$tmp"; [ "$$r" -eq 0 ] || { emit "ERROR: could not update /etc/default/grub" "$${R}ERROR:$${Z} could not update /etc/default/grub"; exit "$$r"; }; update-grub || exit 1; src=/etc/default/grub; else emit "ERROR: no supported Proxmox boot configuration found" "$${R}ERROR:$${Z} no supported Proxmox boot configuration found"; exit 1; fi; emit "Next boot configured: $$name" "$${C}Next boot configured:$${Z} $${M}$$name$${Z}"; emit "Boot config: $$src" "$${C}Boot config:$${Z} $$src"; emit "Reboot required for the change to take effect." "$${Y}Reboot required for the change to take effect.$${Z}"; emit "Status: systemctl start iommu-status" "$${C}Status:$${Z} systemctl start iommu-status"'"'"'' StandardOutput=journal StandardError=journal >'/etc/systemd/system/iommu-passthrough.service'; then pass 'Created iommu-passthrough.service'; else fail 'Failed to create iommu-passthrough.service'; return 1; fi; }; create_iommu_translated_lazy_service(){ if printf '%s\n' '[Unit]' 'Description=Set IOMMU mode for next boot - Translated - Lazy' '' '[Service]' Type=oneshot SyslogIdentifier=iommu-translated-lazy 'ExecStart=/bin/sh -c '"'"'find_tty(){ tty=; i=0; while [ "$$i" -lt 10 ] && [ -z "$$tty" ]; do for p in /proc/[0-9]*; do case "$$(readlink "$$p/exe" 2>/dev/null)" in */systemctl) c=$$(tr "\0" " " <"$$p/cmdline" 2>/dev/null); case "$$c" in *iommu-translated-lazy*) t=$$(readlink "$$p/fd/1" 2>/dev/null); case "$$t" in /dev/pts/*|/dev/tty*) tty=$$t; break;; esac;; esac;; esac; done; i=$$((i+1)); [ -n "$$tty" ] || sleep 0.05; done; }; emit(){ printf "%%s\n" "$$1"; [ -n "$$tty" ] && [ -w "$$tty" ] && printf "%%b\n" "$${2:-$$1}" >"$$tty"; }; clean_args(){ out=; for x in $$1; do case "$$x" in iommu=pt|iommu.strict=*|iommu.passthrough=*) :;; *) out="$${out:+$$out }$$x";; esac; done; printf "%%s" "$$out"; }; find_tty; C=$$(printf "\033[1;36m"); Y=$$(printf "\033[1;33m"); R=$$(printf "\033[1;31m"); Z=$$(printf "\033[0m"); M=$$(printf "\033[1;33m"); mode="iommu.strict=0"; name="Translated - Lazy"; [ "$$(id -u)" -eq 0 ] || { emit "ERROR: run as root" "$${R}ERROR:$${Z} run as root"; exit 1; }; src=; if [ -f /etc/kernel/cmdline ] && [ -s /etc/kernel/proxmox-boot-uuids ]; then old=$$(cat /etc/kernel/cmdline) || exit 1; clean=$$(clean_args "$$old"); printf "%%s\n" "$${clean:+$$clean }$$mode" >/etc/kernel/cmdline || { emit "ERROR: could not update /etc/kernel/cmdline" "$${R}ERROR:$${Z} could not update /etc/kernel/cmdline"; exit 1; }; command -v proxmox-boot-tool >/dev/null 2>&1 || { emit "ERROR: proxmox-boot-tool not found" "$${R}ERROR:$${Z} proxmox-boot-tool not found"; exit 1; }; proxmox-boot-tool refresh || exit 1; src=/etc/kernel/cmdline; elif [ -f /etc/default/grub ] && command -v update-grub >/dev/null 2>&1; then tmp=$$(mktemp) || exit 1; found=0; : >"$$tmp" || exit 1; while IFS= read -r line || [ -n "$$line" ]; do trim=$${line#"$${line%%%%[![:space:]]*}"}; case "$$trim" in GRUB_CMDLINE_LINUX_DEFAULT=*) val=$${trim#*=}; val=$$(printf "%%s" "$$val" | sed "s/^\"//;s/\"$$//"); clean=$$(clean_args "$$val"); printf "GRUB_CMDLINE_LINUX_DEFAULT=\"%%s\"\n" "$${clean:+$$clean }$$mode" >>"$$tmp"; found=1;; GRUB_CMDLINE_LINUX=*) val=$${trim#*=}; val=$$(printf "%%s" "$$val" | sed "s/^\"//;s/\"$$//"); clean=$$(clean_args "$$val"); printf "GRUB_CMDLINE_LINUX=\"%%s\"\n" "$$clean" >>"$$tmp";; *) printf "%%s\n" "$$line" >>"$$tmp";; esac; done </etc/default/grub; [ "$$found" -eq 1 ] || printf "GRUB_CMDLINE_LINUX_DEFAULT=\"%%s\"\n" "$$mode" >>"$$tmp"; cat "$$tmp" >/etc/default/grub; r=$$?; rm -f "$$tmp"; [ "$$r" -eq 0 ] || { emit "ERROR: could not update /etc/default/grub" "$${R}ERROR:$${Z} could not update /etc/default/grub"; exit "$$r"; }; update-grub || exit 1; src=/etc/default/grub; else emit "ERROR: no supported Proxmox boot configuration found" "$${R}ERROR:$${Z} no supported Proxmox boot configuration found"; exit 1; fi; emit "Next boot configured: $$name" "$${C}Next boot configured:$${Z} $${M}$$name$${Z}"; emit "Boot config: $$src" "$${C}Boot config:$${Z} $$src"; emit "Reboot required for the change to take effect." "$${Y}Reboot required for the change to take effect.$${Z}"; emit "Status: systemctl start iommu-status" "$${C}Status:$${Z} systemctl start iommu-status"'"'"'' StandardOutput=journal StandardError=journal >'/etc/systemd/system/iommu-translated-lazy.service'; then pass 'Created iommu-translated-lazy.service'; else fail 'Failed to create iommu-translated-lazy.service'; return 1; fi; }; create_iommu_translated_strict_service(){ if printf '%s\n' '[Unit]' 'Description=Set IOMMU mode for next boot - Translated - Strict' '' '[Service]' Type=oneshot SyslogIdentifier=iommu-translated-strict 'ExecStart=/bin/sh -c '"'"'find_tty(){ tty=; i=0; while [ "$$i" -lt 10 ] && [ -z "$$tty" ]; do for p in /proc/[0-9]*; do case "$$(readlink "$$p/exe" 2>/dev/null)" in */systemctl) c=$$(tr "\0" " " <"$$p/cmdline" 2>/dev/null); case "$$c" in *iommu-translated-strict*) t=$$(readlink "$$p/fd/1" 2>/dev/null); case "$$t" in /dev/pts/*|/dev/tty*) tty=$$t; break;; esac;; esac;; esac; done; i=$$((i+1)); [ -n "$$tty" ] || sleep 0.05; done; }; emit(){ printf "%%s\n" "$$1"; [ -n "$$tty" ] && [ -w "$$tty" ] && printf "%%b\n" "$${2:-$$1}" >"$$tty"; }; clean_args(){ out=; for x in $$1; do case "$$x" in iommu=pt|iommu.strict=*|iommu.passthrough=*) :;; *) out="$${out:+$$out }$$x";; esac; done; printf "%%s" "$$out"; }; find_tty; C=$$(printf "\033[1;36m"); Y=$$(printf "\033[1;33m"); R=$$(printf "\033[1;31m"); Z=$$(printf "\033[0m"); M=$$(printf "\033[1;31m"); mode="iommu.strict=1"; name="Translated - Strict"; [ "$$(id -u)" -eq 0 ] || { emit "ERROR: run as root" "$${R}ERROR:$${Z} run as root"; exit 1; }; src=; if [ -f /etc/kernel/cmdline ] && [ -s /etc/kernel/proxmox-boot-uuids ]; then old=$$(cat /etc/kernel/cmdline) || exit 1; clean=$$(clean_args "$$old"); printf "%%s\n" "$${clean:+$$clean }$$mode" >/etc/kernel/cmdline || { emit "ERROR: could not update /etc/kernel/cmdline" "$${R}ERROR:$${Z} could not update /etc/kernel/cmdline"; exit 1; }; command -v proxmox-boot-tool >/dev/null 2>&1 || { emit "ERROR: proxmox-boot-tool not found" "$${R}ERROR:$${Z} proxmox-boot-tool not found"; exit 1; }; proxmox-boot-tool refresh || exit 1; src=/etc/kernel/cmdline; elif [ -f /etc/default/grub ] && command -v update-grub >/dev/null 2>&1; then tmp=$$(mktemp) || exit 1; found=0; : >"$$tmp" || exit 1; while IFS= read -r line || [ -n "$$line" ]; do trim=$${line#"$${line%%%%[![:space:]]*}"}; case "$$trim" in GRUB_CMDLINE_LINUX_DEFAULT=*) val=$${trim#*=}; val=$$(printf "%%s" "$$val" | sed "s/^\"//;s/\"$$//"); clean=$$(clean_args "$$val"); printf "GRUB_CMDLINE_LINUX_DEFAULT=\"%%s\"\n" "$${clean:+$$clean }$$mode" >>"$$tmp"; found=1;; GRUB_CMDLINE_LINUX=*) val=$${trim#*=}; val=$$(printf "%%s" "$$val" | sed "s/^\"//;s/\"$$//"); clean=$$(clean_args "$$val"); printf "GRUB_CMDLINE_LINUX=\"%%s\"\n" "$$clean" >>"$$tmp";; *) printf "%%s\n" "$$line" >>"$$tmp";; esac; done </etc/default/grub; [ "$$found" -eq 1 ] || printf "GRUB_CMDLINE_LINUX_DEFAULT=\"%%s\"\n" "$$mode" >>"$$tmp"; cat "$$tmp" >/etc/default/grub; r=$$?; rm -f "$$tmp"; [ "$$r" -eq 0 ] || { emit "ERROR: could not update /etc/default/grub" "$${R}ERROR:$${Z} could not update /etc/default/grub"; exit "$$r"; }; update-grub || exit 1; src=/etc/default/grub; else emit "ERROR: no supported Proxmox boot configuration found" "$${R}ERROR:$${Z} no supported Proxmox boot configuration found"; exit 1; fi; emit "Next boot configured: $$name" "$${C}Next boot configured:$${Z} $${M}$$name$${Z}"; emit "Boot config: $$src" "$${C}Boot config:$${Z} $$src"; emit "Reboot required for the change to take effect." "$${Y}Reboot required for the change to take effect.$${Z}"; emit "Status: systemctl start iommu-status" "$${C}Status:$${Z} systemctl start iommu-status"'"'"'' StandardOutput=journal StandardError=journal >'/etc/systemd/system/iommu-translated-strict.service'; then pass 'Created iommu-translated-strict.service'; else fail 'Failed to create iommu-translated-strict.service'; return 1; fi; }; set_iommu_to_lazy_tlb_translation(){ systemctl reset-failed iommu-translated-lazy >/dev/null 2>&1 || :; systemctl start iommu-translated-lazy; }; set_iommu_to_strict_tlb_translation(){ systemctl reset-failed iommu-translated-strict >/dev/null 2>&1 || :; systemctl start iommu-translated-strict; }; set_iommu_to_passthrough(){ systemctl reset-failed iommu-passthrough >/dev/null 2>&1 || :; systemctl start iommu-passthrough; }; get_iommu_passthrough_mode(){ systemctl reset-failed iommu-status >/dev/null 2>&1 || :; systemctl start iommu-status; };
install_iommu_service_units 
#set_iommu_to_lazy_tlb_translation
#set_iommu_to_strict_tlb_translation
set_iommu_to_passthrough
get_iommu_passthrough_mode

This one doesn't work, as I had to trunkate it to fit.
And you can see for yourself, downloading and running the attached file, is several steps, compare to copy a paste-to-run script that is ready to go

I don't want a workaround, I just want this forum's admin to increase the max post length, from one arbitrary value to a slightly bigger arbitrary value.
 

Attachments