Recent site activity

Linux‎ > ‎

ASUS Eee PC 1005PEB Hackintosh Install From Linux

Notes taken while playing around with various Hackintosh distributions and Eee PC 1005PEB.  Since these do not have DVD drives, it will need to be installed using USB flash drive or USB hard drive.  Also, some files from install DVD needs to be tweaked and using a USB drive as a staging area helps out.

Summary:

What Works:

  • Video (no acceleration)
  • USB Ports
  • Hard Drive (Triple boot Windows 7, Fedora, and OSX 10.6)
  • Touchpad with multi-touch gestures
  • Audio Speakers (haven't tested headphones)
  • Wireless
  • Sleep (minor issues)
  • Speepstep (I think)

What doesn't work:

  • Ethernet (probably workes with updated driver.  Needs testing)
  • Fn keys except for Sleep/Fn-F1 (Fn-F5/F6 work for brightness with unmodified DSDT)

Untested:

  • External Video Port

Installing Snow Leopard:

There are many guides on installing Snow Leopard on Eee PC's.  Most any for 1005HA or 1005PE will work.  Most guides require you to already have a working OSX box to get your USB drives set up correct.  This page has some information on how to use Linux to prepare the USB drives.

What you need:

  • Obtain ISO or DMG image of an official Snow Leopard OS X install DVD.
  • Obtain a USB flash drive that has at least 8G space or a USB hard drive would probably work as well.  Original install DVD's are larger then 4G so a 4G USB drive will not fit all contents.
  • Latest version of NetbookBootMaker.

Prepare USB drive.

Make sure you have tools needed installed.  hfsplus-tools contains tools to format a partition has hfs+.

yum install gparted hfsplus-tools p7zip p7zip-plugins

Now, need to create a 100M partition for NetbookInstaller's boot loader and another partition to contain DVD image.

fdisk /dev/sdx
o
n
p
1
[enter for default]
100M
n
p
2
[enter for default]
[enter for default]
t
1
af
t
2
af

Be sure and re-plug in the USB drive after this step to make sure the new MBR is loaded.  Then unmount any auto-mounted partitions.

Download latest version of NetbootBookMaker and unpack it.  You'll use its contents to install a boot loader in MBR and related files in first partition.

unzip NetbookBootMaker-xxx.zip
cd NetbookBootMaker-xxx/Contents/Resources/BootMakerSupport
dd bs=444 count=1 if=boot0 of=/dev/sdx
7z x NetbookBootLoader.img
dd if=1.img of=/dev/sdx1
dd if=boot1h of=/dev/sdx1

Option 1: Install DVD image from ISO

Find the HFS+ Volume Header in ISO installer image.

hexdump -C osx86dvd.iso | grep "48 2b 00 04"
00038400  48 2b 00 04 80 00 00 00  31 30 2e 30 00 00 00 00  |H+......10.0....|

HFS+ partitions start 0x400 (1024) bytes before the Volume Header.  So subtract 0x400 from offset shown by hexdump (0x38400 - 0x400 = 0x3800 in this case). 

Overwrite 2nd partition on USB drive.

Use dd to overwrite the empty HFS+ file sytem we created previously with HFS+ parition.  Use bc to compute how many blocks to skip.  block size of 8192=0x2000.  Replace /dev/sdx1 with your unique drive number.

echo "ibase=16; 38000 / 2000" | bc
28

dd ibs=8192 obs=8192 skip=28 if=osx86dvd.iso of=/dev/sdx2

Re-plug in the USB drive and verify you can see the second partition contains this copied of HFS+ partition.  If you have qemu installed, you can test you successfully created a bootable image using:

qemu -hda /dev/sdx -m 1024

Option 2: Install DVD image from DMG

7z x osx86dvd.dmg
dd bs=1M if=1.img of=/dev/sdb2

You'll have to experiment and find which file inside the DMG is the HFS+ file system.  It should be the file with largest size.  Another common names is 5.hfs.

Installing

At this point, you'll have a bootable USB drive that can be used to install SL to a GUID partitioned disk.  If you have a stand alone USB disk that you want to install then you can skip next step.  If you want to install to MBR partition (such as shared with Windows 7 and Linux) then you'll need to modify the installation disk with some custom patches that bypass some unneeded checks for MBR drives.

You'll need to google to find these modified packages but here is one example with instructions.  For Snow Leopard, you have to replace two files: OSInstall.mkg and OSInstall.  Be sure and find instructions that tell how to replace both.

Once replaced, reboot your machine with USB drive plugged in.  You'll need to hold down the F2 key for long period during bootup.  When you see a black screen with text, release F2 and press Esc key for long time.  Once it goes into BIOS setup, release Esc key and exit BIOS setup.  You'll then be prompted which disk to boot from.  Choose your USB disk.

From this point, you can follow most any other Hackintosh install guide.  Important items:

  • You must do a custom install and deselect all printer drivers and all language packs.  I found it easier to deselect all custom items and then install them afterwards.  There is an application on Installation partition of USB drive that you can run to do this later.  You can also install other applications such as Xcode.
  • Installing to above MBR partition kepts locking up on me.  Perhaps if I just let it run long enough it would have finished.  I gave up though and installed onto a 2nd USB Drive that I partitioned as GUID with similar size as I wanted on main hard drive.  After installation, I used "dd" to copy the filesystem from USB drive to internal hard drive and then used Disk Util to resize to correct size.
  • Installation seems to hang towards end.  Its a common report in guides but perhaps I just didn't let it run long enough.  Just reboot and the install generally works without completing.
  • You'll initially only be able to boot up this install by using the boot longer on USB drive created above.  To be able to boot directly to OSX, you'll need to run Netbook Installer somehow (its in Utiltities menu if you rerun installation).  Ignore message about unsupported computer.  Select only Install GeneralExtensions.  You'll need to install the "boot" program from above into root of OSX partition and then set up Grub to chainload to MBR of OSX partition.

Audio Support

NetbookInstaller will install custom audio kext's for netbooks it supports.  Since it doesn't support 1005PE's, you'll have to install by hand.  I had good luck with speakers using some modified versions of VoodooHDA but I have so far not be able to get the mic working and have not tested headphone or mic inputs.

UPDATE 2011/01/16 - I updated VoodooHDA to version 2.7.2 using the install package.  Afterwards, I had to manually rerun NetbookInstaller to get wireless working again.  Upon reboot, both speakers and microphone work (skype works).  There is one annoying issue with mic enabled during initial driver load and a loud buzz occurs until system fully boots up and something turns mic volume back down.  To fix buzz, try editing /System/Library/Extensions/VoodooHDA.kext/Contents/Info.plist and change iGain to 0 and iMix to 70.

Wireless Network Support

Getting Ethernet or wireless working with built in hardware is currently a hopeless cause.  I chose to by a USB wireless adapter that was compatible with OSX.  If you search around you can find them as cheap as $20 or even less.  Same goes for mini PCIe cards if you want to go the internal route.  For USB support, I had good luck with Meritline and an Airlink AWLL6075.  Its extremely small and seems to work fine with OSX 10.6.

UPDATE 2011/01/16: Wireless is now working!  Well, for the most part.  The driver fails to load about ever other reboot.  I've read this may be related to Asus's Boot Booster and disabling that feature in BIOS does allow it to work every boot.  I did following steps to get driver working:
  1. Update to NetbookInstaller-20101127091350 so that next step will work.
  2. Use "Software Update..." to upgrade to 10.6.6.  It contains updated Atheros drivers that support the AR9285 chipset.
  3. Modify the file /System/Library/Extensions/IO80211Family.kext/Contents/PlugIns/AirPortAtheros21.kext/Contents/Info.plist and add "<string>pci1a3b,1089</string>" where other PCI ID's are listed.
  4. Run /Extra/UpdateExtra and then reboot.

Ethernet

Ethernet does not work out of the box.  In May of 2010, a new opensource driver for this chipset has been released and some people with other netbooks have had at least some luck with it.  There is both a driver project page (L1C drivers for Snow Leopard) and a thread discussing its development.  Look for the 101010 release version that fixes a kernel panic.  This driver detects ethernet port correctly but I've not tested it further yet

Sleeping

Its not working for me.  Sleeping appears to be attempted by closing lid or selecting Sleep from menu but backlight doesn't turn off and system basically unsleeps immediately.  I believe updates to 10.6.3 also causes issues but updating to latest NetbookInstaller should eventually fix that.

UPDATE 2011/01/18 - After updating to NetbookInstaller as of todays date and upgrading to 10.6.6, things work a little differently.  Selecting sleep option, the display backlight turns off and lots of disk activity occurs but no actual sleep (I believe its attempting to sleep but immediately resumes).  The laptop is then useless.  Installing the SleepEnabler.kext allows it to sleep by closing the lid (power button blinks blue).  Upon resuming, the backlight is not turned back on as well.  Some forums imply that reverting to AppleIntelIngegratedFramebuffer from 10.6.2 my fix the backlight issue.  Also, DSDT patches may fix it as well.

UPDATE 2011/01/21 - I was able to get backlight to turn on upon resuming.  I had to edit the DSDT using DSDTSE.  You can click on the "Extract DSDT" button and it will decompile your DSDT and load in text editor.  Find the PWRB device under the _SB block and after it add this:

Device (PNLF)
{
    Name (_HID, EisaId ("APP0002"))
    Name (_CID, "backlight")
    Name (_UID, 0x0A)
    Name (_STA, 0x0B)
}

Its important to realize when you extra the DSDT under OSX, your actually extracting an already modify version from NetbookInstaller originally located at /Extra/DSDT.aml.  This is important because it already has 2 DSDT fixes applied to it and you need those.  Its also important to remember because if you rerun NetbookInstaller in the future it may overwrite your modified DSDT.

Use DSDTSE to compile the modified DSDT.  Find were it saves the dsdt.aml file and manually copy it to /Extra/DSDT.aml (notice case difference).    After a reboot, the backlight will turn back on upon any resume from sleep (including the non-working option of selecting sleep from menu).

The main issue with this DSDT fix I've found is that the Fn-F5/F6 no longer controls brightness which means the BIOS is no longer controlling it.  The only way to control the backlight is using a now-enabled slider under System Preferences->Display setting although I found I can decrease brightness by using Fn-Delete key.  Need to figure out how to make Fn-F5/F6 do what ever Fn-Delete is doing; either by DSDT patch or kext.  See Fn-key discussion below.

Power Savings

Its not working for me.  Under linux, 1005PE are using acpi_cpufreq to throttle the CPU when not busy to saving power.  I'd guess that means VoodooPowerACPI kext would work under OSX.  It can be installed but didn't change CPU frequency for me.  VoodooPower didn't do anything for me either and VoodooPowerMini would cause immediate kernel panics upon loading.

Since thats not working, I didn't even attempt to look into SHE support to extend battery life even further.

UPDATE 2011/01/18 - AppleIntelCPUPowerManagementClient is now loading and NetbookInstaller is patching the DSDT related to working with it.  Using CPU-Z, I do not see CPU frequencies adjusting.  There is supposed to be some options to pass to Chamelon in lastest version for P-state and C-state detection that is probably required for things to work. 

UPDATE 2011/01/27 - When Boot Booster was disabled, AppleACPIPS2Nub would fail to load and keyboard/mouse would not work.  I found that installing NullCPUPowerManagement.kext allowed AppleACPIPS2Nub work again; of course with no power management.  Since upgrading NetbookInstaller, its possible to have Chamelon patch DSDT/SSDT to have correct C and P states.  Enabling this feature seems to allow removing NullCPUPowerManagement.kext and keep AppleACPIPS2Nub working at same time but doesn't seem to enable speedstep.

Add this to /Extra/com.apple.Boot.plist:

        <key>GeneratePStates</key>
        <string>Yes</string>
        <key>GenerateCStates</key>
        <string>Yes</string>
        <key>DropSSDT</key>
        <string>Yes</string>

I believe that AppleLPC.kext has to load before speedstep will work.  One way to do this is to edit its Info.plist and add a PCI entry for pci8086,27bc (the PCI device ID for 1005PE's LPC) and reboot.  This loads it but I get error messages about invalid C-states and I do not notice any differences in CPU temperature.  Also, the USB bus and keyboard/touchpad seem to randomly stop working again.

Fn-Keys

Most Fn-keys do nothing under OSX since it most require userspace apps to process them (this is opposed to things like backlight dimming that ACPI can fully control if desired).  I've seen mention on forums that someone created a kext to monitor Fn-Keys on ASUS computers (AsusHotKeys.kext?).  I've not tested it and have lost the reference.  It shouldn't be hard if you can hook into ACPI.  Under Linux, the same driver is VERY small.
  • Fn-F1 seems to almost work.  At least it seems to attempt to sleep but then wake immediately up.  Probably requires DSDT fix to work.
  • Fn-F2 seems to work and disables wireless LAN.
  • Fn-F5/F6 work with unmodified DSDT but stop working if you use backlight fix (see above).
It seems recent Apple keyboards have fixed keys to decrease and increase backlight and on older Apple keyboards its F14 and F15.  These same keys appear to map in Windows as Scroll Lock and Pause key.  Sure enough, hitting Fn-Delete for Scroll Lock does decrease backlight and gives that nice graphic on screen.  Pause key isn't working and is a bug in the ApplePS2Controller.kext shipped with NetbookInstaller.  If you can recompile, the fix is adding this patch to ApplePS2Keyboard.cpp:

--- ApplePS2Keyboard.cpp        (revision 159)
+++ ApplePS2Keyboard.cpp        (working copy)
@@ -385,6 +385,7 @@
                        case 0x51: keyCode = 0x6B; break;            // page down
                        case 0x47: keyCode = 0x6C; break;            // home
                        case 0x4F: keyCode = 0x6D; break;            // end
+                       case 0x45: keyCode = 0x6F; break;                        // pause
                               
                                // Handeling printscreen, instead of passing the printscreen keycode
                                // we are passing command + shift + 4 (and ctrl if we dont want to save the SS)

One idea is to combine parts of ApplePS2Controller with above AsusHotKeys and have hotkeys send the ADB keys that are for backlight and volume controls.  That way we should get nice graphics on screen for feedback.

Misc Notes

You can use 7z to view inside this HFS+ file system and even related files like .dmg and .img files:

7z l 2.hfs

Or you can mount the extracted filesystem from DMG's under Linux using:


mount -t hfsplus 2.hfs /mnt -o loop

Sharing Data with Linux

Since the main point of this page is describing how to install OSX using Linux tools, you may also be duel or triple booting and wish to share data between OS's.  Fedora can read HFS+ partitions just fine but by default will only mount them read/write if journalling is disabled.  To do that, run the following command from OSX terminal.

diskutil disableJournal /Volumes/TheVolumeName

On Linux side, create a mount point:

mkdir "/media/Mac OSX"

and add following to your /etc/fstab.  Replace /dev/sda2 of parition name you installed OSX to.

/dev/sda2       /media/Mac\040OSX       hfsplus  defaults       1 2

Upon next reboot, it will be automounted and an icon displayed on your Gnome desktop.

Comments