Go to the kernel source directory which contains the configurations.
cd /usr/src/sys/amd64/conf
Create a folder named kernel in the home directory of root user i.e. /root.
mkdir /root/kernels
Create a soft link in the /usr/src/sys/amd64/conf named “MYKERNEL” which links to /root/kernels/MYKERNEL file.
cp GENERIC /root/kernels/MYKERNEL ln -s /root/kernels/MYKERNEL
Goto the folder created above.
cd /root/kernels/
Edit the file “MYKERNEL” and make the following change. This line helps us to create the new kernel which is a combination of a generic kernel and the extra features added. The following line includes the features available in a generic kernel
include GENERIC
The other additional lines specify the features to be added in the kernel to be created.
For Example:
cpu HAMMER ident GENERIC makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols makeoptions WITH_CTF=1 # Run ctfconvert(1) for DTrace support options SCHED_ULE # ULE scheduler options PREEMPTION # Enable kernel thread preemption options INET # InterNETworking options INET6 # IPv6 communications protocols options TCP_OFFLOAD # TCP offload options SCTP # Stream Control Transmission Protocol options FFS # Berkeley Fast Filesystem options SOFTUPDATES # Enable FFS soft updates support options UFS_ACL # Support for access control lists options UFS_DIRHASH # Improve performance on big directories options UFS_GJOURNAL # Enable gjournal-based UFS journaling options QUOTA # Enable disk quotas for UFS options MD_ROOT # MD is a potential root device
To build a file which contains all available options, run the following commands.
cd /usr/src/sys/amd64/conf make LINT
Goto the main source folder.
cd /usr/src
Build and Install the new kernel with reference from the file “MYKERNEL”.
make buildkernel KERNCONF=MYKERNEL make installkernel KERNCONF=MYKERNEL
Now reboot the machine to boot into the new kernel you just created now.