/boot를 새 파티션으로 이동하면 '/boot/grub/i386-pc/normal.mod' 파일을 찾을 수 없습니다.

/boot를 새 파티션으로 이동하면 '/boot/grub/i386-pc/normal.mod' 파일을 찾을 수 없습니다.

파티션 에서 다음 스크립트 로 /boot폴더를 이동 하려고 합니다 .//dev/sdb

parted -s /dev/sdb mklabel msdos mkpart primary ext2 1M 100% set 1 boot on
mkfs.ext2 /dev/sdb1
mkdir /mnt/boot
mount /dev/sdb1 /mnt/boot
cd /boot
find . -depth -print0 | \
    cpio --null --sparse --make-directories --pass-through --verbose /mnt/boot
cd /
umount /mnt/boot
mv /boot /boot.orig
mkdir /boot
echo "/dev/sdb1 /boot ext2 ro 0 2" >>/etc/fstab
mount /dev/sdb1 /boot
parted /dev/sda set 1 boot off
grub-install /dev/sdb
update-grub
reboot

다음 오류가 발생합니다.

error: file '/boot/grub/i386-pc/normal.mod' not found.
grub rescue>

어떤 아이디어가 있나요?

편집하다/boot/dev/sda2: 위 스크립트는 원래 디렉터리가 별도의 파티션(예: )에 있는 경우 제대로 작동하는 것 같습니다. 파티션( ) 과 동일한 파티션에 있는 경우 /에만 실패합니다 /dev/sda1.

Ubuntu 13.04 및 Fedora 19에서 위 스크립트의 다양한 변형을 시도했지만 아직 file '/boot/grub/i386-pc/normal.mod' not found오류를 피하지 못했습니다.

다른 아이디어가 있나요?

답변1

문제는 grub이 찾고 있다는 것입니다/boot/grub/i386-pc/normal.mod 새 파티션에. 이제 파티션의 루트가 마운트되었으므로 /boot파일은 현재 /grub/i386-pc/normal.mod새 파티션 에 있습니다. 해당 파티션에 다시 설치해야 합니다 grub. 또는 임시 조치로 를 호출하여 기호 링크를 생성하면 ln -s . /boot/boot두 이름 중 하나로 파일을 찾을 수 있습니다.

답변2

부팅 파티션(즉, 새 파티션)을 찾으려면 "ls"를 실행하세요(예: (hdX,Y)).

그런 다음 ls (hdX,Y)/usr/lib/grub/i386-pc

거기 문서 봤어?

복구 CD나 USB로 부팅한 다음 grub을 다시 설치해야 할 수도 있습니다. 뭔가 고장났습니다.

답변3

이는 prefix이미지에 하드코딩된 변수가 더 이상 파티션 레이아웃과 일치하지 않기 때문에 발생합니다. 복구 셸에서 다음 명령을 실행하여 이 변수를 임시로 수동으로 무시하고 GRUB를 한 번 로드할 수 있습니다.core.imggrub-install

set prefix=(hd0,1)/boot/grub
insmod normal
normal

접두사는 GRUB 파일(grub.cfg 등)이 있는 경로여야 합니다. 일반적으로 (hdX,Y)/boot/grub단일 루트 파티션이나 (hdX,Y)/grub전용 파티션이 있는 경우 와 같습니다 /boot. mdadm 관리 RAID의 경우 또는 가 hdX,Y될 수 있습니다 .md/xxxmduuid/xxxx...

모든 것이 순조롭게 진행된다면 GRUB는 모듈을 로드하고 이를 로드할 수 있어야 하며 grub.cfg운영 체제를 부팅할 수 있어야 합니다. 부팅한 후 grub-install새 접두사 core.img(디스크의 MBR에 내장될)를 사용하여 Rebuild를 실행합니다.

그들의 (끔찍한)에 대한 추가 정보문서.

관련 정보