From 63ea33e9f9402619fe85199d5285f28733d4c8cf Mon Sep 17 00:00:00 2001 From: Hugues Larrive Date: Wed, 25 Jan 2023 11:02:11 +0100 Subject: [PATCH 1/3] Use fallocate instead of dd for better performances --- setup | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/setup b/setup index 7099524..b890ec3 100755 --- a/setup +++ b/setup @@ -269,7 +269,7 @@ do if [ ! -e ${ISODIR}/recovery-highsierra.iso ] then - dd if=/dev/zero of=${TMPDIR}/recovery-highsierra.iso bs=1M count=800 > ${LOGFILE} 2>> ${LOGFILE} + fallocate -l 800M ${TMPDIR}/recovery-highsierra.iso > ${LOGFILE} 2>> ${LOGFILE} mkfs.msdos -F 32 ${TMPDIR}/recovery-highsierra.iso -n HIGHSIERRA >> ${LOGFILE} 2>> ${LOGFILE} losetup /dev/loop0 ${TMPDIR}/recovery-highsierra.iso >> ${LOGFILE} 2>> ${LOGFILE} mkdir -p /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} @@ -460,7 +460,7 @@ do if [ ! -e ${ISODIR}/recovery-mojave.iso ] then - dd if=/dev/zero of=${TMPDIR}/recovery-mojave.iso bs=1M count=800 > ${LOGFILE} 2>> ${LOGFILE} + fallocate -l 800M ${TMPDIR}/recovery-mojave.iso > ${LOGFILE} 2>> ${LOGFILE} mkfs.msdos -F 32 ${TMPDIR}/recovery-mojave.iso -n MOJAVE >> ${LOGFILE} 2>> ${LOGFILE} losetup /dev/loop0 ${TMPDIR}/recovery-mojave.iso >> ${LOGFILE} 2>> ${LOGFILE} mkdir -p /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} @@ -651,7 +651,7 @@ do if [ ! -e ${ISODIR}/recovery-catalina.iso ] then - dd if=/dev/zero of=${TMPDIR}/recovery-catalina.iso bs=1M count=800 > ${LOGFILE} 2>> ${LOGFILE} + fallocate -l 800M ${TMPDIR}/recovery-catalina.iso > ${LOGFILE} 2>> ${LOGFILE} mkfs.msdos -F 32 ${TMPDIR}/recovery-catalina.iso -n CATALINA >> ${LOGFILE} 2>> ${LOGFILE} losetup /dev/loop0 ${TMPDIR}/recovery-catalina.iso >> ${LOGFILE} 2>> ${LOGFILE} mkdir -p /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} @@ -842,7 +842,7 @@ do if [ ! -e ${ISODIR}/recovery-bigsur.iso ] then - dd if=/dev/zero of=${TMPDIR}/recovery-bigsur.iso bs=1M count=800 > ${LOGFILE} 2>> ${LOGFILE} + fallocate -l 800M ${TMPDIR}/recovery-bigsur.iso > ${LOGFILE} 2>> ${LOGFILE} mkfs.msdos -F 32 ${TMPDIR}/recovery-bigsur.iso -n BIGSUR >> ${LOGFILE} 2>> ${LOGFILE} losetup /dev/loop0 ${TMPDIR}/recovery-bigsur.iso >> ${LOGFILE} 2>> ${LOGFILE} mkdir -p /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} @@ -1033,7 +1033,7 @@ do if [ ! -e ${ISODIR}/recovery-monterey.iso ] then - dd if=/dev/zero of=${TMPDIR}/recovery-monterey.iso bs=1M count=800 > ${LOGFILE} 2>> ${LOGFILE} + fallocate -l 800M ${TMPDIR}/recovery-monterey.iso > ${LOGFILE} 2>> ${LOGFILE} mkfs.msdos -F 32 ${TMPDIR}/recovery-monterey.iso -n MONTEREY >> ${LOGFILE} 2>> ${LOGFILE} losetup /dev/loop0 ${TMPDIR}/recovery-monterey.iso >> ${LOGFILE} 2>> ${LOGFILE} mkdir -p /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} @@ -1224,7 +1224,7 @@ do if [ ! -e ${ISODIR}/recovery-ventura.iso ] then - dd if=/dev/zero of=${TMPDIR}/recovery-ventura.iso bs=1M count=800 > ${LOGFILE} 2>> ${LOGFILE} + fallocate -l 800M ${TMPDIR}/recovery-ventura.iso > ${LOGFILE} 2>> ${LOGFILE} mkfs.msdos -F 32 ${TMPDIR}/recovery-ventura.iso -n VENTURA >> ${LOGFILE} 2>> ${LOGFILE} losetup /dev/loop0 ${TMPDIR}/recovery-ventura.iso >> ${LOGFILE} 2>> ${LOGFILE} mkdir -p /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} From 3093ae561c81cf7d9e7cbe011a5630cfbc14c650 Mon Sep 17 00:00:00 2001 From: Hugues Larrive Date: Wed, 25 Jan 2023 11:33:17 +0100 Subject: [PATCH 2/3] Fix conflicts when loop0 is used by an LXC container --- setup | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/setup b/setup index b890ec3..15562dc 100755 --- a/setup +++ b/setup @@ -271,9 +271,9 @@ do then fallocate -l 800M ${TMPDIR}/recovery-highsierra.iso > ${LOGFILE} 2>> ${LOGFILE} mkfs.msdos -F 32 ${TMPDIR}/recovery-highsierra.iso -n HIGHSIERRA >> ${LOGFILE} 2>> ${LOGFILE} - losetup /dev/loop0 ${TMPDIR}/recovery-highsierra.iso >> ${LOGFILE} 2>> ${LOGFILE} + LOOPDEV=`losetup -f --show ${TMPDIR}/recovery-highsierra.iso 2>> ${LOGFILE}` mkdir -p /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} - mount /dev/loop0 /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} + mount ${LOOPDEV} /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} mkdir /mnt/APPLE/com.apple.recovery.boot >> ${LOGFILE} 2>> ${LOGFILE} cd /mnt/APPLE/com.apple.recovery.boot >> ${LOGFILE} 2>> ${LOGFILE} @@ -284,7 +284,7 @@ do umount /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} rmdir /mnt/APPLE - losetup -d /dev/loop0 >> ${LOGFILE} 2>> ${LOGFILE} + losetup -d ${LOOPDEV} >> ${LOGFILE} 2>> ${LOGFILE} mv ${TMPDIR}/recovery-highsierra.iso ${ISODIR} @@ -462,9 +462,9 @@ do then fallocate -l 800M ${TMPDIR}/recovery-mojave.iso > ${LOGFILE} 2>> ${LOGFILE} mkfs.msdos -F 32 ${TMPDIR}/recovery-mojave.iso -n MOJAVE >> ${LOGFILE} 2>> ${LOGFILE} - losetup /dev/loop0 ${TMPDIR}/recovery-mojave.iso >> ${LOGFILE} 2>> ${LOGFILE} + LOOPDEV=`losetup -f --show ${TMPDIR}/recovery-mojave.iso 2>> ${LOGFILE}` mkdir -p /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} - mount /dev/loop0 /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} + mount ${LOOPDEV} /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} mkdir /mnt/APPLE/com.apple.recovery.boot >> ${LOGFILE} 2>> ${LOGFILE} cd /mnt/APPLE/com.apple.recovery.boot >> ${LOGFILE} 2>> ${LOGFILE} @@ -475,7 +475,7 @@ do umount /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} rmdir /mnt/APPLE - losetup -d /dev/loop0 >> ${LOGFILE} 2>> ${LOGFILE} + losetup -d ${LOOPDEV} >> ${LOGFILE} 2>> ${LOGFILE} mv ${TMPDIR}/recovery-mojave.iso ${ISODIR} @@ -653,9 +653,9 @@ do then fallocate -l 800M ${TMPDIR}/recovery-catalina.iso > ${LOGFILE} 2>> ${LOGFILE} mkfs.msdos -F 32 ${TMPDIR}/recovery-catalina.iso -n CATALINA >> ${LOGFILE} 2>> ${LOGFILE} - losetup /dev/loop0 ${TMPDIR}/recovery-catalina.iso >> ${LOGFILE} 2>> ${LOGFILE} + LOOPDEV=`losetup -f --show ${TMPDIR}/recovery-catalina.iso 2>> ${LOGFILE}` mkdir -p /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} - mount /dev/loop0 /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} + mount ${LOOPDEV} /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} mkdir /mnt/APPLE/com.apple.recovery.boot >> ${LOGFILE} 2>> ${LOGFILE} cd /mnt/APPLE/com.apple.recovery.boot >> ${LOGFILE} 2>> ${LOGFILE} @@ -666,7 +666,7 @@ do umount /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} rmdir /mnt/APPLE - losetup -d /dev/loop0 >> ${LOGFILE} 2>> ${LOGFILE} + losetup -d ${LOOPDEV} >> ${LOGFILE} 2>> ${LOGFILE} mv ${TMPDIR}/recovery-catalina.iso ${ISODIR} @@ -844,9 +844,9 @@ do then fallocate -l 800M ${TMPDIR}/recovery-bigsur.iso > ${LOGFILE} 2>> ${LOGFILE} mkfs.msdos -F 32 ${TMPDIR}/recovery-bigsur.iso -n BIGSUR >> ${LOGFILE} 2>> ${LOGFILE} - losetup /dev/loop0 ${TMPDIR}/recovery-bigsur.iso >> ${LOGFILE} 2>> ${LOGFILE} + LOOPDEV=`losetup -f --show ${TMPDIR}/recovery-bigsur.iso 2>> ${LOGFILE}` mkdir -p /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} - mount /dev/loop0 /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} + mount ${LOOPDEV} /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} mkdir /mnt/APPLE/com.apple.recovery.boot >> ${LOGFILE} 2>> ${LOGFILE} cd /mnt/APPLE/com.apple.recovery.boot >> ${LOGFILE} 2>> ${LOGFILE} @@ -857,7 +857,7 @@ do umount /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} rmdir /mnt/APPLE - losetup -d /dev/loop0 >> ${LOGFILE} 2>> ${LOGFILE} + losetup -d ${LOOPDEV} >> ${LOGFILE} 2>> ${LOGFILE} mv ${TMPDIR}/recovery-bigsur.iso ${ISODIR} @@ -1035,9 +1035,9 @@ do then fallocate -l 800M ${TMPDIR}/recovery-monterey.iso > ${LOGFILE} 2>> ${LOGFILE} mkfs.msdos -F 32 ${TMPDIR}/recovery-monterey.iso -n MONTEREY >> ${LOGFILE} 2>> ${LOGFILE} - losetup /dev/loop0 ${TMPDIR}/recovery-monterey.iso >> ${LOGFILE} 2>> ${LOGFILE} + LOOPDEV=`losetup -f --show ${TMPDIR}/recovery-monterey.iso 2>> ${LOGFILE}` mkdir -p /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} - mount /dev/loop0 /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} + mount ${LOOPDEV} /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} mkdir /mnt/APPLE/com.apple.recovery.boot >> ${LOGFILE} 2>> ${LOGFILE} cd /mnt/APPLE/com.apple.recovery.boot >> ${LOGFILE} 2>> ${LOGFILE} @@ -1048,7 +1048,7 @@ do umount /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} rmdir /mnt/APPLE - losetup -d /dev/loop0 >> ${LOGFILE} 2>> ${LOGFILE} + losetup -d ${LOOPDEV} >> ${LOGFILE} 2>> ${LOGFILE} mv ${TMPDIR}/recovery-monterey.iso ${ISODIR} @@ -1226,9 +1226,9 @@ do then fallocate -l 800M ${TMPDIR}/recovery-ventura.iso > ${LOGFILE} 2>> ${LOGFILE} mkfs.msdos -F 32 ${TMPDIR}/recovery-ventura.iso -n VENTURA >> ${LOGFILE} 2>> ${LOGFILE} - losetup /dev/loop0 ${TMPDIR}/recovery-ventura.iso >> ${LOGFILE} 2>> ${LOGFILE} + LOOPDEV=`losetup -f --show ${TMPDIR}/recovery-ventura.iso 2>> ${LOGFILE}` mkdir -p /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} - mount /dev/loop0 /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} + mount ${LOOPDEV} /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} mkdir /mnt/APPLE/com.apple.recovery.boot >> ${LOGFILE} 2>> ${LOGFILE} cd /mnt/APPLE/com.apple.recovery.boot >> ${LOGFILE} 2>> ${LOGFILE} @@ -1239,7 +1239,7 @@ do umount /mnt/APPLE >> ${LOGFILE} 2>> ${LOGFILE} rmdir /mnt/APPLE - losetup -d /dev/loop0 >> ${LOGFILE} 2>> ${LOGFILE} + losetup -d ${LOOPDEV} >> ${LOGFILE} 2>> ${LOGFILE} mv ${TMPDIR}/recovery-ventura.iso ${ISODIR} From afe4a039b6407b8435eb290da721571dc50220ef Mon Sep 17 00:00:00 2001 From: Hugues Larrive Date: Thu, 26 Jan 2023 00:41:59 +0100 Subject: [PATCH 3/3] Add Opencore config.plist customization feature --- setup | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/setup b/setup index 15562dc..106e121 100755 --- a/setup +++ b/setup @@ -184,6 +184,7 @@ do echo " 202 - Clear ALL macOS Recovery Images" echo " 203 - Remove Proxmox Subscription Notice" echo " 204 - Enable macOS in Cloud (VultR Provider)" + echo " 205 - Customize Opencore config.plist" echo " " echo " 0 - Quit (or press ENTER only)" echo " " @@ -1521,6 +1522,107 @@ do fi +################################################################################################################################################################################################ +################################################################################################################################################################################################ +################################################################################################################################################################################################ + +################################################################################################################################################################################################ +################################################################################################################################################################################################ +################################################################################################################################################################################################ + + ## Customize Opencore config.plist + + if [ ${OPT} -eq 205 ] + then + + clear + + LOGFILE=${LOGDIR}/custom-oc-config.plist.log + + echo " " + echo "Customize Opencore config.plist" + echo " " + + LOOPDEV=`losetup -f --show -P ${ISODIR}/opencore-osx-proxmox-vm.iso 2>> ${LOGFILE}` + + mkdir -p /mnt/opencore > ${LOGFILE} 2>> ${LOGFILE} + mount ${LOOPDEV}p1 /mnt/opencore >> ${LOGFILE} 2>> ${LOGFILE} + + if [ ! -e /mnt/opencore/EFI/OC/config.plist.backup ] + then + cp -v /mnt/opencore/EFI/OC/config.plist /mnt/opencore/EFI/OC/config.plist.backup >> ${LOGFILE} 2>> ${LOGFILE} + fi + + PREV_LANG=`grep -E '..-..:0' /mnt/opencore/EFI/OC/config.plist | sed -e 's/.*\(..-..\).*/\1/'` + BOOT_ARGS=`grep 'boot-args' /mnt/opencore/EFI/OC/config.plist -A1 | tail -n1 | sed -e 's/.*>\(.*\)<.*/\1/'` + TIMEOUT=`grep -A1 '>Timeout<' /mnt/opencore/EFI/OC/config.plist | tail -n1 | sed -e 's/.*>\(.*\)<.*/\1/'` + + echo " " + echo -n "Enter language-country code [or ENTER to keep the current one (${PREV_LANG})]: " + read NEW_PREV_LANG + if [ -z ${NEW_PREV_LANG} ]; then NEW_PREV_LANG=${PREV_LANG}; fi; + sed -i -e "s/..-..:0/${NEW_PREV_LANG}:0/" /mnt/opencore/EFI/OC/config.plist >> ${LOGFILE} 2>> ${LOGFILE} + + echo " " + echo -n "Enter boot-args [or ENTER to keep the current one (${BOOT_ARGS})]: " + read NEW_BOOT_ARGS + if [ -z "${NEW_BOOT_ARGS}" ]; then NEW_BOOT_ARGS=${BOOT_ARGS}; fi; + sed -i -e "s/${BOOT_ARGS}/${NEW_BOOT_ARGS}/" /mnt/opencore/EFI/OC/config.plist >> ${LOGFILE} 2>> ${LOGFILE} + + echo " " + echo -n "Remove csr-active-config (unlock SIP configuration) [Y/N] [or ENTER for Default: N]: " + read RM_CSR_LOCK + if [ -z ${RM_CSR_LOCK} ]; then RM_CSR_LOCK="N"; fi; + + if [ "${RM_CSR_LOCK}" == "Y" ] || [ "${RM_CSR_LOCK}" == "y" ] + then + echo "--- a/mnt/opencore/EFI/OC/config.plist 2023-01-25 22:43:16.000000000 +0100 ++++ b/mnt/opencore/EFI/OC/config.plist 2023-01-25 22:45:24.000000000 +0100 +@@ -450,2 +450,0 @@ +- csr-active-config +- AAAAAA== +" > ${TMPDIR}/rm-csr-lock.patch + cd / + patch -p1 < /root/OSX-PROXMOX/tmp/rm-csr-lock.patch >> ${LOGFILE} 2>> ${LOGFILE} + cd ${SCRIPT_DIR} + rm -f ${TMPDIR}/rm-csr-lock.patch + echo "Now you can use \`csrutil disable\` and \`csrutil authenticated-root disable\` in Recovery OS to disable SIP!" + fi + + echo " " + echo -n "Enter timeout [or ENTER to keep the current one (${TIMEOUT} seconds)]: " + read NEW_TIMEOUT + if [ -z ${NEW_TIMEOUT} ]; then NEW_TIMEOUT=${TIMEOUT}; fi; + + if [ ${NEW_TIMEOUT} -ne ${TIMEOUT} ] + then + echo "--- a/mnt/opencore/EFI/OC/config.plist 2023-01-25 22:43:16.000000000 +0100 ++++ b/mnt/opencore/EFI/OC/config.plist 2023-01-25 22:45:24.000000000 +0100 +@@ -363,7 +363,7 @@ + TakeoffDelay + 0 + Timeout +- ${TIMEOUT} ++ ${NEW_TIMEOUT} + + Debug + +" > ${TMPDIR}/timeout.patch + cd / + patch -p1 < /root/OSX-PROXMOX/tmp/timeout.patch >> ${LOGFILE} 2>> ${LOGFILE} + cd ${SCRIPT_DIR} + rm -f ${TMPDIR}/timeout.patch + fi + + diff -u --color /mnt/opencore/EFI/OC/config.plist.backup /mnt/opencore/EFI/OC/config.plist + + umount /mnt/opencore >> ${LOGFILE} 2>> ${LOGFILE} + rmdir /mnt/opencore + losetup -d ${LOOPDEV} >> ${LOGFILE} 2>> ${LOGFILE} + fi + + exit + ################################################################################################################################################################################################ ################################################################################################################################################################################################ ################################################################################################################################################################################################