EFI 부팅 파티션을 공유하는 방법

EFI 부팅 파티션을 공유하는 방법

gummiboot로 설정된 EFI 시스템에 두 개의 Archlinux가 설치되어 있습니다. 하나는 /dev/sda2에 뿌리를 두고 있고, 다른 하나는 /dev/sdb1에 뿌리를 두고 있습니다. 둘 다 EFI 시스템 파티션인 /dev/sda1을 /boot 파티션으로 사용하지만 커널 이미지를 다른 위치에 배치합니다.

/boot/loader/entries/arch.conf:

title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options root=/dev/sda2 rw

/boot/loader/entries/arch-here.conf:

title   HERE Arch Linux
linux   /here-img/vmlinuz-linux
initrd  /here-img/intel-ucode.img
initrd  /here-img/initramfs-linux.img
options cryptdevice=/dev/sdb1:cryptroot root=/dev/mapper/cryptroot rw

NET에서 커널을 4.8.13에서 4.9로 업데이트하기 전까지는 괜찮았습니다 sdb. 다음에 으로 부팅했을 때 sda실패했습니다.

Warning: /lib/modules/4.8.13-1-ARCH/modules.devname not found
...
ERROR: device '/dev/sda2 not found. Skipping fsck.
...

로 다시 부팅하고 sdb커널 4.8.13을 다시 설치했는데 다시 부팅할 수 있다는 것을 알았습니다 sda. 그러나 이제 sdb/dev/sdb1을 여는 데 필요한 암호화 후크를 로드하지 못했기 때문에 더 이상 으로 부팅할 수 없습니다 .

이 문제는 /dev/sdb1로 chroot하고 sda4.9를 다시 설치하여 해결했습니다. 이로 인해 로 부팅할 수는 sdb있었지만 sda.

이제 설치 간에 전환할 때마다 커널 이미지를 다시 빌드해야 하는 루프에 갇혔습니다. 두 커널이 어떻게든 간섭하고 있는 것 같습니다.

sda부팅할 때마다 설치 과정 에서 수행하는 단계는 다음과 같습니다 sdb.

sudo cryptsetup open /dev/sdb1 cryptroot
sudo mount /dev/mapper/cryptroot /mnt/
sudo mount /dev/sda1 /mnt/boot/
chroot /mnt/
sudo pacman -U /var/cache/pacman/pkg/linux-4.8.13-1-x86_64.pkg.tar.xz /var/cache/pacman/pkg/nvidia-375.20-3-x86_64.pkg.tar.xz /var/cache/pacman/pkg/nvidia-utils-375.20-3-x86_64.pkg.tar.xz

sdb이사하고 싶을 때 거치는 단계는 sda비슷하지만 실패합니다.

/lib/modules/4.8.13-1-ARCH is not a valid kernel module directory

/lib/modules/4.9-1-ARCH를 /lib/modules/4.8.13-1-ARCH로 심볼릭 링크하여 이 문제를 해결했습니다.

나는 여기서 잘못된 일이 많지는 않더라도 적어도 하나의 일을 하고 있다고 확신합니다(그 심볼릭 링크는 끔찍한 해킹처럼 보입니다). 내 커널이 어떻게 든 간섭하는 것 같습니다. 이 문제를 어떻게 해결할 수 있나요?

답변1

나는 성공했다도움을 좀 받아Arch 포럼에서 이 내용을 여기에서 공유하고 싶었습니다.

각 시스템은 서로 다른 initramfs 이미지에 쓰고 있었지만 둘 다 동일한 커널을 덮어쓰고 있었습니다. 그만큼리눅스저장소에 포함된 패키지는 항상 /boot/vmlinuz-linux에 이미지를 배치합니다. 몇 가지 옵션이 논의되었습니다.

  1. 한 시스템에 다른 메인라인 Linux 패키지를 설치하십시오.
  2. 커널 이름을 바꾸는 AUR에서 사용자 정의 Linux 패키지를 빌드합니다.
  3. 각 시스템마다 별도의 EFI 파티션을 사용하십시오.

저는 1을 선택했는데 가장 단순해 보였습니다. 하나의 시스템에 설치하는 linux-lts대신 linux커널이 간섭하는 것을 방지했습니다. 이제 부팅 항목은 다음과 같습니다.

/boot/loader/entries/arch.conf

title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options root=/dev/sda2 rw

/boot/loader/entries/arch-here.conf

title   HERE Arch Linux
linux   /vmlinuz-linux-lts
initrd  /initramfs-linux-lts.img
options cryptdevice=/dev/sdb1:cryptroot root=/dev/mapper/cryptroot rw

이 접근 방식을 사용하려는 NVIDIA 사용자 nvidia-ltsnvidia.

관련 정보