현재 저는 파일 시스템인 grub을 포함하고 Linux 커널을 부팅하는 디스크 이미지 파일(mtools 및 parted 사용)을 만들고 있습니다.
내가 사용하는 grub.cfg는 다음과 같습니다.
insmod part_gpt
menuentry "test image" {
linux (hd0,gpt1)/bzImage.efi root=/dev/sda1 console=tty console=ttyS0,115200 primary
initrd (hd0,gpt1)/fs.cpio.gz
}
그러나 이는 항상 장치(hd0,gpt1)가 올바른 장치라고 가정합니다. 이것이 바로 부팅 장치가 항상 동일할 수 있도록 img 파일에 UUID를 추가하고 싶은 이유입니다.
파티션 테이블에 UUID를 어떻게 추가합니까? 루트 권한을 사용할 수 없습니다.
답변1
GPT 파티션 테이블에는 이미 하나가 있습니다. 루트 파일 시스템에도 하나가 있습니다. 실행 blkid disk.img
하여 나열하면 파일 시스템 UUID가 로 표시되고 UUID=
파티션 UUID가 PARTUUID=
.
불행히도 현재 GRUB 버전인 것 같습니다.아직 지원하지 않습니다파티션 UUID를 사용합니다. 지원이 추가되면 search.partuuid
명령에서 사용할 수 있습니다.
그 사이에는 아마도 파일 시스템 UUID를 대신 사용해야 할 것입니다:
search.fs_uuid --no-floppy --set=root e9ad79d7-...-e3c445c7f4e9
이제 $root가 모든 경로 참조에 자동으로 적용되므로 ($root)/bzImage.efi
간단히 경로를 참조할 수 있습니다 ./bzImage.efi
이에 따라 Linux 매개변수를 업데이트하는 것을 잊지 마십시오 root=
. initramfs를 사용할 때는 initramfs가 이해할 수 있는 형식이어야 합니다. (언제~ 아니다initramfs를 사용하는 경우 유일한 옵션은 입니다 root=PARTUUID=
.)