From 574a97057bc2d8da80925bdb5c54b8c28ab12d8a Mon Sep 17 00:00:00 2001 From: AuxXxilium Date: Fri, 1 Mar 2024 15:20:47 +0100 Subject: [PATCH] arc: add back VMM/KVM Switch Signed-off-by: AuxXxilium --- files/initrd/opt/arc/arc.sh | 25 +++++++++++++++++++++++++ files/initrd/opt/arc/init.sh | 6 ++++++ files/initrd/opt/arc/ramdisk-patch.sh | 3 ++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/files/initrd/opt/arc/arc.sh b/files/initrd/opt/arc/arc.sh index 4bf19568..368bdb49 100755 --- a/files/initrd/opt/arc/arc.sh +++ b/files/initrd/opt/arc/arc.sh @@ -53,6 +53,7 @@ ARCPATCH="$(readConfigKey "arc.patch" "${USER_CONFIG_FILE}")" BOOTIPWAIT="$(readConfigKey "arc.bootipwait" "${USER_CONFIG_FILE}")" KERNELLOAD="$(readConfigKey "arc.kernelload" "${USER_CONFIG_FILE}")" KERNELPANIC="$(readConfigKey "arc.kernelpanic" "${USER_CONFIG_FILE}")" +KVMSUPPORT="$(readConfigKey "arc.kvm" "${USER_CONFIG_FILE}")" MACSYS="$(readConfigKey "arc.macsys" "${USER_CONFIG_FILE}")" ODP="$(readConfigKey "arc.odp" "${USER_CONFIG_FILE}")" HDDSORT="$(readConfigKey "arc.hddsort" "${USER_CONFIG_FILE}")" @@ -373,6 +374,13 @@ function arcsettings() { dialog --backtitle "$(backtitle)" --title "Arc Warning" \ --msgbox "WARN: Your CPU does not have AES Support for Hardwareencryption in DSM." 0 0 fi + KVMSUPPORT="$(readConfigKey "arc.kvm" "${USER_CONFIG_FILE}")" + if [ "${KVMSUPPORT}" = "true" ]; then + if ! grep -q "^flags.*vmx.*" /proc/cpuinfo | grep -q "^flags.*svm.*" /proc/cpuinfo; then + dialog --backtitle "$(backtitle)" --title "Arc Warning" \ + --msgbox "WARN: Your CPU does not support VMM/KVM in DSM.\nCheck CPU/Bios for VMX or SVM Support." 0 0 + fi + fi # Config is done writeConfigKey "arc.confdone" "true" "${USER_CONFIG_FILE}" CONFDONE="$(readConfigKey "arc.confdone" "${USER_CONFIG_FILE}")" @@ -1949,6 +1957,7 @@ function sysinfo() { ARCIPV6="$(readConfigKey "arc.ipv6" "${USER_CONFIG_FILE}")" CONFIGVER="$(readConfigKey "arc.version" "${USER_CONFIG_FILE}")" HDDSORT="$(readConfigKey "arc.hddsort" "${USER_CONFIG_FILE}")" + KVMSUPPORT="$(readConfigKey "arc.kvm" "${USER_CONFIG_FILE}")" MODULESINFO="$(lsmod | awk -F' ' '{print $1}' | grep -v 'Module')" MODULESVERSION="$(cat "${MODULES_PATH}/VERSION")" ADDONSVERSION="$(cat "${ADDONS_PATH}/VERSION")" @@ -2015,6 +2024,7 @@ function sysinfo() { TEXT+="\n IPv6: \Zb${ARCIPV6}\Zn" TEXT+="\n Offline Mode: \Zb${OFFLINE}\Zn" TEXT+="\n Sort Drives: \Zb${HDDSORT}\Zn" + TEXT+="\n VMM/KVM Support: \Zb${KVMSUPPORT}\Zn" if [[ "${REMAP}" = "acports" || "${REMAP}" = "maxports" ]]; then TEXT+="\n SataPortMap | DiskIdxMap: \Zb${PORTMAP} | ${DISKMAP}\Zn" elif [ "${REMAP}" = "remap" ]; then @@ -2161,6 +2171,7 @@ function fullsysinfo() { ARCIPV6="$(readConfigKey "arc.ipv6" "${USER_CONFIG_FILE}")" CONFIGVER="$(readConfigKey "arc.version" "${USER_CONFIG_FILE}")" HDDSORT="$(readConfigKey "arc.hddsort" "${USER_CONFIG_FILE}")" + KVMSUPPORT="$(readConfigKey "arc.kvm" "${USER_CONFIG_FILE}")" MODULESINFO="$(lsmod | awk -F' ' '{print $1}' | grep -v 'Module')" MODULESVERSION="$(cat "${MODULES_PATH}/VERSION")" ADDONSVERSION="$(cat "${ADDONS_PATH}/VERSION")" @@ -2235,6 +2246,7 @@ function fullsysinfo() { TEXT+="\nIPv6: ${ARCIPV6}" TEXT+="\nOffline Mode: ${OFFLINE}" TEXT+="\nSort Drives: ${HDDSORT}" + TEXT+="\nVMM/KVM Support: ${KVMSUPPORT}" if [[ "${REMAP}" = "acports" || "${REMAP}" = "maxports" ]]; then TEXT+="\nSataPortMap | DiskIdxMap: ${PORTMAP} | ${DISKMAP}" elif [ "${REMAP}" = "remap" ]; then @@ -2692,6 +2704,12 @@ function resetLoader() { initConfigKey "netmask" "{}" "${USER_CONFIG_FILE}" initConfigKey "mac" "{}" "${USER_CONFIG_FILE}" initConfigKey "static" "{}" "${USER_CONFIG_FILE}" + # KVM Check + if grep -q -E "(vmx|svm)" /proc/cpuinfo; then + writeConfigKey "arc.kvm" "true" "${USER_CONFIG_FILE}" + else + writeConfigKey "arc.kvm" "false" "${USER_CONFIG_FILE}" + fi MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")" PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")" CONFDONE="$(readConfigKey "arc.confdone" "${USER_CONFIG_FILE}")" @@ -2831,6 +2849,7 @@ while true; do fi echo "O \"Official Driver Priority: \Z4${ODP}\Zn \" " >>"${TMP_PATH}/menu" echo "H \"Sort Drives: \Z4${HDDSORT}\Zn \" " >>"${TMP_PATH}/menu" + echo "V \"VMM/KVM Support: \Z4${KVMSUPPORT}\Zn \" " >>"${TMP_PATH}/menu" echo "c \"Use IPv6: \Z4${ARCIPV6}\Zn \" " >>"${TMP_PATH}/menu" echo "E \"Enable eMMC Boot: \Z4${EMMCBOOT}\Zn \" " >>"${TMP_PATH}/menu" echo "o \"Switch MacSys: \Z4${MACSYS}\Zn \" " >>"${TMP_PATH}/menu" @@ -2961,6 +2980,12 @@ while true; do BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")" NEXT="H" ;; + V) [ "${KVMSUPPORT}" = "true" ] && KVMSUPPORT='false' || KVMSUPPORT='true' + writeConfigKey "arc.kvm" "${KVMSUPPORT}" "${USER_CONFIG_FILE}" + writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}" + BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")" + NEXT="V" + ;; c) [ "${ARCIPV6}" = "true" ] && ARCIPV6='false' || ARCIPV6='true' writeConfigKey "arc.ipv6" "${ARCIPV6}" "${USER_CONFIG_FILE}" writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}" diff --git a/files/initrd/opt/arc/init.sh b/files/initrd/opt/arc/init.sh index 8d652c53..4bbfdf8c 100755 --- a/files/initrd/opt/arc/init.sh +++ b/files/initrd/opt/arc/init.sh @@ -61,6 +61,12 @@ initConfigKey "ip" "{}" "${USER_CONFIG_FILE}" initConfigKey "netmask" "{}" "${USER_CONFIG_FILE}" initConfigKey "mac" "{}" "${USER_CONFIG_FILE}" initConfigKey "static" "{}" "${USER_CONFIG_FILE}" +# KVM Check +if grep -q -E "(vmx|svm)" /proc/cpuinfo; then + writeConfigKey "arc.kvm" "true" "${USER_CONFIG_FILE}" +else + writeConfigKey "arc.kvm" "false" "${USER_CONFIG_FILE}" +fi # Init Network ETHX=$(ls /sys/class/net/ | grep -v lo) || true diff --git a/files/initrd/opt/arc/ramdisk-patch.sh b/files/initrd/opt/arc/ramdisk-patch.sh index 3a0ba41a..ad132bc6 100755 --- a/files/initrd/opt/arc/ramdisk-patch.sh +++ b/files/initrd/opt/arc/ramdisk-patch.sh @@ -33,6 +33,7 @@ KEYMAP="$(readConfigKey "keymap" "${USER_CONFIG_FILE}")" PLATFORM="$(readModelKey "${MODEL}" "platform")" HDDSORT="$(readConfigKey "arc.hddsort" "${USER_CONFIG_FILE}")" USBMOUNT="$(readConfigKey "arc.usbmount" "${USER_CONFIG_FILE}")" +KVMSUPPORT="$(readConfigKey "arc.kvm" "${USER_CONFIG_FILE}")" # Check if DSM Version changed . "${RAMDISK_PATH}/etc/VERSION" @@ -147,7 +148,7 @@ echo "/addons/revert.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FI # Install System Addons installAddon "eudev" "${PLATFORM}" "${KVER}" -echo "/addons/eudev.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog +echo "/addons/eudev.sh \${1} ${KVMSUPPORT}" >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog installAddon "disks" "${PLATFORM}" "${KVER}" echo "/addons/disks.sh \${1} ${HDDSORT} ${USBMOUNT} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog installAddon "misc" "${PLATFORM}" "${KVER}"