如何在 MBR 磁盘上使用 GRUB 2 启动 DragonFly BSD (HAMMER)?

如何在 MBR 磁盘上使用 GRUB 2 启动 DragonFly BSD (HAMMER)?

有一个盒子,里面有一个 MBR 分区磁盘。

它有四个主分区。这些是:

  • 视窗
  • DragonFly BSD(使用 UFS2)
  • Linux
  • DragonFly BSD(使用 HAMMER)

链式加载使用 UFS2 的 DragonFly 是可能的。

GRUB 2 是引导加载程序。

我还没有设法让 GRUB 加载使用 HAMMER 的 DragonFly。

中需要包含什么/etc/grub.d/40_custom

答案1

DragonflyBSD 在对切片进行分区(在 BSD 术语中,或在 Linux 术语中对分区进行子分区)期间默认使用 disklabel64,而不是 disklabel32。不幸的是,disklabel64 对于 GRUB 和 GRUB2 是不可见的。我已经看到一些讨论和一些尝试使其对 GRUB 可见,但我不确定它们是否真的有效。此外,HAMMER-fs 对于 GRUB 是不可见的。 (但是/bootDFlyBSD中的是UFS,所以是可见的)。我见过 GNU/Linux 的 HAMMER-fs 的只读 FUSE 实现(Google:“Hammerfs for Linux”),但我还没有尝试过,因为 Linux 内核应该首先看到 disklabel64-ed 切片,以看到上面有一个 HAMMER 分区。因此,要尝试 HAMMER-FUSE,我需要将所有 DragonflyBSD 分区从 dl64-slice 移动到 dl32-slice 或单独的非 bsd 标记的 MBR-partitions/EBR-ones...

所以最简单的方法是链式加载:

menuentry“蜻蜓 BSD x64 @(高清X,)”{
   设置根=(高清X,msdos
   链式装载机+1
}

答案2

刚才,我发现 Grub2 模块“part_dfly”可以在以下位置找到: [你的启动分区]/boot/grub/i386-pc.您在 PC 上使用的内核模块列表可以在以下位置找到:[你的蜻蜓分区]/boot/loader.conf。只需更改我的“kfreebsd_module_elf /kernel/.ko”从 loader.conf 到你的。

Grub2 将加载 dfly-partition-sheme,然后从 UFS2 (/boot) 分区加载内核和 RAM-disk-image,DF-BSD 将加载 Hammer-FS(root)。因此,“/boot”分区对于 Grub2 和 DF-BSD 都必须是可读/可写的;该角色的唯一候选者是 UFS 和 UFS2。

请注意,Grub2 区分大小写,因此您必须使用“小”字母书写“kfreebsd_module”,但“set kFreeBSD”必须同时使用大写和“小”字母书写。所以你可以尝试这样的事情:

menuentry "Dragonfly BSD x64 @ (hdX,Y)" {
   insmod part_msdos
   insmod part_dfly
   insmod ufs2
   set root=(hdX,msdosY)
   kfreebsd /kernel/kernel
   kfreebsd_loadenv /boot/device.hints
   kfreebsd_module /kernel/initrd.img type=md_image
   kfreebsd_module_elf /kernel/acpi.ko
   kfreebsd_module_elf /kernel/ahci.ko
   kfreebsd_module_elf /kernel/ehci.ko
   kfreebsd_module_elf /kernel/dm.ko
   kfreebsd_module_elf /kernel/md.ko
   kfreebsd_module_elf /kernel/dm_target_crypt.ko
   kfreebsd_module_elf /kernel/wlan.ko
   kfreebsd_module_elf /kernel/wlan_ccmp.ko
   kfreebsd_module_elf /kernel/wlan_tkip.ko
   kfreebsd_module_elf /kernel/ath_hal.ko
   kfreebsd_module_elf /kernel/ath_rote.ko
   kfreebsd_module_elf /kernel/if_ath.ko
   kfreebsd_module_elf /kernel/sound.ko
   kfreebsd_module_elf /kernel/snd_hda.ko
   set kFreeBSD.vfs.root.mountfrom=ufs:md0s0
   set kFreeBSD.vfs.root.realroot=crypt:hammer:\
   /dev/serno/<your_partition_serno>:dragon

}

如果您使用非加密的hammer-partition而不是:

   set kFreeBSD.vfs.root.mountfrom=ufs:md0s0
   set kFreeBSD.vfs.root.realroot=crypt:hammer:\
   /dev/serno/<your_partiton_serno>:dragon

只需使用:

   set kFreeBSD.vfs.root.mountfrom=\
   hammer:/dev/serno/<your_partition_serno>:dragon

祝你好运!

答案3

Dragonfly 操作系统使用 boot0 引导加载程序。所以
安装蜻蜓。它提供将 boot0 (它称之为“blocks smth”)安装到分区。将其安装在任何地方。
然后安装其他linux操作系统。
然后你可以通过添加来对蜻蜓进行链式加载

menuentry "ctu" {
insmod chain
chainloader (hd0,2)+1
}

/etc/grub.d/40_custom。 Dragofly 安装在第二部分。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
所有这些东西都是 centos 特有的。

相关内容