루트를 새 하드 드라이브 파티션으로 변경하면 grub이 중단됩니다.

루트를 새 하드 드라이브 파티션으로 변경하면 grub이 중단됩니다.

내 루트 파티션이 열려 있었고 /dev/sda1루트 파티션을 . UUID로 /dev/sda2항목을 업데이트했습니다 ./etc/fstab/dev/sda2

그러나 확실하지 않습니다. grub은 루트 파티션이 새로운 UUID로 변경되었음을 어떻게 알 수 있습니까 /dev/sda2? 그 외에도 /etc/fstabgrub이 루트 파티션을 찾고 시스템을 부팅할 수 있도록 다른 부분을 변경해야 합니까?

뭔가 배우고 싶기 때문에 간단한 명령인 update-grub 이상의 단계도 알고 싶습니다.

다른 곳에서 뭔가를 바꿔야 하나요?

저는 그냥 리눅스를 씁니다.

답변1

grub2를 사용한다고 가정하면 가장 중요한 구성 파일은 grub.cfg(일반적으로 /boot/grubBIOS 기반 시스템 및 /boot/efi/EFI/<os name>/efi 시스템의 디렉터리에 위치) 있습니다. 컴퓨터가 시작되면 grub은 이 파일의 지침을 따릅니다. 이것은 단지 텍스트 파일이므로 수동으로 편집하거나 일부 자동화된 도구(셸 스크립트) grub-mkconfig(일명 grub2-mkconfig) 를 사용하여 /etc/default/grub파일 및 디렉터리 /etc/grub.d/에 정의된 규칙을 기반으로 구성을 생성할 수 있습니다 .

그럼에도 불구하고 루트 파티션을 변경한 경우 주의해야 할 몇 가지 사항이 있습니다. 먼저 Linux 커널 매개변수: grub은 루트 파티션의 직접적인 영향을 받지 않지만 커널에 대한 올바른 경로를 전달해야 하므로 다음과 같은 줄을 찾으십시오.

linux /vmlinuz-4.19.5 root=/dev/sda1

로 변경합니다 /dev/sda2.

UUID를 통해 전달될 수도 있습니다.

linux /vmlinuz-4.19.5 root=UUID=abcdefgh-ijkl-mnop-qrst-uvwxyz

grub의 명령을 사용하여 루트 UUID를 테스트할 수 있습니다.

grub-probe --target=fs_uuid /

두 번째로 확인/변경해야 할 것은 커널 파일 자체입니다. 이는 별도의 파티션(일반적으로 /boot) 또는 루트 파티션( /)에 있을 수 있습니다. 후자의 경우 라인을 검색해야 합니다.

set root='hd0,gpt1'

(여기서는 디스크가 하나만 있고 현재 표준인 GUID 파티션 테이블을 사용하고 있다고 gpt1가정 합니다 .)gpt2hd0

구성에 따라 파일 시스템 UUID와 프롬프트 문자열을 변경하여 커널에 대한 올바른 경로를 찾아야 할 수도 있습니다. 그것은 다음과 같이 보일 수 있습니다

search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt1' --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  abcd-efgh
search --no-floppy --fs-uuid --set=root abcd-efgh

grub-probe --target=hints_string /프롬프트 문자열의 올바른 값을 찾기 위해 이미 알고 있는 새 UUID입니다 .

관련 정보