etc.git


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