ID별로 대체 항목을 설정하거나 하위 메뉴에서 항목을 선택하려면 어떻게 해야 합니까? 현재 유효한 유일한 옵션은 번호가 매겨진 항목(예: set fallback=0
)을 사용하는 것입니다.
배경
우리 팀은 Debian을 실행하는 장치를 원격으로 업데이트합니다. 이러한 장치는 원격으로 배포되므로 물리적 또는 KVM 액세스가 거의 없으므로 실행 가능한 솔루션이 아닙니다. 새 시스템 이미지를 동일한 파티션(이 경우 /dev/sda2)에 복사합니다.
root@widget:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 186.3G 0 disk
├─sda1 8:1 1 953M 0 part /boot
├─sda2 8:2 1 23.3G 0 part /
├─sda3 8:3 1 23.3G 0 part /alt
파티션을 다시 마운트한 후 /alt
이미지가 손상되지 않았는지 확인하고 싶습니다. 이를 테스트하기 위해 사용자 정의 항목을 만듭니다(예 newimg
: /etc/grub.d/40_custom
). ( )로 시작하는 UUID는 xxxxxxxx
마운트된 파티션이고, ( )로 시작하는 UUID는 마운트된 파티션입니다./boot
dev/sda1
yyyyyyyy
/
/dev/sda3
menuentry 'Debian 10 (buster) newimg' --id newimg {
insmod part_msdos
insmod ext2
search --no-floppy --fs-uuid --set=root xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
linux /vmlinuz-4.2 root=UUID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy ro nomodeset panic=5 quiet
initrd /initrd.img-4.2
}
set fallback='1>2'
다음으로 재부팅을 실행 update-grub
하고 수행합니다. grub-reboot newimg
이미지가 손상된 경우 터미널에 대한 액세스 권한을 잃지 않도록 대체 이미지가 필요합니다. 과거에는 첫 번째 grub 메뉴 항목을 대체( set fallback=0
)로 사용했습니다. 그러나 new는 /vmlinuz-4.2
최신 또는 항목 내에서 사용되므로 0
무의미하게 대체됩니다. 손상된 이미지를 사용하여 대체를 테스트해 왔습니다 vmlinuz-4.2
. ~에 따르면GRUB 문서,
항목은 숫자(계층 구조의 각 수준에서 0부터 시작), 제목 또는 ID로 식별할 수 있습니다.
그러나 내가 본 유일한 방법은 숫자를 사용하는 것입니다(하위 메뉴 항목도 작동하지 않습니다). 다른 모든 옵션의 경우 다음 오류 메시지가 나타납니다 Failed to boot both default and fallback entries
.
내가 시도한 것들:
- 폴백을 ( )
40_custom
로 변경하면 항목이 선택되지만 대신 ... 동일한 손상된 vmlinuz 이미지가 선택됩니다 .set fallback='1>2'
Advanced options for Debian GNU/Linux > Debian GNU/Linux, with Linux 4.1
1
1>0
1>2
1>0
defaultimg
또한 이전 커널( )을 사용하여 다른 사용자 정의 부팅 항목을 추가set fallback=defaultimg
하려고 시도했으며defaultimg
.set
작은따옴표와 큰따옴표 없이 처음 두 옵션을 변경해 보았습니다 .
GRUB 버전:2.02+dfsg1-20