Hackintosh Single User Mode Install Kexts

Posted on  by 



Finally have it working then I broke it again. I was having staticky audio and read that I should drag a particular kext into the kext utility and would be fixed. Rebooted and crashed on loading screen getting a bunch of text and numbers. I can boot into safe mode. I want to delete all of my audio kexts.

  • And which one is suitable for mac os x 10.10? Mac users who have installed OS X Yosemite (10.10) have complained about compatibility issues with Adobe’s popular photo editing program Photoshop CS5. That leads to discussions among creatives including whether they should install Mac OS X considering much of their workload depends on.
  • Installing kexts is not as simple as removing them. It can be done manually, but using a kext installation utility like KextBeast is much easier. KextBeast was created for use on Hackintoshes, but it will work just as well on a vanilla Mac.
  • Before the High Sierra update to 10.13.6 I was able to boot in single-user-recovery mode by holding Cmd-R-S at startup, but after the latest software update booting while holding Cmd-R-S just enters the regular Single-User Mode on the root volume (like if I pressed only Cmd-S). Is there a new method or alternative key combination to boot the RecoveryOS in Single-User Mode?

This contains a list of the kext files I use for my hackintosh. You may eventually need to update your kext files when new versions of macOS comes out for continued support.

Kext Locations:

Install
  • If using the Clover method I like to stuff my kexts in/EFI/CLOVER/kexts/Other
  • If not you can place non-required kexts in /System/Library/Extensions
Required

These two kexts you should always have in your EFI partition.

Hackintosh

FakeSMC.kext – Mantatory kext that emulates a Mac and is required to boot a hackintosh. When you download FakeSMC the folder will also contain Sensor kexts that you can use to monitor your hackintosh read about that here : HWMonitor Sensor Guide

Lilu.kext – Arbitrary kext that is required other kexts to work like AppleALC.kext & NvidiaGraphicsFixup.kext. Some Gigabyte motherboards have trouble with some versions of Lilu.kext breaking audio. I recommend those users use v1.0.0, instead of the latest version.

USB

USBInjectAll.kext – Injects all USB ports

XHCI-200-series-injector.kext – Enables USB 3 device detection and USB 3 speeds on Kaby Lake motherboards. This kext is also recommended to have during the macOS install process so you can use those USB 3 ports and flash drives.

Ethernet

IntelMausiEthernet.kext – Enables ethernet for motherboards using an Intel Ethernet Chipset.

RealtekRTL8111.kext – Enables ethernet for motherboards using a Realtek Ethernet Chipset

AtherosE2200Ethernet.kext – Enables ethernet for motherboards using Killer Lan Ethernet Chipset

Graphics

NvidiaGraphicsFixup.kext – Allows the latest Mac SMBIOS definitions to be used like iMac 17,x and iMac 18,x. You would want to use these SMBIOS defintions if you are using a Skylake or Kabylake CPU respectively. Updating to the latest version may fix black screen issues.

IntelGraphicsFixup.kext – Fixes display and graphical issues when using integrated graphics. I also recommend setting DVMT Pre-Allocated to 128M or higher in BIOS if using the Intel iGPU to enable high resolution displays.

Single User Mode Centos

Mode

WhateverGreen.kext – Enables AMD graphic cards in macOS 10.12.6 or later. Will require Lilu.kext. Read about it here : How to hackintosh AMD graphics cards in Sierra 10.12.6+

Shiki.kext – Protects against graphical issues with video playback

Audio

AppleALC.kext – Enables audio on a hackintosh. Read about how to enable audio here: Hackintosh Audio Guide. Some gigabyte users have problems with AppleALC.kext not enabling audio. I recommend them using v1.1.0, instead of the latest version.

HDMIAudio.kext – May help enable HDMI audio on some graphic cards. Read about it here : Hackintosh HDMI Audio + DisplayPort GFX Card Sound Guide

CodecCommander.kext – Fixes a problem with dim sounding or lower volume audio after sleeping/botting the hackintosh by updating EAPD (External Amplifier) state on HDA.

Spoofs

FAKEPCIID.kext – Enables support for Intel processors on earlier versions of macOS that don’t support that processor by pretending to be a supported processor. Kaby Lake CPU’s are nativily supported as of macOS 10.12.6

FakePCIID_Intel_HD_Graphics.kext – Enables integrated graphics on iGPU’s that are not supported in macOS by mimicking another supported iGPU. Kaby Lake CPU’s with HD 630 are supported nativily in 10.12.6. If you have upgraded to 10.12.6 you can remove this kext.

NullCPUPowerManagement.kext – Used to enabled hackintosh support for Pentium Processors like the G4560

Wednesday lunch time, I opened up my laptop and in the middle of writing an email my machine froze and after a few seconds rebooted. Uh oh, the system sat at the grey screen for a few seconds and then the dreaded folder with a question mark began flashing which means there was no bootable disk found.

Turned the machine off, turned it back on again, ah, a message that the machine had crashed and restarting once more it booted as usual, making it back into macOS before it did the same freeze and reset again. I ended up spending the rest of the day trying various things to get my data off the disk before the SSD stopped responding all together Wednesday night.

I thought to rule out file system issues first.
Booting single user mode and running fsck_apfs(8) didn’t get very far when I first tried. SIGINFO reported that bash was waiting meaning that it never got to executing fsck_apfs.
Restarting and trying to boot in recovery mode to run the file system check using Disk Utility didn’t work out too well. Upon reaching the GUI, recovery mode began to spin, if things worked ok I would have been greeted with a file vault encrypted disk to unlock but it didn’t and the spinning spiral would go around endlessly, so it was back to single user mode.

