Hello! I have had weird problems with GRUB several times, and now it seems that I have found the solution. Maybe it's not complete, but worth applying nevertheless.
Once I installed GRUB 0.91 over GRUB 0.90 with grub-install. The system wouldn't boot. I booted from a floppy and bound that /boot/grub/stage2 has "0.90" in it. In other words, the old stage2 was overwritten by the script, but the grub shell resurrected the old file! Then I removed all files except device.map and menu.lst from /boot/grub/ and ran grub-install. It reported that it cannot find stage1. However, the file was present when the script finished. The following procedure reproduces the problem reliably: ============================================= # mv /boot/grub /boot/grub.save # cp -a /boot/grub.save /boot/grub # rm -f /boot/grub/stage* # grub-install '(hd0)' GRUB version 0.91 (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. ] grub> root (hd0,5) Filesystem type is ext2fs, partition type 0x83 grub> setup --stage2=/boot/grub/stage2 --prefix=/boot/grub (hd0) Checking if "/boot/grub/stage1" exists... no Error 15: File not found grub> quit ============================================= However, adding one more sync() to grub/main.c fixes the problem. Here's the patch. ============================================= --- ChangeLog +++ ChangeLog @@ -1 +1,6 @@ +2002-02-08 Pavel Roskin <[EMAIL PROTECTED]> + + * grub/main.c (main): Call sync() twice - it's required on ext3 + with Linux-2.4.18-pre9. + 2002-02-08 Yoshinori K. Okuji <[EMAIL PROTECTED]> --- grub/main.c +++ grub/main.c @@ -135,6 +135,7 @@ main (int argc, char **argv) actually written to disks. This is very important because GRUB does not use ordinary stdio interface but raw devices. */ sync (); + sync (); program_name = argv[0]; default_boot_drive = boot_drive; ============================================= As the ChangeLog says, I'm using the latest and greatest Linux-2.4.18-pre9, but it's the problem most likely exists for other kernels and maybe even filesystems. The best solution would be perhaps adding --stage1 option for the "setup" command and avoiding any direct access to files, even read-only access. -- Regards, Pavel Roskin _______________________________________________ Bug-grub mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-grub