У меня есть компьютер с несколькими операционными системами, установленными на разных разделах:
- FreeBSD
- ПК-BSD
- Солярис
- Расширенный раздел
- / -раздел для Linux-Mint
- Обмен на Linux-Mint
- /home для Linux-Mint
- / -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.