Hi
I start to manage High Sierra (natively), Mojave and Catalina (patched using Dosdudes beautiful work) on my iMac 2011.
Since sleeping is broken and airdrop/continuity needs additional kext I wonder if there is a smart way to add them (and Apples updates??, this covers only High Sierra) before booting in both patched OS just from the booted High Sierra or better booted from external USB device and OS.
Goal: To have the iMac factory ready without touching the OS by creating users etc..
All OS using APFS containers/Volumes on one SSD.
Thanks in advance
I am “Unix command line” experienced user and will write scripts and share them here, is possible.
My current Solution (nobody has answered, so far)
I have an external USB connected SSD (APFS) with three boot containers for Catalina, Mojave, High Sierra with an admin user ready. The admin users folder contain usually all necessary patches, the most recent dosdude patcher and the MacOS Install Image downloaded via the patcher.
1. Just boot the machine from the external device using your target OS, log in
2. If our internal HD/SSD has not been prepared start "Disk Utility App" and prepare, in most case APFS and GPD these days - this will be you <target drive>
3. Start the patcher, choose the MacOS Install Image, let it patch, choose this machine and your in step 2 prepared <target drive> to install
4. Let the patcher install, you will see the reboots
5. After finishing and before you configure the OS on your <target drive> just switch the computer off and reboot from the external USB drive again.
6. Copy all the kext, private frameworks, etc. in the folder on your <target drive> form step 2 - since this is no boot drive now, it is not mounted read only and there is no need to disable SIP, etc.
7. All the terminal commands must be issued in a way, that the files on your <target drive> are manipulated, NOT on the current boot drive (which is the external USB drive). This is easily done by doing a change directory to the root of the <target drive>. Just search the /Volumes folder where all drives are mounted after boot. I named my <target drive> "MacintoshSSD" and found the drive here /Volumes/MacintoshSSD. So do this
Code:
sudo chown -R 0:0 /Volumes/MacintoshSSD/S*/L*/E*/
sudo chmod -R 755 /Volumes/MacintoshSSD/S*/L*/E*/
sudo kextcache -i /Volumes/MacintoshSSD
sudo cp /Volumes/MacintoshSSD/Library/Apple/System/Library/PrelinkedKernels/prelinkedkernel /Volumes/MacintoshSSD/System/Library/PrelinkedKernels
The command kextcache is used from the started boot drive. The clean way may be to use it from the "target drive"
Code:
sudo /Volumes/MacintoshSSD/usr/sbin/kextcache -i /Volumes/MacintoshSSD
I can even do an upgrade in exactly this way for all machines in my family without ever logging in. The normal admin user just finds out that he has to login into iCloud, again.
Any ideas about this. Is there a way to accelerate step 3? I assume one should simply build a patched disk image an reuse this. This does not work with encrypted internal drives unless you know the password, I assume.
P.S.: If just found out how to delete a user and to setup the primary apple install screen. So one could use a "install" user to do all modifications from inside and later delete this user entirely:
Code:
mount -uw /
cd /var/db/dslocal/nodes/Default/users/
rm install.plist
rm -rf /Users/install
rm /var/db/.AppleSetupDone
shutdown -h now