Posts mit dem Label Leopard werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Leopard werden angezeigt. Alle Posts anzeigen

Samstag, 10. Oktober 2009

Unknown CPU / About this Mac [Update]

A reader of my Blog pointed my to the Digital DJ Blog. He has found a way to fix the "Unknown CPU" problem. Editing the file "/System/Library/CoreServices/Resources/English.lproj/AppleSystemInfo.string" is only cosmetic. For the OS the CPU is still "Unkown". His solution is a kernel extension, which injects a "cpu-type" property into the IORegistry. Read the blog for more info about this topic.

Currently known CPU types of OS X:
  1. Intel Xeon Quad: 1281 - 0x501 - 0x0105 (little endian) - AQU= (Base64)
  2. Intel Core 2 Duo: 769 - 0x301 - 0x0103 (little endian) - AQM= (Base64)
  3. Intel Core Solo: 257 - 0x101 - 0x0101 (little endian) - AQE= (Base64)
For the time being I'll integrate the CPUInjector.kext from Digital DJ. I've already updated the kernel extensions and support files package in the post "2.) [10.6] What do you need"

Montag, 6. Juli 2009

16.) [10.5] Reboot and DONE!

Now it's time for the last reboot. After the reboot all should work fine. Full resolution graphic with CI/QE, fullspeed ethernet network, Time Machine and Bonjour. As you can see in the first foto, my Chameleon-EFI Mac could see my MacBook Pro via Bonjour. Gigabit ethernet to/from my Linux-NAS work as expected with speeds around 60-80 MByte/sec.











15.) [10.5] Network Services/Ports

To have a clean network installation you should clear all network preferences. Open Preferences -> Network. Delete all Network Services/Ports (with the Minus "-" sign). And then delete the following preferences files:
/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
/Library/Preferences/SystemConfiguration/com.apple.network.identification.plist
/Library/Preferences/SystemConfiguration/preferences.plist

and if you have

/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
To explain why this could be necessary for you I will tell you my case. I installed the Mac OS X which I'm using with my Chameleon-EFI Mac on my MacBook Pro (external USB-drive). The MacBook Pro has 1 Ethernet, 1 WLAN, 1 Bluetooth and 1 Firewire Network Service/Port. My Chameleon-EFI Mac has 2 Ethernet and 1 Firewire Network Service/Port. After the first boot it showed in Preferences->Network: 1 Ethernet, 1 Airport, 1 Bluetooth (all from my MacBook Pro) and 2 new Ethernet ports en2 and en3. I wanted to have the 2 Chameleon-EFI Mac ethernet ports as en0 and en1. To do so I must delete all the old stuff from the MacBook Pro.

14.) [10.5] Energy Saver Settings

Enable both Checkboxes "Allow power button to sleep the computer" and "Restart automatically after a power failure" in Preferences -> Energy Saver as show in the foto. This will make Shutdown/Sleep/Wakeup working correctly.

Samstag, 4. Juli 2009

13.) [10.5] com.apple.Boot.plist

To have a full resolution graphic card with working CI/QE (Core Image/Quartz Extreme) and a working Time Machine you must provide the Mac OS X onboard drivers with some info about your hardware. This is done by Chameleon and the com.apple.Boot.plist file in the Extra folder of your USB-Stick. Chameleon will inject the device properties which you already have created with EFIStudio into the Mac OS X kernel. The advantage of this approach is, that you don't have to modify your Mac OS X Installation. It remains plain vanilla and this is important for Software updates through Apple's Software Update Application.

You can find the original Mac OS X com.apple.Boot.plist under:
/Library/Preferences/SystemConfiguration/com.apple.Boot.plist

It's almost empty. Use it as a template for your new Chameleon com.apple.Boot.plist. It looks like this:



Copy it to your Desktop. Be careful to NOT move it! Copy it (hold the ALT key while drag-n-drop). Open the copy from the Desktop with your favorite Editor. You must at least add the device properties from EFIStudio. Mine has 2 additional parameters: Default Partition and Timeout. These two are for Chameleon to automatically boot from the right Disk/Partition. Chameleon counts disk starting from 0 and counts partitions starting from 1. Adjust hd(x,y) and the timeout value. Propertylist are XML and have Key-Value pairs. For instance to adjust the Chameleon Bootscreen timeout value find the Key Timeout and change (in the next line) the value (mine is 10). OK the most important things are the device properties. Add the key device-properties and in the next line between "string" and "/string" your device properties in HEX in only ONE line. Mine appears wrapped, but this is due to my editor. If you are done the com.apple.Boot.plist should look like this (but with different values):



