FreeBSD pod GRUB'a 2 - jak to zrobić?

Witajcie!

Mam następujący problem:

Posiadam na dysku (SATA) zainstalowane 2 systemy operacyjne: Debian Linux (Wheezy) i Windows XP.

Niedawno wpadłem na pomysł aby zainstalować FreeBSD. Postanowiłem podpiąć stary dysk ATA i odłączyć SATA aby się nie patyczkować z nadpisywaniem MBR’a. System zainstalował się gładko, było trochę zabawy z instalacją i… Postanowiłem sparować diabełka (FreeBSD) z GRUB 2.

W tym celu podpiąłem dysk SATA i ponownie ustawić w BIOSie bootowanie SATA jako pierwszego (po zabawach z przepinaniem dysków domyślnie jako pierwszy bootuje ATA nawet ustawionego jako slave) i… załadowałem pingwinka.

Polecenie

update-grub

nie przyniosło pożądanych rezultatów. Z windowsem działało… Tylko że przy 8’ce były ciągle resety przy próbie bootowania z GRUB’a ;/

Jak zatem podpiąć diabełka do GRUB 2?

Z góry dzięki za pomoc! :slight_smile:

FreeBSD dodajesz do Gruba tak samo jak Windowsa, ewentualnie możesz zainstalować Gruba z portów FreeBSD. Spróbuj użyć najpierw polecenia,

su -c os-prober

jeśli nie wykryje FreeBSD, musisz go dodać ręcznie. Tutaj masz szczegółowo opisane co i jak https://help.ubuntu.com/community/Grub2%20Other%20Os

Dzięki za odpowiedź!

Nim odpisałeś, pokombinowałem i udało mi się zbootować spod gruba BSD, ale tylko “w locie” - tj przy zmodyfikowaniu wpisu z poziomu gruba. Po zmodyfikowaniu pliku /etc/grub.d/40_custom, system nadal nie był bootowany a grub przestał w ogóle widzieć partycje z tego dysku.

W ogóle to pofiksowało mi menu z gruba - wywaliło tło i ustawiło jakiś dziwny układ kolorów. Co zabawne, GRUB po update wyświetla czasami zaktualizowaną listę dopiero po którymś restarcie… Nigdy tak dziwnie nie reagował.

Widoczne partycje przez gruba wyświetlałem za pomocą polecenia ls. Z dysku hd0 (ten na którym jest grub) widział wszystko, a w przypadku dysku hd1 wyświetlał tylko jego identyfikator.

Wyglądało to mniej więcej tak:

grub>ls

hd(0) hd(0,msdos1) hd(0,msdos2) hd(0,msdos3) hd(1)

Przy próbie załadowania partycji z hd1 pojawiał sie komunikat że nie ma takiej partycji. Mój plik 40_custom wygląda tak:

menuentry "FreeBSD 8.0 direct" {

        insmod ufs2

        set root='(hd1,gpt2)'

        search --no-floppy --fs-uuid --set 4c0029f407b3cd1d

        kfreebsd /boot/kernel/kernel

        kfreebsd_loadenv /boot/device.hints

        kfreebsd_module /boot/splash.bmp type=splash_image_data

        set kFreeBSD.vfs.root.mountfrom=ufs:ada1p2

}

Może coś popaćkałem?

Nie chcę instalować na tamtym dysku gruba ponieważ jest to taki dysk trochę do zabawy - czyli dziś jest, jutro go może nie być i często zmieniam na nim systemy. Win 8 też fiksował ale np. Windows 7 nie… Był czas że tylko ten dysk miałem podpięty gdy testowałem 8 i też chodziło.

Chciałbym zwrócić uwagę na to że nie mam płyty z EFI więc teoretycznie powinno iść jak po masełku. Z tego co czytałem na forach to z EFI bywają kłopoty… ;/

Pisząc, że FreeBSD należy dodać tak, jak Windowsa, chodziło mi o chainloader. Podana przeze mnie dokumentacja była przykładem konfiguracji. Spróbuj zrobić to w taki sposób. Dodaj do pliku 40_custom taki wpis.

menuentry “FreeBSD″ {

set root=(hd0,1)

chainloader +1

}

Jako set root podajesz partycję, na której masz katalog /boot, jeśli jest inna to zmień tę wartość na odpowiednią dla twojej sytuacji. Następnie wykonujesz polecenie.

su -c update-grub

U mnie ten sposób działał, gdy korzystałem z FreeBSD. Po wybraniu z z listy FreeBSD w Grubie, powinien uruchomić się program rozruchowy FreeBSD.

Zadziałało! Dzięki!

Spróbuję jeszcze zrobić myk żeby łapało mi konkretną partycję bo po zbootowaniu BSD za każdym razem muszę podawać identyfikator partycji.

Wydaje mi się że wystarczyłoby dopisać

set kFreeBSD.vfs.root.mountfrom=ufs:ada1p2