etc~ scripts and random things |
| git clone https://github.com/djnnvx/etc.git |
| log | files | refs | archive |
kernel.config (5944B)
1 # USB/IP fuzzing VM — minimal kernel configuration fragment. 2 # 3 # Applied over `make allnoconfig` using: 4 # scripts/kconfig/merge_config.sh -m .config ../qemu/kernel.config 5 # make olddefconfig 6 # 7 # Goal: boots in QEMU in <2 seconds with USB/IP modules available. 8 # Strips everything not needed: no sound, no DRM, no filesystems beyond 9 # initramfs, no USB devices other than the IP-over-TCP stack. 10 11 # ── basic 64-bit SMP kernel ────────────────────────────────────────────── 12 CONFIG_64BIT=y 13 CONFIG_SMP=y 14 CONFIG_NR_CPUS=4 15 CONFIG_PREEMPT_NONE=y 16 CONFIG_HZ_100=y 17 18 # ── needed for kernel to function correctly ────────────────────────────── 19 CONFIG_PRINTK=y 20 CONFIG_BUG=y 21 CONFIG_ELF_CORE=n 22 CONFIG_FUTEX=y 23 CONFIG_EPOLL=y 24 CONFIG_SIGNALFD=y 25 CONFIG_EVENTFD=y 26 CONFIG_AIO=y 27 CONFIG_ADVISE_SYSCALLS=y 28 CONFIG_MEMFD_CREATE=y 29 CONFIG_POSIX_TIMERS=y 30 31 # ── memory ─────────────────────────────────────────────────────────────── 32 CONFIG_MEMORY_ISOLATION=n 33 CONFIG_SLUB=y 34 # KASAN requires slab merging disabled — merged slabs collapse object types 35 # together, destroying redzone separation and defeating heap corruption detection 36 CONFIG_SLAB_MERGE_DEFAULT=n 37 38 # ── networking ─────────────────────────────────────────────────────────── 39 CONFIG_NET=y 40 CONFIG_INET=y 41 CONFIG_PACKET=y 42 CONFIG_UNIX=y 43 CONFIG_IPV6=n 44 CONFIG_TCP_CONG_CUBIC=y 45 CONFIG_DEFAULT_TCP_CONG="cubic" 46 CONFIG_NETFILTER=n 47 CONFIG_NET_SCHED=n 48 49 # ── network device drivers ─────────────────────────────────────────────── 50 CONFIG_NETDEVICES=y 51 CONFIG_ETHERNET=y 52 CONFIG_NET_VENDOR_INTEL=y 53 CONFIG_E1000=y # QEMU default NIC (e1000) 54 CONFIG_VIRTIO_NET=y # Faster option if using -device virtio-net-pci 55 56 # ── USB/IP (the actual target) ─────────────────────────────────────────── 57 CONFIG_USB=y 58 CONFIG_USB_SUPPORT=y 59 CONFIG_USB_HCD_TEST_MODE=n 60 CONFIG_USB_PCI=y 61 CONFIG_USB_OHCI_HCD=y # USB host controller in QEMU 62 CONFIG_USB_OHCI_HCD_PCI=y 63 CONFIG_USB_EHCI_HCD=y 64 CONFIG_USB_EHCI_PCI=y 65 CONFIG_USBIP_CORE=y 66 CONFIG_USBIP_HOST=y 67 CONFIG_USBIP_VHCI_HCD=y 68 CONFIG_USBIP_DEBUG=n 69 70 # ── modules (needed for modprobe in /init) ─────────────────────────────── 71 CONFIG_MODULES=y 72 CONFIG_MODULE_UNLOAD=y 73 CONFIG_MODULE_FORCE_UNLOAD=n 74 75 # ── filesystem / initramfs ─────────────────────────────────────────────── 76 CONFIG_TMPFS=y 77 CONFIG_PROC_FS=y 78 CONFIG_PROC_SYSCTL=y 79 CONFIG_SYSFS=y 80 CONFIG_DEVTMPFS=y 81 CONFIG_DEVTMPFS_MOUNT=y 82 CONFIG_BLK_DEV_INITRD=y 83 CONFIG_RD_GZIP=y 84 CONFIG_INITRAMFS_SOURCE="" 85 86 # ── TTY / serial console ───────────────────────────────────────────────── 87 CONFIG_TTY=y 88 CONFIG_VT=n 89 CONFIG_SERIAL_8250=y 90 CONFIG_SERIAL_8250_CONSOLE=y 91 CONFIG_SERIAL_8250_NR_UARTS=4 92 93 # ── PCI (needed for e1000) ─────────────────────────────────────────────── 94 CONFIG_PCI=y 95 CONFIG_PCIEPORTBUS=y 96 97 # ── clock / timers ─────────────────────────────────────────────────────── 98 CONFIG_RTC_CLASS=y 99 100 # ── disable as much as possible for fast boot ──────────────────────────── 101 CONFIG_ACPI=n 102 CONFIG_ACPI_SLEEP=n 103 CONFIG_HIBERNATION=n 104 CONFIG_SUSPEND=n 105 CONFIG_PM=n 106 CONFIG_SOUND=n 107 CONFIG_DRM=n 108 CONFIG_FB=n 109 CONFIG_FRAMEBUFFER_CONSOLE=n 110 CONFIG_HID=n 111 CONFIG_INPUT=n 112 CONFIG_SERIO=n 113 CONFIG_WIRELESS=n 114 CONFIG_RFKILL=n 115 CONFIG_CRYPTO_HW=n 116 117 # ── sanitizers (KASAN, KCOV, UBSAN) ───────────────────────────────────── 118 # KASAN: catches heap overflows, UAF, OOB reads in kernel code. 119 # Without this, usbip_recv_xbuff / usbip_recv_iso heap overflows are invisible. 120 # Overhead: ~2x slowdown, 8x extra RAM for shadow memory. Increase -m to 512M. 121 CONFIG_KASAN=y 122 CONFIG_KASAN_GENERIC=y 123 CONFIG_KASAN_OUTLINE=y # outline = smaller code, faster compile, same detection 124 CONFIG_KASAN_TAGS=n 125 126 # UBSAN: catches undefined behaviour (signed overflow, out-of-bounds, etc.) 127 CONFIG_UBSAN=y 128 CONFIG_UBSAN_BOUNDS=y 129 CONFIG_UBSAN_SANITIZE_ALL=y 130 131 # DEBUG_LIST: catches list corruption (double-free via list_del poisoning) 132 CONFIG_DEBUG_LIST=y 133 134 # KCOV: exports kernel PC coverage to userspace via /sys/kernel/debug/kcov. 135 # Needed for the KCOV shim that feeds kernel coverage into AFL++ bitmap. 136 CONFIG_KCOV=y 137 CONFIG_KCOV_ENABLE_COMPARISONS=y 138 139 # DEBUGFS: required by KCOV (mounts at /sys/kernel/debug) 140 CONFIG_DEBUG_FS=y 141 142 # Panic on oops: KASAN reports are oopses. This makes them immediately reboot 143 # the VM, which AFL++ detects as ECONNRESET → crash. Without this, a KASAN 144 # report prints and execution continues with corrupted state. 145 CONFIG_PANIC_ON_OOPS=y 146 147 # ── size optimization ──────────────────────────────────────────────────── 148 # NOTE: CC_OPTIMIZE_FOR_SIZE is intentionally disabled with KASAN. 149 # KASAN adds heavy instrumentation that conflicts with aggressive size opts. 150 CONFIG_CC_OPTIMIZE_FOR_SIZE=n 151 CONFIG_KERNEL_XZ=n 152 CONFIG_KERNEL_GZIP=y