mdadm
EXT4 파티션(OS 파일과 GRUB 파일 포함)이 있는 관리형 RAID1이 있고 /boot/grub
이 파티션에서 부팅하는 데 GRUB가 필요한 모듈과 구성이 무엇인지 알고 싶습니다.
답변1
최소 요구 사항 grub.cfg
은 다음과 같습니다.
set timeout=1
set root='mduuid/ce16c757e4752e4fa9a2fd4935df1aef'
menuentry 'Arch Linux' {
linux /boot/vmlinuz-linux root=UUID=05dddf23-1d9f-417e-b3f8-2281a328dc0b rw
initrd /boot/initramfs-linux.img
}
예, 생성된 긴 가비지 스트림과는 상당히 다릅니다 grub-mkconfig
. 보시다시피 이 설정에는 모듈이 필요하지 않은 것 같습니다.
내 특정 설정은 그 위에 조립된 RAID1 어레이와 해당 어레이의 EXT4 파티션이 있는 MBR 포맷 디스크의 단일 파티션입니다.
이 root
변수는 mduuid/xxx
다음과 같이 설정됩니다.RAID 어레이의 UUIDmdadm --examine /dev/sdX
RAID 어레이의 일부인 디스크나 파티션에서 실행하여 이를 얻을 수 있습니다 .이는 RAID를 통한 EXT4 파일 시스템의 UUID가 아닙니다., 보고된 UUID를 사용하지 마십시오. lsblk
해당 UUID는 작동하지 않는 파티션의 UUID만 제공하기 때문입니다.
RAID 어레이를 생성할 때 지정한 태그를 사용하여 이 변수를 설정할 수도 있습니다 root
( ). 루트 장치를 지정하는 다른 방법은 다음과 같습니다.md/...
mdadm ... -N "some label" ...
문서 보기.
커널 매개변수 행의 UUID는 다음과 같습니다.파일 시스템 UUID이는 다음을 실행하여 얻을 수 있는 RAID 어레이 위에 위치합니다 lsblk -o NAME,UUID
.
NAME UUID
loop0
└─loop0p2 ce16c757-e475-2e4f-a9a2-fd4935df1aef
└─md127 05dddf23-1d9f-417e-b3f8-2281a328dc0b
loop1
└─loop1p2 ce16c757-e475-2e4f-a9a2-fd4935df1aef
└─md127 05dddf23-1d9f-417e-b3f8-2281a328dc0b
내 경우에는 mdXXX
장치 노드에 해당합니다. 이 예에서는 05dddf23-1d9f-417e-b3f8-2281a328dc0b
기본 파티션의 UUID를 사용하지 마십시오 .loopXp2
보너스로 여기에 멋진 쉘 스크립트가 있습니다.약간의 일QEMU/KVM 가상 머신에서 GRUB를 실험하려는 경우.
일부 원시 디스크를 생성하려면 호스트에 마운트할 "원시"여야 하며 qcow2 또는 vmdk를 사용할 수 없습니다.
qemu-img create -f raw driveX.img XXXG # name and size
두 개의 디스크, ISO(이 경우 Archlinux이지만 무엇이든 될 수 있음) 및 기본 네트워크 액세스로 VM을 부팅하려면 다음을 수행하십시오.
/path/to/qemu-system-x86_64 -m 512 -cpu host -smp 2,cores=2,sockets=1 -machine q35,accel=kvm -balloon none -device ahci,id=ahci -drive if=none,file=drive1.img,format=raw,cache=none,aio=native,id=hdd1 -device ide-hd,bus=ahci.0,drive=hdd1 -drive if=none,file=drive2.img,format=raw,cache=none,aio=native,id=hdd2 -device ide-hd,bus=ahci.1,drive=hdd2 -drive if=none,file=arch.iso,format=raw,cache=none,aio=native,id=iso,snapshot=on -device ide-cd,bus=ahci.2,drive=iso -device pci-ohci,id=ohci -device usb-kbd,bus=ohci.0 -device usb-mouse,bus=ohci.0 -netdev user,id=net0 -device e1000-82545em,autonegotiation=on,netdev=net0 -realtime mlock=on
호스트에 VM 파티션을 마운트하는 스크립트입니다. 파티션 손상을 방지하려면 실행하기 전에 QEMU를 중지해야 합니다.
losetup -P -f drive1.img # create loopback device nodes for the virtual disks
losetup -P -f drive2.img
mdadm --assemble /dev/md/root /dev/loop0p1 /dev/loop1p1 # assemble the RAID
# some distributions will auto-detect and assemble them so it sometimes fails
# running this script a second time usually succeeds in mounting it anyway
# if it failed the first time - I don't have time to fix the real issue
mount "/dev/md/root" rootfs # mount the root FS of the VM in this directory
제거 스크립트입니다. VM 백업을 시작하기 전에 이 스크립트를 실행하세요(안전을 위해 여러 번 실행).
umount rootfs # umount the FS
mdadm --stop /dev/md127 # sometimes the array appears under these names
mdadm --stop /dev/md126 # so we stop them as well just to be safe
mdadm --stop /dev/md/root # the correct name
losetup -D # detach all loop device nodes