Correction:
In case 2) one is able to boot into Mandriva. ( "chainloader" works but "configfile" does not.)
Are you using Ubuntu 7.10 or lower ? (The Ubuntu 8.04 grub can read Mandriva but the others can not)
Correction:
In case 2) one is able to boot into Mandriva. ( "chainloader" works but "configfile" does not.)
Are you using Ubuntu 7.10 or lower ? (The Ubuntu 8.04 grub can read Mandriva but the others can not)
find /boot/grub/stage1 command will start at / and search every directory for the file called "stage1." Another way, although not very clever, to figure out what distro is controlling your boot process would be to modify each of your menu.lst files and put a string beside the kernel line--such as vga=xxx, or somethign, doesn't really matter--then when you boot and are confronted with grub, you can hit 'e' to modify the arguments, and then you will be able to see the little string that you placed and will be able to identify your partition as such.
hope it works out.
I started originally with 7.10 and upgraded to 8.04 successfully. My installed grub package is 0.97-29ubuntu21. You are right on the mark in that I cannot load Mandriva with "configfile" notation, but I can with "chainloader" since I have Mandriva's grub installed into its partition boot sector and not the MBR.
When I search for menu.lst and stage2 in grub's CLI while I'm in either of my two linux distros (accessing the grub CLI with "sudo grub"), it still returns both distros. Yet doing the same thing in Grub's CLI on boot-up still returns just my Ubuntu partition only (hd0,1).
So do I need to upgrade/reconfigure Grub or something?
Try reinstalling grub:
at any grub prompt:
Code:root (hd0,1) setup (hd0) quit
I thought this only rewrote the MBR to point to (hd0,1) and does not actually reinstall grub. I tried it anyway and it didn't change anything, so I did a full reinstall of Grub (and of course I first backed up my menu.lst); even though in Synaptic I set the "mark with complete removal" for Grub and then uninstalled Grub, still all the files were left in the /boot/grub/ folder. So I manually deleted them all, and then reinstalled Grub. But even after reinstalling, no files were created in /boot/grub! So I did a "sudo grub-install /dev/sda" and that created all my /boot/grub files except menu.lst, which was fine since I copied back the old one anyway.
Bottom line is that after the complete reinstall everything works as expected; doing "find /boot/grub/stage1" at boot-up now returns both (hd0,1) and (hd0,3) or both linux partitions. And even better, I can now load Mandriva using the "configfile" notation.
Just for future reference, is there a better way to reinstall Grub instead of manually deleting the /boot/grub files after uninstalling Grub and then run the grub-install command after reinstalling Grub?
Thanks for all the help, meierfra.
This is probably all you had to do and that's what I should have suggested right away. The whole problem comes from the "stage2" file. "grub-install" reinstalls all stage files."sudo grub-install /dev/sda"
To my defense: "setup (hd0)" does more than just changing a few numbers. It does reinstall the stage1 and stage1.5 files to the first few sectors of the MBR. Also I thought that upgrading to Hardy would have automatically upgraded all the stage files in /boot/grub. It doesn't!
Thanks for posting your solution. Now it all makes sense to me.
Last edited by meierfra.; June 24th, 2008 at 03:45 AM.
What is meant by "which linux controls the MBR?" I'm confused by this terminology. I thought there were many MBRs -- one for each partition and one at the beginning of each hard disk. Are we really asking, "Which partition does the MBR at the beginning of the hard disk point to?"
Moreover, is the dd command supposed to tell you the partition in which /boot/grub/menu.lst resides?
If so, my system seems to be a counterexample.
When I run
I getCode:% sudo dd if=/dev/sda bs=1 skip=1049 count=2 | hexdump
But my linux partition is (hd0,2):Code:0000000 0000 0000002
I thought the dd command should returnCode:% sudo fdisk -l Disk /dev/sda: 320.0 GB, 320072933376 bytes 255 heads, 63 sectors/track, 38913 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x48000000 Device Boot Start End Blocks Id System /dev/sda1 1 7 56196 de Dell Utility /dev/sda2 8 660 5245222+ b W95 FAT32 /dev/sda3 * 661 38536 304238970 83 Linux /dev/sda4 38537 38913 3028252+ 5 Extended /dev/sda5 38537 38913 3028221 82 Linux swap / Solaris
Am I misunderstanding what the dd command is telling me?Code:00000000 ff02 00000002
Thanks very much for your help.
The whole hard drive has an MBR. A primary partition does not have an MBR. The 63 sectors before a logical partition are called the MBR of that partition. But usually if one talks about an MBR, ones means the MBR of the hard drive.I thought there were many MBRs -- one for each partition and one at the beginning of each hard disk.
Could be. But are you sure that Grub is installed to the MBR of the hard drive? Maybe Grub is installed to the boot sector of /dev/sda3.If so, my system seems to be a counterexample.
What is the output of
andCode:sudo dd if=/dev/sda bs=512 count=1| hexdump
Code:sudo dd if=/dev/sda3 bs=512 count=1 | hexdump
Code:% sudo dd if=/dev/sda bs=512 count=1| hexdump 1+0 records in 1+0 records out 512 bytes (512 B) copied, 2.9634e-05 seconds, 17.3 MB/s 0000000 c033 d08e 00bc 8e7c 8ec0 bed8 7c00 00bf 0000010 b906 0200 f3fc 50a4 1c68 cb06 b9fb 0004 0000020 bebd 8007 007e 7c00 0f0b 1085 8301 10c5 0000030 f1e2 18cd 5688 5500 46c6 0511 46c6 0010 0000040 41b4 aabb cd55 5d13 0f72 fb81 aa55 0975 0000050 c1f7 0001 0374 46fe 6610 8060 107e 7400 0000060 6626 0068 0000 6600 76ff 6808 0000 0068 0000070 687c 0001 1068 b400 8a42 0056 f48b 13cd 0000080 839f 10c4 eb9e b814 0201 00bb 8a7c 0056 0000090 768a 8a01 024e 6e8a cd03 6613 7361 fe1e 00000a0 114e 850f 000c 7e80 8000 840f 008a 80b2 00000b0 82eb 3255 8ae4 0056 13cd eb5d 819c fe3e 00000c0 557d 75aa ff6e 0076 8ae8 0f00 1585 b000 00000d0 e6d1 e864 007f dfb0 60e6 78e8 b000 e6ff 00000e0 e864 0071 00b8 cdbb 661a c023 3b75 8166 00000f0 54fb 5043 7541 8132 02f9 7201 662c 0768 0000100 00bb 6600 0068 0002 6600 0868 0000 6600 0000110 6653 6653 6655 0068 0000 6600 0068 007c 0000120 6600 6861 0000 cd07 5a1a f632 00ea 007c 0000130 cd00 a018 07b7 08eb b6a0 eb07 a003 07b5 0000140 e432 0005 8b07 acf0 003c fc74 07bb b400 0000150 cd0e eb10 2bf2 e4c9 eb64 2400 e002 24f8 0000160 c302 6e49 6176 696c 2064 6170 7472 7469 0000170 6f69 206e 6174 6c62 0065 7245 6f72 2072 0000180 6f6c 6461 6e69 2067 706f 7265 7461 6e69 0000190 2067 7973 7473 6d65 4d00 7369 6973 676e 00001a0 6f20 6570 6172 6974 676e 7320 7379 6574 00001b0 006d 0000 6200 997a 0000 4800 0000 0100 00001c0 0001 fede 063f 003f 0000 b708 0001 0000 00001d0 0701 fe0b 93bf b747 0001 124d 00a0 0080 00001e0 9481 fe83 ffff c994 00a1 a2f4 2444 fe00 00001f0 ffff fe05 ffff 6c88 24e6 6a39 005c aa55 0000200 % sudo dd if=/dev/sda3 bs=512 count=1 | hexdump 1+0 records in 1+0 records out 0000000 48eb 0090 0000 0000 0000 0000 0000 0000 0000010 0000 0000 0000 0000 0000 0000 0000 0000 * 0000030 0000 0000 0000 0000 0000 0000 0000 0203 0000040 00ff 8000 4314 08e6 0800 90fa f690 80c2 0000050 0275 80b2 59ea 007c 3100 8ec0 8ed8 bcd0 0000060 2000 a0fb 7c40 ff3c 0274 c288 be52 7d7f 0000070 34e8 f601 80c2 5474 41b4 aabb cd55 5a13 0000080 7252 8149 55fb 75aa a043 7c41 c084 0575 0000090 e183 7401 6637 4c8b be10 7c05 44c6 01ff 00000a0 8b66 441e c77c 1004 c700 0244 0001 8966 00000b0 085c 44c7 0006 6670 c031 4489 6604 4489 00000c0 b40c cd42 7213 bb05 7000 7deb 08b4 13cd 00000d0 0a73 c2f6 0f80 ea84 e900 008d 05be c67c 00000e0 ff44 6600 c031 f088 6640 4489 3104 88d2 00000f0 c1ca 02e2 e888 f488 8940 0844 c031 d088 0000100 e8c0 6602 0489 a166 7c44 3166 66d2 34f7 0000110 5488 660a d231 f766 0474 5488 890b 0c44 0000120 443b 7d08 8a3c 0d54 e2c0 8a06 0a4c c1fe 0000130 d108 6c8a 5a0c 748a bb0b 7000 c38e db31 0000140 01b8 cd02 7213 8c2a 8ec3 4806 607c b91e 0000150 0100 db8e f631 ff31 f3fc 1fa5 ff61 4226 0000160 be7c 7d85 40e8 eb00 be0e 7d8a 38e8 eb00 0000170 be06 7d94 30e8 be00 7d99 2ae8 eb00 47fe 0000180 5552 2042 4700 6f65 006d 6148 6472 4420 0000190 7369 006b 6552 6461 2000 7245 6f72 0072 00001a0 01bb b400 cd0e ac10 003c f475 00c3 0000 00001b0 0000 0000 0000 0000 0000 0000 0000 0000 * 00001f0 0000 0000 0000 0000 0000 0000 0000 aa55 0000200 512 bytes (512 B) copied, 2.4445e-05 seconds, 20.9 MB/s
unutbu: You have Grub installed on /dev/sda3 and not on /dev/sda. I didn't spend enough time to figure out what boot loader is installed in the MBR. Do you know? Is it the original Windows MBR?
If you run
you will see some human readable lines.Code:sudo dd if=/dev/sda bs=512 count=1| hexdump -c sudo dd if=/dev/sda3 bs=512 count=1| hexdump -c
For example the /dev/sda3 output on lines 17-19 will say "Grub Geometry Hard Disk Read Error".
My code to identify the controlling linux does not work if grub is installed on a partition. But if grub is not installed on the MBR, then usually the partition with the boot flag is in charge of the booting. So you don't need any tricky code.
Bookmarks