Save it in plain text mode (apply Shift-Cmd-T in Textedit) and copy it as com.apple.Boot.plist into the Extra folder of your Chameleon-USB-Stick.

12.) [10.5] First Boot into Mac OS X

Now it's time for the first boot into Mac OS X. Put in your Chameleon USB-Stick an power on the PC. The Chameleon bootloader should welcome you with a similar Welcome screen:



Select the Disk with your Mac OS X Installtion (cursor keys) and hit ENTER. If you hit Cursor down Chameleon will present you a Menu to boot, for instance, in verbose mode.

If all went fine you will see your Mac OS X Desktop or Login Window. It will come up in one Vesa Graphic Mode. Mine came up in 1024x768 (no CI/QE). Login, unzip EFIStudio.zip to (for instance) your Desktop and start it.

Select Display and your Graphic Card from the list. Mine is a nVidia 7300 GT passiv with 256MB RAM. And click "Add Device"



EFIStudio will open this window with all the details of your Graphic card:



You can close the window. Go ahead an select "Ethernet" and "Add Device". Note the device in the list is your graphic card:



EFIStudio will open this window with all the details of your Graphic card and with one property for your ethernet:



The onboard ethernet will get the property "built-in" and this will make Time Machine happy. I going to explain this later in detail. Now you must save the device properties created by EFIStudio. At least click on "Save Hex" and save it to the Desktop. You must put this device properties in Hexmode in a special file called com.apple.Boot.plist. If you have saved the Hexdata you can close the window. EFIStudio lists now 2 devices, the graphic card and the ethernet controller with their device path. You can close EFIStudio now.

11.) [10.5] BIOS Settings

Because BIOS Settings are somewhat critical I'm posting mine. Take care off correct DRAM Voltage. I had an quiet instable system in the beginning. My SDRAM runs at 1066 Mhz (533Mhz x2) and my OCZ modules needs 2,2 V at that speed.

Other important settings:
  1. Hard Disk Boot Priority - The USB-Stick must be the first
  2. First Boot Device - USB-HDD or Hardisk
  3. SATA AHCI Mode - AHCI
  4. Green LAN - disabled
  5. HPET Support - enabled (I'm using 64 Bit)









Sonntag, 28. Juni 2009

10.) [10.5] Some Terminal Work

Now it's time for some work in the terminal. Don't be affraid, it's quite easy. The goal of this steps is to cleanup the USB-Stick, set the owner and permissions for kernel extensions and to build the kernel extensions cache file.
  1. Login into an account with Administrator rights
  2. Insert the EFIBOOT USB-Stick
  3. Open the Terminal Application (Applications -> Utilities)
  4. Become root with by entering "sudo -s" and providing your administrator account password

If you insert a removeable drive like an USB-Stick it gets mounted by Mac OS X with some options we don't want, like nosuid or noowners. Therefore we have to remount the USB-Stick without this special flags. Ok let's start. The shell promt is blue. The commands you have to enter are green and the output of the commands is dark red. To get help for a command you can enter "man commandname". For instance, if you wanna know something about the "mount" command enter:
root@MacBook [~] > man mount
MOUNT(8) BSD System Manager's Manual MOUNT(8)

NAME
mount -- mount file systems

SYNOPSIS
mount [-adfruvw] [-t ufs | lfs | external_type]
mount [-dfruvw] special | node
mount [-dfruvw] [-o options] [-t ufs | lfs | external_type] special node

DESCRIPTION
The mount command calls the mount(2) system call to prepare and graft a
special device or the remote node (rhost:path) on to the file system tree
at the point node. If either special or node are not provided, the
appropriate information is taken from the fstab(5) file.

The system maintains a list of currently mounted file systems. If no
arguments are given to mount, this list is printed.

The options are as follows:

-a All the filesystems described in fstab(5) are mounted. Excep-
tions are those marked as ``noauto'' or are excluded by the -t
flag (see below).

-d Causes everything to be done except for the actual system call.
This option is useful in conjunction with the -v flag to deter-
mine what the mount command is trying to do.

