
내 /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
사용자는 OS를 시작할 수 있어야 합니다. 부팅되면 실행하여 새 접두사를 사용하여 (디스크의 MBR에 내장될) grub-install
을 재생성합니다 .core.img
더 많은 정보는 그들의 (끔찍한)선적 서류 비치.