[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
howtos:slackware_admin:building_the_linux_kernel_using_git_repository [2013/12/19 02:13 (UTC)] – [Where to get the kernel source] metaschimahowtos:slackware_admin:building_the_linux_kernel_using_git_repository [2014/11/26 01:08 (UTC)] (current) – Added info about VFAT and EFI partitions metaschima
Line 64: Line 64:
 Here is a script that downloads the latest patch for the current running kernel. It assumes you already have an xz compressed tarball in the kernel build directory. Here is a script that downloads the latest patch for the current running kernel. It assumes you already have an xz compressed tarball in the kernel build directory.
 <file bash kernupd> <file bash kernupd>
-#!/bin/bash+#!/bin/sh
  
 error () # error error () # error
Line 302: Line 302:
 >> ACPI >> ACPI
 Always enable: Button, Fan, Processor, Thermal Zone. Without these, your computer (especially laptops) may overheat because ACPI cannot access thermal monitoring or fans. Always enable: Button, Fan, Processor, Thermal Zone. Without these, your computer (especially laptops) may overheat because ACPI cannot access thermal monitoring or fans.
 +>> CPU Frequency scaling
 +>>> CPU Frequency scaling
 +Enable this if you have frequency scaling enabled in the UEFI/BIOS (Speedstep or similar).
 +>>>> 'performance' governor
 +This sets CPU frequency to the maximum available.
 +>>>> 'powersave' governor
 +This sets CPU frequency to the minimum available.
 +>>>> 'userspace' governor for userspace frequency scaling
 +This allows userspace programs to set the CPU frequency.
 +>>>> 'ondemand' cpufreq policy governor
 +This governor is recommended for desktops.
 +>>>> 'conservative' cpufreq governor
 +This governor is recommended for laptops/netbooks. Although similar to the 'ondemand' governor, frequency is gracefully increased and decreased rather than jumping to 100% when speed is required.
 +>>>> x86 CPU frequency scaling drivers
 +>>>>> Intel P state control
 +This driver is mutually exclusive with the ACPI Processor P-States driver. It is a newer driver for Sandy Bridge processors and [[https://www.linuxquestions.org/questions/slackware-14/slackware-64bit-14-1-rc-kernel-3-10-16-and-virtualbox-4175481316/|may cause problems]].
 +>>>>> Processor Clocking Control interface driver
 +This is only required for HP ProLiant servers, which use this interface. Otherwise, disable it.
 +>>>>> ACPI Processor P-States driver
 +This is the recommended driver for newer CPUs Intel (Enhanced) Speedstep enabled and AMD K10 and newer.
 +>>>>> AMD Opteron/Athlon64 PowerNow!
 +This is for K8/early Opteron/Athlon64 processors.
 +>>>>> Intel Enhanced SpeedStep (deprecated)
 +This is a deprecated option that has been superseded by the ACPI Processor P-States driver, so leave this disabled.
 +>>>>> Intel Pentium 4 clock modulation
 +This is a hack for Pentium 4s that may cause severe slowdowns and noticeable latencies, so disable it.
 > **Bus options** > **Bus options**
 >> Message Signaled Interrupts (MSI and MSI-X) >> Message Signaled Interrupts (MSI and MSI-X)
 This can offload IRQ interrupts by using MSI instead. However, if your BIOS is buggy this may need to be disabled. This can offload IRQ interrupts by using MSI instead. However, if your BIOS is buggy this may need to be disabled.
 > **Executable file formats / Emulations** > **Executable file formats / Emulations**
 +>> Kernel support for scripts starting with #!
 +You **MUST** say yes here or you will not be able to run script that start with ''#!'' and then the interpreter.
 >> IA32 Emulation >> IA32 Emulation
 Allows 32-bit emulation via multi-lib on 64-bit systems. Allows 32-bit emulation via multi-lib on 64-bit systems.
Line 324: Line 352:
 >>> Crypt target support >>> Crypt target support
 Required by cryptsetup. Required by cryptsetup.
 +>> Input device support  --->
 +>>> Keyboards  --->
 +>>>> AT keyboard
 +Enable this if you have a standard AT or PS/2 keyboard.
 +>>> Mice  --->
 +>>>> PS/2 mouse
 +Enable this if you have a PS/2 mouse.
 +>> Multimedia support  --->
 +>>> Media USB Adapters  --->
 +>>>> USB Video Class (UVC)
 +>>>>> UVC input events device support
 +If you have a newer webcam, you should enable this or it won't work.
 >> Graphics support >> Graphics support
 >>> /dev/agpgart (AGP Support) >>> /dev/agpgart (AGP Support)
-Only old graphics cards use this. Typically it will be auto-selected by the driver.+>>>> Intel 440LX/BX/GX, I8xx and E7x05 chipset support 
 +Enable this if you have an integrated Intel card.
 >>> Direct Rendering Manager >>> Direct Rendering Manager
->>>> Nouveau (nVidia) cards +This should almost always be enabled. 
-If you use nouveau, you only need this driver, because it has framebuffer support, you do **NOT** need:+>>> Nouveau (nVidia) cards 
 +If you use nouveau, you only need this driver, because it has framebuffer support.
 >>> Support for frame buffer devices >>> Support for frame buffer devices
 +>>>> VESA VGA graphics support
 +This should almost always be enabled.
 +>>>> EFI-based Framebuffer Support
 +You should enable this if you want to boot from UEFI.
 >>>> nVidia Framebuffer Support >>>> nVidia Framebuffer Support
 Again this is **NOT** needed by nouveau. Again this is **NOT** needed by nouveau.
Line 340: Line 386:
 A larger buffer (e.g. 2048) is preferred for systems using PulseAudio. A larger buffer (e.g. 2048) is preferred for systems using PulseAudio.
 >> USB support >> USB support
 +>>> xHCI HCD (USB 3.0) support
 +You should enable this for newer systems.
 >>> EHCI HCD (USB 2.0) support >>> EHCI HCD (USB 2.0) support
 >>> Improved Transaction Translator scheduling >>> Improved Transaction Translator scheduling
Line 348: Line 396:
 >> Staging drivers  ---> >> Staging drivers  --->
 Avoid drivers in this section if you value system stability. Avoid drivers in this section if you value system stability.
 +>> Generic Dynamic Voltage and Frequency Scaling (DVFS) support
 +This provides frequency scaling support for devices. It also has governors similar to those for CPU frequency scaling. I'm not sure what devices require this.
 +> **Firmware Drivers**
 +>> EFI (Extensible Firmware Interface) Support  --->
 +>>> EFI Variable Support via sysfs
 +This option is deprecated in favor of EFI Variable filesystem. It can [[https://lkml.org/lkml/2013/4/16/473|cause data inconsistency issues]]
 > **File systems** > **File systems**
-You **MUST** either build-in the driver for the filesystem on which the kernel modules reside **OR** create an initrd, or the kernel will **NOT** boot. +You **MUST** either build-in the driver for the filesystem on which the kernel modules reside **OR** create an initrd, or the kernel will **NOT** boot. You should also build-in the driver for the filesystem on which the kernel itself resides in case it resides on a different filesystem type than the modules e.g. EFI VFAT partition.
->> CD-ROM/DVD Filesystems +
->>> UDF file system support +
-You need this if you plan on reading or writing disks with the UDF filesystem.+
 >> DOS/FAT/NT Filesystems >> DOS/FAT/NT Filesystems
 +>>> MSDOS fs support
 +>>> VFAT (Windows-95) fs support
 +You need these built-in if you use EFI. The kernel will boot if they are modules, but catch22 type situations can easily result.
 >>> NTFS file system support >>> NTFS file system support
 >>> NTFS write support >>> NTFS write support
 You need this if you want to write to NTFS filesystems. You need this if you want to write to NTFS filesystems.
 +>> CD-ROM/DVD Filesystems
 +>>> UDF file system support
 +You need this if you plan on reading or writing disks with the UDF filesystem.
 +>>> Miscellaneous filesystems  --->
 +>>>> EFI Variable filesystem
 +You should enable this if you want to boot from UEFI.
 > **Kernel hacking** > **Kernel hacking**
 >> Magic SysRq key >> Magic SysRq key
 Enable if you want to use SysRq REISUB (p.cogx on dvorak) to safely shutdown a hung system. Enable if you want to use SysRq REISUB (p.cogx on dvorak) to safely shutdown a hung system.
->> Write protect kernel read-only data structures 
-Helps catch kernel bugs 
 >> Allow gcc to uninline functions marked 'inline' >> Allow gcc to uninline functions marked 'inline'
 Enable for gcc 4.x but not for gcc 3.x Enable for gcc 4.x but not for gcc 3.x
Line 371: Line 429:
 >> Parallel crypto engine >> Parallel crypto engine
 Converts an arbitrary crypto algorithm into a parallel algorithm that executes in kernel threads. It allows multi-threading of any crypto algorithm. Converts an arbitrary crypto algorithm into a parallel algorithm that executes in kernel threads. It allows multi-threading of any crypto algorithm.
 +> **Library routines**
 +>> JEDEC DDR data
 +You should probably enable this so that the JEDEC data from your RAM is available to drivers that need it.
 <note> <note>
 If you are wondering what drivers you need, make sure to take a look at the output of these commands. If you are wondering what drivers you need, make sure to take a look at the output of these commands.
Line 404: Line 465:
 #!/bin/sh #!/bin/sh
 # installs kernel only, this should be run only from the kernel source directory # installs kernel only, this should be run only from the kernel source directory
 +
 +error() # error
 +{
 + echo "ERROR: $1"
 + exit 1
 +}
  
 # make sure we are root # make sure we are root
-if test $HOME != '/root'+if test != '/root'
 then then
- echo 'ERROR: This script must be run as root' >&+ error 'This script must be run as root'
- exit 1+
 fi fi
  
Line 426: Line 492:
 cp System.map /boot cp System.map /boot
 cp .config /boot/config cp .config /boot/config
 +
 +# for elilo
 +bootdir="/boot/efi/EFI/Slackware"
 +if test -d "$bootdir"
 +then
 + cp arch/x86/boot/bzImage "$bootdir"/vmlinuz
 +fi
  
 # change permissions of vmlinuz # change permissions of vmlinuz
Line 436: Line 509:
  echo 'Kernel installed correctly'  echo 'Kernel installed correctly'
 else else
- echo 'Kernel install failed' + error 'Kernel install failed'
- exit 1+
 fi fi
 if cmp System.map /boot/System.map if cmp System.map /boot/System.map
Line 443: Line 515:
  echo 'System.map installed correctly'  echo 'System.map installed correctly'
 else else
- echo 'System.map install failed' + error 'System.map install failed'
- exit 1+
 fi fi
 if cmp .config /boot/config if cmp .config /boot/config
Line 450: Line 521:
  echo 'Kernel config installed correctly'  echo 'Kernel config installed correctly'
 else else
- echo 'Kernel config install failed' + error 'Kernel config install failed' 
- exit 1+fi 
 +if test -d "$bootdir" 
 +then 
 + if cmp arch/x86/boot/bzImage "$bootdir"/vmlinuz 
 + then 
 + echo 'kernel installed to EFI correctly' 
 + else 
 + error 'kernel install to EFI failed' 
 + fi
 fi fi
 echo echo
Line 459: Line 538:
  
 exit 0 exit 0
- 
 </file> </file>
 ==== lilo ==== ==== lilo ====
Line 511: Line 589:
   * The lilo.conf excerpt is from the default lilo.conf that comes with Slackware plus a few options.    * The lilo.conf excerpt is from the default lilo.conf that comes with Slackware plus a few options. 
   * Thanks to [[wiki:user:alienbob|Alien Bob]] for his [[howtos:slackware_admin:kernelbuilding|kernel building howto]]. It inspired me to write a restructured and updated kernel building guide.    * Thanks to [[wiki:user:alienbob|Alien Bob]] for his [[howtos:slackware_admin:kernelbuilding|kernel building howto]]. It inspired me to write a restructured and updated kernel building guide. 
 +  * Updated by [[wiki:user:metaschima]]
 <!-- Please do not modify anything below, except adding new tags.--> <!-- Please do not modify anything below, except adding new tags.-->
 <!-- You must remove the tag-word "template" below before saving your new page --> <!-- You must remove the tag-word "template" below before saving your new page -->
 {{tag>howtos author_htexmexh kernel software}} {{tag>howtos author_htexmexh kernel software}}
 howtos:slackware_admin:building_the_linux_kernel_using_git_repository ()