Difference between revisions of "Installing LILO"

From wiki.emacinc.com
Jump to: navigation, search
Line 3: Line 3:
 
==Introduction==
 
==Introduction==
  
LILO can be installed onto a disk for use by the local machine, or it can be installed onto a removable storage device for use in booting on a different machine. Both installation methods are discussed here.  Usually, the former method will be used to update the existing bootloader for new kernels, new kernel configurations, or new boot time options. The latter method is generally used to initially set up a bootable storage device which is intended to be inserted into an embedded system for which it is being created.
+
LILO needs to be installed or reinstalled any time any of the lilo.conf configuration options are changed or when a new kernel is to be used. See the [[Configuring LILO]] page for setting the options in lilo.conf. See below for installing a new kernel. Reference the sections below if lilo is to be installed on a running machine or from a Compact Flash card.
 +
 
 +
==Installing a new Kernel==
 +
 
 +
To install a new kernel onto an already running machine, use scopy to copy the new kernel to /boot. Then update the symbolic link, bzImage.
 +
<syntaxhighlight lang=console>
 +
developer@ldc:~$ scp /path/to/bzImage-VERSION_NEW.bin root@TARGET_IP:/boot
 +
developer@ldc:~$ ssh root@TARGET_IP
 +
root@oe:/# cd /boot
 +
root@oe:/# rm bzImage
 +
root@oe:/# ln -s bzImage-VERSION_NEW.bin bzImage
 +
</syntaxhighlight>
 +
 
 +
