Grub

grub 可以辨識“降級”的 raid1 mdadm 分區嗎?

  • April 26, 2021

Grub 可以從 zfs“降級”raid1 啟動(我已經嘗試過),很簡單:創建兩個 zfs 池,一個是引導,一個是 root,每個是 raid1 ……然後 grub 載入 Linux,使用兩個磁碟,或者使用只有一個活躍的,一兩個。我想在 ext4 上嘗試使用 btrfs root raid1 + mdadm raid1 進行類似的引導。據我所知,Slackware current 上的最新 grub 可以在啟動時辨識 md raid(元數據 0.90)。我以這種方式配置我的系統

fdisk -l /dev/vda
Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7715105B-51CD-9A45-9D05-E2C8161E51E9

Device        Start       End  Sectors  Size Type
/dev/vda1      2048   1050623  1048576  512M EFI System
/dev/vda2   1050624   9439231  8388608    4G Linux swap
/dev/vda3   9439232  11536383  2097152    1G Linux RAID
/dev/vda4  11536384 104857566 93321183 44.5G Linux filesystem


fdisk -l /dev/vdb
Disk /dev/vdb: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7715105B-51CD-9A45-9D05-E2C8161E51E9

Device        Start       End  Sectors  Size Type
/dev/vdb1      2048   1050623  1048576  512M EFI System
/dev/vdb2   1050624   9439231  8388608    4G Linux swap
/dev/vdb3   9439232  11536383  2097152    1G Linux RAID
/dev/vdb4  11536384 104857566 93321183 44.5G Linux filesystem 

這是 fstab

LABEL=SWAP       swap             swap        defaults            0   0
LABEL=ROOT       /                btrfs       defaults,degraded   1   1
LABEL=BOOT       /boot            ext4        defaults            1   2
/dev/vda1        /boot/efi        vfat        defaults            1   2
devpts           /dev/pts         devpts      gid=5,mode=620      0   0
proc             /proc            proc        defaults            0   0
tmpfs            /dev/shm         tmpfs       nosuid,nodev,noexec 0   0

這是 /etc/default/grub

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=$( sed 's/Slackware /Slackware-/' /etc/slackware-version )
GRUB_ENABLE_CRYPTODISK=y
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200 rootflags=degraded"
GRUB_TERMINAL="console serial"

最後是 mkinitrd.conf

SOURCE_TREE="/boot/initrd-tree"
CLEAR_TREE="1"
OUTPUT_IMAGE="/boot/initrd.gz"
KERNEL_VERSION="$(ls /var/log/packages/kernel-generic-*-x86_64-* |cut -d - -f 3)"
KEYMAP="it"
MODULE_LIST="btrfs:ext4:vfat:xhci-hcd:hid:usbhid:ochi-hcd:uhci-hcd:uhci-hcd:ehci-hcd:virtio-net:virtio-ring:virtio-blk:virtio-pci"
LUKSDEV="/dev/disk/by-uuid/b97cbe7d-c5e5-432e-adc4-659ed80dd65f:/dev/disk/by-uuid/ec4fd069-0bd2-4b53-90e2-e493c50070f1"
ROOTDEV="/dev/vda4"
ROOTFS="btrfs"
RESUMEDEV="/dev/disk/by-label/SWAP"
RAID="1"
LVM="0"
UDEV="1"

我更新 initrd 和 grub

mkinitrd -B -F
grub-mkconfig -o /boot/grub/grub.cfg

我重新啟動並工作:它詢問我兩個加密 luks 設備的密碼,然後直接登錄。我嘗試從第二個磁碟啟動,然後…

在此處輸入圖像描述

如您所見,第二個 efi 分區被辨識,但不是 md raid1 降級分區,如果我附加第一個磁碟工作正常。當然我已經在啟動盤上安裝了 grub

grub-install --target=x86_64-efi --recheck --efi-dir=/boot/efi /dev/vda
grub-install --target=x86_64-efi --recheck --efi-dir=/boot/efi /dev/vdb

有什麼解決辦法嗎?

找到的解決方案:不是 grub 的問題,而是 EFI 的問題!使用經典方法(無 efi + biosboot 分區)引導 grub 可以辨識 mdadm 並從第二個磁碟正常引導。

引用自:https://unix.stackexchange.com/questions/646824