grub(2) 루트를 하드코딩하는 방법=

grub(2) 루트를 하드코딩하는 방법=

방금 Debian 시스템(SID)에서 부팅하는 데 일련의 문제가 발생했는데 갑자기 다음과 같은 보고가 나타났습니다.

/grub/i386-pc/normal.mod not found.

결국 나는 그것을 다시 얻었습니다 (fsck는 /boot에서 Lost+found로 많은 항목을 옮겼으며 grub-install을 통해 교체해야 했습니다)

그러나 모든 것이 작동한 후 다양한 grub-* 패키지를 다시 설치했습니다(이제 분실+발견 상태인 경우). grub.cfg에서 다음과 같은 많은 차이점을 발견했습니다.

<               set root='hd2,msdos1'                                                                                                                                                                
---                                                                                                                                                                                                  
>               set root='hd0,msdos1'                                                                                                                                                                
  

                        

실제로 내 /boot(및 /(루트)) 장치는 이제 /dev/sda(hd0) 대신 /dev/sdc(hd2)입니다. 한편으로는 어떻게/왜 변경되었는지 이해하지 못하지만, 다른 한편으로는 /dev/sdX 이름이 고정되어 있지 않으며 한 부팅에서 다음 부팅으로 변경될 수 있다는 것을 알고 있습니다. 따라서 이 모든 것을 염두에 두고 내 질문은 다음과 같습니다.

grub.cfg에 다음 항목이 포함되는 방식:

set root='hd2,msdos1'

(매핑 파일 없이) 이는 /dev/sdc와 동일하므로 다음 부팅 시 디스크가 sdb 또는 sda로 표시되면 어떻게 될까요?

ABTW. 초기 원인은 손상된 /boot일 수 있습니다. ext2인 것을 확인했는데 ext4를 사용할 수 없나요? ...이제 그게 기본값이 아닌가요? [허점985470 ]

답변1

그것은 다음과 같이 보일 것입니다

    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1'  f19c92f4-9ead-4207-b46a-723b7a2c51c8
    else
      search --no-floppy --fs-uuid --set=root f19c92f4-9ead-4207-b46a-723b7a2c51c8
    fi

따라서 초기값은 단지 선택적 힌트일 뿐입니다. 실제로 수행하는 작업은 파일 시스템 UUID를 검색하는 것입니다.

답변2

이것은 grub-probe(https://www.gnu.org/software/grub/manual/grub/html_node/Invoking-grub_002dprobe.html) /dev/sda1는 이름을 로 변환합니다 (hd0,msdos1).

그러나 변환이 실패하면 장치 매핑 파일을 사용하여 도움을 받을 수 있습니다(https://www.gnu.org/software/grub/manual/grub/html_node/Device-map.html#Device-map).

Grub 명명 체계를 입력하여 grub-probe -t drive /드라이브를 가져올 수 있습니다./

관련 정보