เพิ่ม 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อย่างไร?

คำตอบ:


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
}

1
คุณสร้างมันด้วย os-prober หรือคุณทำเอง ยังไฟล์ที่ไม่สั่งที่ไปมีอะไรบ้าง?
r004

sda1 แปลเป็นhd0,1อะไร? เป็นความจริงหรือไม่ที่ grub2 เริ่มต้นจาก 1 ไม่ใช่ 0
r004

2
ไม่สิ่งนี้ / ไม่ได้สร้างขึ้นโดยอัตโนมัติ ฉันได้เขียนไว้ใน/etc/grub.d/40_custom
uzsolt

1
ใช่ (hd0,1) คือ sda1
uzsolt

freebsd อยู่ใน / dev / sda1 แต่ sda1 เป็นพาร์ติชันสไลซ์ (ตามคำศัพท์ bsd); และมันมี/และswapพาร์ทิชัน ฉันจะนำหน้าได้อย่างไร
r004

4

เป้าหมายของฉันคือ: Boot FreeBSD 10 จาก Grub2 โดยการแก้ไข 40_custom ใน /etc/grub.d

การตั้งค่าของฉัน: FreeBSD10 อยู่ใน hdd ที่ห้าของระบบของฉัน (/ dev / sde ภายใต้ Linux ดังนั้น hd4 สำหรับ Grub2 โปรดจำไว้ว่าภายใต้ Grub2 hd เริ่มต้นจาก hd0 สำหรับไดรฟ์และพาร์ติชันตั้งแต่ 1 และไม่เป็นศูนย์) รูทพาร์ติชั่นเป็นพาร์ติชั่นที่สอง (/ dev / sde2) อย่างที่ฉันเคยใช้การแบ่งพาร์ติชัน Guided ของ FreeBSD (ใช้ทั้งดิสก์) ขณะติดตั้ง (ง่ายที่สุด) การเรียกคืนคือ: set root = '(hd4,2)' สำหรับ hdd ตัวที่ห้าและพาร์ติชั่นที่สอง

ข้อมูล: (chainloader +1 ไม่จำเป็นจริง ๆ แล้วต่อไปนี้จะนำฉันไปที่ FreeBSDs Bootloader)

เพื่อสรุปเล็กน้อย: คุณเพียงแค่ต้องปรับรูทชุด = (x, x) ไม่จำเป็นต้องมีอะไรอีกแล้ว หากคุณต้องการบูตเคอร์เนลโดยตรงสิ่งต่าง ๆ จะซับซ้อนกว่ารายการด้านล่างเล็กน้อย

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

ฉันผิดหวังเล็กน้อยจาก os-prober ซึ่งเพิ่งพบว่า 'การแจกจ่ายลินุกซ์ที่ไม่รู้จักใน / dev / sde2'

ps: อย่าลืม 'update-grub' หลังจากนั้นและ Taddaa (หวังว่า) :) ถ้ามีใครประสบความสำเร็จโยนผงชูรสฉันจะมีความสุขที่จะได้ยินจากคุณ!


ดีสำหรับตารางพาร์ทิชัน gpt
r004

คือinsmod part_gptอะไร
noone

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. Tada! รีบูทเดี๋ยวนี้; คุณควรมี FreeBSD ในรายการ OS ของคุณในเมนู GRUB

ในการเข้าใช้งานพาร์ติชัน UFS ของคุณคุณควรทำสิ่งต่อไปนี้

  1. แก้ไขการตั้งค่า kernel ของคุณเพื่อเพิ่มและUFS filesystemUFS 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
    

2

ตามเว็บไซต์นี้ :

  1. Boot 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มีคำอธิบายที่ดีมากสำหรับเดียวกัน มันแนะนำวิธีการปกติเช่นโหลดระบบปฏิบัติการโดยตรงเช่นเดียวกับ chainloading

อย่างไรก็ตามต้องไม่ลืมที่จะออกsudo grub-mkconfig -o /boot/grub/grub.cfgการเปลี่ยนแปลง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.