# # Nano Kernel Configuration - Minimal Linux for Research Stack Appliance # Target: RackNerd VPS (x86_64, VirtIO) # Size: ~3-5MB compressed kernel + ~30MB initramfs # # Based on: Linux 6.12.x with embedded toolchain support # Toolchain: musl libc, static linking preferred # # Essential config CONFIG_64BIT=y CONFIG_X86_64=y CONFIG_SMP=y CONFIG_SMP=y CONFIG_NR_CPUS=8 CONFIG_SCHED_SMT=y # Minimal kernel features CONFIG_EXPERT=y CONFIG_EMBEDDED=y # Disable unnecessary subsystems # (these save ~10MB+ of kernel size) CONFIG_MODULES=n CONFIG_MODULE_UNLOAD=n CONFIG_KALLSYMS=n CONFIG_KALLSYMS_ALL=n CONFIG_SWAP=n CONFIG_SYSVIPC=n CONFIG_POSIX_MQUEUE=n CONFIG_CROSS_MEMORY_ATTACH=n CONFIG_USELIB=n CONFIG_AUDIT=n # Block layer - minimal CONFIG_BLOCK=y CONFIG_BLK_DEV=y CONFIG_BLK_MQ_PCI=y CONFIG_BLK_MQ_VIRTIO=y # Filesystems - only ext4 and tmpfs CONFIG_EXT4_FS=y CONFIG_EXT4_USE_FOR_EXT2=y CONFIG_TMPFS=y CONFIG_PROC_FS=y CONFIG_SYSFS=y CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y # Networking - minimal TCP/IP stack CONFIG_NET=y CONFIG_INET=y CONFIG_NETDEVICES=y CONFIG_NET_CORE=y CONFIG_NET_FOU=n CONFIG_NET_FOU_IP_TUNNELS=n # VirtIO drivers (for RackNerd VPS) CONFIG_VIRTIO=y CONFIG_VIRTIO_PCI=y CONFIG_VIRTIO_NET=y CONFIG_VIRTIO_BLK=y CONFIG_VIRTIO_CONSOLE=y CONFIG_VIRTIO_INPUT=y # Block devices CONFIG_BLK_MQ_PCI=y CONFIG_VIRTIO_BLK_SCSI=n # Console/TTY CONFIG_TTY=y CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y # kexec support (to go back to full kernel if needed) CONFIG_KEXEC=y CONFIG_KEXEC_FILE=y CONFIG_CRASH_DUMP=n # No graphics, no sound CONFIG_FB=n CONFIG_VGA_CONSOLE=n CONFIG_VT_HW_CONSOLE_BINDING=n CONFIG_DRM=n CONFIG_SOUND=n CONFIG_SND=n # No wireless, minimal USB if any CONFIG_WIRELESS=n CONFIG_CFG80211=n CONFIG_MAC80211=n CONFIG_USB=n CONFIG_USB_SUPPORT=n CONFIG_USB_XHCI_HCD=n # Minimal power management CONFIG_PM=n CONFIG_CPU_FREQ=n CONFIG_CPU_IDLE=n # Security - minimal CONFIG_SECURITY=n CONFIG_SECURITY_SELINUX=n CONFIG_SECURITY_APPARMOR=n CONFIG_SECURITY_SMACK=n CONFIG_SECURITY_TOMOYO=n # Crypto - only what's needed for networking CONFIG_CRYPTO=y CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_AES=y # Debugging - none in production CONFIG_DEBUG_KERNEL=n CONFIG_DEBUG_FS=n CONFIG_DYNAMIC_DEBUG=n CONFIG_DEBUG_MISC=n # Compression for kernel CONFIG_KERNEL_GZIP=y # CONFIG_KERNEL_BZIP2 is not set # CONFIG_KERNEL_LZMA is not set # CONFIG_KERNEL_XZ is not set # CONFIG_KERNEL_LZO is not set # CONFIG_KERNEL_LZ4 is not set # CONFIG_KERNEL_ZSTD is not set # Initramfs support CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_RD_GZIP=y CONFIG_RD_BZIP2=n CONFIG_RD_LZMA=n CONFIG_RD_XZ=n CONFIG_RD_LZO=n CONFIG_RD_LZ4=n CONFIG_RD_ZSTD=n # Shell options (for init) CONFIG_BINFMT_ELF=y CONFIG_BINFMT_SCRIPT=y # No cgroups (minimal system) CONFIG_CGROUPS=n CONFIG_CGROUP_SCHED=n CONFIG_CGROUP_PIDS=n CONFIG_CGROUP_RDMA=n CONFIG_CGROUP_FREEZER=n CONFIG_CGROUP_DEVICE=n CONFIG_CGROUP_CPUACCT=n CONFIG_CGROUP_PERF=n CONFIG_CGROUP_BPF=n # No namespaces (single appliance) CONFIG_NAMESPACES=n CONFIG_UTS_NS=n CONFIG_IPC_NS=n CONFIG_USER_NS=n CONFIG_PID_NS=n CONFIG_NET_NS=n # Memory - minimal CONFIG_FLATMEM_MANUAL=y CONFIG_SPARSEMEM_MANUAL=n CONFIG_MEMORY_HOTPLUG=n CONFIG_MEMORY_HOTREMOVE=n # Disable huge pages (save memory) CONFIG_TRANSPARENT_HUGEPAGE=n CONFIG_HUGETLBFS=n # Timer - minimal CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ=y CONFIG_NO_HZ_IDLE=y CONFIG_HIGH_RES_TIMERS=y # Performance monitoring - minimal CONFIG_PERF_EVENTS=n # Tracing - disabled CONFIG_FTRACE=n CONFIG_TRACING=n CONFIG_PROBE_EVENTS=n # Dynamic device management CONFIG_UEVENT_HELPER=y CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"