Bug 144688

Summary: first reboot ends in grub> prompt
Product: [openSUSE] SUSE Linux 10.1 Reporter: Christian Boltz <suse-beta>
Component: Update ProblemsAssignee: Joachim Plack <jplack>
Status: VERIFIED FIXED QA Contact: Klaus Kämpf <kkaempf>
Severity: Major    
Priority: P5 - None CC: duwe
Version: Beta 6   
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: Other Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: /etc/grub.conf
/boot/grub/menu.lst

Description Christian Boltz 2006-01-22 22:00:34 UTC
I updated from 10.0 final to 10.1 beta1.

The first reboot (to the second stage of installation) left me alone with a
    grub>
prompt. I have no idea what caused this - there were no error messages while installation.

Finally, booting from CD and running grub-install from SUSE 10.0 on the other partition brought back the (old) working grub.

Hardware: Acer TravelMate 803 laptop

You can find the y2logs at https://bugzilla.novell.com/attachment.cgi?id=64424&action=view
Comment 1 Christian Boltz 2006-01-29 19:15:53 UTC
I had the same problems after first stage of installation of beta2.

The strange thing: I booted the recovery system, chrooted to the installed system and called "grub-install /dev/hda" without changing any configuration file. This made it working...
Comment 2 Christian Boltz 2006-02-03 20:15:47 UTC
Same problem (and workaround) while updating beta2 -> beta3 :-(

However, a non-booting system is (at least) a major problem - many users don't know what to do in this case.
Comment 3 Christian Boltz 2006-03-04 10:46:39 UTC
The problem reappeared when updating from beta3 to beta6 :-((

This time, I saved the MBR before and after manually running "grub-install /dev/hda" as described in comment #1.

Here is the result:

--- mbr-grub-broken-dump      <-- non-working state after installation stage 1
+++ mbr-grub-working-dump     <-- working state after running grub-install
@@ -1,15 +1,15 @@
 0000  eb 48 90 d0 bc 00 7c fb  50 07 50 1f fc be 1b 7c  ëH.ÐŒ.|û P.P.üŸ.|
 0010  bf 1b 06 50 57 b9 e5 01  f3 a4 cb be be 07 b1 04  ¿..PW¹å. ó€ËŸŸ.±.
 0020  38 2c 7c 09 75 15 83 c6  10 e2 f5 cd 18 8b 14 8b  8,|.u..Æ .âõÍ....
 0030  ee 83 c6 10 49 74 16 38  2c 74 f6 be 10 07 03 02  î.Æ.It.8 ,töŸ....
-0040  ff 00 00 80 8a b6 7c 00  00 08 fa 90 90 f6 c2 80  ÿ....¶|. ..ú..öÂ.
+0040  ff 00 00 20 01 00 00 00  00 02 fa 90 90 f6 c2 80  ÿ.. .... ..ú..öÂ.
 0050  75 02 b2 80 ea 59 7c 00  00 31 c0 8e d8 8e d0 bc  u.².êY|. .1À.Ø.ÐŒ
 0060  00 20 fb a0 40 7c 3c ff  74 02 88 c2 52 be 81 7d  . û| @|<ÿ t..ÂRŸ.}
 0070  e8 36 01 f6 c2 80 74 56  b4 41 bb aa 55 cd 13 5a  è6.öÂ.tV ŽA»ªUÍ.Z
 0080  52 72 4b 81 fb 55 aa 75  45 a0 41 7c 84 c0 78 3e  RrK.ûUªu E| A|.Àx>
 0090  75 05 83 e1 01 74 37 66  8b 4c 10 be 05 7c c6 44  u..á.t7f .L.Ÿ.|ÆD
 00a0  ff 01 66 8b 1e 44 7c c7  04 10 00 c7 44 02 01 00  ÿ.f..D|Ç ...ÇD...
 00b0  66 89 5c 08 c7 44 06 00  70 66 31 c0 89 44 04 66  f.\.ÇD.. pf1À.D.f
 00c0  89 44 0c b4 42 cd 13 72  05 bb 00 70 eb 7d b4 08  .D.ŽBÍ.r .».pë}Ž.
 00d0  cd 13 73 0a f6 c2 80 0f  84 e8 00 e9 8d 00 be 05  Í.s.öÂ.. .è.é..Ÿ.
 00e0  7c c6 44 ff 00 66 31 c0  88 f0 40 66 89 44 04 31  |ÆDÿ.f1À .ð@f.D.1

This is the only difference that appeared in the first MB of my harddisk.
(If you need more context, just ask.)
Comment 4 Torsten Duwe 2006-03-07 18:43:47 UTC
/etc/grub.conf would be nice, as well as /boot/grub/menu.lst.
Comment 5 Christian Boltz 2006-03-07 19:52:41 UTC
Created attachment 71627 [details]
/etc/grub.conf
Comment 6 Christian Boltz 2006-03-07 19:55:18 UTC
Created attachment 71629 [details]
/boot/grub/menu.lst

passwords masked with *** ;-)
Comment 7 Torsten Duwe 2006-03-08 10:58:20 UTC
The grub.conf is fairly bogus. It installs *two* bootloaders -- almost!
Both share stage2 of the current system, which cannot work.

