Is there a boot manager that can handle this?

Thomas Schmitt scdbackup at gmx.net
Fri Aug 27 07:45:49 UTC 2010


Hi,

> Primary partitions:
> Windows XP, FreeBSD 9-current, FreeBSD 7-stable
> Extended partition:
> FAT32 data volume, Ubuntu Linux
>   menuentry "FreeBSD 9-Current amd64" {
>     set root=(hd0,3)
>     chainloader +1
>   }

Did you already try :
      set root=(hd0,3,a)
      freebsd /boot/loader

I have a machine with primary partitions
  FreeBSD, FreeBSD, Solaris,
and on extended partition
  Debian Lenny 5.01

Booting is done by the GRUB2 1.98 which came
with Debian.
In Debian's  /boot/grub/grub.cfg   i have
these entries (which all work for me):

------------------------------------------------

menuentry "Debian GNU/Linux, linux 2.6.26-2-amd64, eSATA 1.5Gbps" {
        set root=(hd0,5)
        search --fs-uuid --set 5badec4b-751e-47e1-a3c5-f8555d680cc4
        linux   /boot/vmlinuz-2.6.26-2-amd64 root=UUID=5badec4b-751e-47e1-a3c5-f8555d680cc4 ro
        initrd  /boot/initrd.img-ts
}

menuentry "FreeBSD-8.0 STABLE on Partition 1" {
        set root=(hd0,1,a)
        freebsd /boot/loader
}

menuentry "FreeBSD-8.0 RELEASE on Partition 2" {
        set root=(hd0,2,a)
        freebsd /boot/loader
}

menuentry "Solaris snv 134 on Partition 3" {
        set root=(hd0,3)
        chainloader +1
}

------------------------------------------------

Despite fat warnings
  # DO NOT EDIT THIS FILE
it is well recommended by GRUB2 developers to
do experiments directly in /boot/grub/grub.cfg
and to fiddle with the generator scripts only
later.
This removes one potential level of error.

Just do _not_ run  update-grub  while the
changes are not yet in the scripts.

------------------------------------------------

A general method to boot systems before they
get in reach of GRUB2 is:

- Install the desired system
- Boot rescue system (in my case RIP Linux CD).
- Backup to removable media the "invisible"
  blocks which sit before the start of the
  first partition
    dd if=/dev/sda of=... bs=512 count=31
  (Address /dev/sda depends on the booted
   rescue system. Number 31 was learned from
   the partitioning tool.
   Maybe it suffices to copy just the first
   block of /dev/sda.)

To boot a particular system:
- Boot rescue system
- Copy backuped blocks to disk
    dd if=... of=/dev/sda bs=512 count=31
- Reboot will bring up the originally installed
  boot loader of the desired system. 

I did this with FreeBSD and Solaris before i
found the necessary GRUB2 menu examples.


Have a nice day :)

Thomas



More information about the freebsd-hackers mailing list