/dev/sda
공간이 많은 빈 드라이브 가 있다고 가정해 보겠습니다 . 또한 이전 Linux 백업의 파티션도 있습니다 /dev/sdb1
. 일반적으로 사용되는 Linux 파일 시스템 등이 포함되어 있습니다 /home
. /usr
주목할만한 점은 EFI 부팅 파티션이 없다는 것입니다.
이 설정에서 우리는 어떻게 할 것입니까?
- 파티션을 에 복사하고
/dev/sda
부팅 파티션을 위한 공간을 남겨둡니다. - 이 파일 시스템으로 부팅하는 부팅 파티션을 만듭니다.
- BIOS에서 여기에서 부팅하려면 grub을 설치하세요.
답변1
먼저 설치 /dev/sdb1
하십시오 /src
. 이미지에 /boot/efi가 없다는 것을 알고 있지만 /boot가 별도인지는 알 수 없습니다. /boot
에 대한 항목이 있는지 확인하십시오 /src/etc/fstab
. 만약 있다면, 우리도 그것을 다시 만들어야 합니다.
파티션을 /dev/sda에 복사하여 부팅 파티션을 위한 공간을 확보하세요.
대신 EFI 부팅 파티션을 먼저 생성하십시오(GPT 테이블, 첫 번째 파티션을 4GB FAT32 파티션으로 만들고 식별을 위해 "EFIboot"로 표시).
파티션을 포맷했는지 확인한 다음( sudo mkfs.vfat /dev/sda1
sda1이 파티션 이름이라고 가정), 얻은 UUID를 기록해 둡니다 sudo lsblk -o UUID /dev/sda1
(UUID라고 부르겠습니다 uuid_efi
).
/boot
에 항목이 있으면 /src/etc/fstab
해당 항목에도 4GB 파티션을 만듭니다(ext4, 특별한 것은 없음). 또한 해당 UUID를 기록해 두십시오(라고 부르겠습니다 uuid_boot
).
sda에 적절한 크기의 파티션을 추가하여 내용을 보관하고 /dev/sdb1
포맷한 다음(팁: 원래 파일 시스템 유형과 동일한 파일 시스템 유형을 사용하면 시스템의 기본 구성에서 이를 계속 사용할 수 있음) 및 /dst
Superior 에 마운트합니다 cp --archive /src/* /dst/
. 시간이 좀 걸릴 수 있습니다!
/dst/etc/fstab
으로 조정할 /boot/efi
금액입니다 UUID=${uuid_efi}
. 항목 자체가 있는 경우 위와 같이 둘 다 /boot
로 조정합니다 .UUID=${uuid_boot}
바인드 /proc
, /sys
및 /dev
대상 :/run
/dst
for mnt in {proc,sys,run}; do
sudo mount -o bind "/${mnt}" "/dst/${mnt}"
done
마지막으로 쉘을 열고 /dst
디렉토리를 다음과 같이 확인하십시오 /
.
sudo chroot /dst /bin/bash
있는 경우 해당 쉘 내에서 설치하십시오 /boot
./boot/efi
mount /boot
mount /boot/efi
짜잔. 이제 실행된 대상 시스템에서 실행 중인 것처럼 모든 것을 볼 수 있는 셸이 생겼습니다.
여기에는 부트로더를 다시 설치하는 일반적인 배포판별 방법이 적용됩니다. 데비안노이드의 경우이 방법, redhatoids의 경우 아마도 yum reinstall grub2-efi
. 다른 배포판의 경우 직접 조사해야 합니다(검색 엔진이 distroname reinstall grub
해당 작업을 수행해야 함). 그런 다음 배포별 수단을 사용하여 최신 커널 패키지를 다시 설치하고 /boot/를 올바르게 채우고 initrds를 재생성하십시오.