If you're on some RHEL based distro you will need some of the following packages, if any fail you may need to search what repos are on your system or find who packages your RPMs and ask them nicely. If you're on ubuntu or other apt packaged distros, the packages will most likely be the same just check the names eg dev instead of devel.
yum install -y autoconf automake bc diffutils elfutils elfutils-devel file findutils gcc glibc-devel make openssl-devel
If on Nix:
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
name = "linux-kernel-build-env";
buildInputs = with pkgs; [
# Core build tools
gnumake
gcc
binutils
# Required libraries and tools
ncurses # For menuconfig
pkg-config
openssl
elfutils
# Additional build dependencies
flex
bison
bc
perl
python3
syslinux
# Optional but useful tools
pahole # For BTF generation (if using BTF)
kmod # For module utilities
# Compression tools (for kernel image)
zlib
xz
zstd
# For building specific targets
ubootTools # For ARM/embedded targets
];
shellHook = ''
echo "Common commands:"
echo " make defconfig - Create default config"
echo " make menuconfig - Interactive config"
echo " make -j$(nproc) - Build kernel"
echo " make modules - Build modules"
echo " make modules_install - Install modules"
echo ""
echo "Kernel directory: $KERNEL_DIR"
'';
}
Put the above in a shell.nix file and run nix-shell shell.nix in some directory you plan on using and this will give you the echoed output. From there I am going to check out the latest LTS kernel.
Assuming this is all in the $HOME/ you will have in that directory linux and fs along with any scripts and tools like our nix shell above.
In linux there is a checked out version of the kernel from kernel.org.
By default in this checked out copy one can type make clean && make defconf && make -j $(nproc). This will clean the repo just in case there's any mess, make the default config provided by the developers and build it with the maximum number of cpus you have. When finished it should give you Kernel: arch/x86/boot/bzImage is ready or something similar.
fs forms the basis of what will be a CPIO formatted initramfs. Once the kernel is booted this is expanded in ram and the kernel will find init depending on its configuration. More than likely it will be at /bin/init or /init but like all things in linux this is customisable.
For this version of linux I'll fill this with the following:
fs
fs/bin
fs/bin/busybox
fs/dev
fs/init
fs/sys
fs/proc
All the files are owned by root, and both busybox and init are executable. Busybox can be grabbed as a static binary from busybox.net or from the alpine distro.
To build this i have a make file:
.PHONY: initramfs
initramfs:
(cd fs && find . -print0 | cpio --null -o --format=newc) | gzip -9 > ./initramfs.cpio.gz
.PHONY: emu
emu:
qemu-system-x86_64 \
-kernel linux/arch/x86/boot/bzImage \
-initrd ./initramfs.cpio.gz \
-netdev user,id=net0 \
-device virtio-net-pci,netdev=net0 \
-nographic -append "console=ttyS0 ip=dhcp"
NB. mind if you copy this — the make style indenting of makefiles is needed.
This will let me build the initramfs and place it next to everything else. The emu target will run qemu with enough parameters to get this running and connected to the network.
This is now a basic RAM-only Linux build. Not too tricky, and about the bare minimum of what's needed vs a full Linux From Scratch which more than likely does this better.
[ 0.000000] Linux version 6.18.5-96703-ge30930a6ddb3 (ajk203@cheese2) (gcc (GCC) 14.3.0, GNU ld (GNU Binutils) 2.44) #14 SMP PREEMPT_DYN
[ 0.000000] Command line: console=ttyS0 ip=dhcp
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x0000000007fdffff] usable
[ 0.000000] BIOS-e820: [mem 0x0000000007fe0000-0x0000000007ffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000fd00000000-0x000000ffffffffff] reserved
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] APIC: Static calls initialized
[ 0.000000] SMBIOS 2.8 present.
[ 0.000000] DMI: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.17.0-0-gb52ca86e094d-prebuilt.qemu.org 04/01/2014
[ 0.000000] DMI: Memory slots populated: 1/1
[ 0.000000] tsc: Fast TSC calibration using PIT
[ 0.000000] tsc: Detected 4691.248 MHz processor
[ 0.006296] last_pfn = 0x7fe0 max_arch_pfn = 0x400000000
[ 0.006707] MTRR map: 4 entries (3 fixed + 1 variable; max 19), built from 8 variable MTRRs
[ 0.006818] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WP UC- WT
[ 0.016021] found SMP MP-table at [mem 0x000f54c0-0x000f54cf]
[ 0.019228] RAMDISK: [mem 0x07f25000-0x07fdffff]
[ 0.019504] ACPI: Early table checksum verification disabled
[ 0.019758] ACPI: RSDP 0x00000000000F52E0 000014 (v00 BOCHS )
[ 0.019941] ACPI: RSDT 0x0000000007FE2335 000034 (v01 BOCHS BXPC 00000001 BXPC 00000001)
[ 0.020375] ACPI: FACP 0x0000000007FE21E9 000074 (v01 BOCHS BXPC 00000001 BXPC 00000001)
[ 0.020767] ACPI: DSDT 0x0000000007FE0040 0021A9 (v01 BOCHS BXPC 00000001 BXPC 00000001)
[ 0.020811] ACPI: FACS 0x0000000007FE0000 000040
[ 0.020845] ACPI: APIC 0x0000000007FE225D 000078 (v03 BOCHS BXPC 00000001 BXPC 00000001)
[ 0.020861] ACPI: HPET 0x0000000007FE22D5 000038 (v01 BOCHS BXPC 00000001 BXPC 00000001)
[ 0.020881] ACPI: WAET 0x0000000007FE230D 000028 (v01 BOCHS BXPC 00000001 BXPC 00000001)
[ 0.020944] ACPI: Reserving FACP table memory at [mem 0x7fe21e9-0x7fe225c]
[ 0.020961] ACPI: Reserving DSDT table memory at [mem 0x7fe0040-0x7fe21e8]
[ 0.020965] ACPI: Reserving FACS table memory at [mem 0x7fe0000-0x7fe003f]
[ 0.020969] ACPI: Reserving APIC table memory at [mem 0x7fe225d-0x7fe22d4]
[ 0.020973] ACPI: Reserving HPET table memory at [mem 0x7fe22d5-0x7fe230c]
[ 0.020976] ACPI: Reserving WAET table memory at [mem 0x7fe230d-0x7fe2334]
[ 0.022404] No NUMA configuration found
[ 0.022417] Faking a node at [mem 0x0000000000000000-0x0000000007fdffff]
[ 0.022818] NODE_DATA(0) allocated [mem 0x07f21900-0x07f24fff]
[ 0.024031] Zone ranges:
[ 0.024045] DMA [mem 0x0000000000001000-0x0000000000ffffff]
[ 0.024089] DMA32 [mem 0x0000000001000000-0x0000000007fdffff]
[ 0.024095] Normal empty
[ 0.024105] Movable zone start for each node
[ 0.024123] Early memory node ranges
[ 0.024140] node 0: [mem 0x0000000000001000-0x000000000009efff]
[ 0.024230] node 0: [mem 0x0000000000100000-0x0000000007fdffff]
[ 0.024314] Initmem setup node 0 [mem 0x0000000000001000-0x0000000007fdffff]
[ 0.024985] On node 0, zone DMA: 1 pages in unavailable ranges
[ 0.025248] On node 0, zone DMA: 97 pages in unavailable ranges
[ 0.026585] On node 0, zone DMA32: 32 pages in unavailable ranges
[ 0.026814] ACPI: PM-Timer IO Port: 0x608
[ 0.027065] ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
[ 0.027299] IOAPIC[0]: apic_id 0, version 32, address 0xfec00000, GSI 0-23
[ 0.027373] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.027528] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
[ 0.027554] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.027611] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
[ 0.027616] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
[ 0.027729] ACPI: Using ACPI (MADT) for SMP configuration information
[ 0.027754] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[ 0.027999] CPU topo: Max. logical packages: 1
[ 0.028006] CPU topo: Max. logical dies: 1
[ 0.028011] CPU topo: Max. dies per package: 1
[ 0.028052] CPU topo: Max. threads per core: 1
[ 0.028153] CPU topo: Num. cores per package: 1
[ 0.028161] CPU topo: Num. threads per package: 1
[ 0.028166] CPU topo: Allowing 1 present CPUs plus 0 hotplug CPUs
[ 0.028678] PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff]
[ 0.028694] PM: hibernation: Registered nosave memory: [mem 0x0009f000-0x000fffff]
[ 0.028762] [mem 0x08000000-0xfffbffff] available for PCI devices
[ 0.028792] Booting paravirtualized kernel on bare hardware
[ 0.028974] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns
[ 0.038121] setup_percpu: NR_CPUS:64 nr_cpumask_bits:1 nr_cpu_ids:1 nr_node_ids:1
[ 0.039159] percpu: Embedded 52 pages/cpu s172376 r8192 d32424 u2097152
[ 0.040327] Kernel command line: console=ttyS0 ip=dhcp
[ 0.040970] printk: log buffer data + meta data: 262144 + 917504 = 1179648 bytes
[ 0.041122] Dentry cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
[ 0.041189] Inode-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[ 0.043119] Fallback order for Node 0: 0
[ 0.043294] Built 1 zonelists, mobility grouping on. Total pages: 32638
[ 0.043304] Policy zone: DMA32
[ 0.043455] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[ 0.047519] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.055256] Dynamic Preempt: voluntary
[ 0.057303] rcu: Preemptible hierarchical RCU implementation.
[ 0.057310] rcu: RCU event tracing is enabled.
[ 0.057324] rcu: RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=1.
[ 0.057411] Trampoline variant of Tasks RCU enabled.
[ 0.057416] Tracing variant of Tasks RCU enabled.
[ 0.057476] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
[ 0.057499] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[ 0.058205] RCU Tasks: Setting shift to 0 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=1.
[ 0.058218] RCU Tasks Trace: Setting shift to 0 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=1.
[ 0.073417] NR_IRQS: 4352, nr_irqs: 256, preallocated irqs: 16
[ 0.079254] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.083118] Console: colour VGA+ 80x25
[ 0.084346] printk: legacy console [ttyS0] enabled
[ 0.098187] ACPI: Core revision 20250807
[ 0.101713] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604467 ns
[ 0.103071] APIC: Switch to symmetric I/O mode setup
[ 0.107624] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 0.112719] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x439f217e4ea, max_idle_ns: 440795401750 ns
[ 0.113166] Calibrating delay loop (skipped), value calculated using timer frequency.. 9382.49 BogoMIPS (lpj=4691248)
[ 0.115722] Last level iTLB entries: 4KB 512, 2MB 255, 4MB 127
[ 0.115846] Last level dTLB entries: 4KB 512, 2MB 255, 4MB 127, 1GB 0
[ 0.116166] mitigations: Enabled attack vectors: user_kernel, user_user, SMT mitigations: auto
[ 0.116565] Spectre V2 : Mitigation: Retpolines
[ 0.116738] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
[ 0.116965] Spectre V2 : Spectre v2 / SpectreRSB: Filling RSB on context switch and VMEXIT
[ 0.117512] x86/fpu: x87 FPU will use FXSAVE
[ 0.357667] Freeing SMP alternatives memory: 52K
[ 0.358285] pid_max: default: 32768 minimum: 301
[ 0.363238] LSM: initializing lsm=capability,selinux
[ 0.364448] SELinux: Initializing.
[ 0.368657] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.368843] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.489788] smpboot: CPU0: AMD QEMU Virtual CPU version 2.5+ (family: 0xf, model: 0x6b, stepping: 0x1)
[ 0.495561] Performance Events: PMU not available due to virtualization, using software events only.
[ 0.496305] signal: max sigframe size: 1440
[ 0.497153] rcu: Hierarchical SRCU implementation.
[ 0.497255] rcu: Max phase no-delay instances is 400.
[ 0.499545] smp: Bringing up secondary CPUs ...
[ 0.500780] smp: Brought up 1 node, 1 CPU
[ 0.500910] smpboot: Total of 1 processors activated (9382.49 BogoMIPS)
[ 0.506591] Memory: 83296K/130552K available (19324K kernel code, 2899K rwdata, 7428K rodata, 2820K init, 640K bss, 44864K reserved, 0K
[ 0.511321] devtmpfs: initialized
[ 0.517873] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
[ 0.518245] posixtimers hash table entries: 512 (order: 1, 8192 bytes, linear)
[ 0.518575] futex hash table entries: 256 (16384 bytes on 1 NUMA nodes, total 16 KiB, linear).
[ 0.521082] PM: RTC time: 20:33:56, date: 2026-04-19
[ 0.524040] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.526121] audit: initializing netlink subsys (disabled)
[ 0.527367] audit: type=2000 audit(1776630835.422:1): state=initialized audit_enabled=0 res=1
[ 0.530403] thermal_sys: Registered thermal governor 'step_wise'
[ 0.530669] cpuidle: using governor menu
[ 0.533050] PCI: Using configuration type 1 for base access
[ 0.534541] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[ 0.537260] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[ 0.537402] HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
[ 0.542823] ACPI: Added _OSI(Module Device)
[ 0.542922] ACPI: Added _OSI(Processor Device)
[ 0.542997] ACPI: Added _OSI(Processor Aggregator Device)
[ 0.571142] ACPI: 1 ACPI AML tables successfully acquired and loaded
[ 0.596762] ACPI: Interpreter enabled
[ 0.597596] ACPI: PM: (supports S0 S3 S4 S5)
[ 0.597705] ACPI: Using IOAPIC for interrupt routing
[ 0.598054] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[ 0.598222] PCI: Using E820 reservations for host bridge windows
[ 0.599930] ACPI: Enabled 2 GPEs in block 00 to 0F
[ 0.648275] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[ 0.648841] acpi PNP0A03:00: _OSC: OS supports [ASPM ClockPM Segments MSI HPX-Type3]
[ 0.649082] acpi PNP0A03:00: _OSC: not requesting OS control; OS requires [ExtendedConfig ASPM ClockPM MSI]
[ 0.649692] acpi PNP0A03:00: fail to add MMCONFIG information, can't access extended configuration space under this bridge
[ 0.654711] PCI host bridge to bus 0000:00
[ 0.654944] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window]
[ 0.655165] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window]
[ 0.655297] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
[ 0.655483] pci_bus 0000:00: root bus resource [mem 0x08000000-0xfebfffff window]
[ 0.655622] pci_bus 0000:00: root bus resource [mem 0x100000000-0x17fffffff window]
[ 0.655848] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 0.661786] pci 0000:00:00.0: [8086:1237] type 00 class 0x060000 conventional PCI endpoint
[ 0.664540] pci 0000:00:01.0: [8086:7000] type 00 class 0x060100 conventional PCI endpoint
[ 0.665086] pci 0000:00:01.1: [8086:7010] type 00 class 0x010180 conventional PCI endpoint
[ 0.665625] pci 0000:00:01.1: BAR 4 [io 0xc020-0xc02f]
[ 0.665781] pci 0000:00:01.1: BAR 0 [io 0x01f0-0x01f7]: legacy IDE quirk
[ 0.665915] pci 0000:00:01.1: BAR 1 [io 0x03f6]: legacy IDE quirk
[ 0.666055] pci 0000:00:01.1: BAR 2 [io 0x0170-0x0177]: legacy IDE quirk
[ 0.666188] pci 0000:00:01.1: BAR 3 [io 0x0376]: legacy IDE quirk
[ 0.670442] pci 0000:00:01.3: [8086:7113] type 00 class 0x068000 conventional PCI endpoint
[ 0.670803] pci 0000:00:01.3: quirk: [io 0x0600-0x063f] claimed by PIIX4 ACPI
[ 0.670948] pci 0000:00:01.3: quirk: [io 0x0700-0x070f] claimed by PIIX4 SMB
[ 0.671374] pci 0000:00:02.0: [1234:1111] type 00 class 0x030000 conventional PCI endpoint
[ 0.672053] pci 0000:00:02.0: BAR 0 [mem 0xfd000000-0xfdffffff pref]
[ 0.672216] pci 0000:00:02.0: BAR 2 [mem 0xfebd0000-0xfebd0fff]
[ 0.672341] pci 0000:00:02.0: ROM [mem 0xfebc0000-0xfebcffff pref]
[ 0.672618] pci 0000:00:02.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[ 0.673333] pci 0000:00:03.0: [1af4:1000] type 00 class 0x020000 conventional PCI endpoint
[ 0.674054] pci 0000:00:03.0: BAR 0 [io 0xc000-0xc01f]
[ 0.674165] pci 0000:00:03.0: BAR 1 [mem 0xfebd1000-0xfebd1fff]
[ 0.674304] pci 0000:00:03.0: BAR 4 [mem 0xfe000000-0xfe003fff 64bit pref]
[ 0.674460] pci 0000:00:03.0: ROM [mem 0xfeb80000-0xfebbffff pref]
[ 0.689107] ACPI: PCI: Interrupt link LNKA configured for IRQ 10
[ 0.689690] ACPI: PCI: Interrupt link LNKB configured for IRQ 10
[ 0.690161] ACPI: PCI: Interrupt link LNKC configured for IRQ 11
[ 0.690593] ACPI: PCI: Interrupt link LNKD configured for IRQ 11
[ 0.690881] ACPI: PCI: Interrupt link LNKS configured for IRQ 9
[ 0.697487] iommu: Default domain type: Translated
[ 0.697597] iommu: DMA domain TLB invalidation policy: lazy mode
[ 0.698443] SCSI subsystem initialized
[ 0.699423] ACPI: bus type USB registered
[ 0.699764] usbcore: registered new interface driver usbfs
[ 0.703465] usbcore: registered new interface driver hub
[ 0.703652] usbcore: registered new device driver usb
[ 0.703952] pps_core: LinuxPPS API ver. 1 registered
[ 0.704034] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.704227] PTP clock support registered
[ 0.705471] Advanced Linux Sound Architecture Driver Initialized.
[ 0.714762] NetLabel: Initializing
[ 0.714838] NetLabel: domain hash size = 128
[ 0.714920] NetLabel: protocols = UNLABELED CIPSOv4 CALIPSO
[ 0.716628] NetLabel: unlabeled traffic allowed by default
[ 0.726265] PCI: Using ACPI for IRQ routing
[ 0.727856] pci 0000:00:02.0: vgaarb: setting as boot VGA device
[ 0.728008] pci 0000:00:02.0: vgaarb: bridge control possible
[ 0.728026] pci 0000:00:02.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[ 0.728051] vgaarb: loaded
[ 0.729105] hpet: 3 channels of 0 reserved for per-cpu timers
[ 0.733150] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[ 0.733289] hpet0: 3 comparators, 64-bit 100.000000 MHz counter
[ 0.739802] clocksource: Switched to clocksource tsc-early
[ 0.740716] VFS: Disk quotas dquot_6.6.0
[ 0.740846] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 0.742681] pnp: PnP ACPI init
[ 0.748316] pnp: PnP ACPI: found 6 devices
[ 0.775983] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[ 0.780228] NET: Registered PF_INET protocol family
[ 0.780919] IP idents hash table entries: 2048 (order: 2, 16384 bytes, linear)
[ 0.788934] tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.789120] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.789443] TCP established hash table entries: 1024 (order: 1, 8192 bytes, linear)
[ 0.789677] TCP bind hash table entries: 1024 (order: 3, 32768 bytes, linear)
[ 0.789867] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.794183] UDP hash table entries: 256 (order: 2, 16384 bytes, linear)
[ 0.794424] UDP-Lite hash table entries: 256 (order: 2, 16384 bytes, linear)
[ 0.795405] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 0.796575] RPC: Registered named UNIX socket transport module.
[ 0.796704] RPC: Registered udp transport module.
[ 0.796788] RPC: Registered tcp transport module.
[ 0.796869] RPC: Registered tcp-with-tls transport module.
[ 0.796967] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.802257] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window]
[ 0.802390] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window]
[ 0.802508] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
[ 0.802643] pci_bus 0000:00: resource 7 [mem 0x08000000-0xfebfffff window]
[ 0.802761] pci_bus 0000:00: resource 8 [mem 0x100000000-0x17fffffff window]
[ 0.803260] pci 0000:00:01.0: PIIX3: Enabling Passive Release
[ 0.803411] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
[ 0.803560] PCI: CLS 0 bytes, default 64
[ 0.811582] Unpacking initramfs...
[ 0.867116] Freeing initrd memory: 748K
[ 1.024416] Initialise system trusted keyrings
[ 1.026290] workingset: timestamp_bits=56 max_order=15 bucket_order=0
[ 1.028759] NFS: Registering the id_resolver key type
[ 1.029027] Key type id_resolver registered
[ 1.029117] Key type id_legacy registered
[ 1.029611] 9p: Installing v9fs 9p2000 file system support
[ 1.089660] Key type asymmetric registered
[ 1.089779] Asymmetric key parser 'x509' registered
[ 1.089991] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[ 1.090371] io scheduler mq-deadline registered
[ 1.090486] io scheduler kyber registered
[ 1.092108] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[ 1.094842] ACPI: button: Power Button [PWRF]
[ 1.102855] ACPI: \_SB_.LNKC: Enabled at IRQ 11
[ 1.105026] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 1.107676] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[ 1.111202] Non-volatile memory driver v1.3
[ 1.111314] Linux agpgart interface v0.103
[ 1.112140] ACPI: bus type drm_connector registered
[ 1.123052] loop: module loaded
[ 1.127933] scsi host0: ata_piix
[ 1.128891] scsi host1: ata_piix
[ 1.129216] ata1: PATA max MWDMA2 cmd 0x1f0 ctl 0x3f6 bmdma 0xc020 irq 14 lpm-pol 0
[ 1.129364] ata2: PATA max MWDMA2 cmd 0x170 ctl 0x376 bmdma 0xc028 irq 15 lpm-pol 0
[ 1.140820] e100: Intel(R) PRO/100 Network Driver
[ 1.140927] e100: Copyright(c) 1999-2006 Intel Corporation
[ 1.141080] e1000: Intel(R) PRO/1000 Network Driver
[ 1.141172] e1000: Copyright (c) 1999-2006 Intel Corporation.
[ 1.141326] e1000e: Intel(R) PRO/1000 Network Driver
[ 1.141440] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[ 1.141602] sky2: driver version 1.30
[ 1.142825] usbcore: registered new interface driver usblp
[ 1.143013] usbcore: registered new interface driver usb-storage
[ 1.143594] i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
[ 1.145861] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 1.146073] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 1.148396] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input1
[ 1.149439] rtc_cmos 00:05: RTC can wake from S4
[ 1.152873] rtc_cmos 00:05: registered as rtc0
[ 1.153462] rtc_cmos 00:05: alarms up to one day, y3k, 242 bytes nvram, hpet irqs
[ 1.155064] device-mapper: ioctl: 4.50.0-ioctl (2025-04-28) initialised: dm-devel@lists.linux.dev
[ 1.155386] amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled
[ 1.155706] hid: raw HID events driver (C) Jiri Kosina
[ 1.156828] usbcore: registered new interface driver usbhid
[ 1.156952] usbhid: USB HID core driver
[ 1.160806] Initializing XFRM netlink socket
[ 1.161081] NET: Registered PF_INET6 protocol family
[ 1.164981] Segment Routing with IPv6
[ 1.165158] In-situ OAM (IOAM) with IPv6
[ 1.165803] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[ 1.167369] NET: Registered PF_PACKET protocol family
[ 1.168316] 9pnet: Installing 9P2000 support
[ 1.168543] Key type dns_resolver registered
[ 1.169757] IPI shorthand broadcast: enabled
[ 1.187404] sched_clock: Marking stable (1162013467, 24400626)->(1187396253, -982160)
[ 1.188770] registered taskstats version 1
[ 1.188871] Loading compiled-in X.509 certificates
[ 1.198134] Demotion targets for Node 0: null
[ 1.199995] PM: Magic number: 6:567:599
[ 1.200143] serial8250 serial8250: hash matches
[ 1.200308] netconsole: network logging started
[ 1.289057] ata2: found unknown device (class 0)
[ 1.292329] ata2.00: ATAPI: QEMU DVD-ROM, 2.5+, max UDMA/100
[ 1.298823] scsi 1:0:0:0: CD-ROM QEMU QEMU DVD-ROM 2.5+ PQ: 0 ANSI: 5
[ 1.309487] sr 1:0:0:0: [sr0] scsi3-mmc drive: 4x/4x cd/rw xa/form2 tray
[ 1.309749] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 1.315339] sr 1:0:0:0: Attached scsi generic sg0 type 5
[ 1.569194] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input3
[ 1.588553] Sending DHCP requests ., OK
[ 1.594675] IP-Config: Got DHCP answer from 10.0.2.2, my address is 10.0.2.15
[ 1.594995] IP-Config: Complete:
[ 1.595062] device=eth0, hwaddr=52:54:00:12:34:56, ipaddr=10.0.2.15, mask=255.255.255.0, gw=10.0.2.2
[ 1.595284] host=10.0.2.15, domain=, nis-domain=(none)
[ 1.595381] bootserver=10.0.2.2, rootserver=10.0.2.2, rootpath=
[ 1.595401] nameserver0=10.0.2.3
[ 1.597725] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 1.602591] kworker/u4:0 (52) used greatest stack depth: 14984 bytes left
[ 1.608227] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 1.608830] Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
[ 1.609529] ALSA device list:
[ 1.610434] faux_driver regulatory: Direct firmware load for regulatory.db failed with error -2
[ 1.610763] No soundcards found.
[ 1.611624] cfg80211: failed to load regulatory.db
[ 1.654753] Freeing unused kernel image (initmem) memory: 2820K
[ 1.655087] Write protecting the kernel read-only data: 28672k
[ 1.656316] Freeing unused kernel image (text/rodata gap) memory: 1152K
[ 1.657270] Freeing unused kernel image (rodata/data gap) memory: 764K
[ 1.760321] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[ 1.760604] Run /init as init process
[ 1.812780] busybox (55) used greatest stack depth: 13176 bytes left
/bin/sh: can't access tty; job control turned off
~ # [ 1.864566] tsc: Refined TSC clocksource calibration: 4691.230 MHz
[ 1.864985] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x439f0fa1a4e, max_idle_ns: 440795286966 ns
[ 1.865274] clocksource: Switched to clocksource tsc
~ #
~ # uname -a
Linux 10.0.2.15 6.18.5-96703-ge30930a6ddb3 #14 SMP PREEMPT_DYNAMIC Sun Apr 19 13:23:30 EDT 2026 x86_64 GNU/Linux
Nice, now this can be further customised for cluster nodes, or testing new kernel releases and it needs to be given a suitably cheesy name.