Добавить FreeBSD в загрузочное меню GRUB2

11

У меня Gentoo x64 установлен с Grub2 на моем диске MBR. Сегодня я установил FreeBSD x64 9.2. Сейчас я в Gentoo и пытаюсь добавить FreeBSD в grub2список меню.

grub2-install /dev/sda
os-prober
grub2-mkconfig -o /boot/grub2/grub.cfg

Я сделал вышеупомянутое на Gentoo, и он не нашел FreeBSD. Вложенный раздел FreeBSD включен sda1и содержит freebsd-ufsи freebsd-swapразделы.

Как я могу добавить FreeBSD grub2?

R004
источник

Ответы:

9

Вот мой:

menuentry "FreeBSD" --class freebsd --class bsd --class os {
 insmod ufs2
 insmod bsd
 set root=(hd0,1)
 kfreebsd /boot/kernel/kernel
 kfreebsd_loadenv /boot/device.hints
 set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0s1a
 set kFreeBSD.vfs.root.mountfrom.options=rw
 set kFreeBSD.hw.psm.synaptics_support=1
}
uzsolt
источник
1
Вы сгенерировали это с помощью os-prober или сделали это сами. также в каком файле была эта директива?
r004
sda1 переводит на hd0,1? правда ли, что grub2 начинается с 1, а не с 0?
r004
2
Нет, это / не генерируется автоматически. Я написал это в /etc/grub.d/40_custom, проверьте это: wiki.archlinux.org/index.php/…
uzsolt
1
Да, (hd0,1) - это sda1.
uzsolt
freebsd находится в / dev / sda1, но sda1 является секцией раздела (согласно терминологии bsd); и он содержит /и swapраздел. Как мне тогда предшествовать?
r004
4

Моей целью было: загрузить FreeBSD 10 из Grub2, отредактировав 40_custom в /etc/grub.d

Моя установка: FreeBSD10 находится на пятом жестком диске моей системы (/ dev / sde в Linux, поэтому hd4 для Grub2. Помните, что в Grub2 hd начинается с hd0 для накопителей, а разделы с 1 и далее, а не с нуля). Корневой раздел является вторым (/ dev / sde2), так как при установке я использовал разделы с разделами FreeBSD (использовать весь диск) (самый простой). Напомним, что: set root = '(hd4,2)' для пятого жесткого диска и второго раздела.

info: (chainloader +1 на самом деле не требуется! Следующее приводит меня непосредственно к загрузчику FreeBSDs).

Подводя итог, немного: вам просто нужно настроить set root = (x, x), больше ничего не нужно. Если вы хотите загрузить ядро ​​напрямую, все становится немного сложнее, чем приведенная ниже запись.

menuentry "FreeBSD 10.0" {
    insmod part_gpt
    set root='(hd4,2)'
    kfreebsd /boot/loader
}

Я был немного разочарован os-prober, который только что нашел «Неизвестный дистрибутив Linux на / dev / sde2»

ps: не забывайте 'update-grub' и Taddaa (надеюсь). :) Если кому-то удастся, напишите мне сообщение, я был бы рад услышать от вас!

Emi
источник
хорошо для таблицы разделов gpt
r004
Что такое insmod part_gpt?
никто
2

Сделайте это в следующем порядке:

  1. Отредактируйте /etc/grub.d/40_customи добавьте директивы uzsolt . Добавьте директиву в конец файла. Не удаляйте ничего, что там есть .

  2. Убедитесь, что 40_customэто исполняемый файл. Если нет то chmod u+x 40_custom.

  3. Теперь сделайте это, чтобы записать изменения в grub.cfg.

    grub2-install /dev/sda 
    os-prober 
    grub2-mkconfig -o /boot/grub/grub.cfg
    
  4. Тада! Перезагрузить сейчас; FreeBSD должна быть в вашем списке ОС в меню GRUB.

Чтобы получить доступ к вашему разделу UFS, вы должны сделать следующее:

  1. Отредактируйте конфигурацию вашего ядра, чтобы добавить UFS filesystemи UFS label.

  2. Тогда make && make_modulesваше ядро.

  3. Установите программное обеспечение файловой системы UFS .

  4. Смонтируйте ваш UFS Slice под Linux:

    sudo mkdir /mnt/freebsd && sudo mount -r -t ufs -o ufstype=ufs2 /dev/sda1 /mnt/freebsd
    
r004
источник
2

По данным этого сайта :

  1. Загрузите Linux.
  2. Создать /boot/grub2/custom.cfgфайл.
  3. Добавьте эти строки в созданный файл:

    menuentry "FreeBSD" {
    set root='(hd0,3)'
    kfreebsd /boot/loader
    }
    

    где hd0,3означает, что это первый жесткий диск, а FreeBSD находится на своем третьем разделе (поскольку диски нумеруются от 0, а разделы нумеруются от 1). Возможно, вам придется скорректировать эти цифры. Один из способов узнать, какие у вас диски, - запустить fdisk -l.

  4. Беги grub2-mkconfig -o /boot/grub2/grub.cfg.

Помните, что ваши команды могут немного отличаться. grub2-mkconfigможет быть grub-mkconfigи так далее (это был мой случай на BunsenLabs Linux).


Имейте в виду, что я использовал FreeBSD с UFS вместо ZFS на этой машине. Представленное решение не работает для установок на основе ZFS из того, что я слышал.

Матеуш Пиотровский
источник
1

Вики Arch Linux имеет очень хорошее объяснение для того же. Он управляет обычным способом, то есть прямой загрузкой ОС, а также загрузкой по цепочке.

Однако нельзя забывать выдавать, sudo grub-mkconfig -o /boot/grub/grub.cfgчтобы совершать изменения.

xitij
источник