Core OS Index

2.3. Kernel Linux

Linux is a monolith kernel, a big one ! Visit Linux Libre and Linux Non-Libre pages for more links and information.

2.3.1. Port Linux Libre

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
        

2.3.2. Manual Install

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
        

2.3.3. Manual Remove

        $ 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_crux
        
Core 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.