initramfs 없이 RAID1 btrfs 루트로 부팅할 수 있습니까?

initramfs 없이 RAID1 btrfs 루트로 부팅할 수 있습니까?

나는 현재 raid1을 사용하기 위해 BTRFS 기반 젠투 시스템을 전환하고 있습니다. (기본적으로 두 번째 하드 드라이브는 사용되지 않으므로 raid1로 사용하고 있습니다.)

raid1 모드에서 두 번째 장치를 사용하여 btrfs 파일 시스템을 확장할 수 있습니다. 그러나 grub2는 이제부터 더 이상 시작되지 않습니다. initramfs 없이 raid1(및 하위 볼륨)을 사용하여 btrfs 루트 파일 시스템으로 grub2를 부팅할 수 있습니까? 지금까지 나는 initramfs를 사용한 적이 없습니다. 젠투에서는 너무 복잡해 보이기 때문입니다.

부팅하려고 하면 커널 패닉이 발생합니다. 커널이 rootfs를 제대로 마운트할 수 없는 것 같습니다. 그러나 rootfs를 raid1로 전환하기 전까지 시스템은했다정상적으로 시작되는데 raid1 때문인 것 같습니다.

또 다른 관련 질문 - rootfs에 사용되는 두 파티션(sda5, sdb5)의 UUID가 동일합니다. 이게 정상인가요?

답변1

예, 그렇게 할 수는 있지만 신뢰할 수는 없습니다.

rootflags다음과 같이 커널 명령줄의 인수를 사용하여 볼륨의 각 개별 장치에 대해 커널에 명시적으로 알려야 합니다 .

rootflags=device=/dev/sda5,device=/dev/sdb5

여기에는 몇 가지 매우 구체적인 제한 사항이 있습니다.

  • 이전 커널을 사용하는 경우 작동하지 않을 수 있습니다. 나는 4.10 이상에서만 이 작업을 수행했지만 일부 3.x 커널에서는 작동하지 않는다는 것을 알고 있습니다.
  • 장치 경로는 값으로만 ​​사용할 수 device=있으며 에서 생성해서는 안 됩니다 udev. initramfs가 없으면 이를 사용하여 장치를 찾을 수 없으며 루트 파일 시스템을 마운트하려고 하면 blkid링크가 생성되지 않습니다.udev
  • 파티션 레이아웃을 변경할 때마다 수동으로 업데이트해야 합니다.

두 번째 질문은 그렇습니다. BTRFS 볼륨의 각 장치가 동일한 UUID를 공유하는 것은 정상입니다. 유사한 도구로 보고된 UUID는 blkid장치별이 아닌 파일 시스템별이므로 다중 장치 파일 시스템은 각 구성 요소 장치에 대해 동일한 UUID를 표시합니다.

답변2

"device=..." 방법을 시도했지만 전혀 작동하지 않았습니다. 부팅 시 커널 패닉이 발생했습니다. 이는 제가 커널로 4.9.76을 사용하고 있기 때문일 수 있습니다. 아마도 이는 4.10 이상에만 적용될 수도 있습니다. 어쨌든 - 포기하고 찾아보니https://wiki.gentoo.org/wiki/Btrfs/Native_System_Root_Guide(저는 젠투를 사용하고 있습니다) 이 가이드를 기반으로 initramfs를 구축했습니다. 그러나 이 가이드를 따르면 파일에 다음 줄을 추가해야 할 수도 있습니다.initramfs_list:

    #some devices
    nod /dev/console 644 0 0 c 5 1
    nod /dev/tty0    644 0 0 c 4 0

그렇지 않으면 "초기 콘솔을 열 수 없습니다" 오류가 발생할 수 있습니다.

이제 이 initramfs 기반 접근 방식이 작동합니다.

관련 정보