In single user mode all data is accessible but the file systems are mounted read only with the exception of /private/var/vm which is writable. At the end of booting into single user mode, the system reports:
To mount the root device as read-write:
$ /sbin/mount -X /

But the mount command on Catalina 10.15.7 has no such option, the old advised method of using -uw instead of -X still worked however.

While I was experimenting I noticed that I had spent a considerable amount of time in single user mode and the system never hard reset like when I booted normally.
I intended to copy the data to another machine, however ifconfig reported no interfaces.
I mistakenly thought that I could load the relevant kernel extensions and could slowly bring things up bit by bit that way. Except can’t do any of that because SIP prevents you.
localhost:/ root# kextload /System/Library/Extensions/some.kext
/System/Library/Extensions/some.kext has invalid signature: Trust code is disabled.
Untrusted kexts are not allowed
Kext rejected due to invalid signature: <OSKext 0xSOMEHEX [0xSOMEHEX]> { URL = 'file:///System/Library/Extensions/some.kext', ID = 'com.apple.foo.bar' }
/System/Library/Extensions/some.kext failed security checks; failing.

I tried several times again to get back into recovery mode environment in order to disable SIP using csrutil disable from the terminal there, out of sheer luck the disk behaved long enough one time that I managed to get the disk unlocked and make it in. I disabled SIP and while I was there I checked the disk with Disk Utility. Things started off ok and while it was spending some time checking the Data volume it hard reset. This definitely wasn’t a file system issue and an indicator that the hardware is misbehaving, which meant it probably wouldn’t be long before I lost access to the data on there.

Hackintosh kext download

Back in single user mode I confirmed SIP was disabled
localhost:/ root# csrutil status
System Integrity Protection status: disabled.

After working my way through loading what I thought were relevant extensions I gave up and started looking up how to bring up the system, I was trying to get either an Apple USB Ethernet adapter, Thunderbolt Gigabit adapter or the builtin Airport card to work.

To get the baseline system going you need to start kextd(8), notifyd(8), configd(8). Once diskarbitrationd(8) is loaded, it pulls the relevant dependencies to get networking running.

launchctl load /System/Library/LaunchDaemons/com.apple.kextd.plist
launchctl load /System/Library/LaunchDaemons/com.apple.notifyd.plist
launchctl load /System/Library/LaunchDaemons/com.apple.configd.plist
launchctl load /System/Library/LaunchDaemons/com.apple.diskarbitrationd.plist

User

To configure your wireless card use airport(8) which can be found at /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport

I opted for the Thunderbolt Gigabit adapter as that was my fastest option, the interface would autoconf with DHCP/RS, and could be configured with just ifconfig(8) but I couldn’t get an NFS share mounted which I now suspect was because I did not specify the use of a reserved port when mounting the share on the Mac.
localhost:/ root# mount_nfs -o resvport my-nfs-server:/share /net
As I was racing against time I ended up cobbling together a USB disk which was HFS+ formatted and used rsync to clone my home directory. Since the system was in single user mode, new disks would not be auto mounted (that’s what diskarbitrationd does normally) and issuing diskutil list would not work. Without diskarbitrationd loaded it complains
Unable to run because unable to use the DiskManagement framework.
Common reasons include, but are not limited to, the DiskArbitration framework being unavailable due to being booted in single-user mode.

and with diskarbitrationd loaded it complains
Could not start up a DiskManagement session
You can instead use fstyp(8) by pointing it at device nodes to find out the file system type on the other side of the device node.
Before connecting a disk, run ls /dev/disk* to see what’s there already, attach the disk, repeat ls /dev/disk* to see which new nodes have been created. Point fstyp at those device nodes to find the correct one with the filesystem, in this case it was HFS.
localhost:/ root# fstyp /dev/disk2s2
hfs

localhost:/ root# mount_hfs /dev/disk2s2 /net
I then began to rsync my data to the external disk with rsync -av /Users/sme /net/ and after a while the disk I/O stopped and the kernel reported
IOAHCIBlockStorageDrive: could not recover SATA HDD after 5 attempts. terminating
completionRead: 1598: Failed read request b88146000, 4096: e00002c0
disk1s1: no such device.

Well, there’s the hardware misbehaving.

Hackintosh Kext Helper

apfs_vnop_read: 7261: ### obj-id longnumber/anotherlongnumber retval 6 filesize 16388 offset 0 resid 16388 ###
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at /AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync54.120.1/rsync/rsync/rsync.c(244) [sender=2.6.9]
rsync: writefd_unbuffered failed to write 185 bytes [generator]: Broken pipe (32)
disk1s5: media not present.
nx_buf_bread:592: buf_biowait() failed, error = 6, b_error = 6, buf_flags_after_io = 0x101, crypto = [encrypted composite]
_vnode_dev_read:811: *** got err 6 reading blknum 54480 (num read errs: 1)
localhost:/ root# apfs_vfsop_sync:3357: /dev/disk1: failed to finish all transactions to sync() - Device not configured(6
)


At this point there was nothing else possible to do but power cycle.
Over several iterations I managed to get most of my home directory copied across to the external disk with rsync before the SSD stopped responding all together.





Coments are closed