Как выполнить двойную загрузку FreeBSD и PC-BSD с GRUB2 в MBR?

Как выполнить двойную загрузку FreeBSD и PC-BSD с GRUB2 в MBR?

У меня есть компьютер с несколькими операционными системами, установленными на разных разделах:

  1. FreeBSD
  2. ПК-BSD
  3. Солярис
  4. Расширенный раздел
  5. / -раздел для Linux-Mint
  6. Обмен на Linux-Mint
  7. /home для Linux-Mint
  8. / -partition (и все остальное) для Linux CentOS

Моя основная ОС — Linux-Mint, производная от Ubuntu.

У меня GRUB2 установлен в MBR, и он (GRUB) использует данные из установки Linux-Mint (/boot/grub и т. д.).

FreeBSD и PC-BSD имеют собственные загрузчики 2-го этапа в своих разделах. Solaris имеет собственную установку GRUB в своем разделе (которая действует как загрузчик 2-го этапа, позволяя мне выбирать между различными ядрами Solaris). Linux-Mint и CentOS загружаются с помощью GRUB в MBR.

+++

Моя проблема в FreeBSD и PC-BSD -- они просто не хотят работать друг с другом! Несмотря на то, что я указал разные корневые разделы и т. д. в записях GRUB для двух установок BSD, загружается одна и та же (FreeBSD или PC-BSD), независимо от того, выбрал ли я FreeBSD или PC-BSD в меню GRUB.

Загрузка *BSD, по-видимому, представляет собой трехэтапный процесс: загрузчик MBR (первый этап) загружает второй этап в разделы BSD, который, наконец, загружает само ядро ​​(третий этап).

Наконец, снизойдя до RTFM по поводу загрузки в *BSD, я обнаружил следующую интересную информацию о загрузчике BSD 2-го этапа (который был установлен в обоих моих разделах BSD):

  • Если в таблице разделов ни один раздел BSD не отмечен как активный (загрузочный), то загрузчик начнет 3-й этап загрузки ядра BSD, расположенного в1-й раздел BSDна диске -- неважно, с какого BSD-раздела загружался 2-й этап. В моем случае это будетвсегдазагрузите FreeBSD (так как он первый).
  • Если же, с другой стороны, раздел BSD помечен как активный (загрузочный), то это будет ядро ​​BSD, которое будет загружено на 3-й стадии. В моем случае я либо всегда буду использовать FreeBSD, либо всегда буду использовать PC-BSD.

Должен же быть какой-то способ обойти это?! Возможно, как-то пропустить 2-й этап и позволить GRUB напрямую загрузить ядро ​​3-го этапа — и тогдадругойядра в зависимости от моего выбора... Или, может быть, какие-то особые аргументы или конфигурации для 2-го этапа -- или, может быть, альтернативный загрузчик 2-го этапа? Кто-нибудь здесь сталкивался с подобной проблемой и решил ее?

PS: Установка GRUB в MBR перезаписала загрузчик 1-й стадии, установленный FreeBSD (и PC-BSD). Однако я сомневаюсь, что использование 1-й стадии FreeBSD решило бы мою проблему, поскольку проблема (AFAIK) в загрузчике 2-й стадии.

решение1

Во-первых, я бы не использовал MBR, потому что у вас там 4 ОС, и это не поможет. Вам нужно сделать раздел /boot основным, а не расширенным. Поэтому вы либо выкидываете установку Solaris, либо Linux. Загрузка FreeBSD (или PC-BSD... как угодно, разницы нет) с GRUB2 проста. Вы просто определяете свой "set root=...", а затем говорите "kfreebsd /boot/loader" и все. Для вашего типа я бы использовал таблицу разделов GUID/GPT, в ней вы также можете разделить все разделы, тогда вам не нужны дополнительные слайсы BSD.

Связанный контент