Dodaj FreeBSD do menu uruchamiania GRUB2

11

Mam Gentoo x64 zainstalowany z Grub2 na moim dysku MBR. Dzisiaj zainstalowałem FreeBSD x64 9.2. Teraz jestem w Gentoo i próbuję dodać FreeBSD do grub2listy menu.

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

Zrobiłem powyższe na Gentoo i nie znalazłem FreeBSD. Zagnieżdżona partycji FreeBSD jest sda1i zawiera freebsd-ufsi freebsd-swapścianki działowe.

Jak mogę dodać FreeBSD grub2?

r004
źródło

Odpowiedzi:

9

Tu jest moje:

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
źródło
1
wygenerowałeś go za pomocą os-probera, czy zrobiłeś to sam? także w jakim pliku weszła ta dyrektywa?
r004
tłumaczy sda1 hd0,1? czy to prawda, że ​​grub2 zaczyna się od 1, a nie od 0?
r004
2
Nie, to / nie jest generowane automatycznie. Napisałem to w /etc/grub.d/40_custom, sprawdź to: wiki.archlinux.org/index.php/…
uzsolt
1
Tak, (hd0,1) to sda1.
uzsolt
freebsd znajduje się w / dev / sda1, ale sda1 jest segmentem podziału (zgodnie z terminologią bsd); i zawiera partycję /i swap. Jak mam to poprzedzać?
r004
4

Moim celem było: Uruchomienie FreeBSD 10 z Grub2 poprzez edycję 40_custom w /etc/grub.d

Moja konfiguracja: FreeBSD10 znajduje się na piątym dysku twardym mojego systemu (/ dev / sde pod Linuksem, więc hd4 dla Grub2. Pamiętaj, że w Grub2 hd zaczyna się od hd0 dla napędów, a partycje od 1 i dalej, a nie zero). Partycja root jest drugą partycją (/ dev / sde2), ponieważ korzystałem z partycjonowania z przewodnikiem FreeBSD (użyj całego dysku) podczas instalacji (najprostsze). Przywołując, to znaczy: ustaw root = '(hd4,2)' dla piątego dysku twardego i drugiej partycji.

info: (Chainloader +1 tak naprawdę nie jest wymagany! Poniższe informacje prowadzą mnie bezpośrednio do Bootloadera FreeBSD).

Podsumowując: wystarczy dostosować zestaw root = (x, x), nic więcej nie jest potrzebne. Jeśli chcesz bezpośrednio uruchomić jądro, sprawy stają się nieco bardziej skomplikowane niż poniższy wpis.

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

Byłem trochę rozczarowany os-prober, który właśnie znalazł „Nieznaną dystrybucję linuksa na / dev / sde2”

ps: nie zapomnij później „update-grub” i Taddaa (mam nadzieję). :) Jeśli komuś się uda, wyślij mi wiadomość, chętnie się odezwiesz!

Emi
źródło
dobre dla tabeli partycji
gpt
Co to jest insmod part_gpt?
nikt
2

Zrób to w tej kolejności:

  1. Edytuj swoje /etc/grub.d/40_customi dodaj dyrektywy uzsolt . Dodaj dyrektywę na końcu pliku. Nie usuwaj niczego, co tam jest .

  2. Upewnij się, że 40_customjest wykonywalny. Jeśli nie to chmod u+x 40_custom.

  3. Teraz zrób to, aby zapisać zmiany grub.cfg.

    grub2-install /dev/sda 
    os-prober 
    grub2-mkconfig -o /boot/grub/grub.cfg
    
  4. Tada! Zrestartuj teraz; powinieneś mieć FreeBSD na liście OS w menu GRUB.

Aby uzyskać dostęp do wycinka partycji UFS, wykonaj następujące czynności:

  1. Edytuj konfigurację jądra, aby dodać UFS filesystemi UFS label.

  2. Więc make && make_modulestwoje jądro.

  3. Zainstaluj oprogramowanie systemu plików UFS .

  4. Zamontuj swój plaster UFS pod Linuksem:

    sudo mkdir /mnt/freebsd && sudo mount -r -t ufs -o ufstype=ufs2 /dev/sda1 /mnt/freebsd
    
r004
źródło
2

Według tej strony :

  1. Uruchom system Linux.
  2. Utwórz /boot/grub2/custom.cfgplik.
  3. Dodaj następujące wiersze do utworzonego pliku:

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

    gdzie hd0,3oznacza, że ​​jest to pierwszy dysk twardy, a FreeBSD znajduje się na trzeciej partycji (ponieważ dyski są ponumerowane od 0, a partycje od 1). Prawdopodobnie będziesz musiał dostosować te liczby. Jednym ze sposobów sprawdzenia, jakie są twoje dyski, jest uruchomienie fdisk -l.

  4. Uruchom grub2-mkconfig -o /boot/grub2/grub.cfg.

Pamiętaj, że twoje polecenia mogą się nieco różnić. grub2-mkconfigmoże być grub-mkconfigi tak dalej (taka była moja sprawa na BunsenLabs Linux).


Pamiętaj, że na tym komputerze korzystałem z FreeBSD z UFS zamiast ZFS. Prezentowane rozwiązanie nie działa w przypadku instalacji opartych na ZFS z tego, co słyszałem.

Mateusz Piotrowski
źródło
1

Arch Linux Wiki ma bardzo ładne wytłumaczenie samo. Prowadzi normalny sposób, tj. Bezpośrednie ładowanie systemu operacyjnego, a także ładowanie łańcucha.

Nie można jednak zapominać o wydaniu sudo grub-mkconfig -o /boot/grub/grub.cfgzmiany.

Xitij
źródło