* [DRAFT PATCH nixpkgs] smaller kernel
@ 2020-08-26 21:05 Philipp Steinpaß
0 siblings, 0 replies; only message in thread
From: Philipp Steinpaß @ 2020-08-26 21:05 UTC (permalink / raw)
To: devel
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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-08-26 21:05 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-26 21:05 [DRAFT PATCH nixpkgs] smaller kernel Philipp Steinpaß
Code repositories for project(s) associated with this public inbox
https://spectrum-os.org/git/crosvm
https://spectrum-os.org/git/doc
https://spectrum-os.org/git/mktuntap
https://spectrum-os.org/git/nixpkgs
https://spectrum-os.org/git/spectrum
https://spectrum-os.org/git/ucspi-vsock
https://spectrum-os.org/git/www
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).