gooブログはじめました!

写真付きで日記や趣味を書くならgooブログ

Grub2 and FreeBSD

2021-08-05 17:36:00 | ノンジャンル
2019年に、FreeBSD をGrub2から立ち上げるための設定を書いたが、そのときは、1つのディスクの中の話だった。今回は複数ディスクの場合。現状のディスク構成は、次の通り。


     
  1. SSD (1TB) --- Windows10 と ubuntu
  2. HD (2TB) --- 立ち上がらないWindows 10
  3. HD (2TB) --- CentOS、FreeBSD、立ち上がらないUbuntu

1にいれたUbuntuが作ったGrub2の/boot/grub/grub.cfg を、grub-customizerや コマンドラインでを修正しようとしたが、うまく行かなかった。これは理由がわからず。仕方がないのでemacsで直接編集しつつ試した。3のディスクのGPTの7番目のパーティションがFreeBSDである。いろいろなWebを見て以下を試した。

試した11個のうち、No.10と11はうまくいった。kfreebsdを使うと、だんまりになって電源OFFしか方法がなかった。リセットボタンとマザーボードの配線は直したはずなのだが。。とにかく、以前のFreeBSDのディスクが読めるようになした。

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.2.0/styles/atom-one-dark.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.2.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>

menuentry "01. FreeBSD (hd3,gpt1) insmod fat/part_gpt (NG)" {
    insmod fat
    insmod part_gpt
    insmod chain
    set root='(hd3,gpt1)'
    chainloader /EFI/FreeBSD/loader.efi
}

menuentry "02. FreeBSD (hd3,gpt1) long" –- class freebsd –- class bsd –- class os {
    insmod fat
    insmod part_gpt
    insmod chain
    set root='(hd3,gpt1)'
    chainloader /EFI/FreeBSD/loader.efi
}

menuentry "03. FreeBSD (hd3,gpt7) /boot/loader.efi (NG)" {
    insmod ufs2
    insmod part_gpt
    insmod chain
    set root='(hd3,gpt7)'
    chainloader /boot/loader.efi
}

menuentry "04. FreeBSD (hd3,gpt7) /boot/loader.efi long (NG)" –- class freebsd –- class bsd –- class os {
    insmod ufs2
    insmod part_gpt
    insmod chain
    set root='(hd3,gpt7)'
    chainloader /boot/loader.efi
}

menuentry "05. FeeeBSD (hd3,gpt7) kfreebsd ada2s7 /boot/kernel/kernel (NG)" {
            insmod ufs2
            insmod bsd
        insmod part_gpt
            set root='(hd3,gpt7)'
            set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada2s7
            set kFreeBSD.vfs.root.mountfrom.options=rw
            kfreebsd /boot/kernel/kernel
            kfreebsd_loadenv /boot/device.hints
                boot

}


menuentry "06. FeeeBSD (hd3,gpt7) kfreebsd ada2s7 /boot/loader (NG)" {
            insmod ufs2
            insmod bsd
        insmod part_gpt
            set root='(hd3,gpt7)'
            set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada2s7
            set kFreeBSD.vfs.root.mountfrom.options=rw
            kfreebsd /boot/loader
            kfreebsd_loadenv /boot/device.hints
}

menuentry "07. FreeBSD (hd3,gpt7) chainloader only" {
    insmod ufs2
        insmod bsd
    insmod chain
    set root='(hd3,gpt7)'
    chainloader (hd3,gpt7)+1
}

menuentry "08. FeeeBSD (hd3,gpt7) kfreebsd ada2s7 /boot/kernel/kernel (NG)" {
            insmod ufs2
            insmod bsd
        insmod part_gpt
            set root='(hd3,gpt7)'
            set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada3s7
            set kFreeBSD.vfs.root.mountfrom.options=rw
            kfreebsd /boot/kernel/kernel
            kfreebsd_loadenv /boot/device.hints
                boot
}

menuentry "09. FeeeBSD (hd3,gpt7) kfreebsd ada2s7 /boot/kernel/kernel uuid (NG)" {
            insmod ufs2
            insmod bsd
        insmod part_gpt
            set root='(hd3,gpt7)'
        search --no_floppy --fs_uuid --set 596c1fbff0b78a9a
            set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada3s7
            set kFreeBSD.vfs.root.mountfrom.options=rw
            kfreebsd /boot/kernel/kernel
            kfreebsd_loadenv /boot/device.hints
                boot
}

menuentry "10. FreeBSD (hd3,gpt7) /boot/boot1.efi (OK)" {
    insmod ufs2
    insmod part_gpt
    insmod chain
    set root='(hd3,gpt7)'
    chainloader /boot/boot1.efi
}

menuentry "11. FreeBSD (hd3,gpt7) /boot/boot1.efi long (OK)" –- class freebsd –- class bsd –- class os {
    insmod ufs2
    insmod part_gpt
    insmod chain
    set root='(hd3,gpt7)'
    chainloader /boot/boot1.efi
}

SSDだから良かったけれど、これがHDならあと何時間かかっていたことか。。