Date: Wed, 19 May 2004 09:40:40 -0700 From: George Hartzell <hartzell@kestrel.alerce.com> To: db <db@traceroute.dk> Cc: hackers@freebsd.org Subject: Re: Grub and FreeBSD 4.9 Message-ID: <16555.36360.340284.245230@rosebud.alerce.com> In-Reply-To: <200405191241.50871.db@traceroute.dk> References: <200405191241.50871.db@traceroute.dk>
next in thread | previous in thread | raw e-mail | index | archive | help
db writes: > Hi all > > I'm trying to get grub working on my FreeBSD 4.9 test-box. > [...] Here's a description of how I did it, from the freebsd-current list in late Februrary 2003. It was part of an ongoing thread that you might find useful. g. George Hartzell writes: > Andrew Boothman writes: > > [...] > > OK Guys, I think I'm still a little confused here. > > > > I've just had a few botched installs of GRUB so I think I need a little more > > direction, if you could :) > > > > I've got GRUB on a floppy and it boots fine. If I type : > > rootnoverify (hd0,0) > > makeactive > > chainloader +1 > > boot > > > > I get Win2k booted no problem! > > > > So, following the instructions in the Grub Manual, I typed > > root(fd0) > > setup(hd0) > > > > I remove the floppy from the drive and reboot > > > > On boot I get "Loading GRUB... Please Wait..." but after that I get "GRUB > > Error 17" which according to the manual means that GRUB doesn't know how to > > load the selected partition. Even though when I boot from the floppy it > > starts no problem and I can type commands to get it to boot Win2k.... > > That told it to install GRUB into the beginning of (hd0) [e.g. the > Master Boot record], but configured it to use (fd0) as the root of the > place to find stuff. Since the floppy wasn't in when you booted, it > didn't do anything useful. > > There are some grub things that need to be on the disk that you give > the "root" designation too, e.g. "stage1", etc... > > I don't know how/where to install those files into an NTFS partition, > I assume that GRUB can read NTFS filesystems, and you could tuck them > there, but I don't know for sure. > > Here's what I'd do. > > Get yourself booted into freebsd any way that you can. > > PRINT OUT THE INFORMATION ABOUT YOUR BIOS PARTITION TABLE AND YOUR > FREEBSD DISKLABEL, AND SAVE IT. "fdisk -s" and "disklabel -r > diskname" are your friends!!!! > > Build grub from the ports tree and install it. It installs all of the > juicy bits into some directory in > /usr/local/share/grub/i386-freebsd/..., which doesn't seem to be a > place where grub can find it. I make a directory called /boot/grub > and copy all of them there. > > Start grub (e.g. boot from your grub floppy). Under the 5.0 systems, > GEOM is picky about letting you doink with disks that you have > mounted, so you either need the "let me shoot myself in the foot > sysctl patch > (ftp://ftp.jurai.net/users/winter/patches/geom-foot.patch) or boot > from something else (e.g. floppy, live cdrom, ...) > > Make sure that grub can see it's various interesting bits: > > grub> find /boot/grub/stage1 > > and it should say: > > (hd0,1,a) > > assuming that you have Something Else (e.g. windows) in the first > primary BIOS partition/slice, a set of FreeBSD slices in the second > primary BIOS partition/slice, and the /boot/grub stuff is in the first > ("a") BSD_DISKLABEL/slice. > > If you have the grub bits living in a Linux filesystem in the third > primary BIOS partition, it'd say (hd0,2). If you had them in a Linux > filesystem living in the first extended partition, it'd say (hd0,4), > etc.... > > That's the drive that you want to declare as your root, which just > configures the low level grub code that "setup" installs so that it > knows where to look for it's various useful bits. > > e.g. > > grub> root (hd0,1,a) > > Then you need to install grub onto somewhere where the computer will > trip over it and boot it. > > One possibility is to install it into the master boot record, which > would be: > > grub> setup (hd0) > > Here you boot process would be > > power on->bios->load the MBR which is really GRUB->grub loads its stage1,... > > Or you could leave a "normal" MBR at the beginning of the disk and > install GRUB into the beginning of the FreeBSD BIOS partition > (assuming that FreeBSD is in the second primary parition): > > grub> setup (hd0,1) > > If that's all that you do, thing's won't quite boot. You'll need to > also mark that partition active, so that the stock MBR code will jump > to it. I always do that by getting to this point, booting by hook or > by crook (e.g. a grub boot floppy, a bootable freebsd CD, a bootable > linux CD) and using some utility (e.g. partition magic from windows, > fdisk from windows, fdisk from freebsd, fdisk or cfdisk from linux) to > mark the partition active. I prefer partition magic because I believe > that it has the most robust partition table integrity checks, but > whatever you trust.... > > Now, your boot process will look like: > > power on->bios->"real" MBR which jumps to the active parition -> (next line) > > ... -> GRUB at the beginning of active partition -> GRUB stage1,... > > When grub get's up and running, it'll look for a file called menu.lst > (unless you override the name when you "setup") which contains the > info for the boot menu. Here's mine (notice that there are a bunch of > mutually exclusive things that I've tucked into the 3rd BIOS partition > at various times and I just keep the info around for reference. As > long as I don't actually choose any of the "wrong" selections, there's > no trouble. > > default=0 > timeout=10 > title FreeBSD 4.7 > root (hd0,1,a) > kernel /boot/loader > title FreeBSD 5.0 > root (hd0,2,a) > kernel /boot/loader > title Redhat Linux 8.0 > root (hd0,2) > kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hda3 > initrd /boot/initrd-2.4.18-14.img > title Redhat Linux 8.0 (hires) > root (hd0,2) > kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hda3 vga=791 > initrd /boot/initrd-2.4.18-14.img > title Windows 2000 > rootnoverify (hd0,0) > chainloader +1 > > > I then used "fdisk /mbr" on a Windows 98 boot disk to remove GRUB and get me > > back to a normal Win2k boot. But that doesn't help me get FreeBSD dual > > booting..... > > > > Can you offer any insight into how to make this work? I remember using GRUB > > before and being very happy with it, but it was installed for me by > > RedHat.... > > *REMEMBER* > > run an "fdisk -s" and print out the output > run and "disklabel -r ad0" (or whatever device) and print out the info. > > BEFORE you start playing around!!!! > > g. > > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-current" in the body of the message >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?16555.36360.340284.245230>