newby@zombie:~$ uname -a
FreeBSD zombie.x86labs.org 6.0-RELEASE-p6 FreeBSD 6.0-RELEASE-p6 #1: Sat Apr 22 09:57:26 PDT 2006 root@zombie.x86labs.org:/usr/obj/usr/src/sys/ZOMBIE i386
I compiled my own kernel. That's about it.
By the way, thanks nslay. I appreciate the help. This frustrated me to no end.
Let's build an /etc/make.conf
Here is look at mine:
CPUTYPE=pentium-m
KERNCONF=LIGHTBULB
# KERNCONF=GENERIC
MODULES_OVERRIDE=linux wlan_tkip wlan_ccmp wlan_wep sound acpi iwi syscons if_tap
NO_ATM=1
NO_I4B=1
NO_IPFILTER=1
NO_LPR=1
NO_MAILWRAPPER=1
PPP_NO_NAT=1
PPP_NO_NETGRAPH=1
PPP_NO_RADIUS=1
SUP_UPDATE=1
SUP=/usr/local/bin/cvsup
SUPFLAGS=-g -L 2
SUPFILE=/root/cvsup/standard-supfile
PORTSSUPFILE=/root/cvsup/ports-supfile
DOCSUPFILE=/root/cvsup/doc-supfile
DOC_LANG=en_US.ISO8859-1
# Ports specific
WITHOUT_MOZILLA=1
CUPS_OVERWRITE_BASE=1
WITH_CUPS=1
#WITHOUT_WEB=1
WITH_KQEMU=1
First add your CPUTYPE, it can be found in the example make.conf /usr/share/examples/etc/make.conf.
# The CPUTYPE variable controls which processor should be targeted for
# generated code. This controls processor-specific optimizations in
# certain code (currently only OpenSSL) as well as modifying the value
# of CFLAGS to contain the appropriate optimization directive to gcc.
# The automatic setting of CFLAGS may be overridden using the
# NO_CPU_CFLAGS variable below.
# Currently the following CPU types are recognized:
# Intel x86 architecture:
# (AMD CPUs) opteron athlon64 athlon-mp athlon-xp athlon-4
# athlon-tbird athlon k8 k6-3 k6-2 k6 k5
# (Intel CPUs) nocona pentium4[m] prescott pentium3[m] pentium-m
# pentium2 pentiumpro pentium-mmx pentium i486 i386
# Alpha/AXP architecture: ev67 ev6 pca56 ev56 ev5 ev45 ev4
# AMD64 architecture: opteron, athlon64, nocona
# Intel ia64 architecture: itanium2, itanium
#
# (?= allows to buildworld for a different CPUTYPE.)
#
#CPUTYPE?=pentium3
For KERNCONF, put your kernel config file name...your kernel config should be in /usr/src/sys/i386/conf.
MODULES_OVERRIDE specifies which specific kernel modules should be built. Because most of my drivers are compiled into the kernel, mine is a very a short list. The list of modules can be found by 'ls /usr/src/sys/modules/'. If you forget to build a module, you can always go to source directory and build it.
e.g. if I want to build an iwi module, I would do:
cd /sys/modules/iwi && make deps && make && make install
or something like that... /sys is a symlink to /usr/src/sys
To note...using MODULES_OVERRIDE or NO_MODULES can reduce the kernel compile time significantly (my kernel compiles will take a couple minutes).
The NO_* and PPP_NO_* lines influence buildworld ... it will not build the specified support, libraries or utilities. The list can be got in 'man make.conf'.
SUP_UPDATE=1
SUP=/usr/local/bin/cvsup
SUPFLAGS=-g -L 2
SUPFILE=/root/cvsup/standard-supfile
PORTSSUPFILE=/root/cvsup/ports-supfile
DOCSUPFILE=/root/cvsup/doc-supfile
DOC_LANG=en_US.ISO8859-1
You can copy this line by line. Change the locations of your supfiles to where you put standard-supfile, ports-supfile and doc-supfile.
By adding these to your make.conf, you can update the system with 'make update'
e.g.
update ports:
cd /usr/ports && make update
update everything:
cd /usr/src && make update
update doc:
cd /usr/doc && make update
Not only that, but if you properly setup your make.conf, you will also be able to build a kernel like this:
cd /usr/src && make kernel
To build world, do this:
cd /usr/src && make update && make buildworld && make kernel && reboot
After you reboot, do this:
mergemaster -p && make installworld && mergemaster && reboot
when mergemaster -p executes, keep the temporary directory.
When you run mergemaster, it will ask you if you want to merge or replace existing different scripts, confs and so forth.
Tip:
If its a script it prompts for, install the new one
It its a conf you've never touched, install the new one
If its motd, install the new one (not that it matters)
If you made a mistake you can always run mergemaster again.
If you have nothing left to merge, delete the tmp diretcory.