The Boot ProcessIt is also easy to break.
- The BIOS loads the Boot Sector (Grub) from Sector 0
- The Grub (root line in grub.conf) points to the partition containing the kernel (Linux).
- The kernel loads and initializes the devices and runs /sbin/init (process 1)
- /sbin/init runs /etc/rc.d/rc.sysinit to initilize devices.
- /sbin/init reads /etc/inittab
- /etc/rc.d/rc.sysinit run all the scripts int the approach run level directory.
GRUBGrub is the first step in the boot process and has the greatest Oh ---- factor. But it really doesn't have to be a big problem. You may not need to boot from a live CD to fix this. There are three main parts to boot step
The TAB key will do auto completions when you are editing a GRUB options.
chroot /mnt/sysimage grubFollowing this command you need to show grub where to read the grub configuration. If the drive type may have changed, maybe because you changed from IDE to SCSI disks you will need to do a --recheck. Then install grub with the install command.
grub-install --recheck /dev/hda grub-install /dev/hdaRedhat will ask if you want to mount the root file system. If you say no you will need to mount the root file system your self. Here are the commands to do this with the VMware system.
mkdir /mnt/root mkdir /mnt/root/boot mount /dev/md1 /mnt/root mount /dev/md0 /mnt/root/boot
Fixing INITRD ModulesIf the kernel is missing or corrupt you will need to reload it from the install CD.
If the initrd file is missing you you can also reload it with the kernel.
Adding missing modules to initrd:
rm -f /boot/initrd-2.6.18-194.17.1.el5.img mkinitrd --preload=xor --preload=raid456 /boot/initrd-2.6.18-194.17.1.el5.img 2.6.20-1.2320.fc5Manually changing initrd:
mkdir /root/initrd-tmp cd /root/initrd-tmp cp -a /boot/initrd-2.6.18-194.17.1.el5.img .. mv ../initrd-2.6.18-194.17.1.el5.img ../initrd-2.6.18-194.17.1.el5.img.gz gunzip ../initrd-2.6.18-194.17.1.el5.img.gz cpio -i --make-directories < ../initrd-2.6.18-194.17.1.el5.img vi init find . -depth | cpio -o > ../initrd-2.6.18-194.17.1.el5.img cd .. rm -rf initrd-tmp gzip -9 initrd-2.6.18-194.17.1.el5.img mv initrd-2.6.18-194.17.1.el5.img.gz initrd-2.6.18-194.17.1.el5.img mv initrd-2.6.18-194.17.1.el5.img /boot
INITTABThe file /etc/inittab controls the runlevel the system boots into.
You can override this by added the runlevel you want to the end of the kernel line in GRUB.
id:3:initrdefault:Changing the 3 in this line will change the default runlevel to the one you want.
- Run level 1 is single user
- Run level 2 is Multiuser without NFS
- Run level 3 is Full Multiuser
- Run level 4 is unused
- Run level 5 is X11 windows
- Run level 6 will reboot the system
RC scripts are kept in /etc/rc.d. The program that run the RC scripts is rc.sysinit. These scripts are what is done when you change run level with the init command.
The fastest to set runlevel services is to use the command 'ntsysv and tell it the runlevels you want to set. For example, this will display and change runlevels 3 and 5.
ntsysv --level 35
To turn on or off a RC script you can also use the command:
chkconfig --level command on/offThe option --level sets the run level to be change for the command that is turned on or off. This can also be done with the GUI system-config-services.
chkconfig --listThis command will list all the services and if they are on or off for each run level.
chkconfig --add/--del commandThis command will add or delete a new command from the RC start-up scripts.
After configuring a system like Apache it is easy to forget make it start at boot time. Don't forget to reboot you system before the test is over.
You can debug the RC process by booting into single user mode and running the RC scripts in the run level by hand. You can also bypass init by adding init=/bin/bash the kernel line in GRUB.
Here are some of the issues if you are cloning or restoring a system by copy all the files into empty directories and then restoring the boot process. This process involves creating all the required root directories (/ /etc /usr /bin /var /opt /home) and coping all the files back into place with their ownership and permissions maintained. Directories that are not copied include /tmp /dev /proc /mnt. The directories that are not copied do need to be created.
- The partitions and/or e2 labels may not be the same. This will require changing /etc/fstab
- Some directories will/may not be copied. This may include /dev. In witch case mounting the root file system with the chroot command will leave you without any devices.
- Grub.conf (/etc/grub/grub.conf and menu.lst) may also need editing. Both the root and kernel lines may contain references to the wrong partitions.
- /etc/mtab needs to be edited to match the new disk. Partition
numbers can change and sometimes the type, like from IDE to SCSI
(hda to sda).
mount -o bind /dev /mnt/sysimage/dev mount -o bind /proc /mnt/sysimage/procWith the file systems in place you can use the chroot command to create the write environment for fixing the master boot record and Grub.