===== xnu //darwin ===== the [[OsX]] kernel (see [[Kernel Notes]] for glinux) ==== building ==== ref docs * http://developer.apple.com/documentation/Darwin/Conceptual/KernelProgramming/build/chapter_18_section_3.html * http://opendarwin.org/doc/en/articles/building_xnu/ short notes based on above docs... === get the src === get the src and necessary tools (bootstrap_cmds, Libstreams, and cctools) from http://www.opensource.apple.com (or cvs) cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od login cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od co src/Libstreams cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od co src/bootstrap_cmds cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od co src/cctools cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od co src/xnu Note, that the above steps check out the most current version of the source. If you want to have exactly the same code base, as in the tarballs from Apple, you need to specify the OD_APPLE_10_2_6 tag. cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od co -r OD_APPLE_10_2_6 src/Libstreams === setup the environment, and build tools === export PATH=/usr/local/bin:$PATH if its not in .bashprofile cd ~/src/Libstreams make install DSTROOT=/tmp/Libstreams.dst (cd /tmp/Libstreams.dst; pax -rw . /) cd ~/src/bootstrap_cmds make install DSTROOT=/tmp/bootstrap_cmds.dst (cd /tmp/bootstrap_cmds.dst; pax -rw . /) cd ~/src/xnu make installhdrs DSTROOT=/tmp/xnu_hdrs.dst (cd /tmp/xnu_hdrs.dst; pax -rw . /) cd ~/src/cctools make install_tools DSTROOT=/tmp/cctools.dst SUBDIRS="libstuff libmacho misc" RC_OS=macos (cd /tmp/cctools.dst ; pax -rw . /) make lib_ofiles_install DSTROOT=/tmp/cctools.dst SUBDIRS="ld" RC_OS=macos (cd /tmp/cctools.dst ; pax -rw . /) === build the kernel === Finally, issue the following commands: cd ~/src/xnu make The resulting kernel can be found in the BUILD/obj/RELEASE_$ARCH/ directory and is called mach_kernel. $ARCH can be either PPC or I386. By changing the KERNEL_CONFIGS environment variable you can specify which kernel configuration you want to build. For example, to build a debug version of the kernel, do this: make KERNEL_CONFIGS=DEBUG all