다음 파티션이 있는 머신을 복제했습니다.
Device Type Label
/dev/sda
/dev/sda1 Ext4 boot
/dev/sda2 Linux LVM
/dev/system/ LV system
/dev/system/home LV home
/dev/system/root LV root
/dev/system/swap LV swap
이는 태그로 참조됩니다.
/etc/fstab:
LABEL=root / ext4
LABEL=boot /boot ext4
LABEL=home /home ext4
LABEL=swap /swap swap
그리고 grub.cfg:
menuentry 'openSUSE, with linux <version>' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-<version>-simple-<UUID>' {
insmod ext2
set root='hd0,msdos1'
linux /vmlinuz-<version> root=/dev/mapper/system-root resume=/dev/disk/by-label/swap <other options>
initrd /initrd-<version>
}
이 복제본을 다른 동일한 컴퓨터에 설치하려고 합니다. 설치에 성공했지만 grub 프롬프트의 지침을 따르지 않으면 머신을 부팅할 수 없습니다.
grub> set root=(hd0,1)
grub> linux /boot/vmlinuz-<version> root=/dev/sda1
grub> initrd /boot/initrd.img-<version>
grub> boot
이러한 단계가 필요하지 않은 이미지를 얻고 싶지만 문제가 어디에 있는지 잘 모르겠습니다(grub 구성, 기타 시스템 파일, clonezilla). 지금까지 시도한 것:
- /etc/defaults/grub을 편집하고 "
GRUB_DISABLE_LINUX_UUID=true
" 주석 처리를 제거합니다. search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}
grub.cfg가 생성될 때 추가되는 것을 방지 하려면 grub-mkconfig_lib를 편집하여 이 줄을 주석 처리하세요.- (그리고 재생성
grub.cfg
) - 고급 clonezilla 설치를 선택하고 그 후에 MBR을 다시 설치하도록 지시합니다(옵션 -j1. 옵션 -g auto "클라이언트 디스크 MBR에 grub 다시 설치"가 기본적으로 선택되어 있음).
제가 시도할 수 있는 다른 것이 있나요?
hd0이 "sda1"을 나열한 것을 확인했지만 /boot/grub2/device.map
복제본을 설치했을 때 다른 컴퓨터의 HD가 sda1로 감지되었으므로 이것이 범인이 아닐 수도 있다고 생각합니다.
(여기나 수퍼유저가 이 질문에 더 적합한지 잘 모르겠습니다. 적절하게 마이그레이션되어서 다행입니다.)
답변1
마지막으로 원래 시스템의 부팅 파티션을 파티션 복제하여 다른 시스템에 설치하고 고급 옵션에서 "-j1"을 선택하여 문제를 해결했습니다.
추가 단계는 약간 짜증나지만 최소한 부팅 파티션의 복제본을 복원하는 데는 몇 초 밖에 걸리지 않습니다.
답변2
이 문제를 해결하기 위한 작업 프로세스는 설치/복제에 실패하거나 MBR 디스크가 손상된 후 GRUB(2)를 수동으로 설치해야 한다는 것입니다.
이제 재부팅 후 grub 부팅을 복구해 보겠습니다.
sh:grub>set pager=1 # for paging long command outputs; There must be no spaces on either side of the equals sign.
grub> set root=(hd0,XY)
'grub> insmod /boot/grub/linux.mod # AFAIK, optional step
grub> linux /boot/vmlinuz-4.4.92-36-default root=/dev/sdaXY
grub> initrd /boot/initrd.img-4.4.92-36-default
grub> boot
Linux를 성공적으로 부팅한 후 수정 사항을 영구적으로 만듭니다.
# update-grub
# grub-install /dev/sda #or what ever your system disk is
오류가 발생하는 경우update-grub command not found
걱정하지 마세요. 이것은 작업을 더 쉽게 만들기 위해 설계된 쉘 스크립트일 뿐입니다. 실제로는 다음과 같습니다.
set -e
exec grub2-mkconfig -o /boot/grub/grub.cfg "$@"
grub-install을 실행하면... 시스템이 정상으로 돌아올 것입니다. 저는 Clonezilla 2016-02-10(메인 노트북 디스크를 더 큰 SSD로 마이그레이션)을 사용하여 복제된 OpenSuse Leap 42.2로 이 작업을 수행했습니다.
참고자료:Linux에서 부팅할 수 없는 GRUB 2를 구출하는 방법
Ubuntu에서 손상된 GRUB 2 부트로더 수정
Linux를 부팅하지 않고 사용할 수 있는 대안은 다음과 같습니다.
$ sudo fdisk -l (From this you need to find the device name of your physical drive that won't boot, something like “/dev/sdxy″ - where x is the drive and y is the root partition. Since I was using a software RAID, root (/) was on md1)
$ sudo mount /dev/sdxy /mnt (Mount the root partition)
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo chroot /mnt (This will change the root of executables to your your drive that won't boot)
$ grub-mkconfig -o /boot/grub/grub.cfg (insure that there are NO error messages)
$ grub-install /dev/sdx (NOTE that this is the drive and not the partition. try grub-install --recheck /dev/sdxy if it fails)
Ctrl+D (to exit out of chroot)
$ sudo umount /mnt/dev
$ sudo umount /mnt/proc
$ sudo umount /mnt/sys
$ sudo umount /mnt
인용하다:http://redsunsoft.com/2016/06/how-to-repair-a-server-stuck-at-the-grub-prompt/
답변3
긴 이야기 짧게
GPT에 설치된 Ubuntu에서는 시스템에 로그인한 후 BootRepair를 사용하십시오.
@jam과 같은 문제가 있었지만 내 경우에는 다음과 같은 문제가 있었습니다.
- 우분투 16.04, 복제하고 싶습니다
- 소스 디스크(HDD, 500GB)
- 막 생물 반응기
- Windows 듀얼 부팅
- 대상 디스크(SSD, 256GB)
- GPT
그래서 /home
전체 디스크 대신 Clonezilla를 사용하여 Linux 파티션(시스템의 경우 sda5, 시스템의 경우 sda6)만 복제했습니다.
이를 위해 SSD에 클리어 우분투를 설치하고, HDD에서와 마찬가지로 파티션을 생성하고, ESP(EFI 시스템 파티션)도 추가했습니다. 그런 다음 Clonezilla를 사용하여 이 파티션(HDD 파티션을 SSD로)을 덮어썼습니다. 결과적으로 GRUB 프롬프트가 표시되었습니다.
그럼 내가 그랬어
grub> set root=(hd0,gpt2) # NOTICE: used gptX instead of simple number
grub> linux /boot/vmlinuz-<version> root=/dev/sda1
grub> initrd /boot/initrd.img-<version>
grub> boot
@jam 및 @wp78de가 제안한 대로(그의 참조에서도 언급됨)
그런 다음 그렇게 했는데 오류가 update-grub
계속 발생했습니다.grub-install
grub-install: error: will not proceed with blocklists
그 이유는 GPT 때문입니다. 거기에 유용한 것들이 있어요이것스레드이지만 가장 쉬운 방법은시동 수리. BootRepair가 특별한 작업을 수행하는지 모르겠지만 GRUB 재설치를 확인했는데 이제 모든 것이 잘 작동합니다!
답변4
디스크, 파티션, Clonezilla 버전 등으로 무엇을 시도하든 MBR 부팅(Centos 7)과 똑같은 문제가 있었습니다. - Clonezilla를 사용했음에도 불구하고 스레드에서 앞서 언급한 PartedMagic ISO를 구매하게 되었습니다. , 수동 개입 없이 복제된 디스크가 시작되므로 프로세스가 끝나면 마법이 작동합니다.
크레이그