├── README.md ├── floppy-linux.img ├── init.c ├── kernel-config ├── main.pdf ├── main.tex └── rootfs.cpio /README.md: -------------------------------------------------------------------------------- 1 | # floppy-linux 2 | 3 | Slides + image for the 19. Sesja Linuksowa talk: "Can we boot Linux from just a floppy?" 4 | 5 | ## TO-DO 6 | 7 | The process of creating this project was very chaotic and I have not yet found time to write down proper setup and build instructions. 8 | 9 | ``` 10 | % qemu-system-i386 -fda floppy-linux.img -enable-kvm -m 70 11 | ``` 12 | -------------------------------------------------------------------------------- /floppy-linux.img: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kspalaiologos/floppy-linux/79de444bec1d80eeac0c6df37d22882dc3391c38/floppy-linux.img -------------------------------------------------------------------------------- /init.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | int main(int argc, char *argv[]) { 8 | pid_t pid = fork(); 9 | if (pid == 0) { 10 | char * args[] = { "/bin/busybox", "--install", "-s", NULL }; 11 | execv(args[0], args); 12 | perror("execv failed"), exit(1); 13 | } else if (pid < 0) 14 | perror("fork failed"), exit(1); 15 | int status; waitpid(pid, &status, 0); 16 | if (!WIFEXITED(status)) 17 | perror("waitpid"), exit(1); 18 | if (mount("none", "/dev", "devtmpfs", 0, "")) perror("mount"), exit(1); 19 | if (mount("none", "/proc", "proc", 0, "")) perror("mount"), exit(1); 20 | if (mount("none", "/sys", "sysfs", 0, "")) perror("mount"), exit(1); 21 | // /bin/init is dmesg -n 1;exec sh 22 | char * args[] = { "/bin/busybox", "sh", "/bin/init", NULL }; 23 | execv(args[0], args); perror("execv"); exit(1); 24 | } -------------------------------------------------------------------------------- /kernel-config: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated file; DO NOT EDIT. 3 | # Linux/x86 6.13.8 Kernel Configuration 4 | # 5 | CONFIG_CC_VERSION_TEXT="i486-linux-musl-gcc (GCC) 9.4.0" 6 | CONFIG_CC_IS_GCC=y 7 | CONFIG_GCC_VERSION=90400 8 | CONFIG_CLANG_VERSION=0 9 | CONFIG_AS_IS_GNU=y 10 | CONFIG_AS_VERSION=23301 11 | CONFIG_LD_IS_BFD=y 12 | CONFIG_LD_VERSION=23301 13 | CONFIG_LLD_VERSION=0 14 | CONFIG_RUSTC_VERSION=108600 15 | CONFIG_RUSTC_LLVM_VERSION=190106 16 | CONFIG_CC_CAN_LINK=y 17 | CONFIG_CC_CAN_LINK_STATIC=y 18 | CONFIG_GCC_ASM_GOTO_OUTPUT_BROKEN=y 19 | CONFIG_CC_HAS_ASM_INLINE=y 20 | CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y 21 | CONFIG_PAHOLE_VERSION=0 22 | CONFIG_IRQ_WORK=y 23 | CONFIG_BUILDTIME_TABLE_SORT=y 24 | CONFIG_THREAD_INFO_IN_TASK=y 25 | 26 | # 27 | # General setup 28 | # 29 | CONFIG_BROKEN_ON_SMP=y 30 | CONFIG_INIT_ENV_ARG_LIMIT=32 31 | # CONFIG_COMPILE_TEST is not set 32 | # CONFIG_WERROR is not set 33 | CONFIG_LOCALVERSION="" 34 | # CONFIG_LOCALVERSION_AUTO is not set 35 | CONFIG_BUILD_SALT="" 36 | CONFIG_HAVE_KERNEL_GZIP=y 37 | CONFIG_HAVE_KERNEL_BZIP2=y 38 | CONFIG_HAVE_KERNEL_LZMA=y 39 | CONFIG_HAVE_KERNEL_XZ=y 40 | CONFIG_HAVE_KERNEL_LZO=y 41 | CONFIG_HAVE_KERNEL_LZ4=y 42 | CONFIG_HAVE_KERNEL_ZSTD=y 43 | # CONFIG_KERNEL_GZIP is not set 44 | # CONFIG_KERNEL_BZIP2 is not set 45 | # CONFIG_KERNEL_LZMA is not set 46 | CONFIG_KERNEL_XZ=y 47 | # CONFIG_KERNEL_LZO is not set 48 | # CONFIG_KERNEL_LZ4 is not set 49 | # CONFIG_KERNEL_ZSTD is not set 50 | CONFIG_DEFAULT_INIT="" 51 | CONFIG_DEFAULT_HOSTNAME="sesjalinux" 52 | # CONFIG_SYSVIPC is not set 53 | # CONFIG_POSIX_MQUEUE is not set 54 | # CONFIG_WATCH_QUEUE is not set 55 | # CONFIG_CROSS_MEMORY_ATTACH is not set 56 | # CONFIG_USELIB is not set 57 | # CONFIG_AUDIT is not set 58 | CONFIG_HAVE_ARCH_AUDITSYSCALL=y 59 | 60 | # 61 | # IRQ subsystem 62 | # 63 | CONFIG_GENERIC_IRQ_PROBE=y 64 | CONFIG_GENERIC_IRQ_SHOW=y 65 | CONFIG_HARDIRQS_SW_RESEND=y 66 | CONFIG_GENERIC_IRQ_RESERVATION_MODE=y 67 | CONFIG_IRQ_FORCED_THREADING=y 68 | CONFIG_SPARSE_IRQ=y 69 | # end of IRQ subsystem 70 | 71 | CONFIG_CLOCKSOURCE_WATCHDOG=y 72 | CONFIG_ARCH_CLOCKSOURCE_INIT=y 73 | CONFIG_GENERIC_TIME_VSYSCALL=y 74 | CONFIG_GENERIC_CLOCKEVENTS=y 75 | CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y 76 | CONFIG_GENERIC_CMOS_UPDATE=y 77 | CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y 78 | 79 | # 80 | # Timers subsystem 81 | # 82 | CONFIG_HZ_PERIODIC=y 83 | # CONFIG_NO_HZ_IDLE is not set 84 | # CONFIG_NO_HZ is not set 85 | # CONFIG_HIGH_RES_TIMERS is not set 86 | CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=125 87 | # end of Timers subsystem 88 | 89 | CONFIG_BPF=y 90 | CONFIG_HAVE_EBPF_JIT=y 91 | 92 | # 93 | # BPF subsystem 94 | # 95 | # CONFIG_BPF_SYSCALL is not set 96 | # CONFIG_BPF_JIT is not set 97 | # end of BPF subsystem 98 | 99 | CONFIG_PREEMPT_NONE_BUILD=y 100 | CONFIG_ARCH_HAS_PREEMPT_LAZY=y 101 | CONFIG_PREEMPT_NONE=y 102 | # CONFIG_PREEMPT_VOLUNTARY is not set 103 | # CONFIG_PREEMPT is not set 104 | # CONFIG_PREEMPT_LAZY is not set 105 | # CONFIG_PREEMPT_RT is not set 106 | # CONFIG_PREEMPT_DYNAMIC is not set 107 | 108 | # 109 | # CPU/Task time and stats accounting 110 | # 111 | CONFIG_TICK_CPU_ACCOUNTING=y 112 | # CONFIG_IRQ_TIME_ACCOUNTING is not set 113 | # CONFIG_PSI is not set 114 | # end of CPU/Task time and stats accounting 115 | 116 | # 117 | # RCU Subsystem 118 | # 119 | CONFIG_TINY_RCU=y 120 | # CONFIG_RCU_EXPERT is not set 121 | CONFIG_TINY_SRCU=y 122 | # end of RCU Subsystem 123 | 124 | # CONFIG_IKCONFIG is not set 125 | # CONFIG_IKHEADERS is not set 126 | CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y 127 | 128 | # 129 | # Scheduler features 130 | # 131 | # end of Scheduler features 132 | 133 | CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y 134 | CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" 135 | CONFIG_GCC10_NO_ARRAY_BOUNDS=y 136 | CONFIG_CC_NO_ARRAY_BOUNDS=y 137 | CONFIG_GCC_NO_STRINGOP_OVERFLOW=y 138 | CONFIG_CC_NO_STRINGOP_OVERFLOW=y 139 | # CONFIG_CGROUPS is not set 140 | # CONFIG_CHECKPOINT_RESTORE is not set 141 | # CONFIG_SCHED_AUTOGROUP is not set 142 | # CONFIG_RELAY is not set 143 | CONFIG_BLK_DEV_INITRD=y 144 | CONFIG_INITRAMFS_SOURCE="../../rootfs.cpio" 145 | CONFIG_INITRAMFS_ROOT_UID=0 146 | CONFIG_INITRAMFS_ROOT_GID=0 147 | # CONFIG_RD_GZIP is not set 148 | # CONFIG_RD_BZIP2 is not set 149 | # CONFIG_RD_LZMA is not set 150 | # CONFIG_RD_XZ is not set 151 | # CONFIG_RD_LZO is not set 152 | # CONFIG_RD_LZ4 is not set 153 | # CONFIG_RD_ZSTD is not set 154 | CONFIG_INITRAMFS_COMPRESSION_NONE=y 155 | # CONFIG_BOOT_CONFIG is not set 156 | CONFIG_INITRAMFS_PRESERVE_MTIME=y 157 | # CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set 158 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y 159 | CONFIG_LD_ORPHAN_WARN=y 160 | CONFIG_LD_ORPHAN_WARN_LEVEL="warn" 161 | CONFIG_HAVE_UID16=y 162 | CONFIG_SYSCTL_EXCEPTION_TRACE=y 163 | CONFIG_HAVE_PCSPKR_PLATFORM=y 164 | CONFIG_EXPERT=y 165 | # CONFIG_MULTIUSER is not set 166 | # CONFIG_SGETMASK_SYSCALL is not set 167 | # CONFIG_SYSFS_SYSCALL is not set 168 | # CONFIG_FHANDLE is not set 169 | # CONFIG_POSIX_TIMERS is not set 170 | # CONFIG_PRINTK is not set 171 | # CONFIG_BUG is not set 172 | # CONFIG_PCSPKR_PLATFORM is not set 173 | CONFIG_BASE_SMALL=y 174 | # CONFIG_FUTEX is not set 175 | # CONFIG_EPOLL is not set 176 | # CONFIG_SIGNALFD is not set 177 | # CONFIG_TIMERFD is not set 178 | # CONFIG_EVENTFD is not set 179 | # CONFIG_SHMEM is not set 180 | # CONFIG_AIO is not set 181 | # CONFIG_IO_URING is not set 182 | # CONFIG_ADVISE_SYSCALLS is not set 183 | CONFIG_MEMBARRIER=y 184 | # CONFIG_KCMP is not set 185 | # CONFIG_RSEQ is not set 186 | # CONFIG_CACHESTAT_SYSCALL is not set 187 | # CONFIG_PC104 is not set 188 | # CONFIG_KALLSYMS is not set 189 | CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y 190 | CONFIG_HAVE_PERF_EVENTS=y 191 | 192 | # 193 | # Kernel Performance Events And Counters 194 | # 195 | CONFIG_PERF_EVENTS=y 196 | # CONFIG_DEBUG_PERF_USE_VMALLOC is not set 197 | # end of Kernel Performance Events And Counters 198 | 199 | # CONFIG_PROFILING is not set 200 | 201 | # 202 | # Kexec and crash features 203 | # 204 | # CONFIG_KEXEC is not set 205 | # end of Kexec and crash features 206 | # end of General setup 207 | 208 | # CONFIG_64BIT is not set 209 | CONFIG_X86_32=y 210 | CONFIG_X86=y 211 | CONFIG_INSTRUCTION_DECODER=y 212 | CONFIG_OUTPUT_FORMAT="elf32-i386" 213 | CONFIG_LOCKDEP_SUPPORT=y 214 | CONFIG_STACKTRACE_SUPPORT=y 215 | CONFIG_MMU=y 216 | CONFIG_ARCH_MMAP_RND_BITS_MIN=8 217 | CONFIG_ARCH_MMAP_RND_BITS_MAX=16 218 | CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 219 | CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 220 | CONFIG_GENERIC_ISA_DMA=y 221 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y 222 | CONFIG_GENERIC_CALIBRATE_DELAY=y 223 | CONFIG_ARCH_HAS_CPU_RELAX=y 224 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y 225 | CONFIG_ARCH_SUSPEND_POSSIBLE=y 226 | CONFIG_ARCH_SUPPORTS_UPROBES=y 227 | CONFIG_FIX_EARLYCON_MEM=y 228 | CONFIG_PGTABLE_LEVELS=2 229 | CONFIG_CC_HAS_SANE_STACKPROTECTOR=y 230 | 231 | # 232 | # Processor type and features 233 | # 234 | # CONFIG_SMP is not set 235 | # CONFIG_X86_CPU_RESCTRL is not set 236 | # CONFIG_X86_EXTENDED_PLATFORM is not set 237 | # CONFIG_IOSF_MBI is not set 238 | # CONFIG_X86_32_IRIS is not set 239 | # CONFIG_SCHED_OMIT_FRAME_POINTER is not set 240 | # CONFIG_HYPERVISOR_GUEST is not set 241 | # CONFIG_M486SX is not set 242 | CONFIG_M486=y 243 | # CONFIG_M586 is not set 244 | # CONFIG_M586TSC is not set 245 | # CONFIG_M586MMX is not set 246 | # CONFIG_M686 is not set 247 | # CONFIG_MPENTIUMII is not set 248 | # CONFIG_MPENTIUMIII is not set 249 | # CONFIG_MPENTIUMM is not set 250 | # CONFIG_MPENTIUM4 is not set 251 | # CONFIG_MK6 is not set 252 | # CONFIG_MK7 is not set 253 | # CONFIG_MK8 is not set 254 | # CONFIG_MCRUSOE is not set 255 | # CONFIG_MEFFICEON is not set 256 | # CONFIG_MWINCHIPC6 is not set 257 | # CONFIG_MWINCHIP3D is not set 258 | # CONFIG_MELAN is not set 259 | # CONFIG_MGEODEGX1 is not set 260 | # CONFIG_MGEODE_LX is not set 261 | # CONFIG_MCYRIXIII is not set 262 | # CONFIG_MVIAC3_2 is not set 263 | # CONFIG_MVIAC7 is not set 264 | # CONFIG_MCORE2 is not set 265 | # CONFIG_MATOM is not set 266 | # CONFIG_X86_GENERIC is not set 267 | CONFIG_X86_INTERNODE_CACHE_SHIFT=4 268 | CONFIG_X86_L1_CACHE_SHIFT=4 269 | CONFIG_X86_F00F_BUG=y 270 | CONFIG_X86_INVD_BUG=y 271 | CONFIG_X86_ALIGNMENT_16=y 272 | CONFIG_X86_MINIMUM_CPU_FAMILY=4 273 | CONFIG_IA32_FEAT_CTL=y 274 | CONFIG_X86_VMX_FEATURE_NAMES=y 275 | CONFIG_PROCESSOR_SELECT=y 276 | CONFIG_CPU_SUP_INTEL=y 277 | # CONFIG_CPU_SUP_CYRIX_32 is not set 278 | # CONFIG_CPU_SUP_AMD is not set 279 | # CONFIG_CPU_SUP_HYGON is not set 280 | # CONFIG_CPU_SUP_CENTAUR is not set 281 | # CONFIG_CPU_SUP_TRANSMETA_32 is not set 282 | # CONFIG_CPU_SUP_UMC_32 is not set 283 | # CONFIG_CPU_SUP_ZHAOXIN is not set 284 | # CONFIG_CPU_SUP_VORTEX_32 is not set 285 | # CONFIG_HPET_TIMER is not set 286 | # CONFIG_DMI is not set 287 | CONFIG_NR_CPUS_RANGE_BEGIN=1 288 | CONFIG_NR_CPUS_RANGE_END=1 289 | CONFIG_NR_CPUS_DEFAULT=1 290 | CONFIG_NR_CPUS=1 291 | # CONFIG_X86_UP_APIC is not set 292 | # CONFIG_X86_MCE is not set 293 | 294 | # 295 | # Performance monitoring 296 | # 297 | CONFIG_PERF_EVENTS_INTEL_UNCORE=y 298 | CONFIG_PERF_EVENTS_INTEL_RAPL=y 299 | CONFIG_PERF_EVENTS_INTEL_CSTATE=y 300 | # end of Performance monitoring 301 | 302 | # CONFIG_X86_LEGACY_VM86 is not set 303 | # CONFIG_X86_IOPL_IOPERM is not set 304 | # CONFIG_TOSHIBA is not set 305 | # CONFIG_X86_REBOOTFIXUPS is not set 306 | CONFIG_MICROCODE=y 307 | CONFIG_MICROCODE_INITRD32=y 308 | # CONFIG_X86_MSR is not set 309 | # CONFIG_X86_CPUID is not set 310 | CONFIG_NOHIGHMEM=y 311 | # CONFIG_HIGHMEM4G is not set 312 | # CONFIG_VMSPLIT_3G is not set 313 | # CONFIG_VMSPLIT_3G_OPT is not set 314 | # CONFIG_VMSPLIT_2G is not set 315 | CONFIG_VMSPLIT_2G_OPT=y 316 | # CONFIG_VMSPLIT_1G is not set 317 | CONFIG_PAGE_OFFSET=0x78000000 318 | CONFIG_ARCH_FLATMEM_ENABLE=y 319 | CONFIG_ARCH_SPARSEMEM_ENABLE=y 320 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y 321 | CONFIG_ILLEGAL_POINTER_VALUE=0 322 | # CONFIG_X86_CHECK_BIOS_CORRUPTION is not set 323 | # CONFIG_MTRR is not set 324 | # CONFIG_X86_UMIP is not set 325 | CONFIG_CC_HAS_IBT=y 326 | CONFIG_ARCH_PKEY_BITS=4 327 | CONFIG_X86_INTEL_TSX_MODE_OFF=y 328 | # CONFIG_X86_INTEL_TSX_MODE_ON is not set 329 | # CONFIG_X86_INTEL_TSX_MODE_AUTO is not set 330 | CONFIG_HZ_100=y 331 | # CONFIG_HZ_250 is not set 332 | # CONFIG_HZ_300 is not set 333 | # CONFIG_HZ_1000 is not set 334 | CONFIG_HZ=100 335 | CONFIG_ARCH_SUPPORTS_KEXEC=y 336 | CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY=y 337 | CONFIG_ARCH_SUPPORTS_KEXEC_SIG=y 338 | CONFIG_ARCH_SUPPORTS_KEXEC_SIG_FORCE=y 339 | CONFIG_ARCH_SUPPORTS_KEXEC_BZIMAGE_VERIFY_SIG=y 340 | CONFIG_ARCH_SUPPORTS_KEXEC_JUMP=y 341 | CONFIG_ARCH_DEFAULT_CRASH_DUMP=y 342 | CONFIG_ARCH_SUPPORTS_CRASH_HOTPLUG=y 343 | CONFIG_PHYSICAL_START=0x100000 344 | # CONFIG_RELOCATABLE is not set 345 | CONFIG_PHYSICAL_ALIGN=0x100000 346 | # CONFIG_COMPAT_VDSO is not set 347 | # CONFIG_CMDLINE_BOOL is not set 348 | # CONFIG_MODIFY_LDT_SYSCALL is not set 349 | # CONFIG_STRICT_SIGALTSTACK_SIZE is not set 350 | CONFIG_X86_BUS_LOCK_DETECT=y 351 | # end of Processor type and features 352 | 353 | CONFIG_CC_HAS_NAMED_AS=y 354 | CONFIG_USE_X86_SEG_SUPPORT=y 355 | CONFIG_CC_HAS_RETURN_THUNK=y 356 | CONFIG_CC_HAS_ENTRY_PADDING=y 357 | CONFIG_FUNCTION_PADDING_CFI=11 358 | CONFIG_FUNCTION_PADDING_BYTES=16 359 | # CONFIG_CPU_MITIGATIONS is not set 360 | 361 | # 362 | # Power management and ACPI options 363 | # 364 | # CONFIG_SUSPEND is not set 365 | # CONFIG_PM is not set 366 | CONFIG_ARCH_SUPPORTS_ACPI=y 367 | # CONFIG_ACPI is not set 368 | 369 | # 370 | # CPU Frequency scaling 371 | # 372 | # CONFIG_CPU_FREQ is not set 373 | # end of CPU Frequency scaling 374 | 375 | # 376 | # CPU Idle 377 | # 378 | # CONFIG_CPU_IDLE is not set 379 | # end of CPU Idle 380 | # end of Power management and ACPI options 381 | 382 | # 383 | # Bus options (PCI etc.) 384 | # 385 | # CONFIG_PCI_GOBIOS is not set 386 | # CONFIG_PCI_GOMMCONFIG is not set 387 | # CONFIG_PCI_GODIRECT is not set 388 | CONFIG_PCI_GOANY=y 389 | CONFIG_PCI_BIOS=y 390 | CONFIG_PCI_DIRECT=y 391 | # CONFIG_PCI_CNB20LE_QUIRK is not set 392 | CONFIG_ISA_BUS=y 393 | CONFIG_ISA_DMA_API=y 394 | CONFIG_ISA=y 395 | # CONFIG_SCx200 is not set 396 | # CONFIG_OLPC is not set 397 | # CONFIG_ALIX is not set 398 | # CONFIG_NET5501 is not set 399 | # end of Bus options (PCI etc.) 400 | 401 | # 402 | # Binary Emulations 403 | # 404 | CONFIG_COMPAT_32=y 405 | # end of Binary Emulations 406 | 407 | CONFIG_HAVE_ATOMIC_IOMAP=y 408 | # CONFIG_VIRTUALIZATION is not set 409 | CONFIG_AS_AVX512=y 410 | CONFIG_AS_SHA1_NI=y 411 | CONFIG_AS_SHA256_NI=y 412 | CONFIG_AS_TPAUSE=y 413 | CONFIG_AS_GFNI=y 414 | CONFIG_AS_VAES=y 415 | CONFIG_AS_VPCLMULQDQ=y 416 | CONFIG_ARCH_CONFIGURES_CPU_MITIGATIONS=y 417 | 418 | # 419 | # General architecture-dependent options 420 | # 421 | CONFIG_GENERIC_ENTRY=y 422 | # CONFIG_KPROBES is not set 423 | CONFIG_JUMP_LABEL=y 424 | # CONFIG_STATIC_KEYS_SELFTEST is not set 425 | # CONFIG_STATIC_CALL_SELFTEST is not set 426 | CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 427 | CONFIG_ARCH_USE_BUILTIN_BSWAP=y 428 | CONFIG_HAVE_IOREMAP_PROT=y 429 | CONFIG_HAVE_KPROBES=y 430 | CONFIG_HAVE_KRETPROBES=y 431 | CONFIG_HAVE_OPTPROBES=y 432 | CONFIG_HAVE_KPROBES_ON_FTRACE=y 433 | CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y 434 | CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y 435 | CONFIG_HAVE_NMI=y 436 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y 437 | CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y 438 | CONFIG_HAVE_ARCH_TRACEHOOK=y 439 | CONFIG_HAVE_DMA_CONTIGUOUS=y 440 | CONFIG_GENERIC_SMP_IDLE_THREAD=y 441 | CONFIG_ARCH_HAS_FORTIFY_SOURCE=y 442 | CONFIG_ARCH_HAS_SET_MEMORY=y 443 | CONFIG_ARCH_HAS_SET_DIRECT_MAP=y 444 | CONFIG_ARCH_HAS_CPU_FINALIZE_INIT=y 445 | CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y 446 | CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y 447 | CONFIG_ARCH_WANTS_NO_INSTR=y 448 | CONFIG_ARCH_32BIT_OFF_T=y 449 | CONFIG_HAVE_ASM_MODVERSIONS=y 450 | CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y 451 | CONFIG_HAVE_RSEQ=y 452 | CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y 453 | CONFIG_HAVE_HW_BREAKPOINT=y 454 | CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y 455 | CONFIG_HAVE_USER_RETURN_NOTIFIER=y 456 | CONFIG_HAVE_PERF_EVENTS_NMI=y 457 | CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y 458 | CONFIG_HAVE_PERF_REGS=y 459 | CONFIG_HAVE_PERF_USER_STACK_DUMP=y 460 | CONFIG_HAVE_ARCH_JUMP_LABEL=y 461 | CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y 462 | CONFIG_MMU_GATHER_MERGE_VMAS=y 463 | CONFIG_MMU_LAZY_TLB_REFCOUNT=y 464 | CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y 465 | CONFIG_ARCH_HAVE_EXTRA_ELF_NOTES=y 466 | CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS=y 467 | CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y 468 | CONFIG_HAVE_CMPXCHG_LOCAL=y 469 | CONFIG_HAVE_CMPXCHG_DOUBLE=y 470 | CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y 471 | CONFIG_HAVE_ARCH_SECCOMP=y 472 | CONFIG_HAVE_ARCH_SECCOMP_FILTER=y 473 | # CONFIG_SECCOMP is not set 474 | CONFIG_HAVE_ARCH_STACKLEAK=y 475 | CONFIG_HAVE_STACKPROTECTOR=y 476 | # CONFIG_STACKPROTECTOR is not set 477 | CONFIG_ARCH_SUPPORTS_LTO_CLANG=y 478 | CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y 479 | CONFIG_LTO_NONE=y 480 | CONFIG_ARCH_SUPPORTS_AUTOFDO_CLANG=y 481 | CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y 482 | CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y 483 | CONFIG_HAVE_MOVE_PUD=y 484 | CONFIG_HAVE_MOVE_PMD=y 485 | CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y 486 | CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y 487 | CONFIG_HAVE_MOD_ARCH_SPECIFIC=y 488 | CONFIG_MODULES_USE_ELF_REL=y 489 | CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y 490 | CONFIG_SOFTIRQ_ON_OWN_STACK=y 491 | CONFIG_ARCH_HAS_ELF_RANDOMIZE=y 492 | CONFIG_HAVE_ARCH_MMAP_RND_BITS=y 493 | CONFIG_HAVE_EXIT_THREAD=y 494 | CONFIG_ARCH_MMAP_RND_BITS=8 495 | CONFIG_HAVE_PAGE_SIZE_4KB=y 496 | CONFIG_PAGE_SIZE_4KB=y 497 | CONFIG_PAGE_SIZE_LESS_THAN_64KB=y 498 | CONFIG_PAGE_SIZE_LESS_THAN_256KB=y 499 | CONFIG_PAGE_SHIFT=12 500 | CONFIG_ISA_BUS_API=y 501 | CONFIG_CLONE_BACKWARDS=y 502 | CONFIG_OLD_SIGSUSPEND3=y 503 | CONFIG_OLD_SIGACTION=y 504 | # CONFIG_COMPAT_32BIT_TIME is not set 505 | CONFIG_ARCH_SUPPORTS_RT=y 506 | CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y 507 | # CONFIG_RANDOMIZE_KSTACK_OFFSET is not set 508 | CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y 509 | CONFIG_STRICT_KERNEL_RWX=y 510 | CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y 511 | CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y 512 | CONFIG_ARCH_HAS_MEM_ENCRYPT=y 513 | CONFIG_HAVE_STATIC_CALL=y 514 | CONFIG_HAVE_PREEMPT_DYNAMIC=y 515 | CONFIG_HAVE_PREEMPT_DYNAMIC_CALL=y 516 | CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y 517 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 518 | CONFIG_ARCH_SPLIT_ARG64=y 519 | CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y 520 | CONFIG_DYNAMIC_SIGFRAME=y 521 | CONFIG_ARCH_HAS_HW_PTE_YOUNG=y 522 | CONFIG_ARCH_HAS_KERNEL_FPU_SUPPORT=y 523 | 524 | # 525 | # GCOV-based kernel profiling 526 | # 527 | CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y 528 | # end of GCOV-based kernel profiling 529 | 530 | CONFIG_HAVE_GCC_PLUGINS=y 531 | # CONFIG_GCC_PLUGINS is not set 532 | CONFIG_FUNCTION_ALIGNMENT_4B=y 533 | CONFIG_FUNCTION_ALIGNMENT_16B=y 534 | CONFIG_FUNCTION_ALIGNMENT=16 535 | # end of General architecture-dependent options 536 | 537 | # CONFIG_MODULES is not set 538 | CONFIG_BLOCK=y 539 | # CONFIG_BLOCK_LEGACY_AUTOLOAD is not set 540 | CONFIG_BLK_DEV_BSG_COMMON=y 541 | # CONFIG_BLK_DEV_BSGLIB is not set 542 | # CONFIG_BLK_DEV_INTEGRITY is not set 543 | CONFIG_BLK_DEV_WRITE_MOUNTED=y 544 | # CONFIG_BLK_DEV_ZONED is not set 545 | # CONFIG_BLK_WBT is not set 546 | # CONFIG_BLK_INLINE_ENCRYPTION is not set 547 | 548 | # 549 | # Partition Types 550 | # 551 | # CONFIG_PARTITION_ADVANCED is not set 552 | CONFIG_MSDOS_PARTITION=y 553 | CONFIG_EFI_PARTITION=y 554 | # end of Partition Types 555 | 556 | CONFIG_BLK_MQ_PCI=y 557 | 558 | # 559 | # IO Schedulers 560 | # 561 | CONFIG_MQ_IOSCHED_DEADLINE=y 562 | CONFIG_MQ_IOSCHED_KYBER=y 563 | # CONFIG_IOSCHED_BFQ is not set 564 | # end of IO Schedulers 565 | 566 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y 567 | CONFIG_INLINE_READ_UNLOCK=y 568 | CONFIG_INLINE_READ_UNLOCK_IRQ=y 569 | CONFIG_INLINE_WRITE_UNLOCK=y 570 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y 571 | CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y 572 | CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y 573 | CONFIG_ARCH_USE_QUEUED_RWLOCKS=y 574 | CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y 575 | CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y 576 | CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y 577 | 578 | # 579 | # Executable file formats 580 | # 581 | CONFIG_BINFMT_ELF=y 582 | CONFIG_ELFCORE=y 583 | # CONFIG_BINFMT_SCRIPT is not set 584 | # CONFIG_BINFMT_MISC is not set 585 | # CONFIG_COREDUMP is not set 586 | # end of Executable file formats 587 | 588 | # 589 | # Memory Management options 590 | # 591 | # CONFIG_SWAP is not set 592 | 593 | # 594 | # Slab allocator options 595 | # 596 | CONFIG_SLUB=y 597 | CONFIG_SLUB_TINY=y 598 | CONFIG_SLAB_MERGE_DEFAULT=y 599 | # end of Slab allocator options 600 | 601 | # CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set 602 | CONFIG_COMPAT_BRK=y 603 | CONFIG_SELECT_MEMORY_MODEL=y 604 | CONFIG_FLATMEM_MANUAL=y 605 | # CONFIG_SPARSEMEM_MANUAL is not set 606 | CONFIG_FLATMEM=y 607 | CONFIG_SPARSEMEM_STATIC=y 608 | CONFIG_HAVE_GUP_FAST=y 609 | CONFIG_EXCLUSIVE_SYSTEM_RAM=y 610 | CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y 611 | # CONFIG_COMPACTION is not set 612 | # CONFIG_PAGE_REPORTING is not set 613 | CONFIG_PCP_BATCH_SCALE_MAX=5 614 | # CONFIG_KSM is not set 615 | CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 616 | CONFIG_ARCH_WANT_GENERAL_HUGETLB=y 617 | # CONFIG_TRANSPARENT_HUGEPAGE is not set 618 | CONFIG_NEED_PER_CPU_KM=y 619 | CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y 620 | CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y 621 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y 622 | # CONFIG_CMA is not set 623 | CONFIG_GENERIC_EARLY_IOREMAP=y 624 | # CONFIG_IDLE_PAGE_TRACKING is not set 625 | CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y 626 | CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y 627 | CONFIG_ARCH_HAS_ZONE_DMA_SET=y 628 | # CONFIG_ZONE_DMA is not set 629 | # CONFIG_VM_EVENT_COUNTERS is not set 630 | # CONFIG_PERCPU_STATS is not set 631 | 632 | # 633 | # GUP_TEST needs to have DEBUG_FS enabled 634 | # 635 | # CONFIG_DMAPOOL_TEST is not set 636 | CONFIG_ARCH_HAS_PTE_SPECIAL=y 637 | CONFIG_KMAP_LOCAL=y 638 | # CONFIG_MEMFD_CREATE is not set 639 | # CONFIG_SECRETMEM is not set 640 | # CONFIG_USERFAULTFD is not set 641 | # CONFIG_LRU_GEN is not set 642 | CONFIG_LOCK_MM_AND_FIND_VMA=y 643 | 644 | # 645 | # Data Access Monitoring 646 | # 647 | # CONFIG_DAMON is not set 648 | # end of Data Access Monitoring 649 | # end of Memory Management options 650 | 651 | CONFIG_NET=y 652 | 653 | # 654 | # Networking options 655 | # 656 | CONFIG_PACKET=y 657 | # CONFIG_PACKET_DIAG is not set 658 | CONFIG_UNIX=y 659 | CONFIG_AF_UNIX_OOB=y 660 | # CONFIG_UNIX_DIAG is not set 661 | # CONFIG_TLS is not set 662 | # CONFIG_XFRM_USER is not set 663 | # CONFIG_NET_KEY is not set 664 | CONFIG_INET=y 665 | # CONFIG_IP_MULTICAST is not set 666 | # CONFIG_IP_ADVANCED_ROUTER is not set 667 | # CONFIG_IP_PNP is not set 668 | # CONFIG_NET_IPIP is not set 669 | # CONFIG_NET_IPGRE_DEMUX is not set 670 | # CONFIG_SYN_COOKIES is not set 671 | # CONFIG_NET_IPVTI is not set 672 | # CONFIG_NET_FOU is not set 673 | # CONFIG_INET_AH is not set 674 | # CONFIG_INET_ESP is not set 675 | # CONFIG_INET_IPCOMP is not set 676 | CONFIG_INET_TABLE_PERTURB_ORDER=16 677 | CONFIG_INET_DIAG=y 678 | CONFIG_INET_TCP_DIAG=y 679 | # CONFIG_INET_UDP_DIAG is not set 680 | # CONFIG_INET_RAW_DIAG is not set 681 | # CONFIG_INET_DIAG_DESTROY is not set 682 | # CONFIG_TCP_CONG_ADVANCED is not set 683 | CONFIG_TCP_CONG_CUBIC=y 684 | CONFIG_DEFAULT_TCP_CONG="cubic" 685 | # CONFIG_TCP_MD5SIG is not set 686 | # CONFIG_IPV6 is not set 687 | # CONFIG_MPTCP is not set 688 | # CONFIG_NETWORK_SECMARK is not set 689 | # CONFIG_NETWORK_PHY_TIMESTAMPING is not set 690 | # CONFIG_NETFILTER is not set 691 | # CONFIG_IP_DCCP is not set 692 | # CONFIG_IP_SCTP is not set 693 | # CONFIG_RDS is not set 694 | # CONFIG_TIPC is not set 695 | # CONFIG_ATM is not set 696 | # CONFIG_L2TP is not set 697 | # CONFIG_BRIDGE is not set 698 | # CONFIG_NET_DSA is not set 699 | # CONFIG_VLAN_8021Q is not set 700 | # CONFIG_LLC2 is not set 701 | # CONFIG_ATALK is not set 702 | # CONFIG_X25 is not set 703 | # CONFIG_LAPB is not set 704 | # CONFIG_PHONET is not set 705 | # CONFIG_IEEE802154 is not set 706 | # CONFIG_NET_SCHED is not set 707 | # CONFIG_DCB is not set 708 | # CONFIG_BATMAN_ADV is not set 709 | # CONFIG_OPENVSWITCH is not set 710 | # CONFIG_VSOCKETS is not set 711 | # CONFIG_NETLINK_DIAG is not set 712 | # CONFIG_MPLS is not set 713 | # CONFIG_NET_NSH is not set 714 | # CONFIG_HSR is not set 715 | # CONFIG_NET_SWITCHDEV is not set 716 | # CONFIG_NET_L3_MASTER_DEV is not set 717 | # CONFIG_QRTR is not set 718 | # CONFIG_NET_NCSI is not set 719 | CONFIG_MAX_SKB_FRAGS=17 720 | CONFIG_NET_RX_BUSY_POLL=y 721 | CONFIG_BQL=y 722 | 723 | # 724 | # Network testing 725 | # 726 | # CONFIG_NET_PKTGEN is not set 727 | # end of Network testing 728 | # end of Networking options 729 | 730 | # CONFIG_HAMRADIO is not set 731 | # CONFIG_CAN is not set 732 | # CONFIG_BT is not set 733 | # CONFIG_AF_RXRPC is not set 734 | # CONFIG_AF_KCM is not set 735 | # CONFIG_MCTP is not set 736 | # CONFIG_WIRELESS is not set 737 | # CONFIG_RFKILL is not set 738 | # CONFIG_NET_9P is not set 739 | # CONFIG_CAIF is not set 740 | # CONFIG_CEPH_LIB is not set 741 | # CONFIG_NFC is not set 742 | # CONFIG_PSAMPLE is not set 743 | # CONFIG_NET_IFE is not set 744 | # CONFIG_LWTUNNEL is not set 745 | # CONFIG_FAILOVER is not set 746 | # CONFIG_ETHTOOL_NETLINK is not set 747 | 748 | # 749 | # Device Drivers 750 | # 751 | CONFIG_HAVE_EISA=y 752 | # CONFIG_EISA is not set 753 | CONFIG_HAVE_PCI=y 754 | CONFIG_GENERIC_PCI_IOMAP=y 755 | CONFIG_PCI=y 756 | CONFIG_PCI_DOMAINS=y 757 | # CONFIG_PCIEPORTBUS is not set 758 | # CONFIG_PCIEASPM is not set 759 | # CONFIG_PCIE_PTM is not set 760 | # CONFIG_PCI_MSI is not set 761 | # CONFIG_PCI_QUIRKS is not set 762 | # CONFIG_PCI_DEBUG is not set 763 | # CONFIG_PCI_STUB is not set 764 | CONFIG_PCI_LOCKLESS_CONFIG=y 765 | # CONFIG_PCI_IOV is not set 766 | # CONFIG_PCI_PRI is not set 767 | # CONFIG_PCI_PASID is not set 768 | # CONFIG_PCIE_TPH is not set 769 | # CONFIG_PCIE_BUS_TUNE_OFF is not set 770 | CONFIG_PCIE_BUS_DEFAULT=y 771 | # CONFIG_PCIE_BUS_SAFE is not set 772 | # CONFIG_PCIE_BUS_PERFORMANCE is not set 773 | # CONFIG_PCIE_BUS_PEER2PEER is not set 774 | CONFIG_VGA_ARB=y 775 | CONFIG_VGA_ARB_MAX_GPUS=16 776 | # CONFIG_HOTPLUG_PCI is not set 777 | 778 | # 779 | # PCI controller drivers 780 | # 781 | 782 | # 783 | # Cadence-based PCIe controllers 784 | # 785 | # end of Cadence-based PCIe controllers 786 | 787 | # 788 | # DesignWare-based PCIe controllers 789 | # 790 | # end of DesignWare-based PCIe controllers 791 | 792 | # 793 | # Mobiveil-based PCIe controllers 794 | # 795 | # end of Mobiveil-based PCIe controllers 796 | 797 | # 798 | # PLDA-based PCIe controllers 799 | # 800 | # end of PLDA-based PCIe controllers 801 | # end of PCI controller drivers 802 | 803 | # 804 | # PCI Endpoint 805 | # 806 | # CONFIG_PCI_ENDPOINT is not set 807 | # end of PCI Endpoint 808 | 809 | # 810 | # PCI switch controller drivers 811 | # 812 | # CONFIG_PCI_SW_SWITCHTEC is not set 813 | # end of PCI switch controller drivers 814 | 815 | # CONFIG_CXL_BUS is not set 816 | # CONFIG_PCCARD is not set 817 | # CONFIG_RAPIDIO is not set 818 | 819 | # 820 | # Generic Driver Options 821 | # 822 | # CONFIG_UEVENT_HELPER is not set 823 | CONFIG_DEVTMPFS=y 824 | # CONFIG_DEVTMPFS_MOUNT is not set 825 | # CONFIG_DEVTMPFS_SAFE is not set 826 | CONFIG_STANDALONE=y 827 | CONFIG_PREVENT_FIRMWARE_BUILD=y 828 | 829 | # 830 | # Firmware loader 831 | # 832 | CONFIG_FW_LOADER=y 833 | CONFIG_EXTRA_FIRMWARE="" 834 | # CONFIG_FW_LOADER_USER_HELPER is not set 835 | # CONFIG_FW_LOADER_COMPRESS is not set 836 | # CONFIG_FW_UPLOAD is not set 837 | # end of Firmware loader 838 | 839 | # CONFIG_ALLOW_DEV_COREDUMP is not set 840 | # CONFIG_DEBUG_DRIVER is not set 841 | # CONFIG_DEBUG_DEVRES is not set 842 | # CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set 843 | CONFIG_GENERIC_CPU_DEVICES=y 844 | CONFIG_GENERIC_CPU_AUTOPROBE=y 845 | CONFIG_GENERIC_CPU_VULNERABILITIES=y 846 | # CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set 847 | # end of Generic Driver Options 848 | 849 | # 850 | # Bus devices 851 | # 852 | # CONFIG_MHI_BUS is not set 853 | # CONFIG_MHI_BUS_EP is not set 854 | # end of Bus devices 855 | 856 | # 857 | # Cache Drivers 858 | # 859 | # end of Cache Drivers 860 | 861 | # CONFIG_CONNECTOR is not set 862 | 863 | # 864 | # Firmware Drivers 865 | # 866 | 867 | # 868 | # ARM System Control and Management Interface Protocol 869 | # 870 | # end of ARM System Control and Management Interface Protocol 871 | 872 | # CONFIG_EDD is not set 873 | # CONFIG_FIRMWARE_MEMMAP is not set 874 | # CONFIG_FW_CFG_SYSFS is not set 875 | # CONFIG_SYSFB_SIMPLEFB is not set 876 | # CONFIG_GOOGLE_FIRMWARE is not set 877 | 878 | # 879 | # Qualcomm firmware drivers 880 | # 881 | # end of Qualcomm firmware drivers 882 | 883 | # 884 | # Tegra firmware driver 885 | # 886 | # end of Tegra firmware driver 887 | # end of Firmware Drivers 888 | 889 | # CONFIG_GNSS is not set 890 | # CONFIG_MTD is not set 891 | # CONFIG_OF is not set 892 | CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y 893 | # CONFIG_PARPORT is not set 894 | # CONFIG_PNP is not set 895 | CONFIG_BLK_DEV=y 896 | CONFIG_BLK_DEV_NULL_BLK=y 897 | CONFIG_BLK_DEV_FD=y 898 | # CONFIG_BLK_DEV_FD_RAWCMD is not set 899 | # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set 900 | # CONFIG_ZRAM is not set 901 | # CONFIG_BLK_DEV_LOOP is not set 902 | # CONFIG_BLK_DEV_DRBD is not set 903 | # CONFIG_BLK_DEV_NBD is not set 904 | # CONFIG_BLK_DEV_RAM is not set 905 | # CONFIG_CDROM_PKTCDVD is not set 906 | # CONFIG_ATA_OVER_ETH is not set 907 | # CONFIG_BLK_DEV_RBD is not set 908 | # CONFIG_BLK_DEV_UBLK is not set 909 | 910 | # 911 | # NVME Support 912 | # 913 | # CONFIG_BLK_DEV_NVME is not set 914 | # CONFIG_NVME_FC is not set 915 | # CONFIG_NVME_TCP is not set 916 | # CONFIG_NVME_TARGET is not set 917 | # end of NVME Support 918 | 919 | # 920 | # Misc devices 921 | # 922 | # CONFIG_DUMMY_IRQ is not set 923 | # CONFIG_IBM_ASM is not set 924 | # CONFIG_PHANTOM is not set 925 | # CONFIG_TIFM_CORE is not set 926 | # CONFIG_ENCLOSURE_SERVICES is not set 927 | # CONFIG_HP_ILO is not set 928 | # CONFIG_PCH_PHUB is not set 929 | # CONFIG_SRAM is not set 930 | # CONFIG_DW_XDATA_PCIE is not set 931 | # CONFIG_PCI_ENDPOINT_TEST is not set 932 | # CONFIG_XILINX_SDFEC is not set 933 | # CONFIG_MCHP_LAN966X_PCI is not set 934 | # CONFIG_C2PORT is not set 935 | 936 | # 937 | # EEPROM support 938 | # 939 | # CONFIG_EEPROM_93CX6 is not set 940 | # end of EEPROM support 941 | 942 | # CONFIG_CB710_CORE is not set 943 | 944 | # 945 | # Altera FPGA firmware download module (requires I2C) 946 | # 947 | # CONFIG_INTEL_MEI is not set 948 | # CONFIG_VMWARE_VMCI is not set 949 | # CONFIG_ECHO is not set 950 | # CONFIG_MISC_ALCOR_PCI is not set 951 | # CONFIG_MISC_RTSX_PCI is not set 952 | # CONFIG_PVPANIC is not set 953 | # end of Misc devices 954 | 955 | # 956 | # SCSI device support 957 | # 958 | CONFIG_SCSI_MOD=y 959 | # CONFIG_RAID_ATTRS is not set 960 | CONFIG_SCSI_COMMON=y 961 | CONFIG_SCSI=y 962 | CONFIG_SCSI_DMA=y 963 | CONFIG_SCSI_PROC_FS=y 964 | 965 | # 966 | # SCSI support type (disk, tape, CD-ROM) 967 | # 968 | # CONFIG_BLK_DEV_SD is not set 969 | # CONFIG_CHR_DEV_ST is not set 970 | # CONFIG_BLK_DEV_SR is not set 971 | # CONFIG_CHR_DEV_SG is not set 972 | CONFIG_BLK_DEV_BSG=y 973 | # CONFIG_CHR_DEV_SCH is not set 974 | # CONFIG_SCSI_CONSTANTS is not set 975 | # CONFIG_SCSI_LOGGING is not set 976 | # CONFIG_SCSI_SCAN_ASYNC is not set 977 | 978 | # 979 | # SCSI Transports 980 | # 981 | # CONFIG_SCSI_SPI_ATTRS is not set 982 | # CONFIG_SCSI_FC_ATTRS is not set 983 | # CONFIG_SCSI_ISCSI_ATTRS is not set 984 | # CONFIG_SCSI_SAS_ATTRS is not set 985 | # CONFIG_SCSI_SAS_LIBSAS is not set 986 | # CONFIG_SCSI_SRP_ATTRS is not set 987 | # end of SCSI Transports 988 | 989 | CONFIG_SCSI_LOWLEVEL=y 990 | # CONFIG_ISCSI_TCP is not set 991 | # CONFIG_ISCSI_BOOT_SYSFS is not set 992 | # CONFIG_SCSI_CXGB3_ISCSI is not set 993 | # CONFIG_SCSI_CXGB4_ISCSI is not set 994 | # CONFIG_SCSI_BNX2_ISCSI is not set 995 | # CONFIG_BE2ISCSI is not set 996 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set 997 | # CONFIG_SCSI_HPSA is not set 998 | # CONFIG_SCSI_3W_9XXX is not set 999 | # CONFIG_SCSI_3W_SAS is not set 1000 | # CONFIG_SCSI_ACARD is not set 1001 | # CONFIG_SCSI_AHA152X is not set 1002 | # CONFIG_SCSI_AHA1542 is not set 1003 | # CONFIG_SCSI_AACRAID is not set 1004 | # CONFIG_SCSI_AIC7XXX is not set 1005 | # CONFIG_SCSI_AIC79XX is not set 1006 | # CONFIG_SCSI_AIC94XX is not set 1007 | # CONFIG_SCSI_MVSAS is not set 1008 | # CONFIG_SCSI_MVUMI is not set 1009 | # CONFIG_SCSI_ADVANSYS is not set 1010 | # CONFIG_SCSI_ARCMSR is not set 1011 | # CONFIG_SCSI_ESAS2R is not set 1012 | # CONFIG_MEGARAID_NEWGEN is not set 1013 | # CONFIG_MEGARAID_LEGACY is not set 1014 | # CONFIG_MEGARAID_SAS is not set 1015 | # CONFIG_SCSI_MPT3SAS is not set 1016 | # CONFIG_SCSI_MPT2SAS is not set 1017 | # CONFIG_SCSI_MPI3MR is not set 1018 | # CONFIG_SCSI_SMARTPQI is not set 1019 | # CONFIG_SCSI_HPTIOP is not set 1020 | # CONFIG_SCSI_BUSLOGIC is not set 1021 | # CONFIG_SCSI_MYRB is not set 1022 | # CONFIG_SCSI_MYRS is not set 1023 | # CONFIG_VMWARE_PVSCSI is not set 1024 | # CONFIG_SCSI_SNIC is not set 1025 | # CONFIG_SCSI_DMX3191D is not set 1026 | # CONFIG_SCSI_FDOMAIN_PCI is not set 1027 | # CONFIG_SCSI_FDOMAIN_ISA is not set 1028 | # CONFIG_SCSI_ISCI is not set 1029 | # CONFIG_SCSI_GENERIC_NCR5380 is not set 1030 | # CONFIG_SCSI_IPS is not set 1031 | # CONFIG_SCSI_INITIO is not set 1032 | # CONFIG_SCSI_INIA100 is not set 1033 | # CONFIG_SCSI_STEX is not set 1034 | # CONFIG_SCSI_SYM53C8XX_2 is not set 1035 | # CONFIG_SCSI_IPR is not set 1036 | # CONFIG_SCSI_QLOGIC_FAS is not set 1037 | # CONFIG_SCSI_QLOGIC_1280 is not set 1038 | # CONFIG_SCSI_QLA_ISCSI is not set 1039 | # CONFIG_SCSI_DC395x is not set 1040 | # CONFIG_SCSI_AM53C974 is not set 1041 | # CONFIG_SCSI_NSP32 is not set 1042 | # CONFIG_SCSI_WD719X is not set 1043 | # CONFIG_SCSI_DEBUG is not set 1044 | # CONFIG_SCSI_PMCRAID is not set 1045 | # CONFIG_SCSI_PM8001 is not set 1046 | # CONFIG_SCSI_DH is not set 1047 | # end of SCSI device support 1048 | 1049 | CONFIG_ATA=y 1050 | CONFIG_ATA_VERBOSE_ERROR=y 1051 | CONFIG_ATA_FORCE=y 1052 | 1053 | # 1054 | # Controllers with non-SFF native interface 1055 | # 1056 | # CONFIG_SATA_AHCI is not set 1057 | # CONFIG_SATA_AHCI_PLATFORM is not set 1058 | # CONFIG_AHCI_DWC is not set 1059 | # CONFIG_SATA_INIC162X is not set 1060 | # CONFIG_SATA_ACARD_AHCI is not set 1061 | # CONFIG_SATA_SIL24 is not set 1062 | CONFIG_ATA_SFF=y 1063 | 1064 | # 1065 | # SFF controllers with custom DMA interface 1066 | # 1067 | # CONFIG_PDC_ADMA is not set 1068 | # CONFIG_SATA_QSTOR is not set 1069 | # CONFIG_SATA_SX4 is not set 1070 | CONFIG_ATA_BMDMA=y 1071 | 1072 | # 1073 | # SATA SFF controllers with BMDMA 1074 | # 1075 | # CONFIG_ATA_PIIX is not set 1076 | # CONFIG_SATA_MV is not set 1077 | # CONFIG_SATA_NV is not set 1078 | # CONFIG_SATA_PROMISE is not set 1079 | # CONFIG_SATA_SIL is not set 1080 | # CONFIG_SATA_SIS is not set 1081 | # CONFIG_SATA_SVW is not set 1082 | # CONFIG_SATA_ULI is not set 1083 | # CONFIG_SATA_VIA is not set 1084 | # CONFIG_SATA_VITESSE is not set 1085 | 1086 | # 1087 | # PATA SFF controllers with BMDMA 1088 | # 1089 | # CONFIG_PATA_ALI is not set 1090 | # CONFIG_PATA_AMD is not set 1091 | # CONFIG_PATA_ARTOP is not set 1092 | # CONFIG_PATA_ATIIXP is not set 1093 | # CONFIG_PATA_ATP867X is not set 1094 | # CONFIG_PATA_CMD64X is not set 1095 | # CONFIG_PATA_CS5520 is not set 1096 | # CONFIG_PATA_CS5530 is not set 1097 | # CONFIG_PATA_CS5535 is not set 1098 | # CONFIG_PATA_CS5536 is not set 1099 | # CONFIG_PATA_CYPRESS is not set 1100 | # CONFIG_PATA_EFAR is not set 1101 | # CONFIG_PATA_HPT366 is not set 1102 | # CONFIG_PATA_HPT37X is not set 1103 | # CONFIG_PATA_HPT3X2N is not set 1104 | # CONFIG_PATA_HPT3X3 is not set 1105 | # CONFIG_PATA_IT8213 is not set 1106 | # CONFIG_PATA_IT821X is not set 1107 | # CONFIG_PATA_JMICRON is not set 1108 | # CONFIG_PATA_MARVELL is not set 1109 | # CONFIG_PATA_NETCELL is not set 1110 | # CONFIG_PATA_NINJA32 is not set 1111 | # CONFIG_PATA_NS87415 is not set 1112 | # CONFIG_PATA_OLDPIIX is not set 1113 | # CONFIG_PATA_OPTIDMA is not set 1114 | # CONFIG_PATA_PDC2027X is not set 1115 | # CONFIG_PATA_PDC_OLD is not set 1116 | # CONFIG_PATA_RADISYS is not set 1117 | # CONFIG_PATA_RDC is not set 1118 | # CONFIG_PATA_SC1200 is not set 1119 | # CONFIG_PATA_SCH is not set 1120 | # CONFIG_PATA_SERVERWORKS is not set 1121 | # CONFIG_PATA_SIL680 is not set 1122 | # CONFIG_PATA_SIS is not set 1123 | # CONFIG_PATA_TOSHIBA is not set 1124 | # CONFIG_PATA_TRIFLEX is not set 1125 | # CONFIG_PATA_VIA is not set 1126 | # CONFIG_PATA_WINBOND is not set 1127 | 1128 | # 1129 | # PIO-only SFF controllers 1130 | # 1131 | # CONFIG_PATA_CMD640_PCI is not set 1132 | # CONFIG_PATA_MPIIX is not set 1133 | # CONFIG_PATA_NS87410 is not set 1134 | # CONFIG_PATA_OPTI is not set 1135 | # CONFIG_PATA_QDI is not set 1136 | # CONFIG_PATA_RZ1000 is not set 1137 | # CONFIG_PATA_WINBOND_VLB is not set 1138 | 1139 | # 1140 | # Generic fallback / legacy drivers 1141 | # 1142 | # CONFIG_ATA_GENERIC is not set 1143 | # CONFIG_PATA_LEGACY is not set 1144 | # CONFIG_MD is not set 1145 | # CONFIG_TARGET_CORE is not set 1146 | # CONFIG_FUSION is not set 1147 | 1148 | # 1149 | # IEEE 1394 (FireWire) support 1150 | # 1151 | # CONFIG_FIREWIRE is not set 1152 | # CONFIG_FIREWIRE_NOSY is not set 1153 | # end of IEEE 1394 (FireWire) support 1154 | 1155 | # CONFIG_MACINTOSH_DRIVERS is not set 1156 | CONFIG_NETDEVICES=y 1157 | CONFIG_NET_CORE=y 1158 | # CONFIG_BONDING is not set 1159 | # CONFIG_DUMMY is not set 1160 | # CONFIG_WIREGUARD is not set 1161 | # CONFIG_EQUALIZER is not set 1162 | # CONFIG_NET_FC is not set 1163 | # CONFIG_NET_TEAM is not set 1164 | # CONFIG_MACVLAN is not set 1165 | # CONFIG_IPVLAN is not set 1166 | # CONFIG_VXLAN is not set 1167 | # CONFIG_GENEVE is not set 1168 | # CONFIG_BAREUDP is not set 1169 | # CONFIG_GTP is not set 1170 | # CONFIG_PFCP is not set 1171 | # CONFIG_MACSEC is not set 1172 | # CONFIG_NETCONSOLE is not set 1173 | # CONFIG_TUN is not set 1174 | # CONFIG_TUN_VNET_CROSS_LE is not set 1175 | # CONFIG_VETH is not set 1176 | # CONFIG_NLMON is not set 1177 | # CONFIG_ARCNET is not set 1178 | CONFIG_ETHERNET=y 1179 | # CONFIG_NET_VENDOR_3COM is not set 1180 | # CONFIG_NET_VENDOR_ADAPTEC is not set 1181 | # CONFIG_NET_VENDOR_AGERE is not set 1182 | # CONFIG_NET_VENDOR_ALACRITECH is not set 1183 | # CONFIG_NET_VENDOR_ALTEON is not set 1184 | # CONFIG_ALTERA_TSE is not set 1185 | # CONFIG_NET_VENDOR_AMAZON is not set 1186 | # CONFIG_NET_VENDOR_AMD is not set 1187 | # CONFIG_NET_VENDOR_AQUANTIA is not set 1188 | # CONFIG_NET_VENDOR_ARC is not set 1189 | # CONFIG_NET_VENDOR_ASIX is not set 1190 | # CONFIG_NET_VENDOR_ATHEROS is not set 1191 | # CONFIG_CX_ECAT is not set 1192 | # CONFIG_NET_VENDOR_BROADCOM is not set 1193 | # CONFIG_NET_VENDOR_CADENCE is not set 1194 | # CONFIG_NET_VENDOR_CAVIUM is not set 1195 | # CONFIG_NET_VENDOR_CHELSIO is not set 1196 | # CONFIG_NET_VENDOR_CIRRUS is not set 1197 | # CONFIG_NET_VENDOR_CISCO is not set 1198 | # CONFIG_NET_VENDOR_CORTINA is not set 1199 | # CONFIG_NET_VENDOR_DAVICOM is not set 1200 | # CONFIG_DNET is not set 1201 | # CONFIG_NET_VENDOR_DEC is not set 1202 | # CONFIG_NET_VENDOR_DLINK is not set 1203 | # CONFIG_NET_VENDOR_EMULEX is not set 1204 | # CONFIG_NET_VENDOR_ENGLEDER is not set 1205 | # CONFIG_NET_VENDOR_EZCHIP is not set 1206 | # CONFIG_NET_VENDOR_FUNGIBLE is not set 1207 | # CONFIG_NET_VENDOR_GOOGLE is not set 1208 | # CONFIG_NET_VENDOR_HUAWEI is not set 1209 | CONFIG_NET_VENDOR_I825XX=y 1210 | CONFIG_NET_VENDOR_INTEL=y 1211 | # CONFIG_E100 is not set 1212 | CONFIG_E1000=y 1213 | # CONFIG_E1000E is not set 1214 | # CONFIG_IGB is not set 1215 | # CONFIG_IGBVF is not set 1216 | # CONFIG_IXGBE is not set 1217 | # CONFIG_I40E is not set 1218 | # CONFIG_IGC is not set 1219 | # CONFIG_JME is not set 1220 | # CONFIG_NET_VENDOR_LITEX is not set 1221 | # CONFIG_NET_VENDOR_MARVELL is not set 1222 | # CONFIG_NET_VENDOR_MELLANOX is not set 1223 | # CONFIG_NET_VENDOR_META is not set 1224 | # CONFIG_NET_VENDOR_MICREL is not set 1225 | # CONFIG_NET_VENDOR_MICROCHIP is not set 1226 | # CONFIG_NET_VENDOR_MICROSEMI is not set 1227 | # CONFIG_NET_VENDOR_MICROSOFT is not set 1228 | # CONFIG_NET_VENDOR_MYRI is not set 1229 | # CONFIG_FEALNX is not set 1230 | # CONFIG_NET_VENDOR_NI is not set 1231 | # CONFIG_NET_VENDOR_NATSEMI is not set 1232 | # CONFIG_NET_VENDOR_NETERION is not set 1233 | # CONFIG_NET_VENDOR_NETRONOME is not set 1234 | # CONFIG_NET_VENDOR_NVIDIA is not set 1235 | # CONFIG_NET_VENDOR_OKI is not set 1236 | # CONFIG_ETHOC is not set 1237 | # CONFIG_NET_VENDOR_PACKET_ENGINES is not set 1238 | # CONFIG_NET_VENDOR_PENSANDO is not set 1239 | # CONFIG_NET_VENDOR_QLOGIC is not set 1240 | # CONFIG_NET_VENDOR_BROCADE is not set 1241 | # CONFIG_NET_VENDOR_QUALCOMM is not set 1242 | # CONFIG_NET_VENDOR_RDC is not set 1243 | # CONFIG_NET_VENDOR_REALTEK is not set 1244 | # CONFIG_NET_VENDOR_RENESAS is not set 1245 | # CONFIG_NET_VENDOR_ROCKER is not set 1246 | # CONFIG_NET_VENDOR_SAMSUNG is not set 1247 | # CONFIG_NET_VENDOR_SEEQ is not set 1248 | # CONFIG_NET_VENDOR_SILAN is not set 1249 | # CONFIG_NET_VENDOR_SIS is not set 1250 | # CONFIG_NET_VENDOR_SOLARFLARE is not set 1251 | # CONFIG_NET_VENDOR_SMSC is not set 1252 | # CONFIG_NET_VENDOR_SOCIONEXT is not set 1253 | # CONFIG_NET_VENDOR_STMICRO is not set 1254 | # CONFIG_NET_VENDOR_SUN is not set 1255 | # CONFIG_NET_VENDOR_SYNOPSYS is not set 1256 | # CONFIG_NET_VENDOR_TEHUTI is not set 1257 | # CONFIG_NET_VENDOR_TI is not set 1258 | # CONFIG_NET_VENDOR_VERTEXCOM is not set 1259 | # CONFIG_NET_VENDOR_VIA is not set 1260 | # CONFIG_NET_VENDOR_WANGXUN is not set 1261 | # CONFIG_NET_VENDOR_WIZNET is not set 1262 | # CONFIG_NET_VENDOR_XILINX is not set 1263 | # CONFIG_FDDI is not set 1264 | # CONFIG_HIPPI is not set 1265 | # CONFIG_PHYLIB is not set 1266 | # CONFIG_MDIO_DEVICE is not set 1267 | 1268 | # 1269 | # PCS device drivers 1270 | # 1271 | # CONFIG_PCS_XPCS is not set 1272 | # end of PCS device drivers 1273 | 1274 | # CONFIG_PPP is not set 1275 | # CONFIG_SLIP is not set 1276 | 1277 | # 1278 | # Host-side USB support is needed for USB Network Adapter support 1279 | # 1280 | # CONFIG_WLAN is not set 1281 | # CONFIG_WAN is not set 1282 | 1283 | # 1284 | # Wireless WAN 1285 | # 1286 | # CONFIG_WWAN is not set 1287 | # end of Wireless WAN 1288 | 1289 | # CONFIG_VMXNET3 is not set 1290 | # CONFIG_NET_FAILOVER is not set 1291 | # CONFIG_ISDN is not set 1292 | 1293 | # 1294 | # Input device support 1295 | # 1296 | CONFIG_INPUT=y 1297 | # CONFIG_INPUT_FF_MEMLESS is not set 1298 | # CONFIG_INPUT_SPARSEKMAP is not set 1299 | # CONFIG_INPUT_MATRIXKMAP is not set 1300 | CONFIG_INPUT_VIVALDIFMAP=y 1301 | 1302 | # 1303 | # Userland interfaces 1304 | # 1305 | # CONFIG_INPUT_MOUSEDEV is not set 1306 | # CONFIG_INPUT_JOYDEV is not set 1307 | # CONFIG_INPUT_EVDEV is not set 1308 | # CONFIG_INPUT_EVBUG is not set 1309 | 1310 | # 1311 | # Input Device Drivers 1312 | # 1313 | CONFIG_INPUT_KEYBOARD=y 1314 | CONFIG_KEYBOARD_ATKBD=y 1315 | # CONFIG_KEYBOARD_LKKBD is not set 1316 | # CONFIG_KEYBOARD_NEWTON is not set 1317 | # CONFIG_KEYBOARD_OPENCORES is not set 1318 | # CONFIG_KEYBOARD_STOWAWAY is not set 1319 | # CONFIG_KEYBOARD_SUNKBD is not set 1320 | # CONFIG_KEYBOARD_XTKBD is not set 1321 | # CONFIG_INPUT_MOUSE is not set 1322 | # CONFIG_INPUT_JOYSTICK is not set 1323 | # CONFIG_INPUT_TABLET is not set 1324 | # CONFIG_INPUT_TOUCHSCREEN is not set 1325 | # CONFIG_INPUT_MISC is not set 1326 | # CONFIG_RMI4_CORE is not set 1327 | 1328 | # 1329 | # Hardware I/O ports 1330 | # 1331 | CONFIG_SERIO=y 1332 | CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y 1333 | CONFIG_SERIO_I8042=y 1334 | # CONFIG_SERIO_SERPORT is not set 1335 | # CONFIG_SERIO_CT82C710 is not set 1336 | # CONFIG_SERIO_PCIPS2 is not set 1337 | CONFIG_SERIO_LIBPS2=y 1338 | # CONFIG_SERIO_RAW is not set 1339 | # CONFIG_SERIO_ALTERA_PS2 is not set 1340 | # CONFIG_SERIO_PS2MULT is not set 1341 | # CONFIG_SERIO_ARC_PS2 is not set 1342 | # CONFIG_USERIO is not set 1343 | # CONFIG_GAMEPORT is not set 1344 | # end of Hardware I/O ports 1345 | # end of Input device support 1346 | 1347 | # 1348 | # Character devices 1349 | # 1350 | CONFIG_TTY=y 1351 | CONFIG_VT=y 1352 | # CONFIG_CONSOLE_TRANSLATIONS is not set 1353 | CONFIG_VT_CONSOLE=y 1354 | # CONFIG_VT_HW_CONSOLE_BINDING is not set 1355 | # CONFIG_UNIX98_PTYS is not set 1356 | # CONFIG_LEGACY_PTYS is not set 1357 | # CONFIG_LEGACY_TIOCSTI is not set 1358 | # CONFIG_LDISC_AUTOLOAD is not set 1359 | 1360 | # 1361 | # Serial drivers 1362 | # 1363 | # CONFIG_SERIAL_8250 is not set 1364 | 1365 | # 1366 | # Non-8250 serial port support 1367 | # 1368 | # CONFIG_SERIAL_UARTLITE is not set 1369 | # CONFIG_SERIAL_JSM is not set 1370 | # CONFIG_SERIAL_LANTIQ is not set 1371 | # CONFIG_SERIAL_SCCNXP is not set 1372 | # CONFIG_SERIAL_TIMBERDALE is not set 1373 | # CONFIG_SERIAL_ALTERA_JTAGUART is not set 1374 | # CONFIG_SERIAL_ALTERA_UART is not set 1375 | # CONFIG_SERIAL_PCH_UART is not set 1376 | # CONFIG_SERIAL_ARC is not set 1377 | # CONFIG_SERIAL_RP2 is not set 1378 | # CONFIG_SERIAL_FSL_LPUART is not set 1379 | # end of Serial drivers 1380 | 1381 | # CONFIG_SERIAL_NONSTANDARD is not set 1382 | # CONFIG_N_GSM is not set 1383 | # CONFIG_NOZOMI is not set 1384 | # CONFIG_NULL_TTY is not set 1385 | # CONFIG_SERIAL_DEV_BUS is not set 1386 | # CONFIG_TTY_PRINTK is not set 1387 | # CONFIG_VIRTIO_CONSOLE is not set 1388 | # CONFIG_IPMI_HANDLER is not set 1389 | # CONFIG_HW_RANDOM is not set 1390 | # CONFIG_DTLK is not set 1391 | # CONFIG_APPLICOM is not set 1392 | # CONFIG_SONYPI is not set 1393 | # CONFIG_MWAVE is not set 1394 | # CONFIG_PC8736x_GPIO is not set 1395 | # CONFIG_NSC_GPIO is not set 1396 | # CONFIG_DEVMEM is not set 1397 | # CONFIG_NVRAM is not set 1398 | # CONFIG_DEVPORT is not set 1399 | # CONFIG_HANGCHECK_TIMER is not set 1400 | # CONFIG_TCG_TPM is not set 1401 | # CONFIG_TELCLOCK is not set 1402 | # CONFIG_XILLYBUS is not set 1403 | # end of Character devices 1404 | 1405 | # 1406 | # I2C support 1407 | # 1408 | # CONFIG_I2C is not set 1409 | # end of I2C support 1410 | 1411 | # CONFIG_I3C is not set 1412 | # CONFIG_SPI is not set 1413 | # CONFIG_SPMI is not set 1414 | # CONFIG_HSI is not set 1415 | # CONFIG_PPS is not set 1416 | 1417 | # 1418 | # PTP clock support 1419 | # 1420 | CONFIG_PTP_1588_CLOCK_OPTIONAL=y 1421 | 1422 | # 1423 | # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. 1424 | # 1425 | # end of PTP clock support 1426 | 1427 | # CONFIG_PINCTRL is not set 1428 | # CONFIG_GPIOLIB is not set 1429 | # CONFIG_W1 is not set 1430 | # CONFIG_POWER_RESET is not set 1431 | # CONFIG_POWER_SEQUENCING is not set 1432 | # CONFIG_POWER_SUPPLY is not set 1433 | # CONFIG_HWMON is not set 1434 | # CONFIG_THERMAL is not set 1435 | # CONFIG_WATCHDOG is not set 1436 | CONFIG_SSB_POSSIBLE=y 1437 | # CONFIG_SSB is not set 1438 | CONFIG_BCMA_POSSIBLE=y 1439 | # CONFIG_BCMA is not set 1440 | 1441 | # 1442 | # Multifunction device drivers 1443 | # 1444 | # CONFIG_MFD_CS5535 is not set 1445 | # CONFIG_MFD_CGBC is not set 1446 | # CONFIG_MFD_MADERA is not set 1447 | # CONFIG_LPC_ICH is not set 1448 | # CONFIG_LPC_SCH is not set 1449 | # CONFIG_MFD_INTEL_LPSS_PCI is not set 1450 | # CONFIG_MFD_JANZ_CMODIO is not set 1451 | # CONFIG_MFD_KEMPLD is not set 1452 | # CONFIG_MFD_MT6397 is not set 1453 | # CONFIG_MFD_RDC321X is not set 1454 | # CONFIG_MFD_SM501 is not set 1455 | # CONFIG_MFD_SYSCON is not set 1456 | # CONFIG_MFD_TQMX86 is not set 1457 | # CONFIG_MFD_VX855 is not set 1458 | # end of Multifunction device drivers 1459 | 1460 | # CONFIG_REGULATOR is not set 1461 | # CONFIG_RC_CORE is not set 1462 | 1463 | # 1464 | # CEC support 1465 | # 1466 | # CONFIG_MEDIA_CEC_SUPPORT is not set 1467 | # end of CEC support 1468 | 1469 | # CONFIG_MEDIA_SUPPORT is not set 1470 | 1471 | # 1472 | # Graphics support 1473 | # 1474 | # CONFIG_AUXDISPLAY is not set 1475 | # CONFIG_AGP is not set 1476 | # CONFIG_DRM is not set 1477 | 1478 | # 1479 | # Frame buffer Devices 1480 | # 1481 | # CONFIG_FB is not set 1482 | # end of Frame buffer Devices 1483 | 1484 | # 1485 | # Backlight & LCD device support 1486 | # 1487 | # CONFIG_LCD_CLASS_DEVICE is not set 1488 | # CONFIG_BACKLIGHT_CLASS_DEVICE is not set 1489 | # end of Backlight & LCD device support 1490 | 1491 | # 1492 | # Console display driver support 1493 | # 1494 | CONFIG_VGA_CONSOLE=y 1495 | # CONFIG_MDA_CONSOLE is not set 1496 | CONFIG_DUMMY_CONSOLE=y 1497 | CONFIG_DUMMY_CONSOLE_COLUMNS=80 1498 | CONFIG_DUMMY_CONSOLE_ROWS=25 1499 | # end of Console display driver support 1500 | # end of Graphics support 1501 | 1502 | # CONFIG_SOUND is not set 1503 | # CONFIG_HID_SUPPORT is not set 1504 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1505 | # CONFIG_USB_SUPPORT is not set 1506 | # CONFIG_MMC is not set 1507 | # CONFIG_SCSI_UFSHCD is not set 1508 | # CONFIG_MEMSTICK is not set 1509 | # CONFIG_NEW_LEDS is not set 1510 | # CONFIG_ACCESSIBILITY is not set 1511 | # CONFIG_INFINIBAND is not set 1512 | CONFIG_EDAC_ATOMIC_SCRUB=y 1513 | CONFIG_EDAC_SUPPORT=y 1514 | CONFIG_RTC_LIB=y 1515 | CONFIG_RTC_MC146818_LIB=y 1516 | # CONFIG_RTC_CLASS is not set 1517 | # CONFIG_DMADEVICES is not set 1518 | 1519 | # 1520 | # DMABUF options 1521 | # 1522 | # CONFIG_SYNC_FILE is not set 1523 | # CONFIG_DMABUF_HEAPS is not set 1524 | # end of DMABUF options 1525 | 1526 | # CONFIG_UIO is not set 1527 | # CONFIG_VFIO is not set 1528 | # CONFIG_VIRT_DRIVERS is not set 1529 | # CONFIG_VIRTIO_MENU is not set 1530 | # CONFIG_VDPA is not set 1531 | # CONFIG_VHOST_MENU is not set 1532 | 1533 | # 1534 | # Microsoft Hyper-V guest support 1535 | # 1536 | # end of Microsoft Hyper-V guest support 1537 | 1538 | # CONFIG_GREYBUS is not set 1539 | # CONFIG_COMEDI is not set 1540 | # CONFIG_STAGING is not set 1541 | # CONFIG_GOLDFISH is not set 1542 | # CONFIG_CHROME_PLATFORMS is not set 1543 | # CONFIG_MELLANOX_PLATFORM is not set 1544 | # CONFIG_SURFACE_PLATFORMS is not set 1545 | # CONFIG_X86_PLATFORM_DEVICES is not set 1546 | # CONFIG_COMMON_CLK is not set 1547 | # CONFIG_HWSPINLOCK is not set 1548 | 1549 | # 1550 | # Clock Source drivers 1551 | # 1552 | CONFIG_CLKSRC_I8253=y 1553 | CONFIG_CLKEVT_I8253=y 1554 | CONFIG_CLKBLD_I8253=y 1555 | # end of Clock Source drivers 1556 | 1557 | # CONFIG_MAILBOX is not set 1558 | # CONFIG_IOMMU_SUPPORT is not set 1559 | 1560 | # 1561 | # Remoteproc drivers 1562 | # 1563 | # CONFIG_REMOTEPROC is not set 1564 | # end of Remoteproc drivers 1565 | 1566 | # 1567 | # Rpmsg drivers 1568 | # 1569 | # CONFIG_RPMSG_VIRTIO is not set 1570 | # end of Rpmsg drivers 1571 | 1572 | # 1573 | # SOC (System On Chip) specific Drivers 1574 | # 1575 | 1576 | # 1577 | # Amlogic SoC drivers 1578 | # 1579 | # end of Amlogic SoC drivers 1580 | 1581 | # 1582 | # Broadcom SoC drivers 1583 | # 1584 | # end of Broadcom SoC drivers 1585 | 1586 | # 1587 | # NXP/Freescale QorIQ SoC drivers 1588 | # 1589 | # end of NXP/Freescale QorIQ SoC drivers 1590 | 1591 | # 1592 | # fujitsu SoC drivers 1593 | # 1594 | # end of fujitsu SoC drivers 1595 | 1596 | # 1597 | # i.MX SoC drivers 1598 | # 1599 | # end of i.MX SoC drivers 1600 | 1601 | # 1602 | # Enable LiteX SoC Builder specific drivers 1603 | # 1604 | # end of Enable LiteX SoC Builder specific drivers 1605 | 1606 | # CONFIG_WPCM450_SOC is not set 1607 | 1608 | # 1609 | # Qualcomm SoC drivers 1610 | # 1611 | # end of Qualcomm SoC drivers 1612 | 1613 | # CONFIG_SOC_TI is not set 1614 | 1615 | # 1616 | # Xilinx SoC drivers 1617 | # 1618 | # end of Xilinx SoC drivers 1619 | # end of SOC (System On Chip) specific Drivers 1620 | 1621 | # 1622 | # PM Domains 1623 | # 1624 | 1625 | # 1626 | # Amlogic PM Domains 1627 | # 1628 | # end of Amlogic PM Domains 1629 | 1630 | # 1631 | # Broadcom PM Domains 1632 | # 1633 | # end of Broadcom PM Domains 1634 | 1635 | # 1636 | # i.MX PM Domains 1637 | # 1638 | # end of i.MX PM Domains 1639 | 1640 | # 1641 | # Qualcomm PM Domains 1642 | # 1643 | # end of Qualcomm PM Domains 1644 | # end of PM Domains 1645 | 1646 | # CONFIG_PM_DEVFREQ is not set 1647 | # CONFIG_EXTCON is not set 1648 | # CONFIG_MEMORY is not set 1649 | # CONFIG_IIO is not set 1650 | # CONFIG_NTB is not set 1651 | # CONFIG_PWM is not set 1652 | 1653 | # 1654 | # IRQ chip support 1655 | # 1656 | # end of IRQ chip support 1657 | 1658 | # CONFIG_IPACK_BUS is not set 1659 | # CONFIG_RESET_CONTROLLER is not set 1660 | 1661 | # 1662 | # PHY Subsystem 1663 | # 1664 | # CONFIG_GENERIC_PHY is not set 1665 | # CONFIG_PHY_CAN_TRANSCEIVER is not set 1666 | 1667 | # 1668 | # PHY drivers for Broadcom platforms 1669 | # 1670 | # CONFIG_BCM_KONA_USB2_PHY is not set 1671 | # end of PHY drivers for Broadcom platforms 1672 | 1673 | # CONFIG_PHY_PXA_28NM_HSIC is not set 1674 | # CONFIG_PHY_PXA_28NM_USB2 is not set 1675 | # CONFIG_PHY_INTEL_LGM_EMMC is not set 1676 | # end of PHY Subsystem 1677 | 1678 | # CONFIG_POWERCAP is not set 1679 | # CONFIG_MCB is not set 1680 | 1681 | # 1682 | # Performance monitor support 1683 | # 1684 | # CONFIG_DWC_PCIE_PMU is not set 1685 | # end of Performance monitor support 1686 | 1687 | # CONFIG_RAS is not set 1688 | # CONFIG_USB4 is not set 1689 | 1690 | # 1691 | # Android 1692 | # 1693 | # CONFIG_ANDROID_BINDER_IPC is not set 1694 | # end of Android 1695 | 1696 | # CONFIG_DAX is not set 1697 | # CONFIG_NVMEM is not set 1698 | 1699 | # 1700 | # HW tracing support 1701 | # 1702 | # CONFIG_STM is not set 1703 | # CONFIG_INTEL_TH is not set 1704 | # end of HW tracing support 1705 | 1706 | # CONFIG_FPGA is not set 1707 | # CONFIG_SIOX is not set 1708 | # CONFIG_SLIMBUS is not set 1709 | # CONFIG_INTERCONNECT is not set 1710 | # CONFIG_COUNTER is not set 1711 | # CONFIG_MOST is not set 1712 | # CONFIG_PECI is not set 1713 | # CONFIG_HTE is not set 1714 | # end of Device Drivers 1715 | 1716 | # 1717 | # File systems 1718 | # 1719 | CONFIG_DCACHE_WORD_ACCESS=y 1720 | # CONFIG_VALIDATE_FS_PARSER is not set 1721 | CONFIG_FS_IOMAP=y 1722 | CONFIG_BUFFER_HEAD=y 1723 | CONFIG_LEGACY_DIRECT_IO=y 1724 | # CONFIG_EXT2_FS is not set 1725 | # CONFIG_EXT3_FS is not set 1726 | # CONFIG_EXT4_FS is not set 1727 | # CONFIG_JFS_FS is not set 1728 | # CONFIG_XFS_FS is not set 1729 | # CONFIG_GFS2_FS is not set 1730 | # CONFIG_OCFS2_FS is not set 1731 | # CONFIG_BTRFS_FS is not set 1732 | # CONFIG_NILFS2_FS is not set 1733 | # CONFIG_F2FS_FS is not set 1734 | # CONFIG_BCACHEFS_FS is not set 1735 | # CONFIG_EXPORTFS_BLOCK_OPS is not set 1736 | # CONFIG_FILE_LOCKING is not set 1737 | # CONFIG_FS_ENCRYPTION is not set 1738 | # CONFIG_FS_VERITY is not set 1739 | # CONFIG_DNOTIFY is not set 1740 | # CONFIG_INOTIFY_USER is not set 1741 | # CONFIG_FANOTIFY is not set 1742 | # CONFIG_QUOTA is not set 1743 | # CONFIG_AUTOFS_FS is not set 1744 | # CONFIG_FUSE_FS is not set 1745 | # CONFIG_OVERLAY_FS is not set 1746 | 1747 | # 1748 | # Caches 1749 | # 1750 | # end of Caches 1751 | 1752 | # 1753 | # CD-ROM/DVD Filesystems 1754 | # 1755 | # CONFIG_ISO9660_FS is not set 1756 | # CONFIG_UDF_FS is not set 1757 | # end of CD-ROM/DVD Filesystems 1758 | 1759 | # 1760 | # DOS/FAT/EXFAT/NT Filesystems 1761 | # 1762 | CONFIG_FAT_FS=y 1763 | CONFIG_MSDOS_FS=y 1764 | # CONFIG_VFAT_FS is not set 1765 | CONFIG_FAT_DEFAULT_CODEPAGE=437 1766 | # CONFIG_EXFAT_FS is not set 1767 | # CONFIG_NTFS3_FS is not set 1768 | # CONFIG_NTFS_FS is not set 1769 | # end of DOS/FAT/EXFAT/NT Filesystems 1770 | 1771 | # 1772 | # Pseudo filesystems 1773 | # 1774 | CONFIG_PROC_FS=y 1775 | # CONFIG_PROC_KCORE is not set 1776 | # CONFIG_PROC_SYSCTL is not set 1777 | # CONFIG_PROC_PAGE_MONITOR is not set 1778 | # CONFIG_PROC_CHILDREN is not set 1779 | CONFIG_PROC_PID_ARCH_STATUS=y 1780 | CONFIG_KERNFS=y 1781 | CONFIG_SYSFS=y 1782 | # CONFIG_HUGETLBFS is not set 1783 | CONFIG_CONFIGFS_FS=y 1784 | # end of Pseudo filesystems 1785 | 1786 | # CONFIG_MISC_FILESYSTEMS is not set 1787 | # CONFIG_NETWORK_FILESYSTEMS is not set 1788 | CONFIG_NLS=y 1789 | CONFIG_NLS_DEFAULT="iso8859-1" 1790 | # CONFIG_NLS_CODEPAGE_437 is not set 1791 | # CONFIG_NLS_CODEPAGE_737 is not set 1792 | # CONFIG_NLS_CODEPAGE_775 is not set 1793 | # CONFIG_NLS_CODEPAGE_850 is not set 1794 | # CONFIG_NLS_CODEPAGE_852 is not set 1795 | # CONFIG_NLS_CODEPAGE_855 is not set 1796 | # CONFIG_NLS_CODEPAGE_857 is not set 1797 | # CONFIG_NLS_CODEPAGE_860 is not set 1798 | # CONFIG_NLS_CODEPAGE_861 is not set 1799 | # CONFIG_NLS_CODEPAGE_862 is not set 1800 | # CONFIG_NLS_CODEPAGE_863 is not set 1801 | # CONFIG_NLS_CODEPAGE_864 is not set 1802 | # CONFIG_NLS_CODEPAGE_865 is not set 1803 | # CONFIG_NLS_CODEPAGE_866 is not set 1804 | # CONFIG_NLS_CODEPAGE_869 is not set 1805 | # CONFIG_NLS_CODEPAGE_936 is not set 1806 | # CONFIG_NLS_CODEPAGE_950 is not set 1807 | # CONFIG_NLS_CODEPAGE_932 is not set 1808 | # CONFIG_NLS_CODEPAGE_949 is not set 1809 | # CONFIG_NLS_CODEPAGE_874 is not set 1810 | # CONFIG_NLS_ISO8859_8 is not set 1811 | # CONFIG_NLS_CODEPAGE_1250 is not set 1812 | # CONFIG_NLS_CODEPAGE_1251 is not set 1813 | # CONFIG_NLS_ASCII is not set 1814 | # CONFIG_NLS_ISO8859_1 is not set 1815 | # CONFIG_NLS_ISO8859_2 is not set 1816 | # CONFIG_NLS_ISO8859_3 is not set 1817 | # CONFIG_NLS_ISO8859_4 is not set 1818 | # CONFIG_NLS_ISO8859_5 is not set 1819 | # CONFIG_NLS_ISO8859_6 is not set 1820 | # CONFIG_NLS_ISO8859_7 is not set 1821 | # CONFIG_NLS_ISO8859_9 is not set 1822 | # CONFIG_NLS_ISO8859_13 is not set 1823 | # CONFIG_NLS_ISO8859_14 is not set 1824 | # CONFIG_NLS_ISO8859_15 is not set 1825 | # CONFIG_NLS_KOI8_R is not set 1826 | # CONFIG_NLS_KOI8_U is not set 1827 | # CONFIG_NLS_MAC_ROMAN is not set 1828 | # CONFIG_NLS_MAC_CELTIC is not set 1829 | # CONFIG_NLS_MAC_CENTEURO is not set 1830 | # CONFIG_NLS_MAC_CROATIAN is not set 1831 | # CONFIG_NLS_MAC_CYRILLIC is not set 1832 | # CONFIG_NLS_MAC_GAELIC is not set 1833 | # CONFIG_NLS_MAC_GREEK is not set 1834 | # CONFIG_NLS_MAC_ICELAND is not set 1835 | # CONFIG_NLS_MAC_INUIT is not set 1836 | # CONFIG_NLS_MAC_ROMANIAN is not set 1837 | # CONFIG_NLS_MAC_TURKISH is not set 1838 | # CONFIG_NLS_UTF8 is not set 1839 | # CONFIG_DLM is not set 1840 | # CONFIG_UNICODE is not set 1841 | # end of File systems 1842 | 1843 | # 1844 | # Security options 1845 | # 1846 | # CONFIG_KEYS is not set 1847 | # CONFIG_SECURITY_DMESG_RESTRICT is not set 1848 | CONFIG_PROC_MEM_ALWAYS_FORCE=y 1849 | # CONFIG_PROC_MEM_FORCE_PTRACE is not set 1850 | # CONFIG_PROC_MEM_NO_FORCE is not set 1851 | # CONFIG_SECURITYFS is not set 1852 | # CONFIG_HARDENED_USERCOPY is not set 1853 | # CONFIG_FORTIFY_SOURCE is not set 1854 | # CONFIG_STATIC_USERMODEHELPER is not set 1855 | CONFIG_DEFAULT_SECURITY_DAC=y 1856 | CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,ipe,bpf" 1857 | 1858 | # 1859 | # Kernel hardening options 1860 | # 1861 | 1862 | # 1863 | # Memory initialization 1864 | # 1865 | CONFIG_INIT_STACK_NONE=y 1866 | # CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set 1867 | # CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF is not set 1868 | # CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL is not set 1869 | # CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set 1870 | # CONFIG_INIT_ON_FREE_DEFAULT_ON is not set 1871 | # end of Memory initialization 1872 | 1873 | # 1874 | # Hardening of kernel data structures 1875 | # 1876 | # CONFIG_LIST_HARDENED is not set 1877 | # CONFIG_BUG_ON_DATA_CORRUPTION is not set 1878 | # end of Hardening of kernel data structures 1879 | 1880 | CONFIG_RANDSTRUCT_NONE=y 1881 | # CONFIG_RANDSTRUCT_PERFORMANCE is not set 1882 | # end of Kernel hardening options 1883 | # end of Security options 1884 | 1885 | CONFIG_CRYPTO=y 1886 | 1887 | # 1888 | # Crypto core or helper 1889 | # 1890 | # CONFIG_CRYPTO_MANAGER is not set 1891 | # CONFIG_CRYPTO_USER is not set 1892 | CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y 1893 | # CONFIG_CRYPTO_NULL is not set 1894 | # CONFIG_CRYPTO_CRYPTD is not set 1895 | # CONFIG_CRYPTO_AUTHENC is not set 1896 | # CONFIG_CRYPTO_TEST is not set 1897 | # end of Crypto core or helper 1898 | 1899 | # 1900 | # Public-key cryptography 1901 | # 1902 | # CONFIG_CRYPTO_RSA is not set 1903 | # CONFIG_CRYPTO_DH is not set 1904 | # CONFIG_CRYPTO_ECDH is not set 1905 | # CONFIG_CRYPTO_ECDSA is not set 1906 | # CONFIG_CRYPTO_ECRDSA is not set 1907 | # CONFIG_CRYPTO_CURVE25519 is not set 1908 | # end of Public-key cryptography 1909 | 1910 | # 1911 | # Block ciphers 1912 | # 1913 | # CONFIG_CRYPTO_AES is not set 1914 | # CONFIG_CRYPTO_AES_TI is not set 1915 | # CONFIG_CRYPTO_ARIA is not set 1916 | # CONFIG_CRYPTO_BLOWFISH is not set 1917 | # CONFIG_CRYPTO_CAMELLIA is not set 1918 | # CONFIG_CRYPTO_CAST5 is not set 1919 | # CONFIG_CRYPTO_CAST6 is not set 1920 | # CONFIG_CRYPTO_DES is not set 1921 | # CONFIG_CRYPTO_FCRYPT is not set 1922 | # CONFIG_CRYPTO_SERPENT is not set 1923 | # CONFIG_CRYPTO_SM4_GENERIC is not set 1924 | # CONFIG_CRYPTO_TWOFISH is not set 1925 | # end of Block ciphers 1926 | 1927 | # 1928 | # Length-preserving ciphers and modes 1929 | # 1930 | # CONFIG_CRYPTO_ADIANTUM is not set 1931 | # CONFIG_CRYPTO_CHACHA20 is not set 1932 | # CONFIG_CRYPTO_CBC is not set 1933 | # CONFIG_CRYPTO_CTR is not set 1934 | # CONFIG_CRYPTO_CTS is not set 1935 | # CONFIG_CRYPTO_ECB is not set 1936 | # CONFIG_CRYPTO_HCTR2 is not set 1937 | # CONFIG_CRYPTO_KEYWRAP is not set 1938 | # CONFIG_CRYPTO_LRW is not set 1939 | # CONFIG_CRYPTO_PCBC is not set 1940 | # CONFIG_CRYPTO_XTS is not set 1941 | # end of Length-preserving ciphers and modes 1942 | 1943 | # 1944 | # AEAD (authenticated encryption with associated data) ciphers 1945 | # 1946 | # CONFIG_CRYPTO_AEGIS128 is not set 1947 | # CONFIG_CRYPTO_CHACHA20POLY1305 is not set 1948 | # CONFIG_CRYPTO_CCM is not set 1949 | # CONFIG_CRYPTO_GCM is not set 1950 | # CONFIG_CRYPTO_SEQIV is not set 1951 | # CONFIG_CRYPTO_ECHAINIV is not set 1952 | # CONFIG_CRYPTO_ESSIV is not set 1953 | # end of AEAD (authenticated encryption with associated data) ciphers 1954 | 1955 | # 1956 | # Hashes, digests, and MACs 1957 | # 1958 | # CONFIG_CRYPTO_BLAKE2B is not set 1959 | # CONFIG_CRYPTO_CMAC is not set 1960 | # CONFIG_CRYPTO_GHASH is not set 1961 | # CONFIG_CRYPTO_HMAC is not set 1962 | # CONFIG_CRYPTO_MD4 is not set 1963 | # CONFIG_CRYPTO_MD5 is not set 1964 | # CONFIG_CRYPTO_MICHAEL_MIC is not set 1965 | # CONFIG_CRYPTO_POLY1305 is not set 1966 | # CONFIG_CRYPTO_RMD160 is not set 1967 | # CONFIG_CRYPTO_SHA1 is not set 1968 | # CONFIG_CRYPTO_SHA256 is not set 1969 | # CONFIG_CRYPTO_SHA512 is not set 1970 | # CONFIG_CRYPTO_SHA3 is not set 1971 | # CONFIG_CRYPTO_SM3_GENERIC is not set 1972 | # CONFIG_CRYPTO_STREEBOG is not set 1973 | # CONFIG_CRYPTO_VMAC is not set 1974 | # CONFIG_CRYPTO_WP512 is not set 1975 | # CONFIG_CRYPTO_XCBC is not set 1976 | # CONFIG_CRYPTO_XXHASH is not set 1977 | # end of Hashes, digests, and MACs 1978 | 1979 | # 1980 | # CRCs (cyclic redundancy checks) 1981 | # 1982 | # CONFIG_CRYPTO_CRC32C is not set 1983 | # CONFIG_CRYPTO_CRC32 is not set 1984 | # CONFIG_CRYPTO_CRCT10DIF is not set 1985 | # end of CRCs (cyclic redundancy checks) 1986 | 1987 | # 1988 | # Compression 1989 | # 1990 | # CONFIG_CRYPTO_DEFLATE is not set 1991 | # CONFIG_CRYPTO_LZO is not set 1992 | # CONFIG_CRYPTO_842 is not set 1993 | # CONFIG_CRYPTO_LZ4 is not set 1994 | # CONFIG_CRYPTO_LZ4HC is not set 1995 | # CONFIG_CRYPTO_ZSTD is not set 1996 | # end of Compression 1997 | 1998 | # 1999 | # Random number generation 2000 | # 2001 | # CONFIG_CRYPTO_ANSI_CPRNG is not set 2002 | # CONFIG_CRYPTO_DRBG_MENU is not set 2003 | # CONFIG_CRYPTO_JITTERENTROPY is not set 2004 | # end of Random number generation 2005 | 2006 | # 2007 | # Userspace interface 2008 | # 2009 | # CONFIG_CRYPTO_USER_API_HASH is not set 2010 | # CONFIG_CRYPTO_USER_API_SKCIPHER is not set 2011 | # CONFIG_CRYPTO_USER_API_RNG is not set 2012 | # CONFIG_CRYPTO_USER_API_AEAD is not set 2013 | # end of Userspace interface 2014 | 2015 | # 2016 | # Accelerated Cryptographic Algorithms for CPU (x86) 2017 | # 2018 | # CONFIG_CRYPTO_AES_NI_INTEL is not set 2019 | # CONFIG_CRYPTO_SERPENT_SSE2_586 is not set 2020 | # CONFIG_CRYPTO_TWOFISH_586 is not set 2021 | # CONFIG_CRYPTO_CRC32C_INTEL is not set 2022 | # CONFIG_CRYPTO_CRC32_PCLMUL is not set 2023 | # end of Accelerated Cryptographic Algorithms for CPU (x86) 2024 | 2025 | # CONFIG_CRYPTO_HW is not set 2026 | 2027 | # 2028 | # Certificates for signature checking 2029 | # 2030 | # end of Certificates for signature checking 2031 | 2032 | # 2033 | # Library routines 2034 | # 2035 | # CONFIG_PACKING is not set 2036 | CONFIG_BITREVERSE=y 2037 | CONFIG_GENERIC_STRNCPY_FROM_USER=y 2038 | CONFIG_GENERIC_STRNLEN_USER=y 2039 | CONFIG_GENERIC_NET_UTILS=y 2040 | # CONFIG_CORDIC is not set 2041 | # CONFIG_PRIME_NUMBERS is not set 2042 | CONFIG_GENERIC_IOMAP=y 2043 | CONFIG_ARCH_HAS_FAST_MULTIPLIER=y 2044 | CONFIG_ARCH_USE_SYM_ANNOTATIONS=y 2045 | 2046 | # 2047 | # Crypto library routines 2048 | # 2049 | CONFIG_CRYPTO_LIB_UTILS=y 2050 | CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y 2051 | # CONFIG_CRYPTO_LIB_CHACHA is not set 2052 | # CONFIG_CRYPTO_LIB_CURVE25519 is not set 2053 | CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1 2054 | # CONFIG_CRYPTO_LIB_POLY1305 is not set 2055 | # CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set 2056 | CONFIG_CRYPTO_LIB_SHA1=y 2057 | # end of Crypto library routines 2058 | 2059 | # CONFIG_CRC_CCITT is not set 2060 | # CONFIG_CRC16 is not set 2061 | # CONFIG_CRC_T10DIF is not set 2062 | # CONFIG_CRC64_ROCKSOFT is not set 2063 | # CONFIG_CRC_ITU_T is not set 2064 | CONFIG_CRC32=y 2065 | # CONFIG_CRC32_SELFTEST is not set 2066 | # CONFIG_CRC32_SLICEBY8 is not set 2067 | # CONFIG_CRC32_SLICEBY4 is not set 2068 | CONFIG_CRC32_SARWATE=y 2069 | # CONFIG_CRC32_BIT is not set 2070 | # CONFIG_CRC64 is not set 2071 | # CONFIG_CRC4 is not set 2072 | # CONFIG_CRC7 is not set 2073 | # CONFIG_LIBCRC32C is not set 2074 | # CONFIG_CRC8 is not set 2075 | # CONFIG_RANDOM32_SELFTEST is not set 2076 | CONFIG_XZ_DEC=y 2077 | CONFIG_XZ_DEC_X86=y 2078 | # CONFIG_XZ_DEC_POWERPC is not set 2079 | # CONFIG_XZ_DEC_ARM is not set 2080 | # CONFIG_XZ_DEC_ARMTHUMB is not set 2081 | # CONFIG_XZ_DEC_ARM64 is not set 2082 | # CONFIG_XZ_DEC_SPARC is not set 2083 | # CONFIG_XZ_DEC_RISCV is not set 2084 | # CONFIG_XZ_DEC_MICROLZMA is not set 2085 | CONFIG_XZ_DEC_BCJ=y 2086 | # CONFIG_XZ_DEC_TEST is not set 2087 | CONFIG_HAS_IOMEM=y 2088 | CONFIG_HAS_IOPORT=y 2089 | CONFIG_HAS_IOPORT_MAP=y 2090 | CONFIG_HAS_DMA=y 2091 | CONFIG_NEED_SG_DMA_LENGTH=y 2092 | # CONFIG_DMA_API_DEBUG is not set 2093 | CONFIG_FORCE_NR_CPUS=y 2094 | CONFIG_DQL=y 2095 | CONFIG_GLOB=y 2096 | # CONFIG_GLOB_SELFTEST is not set 2097 | CONFIG_NLATTR=y 2098 | # CONFIG_IRQ_POLL is not set 2099 | CONFIG_HAVE_GENERIC_VDSO=y 2100 | CONFIG_GENERIC_GETTIMEOFDAY=y 2101 | CONFIG_GENERIC_VDSO_32=y 2102 | CONFIG_GENERIC_VDSO_TIME_NS=y 2103 | CONFIG_GENERIC_VDSO_OVERFLOW_PROTECT=y 2104 | CONFIG_SG_POOL=y 2105 | CONFIG_ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION=y 2106 | CONFIG_ARCH_STACKWALK=y 2107 | CONFIG_SBITMAP=y 2108 | # CONFIG_LWQ_TEST is not set 2109 | # end of Library routines 2110 | 2111 | # 2112 | # Kernel hacking 2113 | # 2114 | 2115 | # 2116 | # printk and dmesg options 2117 | # 2118 | CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 2119 | CONFIG_CONSOLE_LOGLEVEL_QUIET=4 2120 | CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 2121 | # CONFIG_SYMBOLIC_ERRNAME is not set 2122 | # end of printk and dmesg options 2123 | 2124 | CONFIG_DEBUG_KERNEL=y 2125 | # CONFIG_DEBUG_MISC is not set 2126 | 2127 | # 2128 | # Compile-time checks and compiler options 2129 | # 2130 | CONFIG_AS_HAS_NON_CONST_ULEB128=y 2131 | CONFIG_DEBUG_INFO_NONE=y 2132 | # CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set 2133 | # CONFIG_DEBUG_INFO_DWARF4 is not set 2134 | # CONFIG_DEBUG_INFO_DWARF5 is not set 2135 | CONFIG_FRAME_WARN=2048 2136 | CONFIG_STRIP_ASM_SYMS=y 2137 | # CONFIG_READABLE_ASM is not set 2138 | # CONFIG_HEADERS_INSTALL is not set 2139 | # CONFIG_DEBUG_SECTION_MISMATCH is not set 2140 | # CONFIG_SECTION_MISMATCH_WARN_ONLY is not set 2141 | # CONFIG_VMLINUX_MAP is not set 2142 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 2143 | # end of Compile-time checks and compiler options 2144 | 2145 | # 2146 | # Generic Kernel Debugging Instruments 2147 | # 2148 | # CONFIG_MAGIC_SYSRQ is not set 2149 | # CONFIG_DEBUG_FS is not set 2150 | CONFIG_HAVE_ARCH_KGDB=y 2151 | # CONFIG_KGDB is not set 2152 | CONFIG_ARCH_HAS_UBSAN=y 2153 | # CONFIG_UBSAN is not set 2154 | # end of Generic Kernel Debugging Instruments 2155 | 2156 | # 2157 | # Networking Debugging 2158 | # 2159 | # CONFIG_NET_DEV_REFCNT_TRACKER is not set 2160 | # CONFIG_NET_NS_REFCNT_TRACKER is not set 2161 | # CONFIG_DEBUG_NET is not set 2162 | # CONFIG_DEBUG_NET_SMALL_RTNL is not set 2163 | # end of Networking Debugging 2164 | 2165 | # 2166 | # Memory Debugging 2167 | # 2168 | # CONFIG_PAGE_EXTENSION is not set 2169 | # CONFIG_DEBUG_PAGEALLOC is not set 2170 | # CONFIG_PAGE_OWNER is not set 2171 | # CONFIG_PAGE_POISONING is not set 2172 | # CONFIG_DEBUG_RODATA_TEST is not set 2173 | CONFIG_ARCH_HAS_DEBUG_WX=y 2174 | # CONFIG_DEBUG_WX is not set 2175 | CONFIG_GENERIC_PTDUMP=y 2176 | CONFIG_HAVE_DEBUG_KMEMLEAK=y 2177 | # CONFIG_DEBUG_KMEMLEAK is not set 2178 | # CONFIG_DEBUG_OBJECTS is not set 2179 | # CONFIG_DEBUG_STACK_USAGE is not set 2180 | # CONFIG_SCHED_STACK_END_CHECK is not set 2181 | CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y 2182 | # CONFIG_DEBUG_VM is not set 2183 | # CONFIG_DEBUG_VM_PGTABLE is not set 2184 | CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y 2185 | # CONFIG_DEBUG_VIRTUAL is not set 2186 | # CONFIG_DEBUG_MEMORY_INIT is not set 2187 | # CONFIG_DEBUG_KMAP_LOCAL is not set 2188 | CONFIG_ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP=y 2189 | # CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP is not set 2190 | CONFIG_HAVE_DEBUG_STACKOVERFLOW=y 2191 | # CONFIG_DEBUG_STACKOVERFLOW is not set 2192 | # CONFIG_MEM_ALLOC_PROFILING is not set 2193 | CONFIG_CC_HAS_KASAN_GENERIC=y 2194 | CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y 2195 | CONFIG_HAVE_ARCH_KFENCE=y 2196 | # CONFIG_KFENCE is not set 2197 | # end of Memory Debugging 2198 | 2199 | # CONFIG_DEBUG_SHIRQ is not set 2200 | 2201 | # 2202 | # Debug Oops, Lockups and Hangs 2203 | # 2204 | # CONFIG_PANIC_ON_OOPS is not set 2205 | CONFIG_PANIC_ON_OOPS_VALUE=0 2206 | CONFIG_PANIC_TIMEOUT=0 2207 | # CONFIG_SOFTLOCKUP_DETECTOR is not set 2208 | # CONFIG_HARDLOCKUP_DETECTOR is not set 2209 | # CONFIG_DETECT_HUNG_TASK is not set 2210 | # CONFIG_WQ_WATCHDOG is not set 2211 | # CONFIG_WQ_CPU_INTENSIVE_REPORT is not set 2212 | # end of Debug Oops, Lockups and Hangs 2213 | 2214 | # 2215 | # Scheduler Debugging 2216 | # 2217 | # CONFIG_SCHEDSTATS is not set 2218 | # end of Scheduler Debugging 2219 | 2220 | # 2221 | # Lock Debugging (spinlocks, mutexes, etc...) 2222 | # 2223 | CONFIG_LOCK_DEBUGGING_SUPPORT=y 2224 | # CONFIG_PROVE_LOCKING is not set 2225 | # CONFIG_LOCK_STAT is not set 2226 | # CONFIG_DEBUG_SPINLOCK is not set 2227 | # CONFIG_DEBUG_MUTEXES is not set 2228 | # CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set 2229 | # CONFIG_DEBUG_RWSEMS is not set 2230 | # CONFIG_DEBUG_LOCK_ALLOC is not set 2231 | # CONFIG_DEBUG_ATOMIC_SLEEP is not set 2232 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 2233 | # CONFIG_LOCK_TORTURE_TEST is not set 2234 | # CONFIG_WW_MUTEX_SELFTEST is not set 2235 | # CONFIG_SCF_TORTURE_TEST is not set 2236 | # end of Lock Debugging (spinlocks, mutexes, etc...) 2237 | 2238 | # CONFIG_NMI_CHECK_CPU is not set 2239 | # CONFIG_DEBUG_IRQFLAGS is not set 2240 | # CONFIG_STACKTRACE is not set 2241 | # CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set 2242 | # CONFIG_DEBUG_KOBJECT is not set 2243 | 2244 | # 2245 | # Debug kernel data structures 2246 | # 2247 | # CONFIG_DEBUG_LIST is not set 2248 | # CONFIG_DEBUG_PLIST is not set 2249 | # CONFIG_DEBUG_SG is not set 2250 | # CONFIG_DEBUG_NOTIFIERS is not set 2251 | # CONFIG_DEBUG_MAPLE_TREE is not set 2252 | # end of Debug kernel data structures 2253 | 2254 | # 2255 | # RCU Debugging 2256 | # 2257 | # CONFIG_RCU_SCALE_TEST is not set 2258 | # CONFIG_RCU_TORTURE_TEST is not set 2259 | # CONFIG_RCU_REF_SCALE_TEST is not set 2260 | # CONFIG_RCU_TRACE is not set 2261 | # CONFIG_RCU_EQS_DEBUG is not set 2262 | # end of RCU Debugging 2263 | 2264 | # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set 2265 | # CONFIG_LATENCYTOP is not set 2266 | CONFIG_USER_STACKTRACE_SUPPORT=y 2267 | CONFIG_HAVE_RETHOOK=y 2268 | CONFIG_HAVE_FUNCTION_TRACER=y 2269 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 2270 | CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y 2271 | CONFIG_HAVE_DYNAMIC_FTRACE=y 2272 | CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y 2273 | CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y 2274 | CONFIG_HAVE_DYNAMIC_FTRACE_NO_PATCHABLE=y 2275 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 2276 | CONFIG_HAVE_SYSCALL_TRACEPOINTS=y 2277 | CONFIG_HAVE_C_RECORDMCOUNT=y 2278 | CONFIG_HAVE_BUILDTIME_MCOUNT_SORT=y 2279 | CONFIG_TRACING_SUPPORT=y 2280 | # CONFIG_FTRACE is not set 2281 | # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set 2282 | # CONFIG_SAMPLES is not set 2283 | CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y 2284 | 2285 | # 2286 | # x86 Debugging 2287 | # 2288 | # CONFIG_X86_VERBOSE_BOOTUP is not set 2289 | CONFIG_EARLY_PRINTK=y 2290 | # CONFIG_EARLY_PRINTK_DBGP is not set 2291 | # CONFIG_EARLY_PRINTK_USB_XDBC is not set 2292 | # CONFIG_DEBUG_TLBFLUSH is not set 2293 | CONFIG_HAVE_MMIOTRACE_SUPPORT=y 2294 | # CONFIG_X86_DECODER_SELFTEST is not set 2295 | CONFIG_IO_DELAY_0X80=y 2296 | # CONFIG_IO_DELAY_0XED is not set 2297 | # CONFIG_IO_DELAY_UDELAY is not set 2298 | # CONFIG_IO_DELAY_NONE is not set 2299 | # CONFIG_CPA_DEBUG is not set 2300 | # CONFIG_DEBUG_ENTRY is not set 2301 | # CONFIG_X86_DEBUG_FPU is not set 2302 | # CONFIG_PUNIT_ATOM_DEBUG is not set 2303 | # CONFIG_UNWINDER_FRAME_POINTER is not set 2304 | CONFIG_UNWINDER_GUESS=y 2305 | # end of x86 Debugging 2306 | 2307 | # 2308 | # Kernel Testing and Coverage 2309 | # 2310 | # CONFIG_KUNIT is not set 2311 | # CONFIG_NOTIFIER_ERROR_INJECTION is not set 2312 | # CONFIG_FAULT_INJECTION is not set 2313 | CONFIG_CC_HAS_SANCOV_TRACE_PC=y 2314 | # CONFIG_RUNTIME_TESTING_MENU is not set 2315 | CONFIG_ARCH_USE_MEMTEST=y 2316 | # CONFIG_MEMTEST is not set 2317 | # end of Kernel Testing and Coverage 2318 | 2319 | # 2320 | # Rust hacking 2321 | # 2322 | # end of Rust hacking 2323 | # end of Kernel hacking 2324 | -------------------------------------------------------------------------------- /main.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kspalaiologos/floppy-linux/79de444bec1d80eeac0c6df37d22882dc3391c38/main.pdf -------------------------------------------------------------------------------- /main.tex: -------------------------------------------------------------------------------- 1 | \documentclass{beamer} 2 | \usetheme{Madrid} 3 | \usecolortheme{default} 4 | \usepackage[]{minted} 5 | \usepackage{fancyvrb} 6 | \usepackage{tikz} 7 | \usepackage{multicol} 8 | \usepackage{graphicx} 9 | \usepackage{hyperref} 10 | \usepackage{subfigure} 11 | \usetikzlibrary{positioning,matrix,automata,angles,quotes,positioning,fit,backgrounds,intersections,arrows,calc,tikzmark} 12 | 13 | \setbeamercovered{transparent} 14 | 15 | \title[Linux on a floppy] 16 | {Can we boot Linux from just a floppy?} 17 | \subtitle{An exercise in minimalism.} 18 | 19 | \author[Kamila Szewczyk] % (optional, for multiple authors) 20 | {Kamila Szewczyk, \textit{Association for Computational Heresy}} 21 | 22 | \date[19 Sesja Linuksowa] % (optional) 23 | {19 Sesja Linuksowa, Wroclaw, April 2025} 24 | 25 | \definecolor{uoftblue}{RGB}{6,41,88} 26 | \setbeamercolor{titlelike}{bg=uoftblue} 27 | \setbeamerfont{title}{series=\bfseries} 28 | 29 | \setcounter{tocdepth}{4} 30 | 31 | \begin{document} 32 | 33 | \frame{\titlepage} 34 | 35 | \section{Introduction} 36 | \begin{frame}[t] 37 | \frametitle{Introduction} 38 | \begin{itemize} 39 | \item Some common storage media. 40 | \end{itemize} 41 | \begin{figure} 42 | \centering 43 | \subfigure[CD-ROM]{ 44 | \includegraphics[width=0.2\textwidth]{cd.jpg} 45 | } 46 | \hspace{0.5cm} 47 | \subfigure[USB drive]{ 48 | \includegraphics[width=0.2\textwidth]{thumb-drive.jpg} 49 | } 50 | \hspace{0.5cm} 51 | \subfigure[SD Card]{ 52 | \includegraphics[width=0.2\textwidth]{sd.jpg} 53 | } 54 | \end{figure} 55 | \begin{itemize} 56 | \item Their capacities are usually overwhelming and measured in gigabytes ($10^9$ bytes). 57 | \item All of them constitute popular boot and installation media for Linux. 58 | \item Do we really need this much storage just to boot an operating system? 59 | \end{itemize} 60 | \end{frame} 61 | 62 | \begin{frame}[t] 63 | \frametitle{Introduction} 64 | \begin{itemize} 65 | \item Prior art: 66 | \begin{itemize} 67 | \item Damn Small Linux (DSL) - 50MB - A live CD distribution for 486+ CPUs, 8MB of RAM. 68 | \item Tiny Core Linux - 17MB - Perhaps the most popular minimalist distribution. 69 | \item NanoLinux - 14MB - Discontinued project. 70 | \end{itemize} 71 | \item All of those contenders are quite small and still provide many interesting features like web browsers, text editors or even games. 72 | \item They also lag behind in kernel versions. 73 | \item What if we didn't want \textit{any} of the nice features, and simply wanted a minimal TTY environment that still formally runs Linux? 74 | \end{itemize} 75 | \end{frame} 76 | 77 | \begin{frame}[t] 78 | \frametitle{Introduction} 79 | \begin{itemize} 80 | \item As a goalpost of our experiment, we will use this magical device: 81 | \end{itemize} 82 | \begin{figure} 83 | \centering 84 | \includegraphics[width=0.4\textwidth]{floppy.jpg} 85 | \caption{A 3.5'' floppy disk.} 86 | \end{figure} 87 | \begin{itemize} 88 | \item Each of these holds about 1.44MB of data, about 0.2\% of a standard 700MB CD-ROM. 89 | \item The best widespread contender, Tiny Core Linux, needs at least 10 of these to fit. 90 | \end{itemize} 91 | \end{frame} 92 | 93 | \section{First steps} 94 | \begin{frame}[t] 95 | \frametitle{Toolchain} 96 | \begin{itemize} 97 | \item It is clear that we will have to compile the kernel and the userland ourselves. 98 | \item Because 32-bit x86 code tends to be smaller than its 64-bit counterpart, we will build a i486+ kernel. 99 | \begin{itemize} \item This has some more advantages: we turn off fragments of the kernel code responsible for complicated hardware instructions that the 486 simply doesn't have. \end{itemize} 100 | \item But we don't want just \textit{any} 486 ELF toolchain: $\texttt{glibc}$ is much too bulky for our needs. 101 | \item Instead, we will use $\texttt{musl}$, a lightweight C library, which tends to be much smaller and compatible with $\texttt{glibc}$ on many counts. 102 | \item Equipped with $\texttt{i486-linux-musl-gcc}$, we may continue. 103 | \item In case you want to follow along, you can get this from $\texttt{https://musl.cc/}$. 104 | \end{itemize} 105 | \end{frame} 106 | 107 | \begin{frame}[t,fragile] 108 | \frametitle{Toolchain: experiment} 109 | \begin{Verbatim}[commandchars=\\\{\}] 110 | % \textcolor{red}{cat hello.c} 111 | #include 112 | int main(void) { puts("Hello, world!"); for (;;) ; } 113 | % \textcolor{red}{i486-linux-musl-gcc hello.c -o hello -Os -static -s} 114 | % \textcolor{red}{wc -c hello && ./hello} 115 | 4948 hello 116 | Hello, world! 117 | % \textcolor{red}{ldd hello} 118 | not a dynamic executable 119 | \end{Verbatim} 120 | \begin{itemize} 121 | \item The resulting 32-bit program only uses system calls and does not depend on any shared libraries. 122 | \item 5KB for a simple program is not fantastic, but it is a good start. 123 | \item Let's not get off track. We will get back to that later. 124 | \end{itemize} 125 | \end{frame} 126 | 127 | \begin{frame}[t,fragile] 128 | \frametitle{Kernel \& initrd} 129 | \begin{itemize} 130 | \item Let's try to get something booting first. 131 | \item The specific kernel that we will be working with is \verb|linux-6.13.8| - most recent version at the time of writing. 132 | \item Compiling the kernel by itself is pretty basic nitty-gritty. 133 | \begin{itemize} 134 | \item Use \verb|arch/x86/configs/i386_defconfig| as a base. 135 | \item Enable TTY and \verb|printk| support (for the latter you need expert settings enabled). 136 | \item Then: \verb|make ARCH=x86 CROSS_COMPILE=i486-linux-musl- bzImage|. 137 | \end{itemize} 138 | \item Before we can compile and boot the kernel, we need to prepare the initrd. 139 | \item The $\textit{Hello, world!}$ program is a good initial candidate: together with a small bootloader, it will leave us with a lot of space for the kernel. 140 | \item We put the init program in a CPIO archive, which is a standard format for initrd images. 141 | \end{itemize} 142 | \end{frame} 143 | 144 | \begin{frame}[t,fragile] 145 | \frametitle{Kernel \& initrd} 146 | \begin{itemize} 147 | \item Boot with the following command: 148 | \begin{Verbatim} 149 | qemu-system-i386 -kernel arch/x86/boot/bzImage \ 150 | -initrd ./rootfs.cpio.gz 151 | \end{Verbatim} 152 | \end{itemize} 153 | \begin{center} 154 | \includegraphics[width=0.7\textwidth]{hello.png} 155 | \end{center} 156 | \end{frame} 157 | 158 | \begin{frame}[t,fragile] 159 | \frametitle{Kernel \& initrd} 160 | \begin{itemize} 161 | \item Excellent! We have a working kernel and initrd. 162 | \item Bad news: the kernel image is 10.8 MiB. 163 | \item Before we start trying to remove stuff from the kernel, let's try to build a functional initrd using BusyBox. Then it's easier to tell if the stuff we are removing is actually used by something. 164 | \item Specifically, we will use BusyBox 1.35.0. The binary is quite large, at around 1.0 MiB, but it is statically linked and contains a lot of useful tools. 165 | \end{itemize} 166 | \end{frame} 167 | 168 | \begin{frame}[t,fragile] 169 | \frametitle{Kernel \& initrd} 170 | \begin{itemize} 171 | \item \verb|init| program: install BusyBox, mount \verb|devtmpfs| and run \verb|/bin/init|. 172 | \end{itemize} 173 | \vspace{0.25cm} 174 | \begin{minted}[fontsize=\scriptsize,frame=single]{c} 175 | int main(int argc, char *argv[]) { 176 | pid_t pid = fork(); 177 | if (pid == 0) { 178 | char * args[] = { "/bin/busybox", "--install", "-s", NULL }; 179 | execv(args[0], args); 180 | perror("execv failed"), exit(1); 181 | } else if (pid < 0) 182 | perror("fork failed"), exit(1); 183 | int status; waitpid(pid, &status, 0); 184 | if (!WIFEXITED(status)) 185 | perror("waitpid"), exit(1); 186 | if (mount("none", "/dev", "devtmpfs", 0, "")) perror("mount"), exit(1); 187 | if (mount("none", "/proc", "proc", 0, "")) perror("mount"), exit(1); 188 | if (mount("none", "/sys", "sysfs", 0, "")) perror("mount"), exit(1); 189 | // /bin/init is dmesg -n 1;exec sh 190 | char * args[] = { "/bin/busybox", "sh", "/bin/init", NULL }; 191 | execv(args[0], args); perror("execv"); exit(1); 192 | } 193 | \end{minted} 194 | \end{frame} 195 | 196 | \begin{frame}[t,fragile] 197 | \frametitle{Kernel \& initrd} 198 | \begin{center} 199 | \includegraphics[width=0.8\textwidth]{busybox1.png} 200 | \end{center} 201 | \end{frame} 202 | 203 | \section{Kernel} 204 | \begin{frame}[t,fragile] 205 | \frametitle{Stripping the kernel} 206 | \begin{itemize} 207 | \item We have a Linux system that fits in about 11 MiB. The CPIO with the \verb|initrd| is about 699 KiB: we will have to look into that, because surely we can improve on it. 208 | \item The next two steps are compressing these two components well enough to fit in a total of 1.44 MB. We will start with the kernel, as it's the biggest offender. 209 | \begin{itemize} 210 | \item First step: Use XZ compression, disable the support for all other codecs except \verb|gzip| for \verb|initrd|, compile with \verb|-Os|. 211 | \item These changes alone bring the kernel down to about 6.7 MiB. 212 | \end{itemize} 213 | \item Unfortunately, together with the initrd we are still quite far away from our goal: 214 | \begin{Verbatim} 215 | 6763008 arch/x86/boot/bzImage 216 | 669206 rootfs.cpio.gz 217 | 7432214 total 218 | \end{Verbatim} 219 | \end{itemize} 220 | \end{frame} 221 | 222 | \begin{frame}[t,fragile] 223 | \frametitle{Stripping the kernel} 224 | \begin{itemize} 225 | \item We will squeeze the kernel as much as possible by removing device drivers, filesystems, networking features, debugging options, and other features that we don't need. 226 | \item Further, the build script supports embedding the initrd in the kernel image. We will use \verb|xz| compression (keeping in mind that we need \verb|--check=crc32| for the kernel to boot). 227 | \item The result? \verb|1282560 arch/x86/boot/bzImage| - the kernel + initrd fit in 1.28MB, much below the 1.44MB limit. 228 | \end{itemize} 229 | \end{frame} 230 | 231 | \begin{frame}[t,fragile] 232 | \frametitle{Stripping the kernel} 233 | \begin{itemize} 234 | \item The result? \verb|1282560 arch/x86/boot/bzImage| - the kernel + initrd fit in 1.28MB, much below the 1.44MB limit. 235 | \item That's very nice, but we can't really do anything with our operating system other than idling in the shell. 236 | \item I personally don't like \verb|vi| and would prefer a different text editor. Also, I would like to put some cool programs in the initramfs to play with - that would be best achieved with a dynamically linked libc. 237 | \item Also, we haven't actually figured out how to make this boot off an actual floppy (yet). 238 | \end{itemize} 239 | \end{frame} 240 | 241 | \begin{frame}[t,fragile] 242 | \frametitle{Goals} 243 | \begin{itemize} 244 | \item Now that we have a MVP, we want to accomplish the following: 245 | \begin{enumerate} 246 | \item Build a bootable floppy disk instead of relying on \verb|qemu-system-i386 -kernel arch/x86/boot/bzImage| to boot. 247 | \item Strip down busybox to remove things that we won't need. For example user management, various mkfs/fsck programs for filesystems that we don't support. 248 | \item Add more programs to the initramfs and features to the kernel: interpreters, compilers, games, etc. 249 | \end{enumerate} 250 | \item Of course, eventually we will run out of space. Then we will look into custom compression. 251 | \end{itemize} 252 | \end{frame} 253 | 254 | \begin{frame}[t,fragile] 255 | \frametitle{Adding networking} 256 | \begin{itemize} 257 | \item We will enable networking, E1000 support, the TCP/IP stack and the basic security features. 258 | \item This unfortunately makes the kernel swell up quite a bit. 259 | \item Configuring networking with busybox is tricky. I wrote the following script: 260 | \end{itemize} 261 | \begin{minted}[fontsize=\scriptsize,frame=single]{bash} 262 | #!/bin/sh 263 | ip link set eth0 up 264 | LEASE=$(udhcpc -i eth0 -n 2>&1) 265 | IP=$(echo "$LEASE" | awk '/lease of/ {print $4}') 266 | GATEWAY=$(echo "$LEASE" | awk '/obtained from/ {print $7}' | tr -d ',') 267 | if [ -n "$IP" ] && [ -n "$GATEWAY" ]; then 268 | ip addr flush dev eth0 269 | ip addr add "$IP/24" dev eth0 270 | ip route add default via "$GATEWAY" 271 | echo "Network configured: IP=$IP, Gateway=$GATEWAY" 272 | else 273 | echo "Failed to obtain an IP address via DHCP." && exit 1 274 | fi 275 | \end{minted} 276 | \end{frame} 277 | 278 | \begin{frame}[t,fragile] 279 | \frametitle{Networking} 280 | \begin{center} 281 | \includegraphics[width=0.8\textwidth]{net.png} 282 | \end{center} 283 | \end{frame} 284 | 285 | \begin{frame}[t,fragile] 286 | \frametitle{Checkpoint: list of features} 287 | \begin{itemize} 288 | \item \verb|printk| for debugging, ISA bus support, R/W block layer, compacting memory manager, PCI bus support. 289 | \item SATA/ATA, SCSI, E1000 (generic network card interface) support, IPv4 networking, DNS resolution, FAT32 file systems. 290 | \item BusyBox with a DHCP network setup script, \verb|dmesg|, \verb|wget|, \verb|vi|, \verb|sh|, \verb|awk|, \verb|dc|, \verb|bc|, \verb|httpd|, and so on. 291 | \item Caveat: the XZ image is 1'835'520. We will implement a custom compression algorithm to fit this in a floppy. 292 | \end{itemize} 293 | \end{frame} 294 | 295 | \begin{frame}[t,fragile] 296 | \frametitle{Kernel Compression} 297 | \begin{itemize} 298 | \item Basic idea: we put the initrd and kernel in the same logical container, which is then bootstrapped by \verb|mkpiggy| (a custom program that Linux uses for compressed kernels). 299 | \item Nominally, this is simple on paper: we start with some existing compression wrapper (e.g. XZ), blank out the source code, change the makefile to use a different compressor, then embed the decompressor in the kernel. 300 | \item Issues: 301 | \begin{itemize} 302 | \item We are looking for a somewhat fast statistical compressor that can beat XZ quite significantly. 303 | \item We would prefer it to not use gobs of memory and to be able to run on a 486. 304 | \item It needs to fit in the piggyback module together with the compressed kernel and bootloader, i.e. it can not be too large. 305 | \end{itemize} 306 | \end{itemize} 307 | \end{frame} 308 | 309 | \begin{frame}[t,fragile] 310 | \frametitle{Kernel Compression} 311 | \begin{center} 312 | \includegraphics[width=0.6\textwidth]{explain.png} 313 | \end{center} 314 | \end{frame} 315 | 316 | \begin{frame}[t,fragile] 317 | \frametitle{Kernel Compression} 318 | \begin{itemize} 319 | \item We will reuse some common ideas: PAQ-like context-adaptive binary arithmetic coding, a context model with a rudimentary context mixer between finite order context models and a match model that seldom disables it. 320 | \item The mixer output is filtered by a chain of a few APMs. The input is filtered by an E8E9 transform together with a simple disassembly pass that recognises prefixes and opcodes. 321 | \item The biggest issue is integrating this with the Linux kernel, which is somewhat unfamiliar to me as a C code base. 322 | \item If you want to know what any of this means, it will probably be explained in my compression book that I talked about here about a year ago. 323 | \end{itemize} 324 | \end{frame} 325 | 326 | \begin{frame}[t,fragile] 327 | \frametitle{Kernel Compression} 328 | \begin{itemize} 329 | \item To not go into too much detail, the decompression stub was easily produced in a few hours. 330 | \item It's somewhat fast (20s to decode the kernel) on my machine. 331 | \item Most importantly, the kernel now fits into 1.44MB! 332 | \begin{Verbatim} 333 | 1413632 arch/x86/boot/bzImage 334 | \end{Verbatim} 335 | \item Two more goal posts to score: a standalone boot loader ($\Rightarrow$ a working bootable floppy image) and some cool stuff in the user land if we can squeeze it in. 336 | \end{itemize} 337 | \end{frame} 338 | 339 | \begin{frame}[t,fragile] 340 | \frametitle{The Bootloader} 341 | \begin{itemize} 342 | \item Written from scratch in x86 assembly, about 300 lines of code. 343 | \item Core difficulties are: 344 | \begin{itemize} 345 | \item Enabling the A20 gate (requires some trickery because of how many disjoint methods there are - via BIOS, via keyboard, etc). 346 | \item Operating in Unreal Mode so we can use BIOS interrupts to move stuff from conventional memory containing sectors read to a high memory address where the kernel expects to be loaded. 347 | \item Loading the GDT and properly invoking the kernel, but that's easy. 348 | \end{itemize} 349 | \item It ends up taking less than two sectors in total even with my sloppy and rushed programming. 350 | \end{itemize} 351 | \end{frame} 352 | 353 | \begin{frame}[t,fragile] 354 | \frametitle{End Result} 355 | \begin{itemize} 356 | \item Direct download (1.44M floppy image): 357 | \begin{itemize} 358 | \item \url{https://palaiologos.rocks/doc/projects/floppy-linux.img} 359 | \end{itemize} 360 | \item This also version features \verb|fasm| (Flat Assembler by Tomek Grysztar) in the initrd. 361 | \item Adding an alternative program that is about 120KB in size was also possible, but it quite like \verb|fasm| and don't see the point in doing that. 362 | \end{itemize} 363 | \end{frame} 364 | 365 | \begin{frame}[t,fragile] 366 | \frametitle{End Result: Full list of features (I)} 367 | \begin{itemize} 368 | \item \textit{All} of BusyBox; abbreviated list below: 369 | \begin{itemize} 370 | \item Shell utilities: the \verb|ash| shell, the \verb|hush| shell, \verb|base32|, \verb|base64|, \verb|chattr|, \verb|chmod|, \verb|cp|, \verb|date|, \verb|dd|, \verb|df|, \verb|egrep|, \verb|fgrep|, \verb|getopt|, \verb|iostat|, \verb|kill|, \verb|ln|, \verb|mknod|, \verb|mktemp|, \verb|mount|, \verb|more|, \verb|less|, \verb|netstat|, \verb|nice|, \verb|pipe-progress|, \verb|ps|, \verb|rm|, \verb|sync|, \verb|bc|, \verb|cal|, \verb|crc32|, \verb|dc|, \verb|diff|, \verb|du|, \verb|expand|, \verb|factor|, \verb|find|, \verb|fold|, \verb|hexdump|, \verb|install|, \verb|md5sum|, \verb|nproc|, \verb|openvt|, \verb|pgrep|, \verb|printf|, \verb|pscan|, \verb|pstree|, \verb|script|, \verb|seq|, \verb|sha*sum|, \verb|shuf|, \verb|sort|, \verb|split|, \verb|strings|, \verb|tail|, \verb|tee|, \verb|uniq|, \verb|man|. 371 | \item Compression/archiving: \verb|cpio|, \verb|gzip|, \verb|gunzip|, \verb|lzop|, \verb|rpm|, \verb|tar|, \verb|vi|, \verb|ar|, \verb|bunzip2|, \verb|bzip2|, \verb|dpkg|, \verb|lzcat|, \verb|lzma|, \verb|unzip|, \verb|xz|. 372 | \item System management: \verb|dmesg|, \verb|setfont|, \verb|powertop|, \verb|crond|, \verb|crontab|, \verb|lsof|, \verb|lspci|. 373 | \item Networking: \verb|ping|, \verb|udhcpc|, \verb|tftpd|, \verb|telnet|, \verb|sendmail|, \verb|ntpd|, \verb|inetd|, \verb|httpd|, \verb|ftpd|, \verb|arping|, \verb|ftpget|, \verb|ftpput|, \verb|nc|, \verb|traceroute|, \verb|wget|. 374 | \item Editors: \verb|ed|, \verb|sed|, \verb|awk|, \verb|vi|, \verb|hexedit|, \verb|patch|. 375 | \end{itemize} 376 | \end{itemize} 377 | \end{frame} 378 | 379 | \begin{frame}[t,fragile] 380 | \frametitle{End Result: Full list of features (II)} 381 | \begin{itemize} 382 | \item Kernel: ATA, SATA, PCI, IDE support; MS-DOS filesystems (read/write), mitigations. 383 | \item SCSI, E1000 (generic network card interface) support, IPv4 networking, DNS resolution. 384 | \item Notably no IPv6 or EXT4 support (they're too bulky). 385 | \item Needs at least 70MB of RAM for the decompressor. Not that uncommon among i486/i586 machines. 386 | \item Games: \verb|2048|, \verb|chess|; Demos: \verb|donut|. 387 | \end{itemize} 388 | \end{frame} 389 | 390 | \begin{frame} 391 | \frametitle{Live demo!} 392 | \end{frame} 393 | 394 | \begin{frame}[t,fragile] 395 | \frametitle{Hacking} 396 | \begin{itemize} 397 | \item Future ideas: 398 | \begin{itemize} 399 | \item Strip down the BusyBox a bit more to make some space in the initrd for cooler stuff. 400 | \item Add a \verb|.profile| and a cool rice to the floppy disk Linux distribution. 401 | \end{itemize} 402 | \item Programs to bundle: 403 | \begin{itemize} 404 | \item Terminal games. 405 | \item Interpreters and compilers. 406 | \item System rescue tools? 407 | \end{itemize} 408 | \item Package manager: 409 | \begin{itemize} 410 | \item Download a platform toolchain (\url{https://skarnet.org/toolchains/native/i486-linux-musl_i486-14.2.0.tar.xz}), compile source packages. 411 | \end{itemize} 412 | \end{itemize} 413 | \end{frame} 414 | 415 | \begin{frame} 416 | \frametitle{Thanks!} 417 | \begin{itemize} 418 | \item \url{https://palaiologos.rocks} 419 | \item \url{https://github.com/kspalaiologos} 420 | \item \url{mailto:kszewczyk@acm.org} 421 | \item I hope that you liked this talk. Unfortunately due to real life circumstances and my university obligations - I am currently working on a high-profile thesis about genome compression - I started working on these slides and the code, from scratch, only on Monday 24/03 and was finished by Wednesday 26/03. 422 | \item This explains why the decompression performance is not top notch and the boot sector is holey. 423 | \end{itemize} 424 | \end{frame} 425 | 426 | \end{document} -------------------------------------------------------------------------------- /rootfs.cpio: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kspalaiologos/floppy-linux/79de444bec1d80eeac0c6df37d22882dc3391c38/rootfs.cpio --------------------------------------------------------------------------------