next up previous contents
Next: 7. Kernel building Up: Sidious Linux 10.04 Previous: 5. Upgrading   Contents

Subsections

6. Kernel Building and Upgrading

The Sidious CD includes three kernels. The default one, which the boot CD uses, and first installs, is fine for most cases. There are several cases where the default kernel installation is not optimal:

The following table summarizes the differences between the kernels:

ia32 Linux Kernel Features 2.4.26-si4 2.4.26-i386 2.4.26-smp4 2.4.19-smp8
  (default)   (servers) (legacy)
Critical Security       same as 2.4.26
386 CPUs supported   Y    
"586" (non-MMX pentiums) Y Y    
Symmetric Multi-Processing     Y Y
Can use memory 1GB-4GB     Y Y
Can use memory 4GB-64GB     Y Y
Works with OLD VMWare Y try    
APM Power Management M(1)   M(2) M(2)
ACPI Power Management Y      
Software Suspend Y      
File Quota Support     Y Y
RAID Support M Y Y Y
IP Multicast   Y Y Y
IP Advanced Router options   Y Y Y
IP Syn Cookies   Y Y Y
IP NAT Local support Y     Y
IDE Auto-DMA   Y Y Y
IDE Promise tuning   Y Y Y
IDE Slaves Reliable? ?(4) ?(4) N(4) Y
SCSI Support M(3) Y Y Y
XFS Support M(3) Y Y Y
Supermount Support M M M M
NFS3 Client Support M Y Y Y
NFS-Root Support   Y Y Y
NFS3 Server M M M M
Frame Buffer Support   Y Y Y
Net, USB, I/O drivers M Y Y Y
(1) Must boot with acpi=off to be able to load apm.o module.
(2) Does not work with multi-processor.
(3) Requires use of initrd to boot.
(4) Use caution on some IDE controllers (intel piix?) spin-down and heavy use of slave drives can lock up computer with 2.4.26!

6.1 Laptops

6.1.1 APM (Old) Power Management

The default 2.4.26-si4 kernel will boot with ACPI Power Management support enabled. The default /etc/lilo.conf configuration includes an entry sidious-noacpi which should be used before enabling the APM options in reconfig, because ACPI and APM support cannot be loaded at the same time. APM is required for suspending to RAM, and may also be the only way to get the backlight to turn off on some laptops.

6.1.2 Software Suspend

If your BIOS does not support APM, or if suspending to RAM does not conserve enough power (e.g., your battery dies while suspended) then suspending to the swap partition is probably a good option. For this two entries in /etc/lilo.conf must be uncommented and edited so that resume2= points to your largest swap partition. Use ``reconfig'' to make sure the ``Start Power Management Daemon'' option is selected.

6.2 Upgrading to Pre-built Kernels

The rsync-sidious script will never change your kernel version when upgrading. For laptops, if everything is working, you don't want to change your kernel version. If you need to test a new kernel, it can be a little tricky. Laptops should be running the 2.4.*-si* kernels. These kernels are compiled with most support as modules. Even XFS, the default root filesystem type, is built as modules. A subset of the modules is contained in an initial RAM disk that is loaded during the boot process. The reason for this complication is mainly to allow special mount options to be passed to the kernel for the root-XFS partition, without which your disk would be spinning up all the time. (See Appendix A for details on exactly how this is done.) A matching initial RAM disk for each -si* kernel is provided. The name of the image is:


/boot/kernel-2.4.*-si*.initrd

After an initial installation, /etc/lilo.conf is not touched by upgrades. Here are the steps to take to try a new kernel on a laptop (or desktop, but desktops do not usually require the extra complication of an initrd.) Let's say you are running 2.4.26-si4 and 2.4.27-si1 is out and you want to try it:

  1. Copy the default entry in /etc/lilo.conf for your current kernel and make a new section for the experimental kernel. For example:

    
    .
    .
    .
    image = /boot/kernel-2.4.26-si4
      label = sidious
      initrd = /boot/kernel-2.4.26-si4.initrd
      append = ``root=0100 init=/etc/initrc pci=noacpi''
    .
    .
    .
    

    would get ammended with:

    
    .
    .
    .
    image = /boot/kernel-2.4.26-si4
      label = sidious
      initrd = /boot/kernel-2.4.26-si4.initrd
      append = ``root=0100 init=/etc/initrc pci=noacpi''
    image = /boot/kernel-2.4.27-si1
      label = sidious-new
      initrd = /boot/kernel-2.4.27-si1.initrd
      append = ``root=0100 init=/etc/initrc pci=noacpi''
    .
    .
    .
    

    Leave both sections in there so the old kernel can still be booted also, if there is a problem.

  2. Re-run lilo:

    
    # lilo
    Added sidious *
    Added sidious-new
    

  3. Reboot and select sidious-new from the menu.

Whenever selecting any image=*-si, the initrd= line must point to an initrd that contains matching modules for that kernel, and a proper modules.dep file. To verify this manually, first load the loop driver (modprobe loop) and then mount the .initrd file as if it were a disk:


# mount -o loop,ro /boot/kernel-2.4.27-si1.initrd /mnt

Then check to see that /mnt/lib/modules/2.4.27-si1/ (or whatever version kernel you are trying to switch to) has the right modules. For example:


# ls -l /mnt/lib/modules/2.4.27-si1/
-rw-rw-r--    1 root     root        19520 Apr 26 05:13 apm.o
-rw-rw-r--    1 root     root         2088 Apr 26 05:13 dummy.o
-rw-rw-r--    1 root     root        14128 Apr 26 05:13 loop.o
-r--r--r--    1 root     root          131 Apr 26 12:48 modules.dep
-rw-rw-r--    1 root     root       522356 Apr 26 05:13 xfs.o

If you mount the initrd without the ro option, it is possible to add new modules to the disk image manually, but this is not how it is done normally. The .initrd is actually produced by typing


make SIDIOUS_CONFIG=./etc/sidious.config.xfs-initrd install

in the Sidious 8 (embedded linux) development tree. Ask Sidik about this.

6.3 Servers and Stand alone

Servers use the kernel-2.4.*-smp[246...] (and if they are uni-processor, they still use this kernel, but with the ``noapic'' boot option if required by the BIOS or chipset.) To try a different kernel, change the entry in /etc/lilo.conf, re-run lilo, and reboot. It is possible to add an entry to /etc/lilo.conf so that the old kernel can be selected from the boot menu in case the new kernel does not boot.

6.4 Net-boot

Net-booted hosts get their kernel from the tftpboot directory on their boot server. This directory contains etherboot-2.4.*-smp and etherboot-2.4.*-up kernels, which are just versions of the kernel-2.4.*-smp image run through etherboot with some kernel command line options. Edit /etc/dhcpd.conf.HOSTNAME on the boot server to select a different kernel for a net-booted client. After editing the dhcpd.conf file, be sure to restart the dhcpd:


server# /etc/rc.d/rc.nfsd

(Note: The dhcpd does not understand the HUP signal.)


next up previous contents
Next: 7. Kernel building Up: Sidious Linux 10.04 Previous: 5. Upgrading   Contents
root
2006-05-11