From d0a9bda4e696f4be02499b87c2bd6d8f40a3d4a3 Mon Sep 17 00:00:00 2001 From: Xi Ruoyao Date: Thu, 9 Mar 2023 01:14:15 +0800 Subject: [PATCH 01/10] kernel: Use for make defconfig and... tell people not to messing the options enabled by defconfig up. Yes, I messed them up and shot my own foot. --- chapter10/kernel.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml index 4618cc18e..7c64e0983 100644 --- a/chapter10/kernel.xml +++ b/chapter10/kernel.xml @@ -96,12 +96,18 @@ information about configuring and building the kernel can be found at - + A good starting place for setting up the kernel configuration is to run make defconfig. This will set the base configuration to a good state that takes your current system architecture into account. + Do not disable any option enabled by make + defconfig unless the following note explicitly makes it + disabled or you really know what you are doing. + + + Be sure to enable/disable/set the following features or the system might not work correctly or boot at all: From de679165f9a63ce94202d356abbae2b9a3bff5c3 Mon Sep 17 00:00:00 2001 From: Pierre Labastie Date: Wed, 8 Mar 2023 22:27:34 +0100 Subject: [PATCH 02/10] Suggest make localmodconfig for kernel This is less generic than defconfig, and you can then tell not to tweak options... --- chapter10/kernel.xml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml index 7c64e0983..023aa32b9 100644 --- a/chapter10/kernel.xml +++ b/chapter10/kernel.xml @@ -98,15 +98,25 @@ A good starting place for setting up the kernel configuration is to - run make defconfig. This will set the base - configuration to a good state that takes your current system architecture - into account. + run make localmodconfig. If the host kernel version + is not too different from the version of the kernel you are building, + this will set the base configuration to a good state similar to what + the host uses. Another possibility is to use make + localyesconfig, which does the same except everything is built + into the kernel. Do not disable any option enabled by make - defconfig unless the following note explicitly makes it + localmodconfig unless the following notes explicitly make it disabled or you really know what you are doing. + + Another possibility is to run make defconfig, + which creates a more generic configuration for your architecture. You + may then have to disable drivers for hardware you do not have if + you want to reduce the kernel size. + + Be sure to enable/disable/set the following features or the system might not work correctly or boot at all: @@ -312,7 +322,7 @@ Device Drivers ---> Support running the interrupt controller of 64-bit x86 processors in x2APIC mode. x2APIC may be enabled by firmware on 64-bit x86 systems, and a kernel without this option enabled will - panic on boot if x2APIC is enabled by firmware. This option has + panic on boot if x2APIC is enabled by firmware. This option has no effect, but also does no harm if x2APIC is disabled by the firmware. From 6e4dfa7528a5098c09ad5dcfe26ba2b2e504a3b1 Mon Sep 17 00:00:00 2001 From: Bruce Dubbs Date: Thu, 9 Mar 2023 19:51:31 -0600 Subject: [PATCH 03/10] Tweak kernel version in host requirements --- chapter02/hostreqs.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter02/hostreqs.xml b/chapter02/hostreqs.xml index e3a06df4e..801a7e992 100644 --- a/chapter02/hostreqs.xml +++ b/chapter02/hostreqs.xml @@ -197,7 +197,7 @@ ver_check() ver_kernel() { - kver=$(uname -r | grep -E -o '[0-9\.]+') + kver=$(uname -r | grep -E -o '^[0-9\.]+') if printf '%s\n' $1 $kver | sort --version-sort --check &>/dev/null then printf "OK: Linux Kernel $kver >= $1\n"; return 0; From 34f1344072936506032e2ef77bf8aac5eef1ec2b Mon Sep 17 00:00:00 2001 From: Xi Ruoyao Date: Thu, 9 Mar 2023 13:57:45 +0800 Subject: [PATCH 04/10] Revert "Suggest make localmodconfig for kernel" This reverts commit de679165f9a63ce94202d356abbae2b9a3bff5c3. localmodconfig does not work very well. It can only *un*select things already enabled as modules if the module is not loaded by the host. It won't select anything new, nor unselect unneeded things already set to "y" instead of "m". Maybe you think we can copy .config from a "mainstream" distro (producing a highly modular kernel) and use "make localmodconfig", but when we tested it with a Debian host kernel config, the resulted kernel refuses to boot. "make allmodconfig && make localmodconfig" does not work well either: "allmodconfig" selects many things as y (these thing are not available as a module) but "localmodconfig" fails to unselect them. --- chapter10/kernel.xml | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml index 023aa32b9..7c64e0983 100644 --- a/chapter10/kernel.xml +++ b/chapter10/kernel.xml @@ -98,25 +98,15 @@ A good starting place for setting up the kernel configuration is to - run make localmodconfig. If the host kernel version - is not too different from the version of the kernel you are building, - this will set the base configuration to a good state similar to what - the host uses. Another possibility is to use make - localyesconfig, which does the same except everything is built - into the kernel. + run make defconfig. This will set the base + configuration to a good state that takes your current system architecture + into account. Do not disable any option enabled by make - localmodconfig unless the following notes explicitly make it + defconfig unless the following note explicitly makes it disabled or you really know what you are doing. - - Another possibility is to run make defconfig, - which creates a more generic configuration for your architecture. You - may then have to disable drivers for hardware you do not have if - you want to reduce the kernel size. - - Be sure to enable/disable/set the following features or the system might not work correctly or boot at all: @@ -322,7 +312,7 @@ Device Drivers ---> Support running the interrupt controller of 64-bit x86 processors in x2APIC mode. x2APIC may be enabled by firmware on 64-bit x86 systems, and a kernel without this option enabled will - panic on boot if x2APIC is enabled by firmware. This option + panic on boot if x2APIC is enabled by firmware. This option has has no effect, but also does no harm if x2APIC is disabled by the firmware. From 10262709515b6e4f5355441e7e7f3c8853f5b95d Mon Sep 17 00:00:00 2001 From: Xi Ruoyao Date: Fri, 10 Mar 2023 18:07:46 +0800 Subject: [PATCH 05/10] Revert "kernel: Use for make defconfig and..." This reverts commit d0a9bda4e696f4be02499b87c2bd6d8f40a3d4a3. "Don't change anything enabled by defconfig" seems too strong. --- chapter10/kernel.xml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml index 7c64e0983..4618cc18e 100644 --- a/chapter10/kernel.xml +++ b/chapter10/kernel.xml @@ -96,18 +96,12 @@ information about configuring and building the kernel can be found at - + A good starting place for setting up the kernel configuration is to run make defconfig. This will set the base configuration to a good state that takes your current system architecture into account. - Do not disable any option enabled by make - defconfig unless the following note explicitly makes it - disabled or you really know what you are doing. - - - Be sure to enable/disable/set the following features or the system might not work correctly or boot at all: From 0bf56aadbd89606633c1bf75baef79f27a4efe6e Mon Sep 17 00:00:00 2001 From: Xi Ruoyao Date: Fri, 10 Mar 2023 18:47:59 +0800 Subject: [PATCH 06/10] kernel: Some adjustments - Mention NVME. - Mention PAE (CONFIG_HIGHMEM64G) for 32-bit. - Don't repeat the link to BLFS kernel config index twice on SysV. And don't display the long URL for it. - Emphasis that BLFS UEFI kernel config is needed even if you'll use the UEFI bootloader of the host distro. --- chapter10/kernel.xml | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml index 4618cc18e..9224cbbf3 100644 --- a/chapter10/kernel.xml +++ b/chapter10/kernel.xml @@ -89,12 +89,9 @@ For general information on kernel configuration see . BLFS has some information - regarding particular kernel configuration requirements of packages outside - of LFS at . Additional + url="&hints-root;kernel-configuration.txt"/>. Additional information about configuring and building the kernel can be found at - + . A good starting place for setting up the kernel configuration is to @@ -179,6 +176,23 @@ Device Drivers ---> [*] Message Signaled Interrupts (MSI and MSI-X) [CONFIG_PCI_MSI] [*] IOMMU Hardware Support ---> [CONFIG_IOMMU_SUPPORT] [*] Support for Interrupt Remapping [CONFIG_IRQ_REMAP] + + If you are building a 32-bit system running on a hardware + with RAM more than 4GB, adjust the configuration so the kernel will + be able to use up to 64GB physical RAM: + + Processor type and features ---> + High Memory Support ---> + (X) 64GB [CONFIG_HIGHMEM64G] + + If the partition for the LFS system is in a NVME SSD (i. e. the + device node for the parition is /dev/nvme* + instead of /dev/sd*), enable NVME support or + the LFS system won't boot: + + Device Drivers ---> + NVME Support ---> + <*> NVM Express block device [CONFIG_BLK_DEV_NVME] @@ -186,18 +200,18 @@ Device Drivers ---> required, it is highly recommended by the systemd developers. - There are several other options that may be desired + There are several other options that may be desired depending on the requirements for the system. For a list of options needed for BLFS packages, see the BLFS - Index of Kernel Settings - (&lfs-root;blfs/view/&short-version;/longindex.html#kernel-config-index). + Index of Kernel Settings. If your host hardware is using UEFI and you wish to boot the LFS system with it, you should adjust some kernel configuration following - the BLFS page. + the BLFS page even if you'll use the + UEFI bootloader from the host distro. From d94339982d3cdbcdd5ba03a7e477b525096d824a Mon Sep 17 00:00:00 2001 From: Bruce Dubbs Date: Fri, 10 Mar 2023 18:46:52 -0600 Subject: [PATCH 07/10] Add kernel configureation introduction. Add an note as an introduction to configuring the kernel. --- chapter10/kernel.xml | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml index 9224cbbf3..f5b5a4aa4 100644 --- a/chapter10/kernel.xml +++ b/chapter10/kernel.xml @@ -45,6 +45,37 @@ in the kernel source tree for alternative methods to the way this book configures the kernel. + + + Building the linux kernel for the first time is one of the most + challenging tasks in LFS. Getting it right depends on the specific + hardware for the target system and your specific needs. There are + almost 12,000 configuration items that are available for the kernel + although only about a third of them are needed for most computers. The + LFS editors recommend that users not familiar with this process follow + the procedures below fairly closely. The objective is to get an + initial system to a point where you can log in at the command line when + you reboot later in . At his point + optimization and customization is not a goal. + + + + + For general information on kernel configuration see . Additional information + about configuring and building the kernel can be found at . These refereces are a bit + dated, but still give a reasonable overview of the process. + + + + If all else fails, you can ask for help on the lfs-suport + mailing list. Note that suscribing is required in order for the list + to avoid spam. + + + Prepare for compilation by running the following command: make mrproper @@ -88,10 +119,6 @@ - For general information on kernel configuration see . Additional - information about configuring and building the kernel can be found at - . A good starting place for setting up the kernel configuration is to From 57ccb5b97ff22804bba82c3b7c647ead08b2d684 Mon Sep 17 00:00:00 2001 From: Xi Ruoyao Date: Sat, 11 Mar 2023 22:03:58 +0800 Subject: [PATCH 08/10] kernel: Fix a typo "parition". --- chapter10/kernel.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml index f5b5a4aa4..ce7ebd61a 100644 --- a/chapter10/kernel.xml +++ b/chapter10/kernel.xml @@ -213,7 +213,7 @@ Device Drivers ---> (X) 64GB [CONFIG_HIGHMEM64G] If the partition for the LFS system is in a NVME SSD (i. e. the - device node for the parition is /dev/nvme* + device node for the partition is /dev/nvme* instead of /dev/sd*), enable NVME support or the LFS system won't boot: From 681e11a0b669b2a1efa04a71af2211a2d0c73593 Mon Sep 17 00:00:00 2001 From: "Douglas R. Reno" Date: Sat, 11 Mar 2023 19:04:09 -0600 Subject: [PATCH 09/10] Typos from rhubarbpieguy --- chapter10/kernel.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml index ce7ebd61a..f97ba2758 100644 --- a/chapter10/kernel.xml +++ b/chapter10/kernel.xml @@ -64,14 +64,14 @@ For general information on kernel configuration see . Additional information about configuring and building the kernel can be found at . These refereces are a bit + url="http://www.kroah.com/lkn/"/>. These references are a bit dated, but still give a reasonable overview of the process. If all else fails, you can ask for help on the lfs-suport - mailing list. Note that suscribing is required in order for the list + url="https://www.linuxfromscratch.org/mail.html">lfs-support + mailing list. Note that subscribing is required in order for the list to avoid spam. From c6fa6912e155ff5e6d44bd32e9745c5dad146a9d Mon Sep 17 00:00:00 2001 From: Bruce Dubbs Date: Sat, 11 Mar 2023 23:11:16 -0600 Subject: [PATCH 10/10] Update a link --- chapter10/kernel.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml index f97ba2758..c510323d7 100644 --- a/chapter10/kernel.xml +++ b/chapter10/kernel.xml @@ -64,7 +64,8 @@ For general information on kernel configuration see . Additional information about configuring and building the kernel can be found at . These references are a bit + url="&anduin-sources;/kernel-nutshell/"/>. + These references are a bit dated, but still give a reasonable overview of the process.