Then review the lilo.conf and continue below with [[#Installing_Onto_the_Local_Machine]]
 +
 
 +
To install a new kernel into an image on a mounted Compact Flash card, copy the kernel to the /boot directory of the mounted root filesystem. Then chroot and update the symbolic link. Follow the steps below [[#Installing_LILO_Onto_a_Removable Drive]]
  
 
==Installing Onto the Local Machine==
 
==Installing Onto the Local Machine==
Line 24: Line 39:
 
1. Determine the device node of the Compact Flash card by using <code>dmesg</code>.
 
1. Determine the device node of the Compact Flash card by using <code>dmesg</code>.
  
  user@ldc:~/# dmesg | tail -n 15
+
  developer@ldc:~/# dmesg | tail -n 15
 
  ...
 
  ...
 
  [126468.154762] sd 6:0:0:0: [sdb] 7831152 512-byte logical blocks: (4.00 GB/3.73 GiB)
 
  [126468.154762] sd 6:0:0:0: [sdb] 7831152 512-byte logical blocks: (4.00 GB/3.73 GiB)
Line 51: Line 66:
 
  * If there is no output from this command, continue with step 3. Otherwise follow the next step to unmount the device.
 
  * If there is no output from this command, continue with step 3. Otherwise follow the next step to unmount the device.
  
   user@ldc:~/# umount /dev/sdb1
+
   developer@ldc:~/# umount /dev/sdb1
  
 
* Now mount the card so that it's contents can be accessible to the desktop. First create a mount point (directory) if one does not exist, then issue the <code>mount</code> command.
 
* Now mount the card so that it's contents can be accessible to the desktop. First create a mount point (directory) if one does not exist, then issue the <code>mount</code> command.
  
 
<syntaxhighlight lang="console">
 
<syntaxhighlight lang="console">
user@ldc:~/# sudo su
+
developer@ldc:~/# sudo su
 
[sudo] password for user:
 
[sudo] password for user:
 
root@ldc:~/# mkdir -p /mnt/cfcard
 
root@ldc:~/# mkdir -p /mnt/cfcard
Line 67: Line 82:
 
  root@ldc:/mnt/cfcard# mount --bind /dev dev/
 
  root@ldc:/mnt/cfcard# mount --bind /dev dev/
 
  root@ldc:/mnt/cfcard#  
 
  root@ldc:/mnt/cfcard#  
 +
 +
* If a new kernel is to be installed, copy it not to the /boot directory on the CF card.
 +
<syntaxhighlight lang="console">
 +
root@ldc:/mnt/cfcard# cp /path/to/bzImage-VERSION_NEW.bin /mnt/cfcard/boot/
 +
</syntaxhighlight>
  
 
* <code>chroot</code> into the filesystem on the Compact Flash card:
 
* <code>chroot</code> into the filesystem on the Compact Flash card:
 
  root@ldc:/mnt/cfcard# chroot .
 
  root@ldc:/mnt/cfcard# chroot .
 
  bash-3.2#  
 
  bash-3.2#  
 +
 +
* Update the symbolic link to point to the new kernel if a new kernel is to be used.
 +
bash-3.2# cd /boot
 +
bash-3.2# rm bzImage
 +
bash-3.2# ln -s bzImage-VERSION_NEW.bin bzImage
  
 
* Inspect the configuration file that will be used when running lilo e.g. lilo.conf.boot. Make sure that the <code>root=/dev/xxx</code> and <code>disk=/dev/xxx</code> lines point to the correct device node that the Compact Flash card is mounted on (in this example, <code>/dev/sdb</code>). If these lines point to the desktop hard drive, the system bootloader will be overwritten and cause the desktop to be unbootable See [[Configuring LILO]] for more information.  
 
* Inspect the configuration file that will be used when running lilo e.g. lilo.conf.boot. Make sure that the <code>root=/dev/xxx</code> and <code>disk=/dev/xxx</code> lines point to the correct device node that the Compact Flash card is mounted on (in this example, <code>/dev/sdb</code>). If these lines point to the desktop hard drive, the system bootloader will be overwritten and cause the desktop to be unbootable See [[Configuring LILO]] for more information.  

Revision as of 12:31, 20 December 2013

TODO: {{#todo:Complete (12.16.13-03:15->MD+);(12.16.13-12:50->MD);(12.16.13-13:40->MD);(12.16.13-13:45->MW+);(12.16.13-18:20->KY+)|Mike Dean|oe 4,oe 5,md,Complete,mw,ky}}

Introduction

LILO needs to be installed or reinstalled any time any of the lilo.conf configuration options are changed or when a new kernel is to be used. See the Configuring LILO page for setting the options in lilo.conf. See below for installing a new kernel. Reference the sections below if lilo is to be installed on a running machine or from a Compact Flash card.

Installing a new Kernel

To install a new kernel onto an already running machine, use scopy to copy the new kernel to /boot. Then update the symbolic link, bzImage.

developer@ldc:~$ scp /path/to/bzImage-VERSION_NEW.bin root@TARGET_IP:/boot
developer@ldc:~$ ssh root@TARGET_IP
root@oe:/# cd /boot
root@oe:/# rm bzImage
root@oe:/# ln -s bzImage-VERSION_NEW.bin bzImage

Then review the lilo.conf and continue below with #Installing_Onto_the_Local_Machine

To install a new kernel into an image on a mounted Compact Flash card, copy the kernel to the /boot directory of the mounted root filesystem. Then chroot and update the symbolic link. Follow the steps below #Installing_LILO_Onto_a_Removable Drive

Installing Onto the Local Machine

Before LILO can be used to boot a system, it must be installed onto the boot device. It must also be reinstalled any time the kernel is changed. The easiest way to install LILO onto the system's Master Boot Record, using the default configuration file (/etc/lilo.conf), is run lilo on the target device:

root@oe:/# lilo

This method works well when the default configuration can be used. Many times, an alternate configuration will be used so that a breaking change to a known-good configuration file will not leave the system without a usable configuration file. If a configuration file in an alternate location needs to be used, it will have to be specified to lilo with the -C option:

root@oe:/# lilo -C /etc/alternate_lilo_configuration_file.conf

The -C (capital C) switch tells lilo to use the configuration file specified after the switch when installing itself.

Installing LILO Onto a Removable Drive

The method shown above is used on a running embedded system. Additional steps are required when the root filesystem is on a Compact Flash card inserted into a Linux PC. This method is usually necessary when there isn't already a bootable disk for the embedded machine.

  1. Determine the device node of the Compact Flash card by using dmesg.

    developer@ldc:~/# dmesg | tail -n 15
    ...
    [126468.154762] sd 6:0:0:0: [sdb] 7831152 512-byte logical blocks: (4.00 GB/3.73 GiB)
    [126468.182196]  sdb: sdb1
    [126468.688061] kjournald starting.  Commit interval 5 seconds
    [126468.691223] EXT3-fs (sdb1): using internal journal
    [126468.691225] EXT3-fs (sdb1): recovery complete
    [126468.694526] EXT3-fs (sdb1): mounted filesystem with ordered data mode
    [173828.541718] sdb: detected capacity change from 4009549824 to 0
    [179577.977554] sd 6:0:0:0: [sdb] 7831152 512-byte logical blocks: (4.00 GB/3.73 GiB)
    [179577.994839]  sdb: sdb1
    [179578.376157] kjournald starting.  Commit interval 5 seconds
    [179578.381428] EXT3-fs (sdb1): using internal journal
    [179578.381433] EXT3-fs (sdb1): recovery complete
    [179578.384661] EXT3-fs (sdb1): mounted filesystem with ordered data mode
    
    • The device node sdb was created for the flash card with one partition sdb1(in this example). Also note that sdb reports a size of 4.00 GB which corresponds to the size of the card inserted.

  2. Determine if the card was automatically mounted to the desktop's filesystem. Problems have been identified when running lilo on an automounted device. The best way to avoid problems later in the process is to unmount and manually remount the device.

    developer@ldc:~$ mount | grep sdb1
    /dev/sdb1 on /media/EMAC-OE type ext3 (rw,nosuid,nodev,uhelper=udisks)
    
    • If there is no output from this command, continue with step 3. Otherwise follow the next step to unmount the device.

      developer@ldc:~/# umount /dev/sdb1
      
  3. Now mount the card so that it's contents can be accessible to the desktop. First create a mount point (directory) if one does not exist, then issue the mount command.

    developer@ldc:~/# sudo su
    [sudo] password for user:
    root@ldc:~/# mkdir -p /mnt/cfcard
    root@ldc:~/# mount /dev/sdb1 /mnt/cfcard
    root@ldc:~/#
    
  4. Bind mount the device nodes into the filesystem so that LILO will be able to communicate with the flash card:

    root@ldc:~/# cd /mnt/cfcard
    root@ldc:/mnt/cfcard# mount --bind /dev dev/
    root@ldc:/mnt/cfcard# 
    
  5. If a new kernel is to be installed, copy it not to the /boot directory on the CF card.

    root@ldc:/mnt/cfcard# cp /path/to/bzImage-VERSION_NEW.bin /mnt/cfcard/boot/
    
  6. chroot into the filesystem on the Compact Flash card:

    root@ldc:/mnt/cfcard# chroot .
    bash-3.2# 
    
  7. Update the symbolic link to point to the new kernel if a new kernel is to be used.

    bash-3.2# cd /boot
    bash-3.2# rm bzImage
    bash-3.2# ln -s bzImage-VERSION_NEW.bin bzImage
    
  8. Inspect the configuration file that will be used when running lilo e.g. lilo.conf.boot. Make sure that the root=/dev/xxx and disk=/dev/xxx lines point to the correct device node that the Compact Flash card is mounted on (in this example, /dev/sdb). If these lines point to the desktop hard drive, the system bootloader will be overwritten and cause the desktop to be unbootable See Configuring LILO for more information.

  9. Run lilo with the appropriate LILO configuration file.

     bash-3.2#  lilo -C /etc/lilo.conf.boot
     Warning: '/proc/partitions' does not exist, disk scan bypassed
     Added emac-oe *
     One warning was issued.
     bash-3.2#
    
    • Note that the warning here is normal, because LILO is being installed inside a chroot which doesn't have a mounted /proc virtual filesystem.

  10. Exit the chroot and unmount the device:

    bash-3.2#  exit
    root@ldc:/mnt/cfcard# cd ..
    root@ldc:/mnt# umount cfcard/dev/
    root@ldc:/mnt# umount cfcard/
    
  11. It is now safe to remove the flash card and put it into the embedded machine.

Next Steps

See Also

Lilo User Guide