From: "Philipp Steinpaß" <philipp@xndr.de>
To: devel@spectrum-os.org
Subject: [DRAFT PATCH nixpkgs] smaller kernel
Date: Wed, 26 Aug 2020 23:05:17 +0200 [thread overview]
Message-ID: <87tuwpjeya.fsf@xndr.de> (raw)
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
reply other threads:[~2020-08-26 21:05 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87tuwpjeya.fsf@xndr.de \
--to=philipp@xndr.de \
--cc=devel@spectrum-os.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).