grub2 오류 디스크 'hd0,msdos1'을 찾을 수 없습니다. ls에 디스크가 없음이 표시됩니다.

grub2 오류 디스크 'hd0,msdos1'을 찾을 수 없습니다. ls에 디스크가 없음이 표시됩니다.

나는 이 질문을 많이 검색했습니다. 내가 찾은이것, 그러나 이것은 내 문제를 해결하지 못했습니다. 다른 솔루션에서는 grub을 다시 설치하라고 제안했지만(grub-install 실행) 그 역시 작동하지 않았습니다.

이것이 내가 하는 일입니다: (제 grub 버전은 2.02입니다.)

  1. X.iso를 만들기 위해 grub2-mkrescue를 사용합니다.
  2. 1.0GB SATA 디스크가 있는 X.iso에서 VMWareWorkstation 가상 머신을 부팅했습니다.
  3. 디스크에 X.iso를 설치했는데 세부 정보는 다음과 같습니다.

3.1. 오래된 파티션이 있는 경우 /dev/sda를 삭제합니다. dd if=/dev/zero of=/dev/sda bs=1M count=1

3.2. /dev/sda에 3개의 기본 파티션 dev/sda1, sda2, sda3(크기는 각각 100M, 30M 및 70M)을 생성하고 sda1을 부팅 가능으로 전환합니다.

Disk /dev/sda: 1024 MB, 1073741824 bytes, 2097152 sectors
130 cylinders, 255 heads, 63 sectors/track
Units: sectors of 1 * 512 = 512 bytes

Device  Boot StartCHS    EndCHS        StartLBA     EndLBA    Sectors  Size Id Type
/dev/sda1 *  0,1,1       12,191,50           63     204862     204800  100M 83 Linux
/dev/sda2    12,191,51   16,147,2        204863     266302      61440 30.0M 83 Linux
/dev/sda3    16,147,3    25,127,37       266303     409662     143360 70.0M 83 Linux

3.3 세 개의 파티션을 ext2로 포맷하고 /dev/sda1을 마운트합니다.

mkfs.ext2 /dev/sda1
mkfs.ext2 /dev/sda2
mkfs.ext2 /dev/sda3
ROOTFS_PATH=/var/.rootfs
mkdir $ROOTFS_PATH
mount /dev/sda1 $ROOTFS_PATH

3.4 파일 복사...

for i in bzImage initrd.img vmlinuz-*; do
    cp -rf /boot/$i $ROOTFS_PATH/boot
done
cp -f /boot/grub/device.map $ROOTFS_PATH/boot/grub/device.map
for i in init linuxrc; do
    cp -rf /$i $ROOTFS_PATH
done
for i in bin etc lib sbin share usr; do
    cp -a /$i $ROOTFS_PATH
done
for i in dev var proc sys tmp data log; do
    mkdir -p $ROOTFS_PATH/$i
done

3.5 grub 설치 및 grub 구성 파일 만들기

chroot $ROOTFS_PATH <<EOF
mount -a
mdev -s
grub-install $tdisk
grub-install --recheck $tdisk
grub-mkconfig -o /boot/grub/grub.cfg
exit
EOF
  1. 재시작

그것은 말한다:

.
error: disk 'hd0,msdos1' not found
Entering rescue mode...
grub rescue>

가장 이상한 점은 ls명령이 grub-rescue cli에 아무것도 표시하지 않는다는 것입니다. 누군가 말했듯이 디스크 목록이 표시되어야 합니다.

다시 시작한 후 오류

답변1

cp -f /boot/grub/device.map $ROOTFS_PATH/boot/grub/device.map

device.map그렇다면 GRUB 복구 ISO 이미지의 GRUB 파일을 디스크에 복사하셨나요 ? grub-installGRUB 장치 hd0식별자 가 /dev/sda.

를 실행하기 전에 파일이 GRUB를 설치하려는 디스크(즉, 귀하의 경우) 와 실제로 연결되어 있는지 grub-install확인하십시오 .device.maphd0/dev/sda

게다가 왜 이런 일을 하는 걸까요? grub2-mkrescue부트로더가 손실된 다른 가상 머신을 구출하는 데 사용할 수 있는 가상 머신 이미지를 만들려는 것 같습니다. 이것이 의도한 것입니까? 그렇다면 Live CD/DVD Linux 배포판의 ISO 이미지를 사용하여 문제가 있는 VM을 부팅하면 부트로더 프로그램 누락이든 기타 문제이든 원래 문제를 해결할 수 있는 더 넓은 도구 세트와 보다 편안한 환경이 제공됩니다.

특별히 필요 grub2-mkrescue하고 이미 가지고 있다면 X.iso왜 vdisk 기반 설치로 변환하려고 합니까?

관련 정보