-f Forces the revocation of write access when trying to downgrade a
filesystem mount status from read-write to read-only.
:

This gives you the manpage of the command mount. Within man you can go forward with "f" or "space" and backwards with "b". To leave "man" press "q". Even "man man" is possible :) OK... now let's really star us with the terminal work. First run "mount" without arguments to find out which device our USB-Stick is and there it is mounted.
root@MacBook [~] > mount
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local)
fdesc on /dev (fdesc, union)
map -hosts on /net (autofs, automounted)
map auto_home on /home (autofs, automounted)
/dev/disk0s3 on /Volumes/BOOTCAMP (ntfs, local, read-only, noowners)
/dev/disk1s2 on /Users/admin (hfs, local, nodev, nosuid, journaled)
/dev/disk2s1 on /Volumes/EFIBOOT (hfs, local, nodev, nosuid, journaled, noowners)

Some background info about Unix Devices. Under Unix devices can be accessed through special device files. You can find these device files normally in the directory /dev. Harddisks and also USB-Stick are named /dev/disk or /dev/rdisk. The first number is the disk counter. Then comes an "s" (stands for slice/partition) and another number, which is the partition number. You can see that the USB-Stick is the device /dev/disk2 and /dev/disk2s1 is the EFIBOOT partition on the USB-Stick. You can find this info also in the Disk Utility. Select the disk or partition and then "Info". Disk Identifier is the same as the device name under /dev. OK, now let's unmount and remount the USB-Stick. Find out which disk number has the USB-Stick in your case. In my case it is the number 2.
root@MacBook [~] > umount -f /Volumes/EFIBOOT
root@MacBook [~] > mkdir efitemp
root@MacBook [~] > mount_hfs /dev/disk2s1 efitemp/
root@MacBook [~] > mount
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local)
fdesc on /dev (fdesc, union)
map -hosts on /net (autofs, automounted)
map auto_home on /home (autofs, automounted)
/dev/disk0s3 on /Volumes/BOOTCAMP (ntfs, local, read-only, noowners)
/dev/disk1s2 on /Users/admin (hfs, local, nodev, nosuid, journaled)
/dev/disk2s1 on /Users/admin/efitemp (hfs, local, journaled)

The USB-Stick is mounted now at the directory efitemp (which was created by mkdir efitemp) and without these special option (nosuid, noowner). Let's start with some cleanups.
root@MacBook [~] > cd efitemp
root@MacBook [~/efitemp] > ls -la@
total 6336
drwxrwxr-x 17 root wheel 646 Jun 28 21:56 .
drwx------+ 35 admin staff 1258 Jun 28 23:31 ..
-rw-rw-r--@ 1 _unknown _unknown 6148 Jun 28 00:49 .DS_Store
com.apple.FinderInfo 32
drwx------ 3 root wheel 102 Jun 27 20:13 .Spotlight-V100
d-wx-wx-wt 3 root wheel 102 Jun 28 23:30 .Trashes
-rw-r--r-- 1 root wheel 0 Jun 27 20:13 .com.apple.timemachine.supported
drwx------ 4 root wheel 136 Jun 28 23:32 .fseventsd
-rw-r--r-- 1 root wheel 736736 Jun 27 13:36 EFIStudio.zip
drwxrwxr-x 7 root wheel 238 Jun 28 00:49 Extra
drwxr-xr-x 3 root wheel 102 Apr 1 16:17 IOAHCIBlockStorageInjector.kext
drwxrwxr-t 3 root wheel 102 Jun 27 20:22 Library
-rw-r--r-- 1 root wheel 2204417 Jun 27 13:38 OSX86Tools_1.0.150.zip
-rw-r--r-- 1 root wheel 279168 Jun 27 20:23 boot
drwxr-xr-x 4 root wheel 136 Apr 1 16:17 usr

The command "ls -la@" lists all the file and directories and also the extended attributes. We will now delete all these extended attributes (with xattr) and the .DS_Store files with the command "find".
root@MacBook [~/efitemp] > find . -type d -exec xattr -d "com.apple.FinderInfo" {} \; -print
root@MacBook [~/efitemp] > find . -type f -exec xattr -d "com.apple.FinderInfo" {} \; -print
root@MacBook [~/efitemp] > find . -type d -exec xattr -d "com.apple. quarantine" {} \; -print
root@MacBook [~/efitemp] > find . -type f -exec xattr -d "com.apple. quarantine" {} \; -print
root@MacBook [~/efitemp] > find . -name ".DS_Store" -exec rm -f {} \; -print

