파티션 에서 다음 스크립트 로 /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.img
grub-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/xxx
mduuid/xxxx...
모든 것이 순조롭게 진행된다면 GRUB는 모듈을 로드하고 이를 로드할 수 있어야 하며 grub.cfg
운영 체제를 부팅할 수 있어야 합니다. 부팅한 후 grub-install
새 접두사 core.img
(디스크의 MBR에 내장될)를 사용하여 Rebuild를 실행합니다.
그들의 (끔찍한)에 대한 추가 정보문서.