← Back to team overview

sslug-teknik team mailing list archive

Re: Linux boot: ingen BIOS drive! Problemet er løst

 

Jørgen Heesche wrote:
Hej sslug,

Jeg kan ikke boote mandrake 9.1 efter installation af WindowsXP.
Disken er opdelt i 5 partitioner med filsystemerne
  hda1: fat32  WindowsXP
  hda5: ext3   Mdk9.1
  hda6: swap
hda7: ext3 Suse 9.1 hda8: ext3 Mdk 10.0

Efter installation af XP ville jeg geninstallere grub for mdk9.1 ved hjælp af mandrakes installations-cd i rescue mode, men det lykkedes ikke. grub-install finder mdk9.1 på /dev/hda5, men går i fejl med en meddelelse om, at der ikke findes en BIOS drive.

Fejlmeddelelsen fra grub-install indeholdt ordene: "does not have any
corresponding BIOS drive".
Et forsøg på at boote Mdk9.1 fra Mdk10.0 (krævede geninstallation af Mdk10.0) gav fejlmeddelelsen:
 "Error 13: Invalid or unsupported executable format".

Kan problemet løses ved at bruge grub shell ?, og hvilke kommandoer skal man give til grub ?

Ovennævnte fejl ledte tanken henimod, at XP havde smadret bootsectoren
på hda5. Opgaven var altså at restore grub på hda5.
En søgning på google på "grub restore boot sector" gav flg. link:
"
Messed up boot sector??
www.linuxforums.org/forum/post-137377.html
"
Her anvises bla. en metode til at restore fra linux:
Brug installations-cd'en i rescue mode, kald grub og giv kommandoerne:
     root (ur root partition here)
     setup (hd0) #to put it on the mbr

Disse kommandoer og meget andet er beskrevet i http://www.gnu.org/software/grub/manual/grub.html

Min Mdk9.1 root partition er på hda5, dvs. (hd0,4) i grub terminologi.
Da jeg faktisk kunne boote Mdk10.0 valgte jeg at installere grub for Mdk9.1 i boot sektoren på hda5. Sådan:
   root (hd0,4)
   setup (hd0,4)
Bemærk: man kan teste kommandoer til grub ved kalde grub med option --read-only.
Nu kan Mdk9.1 bootes med Mdk10.0-grub som primær bootloader.
Jeg har endnu ikke lagt Mdk9.1-grub i MBR, men jeg tvivler ikke på, at det kan gøres med setup (hd0,0). Jeg har forsøgt med grub-install, med det gik i stykker med en mystisk fejlmeddelelse:
Unrecognized ls output: Not found or not a block device.
grub.install --debug /dev/hda gav dette output:


[root@x1-6-00-0e-5c-31-e5-a1 jph]# grub-install --debug /dev/hda
+ bootdir=/boot
+ grubdir=/boot/grub
+ device_map=/boot/grub/device.map
+ test -f /usr/sbin/grub
+ :
+ test -d /boot
+ test -d /boot/grub
+ test no = yes
+ test -f /boot/grub/device.map
+ :
++ sed -n '/^([fh]d[0-9]*)/s/\(^(.*)\).*/\1/p' /boot/grub/device.map
++ sort
++ uniq -d
++ sed -n 1p
+ tmp=
+ test -n ''
++ convert /dev/hda
++ test -e /dev/hda
++ :
+++ echo /dev/hda
+++ sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' -e 's%\(fd[0-9]*\)$%\1%' -e 's%/part[0-
9]*$%/disc%' -e 's%\(c[0-7]d[0-9]*\).*$%\1%'
++ tmp_disk=/dev/hda
+++ echo /dev/hda
+++ sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%' -e 's%.*/fd[0-9]*$%%' -e 's%.*/flopp y/[0-9]*$%%' -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' -e 's%.*c[0-7]d[0-9]*p*%%'
++ tmp_part=
+++ grep -v '^#' /boot/grub/device.map
+++ grep '/dev/hda *$'
+++ sed 's%.*\(([hf]d[0-9][a-g0-9,]*)\).*%\1%'
++ tmp_drive=(hd0)
++ test 'x(hd0)' = x
++ test x '!=' x
++ echo '(hd0)'
+ install_drive=(hd0)
+ test 'x(hd0)' = x
++ find_device
+++ df /
+++ sed -n 's%.*\(/dev/[^       ]*\).*%\1%p'
++ tmp_fname=/dev/hda5
++ test -z /dev/hda5
++ test -L /dev/hda5
+++ ls -al /dev/hda5
+++ sed -n 's%.*-> %\1%p'
sed: -e expression #1, char 12: Invalid reference \1 on `s' command's RHS
++ tmp_new_fname=
++ test -z ''
++ echo 'Unrecognized ls output'
++ exit 1
+ root_device=Unrecognized ls output
++ find_device /boot
+++ df /boot/
+++ sed -n 's%.*\(/dev/[^       ]*\).*%\1%p'
++ tmp_fname=/dev/hda5
++ test -z /dev/hda5
++ test -L /dev/hda5
+++ ls -al /dev/hda5
+++ sed -n 's%.*-> %\1%p'
sed: -e expression #1, char 12: Invalid reference \1 on `s' command's RHS
++ tmp_new_fname=
++ test -z ''
++ echo 'Unrecognized ls output'
++ exit 1
+ bootdir_device=Unrecognized ls output
+ test 'xUnrecognized ls output' '!=' 'xUnrecognized ls output'
++ convert 'Unrecognized ls output'
++ test -e 'Unrecognized ls output'
++ echo 'Unrecognized ls output: Not found or not a block device.'
++ exit 1
+ root_drive=
+ test x = x
+ exit 1

Det ser ud som en bug i grub-install, bootdir_device sættes lig med
'Unrecognized ls output'.


--
Med venlig hilsen

Jørgen Heesche
mailto:heesche@xxxxxxxxxxx





References