From f9cf916e5eabcddafc321f5b458b52321d4d4e69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 1 Jan 2024 22:13:49 +0100 Subject: [PATCH 01/15] Fix uninitialized variables in script-generator --- seed/script-generator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seed/script-generator.c b/seed/script-generator.c index af64e3a6..65daa387 100644 --- a/seed/script-generator.c +++ b/seed/script-generator.c @@ -168,7 +168,7 @@ void output_config(FILE *out) { char *get_var(char *name) { /* Search through existing variables. */ Variable *var; - Variable *last; + Variable *last = NULL; for (var = variables; var != NULL; var = var->next) { if (strcmp(name, var->name) == 0) { return var->val; @@ -373,7 +373,7 @@ int interpret(Directive *directive) { Directive *interpreter(Directive *directives) { Directive *directive; - Directive *last; + Directive *last = NULL; for (directive = directives; directive != NULL; directive = directive->next) { if (interpret(directive)) { /* This means this directive needs to be removed from the linked list. */ From 9384a5d432a7b246810e6c62d3f226df1239daab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 1 Jan 2024 22:55:21 +0100 Subject: [PATCH 02/15] Support "!=" comparisons in script-generator --- seed/script-generator.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/seed/script-generator.c b/seed/script-generator.c index af64e3a6..45861bc1 100644 --- a/seed/script-generator.c +++ b/seed/script-generator.c @@ -214,11 +214,12 @@ Token *logic(Token *tok, char **val) { /* logic = "(" * (name | * (name "==" value) | + * (name "!=" value) | * (logic "||" logic) | * (logic "&&" logic)) * ")" */ - + char *lhs = tok->val; char *rhs; tok = tok->next; @@ -235,8 +236,17 @@ Token *logic(Token *tok, char **val) { } else { lhs = "False"; } - } else { - fputs("Expected == after ", stderr); + } else if (strcmp(tok->val, "!=") == 0) { + /* Case for inequality. */ + rhs = tok->next->val; + tok = tok->next->next; + if (strcmp(get_var(lhs), rhs) == 0) { + lhs = "False"; + } else { + lhs = "True"; + } + } else { + fputs("Expected == or != after ", stderr); fputs(lhs, stderr); fputs(" in logic\n", stderr); exit(1); From 8341c4e0894992eb03ded4a2b63f3db5baa02496 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Tue, 2 Jan 2024 00:05:58 +0100 Subject: [PATCH 03/15] Use devtmpfs, and improve finalize_fhs.sh With this, finalize_fhs.sh can be rerun as needed, e.g. when rebooting. Also, the preferred nameserver will persist after DHCP. Thanks to devtmpfs, we no longer need to manage /dev once Linux is up. --- steps/improve/finalize_fhs.sh | 19 ++++++++++++++----- steps/jump/linux.sh | 1 - steps/jump/move_disk.sh | 6 +++++- steps/manifest | 3 +-- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/steps/improve/finalize_fhs.sh b/steps/improve/finalize_fhs.sh index 7e30848b..f5b164eb 100755 --- a/steps/improve/finalize_fhs.sh +++ b/steps/improve/finalize_fhs.sh @@ -6,13 +6,22 @@ # # Add the rest of the FHS that we will use and is not created pre-boot rm -rf /sbin /usr/sbin +ln -s /usr/bin /usr/sbin for d in bin lib sbin; do - ln -s "usr/${d}" "/${d}" + ln -s "/usr/${d}" "/${d}" || true # these might exist if rerunning done -mkdir -p /etc /run /var -test -d /proc || (mkdir /proc && mount -t proc proc /proc) -test -d /sys || (mkdir /sys && mount -t sysfs sysfs /sys) + +mkdir -p /etc /run /var/log /var/lock /var/spool /var/tmp /var/cache + +# can't use /dev/null before mounting /dev +mount | grep '/dev' &> /junk || (mkdir -p /dev; mount -t devtmpfs none /dev) +rm /junk &> /dev/null || true + +mount | grep '/proc' &> /dev/null || (mkdir -p /proc; mount -t proc proc /proc) +mount | grep '/sys' &> /dev/null || (mkdir -p /sys; mount -t sysfs sysfs /sys) # Make /tmp a ramdisk (speeds up configure etc significantly) -test -d /tmp || (mkdir /tmp && mount -t tmpfs tmpfs /tmp) +mount | grep '/tmp' &> /dev/null || (mkdir -p /tmp; mount -t tmpfs tmpfs /tmp) + # Add /etc/resolv.conf echo 'nameserver 1.1.1.1' > /etc/resolv.conf +echo 'nameserver 1.1.1.1' > /etc/resolv.conf.head diff --git a/steps/jump/linux.sh b/steps/jump/linux.sh index c220e976..e647e8b4 100755 --- a/steps/jump/linux.sh +++ b/steps/jump/linux.sh @@ -16,7 +16,6 @@ if [ "${KERNEL_BOOTSTRAP}" = True ]; then find / -xdev -type d -printf "dir %p %m %U %G\n" >> /initramfs.list find / -xdev -type f -printf "file %p %p %m %U %G\n" >> /initramfs.list find / -xdev -type l -printf "slink %p %l %m %U %G\n" >> /initramfs.list - find / -xdev -type c -or -type b -not -name "ram*" -printf "nod %p %m %U %G %y " -exec stat -c '%Hr %Lr' {} \; >> /initramfs.list kexec-linux "/dev/ram1" "/boot/linux-4.9.10" "!$(command -v gen_init_cpio) /initramfs.list" else mkdir /etc diff --git a/steps/jump/move_disk.sh b/steps/jump/move_disk.sh index 426e6355..5d972498 100755 --- a/steps/jump/move_disk.sh +++ b/steps/jump/move_disk.sh @@ -4,7 +4,11 @@ # # SPDX-License-Identifier: GPL-3.0-or-later -set -ex +set -e +# mount might fail if /etc doesn't exist because of fstab and mtab +mkdir -p /dev /etc +mount -t devtmpfs none /dev &> /junk || true # no /dev/null yet +rm /junk &> /dev/null || true # Create partition if it doesn't exist if [ $(($(stat -c "%Lr" "/dev/${DISK}") % 8)) -eq 0 ]; then diff --git a/steps/manifest b/steps/manifest index 6dedaead..5f4622ce 100644 --- a/steps/manifest +++ b/steps/manifest @@ -118,11 +118,10 @@ improve: clean_sources build: linux-4.9.10 ( BUILD_LINUX == True ) jump: break ( INTERNAL_CI == pass1 ) jump: linux ( CHROOT == False ) +jump: move_disk ( KERNEL_BOOTSTRAP == True ) improve: finalize_fhs build: musl-1.2.4 build: curl-8.5.0 -improve: populate_device_nodes -jump: move_disk ( KERNEL_BOOTSTRAP == True ) improve: get_network ( CHROOT == False ) build: bash-5.2.15 build: xz-5.4.1 From 6c2144e50afeecda2a3a09d31ce92ac4dc95d959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Tue, 2 Jan 2024 00:57:29 +0100 Subject: [PATCH 04/15] Make move_disk work on bare metal * Use -S32 -H64 --force to trick sfdisk into allowing MiB-aligned partitions on a drive that reports a CHS geometry * Explicitly create partition at sector 2097152 (=1GiB) * Force mkfs.ext4 to overwrite any existing filesystem it might find * Wait up to 2 minutes for the disk to become readable (especially USB drives often show up with a delay) --- steps/jump/move_disk.sh | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/steps/jump/move_disk.sh b/steps/jump/move_disk.sh index 5d972498..0818fade 100755 --- a/steps/jump/move_disk.sh +++ b/steps/jump/move_disk.sh @@ -10,13 +10,25 @@ mkdir -p /dev /etc mount -t devtmpfs none /dev &> /junk || true # no /dev/null yet rm /junk &> /dev/null || true +timeout=120 +while ! dd if=/dev/${DISK} of=/dev/null bs=512 count=1; do + sleep 1 + # shellcheck disable=SC2219 + let timeout-- + if [ "${timeout}" -le 0 ]; then + echo "Timeout reached for disk to become accessible" + false + fi +done + # Create partition if it doesn't exist if [ $(($(stat -c "%Lr" "/dev/${DISK}") % 8)) -eq 0 ]; then echo "Creating partition table..." - echo ";" | sfdisk "/dev/${DISK}" + # Start at 1GiB, use -S32 -H64 to align to MiB rather than cylinder boundary + echo "2097152;" | sfdisk -uS -S32 -H64 --force "/dev/${DISK}" fdisk -l "/dev/${DISK}" echo "Creating ext4 partition..." - mkfs.ext4 "/dev/${DISK}1" + mkfs.ext4 -F -F "/dev/${DISK}1" DISK="${DISK}1" fi From 82c570694a489507515c32c2dd6adb88ed52230a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Tue, 2 Jan 2024 00:46:32 +0100 Subject: [PATCH 05/15] Make the Linux kernel & Fiwix->Linux kexec more bare-metal-friendly * Enable additional hardware drivers in Linux for better bare metal display, network & input device compatibility * Disable ATA-over-Ethernet support, because it spams the network with unnecessary packets, is basically useless for bootstrapping, and may even be a security risk * Increase Fiwix initrd size to 1280MB to fit a larger Linux build * Make the Fiwix kexec size configurable the same way as initrd (and reduce from 280MB to 256MB which is sufficient in my testing) * Use a more conservative memory map for Fiwix & Linux * Boot Linux with consoleblank=0 on bare metal, so the build won't go blind after 5 minutes * Support kexec-fiwix with interrupts disabled (will be useful later when builder-hex0 is updated) --- steps/SHA256SUMS.pkgs | 2 +- .../kexec-fiwix-1.0/kexec-fiwix-1.0.checksums | 2 +- steps/kexec-fiwix-1.0/src/kexec-fiwix.c | 22 +- steps/linux-4.9.10/files/config | 890 +++++++++++------- .../files/make_fiwix_initrd.c | 2 +- .../lwext4-1.0.0-lb1.checksums | 2 +- 6 files changed, 582 insertions(+), 338 deletions(-) diff --git a/steps/SHA256SUMS.pkgs b/steps/SHA256SUMS.pkgs index 646ac9dc..d2f91ffb 100644 --- a/steps/SHA256SUMS.pkgs +++ b/steps/SHA256SUMS.pkgs @@ -70,7 +70,7 @@ b39826742e236890f3562cdf19492e7ef4224b271f3e75ddeab1f07982b03ebe libffi-3.3_0.t daae709e98d2df2190d1d13b4e86f7f3fe90fa7a975282fe0bb03289b6539f29 libtool-2.2.4_0.tar.bz2 6cefa575362149620f8008a32c8af54f0198a18bc6ab910bd3cead196c1507d7 libtool-2.4.7_0.tar.bz2 503007bbcddcf4e49d26514c59b4c9501f8b42f0c994a59dfdc388b1ae6b7900 libunistring-0.9.10_0.tar.bz2 -fd2264a08cbeeb28f3e2580cba174376a154c77b0ef6cbf67b55fd13c0987f52 linux-4.9.10_0.tar.bz2 +576c04a4b2ccbfe6b48f5f16e8bd59469e359bdc77458ed82a4025da98ad6dcb linux-4.9.10_0.tar.bz2 d15c922973c15a8206e09020e8cfe6a78f7e93614de212f2b37ff80163799c6c linux-headers-4.9.10_0.tar.bz2 3864f2c66516fc4f5086f626f4da2b2a7635e21babca86ba478f866920868e2b m4-1.4.7_0.tar.bz2 e69554b0a77b419ddd5d0a0e418ba4005ecd0f6784c92a6928a0270bd929a098 make-3.82_0.tar.bz2 diff --git a/steps/kexec-fiwix-1.0/kexec-fiwix-1.0.checksums b/steps/kexec-fiwix-1.0/kexec-fiwix-1.0.checksums index b21ca372..f3e5b342 100644 --- a/steps/kexec-fiwix-1.0/kexec-fiwix-1.0.checksums +++ b/steps/kexec-fiwix-1.0/kexec-fiwix-1.0.checksums @@ -1 +1 @@ -7d98c6ce71a3b45d86453d50b2bc91e651b31aac9615705bb73d09580b220997 /usr/bin/kexec-fiwix +f8c754de5bd9cf5a1b36dfea25e81f7b39c4e0145e10eebafccc8cdca5be91bd /usr/bin/kexec-fiwix diff --git a/steps/kexec-fiwix-1.0/src/kexec-fiwix.c b/steps/kexec-fiwix-1.0/src/kexec-fiwix.c index ecd98949..7443bf49 100644 --- a/steps/kexec-fiwix-1.0/src/kexec-fiwix.c +++ b/steps/kexec-fiwix-1.0/src/kexec-fiwix.c @@ -6,7 +6,8 @@ #include "multiboot1.h" #define MULTIBOOT_MAGIC 0x2BADB002 -#define INITRD_MB 1152 +#define INITRD_MB 1280 +#define KEXEC_MB 256 int main() { /* Read the kernel */ @@ -81,11 +82,11 @@ int main() { char *bare_metal = getenv("BARE_METAL"); if (bare_metal != NULL && strcmp(bare_metal, "True") == 0) { - sprintf(cmdline, "fiwix root=/dev/ram0 ramdisksize=%d initrd=fiwix.ext2 kexec_proto=linux kexec_size=280000 kexec_cmdline=\"init=/init\"", INITRD_MB * 1024); + sprintf(cmdline, "fiwix root=/dev/ram0 ramdisksize=%d initrd=fiwix.ext2 kexec_proto=linux kexec_size=%d kexec_cmdline=\"init=/init consoleblank=0\"", INITRD_MB * 1024, KEXEC_MB * 1024); } else { - sprintf(cmdline, "fiwix console=/dev/ttyS0 root=/dev/ram0 ramdisksize=%d initrd=fiwix.ext2 kexec_proto=linux kexec_size=280000 kexec_cmdline=\"init=/init console=ttyS0\"", INITRD_MB * 1024); + sprintf(cmdline, "fiwix console=/dev/ttyS0 root=/dev/ram0 ramdisksize=%d initrd=fiwix.ext2 kexec_proto=linux kexec_size=%d kexec_cmdline=\"init=/init console=ttyS0\"", INITRD_MB * 1024, KEXEC_MB * 1024); } char * boot_loader_name = "kexec-fiwix"; @@ -127,13 +128,13 @@ int main() { pmultiboot_memory_map->size = sizeof(multiboot_memory_map_t) - sizeof(multiboot_uint32_t); pmultiboot_memory_map->addr = 0x00000000; - pmultiboot_memory_map->len = 0x0009FC00; + pmultiboot_memory_map->len = 0x00080000; pmultiboot_memory_map->type = MULTIBOOT_MEMORY_AVAILABLE; pmultiboot_memory_map++; pmultiboot_memory_map->size = sizeof(multiboot_memory_map_t) - sizeof(multiboot_uint32_t); - pmultiboot_memory_map->addr = 0x0009FC00; - pmultiboot_memory_map->len = 0x00000400; + pmultiboot_memory_map->addr = 0x00080000; + pmultiboot_memory_map->len = 0x00020000; pmultiboot_memory_map->type = MULTIBOOT_MEMORY_RESERVED; pmultiboot_memory_map++; @@ -145,13 +146,13 @@ int main() { pmultiboot_memory_map->size = sizeof(multiboot_memory_map_t) - sizeof(multiboot_uint32_t); pmultiboot_memory_map->addr = 0x00100000; - pmultiboot_memory_map->len = 0xBFEE0000; + pmultiboot_memory_map->len = 0xBC000000; pmultiboot_memory_map->type = MULTIBOOT_MEMORY_AVAILABLE; pmultiboot_memory_map++; pmultiboot_memory_map->size = sizeof(multiboot_memory_map_t) - sizeof(multiboot_uint32_t); - pmultiboot_memory_map->addr = 0XBFFE0000; - pmultiboot_memory_map->len = 0x00020000; + pmultiboot_memory_map->addr = 0XBC000000; + pmultiboot_memory_map->len = 0x04000000; pmultiboot_memory_map->type = MULTIBOOT_MEMORY_RESERVED; pmultiboot_memory_map++; @@ -208,6 +209,7 @@ int main() { 0xF3, 0xA4, /* rep movsb */ 0xB8, 0x00, 0x00, 0x00, 0x00, /* mov eax, 0x00000000 */ 0xBB, 0x00, 0x00, 0x00, 0x00, /* mov ebx, 0x00000000 */ + 0xFB, /* sti */ 0xEA, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 /* jmp far 0x0008:0x00000000 */ }; @@ -217,7 +219,7 @@ int main() { *((unsigned int *) &trampoline[11]) = INITRD_MB * 1024 * 1024; *((unsigned int *) &trampoline[19]) = magic; *((unsigned int *) &trampoline[24]) = multiboot_info_num; - *((unsigned int *) &trampoline[29]) = e_entry; + *((unsigned int *) &trampoline[30]) = e_entry; memcpy((void *)0x4000, trampoline, sizeof(trampoline)); diff --git a/steps/linux-4.9.10/files/config b/steps/linux-4.9.10/files/config index 959fe9fe..fb35c435 100644 --- a/steps/linux-4.9.10/files/config +++ b/steps/linux-4.9.10/files/config @@ -1,4 +1,5 @@ # SPDX-FileCopyrightText: 2021 fosslinux +# SPDX-FileCopyrightText: 2024 Gábor Stefanik # # SPDX-License-Identifier: MIT # @@ -602,7 +603,7 @@ CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y # CONFIG_ACPI_AC is not set # CONFIG_ACPI_BATTERY is not set # CONFIG_ACPI_BUTTON is not set -# CONFIG_ACPI_VIDEO is not set +CONFIG_ACPI_VIDEO=y # CONFIG_ACPI_FAN is not set CONFIG_ACPI_DOCK=y CONFIG_ACPI_CPU_FREQ_PSS=y @@ -1097,13 +1098,14 @@ CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=16384 # CONFIG_BLK_DEV_RAM_DAX is not set # CONFIG_CDROM_PKTCDVD is not set -CONFIG_ATA_OVER_ETH=y +# CONFIG_ATA_OVER_ETH is not set # CONFIG_BLK_DEV_HD is not set # CONFIG_BLK_DEV_RBD is not set # CONFIG_BLK_DEV_RSXX is not set CONFIG_NVME_CORE=y CONFIG_BLK_DEV_NVME=y CONFIG_BLK_DEV_NVME_SCSI=y +# CONFIG_NVME_TARGET is not set # # Misc devices @@ -1129,7 +1131,6 @@ CONFIG_BLK_DEV_NVME_SCSI=y # CONFIG_TI_DAC7512 is not set # CONFIG_PCH_PHUB is not set # CONFIG_USB_SWITCH_FSA9480 is not set -# CONFIG_LATTICE_ECP3_CONFIG is not set CONFIG_SRAM=y # CONFIG_C2PORT is not set @@ -1140,14 +1141,13 @@ CONFIG_SRAM=y # CONFIG_EEPROM_AT25 is not set # CONFIG_EEPROM_LEGACY is not set # CONFIG_EEPROM_MAX6875 is not set -# CONFIG_EEPROM_93CX6 is not set +CONFIG_EEPROM_93CX6=y # CONFIG_EEPROM_93XX46 is not set # CONFIG_CB710_CORE is not set # # Texas Instruments shared transport line discipline # -# CONFIG_TI_ST is not set # CONFIG_SENSORS_LIS3_I2C is not set # @@ -1278,50 +1278,51 @@ CONFIG_SATA_VITESSE=y # # PATA SFF controllers with BMDMA # -# CONFIG_PATA_ALI is not set -# CONFIG_PATA_AMD is not set -# CONFIG_PATA_ARTOP is not set -# CONFIG_PATA_ATIIXP is not set -# CONFIG_PATA_ATP867X is not set -# CONFIG_PATA_CMD64X is not set -# CONFIG_PATA_CS5520 is not set -# CONFIG_PATA_CS5530 is not set -# CONFIG_PATA_CS5535 is not set -# CONFIG_PATA_CS5536 is not set +CONFIG_PATA_ALI=y +CONFIG_PATA_AMD=y +CONFIG_PATA_ARTOP=y +CONFIG_PATA_ATIIXP=y +CONFIG_PATA_ATP867X=y +CONFIG_PATA_CMD64X=y +CONFIG_PATA_CS5520=y +CONFIG_PATA_CS5530=y +CONFIG_PATA_CS5535=y +CONFIG_PATA_CS5536=y # CONFIG_PATA_CYPRESS is not set -# CONFIG_PATA_EFAR is not set -# CONFIG_PATA_HPT366 is not set -# CONFIG_PATA_HPT37X is not set -# CONFIG_PATA_HPT3X2N is not set -# CONFIG_PATA_HPT3X3 is not set -# CONFIG_PATA_IT8213 is not set -# CONFIG_PATA_IT821X is not set -# CONFIG_PATA_JMICRON is not set +CONFIG_PATA_EFAR=y +CONFIG_PATA_HPT366=y +CONFIG_PATA_HPT37X=y +CONFIG_PATA_HPT3X2N=y +CONFIG_PATA_HPT3X3=y +CONFIG_PATA_HPT3X3_DMA=y +CONFIG_PATA_IT8213=y +CONFIG_PATA_IT821X=y +CONFIG_PATA_JMICRON=y # CONFIG_PATA_MARVELL is not set # CONFIG_PATA_NETCELL is not set # CONFIG_PATA_NINJA32 is not set -# CONFIG_PATA_NS87415 is not set -# CONFIG_PATA_OLDPIIX is not set -# CONFIG_PATA_OPTIDMA is not set -# CONFIG_PATA_PDC2027X is not set -# CONFIG_PATA_PDC_OLD is not set -# CONFIG_PATA_RADISYS is not set -# CONFIG_PATA_RDC is not set -# CONFIG_PATA_SC1200 is not set -# CONFIG_PATA_SCH is not set -# CONFIG_PATA_SERVERWORKS is not set -# CONFIG_PATA_SIL680 is not set +CONFIG_PATA_NS87415=y +CONFIG_PATA_OLDPIIX=y +CONFIG_PATA_OPTIDMA=y +CONFIG_PATA_PDC2027X=y +CONFIG_PATA_PDC_OLD=y +CONFIG_PATA_RADISYS=y +CONFIG_PATA_RDC=y +CONFIG_PATA_SC1200=y +CONFIG_PATA_SCH=y +CONFIG_PATA_SERVERWORKS=y +CONFIG_PATA_SIL680=y CONFIG_PATA_SIS=y # CONFIG_PATA_TOSHIBA is not set -# CONFIG_PATA_TRIFLEX is not set -# CONFIG_PATA_VIA is not set -# CONFIG_PATA_WINBOND is not set +CONFIG_PATA_TRIFLEX=y +CONFIG_PATA_VIA=y +CONFIG_PATA_WINBOND=y # # PIO-only SFF controllers # # CONFIG_PATA_CMD640_PCI is not set -# CONFIG_PATA_MPIIX is not set +CONFIG_PATA_MPIIX=y # CONFIG_PATA_NS87410 is not set # CONFIG_PATA_OPTI is not set # CONFIG_PATA_PLATFORM is not set @@ -1330,9 +1331,9 @@ CONFIG_PATA_SIS=y # # Generic fallback / legacy drivers # -# CONFIG_PATA_ACPI is not set +CONFIG_PATA_ACPI=y CONFIG_ATA_GENERIC=y -# CONFIG_PATA_LEGACY is not set +CONFIG_PATA_LEGACY=y CONFIG_MD=y # CONFIG_BLK_DEV_MD is not set # CONFIG_BCACHE is not set @@ -1372,6 +1373,7 @@ CONFIG_TUN_VNET_CROSS_LE=y # CONFIG_VETH is not set # CONFIG_NLMON is not set # CONFIG_NET_VRF is not set +CONFIG_SUNGEM_PHY=y # CONFIG_ARCNET is not set # @@ -1382,170 +1384,195 @@ CONFIG_TUN_VNET_CROSS_LE=y # Distributed Switch Architecture drivers # CONFIG_ETHERNET=y +CONFIG_MDIO=y CONFIG_NET_VENDOR_3COM=y -# CONFIG_VORTEX is not set -# CONFIG_TYPHOON is not set +CONFIG_VORTEX=y CONFIG_NET_VENDOR_ADAPTEC=y -# CONFIG_ADAPTEC_STARFIRE is not set CONFIG_NET_VENDOR_AGERE=y -# CONFIG_ET131X is not set +CONFIG_ET131X=y CONFIG_NET_VENDOR_ALTEON=y -# CONFIG_ACENIC is not set # CONFIG_ALTERA_TSE is not set CONFIG_NET_VENDOR_AMAZON=y -# CONFIG_ENA_ETHERNET is not set +CONFIG_ENA_ETHERNET=y CONFIG_NET_VENDOR_AMD=y -# CONFIG_AMD8111_ETH is not set +CONFIG_AMD8111_ETH=y CONFIG_PCNET32=y CONFIG_NET_VENDOR_ARC=y CONFIG_NET_VENDOR_ATHEROS=y -# CONFIG_ATL2 is not set -# CONFIG_ATL1 is not set -# CONFIG_ATL1E is not set -# CONFIG_ATL1C is not set -# CONFIG_ALX is not set +CONFIG_ATL2=y +CONFIG_ATL1=y +CONFIG_ATL1E=y +CONFIG_ATL1C=y +CONFIG_ALX=y CONFIG_NET_VENDOR_AURORA=y # CONFIG_AURORA_NB8800 is not set CONFIG_NET_CADENCE=y # CONFIG_MACB is not set CONFIG_NET_VENDOR_BROADCOM=y -# CONFIG_B44 is not set -# CONFIG_BCMGENET is not set -# CONFIG_BNX2 is not set +CONFIG_B44=y +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI=y +CONFIG_BCMGENET=y # CONFIG_CNIC is not set -# CONFIG_TIGON3 is not set -# CONFIG_BNX2X is not set -# CONFIG_BNXT is not set +CONFIG_BNXT=y +# CONFIG_BNXT_SRIOV is not set CONFIG_NET_VENDOR_BROCADE=y -# CONFIG_BNA is not set CONFIG_NET_VENDOR_CAVIUM=y CONFIG_NET_VENDOR_CHELSIO=y -# CONFIG_CHELSIO_T1 is not set -# CONFIG_CHELSIO_T3 is not set -# CONFIG_CHELSIO_T4 is not set -# CONFIG_CHELSIO_T4VF is not set +CONFIG_CHELSIO_T1=y +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T4VF=y CONFIG_NET_VENDOR_CISCO=y -# CONFIG_ENIC is not set -# CONFIG_CX_ECAT is not set +CONFIG_ENIC=y +CONFIG_CX_ECAT=y # CONFIG_DNET is not set CONFIG_NET_VENDOR_DEC=y CONFIG_NET_TULIP=y -# CONFIG_DE2104X is not set -# CONFIG_TULIP is not set -# CONFIG_DE4X5 is not set -# CONFIG_WINBOND_840 is not set -# CONFIG_DM9102 is not set -# CONFIG_ULI526X is not set +CONFIG_DE2104X=y +CONFIG_DE2104X_DSL=0 +CONFIG_TULIP=y +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_NAPI is not set +CONFIG_DE4X5=y +CONFIG_WINBOND_840=y +CONFIG_DM9102=y +CONFIG_ULI526X=y CONFIG_NET_VENDOR_DLINK=y -# CONFIG_DL2K is not set -# CONFIG_SUNDANCE is not set +CONFIG_DL2K=y +CONFIG_SUNDANCE=y +# CONFIG_SUNDANCE_MMIO is not set CONFIG_NET_VENDOR_EMULEX=y -# CONFIG_BE2NET is not set +CONFIG_BE2NET=y +CONFIG_BE2NET_HWMON=y CONFIG_NET_VENDOR_EZCHIP=y CONFIG_NET_VENDOR_EXAR=y -# CONFIG_S2IO is not set -# CONFIG_VXGE is not set +CONFIG_S2IO=y CONFIG_NET_VENDOR_HP=y -# CONFIG_HP100 is not set +CONFIG_HP100=y CONFIG_NET_VENDOR_INTEL=y -# CONFIG_E100 is not set CONFIG_E1000=y CONFIG_E1000E=y CONFIG_E1000E_HWTS=y -# CONFIG_IGB is not set -# CONFIG_IGBVF is not set -# CONFIG_IXGB is not set -# CONFIG_IXGBE is not set -# CONFIG_IXGBEVF is not set -# CONFIG_I40E is not set -# CONFIG_I40EVF is not set -# CONFIG_FM10K is not set +CONFIG_IGB=y +CONFIG_IGB_HWMON=y +CONFIG_IGBVF=y +CONFIG_IXGB=y +CONFIG_IXGBE=y +CONFIG_IXGBE_HWMON=y +# CONFIG_IXGBE_DCB is not set +CONFIG_IXGBEVF=y +CONFIG_I40E=y +# CONFIG_I40E_DCB is not set +CONFIG_I40EVF=y +CONFIG_FM10K=y CONFIG_NET_VENDOR_I825XX=y -# CONFIG_JME is not set +CONFIG_JME=y CONFIG_NET_VENDOR_MARVELL=y -# CONFIG_MVMDIO is not set +CONFIG_MVMDIO=y # CONFIG_MVNETA_BM is not set -# CONFIG_SKGE is not set -# CONFIG_SKY2 is not set +CONFIG_SKGE=y +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKGE_GENESIS=y +CONFIG_SKY2=y +# CONFIG_SKY2_DEBUG is not set CONFIG_NET_VENDOR_MELLANOX=y -# CONFIG_MLX4_EN is not set -# CONFIG_MLX4_CORE is not set -# CONFIG_MLX5_CORE is not set +CONFIG_MLX4_EN=y +CONFIG_MLX4_EN_DCB=y +CONFIG_MLX4_CORE=y +CONFIG_MLX4_DEBUG=y +CONFIG_MLX5_CORE=y +CONFIG_MLX5_CORE_EN=y +CONFIG_MLX5_CORE_EN_DCB=y # CONFIG_MLXSW_CORE is not set CONFIG_NET_VENDOR_MICREL=y -# CONFIG_KS8851 is not set -# CONFIG_KS8851_MLL is not set -# CONFIG_KSZ884X_PCI is not set +CONFIG_KS8851=y +CONFIG_KS8851_MLL=y +CONFIG_KSZ884X_PCI=y CONFIG_NET_VENDOR_MICROCHIP=y -# CONFIG_ENC28J60 is not set -# CONFIG_ENCX24J600 is not set +CONFIG_ENC28J60=y +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ENCX24J600=y CONFIG_NET_VENDOR_MYRI=y -# CONFIG_MYRI10GE is not set -# CONFIG_FEALNX is not set +CONFIG_FEALNX=y CONFIG_NET_VENDOR_NATSEMI=y -# CONFIG_NATSEMI is not set -# CONFIG_NS83820 is not set +CONFIG_NATSEMI=y +CONFIG_NS83820=y CONFIG_NET_VENDOR_NETRONOME=y -# CONFIG_NFP_NETVF is not set +CONFIG_NFP_NETVF=y +# CONFIG_NFP_NET_DEBUG is not set CONFIG_NET_VENDOR_8390=y -# CONFIG_NE2K_PCI is not set +CONFIG_NE2K_PCI=y CONFIG_NET_VENDOR_NVIDIA=y -# CONFIG_FORCEDETH is not set +CONFIG_FORCEDETH=y CONFIG_NET_VENDOR_OKI=y -# CONFIG_PCH_GBE is not set +CONFIG_PCH_GBE=y # CONFIG_ETHOC is not set -# CONFIG_NET_PACKET_ENGINE is not set +CONFIG_NET_PACKET_ENGINE=y +CONFIG_HAMACHI=y +CONFIG_YELLOWFIN=y CONFIG_NET_VENDOR_QLOGIC=y -# CONFIG_QLA3XXX is not set -# CONFIG_QLCNIC is not set -# CONFIG_QLGE is not set -# CONFIG_NETXEN_NIC is not set -# CONFIG_QED is not set +CONFIG_QLA3XXX=y +CONFIG_QLGE=y CONFIG_NET_VENDOR_QUALCOMM=y # CONFIG_QCOM_EMAC is not set CONFIG_NET_VENDOR_REALTEK=y -# CONFIG_8139CP is not set -# CONFIG_8139TOO is not set -# CONFIG_R8169 is not set +CONFIG_8139CP=y +CONFIG_8139TOO=y +CONFIG_8139TOO_PIO=y +CONFIG_8139TOO_TUNE_TWISTER=y +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set CONFIG_NET_VENDOR_RENESAS=y CONFIG_NET_VENDOR_RDC=y -# CONFIG_R6040 is not set +CONFIG_R6040=y CONFIG_NET_VENDOR_ROCKER=y CONFIG_NET_VENDOR_SAMSUNG=y # CONFIG_SXGBE_ETH is not set CONFIG_NET_VENDOR_SEEQ=y CONFIG_NET_VENDOR_SILAN=y -# CONFIG_SC92031 is not set +CONFIG_SC92031=y CONFIG_NET_VENDOR_SIS=y -# CONFIG_SIS900 is not set -# CONFIG_SIS190 is not set -# CONFIG_SFC is not set +CONFIG_SIS900=y +CONFIG_SIS190=y +CONFIG_SFC=y +CONFIG_SFC_MCDI_MON=y +# CONFIG_SFC_SRIOV is not set +# CONFIG_SFC_MCDI_LOGGING is not set CONFIG_NET_VENDOR_SMSC=y -# CONFIG_EPIC100 is not set +CONFIG_EPIC100=y # CONFIG_SMSC911X is not set -# CONFIG_SMSC9420 is not set +CONFIG_SMSC9420=y CONFIG_NET_VENDOR_STMICRO=y -# CONFIG_STMMAC_ETH is not set +CONFIG_STMMAC_ETH=y +# CONFIG_STMMAC_PLATFORM is not set +CONFIG_STMMAC_PCI=y CONFIG_NET_VENDOR_SUN=y -# CONFIG_HAPPYMEAL is not set -# CONFIG_SUNGEM is not set -# CONFIG_CASSINI is not set -# CONFIG_NIU is not set +CONFIG_HAPPYMEAL=y +CONFIG_SUNGEM=y +CONFIG_NIU=y CONFIG_NET_VENDOR_SYNOPSYS=y -# CONFIG_NET_VENDOR_TEHUTI is not set +CONFIG_NET_VENDOR_TEHUTI=y CONFIG_NET_VENDOR_TI=y -# CONFIG_TI_CPSW_ALE is not set -# CONFIG_TLAN is not set +CONFIG_TI_CPSW_ALE=y +CONFIG_TLAN=y CONFIG_NET_VENDOR_VIA=y -# CONFIG_VIA_RHINE is not set -# CONFIG_VIA_VELOCITY is not set +CONFIG_VIA_RHINE=y +CONFIG_VIA_RHINE_MMIO=y +CONFIG_VIA_VELOCITY=y CONFIG_NET_VENDOR_WIZNET=y -# CONFIG_WIZNET_W5100 is not set -# CONFIG_WIZNET_W5300 is not set +CONFIG_WIZNET_W5100=y +CONFIG_WIZNET_W5300=y +# CONFIG_WIZNET_BUS_DIRECT is not set +# CONFIG_WIZNET_BUS_INDIRECT is not set +CONFIG_WIZNET_BUS_ANY=y +CONFIG_WIZNET_W5100_SPI=y # CONFIG_FDDI is not set # CONFIG_HIPPI is not set # CONFIG_NET_SB1000 is not set CONFIG_PHYLIB=y +CONFIG_SWPHY=y # # MDIO bus device drivers @@ -1559,26 +1586,27 @@ CONFIG_PHYLIB=y # CONFIG_AMD_PHY is not set # CONFIG_AQUANTIA_PHY is not set # CONFIG_AT803X_PHY is not set -# CONFIG_BCM7XXX_PHY is not set +CONFIG_BCM7XXX_PHY=y # CONFIG_BCM87XX_PHY is not set +CONFIG_BCM_NET_PHYLIB=y # CONFIG_BROADCOM_PHY is not set # CONFIG_CICADA_PHY is not set # CONFIG_DAVICOM_PHY is not set # CONFIG_DP83848_PHY is not set # CONFIG_DP83867_PHY is not set -# CONFIG_FIXED_PHY is not set +CONFIG_FIXED_PHY=y # CONFIG_ICPLUS_PHY is not set # CONFIG_INTEL_XWAY_PHY is not set # CONFIG_LSI_ET1011C_PHY is not set # CONFIG_LXT_PHY is not set # CONFIG_MARVELL_PHY is not set # CONFIG_MICREL_PHY is not set -# CONFIG_MICROCHIP_PHY is not set +CONFIG_MICROCHIP_PHY=y # CONFIG_MICROSEMI_PHY is not set # CONFIG_NATIONAL_PHY is not set # CONFIG_QSEMI_PHY is not set # CONFIG_REALTEK_PHY is not set -# CONFIG_SMSC_PHY is not set +CONFIG_SMSC_PHY=y # CONFIG_STE10XP is not set # CONFIG_TERANETICS_PHY is not set # CONFIG_VITESSE_PHY is not set @@ -1586,7 +1614,47 @@ CONFIG_PHYLIB=y # CONFIG_MICREL_KS8995MA is not set # CONFIG_PPP is not set # CONFIG_SLIP is not set -# CONFIG_USB_NET_DRIVERS is not set +CONFIG_USB_NET_DRIVERS=y +CONFIG_USB_CATC=y +CONFIG_USB_PEGASUS=y +CONFIG_USB_RTL8150=y +CONFIG_USB_RTL8152=y +CONFIG_USB_LAN78XX=y +CONFIG_USB_USBNET=y +CONFIG_USB_NET_AX8817X=y +CONFIG_USB_NET_AX88179_178A=y +CONFIG_USB_NET_CDCETHER=y +CONFIG_USB_NET_CDC_EEM=y +CONFIG_USB_NET_CDC_NCM=y +CONFIG_USB_NET_HUAWEI_CDC_NCM=y +# CONFIG_USB_NET_CDC_MBIM is not set +CONFIG_USB_NET_DM9601=y +CONFIG_USB_NET_SR9700=y +CONFIG_USB_NET_SR9800=y +CONFIG_USB_NET_SMSC75XX=y +CONFIG_USB_NET_SMSC95XX=y +CONFIG_USB_NET_GL620A=y +CONFIG_USB_NET_NET1080=y +CONFIG_USB_NET_PLUSB=y +CONFIG_USB_NET_MCS7830=y +CONFIG_USB_NET_RNDIS_HOST=y +CONFIG_USB_NET_CDC_SUBSET_ENABLE=y +CONFIG_USB_NET_CDC_SUBSET=y +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +# CONFIG_USB_EPSON2888 is not set +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=y +CONFIG_USB_NET_CX82310_ETH=y +# CONFIG_USB_NET_KALMIA is not set +# CONFIG_USB_NET_QMI_WWAN is not set +CONFIG_USB_NET_INT51X1=y +CONFIG_USB_IPHETH=y +# CONFIG_USB_SIERRA_NET is not set +# CONFIG_USB_VL600 is not set +CONFIG_USB_NET_CH9200=y CONFIG_WLAN=y CONFIG_WLAN_VENDOR_ADMTEK=y CONFIG_WLAN_VENDOR_ATH=y @@ -1598,7 +1666,6 @@ CONFIG_WLAN_VENDOR_CISCO=y CONFIG_WLAN_VENDOR_INTEL=y CONFIG_WLAN_VENDOR_INTERSIL=y # CONFIG_HOSTAP is not set -# CONFIG_PRISM54 is not set CONFIG_WLAN_VENDOR_MARVELL=y CONFIG_WLAN_VENDOR_MEDIATEK=y CONFIG_WLAN_VENDOR_RALINK=y @@ -1612,7 +1679,7 @@ CONFIG_WLAN_VENDOR_ZYDAS=y # Enable WiMAX (Networking options) to see the WiMAX drivers # # CONFIG_WAN is not set -# CONFIG_VMXNET3 is not set +CONFIG_VMXNET3=y # CONFIG_FUJITSU_ES is not set # CONFIG_ISDN is not set CONFIG_NVM=y @@ -1668,39 +1735,28 @@ CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_XTKBD is not set CONFIG_INPUT_MOUSE=y -# CONFIG_MOUSE_PS2 is not set +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_BYD=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_ELANTECH is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_PS2_FOCALTECH=y +# CONFIG_MOUSE_PS2_VMMOUSE is not set CONFIG_MOUSE_SERIAL=y -# CONFIG_MOUSE_APPLETOUCH is not set -# CONFIG_MOUSE_BCM5974 is not set +CONFIG_MOUSE_APPLETOUCH=y +CONFIG_MOUSE_BCM5974=y # CONFIG_MOUSE_CYAPA is not set -# CONFIG_MOUSE_ELAN_I2C is not set # CONFIG_MOUSE_VSXXXAA is not set # CONFIG_MOUSE_GPIO is not set # CONFIG_MOUSE_SYNAPTICS_I2C is not set -# CONFIG_MOUSE_SYNAPTICS_USB is not set -CONFIG_INPUT_JOYSTICK=y -# CONFIG_JOYSTICK_ANALOG is not set -# CONFIG_JOYSTICK_A3D is not set -# CONFIG_JOYSTICK_ADI is not set -# CONFIG_JOYSTICK_COBRA is not set -# CONFIG_JOYSTICK_GF2K is not set -# CONFIG_JOYSTICK_GRIP is not set -# CONFIG_JOYSTICK_GRIP_MP is not set -# CONFIG_JOYSTICK_GUILLEMOT is not set -# CONFIG_JOYSTICK_INTERACT is not set -# CONFIG_JOYSTICK_SIDEWINDER is not set -# CONFIG_JOYSTICK_TMDC is not set -# CONFIG_JOYSTICK_IFORCE is not set -# CONFIG_JOYSTICK_WARRIOR is not set -# CONFIG_JOYSTICK_MAGELLAN is not set -# CONFIG_JOYSTICK_SPACEORB is not set -# CONFIG_JOYSTICK_SPACEBALL is not set -# CONFIG_JOYSTICK_STINGER is not set -# CONFIG_JOYSTICK_TWIDJOY is not set -# CONFIG_JOYSTICK_ZHENHUA is not set -# CONFIG_JOYSTICK_AS5011 is not set -# CONFIG_JOYSTICK_JOYDUMP is not set -# CONFIG_JOYSTICK_XPAD is not set +CONFIG_MOUSE_SYNAPTICS_USB=y +# CONFIG_INPUT_JOYSTICK is not set CONFIG_INPUT_TABLET=y # CONFIG_TABLET_USB_ACECAD is not set # CONFIG_TABLET_USB_AIPTEK is not set @@ -1714,7 +1770,6 @@ CONFIG_TOUCHSCREEN_PROPERTIES=y # CONFIG_TOUCHSCREEN_ADS7846 is not set # CONFIG_TOUCHSCREEN_AD7877 is not set # CONFIG_TOUCHSCREEN_AD7879 is not set -# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set # CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set # CONFIG_TOUCHSCREEN_BU21013 is not set # CONFIG_TOUCHSCREEN_CY8CTMG110 is not set @@ -1726,18 +1781,15 @@ CONFIG_TOUCHSCREEN_PROPERTIES=y # CONFIG_TOUCHSCREEN_EETI is not set # CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set # CONFIG_TOUCHSCREEN_FUJITSU is not set -# CONFIG_TOUCHSCREEN_GOODIX is not set # CONFIG_TOUCHSCREEN_ILI210X is not set # CONFIG_TOUCHSCREEN_GUNZE is not set # CONFIG_TOUCHSCREEN_EKTF2127 is not set -# CONFIG_TOUCHSCREEN_ELAN is not set # CONFIG_TOUCHSCREEN_ELO is not set # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set # CONFIG_TOUCHSCREEN_WACOM_I2C is not set # CONFIG_TOUCHSCREEN_MAX11801 is not set # CONFIG_TOUCHSCREEN_MCS5000 is not set # CONFIG_TOUCHSCREEN_MMS114 is not set -# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set # CONFIG_TOUCHSCREEN_MTOUCH is not set # CONFIG_TOUCHSCREEN_INEXIO is not set # CONFIG_TOUCHSCREEN_MK712 is not set @@ -1746,7 +1798,6 @@ CONFIG_TOUCHSCREEN_PROPERTIES=y # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set # CONFIG_TOUCHSCREEN_TOUCHWIN is not set # CONFIG_TOUCHSCREEN_PIXCIR is not set -# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set # CONFIG_TOUCHSCREEN_WM831X is not set # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set @@ -1755,15 +1806,12 @@ CONFIG_TOUCHSCREEN_PROPERTIES=y # CONFIG_TOUCHSCREEN_TSC2005 is not set # CONFIG_TOUCHSCREEN_TSC2007 is not set # CONFIG_TOUCHSCREEN_PCAP is not set -# CONFIG_TOUCHSCREEN_RM_TS is not set -# CONFIG_TOUCHSCREEN_SILEAD is not set # CONFIG_TOUCHSCREEN_SIS_I2C is not set # CONFIG_TOUCHSCREEN_ST1232 is not set # CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set # CONFIG_TOUCHSCREEN_SX8654 is not set # CONFIG_TOUCHSCREEN_TPS6507X is not set # CONFIG_TOUCHSCREEN_ZFORCE is not set -# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set CONFIG_INPUT_MISC=y # CONFIG_INPUT_AD714X is not set # CONFIG_INPUT_BMA150 is not set @@ -1793,7 +1841,6 @@ CONFIG_INPUT_MISC=y # CONFIG_INPUT_WM831X_ON is not set # CONFIG_INPUT_PCAP is not set # CONFIG_INPUT_ADXL34X is not set -# CONFIG_INPUT_IMS_PCU is not set # CONFIG_INPUT_CMA3000 is not set # CONFIG_INPUT_IDEAPAD_SLIDEBAR is not set # CONFIG_INPUT_DRV260X_HAPTICS is not set @@ -1809,7 +1856,7 @@ CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y CONFIG_SERIO_I8042=y # CONFIG_SERIO_SERPORT is not set # CONFIG_SERIO_CT82C710 is not set -# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_PCIPS2=y CONFIG_SERIO_LIBPS2=y # CONFIG_SERIO_RAW is not set # CONFIG_SERIO_ALTERA_PS2 is not set @@ -1832,14 +1879,11 @@ CONFIG_UNIX98_PTYS=y # CONFIG_LEGACY_PTYS is not set CONFIG_SERIAL_NONSTANDARD=y # CONFIG_ROCKETPORT is not set -# CONFIG_CYCLADES is not set -# CONFIG_MOXA_INTELLIO is not set # CONFIG_MOXA_SMARTIO is not set # CONFIG_SYNCLINK is not set # CONFIG_SYNCLINKMP is not set # CONFIG_SYNCLINK_GT is not set # CONFIG_NOZOMI is not set -# CONFIG_ISI is not set # CONFIG_N_HDLC is not set # CONFIG_N_GSM is not set # CONFIG_TRACE_SINK is not set @@ -1889,11 +1933,15 @@ CONFIG_SERIAL_SCCNXP_CONSOLE=y # CONFIG_SERIAL_IFX6X60 is not set # CONFIG_SERIAL_PCH_UART is not set # CONFIG_SERIAL_ARC is not set -# CONFIG_SERIAL_RP2 is not set # CONFIG_SERIAL_FSL_LPUART is not set # CONFIG_TTY_PRINTK is not set # CONFIG_IPMI_HANDLER is not set -# CONFIG_HW_RANDOM is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +CONFIG_HW_RANDOM_INTEL=y +CONFIG_HW_RANDOM_AMD=y +CONFIG_HW_RANDOM_GEODE=y +CONFIG_HW_RANDOM_VIA=y # CONFIG_NVRAM is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set @@ -1921,6 +1969,7 @@ CONFIG_I2C_COMPAT=y # CONFIG_I2C_CHARDEV is not set # CONFIG_I2C_MUX is not set CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y # # I2C Hardware Bus support @@ -2039,7 +2088,7 @@ CONFIG_PTP_1588_CLOCK=y # # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. # -# CONFIG_PTP_1588_CLOCK_PCH is not set +CONFIG_PTP_1588_CLOCK_PCH=y CONFIG_PINCTRL=y # @@ -2151,8 +2200,157 @@ CONFIG_CHARGER_MANAGER=y # CONFIG_CHARGER_SMB347 is not set # CONFIG_BATTERY_GAUGE_LTC2941 is not set # CONFIG_CHARGER_RT9455 is not set -# CONFIG_HWMON is not set +CONFIG_HWMON=y +# CONFIG_HWMON_VID is not set +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_ABITUGURU is not set +# CONFIG_SENSORS_ABITUGURU3 is not set +# CONFIG_SENSORS_AD7314 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_K8TEMP is not set +# CONFIG_SENSORS_K10TEMP is not set +# CONFIG_SENSORS_FAM15H_POWER is not set +# CONFIG_SENSORS_APPLESMC is not set +# CONFIG_SENSORS_ASB100 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_DELL_SMM is not set +# CONFIG_SENSORS_DA9052_ADC is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FSCHMD is not set +# CONFIG_SENSORS_FTSTEUTATES is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_I5500 is not set +# CONFIG_SENSORS_CORETEMP is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX31722 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_PMBUS is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH56XX_COMMON is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_SMM665 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS1015 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_ADS7871 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set +# CONFIG_SENSORS_TC74 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_VIA_CPUTEMP is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_SENSORS_WM831X is not set + +# +# ACPI drivers +# +# CONFIG_SENSORS_ACPI_POWER is not set +# CONFIG_SENSORS_ATK0110 is not set CONFIG_THERMAL=y +CONFIG_THERMAL_HWMON=y CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set @@ -2186,7 +2384,6 @@ CONFIG_WATCHDOG_SYSFS=y # CONFIG_WDAT_WDT is not set # CONFIG_WM831X_WATCHDOG is not set # CONFIG_XILINX_WATCHDOG is not set -# CONFIG_ZIIRAVE_WATCHDOG is not set # CONFIG_CADENCE_WATCHDOG is not set # CONFIG_DW_WATCHDOG is not set # CONFIG_MAX63XX_WATCHDOG is not set @@ -2245,7 +2442,18 @@ CONFIG_SSB_POSSIBLE=y # # Sonics Silicon Backplane # -# CONFIG_SSB is not set +CONFIG_SSB=y +CONFIG_SSB_SPROM=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +# CONFIG_SSB_B43_PCI_BRIDGE is not set +CONFIG_SSB_SDIOHOST_POSSIBLE=y +# CONFIG_SSB_SDIOHOST is not set +# CONFIG_SSB_SILENT is not set +# CONFIG_SSB_DEBUG is not set +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y +# CONFIG_SSB_DRIVER_GPIO is not set CONFIG_BCMA_POSSIBLE=y # @@ -2393,15 +2601,57 @@ CONFIG_REGULATOR=y # # Graphics support # -# CONFIG_AGP is not set +CONFIG_AGP=y +CONFIG_AGP_ALI=y +CONFIG_AGP_ATI=y +CONFIG_AGP_AMD=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=y +CONFIG_AGP_NVIDIA=y +CONFIG_AGP_SIS=y +CONFIG_AGP_SWORKS=y +CONFIG_AGP_VIA=y +CONFIG_AGP_EFFICEON=y +CONFIG_INTEL_GTT=y CONFIG_VGA_ARB=y CONFIG_VGA_ARB_MAX_GPUS=16 CONFIG_VGA_SWITCHEROO=y -# CONFIG_DRM is not set +CONFIG_DRM=y +# CONFIG_DRM_DP_AUX_CHARDEV is not set +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_KMS_FB_HELPER=y +CONFIG_DRM_FBDEV_EMULATION=y +# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set +CONFIG_DRM_TTM=y + +# +# I2C encoder or helper chips +# +CONFIG_DRM_I2C_CH7006=y +CONFIG_DRM_I2C_SIL164=y +CONFIG_DRM_I2C_NXP_TDA998X=y # # ACP (Audio CoProcessor) Configuration # +# CONFIG_DRM_VGEM is not set +CONFIG_DRM_VMWGFX=y +CONFIG_DRM_VMWGFX_FBCON=y +CONFIG_DRM_GMA500=y +CONFIG_DRM_GMA600=y +CONFIG_DRM_GMA3600=y +# CONFIG_DRM_UDL is not set +# CONFIG_DRM_MGAG200 is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_QXL is not set +CONFIG_DRM_BOCHS=y +CONFIG_DRM_BRIDGE=y + +# +# Display Interface Bridges +# +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# CONFIG_DRM_LEGACY is not set # # Frame buffer Devices @@ -2410,20 +2660,21 @@ CONFIG_FB=y CONFIG_FIRMWARE_EDID=y CONFIG_FB_CMDLINE=y CONFIG_FB_NOTIFY=y -# CONFIG_FB_DDC is not set +CONFIG_FB_DDC=y CONFIG_FB_BOOT_VESA_SUPPORT=y CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set -# CONFIG_FB_SYS_FILLRECT is not set -# CONFIG_FB_SYS_COPYAREA is not set -# CONFIG_FB_SYS_IMAGEBLIT is not set +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y # CONFIG_FB_FOREIGN_ENDIAN is not set -# CONFIG_FB_SYS_FOPS is not set +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_DEFERRED_IO=y # CONFIG_FB_SVGALIB is not set # CONFIG_FB_MACMODES is not set -# CONFIG_FB_BACKLIGHT is not set +CONFIG_FB_BACKLIGHT=y CONFIG_FB_MODE_HELPERS=y CONFIG_FB_TILEBLITTING=y @@ -2436,7 +2687,7 @@ CONFIG_FB_TILEBLITTING=y # CONFIG_FB_ARC is not set # CONFIG_FB_ASILIANT is not set # CONFIG_FB_IMSTT is not set -# CONFIG_FB_VGA16 is not set +CONFIG_FB_VGA16=y # CONFIG_FB_UVESA is not set CONFIG_FB_VESA=y CONFIG_FB_EFI=y @@ -2444,14 +2695,34 @@ CONFIG_FB_EFI=y # CONFIG_FB_HGA is not set # CONFIG_FB_OPENCORES is not set # CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_NVIDIA is not set -# CONFIG_FB_RIVA is not set -# CONFIG_FB_I740 is not set -# CONFIG_FB_LE80578 is not set +CONFIG_FB_NVIDIA=y +CONFIG_FB_NVIDIA_I2C=y +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_BACKLIGHT=y +CONFIG_FB_RIVA=y +CONFIG_FB_RIVA_I2C=y +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_BACKLIGHT=y +CONFIG_FB_I740=y +CONFIG_FB_I810=y +# CONFIG_FB_I810_GTF is not set +CONFIG_FB_LE80578=y +CONFIG_FB_CARILLO_RANCH=y +CONFIG_FB_INTEL=y +# CONFIG_FB_INTEL_DEBUG is not set +# CONFIG_FB_INTEL_I2C is not set # CONFIG_FB_MATROX is not set -# CONFIG_FB_RADEON is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_ATY is not set +CONFIG_FB_RADEON=y +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY128=y +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY=y +CONFIG_FB_ATY_CT=y +# CONFIG_FB_ATY_GENERIC_LCD is not set +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_BACKLIGHT=y # CONFIG_FB_S3 is not set # CONFIG_FB_SAVAGE is not set # CONFIG_FB_SIS is not set @@ -2474,7 +2745,7 @@ CONFIG_FB_EFI=y # CONFIG_FB_MB862XX is not set # CONFIG_FB_BROADSHEET is not set # CONFIG_FB_AUO_K190X is not set -# CONFIG_FB_SIMPLE is not set +CONFIG_FB_SIMPLE=y # CONFIG_FB_SM712 is not set CONFIG_BACKLIGHT_LCD_SUPPORT=y # CONFIG_LCD_CLASS_DEVICE is not set @@ -2494,7 +2765,8 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_GPIO is not set # CONFIG_BACKLIGHT_LV5207LP is not set # CONFIG_BACKLIGHT_BD6107 is not set -# CONFIG_VGASTATE is not set +CONFIG_VGASTATE=y +CONFIG_HDMI=y # # Console display driver support @@ -2507,7 +2779,10 @@ CONFIG_DUMMY_CONSOLE_ROWS=25 CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -# CONFIG_LOGO is not set +CONFIG_LOGO=y +CONFIG_LOGO_LINUX_MONO=y +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y # CONFIG_SOUND is not set # @@ -2516,21 +2791,21 @@ CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_HID=y CONFIG_HID_BATTERY_STRENGTH=y CONFIG_HIDRAW=y -# CONFIG_UHID is not set -# CONFIG_HID_GENERIC is not set +CONFIG_UHID=y +CONFIG_HID_GENERIC=y # # Special HID drivers # -# CONFIG_HID_A4TECH is not set +CONFIG_HID_A4TECH=y # CONFIG_HID_ACRUX is not set -# CONFIG_HID_APPLE is not set +CONFIG_HID_APPLE=y # CONFIG_HID_APPLEIR is not set -# CONFIG_HID_ASUS is not set +CONFIG_HID_ASUS=y # CONFIG_HID_AUREAL is not set -# CONFIG_HID_BELKIN is not set +CONFIG_HID_BELKIN=y # CONFIG_HID_BETOP_FF is not set -# CONFIG_HID_CHERRY is not set +CONFIG_HID_CHERRY=y # CONFIG_HID_CHICONY is not set # CONFIG_HID_CORSAIR is not set # CONFIG_HID_CMEDIA is not set @@ -2538,31 +2813,38 @@ CONFIG_HIDRAW=y # CONFIG_HID_CYPRESS is not set # CONFIG_HID_DRAGONRISE is not set # CONFIG_HID_EMS_FF is not set -# CONFIG_HID_ELECOM is not set +CONFIG_HID_ELECOM=y # CONFIG_HID_ELO is not set -# CONFIG_HID_EZKEY is not set +CONFIG_HID_EZKEY=y # CONFIG_HID_GEMBIRD is not set # CONFIG_HID_GFRM is not set -# CONFIG_HID_HOLTEK is not set +CONFIG_HID_HOLTEK=y +# CONFIG_HOLTEK_FF is not set # CONFIG_HID_GT683R is not set # CONFIG_HID_KEYTOUCH is not set -# CONFIG_HID_KYE is not set +CONFIG_HID_KYE=y # CONFIG_HID_UCLOGIC is not set # CONFIG_HID_WALTOP is not set # CONFIG_HID_GYRATION is not set # CONFIG_HID_ICADE is not set # CONFIG_HID_TWINHAN is not set -# CONFIG_HID_KENSINGTON is not set +CONFIG_HID_KENSINGTON=y # CONFIG_HID_LCPOWER is not set # CONFIG_HID_LED is not set -# CONFIG_HID_LENOVO is not set -# CONFIG_HID_LOGITECH is not set -# CONFIG_HID_MAGICMOUSE is not set -# CONFIG_HID_MICROSOFT is not set -# CONFIG_HID_MONTEREY is not set +CONFIG_HID_LENOVO=y +CONFIG_HID_LOGITECH=y +CONFIG_HID_LOGITECH_DJ=y +CONFIG_HID_LOGITECH_HIDPP=y +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +# CONFIG_LOGIG940_FF is not set +# CONFIG_LOGIWHEELS_FF is not set +CONFIG_HID_MAGICMOUSE=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y # CONFIG_HID_MULTITOUCH is not set # CONFIG_HID_NTRIG is not set -# CONFIG_HID_ORTEK is not set +CONFIG_HID_ORTEK=y # CONFIG_HID_PANTHERLORD is not set # CONFIG_HID_PENMOUNT is not set # CONFIG_HID_PETALYNX is not set @@ -2570,12 +2852,12 @@ CONFIG_HIDRAW=y # CONFIG_HID_PLANTRONICS is not set # CONFIG_HID_PRIMAX is not set # CONFIG_HID_ROCCAT is not set -# CONFIG_HID_SAITEK is not set +CONFIG_HID_SAITEK=y # CONFIG_HID_SAMSUNG is not set # CONFIG_HID_SONY is not set -# CONFIG_HID_SPEEDLINK is not set +CONFIG_HID_SPEEDLINK=y # CONFIG_HID_STEELSERIES is not set -# CONFIG_HID_SUNPLUS is not set +CONFIG_HID_SUNPLUS=y # CONFIG_HID_RMI is not set # CONFIG_HID_GREENASIA is not set # CONFIG_HID_SMARTJOYPLUS is not set @@ -2589,7 +2871,7 @@ CONFIG_HIDRAW=y # CONFIG_HID_ZEROPLUS is not set # CONFIG_HID_ZYDACRON is not set # CONFIG_HID_SENSOR_HUB is not set -# CONFIG_HID_ALPS is not set +CONFIG_HID_ALPS=y # # USB HID support @@ -2614,10 +2896,9 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # CONFIG_USB_DEFAULT_PERSIST=y CONFIG_USB_DYNAMIC_MINORS=y -CONFIG_USB_OTG=y -CONFIG_USB_OTG_WHITELIST=y -CONFIG_USB_OTG_BLACKLIST_HUB=y -# CONFIG_USB_OTG_FSM is not set +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set # CONFIG_USB_LEDS_TRIGGER_USBPORT is not set # CONFIG_USB_MON is not set # CONFIG_USB_WUSB_CBAF is not set @@ -2626,7 +2907,9 @@ CONFIG_USB_OTG_BLACKLIST_HUB=y # USB Host Controller Drivers # # CONFIG_USB_C67X00_HCD is not set -# CONFIG_USB_XHCI_HCD is not set +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PCI=y +# CONFIG_USB_XHCI_PLATFORM is not set CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y @@ -2637,10 +2920,14 @@ CONFIG_USB_EHCI_PCI=y # CONFIG_USB_ISP1362_HCD is not set # CONFIG_USB_FOTG210_HCD is not set # CONFIG_USB_MAX3421_HCD is not set -# CONFIG_USB_OHCI_HCD is not set -# CONFIG_USB_UHCI_HCD is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +# CONFIG_USB_OHCI_HCD_SSB is not set +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +CONFIG_USB_UHCI_HCD=y # CONFIG_USB_SL811_HCD is not set # CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_SSB is not set # CONFIG_USB_HCD_TEST_MODE is not set # @@ -2648,7 +2935,7 @@ CONFIG_USB_EHCI_PCI=y # # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set -# CONFIG_USB_WDM is not set +CONFIG_USB_WDM=y # CONFIG_USB_TMC is not set # @@ -2658,7 +2945,22 @@ CONFIG_USB_EHCI_PCI=y # # also be needed; see USB_STORAGE Help for more info # -# CONFIG_USB_STORAGE is not set +CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE_DEBUG=y +CONFIG_USB_STORAGE_REALTEK=y +CONFIG_REALTEK_AUTOPM=y +CONFIG_USB_STORAGE_DATAFAB=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_USBAT=y +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_JUMPSHOT=y +CONFIG_USB_STORAGE_ALAUDA=y +CONFIG_USB_STORAGE_ONETOUCH=y +CONFIG_USB_STORAGE_KARMA=y +CONFIG_USB_STORAGE_CYPRESS_ATACB=y +CONFIG_USB_UAS=y # # USB Imaging devices @@ -2675,66 +2977,11 @@ CONFIG_USB_EHCI_PCI=y # # USB port drivers # -CONFIG_USB_SERIAL=y -CONFIG_USB_SERIAL_CONSOLE=y -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_SIMPLE=y -CONFIG_USB_SERIAL_AIRCABLE=y -CONFIG_USB_SERIAL_ARK3116=y -CONFIG_USB_SERIAL_BELKIN=y -CONFIG_USB_SERIAL_CH341=y -# CONFIG_USB_SERIAL_WHITEHEAT is not set -CONFIG_USB_SERIAL_DIGI_ACCELEPORT=y -CONFIG_USB_SERIAL_CP210X=y -CONFIG_USB_SERIAL_CYPRESS_M8=y -CONFIG_USB_SERIAL_EMPEG=y -CONFIG_USB_SERIAL_FTDI_SIO=y -CONFIG_USB_SERIAL_VISOR=y -CONFIG_USB_SERIAL_IPAQ=y -CONFIG_USB_SERIAL_IR=y -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_EDGEPORT_TI is not set -CONFIG_USB_SERIAL_F81232=y -CONFIG_USB_SERIAL_GARMIN=y -CONFIG_USB_SERIAL_IPW=y -CONFIG_USB_SERIAL_IUU=y -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -# CONFIG_USB_SERIAL_KEYSPAN is not set -CONFIG_USB_SERIAL_KLSI=y -CONFIG_USB_SERIAL_KOBIL_SCT=y -CONFIG_USB_SERIAL_MCT_U232=y -CONFIG_USB_SERIAL_METRO=y -CONFIG_USB_SERIAL_MOS7720=y -CONFIG_USB_SERIAL_MOS7840=y -# CONFIG_USB_SERIAL_MXUPORT is not set -CONFIG_USB_SERIAL_NAVMAN=y -CONFIG_USB_SERIAL_PL2303=y -CONFIG_USB_SERIAL_OTI6858=y -CONFIG_USB_SERIAL_QCAUX=y -CONFIG_USB_SERIAL_QUALCOMM=y -CONFIG_USB_SERIAL_SPCP8X5=y -CONFIG_USB_SERIAL_SAFE=y -CONFIG_USB_SERIAL_SAFE_PADDED=y -CONFIG_USB_SERIAL_SIERRAWIRELESS=y -CONFIG_USB_SERIAL_SYMBOL=y -# CONFIG_USB_SERIAL_TI is not set -CONFIG_USB_SERIAL_CYBERJACK=y -# CONFIG_USB_SERIAL_XIRCOM is not set -CONFIG_USB_SERIAL_WWAN=y -CONFIG_USB_SERIAL_OPTION=y -CONFIG_USB_SERIAL_OMNINET=y -CONFIG_USB_SERIAL_OPTICON=y -CONFIG_USB_SERIAL_XSENS_MT=y -CONFIG_USB_SERIAL_WISHBONE=y -CONFIG_USB_SERIAL_SSU100=y -CONFIG_USB_SERIAL_QT2=y -# CONFIG_USB_SERIAL_DEBUG is not set +# CONFIG_USB_SERIAL is not set # # USB Miscellaneous drivers # -# CONFIG_USB_EMI62 is not set -# CONFIG_USB_EMI26 is not set # CONFIG_USB_ADUTUX is not set # CONFIG_USB_SEVSEG is not set # CONFIG_USB_RIO500 is not set @@ -2751,12 +2998,12 @@ CONFIG_USB_SERIAL_QT2=y # CONFIG_USB_IOWARRIOR is not set # CONFIG_USB_TEST is not set # CONFIG_USB_EHSET_TEST_FIXTURE is not set -# CONFIG_USB_ISIGHTFW is not set # CONFIG_USB_YUREX is not set # CONFIG_USB_EZUSB_FX2 is not set # CONFIG_USB_HSIC_USB3503 is not set # CONFIG_USB_HSIC_USB4604 is not set # CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_CHAOSKEY is not set # CONFIG_UCSI is not set # @@ -2790,7 +3037,6 @@ CONFIG_SDIO_UART=y # CONFIG_MMC_TIFM_SD is not set # CONFIG_MMC_CB710 is not set # CONFIG_MMC_VIA_SDMMC is not set -# CONFIG_MMC_VUB300 is not set # CONFIG_MMC_USHC is not set # CONFIG_MMC_USDHI6ROL0 is not set # CONFIG_MMC_TOSHIBA_PCI is not set @@ -2809,8 +3055,6 @@ CONFIG_LEDS_CLASS=y # CONFIG_LEDS_GPIO is not set # CONFIG_LEDS_LP3944 is not set # CONFIG_LEDS_LP3952 is not set -# CONFIG_LEDS_LP5521 is not set -# CONFIG_LEDS_LP5523 is not set # CONFIG_LEDS_LP5562 is not set # CONFIG_LEDS_LP8501 is not set # CONFIG_LEDS_LP8860 is not set @@ -2855,7 +3099,7 @@ CONFIG_LEDS_TRIGGER_CPU=y # CONFIG_LEDS_TRIGGER_CAMERA is not set CONFIG_LEDS_TRIGGER_PANIC=y CONFIG_ACCESSIBILITY=y -CONFIG_A11Y_BRAILLE_CONSOLE=y +# CONFIG_A11Y_BRAILLE_CONSOLE is not set # CONFIG_INFINIBAND is not set CONFIG_EDAC_ATOMIC_SCRUB=y CONFIG_EDAC_SUPPORT=y @@ -2987,7 +3231,16 @@ CONFIG_SYNC_FILE=y # CONFIG_SW_SYNC is not set CONFIG_AUXDISPLAY=y # CONFIG_IMG_ASCII_LCD is not set -# CONFIG_UIO is not set +CONFIG_UIO=y +# CONFIG_UIO_CIF is not set +# CONFIG_UIO_PDRV_GENIRQ is not set +# CONFIG_UIO_DMEM_GENIRQ is not set +# CONFIG_UIO_AEC is not set +# CONFIG_UIO_SERCOS3 is not set +# CONFIG_UIO_PCI_GENERIC is not set +# CONFIG_UIO_NETX is not set +# CONFIG_UIO_PRUSS is not set +# CONFIG_UIO_MF624 is not set # CONFIG_VFIO is not set CONFIG_VIRT_DRIVERS=y @@ -3002,8 +3255,6 @@ CONFIG_VIRT_DRIVERS=y # # CONFIG_HYPERV is not set CONFIG_STAGING=y -# CONFIG_SLICOSS is not set -# CONFIG_R8712U is not set # CONFIG_RTS5208 is not set # CONFIG_FB_SM750 is not set # CONFIG_FB_XGI is not set @@ -3021,7 +3272,6 @@ CONFIG_STAGING_MEDIA=y # CONFIG_GS_FPGABOOT is not set # CONFIG_FB_TFT is not set # CONFIG_MOST is not set -# CONFIG_KS7010 is not set # CONFIG_GREYBUS is not set CONFIG_X86_PLATFORM_DEVICES=y # CONFIG_ACERHDF is not set @@ -3109,7 +3359,6 @@ CONFIG_INTEL_IOMMU_FLOPPY_WA=y # # Remoteproc drivers # -# CONFIG_STE_MODEM_RPROC is not set # # Rpmsg drivers @@ -3256,6 +3505,7 @@ CONFIG_FS_MBCACHE=y # CONFIG_JFS_FS is not set # CONFIG_XFS_FS is not set # CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set # CONFIG_BTRFS_FS is not set # CONFIG_NILFS2_FS is not set # CONFIG_F2FS_FS is not set @@ -3296,8 +3546,12 @@ CONFIG_AUTOFS4_FS=y # # DOS/FAT/NT Filesystems # -# CONFIG_MSDOS_FS is not set -# CONFIG_VFAT_FS is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_DEFAULT_UTF8 is not set # CONFIG_NTFS_FS is not set # @@ -3316,7 +3570,7 @@ CONFIG_TMPFS_POSIX_ACL=y CONFIG_TMPFS_XATTR=y CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y -# CONFIG_CONFIGFS_FS is not set +CONFIG_CONFIGFS_FS=y CONFIG_EFIVAR_FS=y CONFIG_MISC_FILESYSTEMS=y # CONFIG_ORANGEFS_FS is not set @@ -3406,6 +3660,7 @@ CONFIG_NLS_DEFAULT="utf8" # CONFIG_NLS_MAC_ROMANIAN is not set # CONFIG_NLS_MAC_TURKISH is not set # CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set # # Kernel hacking @@ -3779,9 +4034,6 @@ CONFIG_CRYPTO_HW=y # CONFIG_CRYPTO_DEV_GEODE is not set CONFIG_CRYPTO_DEV_CCP=y # CONFIG_CRYPTO_DEV_CCP_DD is not set -# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set -# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set -# CONFIG_CRYPTO_DEV_QAT_C62X is not set # CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set # CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set # CONFIG_CRYPTO_DEV_QAT_C62XVF is not set @@ -3816,7 +4068,7 @@ CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_IO=y CONFIG_ARCH_HAS_FAST_MULTIPLIER=y -# CONFIG_CRC_CCITT is not set +CONFIG_CRC_CCITT=y CONFIG_CRC16=y CONFIG_CRC_T10DIF=y # CONFIG_CRC_ITU_T is not set @@ -3827,7 +4079,7 @@ CONFIG_CRC32_SLICEBY8=y # CONFIG_CRC32_SARWATE is not set # CONFIG_CRC32_BIT is not set # CONFIG_CRC7 is not set -# CONFIG_LIBCRC32C is not set +CONFIG_LIBCRC32C=y # CONFIG_CRC8 is not set CONFIG_AUDIT_GENERIC=y # CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set @@ -3871,19 +4123,9 @@ CONFIG_MPILIB=y CONFIG_OID_REGISTRY=y CONFIG_UCS2_STRING=y CONFIG_FONT_SUPPORT=y -CONFIG_FONTS=y -# CONFIG_FONT_8x8 is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_7x14 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set -# CONFIG_FONT_MINI_4x6 is not set -# CONFIG_FONT_6x10 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_SUN12x22 is not set -# CONFIG_FONT_10x18 is not set -CONFIG_FONT_AUTOSELECT=y # CONFIG_SG_SPLIT is not set CONFIG_SG_POOL=y CONFIG_ARCH_HAS_SG_CHAIN=y diff --git a/steps/lwext4-1.0.0-lb1/files/make_fiwix_initrd.c b/steps/lwext4-1.0.0-lb1/files/make_fiwix_initrd.c index 668f7ca0..e37556e8 100644 --- a/steps/lwext4-1.0.0-lb1/files/make_fiwix_initrd.c +++ b/steps/lwext4-1.0.0-lb1/files/make_fiwix_initrd.c @@ -48,7 +48,7 @@ #define BLOCK_SIZE 1024 #define FILENAME_LENGTH 256 -#define INITRD_MB 1152 +#define INITRD_MB 1280 const char *input_name = NULL; /**@brief Block device handle.*/ diff --git a/steps/lwext4-1.0.0-lb1/lwext4-1.0.0-lb1.checksums b/steps/lwext4-1.0.0-lb1/lwext4-1.0.0-lb1.checksums index ebc67f1e..cbbef75a 100644 --- a/steps/lwext4-1.0.0-lb1/lwext4-1.0.0-lb1.checksums +++ b/steps/lwext4-1.0.0-lb1/lwext4-1.0.0-lb1.checksums @@ -1 +1 @@ -a07ed611ce6a0547063be9d5f8ba0f7d14a2ea4e23fa6ff3cbcb09974ece9527 /usr/bin/make_fiwix_initrd +68e17d5d7d372101fb7d9857113b9d9b0d19610b19014a742d054d52998c782d /usr/bin/make_fiwix_initrd From d5008f93a529bd04b7e97eadb46e7dc3aaf2a695 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 1 Jan 2024 22:51:33 +0100 Subject: [PATCH 06/15] Support swap files in qemu or bare-metal mode This can help alleviate memory pressure when bootstrapping with high core counts. --- rootfs.py | 13 ++++++++++++- steps/improve/swap.sh | 19 +++++++++++++++++++ steps/manifest | 1 + 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 steps/improve/swap.sh diff --git a/rootfs.py b/rootfs.py index 5a9e7988..bce02ac3 100755 --- a/rootfs.py +++ b/rootfs.py @@ -12,6 +12,7 @@ you can run bootstap inside chroot. # SPDX-FileCopyrightText: 2021 Bastian Bittorf # SPDX-FileCopyrightText: 2021 Melg Eight # SPDX-FileCopyrightText: 2021-23 fosslinux +# SPDX-FileCopyrightText: 2023-24 Gábor Stefanik import argparse import os @@ -31,6 +32,7 @@ def create_configuration_file(args): config.write(f"CHROOT={args.chroot or args.bwrap}\n") config.write(f"UPDATE_CHECKSUMS={args.update_checksums}\n") config.write(f"JOBS={args.cores}\n") + config.write(f"SWAP_SIZE={args.swap}\n") config.write(f"INTERNAL_CI={args.internal_ci or False}\n") config.write(f"BARE_METAL={args.bare_metal}\n") if (args.bare_metal or args.qemu) and not args.kernel: @@ -44,7 +46,7 @@ def create_configuration_file(args): config.write("KERNEL_BOOTSTRAP=False\n") config.write(f"BUILD_KERNELS={args.update_checksums or args.build_kernels}\n") -# pylint: disable=too-many-statements +# pylint: disable=too-many-statements,too-many-branches def main(): """ A few command line arguments to customize bootstrap. @@ -86,6 +88,8 @@ def main(): parser.add_argument("--early-preseed", help="Skip early stages of live-bootstrap.", nargs=None) parser.add_argument("--internal-ci", help="INTERNAL for github CI") + parser.add_argument("-s", "--swap", help="Swap space to allocate in Linux", + default=0) # QEMU arguments parser.add_argument("-q", "--qemu", help="Use QEMU", @@ -143,6 +147,13 @@ def main(): else: args.target_size = 0 + # Swap file size validation + if args.qemu or args.bare_metal: + args.swap = (int(str(args.swap).rstrip('gGmM')) * + (1024 if str(args.swap).lower().endswith('g') else 1)) + else: + args.swap = 0 + # bootstrap.cfg try: os.remove(os.path.join('steps', 'bootstrap.cfg')) diff --git a/steps/improve/swap.sh b/steps/improve/swap.sh new file mode 100644 index 00000000..6dea7a4a --- /dev/null +++ b/steps/improve/swap.sh @@ -0,0 +1,19 @@ + +#!/bin/sh +# +# SPDX-FileCopyrightText: 2024 Gábor Stefanik +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Set up swap + +. /steps/bootstrap.cfg +. /steps/env + +if ! test -f /swapfile +then + echo "Making swap..." + dd if=/dev/zero of=/swapfile bs=1M count=${SWAP_SIZE} + mkswap /swapfile +fi +swapon /swapfile diff --git a/steps/manifest b/steps/manifest index 6dedaead..d692f866 100644 --- a/steps/manifest +++ b/steps/manifest @@ -119,6 +119,7 @@ build: linux-4.9.10 ( BUILD_LINUX == True ) jump: break ( INTERNAL_CI == pass1 ) jump: linux ( CHROOT == False ) improve: finalize_fhs +improve: swap ( SWAP_SIZE != 0 ) build: musl-1.2.4 build: curl-8.5.0 improve: populate_device_nodes From 2a095a3301c0a81381cc1ae3f11e9871e9baeb8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 1 Jan 2024 23:36:13 +0100 Subject: [PATCH 07/15] After bootstrap, drop to a shell if needed, then shut down cleanly --- steps/improve/after.sh | 24 ++++++++++++++++++++++++ steps/jump/move_disk.sh | 1 + steps/manifest | 1 + 3 files changed, 26 insertions(+) create mode 100644 steps/improve/after.sh diff --git a/steps/improve/after.sh b/steps/improve/after.sh new file mode 100644 index 00000000..155a7425 --- /dev/null +++ b/steps/improve/after.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# +# SPDX-FileCopyrightText: 2024 Gábor Stefanik +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# After bootstrap, drop to a shell if needed, then shut down cleanly. + +. /steps/bootstrap.cfg +. /steps/env + +if [ "${INTERACTIVE}" = True ]; then + env - PATH=${PREFIX}/bin PS1="\w # " bash -i +fi + +if [ "${CHROOT}" = False ]; then + # ignore errors due to fstab or swapfile not existing + swapoff -a &> /dev/null || true + sync + # sysrq to avoid device busy; then mount to wait for it to finish + echo u > /proc/sysrq_trigger + mount -o remount,ro / + echo o > /proc/sysrq_trigger # power off +fi diff --git a/steps/jump/move_disk.sh b/steps/jump/move_disk.sh index 426e6355..1825a0ea 100755 --- a/steps/jump/move_disk.sh +++ b/steps/jump/move_disk.sh @@ -27,5 +27,6 @@ mkdir -p /rootonly # This doesn't recursively mount - that's why we're able to copy everything over mount --bind / /rootonly cp -ar /rootonly/* /newroot/ +sed -e 's/newroot//' /rootonly/etc/mtab | grep -v 'rootonly' > /newroot/etc/mtab umount /rootonly switch_root /newroot /init diff --git a/steps/manifest b/steps/manifest index 6dedaead..bb355393 100644 --- a/steps/manifest +++ b/steps/manifest @@ -182,3 +182,4 @@ build: binutils-2.41 build: gcc-13.1.0 improve: null_time ( FORCE_TIMESTAMPS == True ) improve: update_checksums ( UPDATE_CHECKSUMS == True ) +improve: after From 82062143a404b193e8acc63796857af100a898ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 8 Jan 2024 12:43:31 +0100 Subject: [PATCH 08/15] Fix spelling of sysrq-trigger in after.sh --- steps/improve/after.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/steps/improve/after.sh b/steps/improve/after.sh index 155a7425..b71bf434 100644 --- a/steps/improve/after.sh +++ b/steps/improve/after.sh @@ -18,7 +18,7 @@ if [ "${CHROOT}" = False ]; then swapoff -a &> /dev/null || true sync # sysrq to avoid device busy; then mount to wait for it to finish - echo u > /proc/sysrq_trigger + echo u > /proc/sysrq-trigger mount -o remount,ro / - echo o > /proc/sysrq_trigger # power off + echo o > /proc/sysrq-trigger # power off fi From a0f13c0ed2a4ba9814a68c2e69d1aa0ab008166b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 1 Jan 2024 22:37:32 +0100 Subject: [PATCH 09/15] Support interactive issue resolution prompts This adds a new flag, -i / --interactive, which enables opening a Bash prompt whenever something goes wrong in the bootstrap. This is highly useful when developing or debugging live-bootstrap, but it needs to be off by default, for use in automated processes. In the future, asking for variables at runtime could (and perhaps should) also be gated behind this flag. --- rootfs.py | 14 +++++++---- seed/script-generator.c | 52 ++++++++++++++++++++++++----------------- 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/rootfs.py b/rootfs.py index 5a9e7988..5f3c9668 100755 --- a/rootfs.py +++ b/rootfs.py @@ -32,6 +32,7 @@ def create_configuration_file(args): config.write(f"UPDATE_CHECKSUMS={args.update_checksums}\n") config.write(f"JOBS={args.cores}\n") config.write(f"INTERNAL_CI={args.internal_ci or False}\n") + config.write(f"INTERACTIVE={args.interactive}\n") config.write(f"BARE_METAL={args.bare_metal}\n") if (args.bare_metal or args.qemu) and not args.kernel: if args.repo or args.external_sources: @@ -70,21 +71,24 @@ def main(): help="Force all files timestamps to be 0 unix time", action="store_true") parser.add_argument("--update-checksums", - help="Update checksum files.", + help="Update checksum files", action="store_true") parser.add_argument("--external-sources", - help="Download sources externally from live-bootstrap.", + help="Download sources externally from live-bootstrap", action="store_true") parser.add_argument("--build-kernels", - help="Also build kernels in chroot and bwrap builds.", + help="Also build kernels in chroot and bwrap builds", action="store_true") parser.add_argument("--no-create-config", help="Do not automatically create config file", action="store_true") + parser.add_argument("-i", "--interactive", + help="Use interactive prompts to resolve issues during bootstrap", + action="store_true") parser.add_argument("-r", "--repo", - help="Path to prebuilt binary packages.", nargs=None) + help="Path to prebuilt binary packages", nargs=None) parser.add_argument("--early-preseed", - help="Skip early stages of live-bootstrap.", nargs=None) + help="Skip early stages of live-bootstrap", nargs=None) parser.add_argument("--internal-ci", help="INTERNAL for github CI") # QEMU arguments diff --git a/seed/script-generator.c b/seed/script-generator.c index 65daa387..1cbb858e 100644 --- a/seed/script-generator.c +++ b/seed/script-generator.c @@ -407,7 +407,7 @@ void add_to_fiwix_filelist(char *filename) { } /* Script generator. */ -FILE *start_script(int id, int using_bash) { +FILE *start_script(int id, int bash_build) { /* Create the file /steps/$id.sh */ char *filename = calloc(MAX_STRING, sizeof(char)); strcpy(filename, "/steps/"); @@ -423,9 +423,19 @@ FILE *start_script(int id, int using_bash) { exit(1); } - if (using_bash) { + if (bash_build) { fputs("#!/bin/bash\n", out); - fputs("set -e\n", out); + if (strcmp(get_var("INTERACTIVE"), "True") == 0) { + if (bash_build != 1) { + fputs("set -E\ntrap 'env PS1=\"[TRAP] \\w # \" bash -i' ERR\n", out); + } else { + fputs("set -E\ntrap 'bash -c '\"'\"'while true; do printf \"" + "[TRAP - use Ctrl+D] $(pwd) # \"; $(cat); done'\"'\"'' ERR\n", + out); + } + } else { + fputs("set -e\n", out); + } fputs("cd /steps\n", out); fputs(". ./bootstrap.cfg\n", out); fputs(". ./env\n", out); @@ -450,8 +460,8 @@ FILE *start_script(int id, int using_bash) { return out; } -void output_call_script(FILE *out, char *type, char *name, int using_bash, int source) { - if (using_bash) { +void output_call_script(FILE *out, char *type, char *name, int bash_build, int source) { + if (bash_build) { if (source) { fputs(". ", out); } else { @@ -469,8 +479,8 @@ void output_call_script(FILE *out, char *type, char *name, int using_bash, int s fputs(".sh\n", out); } -void output_build(FILE *out, Directive *directive, int pass_no, int using_bash) { - if (using_bash) { +void output_build(FILE *out, Directive *directive, int pass_no, int bash_build) { + if (bash_build) { fputs("build ", out); fputs(directive->arg, out); fputs(" pass", out); @@ -510,9 +520,9 @@ void generate(Directive *directives) { int counter = 0; /* Initially, we use kaem, not bash. */ - int using_bash = 0; + int bash_build = 0; - FILE *out = start_script(counter, using_bash); + FILE *out = start_script(counter, bash_build); counter += 1; Directive *directive; @@ -528,24 +538,24 @@ void generate(Directive *directives) { pass_no += 1; } } - output_build(out, directive, pass_no, using_bash); + output_build(out, directive, pass_no, bash_build); if (strncmp(directive->arg, "bash-", 5) == 0) { - if (!using_bash) { + if (!bash_build) { /* * We are transitioning from bash to kaem, the point at which "early * preseed" occurs. So generate the preseed jump script at this point. */ generate_preseed_jump(counter); } - using_bash = 1; + bash_build = 1; /* Create call to new script. */ - output_call_script(out, "", int2str(counter, 10, 0), using_bash, 0); + output_call_script(out, "", int2str(counter, 10, 0), bash_build, 0); fclose(out); - out = start_script(counter, using_bash); + out = start_script(counter, bash_build); counter += 1; } } else if (directive->type == TYPE_IMPROVE) { - output_call_script(out, "improve", directive->arg, using_bash, 1); + output_call_script(out, "improve", directive->arg, bash_build, 1); } else if (directive->type == TYPE_JUMP) { /* * Create /init to call new script. @@ -553,7 +563,7 @@ void generate(Directive *directives) { * moving that to /init at the appropriate time. */ filename = calloc(MAX_STRING, sizeof(char)); - if (using_bash) { + if (bash_build) { fputs("mv /init /init.bak\n", out); /* Move new init to /init. */ strcpy(filename, "/init."); @@ -572,7 +582,7 @@ void generate(Directive *directives) { fputs("chmod 755 /init\n", out); } - output_call_script(out, "jump", directive->arg, using_bash, 1); + output_call_script(out, "jump", directive->arg, bash_build, 1); fclose(out); /* @@ -581,7 +591,7 @@ void generate(Directive *directives) { */ add_to_fiwix_filelist(filename); - if (using_bash) { + if (bash_build) { out = fopen(filename, "w"); if (out == NULL) { fputs("Error opening /init\n", stderr); @@ -596,12 +606,12 @@ void generate(Directive *directives) { } fputs("set -ex\n", out); } - output_call_script(out, "", int2str(counter, 10, 0), using_bash, 0); + output_call_script(out, "", int2str(counter, 10, 0), bash_build, 0); fclose(out); - out = start_script(counter, using_bash); + out = start_script(counter, bash_build); counter += 1; } else if (directive->type == TYPE_MAINT) { - output_call_script(out, "maint", directive->arg, using_bash, 1); + output_call_script(out, "maint", directive->arg, bash_build, 1); } } fclose(out); From a76fac4fa796fc17ab385595425dbbf1e4e1d7a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 1 Jan 2024 23:01:57 +0100 Subject: [PATCH 10/15] Allow update_env to incorporate runtime changes to bootstrap.cfg Perform variable substitution at runtime, rather than at generation time. This way, if bootstrap.cfg changes after update_env, the new values there take effect immediately. --- steps/improve/update_env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/steps/improve/update_env.sh b/steps/improve/update_env.sh index 70ab828d..89ccfcee 100755 --- a/steps/improve/update_env.sh +++ b/steps/improve/update_env.sh @@ -6,7 +6,7 @@ unset GUILE_LOAD_PATH -cat > /steps/env <<- EOF +cat >> /steps/env <<- 'EOF' export PATH=${PREFIX}/bin PREFIX=${PREFIX} LIBDIR=${LIBDIR} From 50d1d68f99672a545503e584e5c6d6e49b7d87d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Mon, 1 Jan 2024 23:18:55 +0100 Subject: [PATCH 11/15] Restore multicore build support with kernel-bootstrap This was removed as part of the simplify refactor, severely slowing down qemu and bare-metal builds. Restoring it brings us back to the same build times that we saw before the refactor. --- rootfs.py | 1 + steps/improve/finalize_job_count.sh | 14 ++++++++++++++ steps/manifest | 1 + 3 files changed, 16 insertions(+) create mode 100644 steps/improve/finalize_job_count.sh diff --git a/rootfs.py b/rootfs.py index bce02ac3..36799f4b 100755 --- a/rootfs.py +++ b/rootfs.py @@ -33,6 +33,7 @@ def create_configuration_file(args): config.write(f"UPDATE_CHECKSUMS={args.update_checksums}\n") config.write(f"JOBS={args.cores}\n") config.write(f"SWAP_SIZE={args.swap}\n") + config.write(f"FINAL_JOBS={args.cores}\n") config.write(f"INTERNAL_CI={args.internal_ci or False}\n") config.write(f"BARE_METAL={args.bare_metal}\n") if (args.bare_metal or args.qemu) and not args.kernel: diff --git a/steps/improve/finalize_job_count.sh b/steps/improve/finalize_job_count.sh new file mode 100644 index 00000000..225348e6 --- /dev/null +++ b/steps/improve/finalize_job_count.sh @@ -0,0 +1,14 @@ +#!/bin/sh +# +# SPDX-FileCopyrightText: 2024 Gábor Stefanik +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Finalize job count once SMP support is available + +cat >> /steps/bootstrap.cfg <<- EOF +JOBS=${FINAL_JOBS} +EOF + +. /steps/bootstrap.cfg +. /steps/env diff --git a/steps/manifest b/steps/manifest index 67bffe5f..7ef64966 100644 --- a/steps/manifest +++ b/steps/manifest @@ -119,6 +119,7 @@ build: linux-4.9.10 ( BUILD_LINUX == True ) jump: break ( INTERNAL_CI == pass1 ) jump: linux ( CHROOT == False ) jump: move_disk ( KERNEL_BOOTSTRAP == True ) +improve: finalize_job_count improve: finalize_fhs improve: swap ( SWAP_SIZE != 0 ) build: musl-1.2.4 From be15f9cacaebffd7572950a85bdab0aa9780e9ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Tue, 9 Jan 2024 22:52:43 +0000 Subject: [PATCH 12/15] Fix weak symbols to work in tcc. Fixes #322. --- parts.rst | 9 ++-- steps/SHA256SUMS.pkgs | 52 +++++++++---------- steps/bison-3.4.1/mk/lib.mk | 2 +- steps/coreutils-5.0/mk/pass2.mk | 2 +- steps/coreutils-6.10/mk/main.mk | 2 +- .../patches/musl_weak_symbols.patch | 17 ------ .../ignore-static-inside-array.patch | 1 - .../patches-pass5/static-link.patch | 1 - .../patches/dont-skip-weak-symbols-ar.patch | 50 ++++++++++++++++++ .../patches/ignore-duplicate-symbols.patch | 19 ------- 10 files changed, 82 insertions(+), 73 deletions(-) delete mode 100644 steps/musl-1.1.24/patches/musl_weak_symbols.patch delete mode 120000 steps/tcc-0.9.27/patches-pass5/ignore-static-inside-array.patch delete mode 120000 steps/tcc-0.9.27/patches-pass5/static-link.patch create mode 100644 steps/tcc-0.9.27/patches/dont-skip-weak-symbols-ar.patch delete mode 100644 steps/tcc-0.9.27/patches/ignore-duplicate-symbols.patch diff --git a/parts.rst b/parts.rst index 68c3e620..f211a9ac 100644 --- a/parts.rst +++ b/parts.rst @@ -381,9 +381,7 @@ C library. Our previous Mes C library was incomplete which prevented us from building many newer or more complex programs. ``tcc`` has slight problems when building and linking ``musl``, so we -apply a few patches. In particular, we replace all weak symbols with -strong symbols and will patch ``tcc`` in the next step to ignore -duplicate symbols. +apply a few patches. We do not use any of ``/usr/lib/mes`` or ``/usr/include/mes`` any longer, rather using ``/usr/lib`` and ``/usr/include`` like normal. @@ -657,14 +655,13 @@ and the GNU assembler ``as``. musl 1.1.24 (v3) ================ -We rebuild musl for the third time. This time we use GNU ar rather than ``tcc -ar``, -so we can drop weak symbols patch. Also, we can use GNU as to build assembly source files, +We rebuild musl for the third time. This time we can use GNU as to build assembly source files, so those assembly files that tcc failed to compile no longer have to be patched. tcc 0.9.27 (musl v3) ==================== -We rebuild tcc against new musl and without a patch to ignore duplicate symbols. +We rebuild tcc against new musl. gcc 4.0.4 ========= diff --git a/steps/SHA256SUMS.pkgs b/steps/SHA256SUMS.pkgs index c4c91ab4..7e5ec0dc 100644 --- a/steps/SHA256SUMS.pkgs +++ b/steps/SHA256SUMS.pkgs @@ -16,29 +16,29 @@ d5fcce4baea5e11f983a7e4b7148545ab6720bb4e010898c73387f6711be67f4 autoconf-2.64_ 57100612d902537b72ee2fd3dfecc903f2ea3959f1a480af87c6a1ef9a9d7c03 automake-1.16.3_0.tar.bz2 1c7e09ac08f156960420fca1f6e8560c1855bf01b001a0648b56153d6ceb9c28 automake-1.6.3_0.tar.bz2 444131776779d1f27628088a817bfb8c9aa85f4b036b934794a71e484ec9bd70 automake-1.6.3_1.tar.bz2 -ef08694bf8e78ffcf56f9c8a63b0f189e301c06f02ab240e15e4c7fe354c2a0d automake-1.7_0.tar.bz2 e8ff13753943e43972a8cf1672819f001718ed38e5497cf7b554c21a507ba22b automake-1.7.8_0.tar.bz2 +ef08694bf8e78ffcf56f9c8a63b0f189e301c06f02ab240e15e4c7fe354c2a0d automake-1.7_0.tar.bz2 9922651b64ad2e29b944082f26db223008220155048f25d64df1f6d82071ff1c automake-1.8.5_0.tar.bz2 c5807850a377e4bb9aa4121d9781d145bdd80327626a9419630a75ce2c8d9c71 automake-1.9.6_0.tar.bz2 f8a55bf656f950ee3c5cea48af03f552166f6db9926b78c78843f3cc52a6e22d bash-5.2.15_0.tar.bz2 ebc631ee8e9382650005984ec5f3910492ccb6fb2656b4c0af0f4afc16998906 bc-1.07.1_0.tar.bz2 -3126d6539138d8078bd13d7f8b7b3e2ca4719e3c49d98f8490c0f061bf72d18f binutils-2.30_0.tar.bz2 +b21f77069ca847268c115b7305da5927acebc59d89e9cd82d8ac416c126f3f0b binutils-2.30_0.tar.bz2 da658346866061324b92a6b734561257acfdb981783ad5794d67a0cd56e14e58 binutils-2.41_0.tar.bz2 026447a32ab08a8a5150bab82a2f150af4a2ed90c47cfde631e1460eaed019aa binutils-2.41_1.tar.bz2 f0bb18831983493b82fde53917e8d16c6a380761ac5e71e14769a82193fee788 bison-2.3_0.tar.bz2 -cb93657e111253d3ed8935686d50a55bed0ebc4c3bed045d659ba9058ba0fea1 bison-3.4.1_0.tar.bz2 -2b79a739789a70a5f968c4b41c4f526bffef07fb36df4358121685630c0c9969 bison-3.4.1_1.tar.bz2 -41340ed0e496f9e120058f41eaa43b4c9f9e535d8be2d0dc277551b5995a141b bison-3.4.1_2.tar.bz2 +76cb8b9752d82afa28789ccd5dcb9fd7ee44b605c2fd0fd5800e88c75f77593e bison-3.4.1_0.tar.bz2 +485d20ada934b700460404ceef934788c6e0bd3e3c7be0ac4e8f337909a9e3d9 bison-3.4.1_1.tar.bz2 +fcaab66694e70e8780b96e2d0dfd3c913427a741b494f820b595eb9617460e3e bison-3.4.1_2.tar.bz2 6d5e4debdec03aee096dbcefcad878fb5c6a069f895ee7ade878d9eeb97fb83e bison-3.4.2_0.tar.bz2 -9ba54901cb606fa71476c828a215de0c738470f91ed9fd27d8ceb6a23f14d895 bzip2-1.0.8_0.tar.bz2 +ca7403a7503e8f3bb55e6c5bd54571b8c061b11c96e50ee89e006df6011d1518 bzip2-1.0.8_0.tar.bz2 543214998317d764595d3dd247a1fb2e0803ad77978b8474bd24d64c161b9530 ca-certificates-3.95_0.tar.bz2 -e790ce4bd86869a93a435aca28658a70e33049388058580bd8da453e2cb03603 coreutils-5.0_0.tar.bz2 -34c9558f0101773b67bc4e0c9148543e65435344d004396e629d110f0392d3bd coreutils-6.10_0.tar.bz2 +7450bb38caaa633f8c11269fed44eb680c6ba03bb0e19c18fce3b2450f80e358 coreutils-5.0_0.tar.bz2 +c95fd8c51c3bfbd4d08a4a50d0033ee85394e6efe4ff82703c050e4dbc4347bf coreutils-6.10_0.tar.bz2 f49900486ae7f0c8107d729b71ede155ee44544cdf8d562b50fbea4095bd05b2 coreutils-8.32_0.tar.bz2 6a10f5258650ae75e92eb7aa1a5e6107b72c8b6419a4f64272262a1545c43161 curl-8.5.0_0.tar.bz2 f9efd6600ceb91918078078ff44a33f2a4fb4a59edb804866aebd288c2cfb24e curl-8.5.0_1.tar.bz2 1d4dec2d1885a6b5499a0f0d55e9c2c65dab532c4c593d848b6a542f67789627 dhcpcd-10.0.1_0.tar.bz2 -0858dc91cf8a6c00d04ec50c31ce06d80f930b28d188d636dacbbbb593b284e9 diffutils-2.7_0.tar.bz2 +abb9f6fe46c57ea809100b71497e04905deaad345d64485532bf6ef7f2a07f2c diffutils-2.7_0.tar.bz2 bda6afcd3a390a34a57443269a4857ccc470129f7a557981778c145fd841cbd1 dist-3.5-236_0.tar.bz2 3a4c5143a241364019afd39af067f1e8433bab78b04096870d9bf2c70ec6ded8 e2fsprogs-1.45.7_0.tar.bz2 9c6f7e156f299f1d0948537e28f00d40e727a3debae3cce158e9bce827136214 ed-1.4_0.tar.bz2 @@ -46,8 +46,8 @@ bda6afcd3a390a34a57443269a4857ccc470129f7a557981778c145fd841cbd1 dist-3.5-236_0 eec07e0d710ed3dd8d0ba6a1ec6ca9f1fa3a611bbb225195435679175317bf90 findutils-4.2.33_0.tar.bz2 41902ec0383ea977a8d008dee37150e022e0714cd99f54c37f29c153464b758a flex-2.5.11_0.tar.bz2 b3a8d59229289ca5a1de6a24c9c828d2847144f6662e0d5b7f41e7ff6e57abaa flex-2.5.33_0.tar.bz2 -349c9a7cb1c90533627fb6c97f2e3cf7ae57a49a4e92ed46d660bbecacd07433 flex-2.6.4_0.tar.bz2 -b12ef4701c3d2e531e314776a858effb49a33595d901663263a4273a8a59d77c gawk-3.0.4_0.tar.bz2 +57f72a4d1cb89dc1e59af0228fddc0ea97a3588984114f702f142c82aeeef493 flex-2.6.4_0.tar.bz2 +f0f1471e4a5ff95749bd655c145311cc03eec80525f2bb0b9b3ac3ff8be29e0b gawk-3.0.4_0.tar.bz2 6de1c1380026ef9948387e665610185b6014f47a80453177a6c81898c95cbbd3 gc-8.0.4_0.tar.bz2 c99d080cf17ac3f75cbae67095cb76220a92d96d877c92c896a7f05c9c94e92d gcc-10.4.0_0.tar.bz2 e0c9e7f4f0cd0d5027f2a38eb262f883133c31ac9ec93ee6afa5abc028096bc0 gcc-13.1.0_0.tar.bz2 @@ -57,7 +57,7 @@ c1bf792e90df13bf7a24d3f8ce3939fd96ff61b8117e4dcef75605974f3fcf25 gcc-4.0.4_1.ta dc67fc1b132fa3945349efe74c5b2197bd0b6babf4d29d2deddd04f09d9af680 gettext-0.21_0.tar.bz2 309282ba840f80b5e10897b1221f3ff3329b9e05b982c788d03652f411974524 gmp-6.2.1_0.tar.bz2 62edfa633f64202b2d29199d11d56a897654a441c7ae39a4d59ca5fe75199f61 gperf-3.1_0.tar.bz2 -23d6f3bf4a60708ebc66d778c536616a728b378defff9f39ee9d1c2fd0cfdd87 grep-2.4_0.tar.bz2 +276e073496931ff7d4caaabb53079412b88de953def88aec966c1f8506293e88 grep-2.4_0.tar.bz2 8e612afb9a439aa8bf5db0fc2589eec890a6017690412d5c8e88a5838730b42c grep-3.7_0.tar.bz2 e2a85aad6d51e52c9a30afeed058f95172fde1215f77243549274672990f6237 guile-3.0.9_0.tar.bz2 8d2015b87337abbf287f7a39ee4cf53514120b5d3e90a93fe7d533dcc43f14fa help2man-1.36.4_0.tar.bz2 @@ -72,45 +72,45 @@ daae709e98d2df2190d1d13b4e86f7f3fe90fa7a975282fe0bb03289b6539f29 libtool-2.2.4_ 503007bbcddcf4e49d26514c59b4c9501f8b42f0c994a59dfdc388b1ae6b7900 libunistring-0.9.10_0.tar.bz2 fd2264a08cbeeb28f3e2580cba174376a154c77b0ef6cbf67b55fd13c0987f52 linux-4.9.10_0.tar.bz2 d15c922973c15a8206e09020e8cfe6a78f7e93614de212f2b37ff80163799c6c linux-headers-4.9.10_0.tar.bz2 -fdb3dce8af3eb6c0745f103989f1bae0bfe9156390215f97240a75ed77ae4acd m4-1.4.7_0.tar.bz2 +bd3885a389d3e058081e099850f95aa7938ce1d9b88a187aea6b7196124fbcfe m4-1.4.7_0.tar.bz2 e69554b0a77b419ddd5d0a0e418ba4005ecd0f6784c92a6928a0270bd929a098 make-3.82_0.tar.bz2 6d24960d6a987f68a7e0e3abf6edb52d2e0fe4c86f6ba45327e9634dbf7d40b4 make-4.2.1_0.tar.bz2 17cd976bc0f6e897c6fffe43dd7c55d93ce0adadf1b4dc72925b80e2d266519f mpc-1.2.1_0.tar.bz2 98a9f55c01ed375fae21913284e7fa07ff434c0810f34d791f3fbaa1df221302 mpfr-4.1.0_0.tar.bz2 -2fbbd3d8e56173aa6950fb2d5be9b1af6b25735ac7ba79e1938fff232a801418 musl-1.1.24_0.tar.bz2 -5fe0f457fd577bfbef98d85cc572ce3a30e17c004eeff18a298a6db13126ea61 musl-1.1.24_1.tar.bz2 +3561678ad3b8ed5a085cdd86baefb18a675c3cecca8e6e8e086b17007e918370 musl-1.1.24_0.tar.bz2 +40a35b525f21dce1007e17a3557677d49477df753e715579c37438d5581b0dcd musl-1.1.24_1.tar.bz2 d58d85c4be26d90f111f273929a4998d05294fe5aa37c4842d5aecaa593e6079 musl-1.1.24_2.tar.bz2 81f79a0faf58e105c5f12d9f538d3ea7578a3b361e633ab8f47324ec23ec9de6 musl-1.2.4_0.tar.bz2 6dc5e763b747b66f72692c6820d7f46b7f4cf2e2fe05229a1d01c03919c1c936 musl-1.2.4_1.tar.bz2 820203286127e7c22cee9f1b3cff664431f10d14c3f22f00b3e771fd849fd449 musl-1.2.4_2.tar.bz2 c490016e49bbf77e7f63071f7aa60e8290a0c67f017846def1c3f65bd10d5712 openssl-1.1.1l_0.tar.bz2 71864d042cdc564b65eab21360902c714e9b43f80a19689c5600589529b267e7 patch-2.7.6_0.tar.bz2 -35dff94213d6b4648ac857daff76817048723acc01a07b428f031be854b0dc63 perl-5.000_0.tar.bz2 -ea93a29bd049af498e34ceebed4f1b747aed1713bd2d787e03b65c1031806e71 perl-5.003_0.tar.bz2 -a6afef8623ffddd4d50c1688d5c6a03a696e9d06ae903412bf99edb2d6b65a6d perl5.004-05_0.tar.bz2 -485c76bec0aa901de0c4cfce00e3e7a203d7342895cce60dbc9162fd8a999e90 perl5.005-03_0.tar.bz2 +5ae7fe43d62d1064c123d9813017015e5e8d5107d0e70f0199576141416ff81d perl-5.000_0.tar.bz2 +4994c55e3832649600f190079bd4779c463478a092b167098b1d00eff3358fbe perl-5.003_0.tar.bz2 74d64a8af080022432fa94dba449090419d25b103d247710dc0b6102a4ad86a6 perl-5.10.1_0.tar.bz2 fdccd3ba27a44d2149f159040414a04b39bfc72673ba36f50051b61199cc425c perl-5.32.1_0.tar.bz2 -f9e5cd15fa976ba1b3892640bb2f39b35e0cd1147bf98a92d26e3ab1dc6b86f3 perl-5.6.2_0.tar.bz2 +101a791b6843b997ec10d5ce6dc32af2637f687772674eb6f1cdc1c8ff836a03 perl-5.6.2_0.tar.bz2 +ae6c84e55c2d9bcd7b80bf780ae6921fe890608123c9ba904e1b7d90759ade3d perl5.004-05_0.tar.bz2 +8cedd2240bbbd5bca65a1362998ed73884756aa7ff5208226d3fa22c68868052 perl5.005-03_0.tar.bz2 1b9d4260edf7b2241d10e4c4ad17d0f90047bd4bf42f2487a7133902529e9dfe pkg-config-0.29.2_0.tar.bz2 1e882c3206f9d1de2a9be8b5c6ae4cc65e80a4de607bd521058577bf4169c0e9 python-2.0.1_0.tar.bz2 aba9710341db75b78c7bc1eb4ef45b9496e23f7a356128af6c2b116ee0f3f31a python-2.0.1_1.tar.bz2 d497c9b614194b941620bb5c5111fc72eca8cafd7d4f476eacb24fb7f909b614 python-2.3.7_0.tar.bz2 8a977205933431c2a4207f647cb683b570dfdb0146e21abf5fab3f8426e1356b python-2.3.7_1.tar.bz2 34e5083ed3e72da5aa5950acebf9e95464089d693e3d6a047a2b69b6103f5ca9 python-2.5.6_0.tar.bz2 -52ffb1ea6f2b893a6fd26f930c8ff63f78ddcc31ac3ec9c2ddade555205aa1ef python-3.11.1_0.tar.bz2 3508248f299b73c50e3607c4c294d40face05170476a5026b0821aed69025863 python-3.1.5_0.tar.bz2 12b1ffc7ec98ba8f807160b93ba69a694d5395567c3bcac1e49e8f8d1d50de43 python-3.1.5_1.tar.bz2 +52ffb1ea6f2b893a6fd26f930c8ff63f78ddcc31ac3ec9c2ddade555205aa1ef python-3.11.1_0.tar.bz2 60b93253a2078f849f81e7e1ed6233e30702f03b1893640eee95671d814f5514 python-3.3.7_0.tar.bz2 da7c8ec579dd225c0d8bee63d95aeeb27ac2d5a60d4eefe298508cbf86bf506c python-3.4.10_0.tar.bz2 0be505f63205b4bc1b1421896c610468ad1a2194bbc4c9abf58f61685c2023d1 python-3.8.16_0.tar.bz2 -6874e16afb9a0cfa960416f0ce721e81b4cfb48992e827788df0ed1feb47df1d sed-4.0.9_0.tar.bz2 +34c51d3df85585a8aee7691b3500a5c3c7442b06a6f57231b76970bdd6e99bf9 sed-4.0.9_0.tar.bz2 e8daec00b2c2de7b18efbec057dc9290eed06668806c6f5a48914d4a5cd95eb4 sed-4.8_0.tar.bz2 912d8f344104f1322255d6210c7c7e1371413ab530b2c6796e6aa565c74bf647 tar-1.34_0.tar.bz2 -d5d0df210248a385ae255cc5651369108e9a71fa8668821a6b1ed30a8d7364a1 tcc-0.9.27_0.tar.bz2 -53703e68b3d5597dc05b0982331ad87e437f616165e1a289d429d54773ab02fc tcc-0.9.27_1.tar.bz2 -74c26384d3bde54a4d0bac4242559593872f6dcfc5856acbe2c4aea5dd62f941 tcc-0.9.27_2.tar.bz2 -0f7e12be49c697a2758a6e1acae736b3bac208eacfeae1e5155d8159f9a30bd2 tcc-0.9.27_3.tar.bz2 +1667937d5d646f2bb7ec7ab54a23ddd65a0ae3ca7d5e597f3fbcd5163031d2ef tcc-0.9.27_0.tar.bz2 +b20cea098c8ff635a0ce9f99430d7c9a75d081194941ab54dc92dbc8af3776a4 tcc-0.9.27_1.tar.bz2 +8e8cc802fccdb907cd74501dccce1ee85ffb0150b33b4719f86d6720f5b09a7a tcc-0.9.27_2.tar.bz2 +d4fe9460ca561fc2f546f9730f19f541b17dac0bcc42eb190abba856588c3593 tcc-0.9.27_3.tar.bz2 50ebaa1d8fcc4a03a43d431eb71e2f435cc8712ae47d400564df3716037d553a texinfo-6.7_0.tar.bz2 229d9189adac10ad2a2c76fc147a4c317fc5b34026cef1c47edc9159aee480da util-linux-2.19.1_0.tar.bz2 ecdb7ffeb9256f6a9760be70969fe5dea9cde6a538cc88595281fe44340e98a1 which-2.21_0.tar.bz2 diff --git a/steps/bison-3.4.1/mk/lib.mk b/steps/bison-3.4.1/mk/lib.mk index d3749bef..8dcf7adc 100644 --- a/steps/bison-3.4.1/mk/lib.mk +++ b/steps/bison-3.4.1/mk/lib.mk @@ -3,7 +3,7 @@ # # SPDX-License-Identifier: GPL-3.0-or-later -lib.a: allocator.o areadlink.o argmatch.o asnprintf.o basename.o basename-lgpl.o binary-io.o bitrotate.o bitset.o bitsetv.o calloc.o canonicalize-lgpl.o careadlinkat.o c-ctype.o cloexec.o close.o closeout.o close-stream.o concat-filename.o c-strcasecmp.o c-strncasecmp.o dirname.o dirname-lgpl.o dup2.o dup-safer.o dup-safer-flag.o exitfail.o fatal-signal.o fd-hook.o fd-safer.o fd-safer-flag.o fopen.o fopen-safer.o fprintf.o frexp.o frexpl.o fstat.o getdtablesize.o get-errno.o gethrxtime.o getopt.o getprogname.o getrusage.o gettime.o gettimeofday.o gl_array_list.o gl_list.o gl_xlist.o hard-locale.o hash.o isnan.o isnand.o isnanf.o isnanl.o itold.o ldexpl.o localcharset.o localtime-buffer.o lstat.o main.o malloca.o malloc.o math.o mbrtowc.o mbsinit.o mbswidth.o memchr.o msvc-inval.o obstack.o obstack_printf.o open.o path-join.o perror.o pipe2-safer.o pipe-safer.o printf-args.o printf.o printf-frexp.o printf-frexpl.o printf-parse.o progname.o progreloc.o quotearg.o raise.o rawmemchr.o readlink.o realloc.o relocatable.o rename.o rmdir.o setenv.o sig-handler.o signbitd.o signbitf.o signbitl.o spawnattr_destroy.o spawnattr_init.o sprintf.o stat.o stat-time.o stat-w32.o stpcpy.o strchrnul.o strdup.o strerror.o stripslash.o strndup.o strnlen.o strverscmp.o timespec.o timevar.o unistd.o unlink.o unsetenv.o vasnprintf.o wait-process.o wctype-h.o xalloc-die.o xconcat-filename.o xmalloc.o xmemdup0.o xreadlink.o xsize.o xstrndup.o xtime.o yyerror.o error.o bitset/array.o bitset/list.o bitset/stats.o bitset/table.o bitset/vector.o fseterr.o spawn-pipe.o +lib.a: allocator.o areadlink.o argmatch.o asnprintf.o basename.o basename-lgpl.o binary-io.o bitrotate.o bitset.o bitsetv.o calloc.o canonicalize-lgpl.o careadlinkat.o c-ctype.o cloexec.o close.o closeout.o close-stream.o concat-filename.o c-strcasecmp.o c-strncasecmp.o dirname.o dirname-lgpl.o dup2.o dup-safer.o dup-safer-flag.o exitfail.o fatal-signal.o fd-hook.o fd-safer.o fd-safer-flag.o fopen.o fopen-safer.o fprintf.o frexp.o frexpl.o fstat.o getdtablesize.o get-errno.o gethrxtime.o getprogname.o getrusage.o gettime.o gettimeofday.o gl_array_list.o gl_list.o gl_xlist.o hard-locale.o hash.o isnan.o isnand.o isnanf.o isnanl.o itold.o ldexpl.o localcharset.o localtime-buffer.o lstat.o main.o malloca.o malloc.o math.o mbrtowc.o mbsinit.o mbswidth.o memchr.o msvc-inval.o obstack.o obstack_printf.o open.o path-join.o perror.o pipe2-safer.o pipe-safer.o printf-args.o printf.o printf-frexp.o printf-frexpl.o printf-parse.o progname.o progreloc.o quotearg.o raise.o rawmemchr.o readlink.o realloc.o relocatable.o rename.o rmdir.o setenv.o sig-handler.o signbitd.o signbitf.o signbitl.o spawnattr_destroy.o spawnattr_init.o sprintf.o stat.o stat-time.o stat-w32.o stpcpy.o strchrnul.o strdup.o strerror.o stripslash.o strndup.o strnlen.o strverscmp.o timespec.o timevar.o unistd.o unlink.o unsetenv.o vasnprintf.o wait-process.o wctype-h.o xalloc-die.o xconcat-filename.o xmalloc.o xmemdup0.o xreadlink.o xsize.o xstrndup.o xtime.o yyerror.o error.o bitset/array.o bitset/list.o bitset/stats.o bitset/table.o bitset/vector.o fseterr.o spawn-pipe.o $(AR) r $@ $^ %.o: %.c diff --git a/steps/coreutils-5.0/mk/pass2.mk b/steps/coreutils-5.0/mk/pass2.mk index e5c6aaae..61413588 100644 --- a/steps/coreutils-5.0/mk/pass2.mk +++ b/steps/coreutils-5.0/mk/pass2.mk @@ -95,7 +95,7 @@ ALL=$(BINARIES) $(SRC_DIR)/cp $(SRC_DIR)/ls $(SRC_DIR)/install $(SRC_DIR)/md5sum all: $(BINARIES) $(SRC_DIR)/cp $(SRC_DIR)/ls $(SRC_DIR)/install $(SRC_DIR)/md5sum $(SRC_DIR)/mv $(SRC_DIR)/rm $(SRC_DIR)/sha1sum LIB_DIR = lib -LIB_SRC = acl alloca posixtm posixver strftime getopt getopt1 hash hash-pjw addext argmatch backupfile basename canon-host closeout cycle-check diacrit dirname dup-safer error exclude exitfail filemode __fpending file-type fnmatch fopen-safer full-read full-write getline getstr gettime hard-locale human idcache isdir imaxtostr linebuffer localcharset long-options makepath mbswidth md5 memcasecmp memcoll modechange offtostr path-concat physmem quote quotearg readtokens rpmatch safe-read safe-write same save-cwd savedir settime sha stpcpy stripslash strtoimax strtoumax umaxtostr unicodeio userspec version-etc xgetcwd xgethostname xmalloc xmemcoll xnanosleep xreadlink xstrdup xstrtod xstrtol xstrtoul xstrtoimax xstrtoumax yesno strnlen getcwd sig2str mountlist regex canonicalize mkstemp memrchr euidaccess ftw obstack strverscmp strftime tsearch stat +LIB_SRC = acl alloca posixtm posixver strftime getopt getopt1 hash hash-pjw addext argmatch backupfile basename canon-host closeout cycle-check diacrit dirname dup-safer error exclude exitfail filemode __fpending file-type fnmatch fopen-safer full-read full-write getline getstr gettime hard-locale human idcache isdir imaxtostr linebuffer localcharset long-options makepath mbswidth md5 memcasecmp memcoll modechange offtostr path-concat physmem quote quotearg readtokens rpmatch safe-read safe-write same save-cwd savedir settime sha stpcpy stripslash umaxtostr unicodeio userspec version-etc xgetcwd xgethostname xmalloc xmemcoll xnanosleep xreadlink xstrdup xstrtod xstrtol xstrtoul xstrtoimax xstrtoumax yesno strnlen getcwd sig2str mountlist regex canonicalize mkstemp memrchr euidaccess ftw obstack strverscmp strftime tsearch stat LIB_OBJECTS = $(addprefix $(LIB_DIR)/, $(addsuffix .o, $(LIB_SRC))) diff --git a/steps/coreutils-6.10/mk/main.mk b/steps/coreutils-6.10/mk/main.mk index 28ab680a..cd2ce917 100644 --- a/steps/coreutils-6.10/mk/main.mk +++ b/steps/coreutils-6.10/mk/main.mk @@ -94,7 +94,7 @@ ALL=$(BINARIES) $(SRC_DIR)/sha256sum all: $(BINARIES) $(SRC_DIR)/sha256sum LIB_DIR = lib -LIB_SRC = acl alloca getdate fprintftime posixtm posixver strftime getopt hash hash-pjw argmatch backupfile basename canon-host closeout cycle-check diacrit dirname dup-safer error exclude exitfail filemode fpending file-type fnmatch fopen-safer full-read full-write getline gettime hard-locale human idcache imaxtostr linebuffer localcharset long-options mbswidth md5 memcasecmp memcoll modechange offtostr physmem quote quotearg readtokens rpmatch safe-read safe-write same save-cwd savedir settime sha256 stpcpy stripslash umaxtostr unicodeio userspec version-etc version-etc-fsf xgetcwd xgethostname xmalloc xmemcoll xnanosleep readlink xstrtod xstrtol xstrtoul xstrtoimax xstrtoumax yesno strnlen getcwd sig2str mountlist canonicalize mkstemp memrchr euidaccess obstack strverscmp strftime xalloc-die close-stream tempname filenamecat xstrndup randint randread rand-isaac gethrxtime +LIB_SRC = acl alloca getdate fprintftime posixtm posixver strftime hash hash-pjw argmatch backupfile basename canon-host closeout cycle-check diacrit dirname dup-safer error exclude exitfail filemode fpending file-type fnmatch fopen-safer full-read full-write getline gettime hard-locale human idcache imaxtostr linebuffer localcharset long-options mbswidth md5 memcasecmp memcoll modechange offtostr physmem quote quotearg readtokens rpmatch safe-read safe-write same save-cwd savedir settime sha256 stpcpy stripslash umaxtostr unicodeio userspec version-etc version-etc-fsf xgetcwd xgethostname xmalloc xmemcoll xnanosleep readlink xstrtod xstrtol xstrtoul xstrtoimax xstrtoumax yesno strnlen getcwd sig2str mountlist canonicalize mkstemp memrchr euidaccess obstack strverscmp strftime xalloc-die close-stream tempname filenamecat xstrndup randint randread rand-isaac gethrxtime LIB_OBJECTS = $(addprefix $(LIB_DIR)/, $(addsuffix .o, $(LIB_SRC))) diff --git a/steps/musl-1.1.24/patches/musl_weak_symbols.patch b/steps/musl-1.1.24/patches/musl_weak_symbols.patch deleted file mode 100644 index 28eacc3a..00000000 --- a/steps/musl-1.1.24/patches/musl_weak_symbols.patch +++ /dev/null @@ -1,17 +0,0 @@ -SPDX-FileCopyrightText: 2021 Andrius Štikonas -SPDX-FileCopyrightText: 2021 fosslinux - -SPDX-License-Identifier: MIT - -Replace weak symbols with strong to workaround an issue with tcc -ar -This won't be necessary once we can rebuild with ar from binutils. ---- src/include/features.h 2021-02-02 23:15:42.791932948 +0000 -+++ src/include/features.h 2021-02-02 23:17:21.394647015 +0000 -@@ -6,6 +6,6 @@ - #define weak __attribute__((__weak__)) - #define hidden __attribute__((__visibility__("hidden"))) - #define weak_alias(old, new) \ -- extern __typeof(old) new __attribute__((__weak__, __alias__(#old))) -+ extern __typeof(old) new __attribute__((/*__weak__, */__alias__(#old))) - - #endif diff --git a/steps/tcc-0.9.27/patches-pass5/ignore-static-inside-array.patch b/steps/tcc-0.9.27/patches-pass5/ignore-static-inside-array.patch deleted file mode 120000 index 3ba9adc8..00000000 --- a/steps/tcc-0.9.27/patches-pass5/ignore-static-inside-array.patch +++ /dev/null @@ -1 +0,0 @@ -../patches/ignore-static-inside-array.patch \ No newline at end of file diff --git a/steps/tcc-0.9.27/patches-pass5/static-link.patch b/steps/tcc-0.9.27/patches-pass5/static-link.patch deleted file mode 120000 index 6d77dd39..00000000 --- a/steps/tcc-0.9.27/patches-pass5/static-link.patch +++ /dev/null @@ -1 +0,0 @@ -../patches/static-link.patch \ No newline at end of file diff --git a/steps/tcc-0.9.27/patches/dont-skip-weak-symbols-ar.patch b/steps/tcc-0.9.27/patches/dont-skip-weak-symbols-ar.patch new file mode 100644 index 00000000..ae147bf6 --- /dev/null +++ b/steps/tcc-0.9.27/patches/dont-skip-weak-symbols-ar.patch @@ -0,0 +1,50 @@ +SPDX-FileCopyrightText: 2021 Alexander Sosedkin + +SPDX-License-Identifier: LGPL-2.0-or-later + +From da11cf651576f94486dbd043dbfcde469e497574 Mon Sep 17 00:00:00 2001 +From: Alexander Sosedkin +Date: Sat, 30 Oct 2021 16:04:11 +0200 +Subject: [PATCH] Don't skip weak symbols during ar creation + +``` +$ echo 'int __attribute__((__weak__)) f(void) { return 4; }' > w.c +$ tcc -c w.c -o w.o + +$ tcc-old -ar rc w.a w.o; nm -s w.a # previous behaviour, not indexed +w.o: +0000000000000000 W f + +$ ar rc w.a w.o; nm -s w.a # GNU binutils behaviour, indexed +Archive index: +f in w.o + +0000000000000000 W f + +$ tcc-new rc w.a w.o; nm -s w.a # new behaviour, indexed +Archive index: +f in w.o + +0000000000000000 W f +``` +--- + tcctools.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/tcctools.c b/tcctools.c +index cf174965..4567b81a 100644 +--- tcctools.c ++++ tcctools.c +@@ -200,6 +200,9 @@ ST_FUNC int tcc_tool_ar(TCCState *s1, int argc, char **argv) + (sym->st_info == 0x10 + || sym->st_info == 0x11 + || sym->st_info == 0x12 ++ || sym->st_info == 0x20 ++ || sym->st_info == 0x21 ++ || sym->st_info == 0x22 + )) { + //printf("symtab: %2Xh %4Xh %2Xh %s\n", sym->st_info, sym->st_size, sym->st_shndx, strtab + sym->st_name); + istrlen = strlen(strtab + sym->st_name)+1; +-- +2.11.4.GIT + diff --git a/steps/tcc-0.9.27/patches/ignore-duplicate-symbols.patch b/steps/tcc-0.9.27/patches/ignore-duplicate-symbols.patch deleted file mode 100644 index 6551f0fa..00000000 --- a/steps/tcc-0.9.27/patches/ignore-duplicate-symbols.patch +++ /dev/null @@ -1,19 +0,0 @@ -SPDX-FileCopyrightText: 2021 Andrius Štikonas - -SPDX-License-Identifier: LGPL-2.0-or-later - -Ignore duplicate symbols. Due to poor support for weak symbols in tcc-ar -we had to patch musl to replace weak symbols with strong symbols ---- tccelf.c 2021-02-02 17:41:08.662247892 +0000 -+++ tccelf.c 2021-02-02 23:21:49.652080201 +0000 -@@ -552,8 +552,9 @@ - #if 0 - printf("new_bind=%x new_shndx=%x new_vis=%x old_bind=%x old_shndx=%x old_vis=%x\n", - sym_bind, shndx, new_vis, esym_bind, esym->st_shndx, esym_vis); --#endif - tcc_error_noabort("'%s' defined twice", name); -+#endif -+ goto do_patch; - } - } else { - do_patch: From 468aeb07a7cba4a223428477091dd64d311ed32e Mon Sep 17 00:00:00 2001 From: rick-masters Date: Wed, 10 Jan 2024 17:32:06 +0000 Subject: [PATCH 13/15] Convert status_code to string for error message. --- lib/generator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generator.py b/lib/generator.py index 0f16e2fa..94824f77 100755 --- a/lib/generator.py +++ b/lib/generator.py @@ -305,7 +305,7 @@ this script the next time") target_file.write(response.raw.read()) else: raise requests.HTTPError("Download failed: HTTP " + - response.status_code + " " + response.reason) + str(response.status_code) + " " + response.reason) return abs_file_name def get_packages(self): From 7a0f03678cc0933b9c09887033d1f15cf0087b40 Mon Sep 17 00:00:00 2001 From: rick-masters Date: Wed, 10 Jan 2024 17:46:15 +0000 Subject: [PATCH 14/15] Add curl header to bypass suspected savannah throttling. --- lib/generator.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/generator.py b/lib/generator.py index 0f16e2fa..431eaddc 100755 --- a/lib/generator.py +++ b/lib/generator.py @@ -294,7 +294,8 @@ this script the next time") # Actually download the file headers = { - "Accept-Encoding": "identity" + "Accept-Encoding": "identity", + "User-Agent": "curl/7.88.1" } if not os.path.isfile(abs_file_name): print(f"Downloading: {file_name}") From 82235e5bd09e81a88c33cbf5069ff1e5fc2e9210 Mon Sep 17 00:00:00 2001 From: rick-masters Date: Wed, 10 Jan 2024 18:03:50 +0000 Subject: [PATCH 15/15] Account for int and NoneType in string concatenations. --- lib/generator.py | 2 +- rootfs.py | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/generator.py b/lib/generator.py index 0f16e2fa..60690fcb 100755 --- a/lib/generator.py +++ b/lib/generator.py @@ -73,7 +73,7 @@ class Generator(): self.target_dir = os.path.join(self.target_dir, 'disk') target.add_disk("disk", filesystem="ext3", - size=(target_size + "M") if target_size else "16G", + size=(str(target_size) + "M") if target_size else "16G", bootable=True) target.mount_disk("disk", "disk") self.external_dir = os.path.join(self.target_dir, 'external') diff --git a/rootfs.py b/rootfs.py index 9919100c..a6e2419f 100755 --- a/rootfs.py +++ b/rootfs.py @@ -245,17 +245,24 @@ print(shutil.which('chroot')) if args.kernel: generator.prepare(target, using_kernel=True, target_size=size) - run(args.qemu_cmd, + arg_list = [ '-enable-kvm', '-m', str(args.qemu_ram) + 'M', '-smp', str(args.cores), '-no-reboot', - '-drive', 'file=' + target.get_disk("disk") + ',format=raw', - '-drive', 'file=' + target.get_disk("external") + ',format=raw', + '-drive', 'file=' + target.get_disk("disk") + ',format=raw' + ] + if target.get_disk("external") is not None: + arg_list += [ + '-drive', 'file=' + target.get_disk("external") + ',format=raw', + ] + arg_list += [ '-nic', 'user,ipv6=off,model=e1000', '-kernel', args.kernel, '-nographic', - '-append', 'console=ttyS0 root=/dev/sda1 rootfstype=ext3 init=/init rw') + '-append', 'console=ttyS0 root=/dev/sda1 rootfstype=ext3 init=/init rw' + ] + run(args.qemu_cmd, *arg_list) else: generator.prepare(target, kernel_bootstrap=True, target_size=size) arg_list = [