Intro: Make Your Regular Mac a NetBoot Server!
In this instructable, I'm going to demonstrate to you how to setup your Mac to allow any other Macs on your network to boot from it. Apple actually put all the pieces into the operating system to do this! All you really need to do is set it up. Once this is done, it's automatically turned on and managed by the Operating System...
This can be convenient for installing updates, new OS's or performing diagnostics/repairs. My process of accomplishing this will, as often as possible, use the GUI utilities available. Much of it can also be done using command-line instructions, but in my opinion, leaves too much room for errors.
I'm definitely not the first to accomplish this and without the information from others that have, it would have taken me forever to figure out. Nor am I attempting to steal the glory from others that have published processes to do this. While most of this information is available elsewhere, I am attempting to put it all in one place and make it possible for less experienced users to accomplish. Direct references to all of my sources will be in the last step of this Instructable.
Also, be sure that you have a license to support any OS or software that you serve to cover all the computers on your network.
Step 1: The Network
It's important, before you start that you already have a working network with a DHCP Server. A router supplying all of your computers access to the Internet will suffice. This could also be another Server on the network as long as it is not supplying NetBoot services.
Only computers connected directly to the network through Ethernet will be able to boot off of the network. Computers that normally connect with a WiFi adapter (Airport) will have to be connected physically with an Ethernet cable before using the NetBoot facilities.
Step 2: Install the Software
While all the necessary components are already present to accomplish NetBooting, there are some programs that will make its use and configuration a lot easier.
Download and install Apple's Server Admin Tools available from Apple's website. At this time you will only be using the System Image Utility from this package, but some of the others may become useful in the future.
Also, if you haven't already; Install the Developer's Tools from your current OS X Install DVD. This will install a few tools you'll find quite useful. We need the Property List Editor in this Instructable.
Step 3: Setup the Root User Account...
If you haven't enabled your Root User account, you will need to do this now. I'm going to show you how using the utility NetInfo Manager since we will be using this same utility for the next few steps.
Locate and open NetInfo Manager from the Utilities folder located in your Applications folder (picture 1).
Pull down the Security menu and select Authenticate... (picture 2) or click the lock in the lower-left corner. Enter your Administrator password when requested.
Return to the Security menu and select Enable Root User (picture 3). You will be asked to supply a new password for this account. Use a unique and strong password here as you really don't want anyone else messing around in this account! Once this is done, quit out of NetInfo Manager.
Step 4: Login and Configure Root User...
All configuration must be done from the Root account. Otherwise, file permissions won't be set properly.
Logout of your current account by selecting Log Out... from the Apple menu or entering Command-Shift-Q. When the Login window appears, enter root as the account name and the password you setup in the previous step.
Once logged in, if you took my advice in the previous step, you'll see the Admin Tools in the dock. If not, go back and download the Admin Tools and install them. Move at least the System Image Utility located in the Server folder of Applications into the dock.
Move the following files from the Utilities folder of Applications into the dock also; Console, Disk Utility, NetInfo Manager and Terminal.
Now, we can continue with the network setup...
Step 5: Create NetBoot Share Folders...
In order to supply the images to boot from, we first need to define the folders to get them from. We'll worry about filling the folders later...
If you have plenty of room on your Mac's boot drive, setup the directories in the /Library folder (That's the folder called Library that you see when you open the drive itself, not the Library folder in your Home folder! If you use another drive, substitute "/Volumes/<drive name>" everywhere I use "/Library" in throughout this Instructable.
Open the /Library folder (or other drive) create a new folder (Command-Shift-N) and name it NetBoot. Open it, and create two more folders named NetBootSP0 and NetBootClient0 respectively. We're only going to be using the NetBootSP0 folder in this Instructable. The other is created for completeness.
Now we need to create Sharepoint links so that the Netboot server can find these folder. Open Terminal and type the following:
ln -s NetBootSP0 .sharepoint
ln -s NetBootClients0 .clients
Note the period prior to the sharepoint and clients. This make them invisible links.
Before continuing, drag the NetBootSP0 to your Dock, next to the Trash can. This will make it readily accessible to access later when you need it.
Step 6: Configure NetInfo Manager...
In this step, we are going to setup (but not start) the Network File Server (NFS). This lets the other computers on your network to see and use your NetBoot folders.
Launch NetInfo Manager, click the Lock in the lower-left corner and enter your root password.
Verify that the "/" item in the left-most column is selected and then click the New folder icon above it. In the lower area, change the name of name field's value to "exports".
Select exports in the second colume and click the New folder icon again. This time, set the name to /Library/NetBoot/NetBootSP0 and press the return key. Now click the New icon twice to add two additional property fields to this folder. Double-click the new_property tag and change it to opt then double-click the new_value and change it to ro. Basically, what we've done is to tell the Mac that this folder is Read-Only to network users. Enter Command-S to save these changes.
Don't quit NetInfo Manager yet. We need it for the next step...
Step 7: Continue With NetInfo Manager...
In this step, we will be setting up the Appletalk File Protocol (AFP). This protocol is more used with older Macs for booting into OS 9 or earlier Systems. We're including it here for completeness and (who knows?) it just might break if it 's not here.
Look in the second column again. If there is already a config folder, select System Preferences... under the Apple menu, select the Sharing preferences followed by the Internet tab. If there is a button called Stop, click it so that it reads Start. If it already reads Start leave it alone and close the window (picture 1).
If the config folder doesn't exist, select the / in the left-most column again and click the New folder icon. Name this folder config.
Select the config folder in the second column and click the New button again. Name this new folder Sharepoints (picture 2). Enter Command-S to save your work.
Now, repeat the process to create a new folder in the Sharepoints folder called NetBootSP0. After naming this folder, click in the lower section to add three properties named afp_shared with a value of 1, afp_guest with a value of 0, 'directory_path with a value of /Library/NetBoot/NetBootSP0 and afp_name with a value of NetBootSP0. Enter Command-S to save your work again.
Now we need to use the same process to create a folder in the Sharepoints folder called NetBootClient0 (picture 3). Create the same four properties as you did for the previous folder, but set the value of directory_path to /Library/NetBoot/NetBootClient0 and afp_name to NetBootClient0. Enter Command-S once more...
Don't Quit yet! Just one more thing to setup in NetInfo Manager!
Note the use of the word directory in the above entries. In UNIX, of which OS X is based, the word directory is used instead of folder. While the words are pretty much synonymous, they are not interchangeable when used in configurations.
Step 8: Finish Up With NetInfo Manager...
In this step we're setting up the Boot Server Discovery Protocol (BSDP). This system works very much like the Dynamic Host Configuration Protocol (DHCP) and even uses the same code to serve it. This is why we need an already working network independent of this Mac. If you don't know it already, DHCP is what assigns the Network Addresses for your computers on the network. BSDP on the other hand, serves the list of Boot files to the other computers on your network.
Okay... Now that I've put you to sleep, it's time to finish up with NetInfo Manager. You should already be in the config folder. If not, reselect config in the second column. Click the New icon and name this folder, NetBootServer (picture 1)
if the folder dhcp already exists, select it. Otherwise create it as you created the NetBootServer folder (picture 2).
Select the dhcp folder in the third column and click in the lower area. Click the New icon and name this new property netboot_enabled with a Text value of en0.
If you have older Macs such as the original Bondi-blue iMac or the Blue and White G3, add an additional propery called old_netboot_enabled also set to en0.
Save you work and quit out of NetInfo Manager. You're done with it!
Step 9: Finish Up the Server Settings...
The last couple of settings for the Server have to be done in the Terminal program. This is because we're creating a link (alias) in an invisible folder. This process sets up the Trivial File Transfer Protocol (TFTP) that serves up the Boot Loader and Kernel to the client Macs.
Launch the Terminal application and enter the following lines at the prompt (picture 1):
ln -s /Library/NetBoot/NetBootSP0 /private/tftpboot/NetBoot
That's it! The Server is setup.
You might want to check your work. To do so from Finder, select Go to Folder... from the Go menu and enter /private in the resulting dialog box (picture 2). Now verify that the tftpboot folder and an alias (note the curved arrow) called NetBoot within it exists (picture 3).
Restart your Mac to turn the NetBoot Server on...
In the following steps we're going to create three different NetBoot Images as examples to get you started...
Step 10: Build a NetInstall Image...
In this step we're going to learn how to use Apple's System Image Utility to build a NetBoot Installer. This process can be used with any or a combination of Installer files.
Note that if you're serving to both PPC and Intel Macs, you'll need to build seperate Images unless the Install file you're using is already a Universal Installer. Also, if you wish to boot the Installer from an Intel Mac, the BootImage must be created on an Intel Mac or from OS X 10.5 or later. This is because the necessary pieces aren't available on a standard PPC install of OS X 10.4.
Here, I'm going to demonstrate creating an Installer for the most recent PPC Combo Updater. I will make notations on what to change for the Intel (i386) variant. We're going to ignore (even override!) the more complex functions of the utility. You're welcome to experiment with those features later. Feel free to post your discoveries!
Since you've rebooted (you did catch that in the last step... Right?), log out and back in as the Root User.
Download the most recent Combo Updater from Apple's website. In this case, it will be the OS X 10.4.10 Combo Updater (PPC). Note that this comes as a disk image file. Double-click it to mount it.
Launch the System Image Utility and note that the New Installer icon is already selected (picture 1). Enter a title for the Installer and give it a unique number under 4096 (I start with 1024). You can give more details in the description. Leave the NFS and Local selected...
Click the Contents tab and set the Image Source pop-up menu to Custom Package Install, the Default Language to <Your Language Here> and finally click the Plus button to locate and select your Installer image from the mounted image (picture 2).
Optionally, you can go to the Installation Options tab and set Enable automated installation to allow the Macs booted from this image to operate without user intervention (picture 3). This is handy if you have a number of Macs on the same network that need the same update. Personally, I leave it off.
Click the Create button and agree to the license (pictures 4 & 5). You will be asked where to save the NetBoot Image (picture 6). Notice the pop-up menu toward the bottom that reads Serve from NetBoot sharepoint on:, select your hard drive from here. This indicates to you that you did, in fact, setup the Sharepoints correctly! Give the image a name without spaces, like Install_10.4.10 and click the Save button.
Wait until it's done... (Go get a coffee, tea lemonade... what-have-you...)
You can now quit the System Image Utility.
Step 11: Fix and Enable the NetInstall Image...
Now we need to enable the image and correct a minor problem. First, we'll correct the problem...
The System Image Utility has a minor flaw since Mac OS 10.4.6. Apple added the CoreVideo Framework, but the utility doesn't know to install it. We need to modify the image to include it.
Launce Disk Utility and click the Convert icon at the top of the window (picture 1). Select the Install.dmg file located in your nbi folder (Should be located in /Library/NetBoot/NetBootSP0) (picture 2). Change the name to InstallRW and set the Image Format popup menu to read/write (picture 3). Click the Save button (picture 4).
Open your nbi folder and double click the InstallRW.dmg file to mount it on your desktop (picture 5).
Locate the folder at /System/Library/Frameworks/CoreVideo.framework on your hard drive. Copy it to the same location on the mounted image (picture 6).
Eject the image by dragging it to the Trash (or select it and enter Command-E).
Go back to Disk Utility, select the InstallRW.dmg file in the left column and again click the Convert icon (picture 7). This time change the name back to Install and set the Image Format to compressed. Confirm to replace the previous copy (picture 8)...
In Finder, you can now throw away the ImageRW.dmg file (picture 9).
Now we edit the plist file to enable the Netboot image. Open the file NBImageInfo.plist in the nbi folder (picture 9). It will open in Property List Editor. We have to make a few changes here...
First, click the little arrow to the left of the Architectures item (picture 10). We need to make sure that this value is set to ppc or i386, depending on the type of installer we made. In this case, we want it set to ppc. If you built a Universal installer, click the New Child button and set that one to the one that's missing so both are there.
Now locate and select the EnabledSystemIdentifiers item and click the Delete button. Also delete the DisabledSystemIdentifiers item.
Lastly change the value of IsEnabled to true and save your work.
You can now quit and test your installer. I'll cover that in step 15...
Step 12: Build a NetBoot Image From a Bootable Volume...
In this example we're going to build a NetBoot image from a bootable drive.
The first step is to build a bootable drive! I don't recommend using your regular boot drive. Instead, install OS X on another drive or partition. I'm not going to give you a step-by-step about how to do this. Suffice it to say; Click the Custom button before the final Install button to deselect any parts you don't need.
Set the primary user to Administrator (short name admin and set a password) and create a non-administrative account called Guest without a password. You can make the later the auto-login account if you want. How you setup this boot drive is entirely up to you. These are just pointers to make it more generic.
Run all the updates and install whatever programs you want the user's to have available. Remember that once this is converted to a NetBoot image, it will come up the same way you last left it.
Boot back to your regular drive and log into the Root account.
Launch System Image Utility and click the New Boot icon (picture 1). Give it a simple name and a unique index number below 4096. In the description put the details to remind yourself why you made this image. Again, leave NFS and Local selected.
Select the Contents tab and select your bootable drive in the Image Source popup menu (picture 2).
Note that if you built this bootable drive using the Install disks from an Intel Mac, the resulting image will be a Universal image (will boot both Intel and PPC). This will also be the case with OS X 10.5 (Leopard) images. Otherwise, the image will be PPC only.
Go ahead and click the Create button to build the image (pictures 3 & 4).
All you need to do now open the NBImageInfo.plist file with Property List Editor, correct the Architectures settings as in step 10, remove the EnabledSystemIdentifiers and DisabledSystemIdentifiers and set isEnabled item to true (picture 5).
Note that you may also set IsDefault to true to make this default image. Only one image should be set to default for each platform.
Step 13: Build a NetBoot Image From a Bootable CD...
Building a bootable image from a CD is and entirely different process. Bootable CD's are built in a similar fashion as NetBoot images to save space on the CD. What we need to do is locate the data we need on the CD and build our Netboot image from there.
This process requires the use of Terminal to get the necessary parts. It's not too difficult, but can be daunting... We're going to build a NetBoot copy of the OS X 10.4 Install DVD. Other Bootable CDs will follow pretty much the same procedure. I am adding notes as to how to get the i386 parts when we do this with the OS X 10.5, Panther (Universal) DVD.
We'll start out by creating the necessary folders. Logged in as Root User, In the NetBootSP0 folder, create a new folder named, 10.4_Install.nbi. If creating a Universal Install then inside that folder, create another folder called i386 for the Intel boot files.
Insert the OS X Install DVD into your drive and launch Disk Utility. Select the Install DVD and click the New Image icon. Set the Image Fomat to compressed and save it as System in the 10.4_Install.nbi folder (picture 1).
Leave the DVD in the drive, we're going to get most of our files from it.
We need to locate the files we need first. The first file we need is easy. It's in the main window of the drive and is called mach_kernel (picture 2). Make a note that it's located at /Volumes/Mac OSX Install DVD/mach_kernel. This will become our mach.macosx files. Launch Terminal and enter the following (all commands in picture 5):
cd /Volumes/Mac OSX Install DVD
ditto mach_kernel /Library/NetBoot/NetBootSP0/10.4_Install.nbi/mach.macosx
or for a Universal CD:
cd /Volumes/Mac OSX Install DVD
lipo -extract ppc -output /Library/NetBoot/NetBootSP0/10.5_Install.nbi/mach.macosx mach_kernel
ditto mach_kernel /Library/NetBoot/NetBootSP0/10.5_Install.nbi/i386/mach.macosx
The 'lipo' command allows us to extract only the PPC code from the kernel. The next line uses 'ditto' to duplicate the entire kernel because Intel Macs still need some of the PPC code.
Next, we need to locate the Kernel Extensions file. On most CDs this will be located in /System/Library/Extensions and will be called Extensions.kext (picture 3). If you can't find it there, there will be a plist file in the /usr/standalone folder that will have the path to the actual file in it. Verify where it's at and then go back to Terminal and enter:
ditto Extensions.kext /Library/NetBoot/NetBootSP0/10.4_Install.nbi/mach.macosx.mkext
or for Universal CDs:
lipo -extract ppc -output /Library/NetBoot/NetBootSP0/10.5_Install.nbi/mach.macosx.mkext Extensions.kext
ditto Extensions.kext /Library/NetBoot/NetBootSP0/10.5_Install.nbi/i386/mach.macosx.mkext
And now, the booter files. They should be located in seperate folders at /usr/standalone (picture 4), so enter the following into Terminal:
cd /Volumes/Mac OSX Install DVD/usr/standalone
ditto ppc/bootx.bootinfo /Library/NetBoot/NetBootSP0/10.4_Install.nbi/booter
And for Universal CDs, add:
ditto i386/boot.efi /Library/NetBoot/NetBootSP0/10.5_Install.nbi/i386/booter
Now all we need to do is create or copy a NBImageInfo.plist. The easiest solution is to steal it from a previously created NetBoot nbi folder. You're welcome to create your own, but it's a lot easier to edit one that's already there. Just Option-drag the file from another nbi folder to this one.
Open the NBImageInfo.plist with Property List Editor (picture 6).
Create needed entries ppc and/or i386 under Architecture.
Change the Description appropriately.
Change the Index to a unique number under 4096.
If IsEnabled is set to No, change it to Yes
If IsInstall is set to No, change it to Yes
Change the Name appropriately.
Change (or create if necessary) osVersion to 10.4
Everything else should be fine. Save your work and NetBoot your other Macs! See the next step...
Step 14: NetBoot Your Mac!
Now that we have the NetBoot Images we want/need... It would be a great idea to restart the server Mac so that we're out of the Root User account. Restarting will also assure that the NetBoot system will see our images correctly.
Once the Server is up and running and you've created at least one bootable image, go to one of your other Macs connected to the network via Ethernet cables. It won't work over WiFi.
Open System Preferences and select Startup Disk. If all went well, you'll see all the NetBoot sets applicable to your Mac. Select the one you want to boot into and click the Restart button.
If the boot fails, you'll likely get a System Panic; The box telling you to reboot in multiple languages. To get back to your regular Boot drive, reset and hold the Option key to select the hard drive. Note on some older Macs, you will have to reset the PRAM with Command-Option-P-R after reset. Now go and fiigure out what's wrong with your NetBoot files...
If all went well, you will be presented with whatever your NetBoot image has. Use the Startup Disk option under the Utilities menu of Install images or in System Preferences of normal images.
You should be well on your way now. I hope you enjoy your new setup!