[DRAFT PATCH nixpkgs] smaller kernel
minimize spectrum-vm kernel --- pkgs/os-specific/linux/spectrum/linux/vm.nix | 449 +++++++++++++++++++ 1 file changed, 449 insertions(+) diff --git a/pkgs/os-specific/linux/spectrum/linux/vm.nix b/pkgs/os-specific/linux/spectrum/linux/vm.nix index 9c9ba78b691..c313697eeb2 100644 --- a/pkgs/os-specific/linux/spectrum/linux/vm.nix +++ b/pkgs/os-specific/linux/spectrum/linux/vm.nix @@ -4,6 +4,7 @@ with lib.kernel; linux.override { structuredExtraConfig = { + VIRTIO_CONSOLE = yes; VIRTIO_PCI = yes; VIRTIO_BLK = yes; VIRTIO_WL = yes; @@ -21,5 +22,453 @@ linux.override { NET_9P = yes; NET_9P_VIRTIO = yes; "9P_FS" = yes; + + ACPI = no; + AD525X_DPOT = no; + ADIN_PHY = no; + AF_KCM = no; + ALTERA_STAPL = no; + ALTERA_TSE = no; + AMD_PHY = no; + APDS9802ALS = no; + AQUANTIA_PHY = no; + AT803X_PHY = no; + ATA = no; + ATA_OVER_ETH = no; + ATM_DRIVERS = no; + AX88796B_PHY = no; + B53 = no; + BCM87XX_PHY = no; + BCMA = no; + BCM_KONA_USB2_PHY = no; + BLK_DEV_DRBD = no; + BLK_DEV_FD = no; + BLK_DEV_LOOP = no; + BLK_DEV_NULL_BLK = no; + BLK_DEV_RBD = no; + BROADCOM_PHY = no; + BT = no; + C2PORT = no; + CAIF = no; + CAN = no; + CDROM_PKTCDVD = no; + CHROME_PLATFORMS = no; + CICADA_PHY = no; + CMA = no; + COMEDI = no; + CORTINA_PHY = no; + COUNTER = no; + DAVICOM_PHY = no; + DEV_DAX = no; + DMADEVICES = no; + DNET = no; + DP83822_PHY = no; + DP83848_PHY = no; + DP83867_PHY = no; + DP83TC811_PHY = no; + DRM_ETNAVIV = no; + DRM_PANEL_ORIENTATION_QUIRKS = module; + DS1682 = no; + DUMMY_IRQ = no; + ECHO = no; + ENCLOSURE_SERVICES = no; + ETHOC = no; + EXT2_FS = no; + EXT4_USE_FOR_EXT2 = yes; + EXTCON = no; + FIELDBUS_DEV = no; + FPGA = no; + FW_LOADER_USER_HELPER = no; + GENERIC_PHY = no; + GNSS = no; + GREYBUS = no; + GS_FPGABOOT = no; + HAMRADIO = no; + HMC6352 = no; + HSI = no; + HVC_XEN = no; + HW_RANDOM_TIMERIOMEM = no; + HW_RANDOM_VIA = no; + I2C_ALGOPCF = no; + I2C_CHARDEV = no; + I2C_COMPAT = no; + I2C_HELPER_AUTO = no; + I2C_SLAVE_EEPROM = no; + I2C_STUB = no; + I3C = no; + I8K = no; + ICPLUS_PHY = no; + ICS932S401 = no; + IEEE802154_DRIVERS = no; + IIO = no; + INFINIBAND = no; + INPUT_JOYSTICK = no; + INPUT_KEYBOARD = no; + INPUT_MISC = no; + INPUT_MOUSE = no; + INPUT_TABLET = no; + INPUT_TOUCHSCREEN = no; + INTEL_TH = no; + INTEL_XWAY_PHY = no; + INTERCONNECT = no; + IOMMU_IOVA = module; + IOSF_MBI = module; + IPACK_BUS = no; + IPMB_DEVICE_INTERFACE = no; + IPMI_HANDLER = no; + ISL29003 = no; + ISL29020 = no; + LEDS_APU = no; + LEDS_BD2802 = no; + LEDS_BLINKM = no; + LEDS_CLASS_FLASH = no; + LEDS_CLEVO_MAIL = no; + LEDS_GPIO = no; + LEDS_LM3530 = no; + LEDS_LM3532 = no; + LEDS_LM3533 = no; + LEDS_LM355x = no; + LEDS_LM3642 = no; + LEDS_LP3944 = no; + LEDS_LP3952 = no; + LEDS_LP5521 = no; + LEDS_LP5523 = no; + LEDS_LP5562 = no; + LEDS_LP8501 = no; + LEDS_MC13783 = no; + LEDS_MENF21BMC = no; + LEDS_MLXCPLD = no; + LEDS_MLXREG = no; + LEDS_MT6323 = no; + LEDS_PCA9532 = no; + LEDS_PCA955X = no; + LEDS_PCA963X = no; + LEDS_REGULATOR = no; + LEDS_TCA6507 = no; + LEDS_TI_LMU_COMMON = no; + LEDS_TLC591XX = no; + LEDS_TRIGGER_ACTIVITY = no; + LEDS_TRIGGER_BACKLIGHT = no; + LEDS_TRIGGER_CAMERA = no; + LEDS_TRIGGER_DEFAULT_ON = no; + LEDS_TRIGGER_GPIO = no; + LEDS_TRIGGER_HEARTBEAT = no; + LEDS_TRIGGER_NETDEV = no; + LEDS_TRIGGER_ONESHOT = no; + LEDS_TRIGGER_PATTERN = no; + LEDS_TRIGGER_TIMER = no; + LEDS_TRIGGER_TRANSIENT = no; + LEDS_USER = no; + LSI_ET1011C_PHY = no; + LXT_PHY = no; + MACINTOSH_DRIVERS = no; + MAILBOX = no; + MARVELL_10G_PHY = no; + MARVELL_PHY = no; + MCB = no; + MDIO_BITBANG = no; + MDIO_MSCC_MIIM = no; + MEDIA_SUPPORT = no; + MEMSTICK = no; + MFD_CROS_EC = no; + MICREL_PHY = no; + MICROCHIP_PHY = no; + MICROCHIP_T1_PHY = no; + MICROSEMI_PHY = no; + MMC = no; + MOST = no; + MTD = no; + MWAVE = no; + NATIONAL_PHY = no; + NET_DSA_BCM_SF2 = no; + NET_DSA_LANTIQ_GSWIP = no; + NET_DSA_LOOP = no; + NET_DSA_MICROCHIP_KSZ8795 = no; + NET_DSA_MICROCHIP_KSZ9477 = no; + NET_DSA_MT7530 = no; + NET_DSA_MV88E6060 = no; + NET_DSA_MV88E6XXX = no; + NET_DSA_QCA8K = no; + NET_DSA_REALTEK_SMI = no; + NET_DSA_SMSC_LAN9303_I2C = no; + NET_DSA_SMSC_LAN9303_MDIO = no; + NET_VENDOR_ALACRITECH = no; + NET_VENDOR_AMAZON = no; + NET_VENDOR_AQUANTIA = no; + NET_VENDOR_ARC = no; + NET_VENDOR_AURORA = no; + NET_VENDOR_CADENCE = no; + NET_VENDOR_CAVIUM = no; + NET_VENDOR_CORTINA = no; + NET_VENDOR_EZCHIP = no; + NET_VENDOR_GOOGLE = no; + NET_VENDOR_HUAWEI = no; + NET_VENDOR_INTEL = no; + NET_VENDOR_MARVELL = no; + NET_VENDOR_MELLANOX = no; + NET_VENDOR_MICREL = no; + NET_VENDOR_MICROCHIP = no; + NET_VENDOR_MICROSEMI = no; + NET_VENDOR_NATSEMI = no; + NET_VENDOR_NETRONOME = no; + NET_VENDOR_NI = no; + NET_VENDOR_PENSANDO = no; + NET_VENDOR_QUALCOMM = no; + NET_VENDOR_RENESAS = no; + NET_VENDOR_ROCKER = no; + NET_VENDOR_SAMSUNG = no; + NET_VENDOR_SEEQ = no; + NET_VENDOR_SOCIONEXT = no; + NET_VENDOR_SOLARFLARE = no; + NET_VENDOR_STMICRO = no; + NET_VENDOR_SYNOPSYS = no; + NET_VENDOR_VIA = no; + NET_VENDOR_WIZNET = no; + NET_VENDOR_XILINX = no; + NFC = no; + NULL_TTY = no; + NVME_FC = no; + NVME_TARGET = no; + N_GSM = no; + PARPORT = no; + PCCARD = no; + PHY_PXA_28NM_HSIC = no; + PHY_PXA_28NM_USB2 = no; + PMBUS = no; + PM_DEBUG = no; + QSEMI_PHY = no; + RAVE_SP_EEPROM = no; + RC_CORE = no; + RD_BZIP2 = no; + RD_LZ4 = no; + RD_LZMA = no; + RD_LZO = no; + RD_XZ = no; + RENESAS_PHY = no; + RESET_CONTROLLER = no; + RFKILL = no; + RMI4_I2C = no; + RMI4_SMB = no; + ROCKCHIP_PHY = no; + RTC_DRV_88PM80X = no; + RTC_DRV_ABB5ZES3 = no; + RTC_DRV_ABEOZ9 = no; + RTC_DRV_ABX80X = no; + RTC_DRV_BQ32K = no; + RTC_DRV_BQ4802 = no; + RTC_DRV_CMOS = no; + RTC_DRV_DA9063 = no; + RTC_DRV_DS1286 = no; + RTC_DRV_DS1307 = no; + RTC_DRV_DS1374 = no; + RTC_DRV_DS1511 = no; + RTC_DRV_DS1553 = no; + RTC_DRV_DS1672 = no; + RTC_DRV_DS1685_FAMILY = no; + RTC_DRV_DS1742 = no; + RTC_DRV_DS2404 = no; + RTC_DRV_DS3232 = no; + RTC_DRV_EM3027 = no; + RTC_DRV_FM3130 = no; + RTC_DRV_FTRTC010 = no; + RTC_DRV_ISL12022 = no; + RTC_DRV_ISL1208 = no; + RTC_DRV_M41T80 = no; + RTC_DRV_M48T35 = no; + RTC_DRV_M48T59 = no; + RTC_DRV_M48T86 = no; + RTC_DRV_MAX6900 = no; + RTC_DRV_MAX8907 = no; + RTC_DRV_MC13XXX = no; + RTC_DRV_MSM6242 = no; + RTC_DRV_MT6397 = no; + RTC_DRV_PCF2127 = no; + RTC_DRV_PCF50633 = no; + RTC_DRV_PCF85063 = no; + RTC_DRV_PCF8523 = no; + RTC_DRV_PCF85363 = no; + RTC_DRV_PCF8563 = no; + RTC_DRV_PCF8583 = no; + RTC_DRV_RP5C01 = no; + RTC_DRV_RS5C372 = no; + RTC_DRV_RV3028 = no; + RTC_DRV_RV3029C2 = no; + RTC_DRV_RV8803 = no; + RTC_DRV_RX8010 = no; + RTC_DRV_RX8025 = no; + RTC_DRV_RX8581 = no; + RTC_DRV_S35390A = no; + RTC_DRV_SD3078 = no; + RTC_DRV_STK17TA8 = no; + RTC_DRV_V3020 = no; + RTC_DRV_X1205 = no; + SENSORS_ABITUGURU = no; + SENSORS_ABITUGURU3 = no; + SENSORS_AD7414 = no; + SENSORS_AD7418 = no; + SENSORS_ADC128D818 = no; + SENSORS_ADM1021 = no; + SENSORS_ADM1025 = no; + SENSORS_ADM1026 = no; + SENSORS_ADM1029 = no; + SENSORS_ADM1031 = no; + SENSORS_ADM9240 = no; + SENSORS_ADS7828 = no; + SENSORS_ADT7410 = no; + SENSORS_ADT7411 = no; + SENSORS_ADT7462 = no; + SENSORS_ADT7470 = no; + SENSORS_ADT7475 = no; + SENSORS_AMC6821 = no; + SENSORS_APDS990X = no; + SENSORS_APPLESMC = no; + SENSORS_AS370 = no; + SENSORS_ASB100 = no; + SENSORS_ASC7621 = no; + SENSORS_ASPEED = no; + SENSORS_ATXP1 = no; + SENSORS_BH1770 = no; + SENSORS_CORETEMP = no; + SENSORS_DME1737 = no; + SENSORS_DS1621 = no; + SENSORS_DS620 = no; + SENSORS_EMC1403 = no; + SENSORS_EMC2103 = no; + SENSORS_EMC6W201 = no; + SENSORS_F71805F = no; + SENSORS_F71882FG = no; + SENSORS_F75375S = no; + SENSORS_FSCHMD = no; + SENSORS_G760A = no; + SENSORS_G762 = no; + SENSORS_GL518SM = no; + SENSORS_GL520SM = no; + SENSORS_HIH6130 = no; + SENSORS_INA209 = no; + SENSORS_INA2XX = no; + SENSORS_INA3221 = no; + SENSORS_IT87 = no; + SENSORS_JC42 = no; + SENSORS_LINEAGE = no; + SENSORS_LIS3_I2C = no; + SENSORS_LIS3_SPI = module; + SENSORS_LM63 = no; + SENSORS_LM73 = no; + SENSORS_LM75 = no; + SENSORS_LM77 = no; + SENSORS_LM78 = no; + SENSORS_LM80 = no; + SENSORS_LM83 = no; + SENSORS_LM85 = no; + SENSORS_LM87 = no; + SENSORS_LM90 = no; + SENSORS_LM92 = no; + SENSORS_LM93 = no; + SENSORS_LM95234 = no; + SENSORS_LM95241 = no; + SENSORS_LM95245 = no; + SENSORS_LTC2945 = no; + SENSORS_LTC2990 = no; + SENSORS_LTC4151 = no; + SENSORS_LTC4215 = no; + SENSORS_LTC4222 = no; + SENSORS_LTC4245 = no; + SENSORS_LTC4260 = no; + SENSORS_LTC4261 = no; + SENSORS_MAX16065 = no; + SENSORS_MAX1619 = no; + SENSORS_MAX1668 = no; + SENSORS_MAX197 = no; + SENSORS_MAX31790 = no; + SENSORS_MAX6621 = no; + SENSORS_MAX6639 = no; + SENSORS_MAX6642 = no; + SENSORS_MAX6650 = no; + SENSORS_MAX6697 = no; + SENSORS_MC13783_ADC = no; + SENSORS_MCP3021 = no; + SENSORS_MENF21BMC_HWMON = no; + SENSORS_NCT6683 = no; + SENSORS_NCT6775 = no; + SENSORS_NCT7802 = no; + SENSORS_NCT7904 = no; + SENSORS_NPCM7XX = no; + SENSORS_NTC_THERMISTOR = no; + SENSORS_PC87360 = no; + SENSORS_PC87427 = no; + SENSORS_PCF8591 = no; + SENSORS_POWR1220 = no; + SENSORS_SHT15 = no; + SENSORS_SHT21 = no; + SENSORS_SHT3x = no; + SENSORS_SHTC1 = no; + SENSORS_SMM665 = no; + SENSORS_SMSC47B397 = no; + SENSORS_SMSC47M1 = no; + SENSORS_SMSC47M192 = no; + SENSORS_STTS751 = no; + SENSORS_TC654 = no; + SENSORS_TC74 = no; + SENSORS_THMC50 = no; + SENSORS_TMP102 = no; + SENSORS_TMP103 = no; + SENSORS_TMP108 = no; + SENSORS_TMP401 = no; + SENSORS_TMP421 = no; + SENSORS_TSL2550 = no; + SENSORS_VIA_CPUTEMP = no; + SENSORS_VT1211 = no; + SENSORS_W83627EHF = no; + SENSORS_W83627HF = no; + SENSORS_W83773G = no; + SENSORS_W83781D = no; + SENSORS_W83791D = no; + SENSORS_W83792D = no; + SENSORS_W83793 = no; + SENSORS_W83795 = no; + SENSORS_W83L785TS = no; + SENSORS_W83L786NG = no; + SERIAL_NONSTANDARD = no; + SFP = no; + SIOX = no; + SLIMBUS = no; + SLIP = no; + SND_HDA_INTEL_DETECT_DMIC = no; + SND_SOC = no; + SND_X86 = no; + SND_XEN_FRONTEND = no; + SPI_MEM = no; + SPMI = no; + STE10XP = no; + STM = no; + TARGET_CORE = no; + TCG_ATMEL = no; + TCG_NSC = no; + TCG_TIS_ST33ZP24_I2C = no; + TCG_VTPM_PROXY = no; + TCG_XEN = no; + TELCLOCK = no; + TERANETICS_PHY = no; + THERMAL = no; + THUNDERBOLT = no; + TRACE_SINK = no; + UIO_PRUSS = no; + USB_SUPPORT = no; + UWB = no; + VIRTUALIZATION = no; + VITESSE_PHY = no; + WATCHDOG = no; + WIMAX = no; + WIRELESS = no; + WLAN = no; + X86_EXTENDED_PLATFORM = no; + X86_INTEL_MEMORY_PROTECTION_KEYS = no; + X86_PLATFORM_DEVICES = no; + XEN_BACKEND = no; + XEN_BLKDEV_FRONTEND = no; + XEN_NETDEV_FRONTEND = no; + XEN_XENBUS_FRONTEND = module; + XILINX_GMII2RGMII = no; + XILINX_SDFEC = no; }; } -- So here is a first draft for a more minimal kernel. It brings down the kernel build time from around 40 minutes to around 10 minutes on my machine (while watching videos on the side, so ymmv). What I did was taking the kernel .config from a running spectrum vm and worked with menuconfig and diffconfig from the kernel source tree. I tried to remove as much support for physical devices as possible, on top of that I removed support for virtual hosting and virtual guest for everything that isn't kvm/virtio. I tested the kernel by booting it up succesfully and confirming that video acceleration still works. I'm not satisfied with the missing documentation right now, but I'm not sure how to practically improve on that, the sheer number of needed changes seems to make that pretty hard, so I'd be happy for any suggestions. Cheers, Philipp
participants (1)
-
Philipp Steinpaß