G.3.5 Restoring the GRUB Master Boot Records and HBA Boot Order
After restoring the swap partition, you can restore the Grand Unified Bootloader (GRUB) master boot record.
The device.map file maps the BIOS drives to operating system devices. The following is an example of a device map file:
# this device map was generated by anaconda (hd0) /dev/sda (hd1) /dev/sdb
However, the GRUB device map does not support symbolic links, and the mappings in the device map might not correspond to those used by /dev/disk/by-hba-slot. The following procedure explains how you can correct the device map if necessary.
To restore the GRUB boot record:
-
Check which kernel device the drive is using in slot1
# ls -ld /dev/disk/by-hba-slot/s1 lrwxrwxrwx 1 root root 9 Apr 22 12:54 /dev/disk/by-hba-slot/s1 -> ../../sdb
-
If the output displays
/dev/sdbas shown in step 1, then proceed to the next step (open GRUB).If another device is displayed, such as
/dev/sdn, then you must first sethd1to point to the correct device:-
Make a copy of the
device.mapfile:# cd /boot/grub # cp device.map mydevice.map # ls -l *device* -rw-r--r-- 1 root root 85 Apr 22 14:50 device.map -rw-r--r-- 1 root root 85 Apr 24 09:24 mydevice.map
-
Edit
mydevice.mapto pointhd1to the new device. In this example,s1pointed to/deb/sdnin step 1.# more /boot/grub/mydevice.map # this device map was generated by bda install (hd0) /dev/sda (hd1) /dev/sdn
-
Use the edited device map (
mydevice.map) in the remaining steps.
-
-
Open GRUB, using either
device.mapas shown, or the editedmydevice.map:# grub --device-map=/boot/grub/device.map GNU GRUB version 0.97 (640K lower / 3072K upper memory) [ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ] -
Set the root device, entering hd0 for
/dev/sda, or hd1 for/dev/sdb:grub> root (hdn,0) root (hdn,0) Filesystem type is ext2fs, partition type 0x83
-
Install GRUB, entering hd0 for
/dev/sda, or hd1 for/dev/sdb:grub> setup (hdn) setup (hdn) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... yes Checking if "/grub/stage2" exists... yes Checking if "/grub/e2fs_stage1_5" exists... yes Running "embed /grub/e2fs_stage1_5 (hdn)"... failed (this is not fatal) Running "embed /grub/e2fs_stage1_5 (hdn,0)"... failed (this is not fatal) Running "install /grub/stage1 (hdn) /grub/stage2 p /grub/grub.conf "... succeeded Done.
-
Close the GRUB command-line interface:
grub> quit -
Ensure that the boot drive in the HBA is set correctly:
# MegaCli64 /c0 show bootdriveIf BootDrive VD:0 is set, the command output is as follows:
Controller = 0 Status = Success Description = None Controller Properties : ===================== ---------------- Ctrl_Prop Value ---------------- BootDrive VD:0 ----------------
If BootDrive VD:0 is not set, the command output shows
No Boot Drive:Controller = 0 Status = Success Description = None Controller Properties : ===================== ---------------- Ctrl_Prop Value ---------------- BootDrive No Boot Drive ----------------
-
If
MegaCli64 /c0 show bootdrivereports that the boot drive is not set, then set it as follows:# MegaCli64 /c0/v0 set bootdrive=on Controller = 0 Status = Success Description = None Detailed Status : =============== ----------------------------------------- VD Property Value Status ErrCd ErrMsg ----------------------------------------- 0 Boot Drive On Success 0 - ------------------------------------------ -
Verify that the boot drive is now set:
# MegaCli64 /c0 show bootdrive Controller = 0 Status = Success Description = None Controller Properties : ===================== ---------------- Ctrl_Prop Value ---------------- BootDrive VD:0 ---------------- -
Ensure that the auto-select boot drive feature is enabled:
# MegaCli64 adpBIOS EnblAutoSelectBootLd a0 Auto select Boot is already Enabled on Adapter 0. -
Check the configuration. See "Verifying the Disk Configuration" .