Now let's set the ownership and permissions of the kernel extensions and build the kernel extensions cache file extensions.mkext.
root@MacBook [~/efitemp] > cd Extra/
root@MacBook [~/efitemp/Extra] > chmod -R 755 Extensions
root@MacBook [~/efitemp/Extra] > chown -R root:wheel Extensions
root@MacBook [~/efitemp/Extra] > kextcache -a i386 -m Extensions.mkext Extensions
root@MacBook [~/efitemp/Extra] > ls -la@
total 112
drwxrwxr-x 6 root wheel 204 Jun 28 23:58 .
drwxrwxr-x 16 root wheel 612 Jun 28 23:45 ..
drwxrwxr-x 6 root wheel 204 Jun 28 23:45 Extensions
-rw-r--r-- 1 root wheel 52374 Jun 28 23:45 Extensions.mkext
drwxrwxr-x 6 root wheel 204 Jun 26 10:52 Themes
root@MacBook [~/efitemp/Extra] > cd
root@MacBook [~] > umount -f efitemp
root@MacBook [~] > rmdir efitemp


That's all. You are done and almost ready for the first boot of your Chameleon-Mac.

10.) [10.5] Install remaining kernel extensions

  1. Insert the EFIBOOT USB-Stick
  2. Open a new Finder window and select the USB-Stick
  3. Make sure a the folder Extra/Extensions exists
  4. If not create a new Folder Extensions under Extra
  5. Copy all downloaded kernel extensions into EFIBOOT/Extra/Extensions
The folder Extension now should contain:
  1. AppleDecrypt.kext
  2. Disabler.kext
  3. OpenHaltRestart.kext
  4. RealtekR1000.kext
Copy also the EFIStudio.zip to the root of your USB-Stick. You will need it after first boot with Chameleon.

9.) [10.5] Install Chameleon

Now I will guide you through the Chameleon installation process onto your USB-Stick.
  1. Insert the prepared USB-Stick
  2. Start the downloaded Chameleon-2.0-rc431.pkg (double click it)
The Installer will welcome you...


Continue until Installation Type and click on "Change Install Location"...


Select the EFIBOOT USB-Stick...


Click "Continue"...


Click on "Customize"...


Deselect all but "Themes" and click "Install". The installer will ask you for the Administrator password. Provide it and follow until the end. That's all.

8.) [10.5] Prepare the USB-Stick

Put your USB-Stick in any MAC you have and start Disk Utility (Application -> Utilities -> Disk Utility).
  1. Start Diskutil
  2. Select the USB-Stick itself as show in the foto (do not select a partition on the stick).
  3. Select Partition
  4. Under Volume Scheme select 1 Partition
  5. Click "Options" and in the Options sheet select "GUID Partition Scheme"
  6. Choose a Name without spaces (I used EFIBOOT)
  7. Click "Apply"
  8. DONE (it should look like in the foto)

7.) [10.5] Preparations

First of all you need a working installation of Mac OS X 10.5.7.

For the first steps do not use your working installation from your EFI-Mac. Something could go wrong and you could loose all your data.

Make a clean and fresh installation from scratch on a separate hardisk. I made it this way. You can also try a new installation a timemachine backup (Mac OS X DVD Installer -> Menu).

Download the following stuff:
Find a USB-Stick. 128MB should be enough. Mine has 512MB. It's a Kingston DataTraveler.

6.) [10.5] My Hardware Setup

I'm using this hardware:

  • Motherbord: Gigabyte GA-EP45-DS3 (BIOS F9)
  • CPU: Intel Q6600 @ 2,4 GHz
  • GFX: Asus Geforce 7300 GT 256MB passiv
  • MEM: 4GB OCZ PC1066 @ 1066 / 2,1V
  • HDD: Western Digital 640GB WD6400AAKS
  • DVD: LGGH22NS30

This translates into the following hardware:
  • Intel ICH10 Soutbridge (10.5.7 native support)
  • Realtek ALC889A sound chip (disabled in BIOS)
  • 2x Realtek 8111C Gigabit Ethernet
  • T.I. TSB43AB23 Firewire (native support)
  • JMicron 368 IDE (disabled in BIOS)
  • nVidia 7300GT 256MB