====== Use Generic Kernel with an Initrd ==
An initrd allows to use the smaller generic kernel instead of the huge kernel
This page is about initrd with the lilo boot loader. For EFI systems refer to [[Slack Initrd EFI]]
Doc source: [[slack>slackware/README.initrd]]
===== Local machine ==
It seems better to generally use mkinitrd_command_generator.sh to create an initrd. See below at KVM. The rest of this section is obsolete.
On a locally available (with phsical access to keyboard and display) machine with ext4 on ''/'' the following should suffice:
cp -a /boot /boot.bak
cd /boot
mkinitrd -c -k 3.14.18-smp -m ext4 # use your kernel version here!
Now Edit lilo.conf :
image = /boot/vmlinuz -> image = /boot/vmlinuz-generic-smp
add initrd = /boot/initrd.gz
There is no need to update symlinks in ''/boot'' if you made sure, your lilo.conf point to the right generic kernel verion
An finally run ''lilo''
===== KVM ==
According to [[https://www.linuxquestions.org/questions/slackware-14/slackware64-current-kvm-guest-boot-issue-871981/|linuxquestions]] the virtio kernel modules are necessary for KVM in the initrd.gz. A simple call like described in README.initrd, eg ''mkinitrd -c -k 3.10.17 -m ext4'' will **not** include the virtio modules (tested) => Use ''/usr/share/mkinitrd/mkinitrd_command_generator.sh''. In http://docs.slackware.com/howtos:slackware_admin:systemupgrade mkinitrd_command_generator.sh is mentioned as well
Check if you made a copy of ''/boot'' and generate the command which generates an initrd:
cd /boot # just to have everything togehter in /boot
/usr/share/mkinitrd/mkinitrd_command_generator.sh -k 4.4.14 > generated_mkinitrd_command-4.4.14
Important: Append the kernel version number to the name of the initrd output file in ''generated_mkinitrd_command-4.4.14'' in order to not overwrite the existing initrd for the old proved kernel!
Now generate the initrd:
chmod +x generated_mkinitrd_command-4.4.14
./generated_mkinitrd_command-4.4.14
Fix lilo.conf and reinstall lilo:
cd /etc
cp lilo.conf lilo.conf.bak
The output of
/usr/share/mkinitrd/mkinitrd_command_generator.sh -l /boot/vmlinuz-generic-4.4.14
may be included in lilo.conf, to create a section for the new kernel (before the old kernel)
There is no need to update symlinks in ''/boot'' if you made sure, your lilo.conf point to the right kernel version. Finally run lilo:
lilo
===== Attic ==
To use the [[slack>slackware-13.1/CHANGES_AND_HINTS.TXT|recommended]] generic instead of the huge kernel you have to build an initrd. This section is based on [[slack>slackware-13.1/README.initrd]]
Make a copy of ''/boot'' dir to be on the save side: ''cp -a /boot /boot.org''
Create the initial ramdisk filesystem ''/boot/initrd.gz'' with
mkinitrd -c -k 2.6.33.4-smp -m ext3 -f ext3 -r /dev/sda2
In this example we have an ''ext3'' root "''/''" partition on ''/dev/sda2'' (see ''ls -al /dev/root'') for a kernel of version ''2.6.33.4-smp'' (See ''uname -r'').
Or
mkinitrd -c -k 2.6.33.4-smp -m reiserfs
for Reiserfs, or
mkinitrd -c -k 2.6.33.4-smp -m ext4 -f ext4 -r /dev/sda2
for ext4 on /dev/sda2
It is not necessary to change the symlinks in /boot :?:
Add a new image-section at the beginning of the image sections to ''/etc/lilo.config'':
image = /boot/vmlinuz-generic-smp-2.6.33.4-smp
initrd = /boot/initrd.gz
root= /dev/sda2
label = LinuxGeneric
read-only
Run ''lilo'' and restart.
If a new kernel is installed (e.g. by running ''slackpkg''), a new ''initrd.gz'' must be created. And if ''initrd.gz'' is modified, ''lilo'' must be started again!