Linux is a monolith kernel, a big one ! Visit Linux Libre and Linux Non-Libre pages for more links and information.
Collection c9-ports have linux-libre port with default crux configuration, this port depends on dracut and grub but is not required to install them. To build and install this port using prt-get;
$ prt-get depinst linux-libre
Download Linux Source from linux libre, or using the port system;
$ cd /usr/ports/c9-ports/linux-libre $ sudo -u pkgmk pkgmk -do
Crux iso comes with config that is used in this port, is a good starting point to personalize according to your needs;
$ mkdir ~/kernel $ cd ~/kernel $ cp /usr/ports/c9-ports/linux-libre/linux-4.1.32.defconfig . $ cp /usr/ports/distfiles/linux-libre-4.1.32-gnu.tar.xz . $ tar xf linux-libre-4.1.32-gnu.tar.xz $ cp linux-4.1.32.defconfig linux-4.1.32/.config
If you like graysky2 kernel_gcc_patch (download master) that adds more cpu options (FLAGS native)
$ cp /usr/ports/distfiles/enable_additional_cpu_optimizations_for_gcc_v4.9%2B_kernel_v3.15%2B.patch cpu_optimizations.patch
$ cd ~/linux-4.1.32/ $ patch -p1 < ../cpu_optimizations.patch patching file arch/x86/include/asm/module.h patching file arch/x86/Kconfig.cpu patching file arch/x86/Makefile Hunk #1 succeeded at 85 with fuzz 1 (offset -9 lines). patching file arch/x86/Makefile_32.cpu $
Read Gresecurity.
Configure kernel according to your current kernel hardware support;
$ make localmodconfig
This will disable all unloaded modules, you can use localyesconfig mark all loaded to be built in the kernel.
To get information about your hardware, for example information about which graphic module (driver) is in use as root run;
# lspci -nnk | grep -i vga -A3 | grep 'in use' Kernel driver in use: i915
Before start compiling check configuration;
$ make nconfig
$ make -j $(nproc) all $ sudo make modules_install $ sudo cp arch/x86/boot/bzImage /boot/vmlinuz-4.1.32-gnu_crux $ sudo cp System.map /boot/System.map-4.1.32-gnu_crux
Create dracut initramfs;
$sudo dracut --fstab /boot/initramfs-4.1.32-gnu_crux.img 4.1.32-gnu_crux
Update grub;
# grub-mkconfig -o /boot/grub/grub.cfg
$ sudo rm -r /lib/modules/4.1.12-gnu_crux $ sudo rm /boot/vmlinuz-4.1.12-gnu_crux $ sudo rm /boot/System.map-4.1.12-gnu_cruxCore OS Index
This is part of the c9-doc Manual. Copyright (C) 2016 c9 team. See the file Gnu Free Documentation License for copying conditions.