Book HomeMac OS X for Unix GeeksSearch this book

Chapter 7. Building the Darwin Kernel

Contents:

Darwin Development Tools
Getting the Source Code
Building and Installing the Kernel
Kernel Configuration

The Darwin kernel, on which Mac OS X is based, is available in a publicly accessible CVS archive. This is not a watered-down version: you can rebuild a kernel that matches your current Mac OS X kernel in every respect. The only noticeable difference will be when you type uname -v:

Darwin Kernel Version 6.0: Sat Jul 27 13:18:52 PDT 2002;
root:xnu/xnu-344.obj~1/RELEASE_PPC 

Just because you can build your kernel, does that mean you should? For most users, the answer is no, for the following reasons:

However, if you want to try installing an unofficial kernel patch, or if you want to try your hand at optimizing the kernel, then this chapter's for you.

A Safety Net

If you have enough disk space to install two copies of Mac OS X, please do so before you start playing around with your working kernel. That way, you will have an operating system you can boot into if things go bad. (On most G3 and G4 Macintoshes, you can hold down the Option key when booting to select a boot disk.) Most importantly, your spare install of Mac OS X will contain backups of important files, such as the kernel and critical frameworks. If you're low on disk space, why not treat yourself to a FireWire drive? If you have a newer Macintosh with a built-in FireWire port, you can boot from a Mac OS X-compatible FireWire drive.

7.1. Darwin Development Tools

The Darwin kernel requires a collection of development tools that are not part of the Mac OS X Developer Tools package. To get these tools, visit the Darwin project at http://developer.apple.com/darwin/ and follow the links for the Darwin Development Environment for Mac OS X. Those links lead to a package called darwintools.pkg, which you should install. This package installs a number of header files, libraries, and tools into /usr/local. The tools are described in Table 7-1. The source code for these utilities and libraries can be found in the cctools, mkisofs, Libstreams, and bootstrap_cmds CVS modules. If you are working with an interim or seed release of Darwin or Mac OS X that is out of sync with the current Darwin Development Environment, you may need to check these utilities out and install them yourself.

Table 7-1. Darwin development tools

Tool

Description

CVS module

check_dylib

Checks the integrity of a dynamic library.

cctools

checksyms

Checks a binary to ensure that it adheres to Mac OS X conventions.

cctools

cmpshlib

Compares two versions of a shared library for compatibility.

cctools

decomment

Strips C and C++ comments from an input file.

bootstrap_cmds

devdump

Interactively reads the contents of a device or filesystem image.

mkisofs (as dump.c)

hack_libgcc

Hacks a framework to export backward-compatible symbols.

cctools

indr

Prepends an underscore to selected symbol names in an object file.

cctools

isodump

Interactively reads the contents of an ISO 9660 image.

mkisofs

isoinfo

Reads information from an ISO 9660 image. Use isoinfo -h for a usage summary.

mkisofs

isovfy

Verifies an ISO image.

mkisofs

kern_tool

Supports cross-compilation of the kernel; a hacked version of the nm utility.

cctools

mkhybrid

Creates a hybrid ISO 9660/Joliet/HFS filesystem.

mkisofs

mkisofs

Creates a hard link to mkhybrid.

mkisofs

mkshlib

Creates a host and target shared library. The host shared library looks like a static library to the linker, but at runtime, the target shared library is loaded.

cctools

relpath

Finds and prints a relative pathname, given a starting directory and an ending directory.

bootstrap_cmds

seg_addr_table

Works with segment address tables.

cctools

seg_hack

Changes segment names.

cctools

setdbg

Operates as an interactive kernel debugger.

at_cmds



Library Navigation Links

Copyright © 2003 O'Reilly & Associates. All rights reserved.