플래시 드라이브에서 grub을 사용하여 루프형 아치 설치 ISO(및 기타 여러 ISO)를 성공적으로 부팅했습니다. 내 grub 파일은 플래시의 /boot/grub에 있고 iso 파일은 /boot/iso에 있습니다(참조:https://wiki.archlinux.org/index.php/Multiboot_USB_drive). grub.cfg의 관련 부분은 다음과 같습니다.
imgdevpath="/dev/disk/by-uuid/CF3D-EC7C"
menuentry '[loopback]archlinux-2015.07.01-dual.iso i686' {
set isofile='/boot/iso/archlinux-2015.07.01-dual.iso'
loopback loop $isofile
linux (loop)/arch/boot/i686/vmlinuz archisolabel=ARCH_201507 img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/i686/archiso.img
}
imgdevpath의 UUID가 정확하면 제대로 작동합니다. 따라서 사전에 행을 수동으로 업데이트해야 합니다. 이것만 작동합니다.
GRUB 루트 파티션의 UUID를 읽고 싶습니다.(이것은 iso 파일을 저장하는 파티션이기도 합니다.)부팅 시 grub 내에서 변수를 입력합니다. 이것이 가능합니까?
(루프 설치) iso 파일에서의 부팅을 단순화합니다. "ls ($root)"는 이미 UUID를 표시하지만(다른 것들 중에서) 변수에 입력할 수 없습니다(또는 적어도 방법을 모르겠습니다). 이상적으로는 다음과 같은 작업을 수행하고 싶습니다.
foobar_readuuid ($root) --set=rootuuid
imgdevpath="/dev/disk/by-uuid/$rootuuid"
...
나는 "검색" 명령을 찾고 있는 것이 아닙니다. 내가 아는 한, 그 출력은 항상 "장치, 파티션"입니다(예: hdX, msdosY 또는 이와 유사한 것). 나는 그것이 $root에 있다는 것을 이미 알고 있습니다. $imgdevpath에 제공할 수 있도록 uuid를 읽고 싶습니다.
답변1
probe -u $root --set=abc
$root에 대한 uuid 변수로 $abc를 사용합니다.
따라서 내 구체적인 경우 grub.cfg의 관련 부분은 다음과 같습니다.
probe -u $root --set=rootuuid
set imgdevpath="/dev/disk/by-uuid/$rootuuid"
그리고 그것은 훌륭하게 작동합니다.