Linux 부팅 파티션을 다른 드라이브나 파티션으로 이동하고 거기에서 부팅할 수 있습니까?

Linux 부팅 파티션을 다른 드라이브나 파티션으로 이동하고 거기에서 부팅할 수 있습니까?

작동 중인 부팅 파티션/루트 파일 시스템을 다른 드라이브/파티션으로 이동하고 거기에서 부팅할 수 있습니까?

아니면 장치 이름이 변경되어 시스템 작동이 중지됩니까?

답변1

예, 가능합니다. 그것도 쉽지 않습니다. 개별 /boot파티션 및/또는 파티션을 이동하려는 경우 /먼저 fstab 항목 변경을 고려해야 합니다.

cp -p파일을 새 파티션으로 이동하는 경우 복사 시 권한을 유지하기 위해 를 사용하는 것을 잊지 마세요 . 그런 다음 /etc/fstab사용할 파티션의 새 UUID를 조정하십시오 . blkid /dev/sdXnX는 드라이브 이름이고 n은 파티션 수를 실행하여 파티션 uuid를 얻을 수 있습니다 .

또한 blkid를 사용하여 파티션에 레이블을 부착한 다음 레이블을 통해 마운트할 수 있으므로 man blkid더 쉽게 자세한 정보를 읽을 수 있습니다.

파티션을 변경하고 /etc/fstab을 조정한 후 update-grub- available on Debian/Ubuntu 스크립트를 실행하거나 grub-mkconfig -o /boot/grub/grub.cfg새 구성 파일을 생성하고 봇이 있는 첫 번째 하드 드라이브에 grub을 다시 설치해야 합니다.grub-install --recheck /dev/sda

물론, 복사하는 동안 새 / 또는 /boot 파티션을 /mnt에 마운트하고 모든 파일을 복사한 후 / 및 /boot chroot로 마운트하는 것을 잊지 마십시오. 올바르게 수행하려면 다음을 수행하십시오. 그럽 업데이트를 실행하세요.

답변2

/etc/fstab예를 들어 에서 UUID(및 배포와 관련된 기타 관련 파일)를 사용하고 /dev/disk/by-uuid/57c59366-9196-4613-ba53-5ad24dcecfb9커널 부팅 파티션을 이동할 때 부트로더 구성을 조정하면 제대로 작동합니다.

답변3

나는 단지 죽음에 가까워진 오래된 MBR 스타일 디스크에 설치된 Debian Stretch를 옮기고 GPT가 있는 새 디스크로 OS를 옮기기 위해 내가 한 일을 언급하고 싶었습니다. 제 경우에는 ESP(EFI 시스템 파티션)가 이전 디스크에 존재하므로 UEFI를 사용하여 부팅했습니다. 나는 in1t3r 사용자가 위에서 이미 제공한 답변을 따랐습니다.

  1. USB에서 분리된 실시간 정보 얻기
  2. gparted live로 시작하여 이전 드라이브를 선택하고 파티션을 선택한 다음, 파티션을 복사하고,
    새 드라이브를 선택하고 파티션을 붙여넣고 변경 사항을 저장합니다. 루트(및 부팅) 및 ESP(EFI 시스템 파티션)에 대해 이 작업을 수행합니다.
  3. 이전 드라이브에서 운영 체제로 정상적으로 부팅합니다.
  4. sudo gdisk를 실행하고 새 /dev/sdX를 입력한 후 ESP 파티션이 ef00으로 올바르게 설정되지 않았는지 확인하세요. (? 또는 "help" 명령 사용)
  5. sudo blkid 명령을 사용하여 새 드라이브에 복사된 파티션의 UUID를 확인합니다. (blkid는 e2fsprogs 패키지의 일부입니다.)
  6. UUID가 이전 파티션과 다른 경우 새 드라이브에 복사된 새 파티션의 UUID를 변경하고
    tune2fs -U random /dev/sdXy 명령을 사용하십시오.
    실행하라는 메시지가 나타나면 e2fsck -f /dev/sdbXy를 실행하고 그런 다음 une2fs를 실행하십시오.
  7. 새 드라이브 파티션을 마운트하려면 마운트 지점 디렉터리 "/newpart"를 만듭니다.
  8. 새 드라이브 운영 체제 루트(및 부팅) 파티션을 마운트합니다.
    a) 루트 drv sudo mount /dev/sdbXx /newpart
    b) ESP drv sudo mount /dev/sdbXy /newpart/boot/efi
  9. 새로운 grub을 업데이트하고 생성해야 하지만 이를 위해서는
    '/newpart' dev,proc,sys에서 루트 마운트 dev,proc,sys 로 새 파티션으로 chroot해야 합니다
    . sudo mount --rbind /dev /newpart/dev
    sudo mount - -rbind /proc /newpart/proc
    sudo 마운트 --rbind /sys /newpart/sys
  10. 새 OS 부분(/newpart/etc/fstab)에서 /etc/fstab을 변경하고 이전 OS 부분이 루트(/)를 가리키도록 변경하고 새 UUID(있는 경우)로 부팅합니다.
    UUID=[new-part-UUID] , 이전 부분을 주석 처리하세요.
  11. '/newpart'로 chroot, sudo chroot /newpart

  12. a) grub-install --recheck
    c) update-grub
    b) grub-install --recheck
    d) 종료(chroot에서 종료) 실행
  13. dev, proc, sys 제거(재귀 제거에는 첫 번째 마운트 --make-rslave 필요)
    sudo mount --make-rslave /newpart/sys
    sudo mount --make-rslave /newpart/proc
    sudo mount --make-rslave / newpart /dev
    sudo umount -R /newpart/sys
    sudo umount -R /newpart/proc
    sudo umount -R /newpart/dev
    sudo umount /newpart
  14. 이전 OS /etc/fstab이 루트(/)를 가리키도록 수정하고 부팅 ID가 이전과 같이 존재합니다(새 디스크에서 변경하지 않도록 주의).
  15. 재시작,
  16. UEFI-BIOS를 입력하고 새 디스크를 부팅 우선 순위로 선택하십시오.
  17. 새 드라이브 ESP로 재부팅하면 Grub 메뉴가 나타나 첫 번째 메뉴 마법사로 들어갑니다. 새 드라이브의 운영 체제.
    (두 번째 메뉴는 이전 드라이브의 운영 체제용입니다.)

관련 정보