Grub
grub 可以辨識“降級”的 raid1 mdadm 分區嗎?
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 並從第二個磁碟正常引導。