
따르다"유지보수가 필요 없는" 문제는 여기에 있습니다., grub2 메뉴 항목을 자동으로 생성하는 방법이 있다는 것을 알고 있지만 때때로 수동으로 편집/추가해야 합니다.
- 라이브 Linux 시스템에 또는
- 새 ISO 부팅 항목을 추가하는 경우(다른 디스크에 존재)
거의 모든 grub2 소개 문서는 다음 형식을 사용합니다.
set root=(hd2,gpt7)
나는 때때로 내 컴퓨터 사이에서 하드 드라이브를 이동해야 하고 그런 일이 발생하면 위의 형식이 확실히 손상되기 때문에 이것이 실패할 것이라는 것을 알고 있습니다.
가능하지만UUID를 사용하여 루트 파일 시스템을 지정할 수 없습니다(그리고여기서 실패했습니다역시), 파티션을 포맷하면(새 OS를 설치할 때) 파티션의 UUID가 변경되기 때문에 UUID를 사용하고 싶지 않습니다.
그렇다면 더 나은 옵션은 무엇입니까?
- 가장 중요한 것은,GPT 파티션 라벨하드 드라이브를 이동할 때에도 모든 컴퓨터에서 고유한지 확인할 수 있기 때문에 최고의 후보입니다. 하지만,이거 문제가 있는 것 같네요:"PARTLABEL을 사용하여 장치를 설치할 수 없습니다.".
하지만 희망적이어야 한다. 왜냐하면 나는 할 수 있기 때문이다.바라보다
4.20부터는 PARTLABEL <github.com/torvalds/linux/blob/v4.20/init/do_mounts.c>도 지원되는데, 정말 편리한 것 같아요. 답변을 업데이트할 수도 있습니다. – equaeghe 1월 20일
- 두 번째로 좋은 점은
PARTUUID
. 그러나 인터넷에는 혼란스럽고 상충되는 답변이 떠돌고 있습니다.
PARTLABEL
그렇다면 최신 grub2를 사용할 수 있습니까 PARTUUID
?
답변1
grub2에 대한 구성 파일 형식 파일과 항목을 확인하세요.
새 ISO를 편집할 때 항상 sudo update-grub을 실행하는 것을 잊어버립니다. 그래서 모든 항목을 ISO 폴더의 텍스트 파일로 이동하고 하나의 구성 파일 항목을 표준 grub 40_custom으로 이동했습니다. 그런 다음 텍스트 파일을 편집하면 됩니다.
프로필 세부정보는 6.5를 참조하세요. https://www.gnu.org/software/grub/manual/grub/grub.html#Multi_002dboot-manual-config 태그와 프로필을 사용하여 다른 설치 시작
40_custom을 ISO 폴더(하나는 hd0에, 다른 하나는 hd1에 있음)의 텍스트 파일로 표시하는 구성 파일입니다. 한 드라이브에 ISO가 있고 문제가 덜한 다른 드라이브에 설치할 수 있습니다.
https://ubuntuforums.org/showthread.php?t=2076205&p=13788092#post13788092
https://www.gnu.org/software/grub/manual/grub/grub.html#Multi_002dboot-manual-config
40_custom의 일반적인 항목은 변경되지 않습니다.
menuentry 'Live ISOs on SSD' {
search --set=root --label iso_ssd --hint hd1,gpt5
configfile /livecdimage.cfg
}
그런 다음 livecdimage.cfg 또는 원하는 파일에서 ISO 또는 기타 설치를 위한 전체 grub2 부팅 섹션을 복사합니다. 모든 grub 섹션은 텍스트 파일에서 찾을 수 있습니다.
다른 예시:
https://ubuntuforums.org/showthread.php?t=2076205&p=14020961#post14020961
내 예제 구성 파일은 livecdimage.cfg이며 일반적으로 ISO 폴더에 여러 항목 또는 여러 ISO를 포함합니다.
# livecdimage.cfg
menuentry "Kubuntu 21.10 Impish Live ISO" {
set isofile="/ISO/kubuntu-21.10-desktop-amd64.iso"
loopback loop (hd1,5)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile toram noeject
initrd (loop)/casper/initrd
}