위의 코드를 기반으로 수정 된 솔루션
위의 해결책은 부트 파티션을 파일 시스템의 / (루트)에 마운트하기 때문에 문제없이 완전히 작동하지 않습니다. 따라서 grub은 물론 / boot가 존재하지 않는다고 불평합니다. 이 문제를 해결합니다.
mkdir /mnt/chrootdir
mkdir /mnt/chrootdir/boot
mount /dev/sda1 /mnt/chrootdir/boot
for dir in proc dev sys etc bin sbin var usr lib lib64 tmp; do mkdir /mnt/chrootdir/$dir && mount --bind /$dir /mnt/chrootdir/$dir ; done
chroot /mnt/chrootdir
update-grub2 # inside chroot
보시다시피 모든 사람들이 쉽게 실행할 수 있도록 줄 바꿈을 제거했습니다.
또 다른 (더 간단한) 솔루션
계속 작동하는 데 문제가 있으면 / boot 파티션을 / (루트) 파티션에 복사해야합니다. 이를 위해 Ubuntu 라이브 부팅 DVD로 시스템을 시작하고 터미널을 엽니 다. 그것 안에 유형 :
sudo su
fdisk -l
어떤 파티션이 있는지 확인하십시오. 필자의 경우 sda1은 약 250MB의 내 / boot 파티션이고 약 500GB의 sda5입니다. 아래 명령에서이 값을 사용합니다.
mkdir /mnt/boot/
mount /dev/sda1 /mnt/boot/
mkdir /mnt/root/
mount /dev/sda5 /mnt/root/
cp -R /mnt/boot/ /mnt/root/boot/
데이터 파티션의 부팅 가능 플래그를 설정하고 부팅 파티션의 경우 제거하십시오.
fdisk /dev/sda
b -> 1 (unset the bootable flag for the first partition)
b -> 5 (set the bootable flag for the fifth partition)
w -> write changes to the MBR
컴퓨터는 이제 sda5 내부에서 부팅 파일을 찾습니다. chroot를 다시 할 시간입니다. 이번에는 grub에 필요한 일부 폴더가 있고 Ubuntu 라이브 디스크에서 이미 생성 된 폴더가 있습니다.
mkdir /mnt/chrootdir/
mkdir /mnt/chrootdir/dev/
mkdir /mnt/chrootdir/proc/
mkdir /mnt/chrootdir/sys/
mount /dev/sda5 /mnt/chrootdir/
mount --bind /dev/ /mnt/chrootdir/dev/
mount --bind /proc/ /mnt/chrootdir/proc/
mount --bind /sys/ /mnt/chrootdir/sys/
chroot /mnt/chrootdir/
grub-install /dev/sda
설치가 완료되었습니다. 오류가보고되지 않았습니다.
grub.cnf 파일이 생성되었다는 메시지가 표시되지 않으면 update 명령도 실행하십시오.
update-grub2 /dev/sda
이제 안전하게 재부팅하고 잘 알려진 부팅 메뉴가 다시 나타납니다.
이 솔루션은 물리적 서버에서 가상 머신으로 마이그레이션 한 후 저에게 효과적이었습니다. 누군가가 이것을 유용하게 사용하기를 바랍니다.