patches and low-level development discussion
 help / color / mirror / code / Atom feed
* [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).