In Mac OS X, as the computer boots, it displays various visual feedback. This set of documents is designed to walk you through modifying this visual feedback, and also includes a very basic description of how the boot process works. As a WARNING: This document gives directions for changing the images displayed during boot by Mac OS X 10.4 Client. If you have any other version of Mac OS X, or are running the Server version, please be cautious when following the tutorials as locations of files may not be the same in other versions of Mac OS X.
When your computer boots (assuming it's a PPC mac), it runs some basic tests, (known as the Power On Self Test - POST), and then loads Open Firmware. Open Firmware is stored on a ROM chip in your computer, and is responsible for loading the OS. It loads some basic device drivers and stuff, checks for relevant key presses, and then launches BootX. BootX is a MachO binary that is responsible for basic setup and calling the kernel. It is also responsible for (and this is where we care) drawing the dark grey apple on it's light grey background that all Mac OS X users are so familiar with.
Apple's new computers with Intel chipsets boot up differently. Instead of loading Open Firmware and BootX, the computer loads boot.efi (EFI is Extensible Firmware Interface). I'm not on top of the exact process, but the point is that the drawing is now handled by boot.efi instead of BootX. The image is stored similarly, but you cannot follow the PPC instructions. Additions for Intel users can be found at the bottom.
This mod will require the following tools: HexEdit (or other hexadecimal data editor of your choice), Terminal (or other shell access), an image editor - Photoshop or any other plus ImageMagick are covered here, and Mac OS X (um... duh).
While not strictly necessary it is a good idea to always extract the image you are trying to modify before actually changing it. This will ensure that you are looking for the image in the right place, and that you aren't editing the wrong data!!
/System/Library/CoreServices/, and hit the Go button. In the Finder window that opens, start typing bootx (no command keys, just start typing the name) to select the BootX file. Copy this file to your desktop. PLEASE, save yourself trouble and do it with the Finder, not the Terminal. BootX must have the right type code for the computer to boot properly, and the Finder will preserve this, but command line tools won't.




Open a shell window, cd to the directory where your images are, and enter the following commands (% indicates the shell prompt):
$ cat color.act apple.raw > apple.map
$ convert -depth 8 -size 128x128 apple.map apple.png
$ open apple.png
Heck of a lot easier than with Photoshop, assuming you've got ImageMagick already, which you probably don't.
Now, you can take any 128 by 128 image, and save it in the right format, and put it in to BootX to get your custom boot screen. Keep in mind that the image is limited to 256 colors (but you can use ANY 256 you want). Follow instructions below.


Basically, you should follow the first two instructions for Photoshop in whatever image editor you use (or at least, the equivalent) in order to get your image prepared. Then save it as an indexed 8-bit PNG file named new.png.
Now, run the following commands:
$ convert new.png new.map
Next, open the file new.map in HexEdit. Select the last $4000 bytes in the file, and move them (CUT and PASTE) to a new file, which we'll call new.raw. Save the remaining data to a file called new.act
This part is pretty easy. Open new.act, new.raw and your copy of BootX in HexEdit. You've got a new color table in new.act. Paste it over where you took the original color table from. Keep in mind that depending on a lot of things, there's some chance your new color table won't be a full $300 bytes in length. If so, since the color table in BootX needs to be a full $300 bytes, you can just paste your new colors over the beginning of it and leave the end untouched. (or if you prefer, just pad your new color table with zeros until it's the right length). You also have a new raw image called new.raw. Put this where the original apple came from. Save.
Now, you've got a copy of BootX that you've modded, and you need to put it where the original was. We're going to use the Finder again to preserve the creator code.
/System/Library/CoreServices/, and hit the Go button.At this point, you may have noticed that the spinny on the boot screen doesn't quite look right... and that's where Part 2 comes in.
Well, you'll have to try to fix your system. To get it to boot so you can work with it, you'll have to go in from Open Firmware. When you boot, hold down apple-option-o-f to load Open Firmware.
At the prompt, you can type dir hd:,\dir1\dir2\ to list the contents of a directory on your HD. (The given command would list the directory /dir1/dir2/) Put a number immediately after the colon to switch to a different partition number. Go find a copy of BootX on your disk now, using this. If you can't find BootX, you're going to need to do a reinstall. If you can, continue.
Type boot hd:,\System\Library\CoreServices\BootX, putting in the location of the BootX file you found above. You should now boot up. If your modded BootX is messed up and won't load the system, try with your BootXBackup. If you've trashed that (you naughty!! never trash that backup unless you restore it as the main), then you'll need to do an Archive and Install.
So, what do you have to do differently? Well, the first thing is that instead of BootX, your computer boots off a file called boot.efi (found in the same location as BootX). The next issue is that the image is compressed in boot.efi using Run Length Encoding (RLE). Now, this makes things challenging for a couple reasons. First, you've got to take care of doing the Encoding/Decoding of the image (depending on which way you're going), but it also adds another small issue of how you're going to deal with it if your new data is longer than the original. With uncompressed data this isn't a problem, since it's always the same length, but different images compress different amounts.
First the location of the CLUT in boot.efi: $01E040 for $300 bytes.
Second the location of the image in boot.efi: $011140 for $55C bytes.
Third, where to find RLE tools: here
And finally, what to do if your image is too long: replace the old image with it, then replace the hex data at the following location with an RLE block count: $30DE for 4 bytes. The RLE block count is 1/2 the image data size (after being RLE'd). BUT WAIT. Intel uses Little Endian. Go look it up on wikipedia. Basically, this means that it reverses the byte order. So the original block count of $000002AE is stored in the file as $AE020000. Weird, I know. So you have to do the same thing. Reverse your bytes... so $12345678 (the way you'd normally think of it) becomes $78563412 in little Endian.