This grub.conf was autogenerated? That code is definitely buggy.

regarding passwords: the kern of MD5 is found to be non-zero, and collisions were produced, but an inverse function is not yet known ;-)
Comment 8 Christian Boltz 2006-03-08 12:59:07 UTC
(In reply to comment #7)
> This grub.conf was autogenerated? That code is definitely buggy.

I never edited it manually IIRC - but the problem may be caused by an earlier SUSE release. On my 10.0 system (cloned for the 10.1 update) the /etc/grub.conf is:

root (hd0,4)
install --stage2=/boot/grub/stage2 /boot/grub/stage1 (hd0) /boot/grub/stage2 
    0x8000 (hd0,4)/boot/grub/menu.lst
install --stage2=/boot/grub/stage2 /boot/grub/stage1 (hd0,4) /boot/grub/stage2 
    0x8000 (hd0,4)/boot/grub/menu.lst
quit

> regarding passwords: the kern of MD5 is found to be non-zero, and collisions
> were produced, but an inverse function is not yet known ;-)

brute-force?
But maybe I'm just too paranoid ;-)
Comment 9 Torsten Duwe 2006-03-10 13:34:57 UTC
I now tried an update twice, both time it worked fine. Seems not to be a general problem -> reduce to major

Handing over to perl-Bootloader to check the grub.conf writing
Comment 10 Joachim Plack 2006-03-14 12:53:06 UTC
hm, looks like new entries are always appended to grub.conf 
Comment 11 Joachim Plack 2006-03-14 17:02:12 UTC
Code looks fine. As we could not reproduce the problem, I will close the bug here.

Our guess is that the original system has been copied from somewhere else (hda5?)
and new entries have been added correctly be yast2 bootloader
Comment 12 Christian Boltz 2006-03-14 21:36:55 UTC
I will upgrade to beta8 tomorrow and would like to test with a "known good" grub.conf.

Can you give me an example, please? How would a valid grub.conf for hda7 look like?
Comment 13 Christian Boltz 2006-03-18 13:39:35 UTC
I changed my grub.conf to the following (taken from a fresh 10.1 installation):

    setup --stage2=/boot/grub/stage2 (hd0,6) (hd0,6)
    quit

and grub worked after updating beta6 to beta8. The broken grub.conf really seems to be the reason of the problem.

BUT:
My other machine running a fresh 10.0 installation (+ YOU updates) has the following broken /etc/grub.conf:

root (hd0,1)
install --stage2=/boot/grub/stage2 /boot/grub/stage1 (hd0,1) /boot/grub/stage2 
    0x8000 (hd0,1)/boot/grub/menu.lst
install --stage2=/boot/grub/stage2 /boot/grub/stage1 (hd0) /boot/grub/stage2 
    0x8000 (hd0,1)/boot/grub/menu.lst
quit

Since I got a broken grub.conf on two completely different 10.0 installations (one was an update with full package selection on my laptop, the other was a fresh minimal installation on an older desktop machine), you should really check (and fix) the grub.conf on update.
Comment 14 Joachim Plack 2006-03-20 09:08:07 UTC
Please note, that the latter grub.conf in comment #13 is perfectly ok.
The only thing it does is writing to the partition boot record _and_ the
master boot record.

The broken one from the attachment in comment #5 orders to write two different
bootloaders to different partitions pointing to two different menu file.

I already checked and reviewed the code that alters the grub.conf together with another collegue. The code is ok an there´s no way to work around pilot errors
like the above, sorry.

Torsten could you please have a second look at my statement about the grub.conf
above, thanks. 
Comment 15 Torsten Duwe 2006-03-21 12:37:44 UTC
Indeed, the grub.conf in comment #13 is perfectly valid. IIRC the rule is that if you choose to ruin your MBR by installing a stage1 into it, a second path to the stage2 is started from the boot/root partition to ease eventual recovery, after a sane generic MBR has been restored.
Comment 16 Christian Boltz 2006-12-30 19:01:55 UTC
Also no more problems in 10.1 final or 10.2 (beta and final) -> VERIFIED