Thêm menu khởi động FreeBSD vào GRUB2


11

Tôi đã cài đặt Gentoo x64 với Grub2 trên ổ MBR của mình. Hôm nay tôi đã cài đặt FreeBSD x64 9.2. Bây giờ tôi đang ở Gentoo và cố gắng thêm FreeBSD vào grub2danh sách menu.

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

Tôi đã làm như trên trên Gentoo và nó không tìm thấy FreeBSD. Phân vùng lồng nhau FreeBSD được bật sda1và chứa freebsd-ufsfreebsd-swapphân vùng.

Làm thế nào tôi có thể thêm FreeBSD vào grub2?

Câu trả lời:


9

Đây là của tôi:

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
}

1
bạn đã tạo ra nó với os-prober hay bạn đã tự làm nó. cũng có tập tin đã chỉ thị rằng đi vào?
r004

sda1 có dịch sang hd0,1không? Có đúng là grub2 bắt đầu từ 1 không 0?
r004

2
Không, cái này / không được tạo tự động. Tôi đã viết nó vào /etc/grub.d/40_custom, kiểm tra này: wiki.archlinux.org/index.php/...
uzsolt

1
Có, (hd0,1) là sda1.
uzsolt

freebsd nằm trong / dev / sda1 nhưng sda1 là một lát phân vùng (theo thuật ngữ bsd); và nó chứa một /swapphân vùng. Làm thế nào tôi nên đi trước?
r004

4

Mục tiêu của tôi là: Khởi động FreeBSD 10 từ Grub2 bằng cách chỉnh sửa 40_custom trong /etc/grub.d

Cài đặt của tôi: FreeBSD10 nằm trong hdd thứ năm trong hệ thống của tôi (/ dev / sde trong Linux, vì vậy hd4 cho Grub2. Hãy nhớ rằng trong Grub2 hd bắt đầu từ hd0 cho các ổ đĩa và phân vùng từ 1 trở đi, không phải không). Phân vùng gốc là phân vùng thứ hai (/ dev / sde2) vì tôi đã sử dụng phân vùng có Hướng dẫn của FreeBSD (sử dụng toàn bộ đĩa) trong khi cài đặt (đơn giản nhất). Nhắc lại, đó là: set root = '(hd4,2)' cho hdd thứ năm và phân vùng thứ 2.

thông tin: (chainloader +1 thực sự không bắt buộc! Phần sau đây đưa tôi trực tiếp đến FreeloadD Bootloader).

Để tóm tắt một chút: bạn chỉ cần điều chỉnh bộ gốc = (x, x), không cần thêm gì nữa. Nếu bạn muốn khởi động kernel trực tiếp, mọi thứ sẽ phức tạp hơn một chút so với mục bên dưới.

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

Tôi đã hơi thất vọng bởi os-prober khi chỉ tìm thấy 'Phân phối linux không xác định trên / dev / sde2'

ps: đừng quên 'update-grub' sau đó và Taddaa (hy vọng). :) Nếu ai đó thành công, hãy gửi cho tôi một tin nhắn, tôi sẽ rất vui khi được nghe từ bạn!


tốt cho bảng phân vùng gpt
r004

insmod part_gpt
noone

2

Làm theo thứ tự này:

  1. Chỉnh sửa /etc/grub.d/40_customthêm chỉ thị của uzsolt . Thêm chỉ thị vào cuối tập tin. Đừng xóa bất cứ thứ gì có trong đó .

  2. Hãy chắc chắn 40_customlà có thể thực hiện được. Nếu không thì chmod u+x 40_custom.

  3. Bây giờ làm điều này để viết các thay đổi grub.cfg.

    grub2-install /dev/sda 
    os-prober 
    grub2-mkconfig -o /boot/grub/grub.cfg
    
  4. Tada! Khởi động lại ngay bây giờ; bạn nên có FreeBSD trong danh sách HĐH của mình trong menu GRUB.

Để có quyền truy cập vào lát phân vùng UFS của bạn, bạn nên làm như sau:

  1. Chỉnh sửa cấu hình kernel của bạn để thêm UFS filesystemUFS label.

  2. Sau đó, make && make_moduleshạt nhân của bạn.

  3. Cài đặt phần mềm hệ thống tập tin UFS .

  4. Gắn Slice UFS của bạn trong Linux của bạn:

    sudo mkdir /mnt/freebsd && sudo mount -r -t ufs -o ufstype=ufs2 /dev/sda1 /mnt/freebsd
    

2

Theo trang web này :

  1. Khởi động Linux.
  2. Tạo một /boot/grub2/custom.cfgtập tin.
  3. Thêm các dòng này vào tập tin đã tạo:

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

    trong đó hd0,3có nghĩa đây là ổ cứng đầu tiên và FreeBSD nằm trên phân vùng thứ ba của nó (vì các đĩa được đánh số từ 0 và các phân vùng được đánh số từ 1). Có lẽ bạn sẽ phải điều chỉnh những con số đó. Một cách để tìm ra những gì đĩa của bạn là chạy fdisk -l.

  4. Chạy đi grub2-mkconfig -o /boot/grub2/grub.cfg.

Hãy nhớ rằng các lệnh của bạn có thể hơi khác nhau. grub2-mkconfigcó thể là grub-mkconfignhư vậy (đây là trường hợp của tôi trên BunsenLabs Linux).


Lưu ý rằng tôi đã sử dụng FreeBSD với UFS thay vì ZFS trên máy này. Giải pháp được trình bày không hoạt động đối với các cài đặt dựa trên ZFS từ những gì tôi đã nghe.


1

Các wiki Arch Linux có một lời giải thích rất tốt đẹp cho nhau. Nó hướng dẫn cách thông thường tức là tải hệ điều hành trực tiếp cũng như tải chuỗi.

Tuy nhiên, người ta không được quên phát hành sudo grub-mkconfig -o /boot/grub/grub.cfgđể cam kết thay đổi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.