I have encountered few problems in regards to dual boot and was thinking for quite a while at troubleshooting. It is a long story but will try to make it as short as possible. The Preboot execution server is setup with linux installation image with two boot entries. manual installation - install rhel manually from pxe server. semi-auto installation - automated installation, the only thing that are manual are user's choice of target drive.
Now I normally do a dual boot with two distinct SATA drives: hdd0, hdd1. Simple and easy. hdd0 - install windows server hdd1 - install linux using preboot server.
Everything goes fine with hdd0 windows installation and if I install it manually redhat linux onto hd1. When I install it manually, the bootloader is created on second drive (BTW, is is uefi so winbootloader is fs0:\efi\boot\bootx.64.efi and lin bootloader is at fs1:\efi\redhat\grub.efi
Now trouble starts if I choose semi-automated installation method from pxe server, in which I only intervene to select the target drive as hdd1 as intended. For this installation, I obviously created kickstart ks.cfg. But no matter how I tell to ks.cfg, this automated kickstart installation will always place grub.efi onto hdd0 not hdd1.
In other words; winbootloader is at fs0:\efi\boot\bootx64.efi as usual. lin bootloader is now on fs0:\efi\redhat\grub.efi.
As a result, after installation, something goes wrong and it fails to boot. The grub error is flashed with (“(hd1,0)/grub/splash.xpm.gz”) not found.
Now if I check the grub setting for both cases above, the root(x,x) lines are different, but it makes me more confused:
1. dual boot, manual installation (working case) win loader: fs0:\efi\boot\bootx64.efi linux loader: fs1:\efi\redhat\grub.efi
grub setting: root(0,1)
2. dual boot, kickstart (semi-automated) installation (failing case) win loader: fs0:\efi\boot\boox64.efi (no problema) linux loader: fs0:\efi\redhat\grub.efi
grub setting: root(1,0)
For the seconds case, I tried setting root(0,0), root(1,1) no avail. The definition of root(x,x) statement is vague and murky at best when googling (probably done by amateurist), but the way I grasp is root(<driveNo>, <partition>)
but then, since for working case, linux bootloader is in fs1: so i though the appropriate statement would be root(1,1) but somehow root(0,1) works.
For failing case in which lin bootloader is in fs0:, then I imagine root(0,0) will work but obviously it does not.
_________________ key takeaway after spending yrs on sw industry: big issue small because everyone jumps on it and fixes it. small issue is big since everyone ignores and it causes catastrophy later. #devilisinthedetails
Last edited by ggodw000 on Tue Nov 14, 2017 1:27 pm, edited 1 time in total.
|