Thanks to the Autobuild-System, you can easily build a new Release from the NetBSD CVS sources. I'll show you, how to build a release, sets and a bootable installation CD-ROM for i386, step by step. For this, you need a running NetBSD System and a working Internet Connection.
You will need a minimum of 5.1 GB of disk space to build a whole release. You need currently 1.2 GB for the sources src and 579 MB for xsrc. About 2.4 GB will reside in the obj directory after building a release.
# fetch source: cd /usr; cvs -z3 -d email@example.com:/cvsroot co -P src # everything goes into this directory mkdir /usr/obj # build tools (to build everything else), custom kernel, binary sets cd /usr/src; ./build.sh -O /usr/obj -U -j 8 tools kernel=H4KK1T modules distribution sets # install kernel: cd /usr/obj/sys/compile/arch/*/compile/H4KK1T; su root -c 'make install' # test kernel: su root -c 'shutdown -r now' # update userland: cd /usr/src; ./build.sh -O /usr/obj install=/ # follow printed instructions about "postinstall" # build CD image (omit "tools" if built already): cd /usr/src; ./build.sh -O /usr/obj -U -j 8 tools release iso-image
Create the directories src, xsrc and objdir as root in /usr
# cd /usr # mkdir src xsrc objdir
We also create the following directories in /usr: tooldir, releasedir, destdir. We do this, because we want the src directory to stay clean and not polluted by the build process. We will pass options flags to build.sh, to separate the directories.
# mkdir tooldir releasedir destdir
Change the owner of the directories:
# chown john src/ xsrc/ objdir/ tooldir/ releasedir/ destdir/
The following steps from now on can be done as a non-root user:
# logout $
Set the environment variable CVSROOT: (For that, please choose a Mirror close to you)
% setenv CVSROOT firstname.lastname@example.org.NetBSD.org:/cvsroot
Bourne compatible shell (sh, ksh, zsh, bash...) Users:
$ export CVSROOTemail@example.com.NetBSD.org:/cvsroot
Set the environment variable CVS_RSH:
$ export CVS_RSH=ssh
The src directory currently needs about 1500 MB disk space and the xsrc directory currently needs about 579 MB of disk space. Now check out the current sources, like this:
$ cvs checkout -PA src
If you want to use Xorg from pkgsrc you can skip the next step.
$ cvs checkout -PA xsrc
Or you can check out a certain release, by passing -r
$ cvs checkout -rnetbsd-5-0 -PA src $ cvs checkout -rnetbsd-5-0 -PA xsrc
The toolchain contains the software that is needed to build NetBSD, like the GNU C-Compiler and other tools. This way, it is ensured that NetBSD can build itself on almost any Unix™. You can omit this step, if you want to build a new release, because a release always includes building the tools.
$ cd /usr/src $ ./build.sh -T ../tooldir -D ../destdir -R ../releasedir -O ../objdir -U -j2 tools build.sh started: Sat Jan 22 21:34:56 CET 2005 No /usr/tools/bin/nbmake, needs building. Bootstrapping nbmake MACHINE: i386 MACHINE_ARCH: i386 TOOLDIR path: /usr/tooldir DESTDIR path: /usr/destdir RELEASEDIR path: /usr/releasedir Created /usr/tools/bin/nbmake makewrapper: /usr/tools/bin/nbmake-i386 Updated /usr/src/obj/tooldir/bin/nbmake-i386 Tools built to /usr/src/obj/tooldir build.sh started: Sat Jan 22 21:34:56 CET 2005 build.sh ended: Sat Jan 22 21:41:26 CET 2005
Variables to pass to build.sh can be found in src/share/mk/bsd.README.
In this example We are building as a user (non-root): -U We are building the X11R6 sources (Xservers, this is XFree 4.5.0 not Xorg): -x We are using separate directories: -T, -D, -R, -O, -X We are removing contents of tooldir and destdir before building: -r We are using -j2 because we have a multiprocessor system
We are building a release: release
$ ./build.sh -T ../tooldir -D ../destdir -R ../releasedir -O ../objdir -X ../xsrc -U -x -j2 -r release
This process takes at least two hours on an high-end server, and usually much longer, depending on your computing power.
build.sh started: Sat Jan 22 21:50:47 CET 2005 No nonexistent/bin/nbmake, needs building. Bootstrapping nbmake MACHINE: i386 MACHINE_ARCH: i386 TOOLDIR path: /usr/src/tooldir DESTDIR path: /usr/src/destdir RELEASEDIR path: /usr/src/releasedir Created /usr/src/tooldir/bin/nbmake makewrapper: /usr/src/tooldir/bin/nbmake-i386 Updated /usr/src/tooldir/bin/nbmake-i386 Successful make release build.sh started: Sat Jan 22 21:50:47 CET 2005 build.sh ended: Sun Jan 23 01:20:43 CET 2005
If you are using Xorg via pkgsrc (recommended), you can skip building the Xserver (-x).
If you have a multiprocessor system, add -j. The number of jobs should be equal to your number of CPU's/cores. Don't use -j on single CPU systems.
If your build fails, because of insufficient space on install flopies, you might find this useful: How to build install sets, when you can't build install floppies
to create an iso-image just add the option iso-image
$ ./build.sh <other options> -U -x -r release iso-image
the resulting iso image will reside in relasedir/platform/installation/cdrom/
This option will create an iso-image only on platforms that are bootable from such a media.
If you have a CD/DVD-Writer, you can burn the iso image to a CD. For this task you need to install cdrecord, which is part of sysutils/cdrtools.
# cdrecord -dev=/dev/rcd0d -data -pad -v NetBSD-install.iso
In case you don't need whole a release or a bootable iso image, the fastest way to build current is to build new tools, distribution, followed by sets and a kernel (custom or GENERIC). I recommend to build a custom kernel that fits your needs.
$ ./build.sh -U tools distribution sets kernel=MYKERNEL