Compiling the Linux kernel and creating a bootable ISO
This revision is from 2024/01/21 14:16. You can Restore it.
Guides to compile the Linux kernel from source, create the file system from BusyBox and then run it using QEMU. But, Create a bootable ISO of it and boot it on a computer.
The Linux Kernel
At first, compile the Linux kernel, https://kernel.org/ and grab the latest Linux kernel.
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.7.1.tar.xz tar xf linux-6.7.1.tar.xz cd linux-6.7.1.tar.xz
General preparation environment to compile the kernel...
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev
To configure the kernel:
make defconfig
This will create the default config file for compiling Linux. Then run
make menuconfig
to enter a TUI to edit the config file. One thing for older devices is unchecking 64 bit kernel. Use make -j $(nproc) to compile using all the CPU cores.
# Example: Using 4 parallel jobs make -j4
After compiling, you should get the arch/x86/boot/bzImage . If not, check the make file log.
BusyBox
Next use BusyBox to create a minimal file system. Get the source code and extract it.
wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2 tar xf busybox-1.36.1.tar.bz2 cd busybox-1.36.1
Run...
make defconfig
to make a default configuration for the BusyBox. Then...
make menuconfig
to bring the TUI and edit the configs. The option which you must edit is located in Settings, and then Build static binary (no shared libs). The reason to enable this option is we do not want to compile Glibc into the Linux distro.
Use..
make -j $(nproc)
to compile BusyBox. To check if the compiled file is fine, use command...
file busybox
The file must be statically linked.