Mein Festplattenpartitionsschema sieht aus der Sicht von Grub wie folgt aus:
hd0,gpt1: EFI system
hd0,gpt2: Linux Swap
hd0,gpt3: Linux Filesystem
hd0,gpt4: FreeBSD UFS`
Der Installationsprozess von FreeBSD 11.0-RELEASE verlief problemlos. Ich habe auch versucht, das System zu chrooten und zu aktualisieren, nur für den Fall. Dann habe ich Arch Linux gebootet und bearbeitet und /etc/grub/40_custom
verschiedene Konfigurationen ausprobiert (sieheFreeBSD-Menüeintrag in GRUB auf wiki.archlinux.org), und rannte grub-mkconfig -o /boot/grub/grub.cfg
.
(Hinweis: Ich habe den Parameter „mountfrom“ bearbeitet, indem ich die richtige Entwicklungsdatei für das Root-FS angegeben habe, in meinem Fall ada0p4, und den Eintrag „bsd1“ weggelassen und nur (hd0,gpt4) festgelegt habe, da die Partition sonst nicht gefunden werden konnte.)
Beim Laden kfreebsd /boot/loader
und Booten wird ein schwarzer Bildschirm angezeigt.
Wenn ich lade
kfreebsd /boot/kernel/kernel
kfreebsd_loadenv /boot/device.hints
set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0p4
set kFreeBSD.vfs.root.mountfrom.options=rw
und beim Booten bekomme ich Folgendes:
Mein Laptop ist ein Thinkpad X220 (aktuelles Standard-BIOS). Grub-Version: 2.02.beta3-4
.
Irgendwelche Ideen, was hier falsch ist? Bitte hinterlassen Sie einen Kommentar, wenn Sie weitere Informationen benötigen.
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_gpt
insmod ext2
set root='hd0,gpt3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 ff637c2e-1e42-4533-9a12-6ac2f6d43c9b
else
search --no-floppy --fs-uuid --set=root ff637c2e-1e42-4533-9a12-6ac2f6d43c9b
fi
font="/usr/share/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=1024x768
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=en_US
insmod gettext
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-ff637c2e-1e42-4533-9a12-6ac2f6d43c9b' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 BE35-0EC9
else
search --no-floppy --fs-uuid --set=root BE35-0EC9
fi
echo 'Loading Linux linux ...'
linux /vmlinuz-linux root=UUID=ff637c2e-1e42-4533-9a12-6ac2f6d43c9b rw
echo 'Loading initial ramdisk ...'
initrd /intel-ucode.img /initramfs-linux.img
}
submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-ff637c2e-1e42-4533-9a12-6ac2f6d43c9b' {
menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-ff637c2e-1e42-4533-9a12-6ac2f6d43c9b' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 BE35-0EC9
else
search --no-floppy --fs-uuid --set=root BE35-0EC9
fi
echo 'Loading Linux linux ...'
linux /vmlinuz-linux root=UUID=ff637c2e-1e42-4533-9a12-6ac2f6d43c9b rw
echo 'Loading initial ramdisk ...'
initrd /intel-ucode.img /initramfs-linux.img
}
menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-ff637c2e-1e42-4533-9a12-6ac2f6d43c9b' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 BE35-0EC9
else
search --no-floppy --fs-uuid --set=root BE35-0EC9
fi
echo 'Loading Linux linux ...'
linux /vmlinuz-linux root=UUID=ff637c2e-1e42-4533-9a12-6ac2f6d43c9b rw
echo 'Loading initial ramdisk ...'
initrd /intel-ucode.img /initramfs-linux-fallback.img
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry 'FreeBSD 11.0' {
insmod ufs2
set root=(hd0,gpt4)
kfreebsd /boot/kernel/kernel
kfreebsd_loadenv /boot/device.hints
set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0p4
set kFreeBSD.vfs.root.mountfrom.options=rw
}
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
BEARBEITEN: vergessen zu erwähnen, kurz vor der Festplattenpartitionierung erhalte ich eine Warnung mit folgendem Text
Ihr Lenovo-Modell weist bekanntermaßen einen BIOS-Fehler auf, der das Booten von GPT-Partitionen ohne UEFI verhindert. Möchten Sie, dass das Installationsprogramm einen Workaround für Sie anwendet?
Da ich mit UEFI boote, wende ich es nicht an (ich habe es sogar erfolglos versucht).
Antwort1
Ich hatte das gleiche Problem mit demselben Laptop (Lenovo X220 mit 2 Festplatten, eine für das System/eine für die Daten) und FreeBSD 10. Eine Lösung für mich war:
- MBR-Schema installieren (GPT-Unterstützung scheint auf diesem Laptop defekt zu sein)
- Grub installieren
- Installieren Sie FreeBSD auf einer Partition
Meine grub.cfg
ist einfach (und funktioniert seit Ewigkeiten gut):
menuentry 'FreeBSD' {
insmod bsd
insmod ufs2
set root='hd0,msdos3'
kfreebsd /boot/loader
}
Ich benutze einfach FreeBSDBootloaderum den FreeBSD-Kernel zu starten (mit einigen benutzerdefinierten Konfigurationen in meinemloader.conf). Wenn Sie versuchen, direkt mit der Option im FreeBSD-Kernel zu booten kfreebsd
, müssen Sie eine Menge Dinge konfigurieren.
Übrigens, hast du gelesenoffizielle FreeBSD-Dokumentation zur Multiboot-Umgebung mit Grub2?
Antwort2
Obwohl die meisten Anleitungen die Verwendung chainloader +1
für Chainloading empfehlen, hat es bei mir nicht funktioniert.
Die folgende Konfiguration hat den Trick getan:
insmod ufs2
set root=(hd0,gpt4)
chainloader /boot/loader.efi