라이브 부팅 미디어 없이 운영 체제를 새 드라이브로 이동/복사하는 방법은 무엇입니까?

라이브 부팅 미디어 없이 운영 체제를 새 드라이브로 이동/복사하는 방법은 무엇입니까?

저는 Linux를 진지하게 사용한 지 몇 달밖에 되지 않았습니다. 주제에 대한 수백 개의 기사에도 불구하고 운영 체제를 다른 드라이브에 복사하는 간단한 솔루션을 찾을 수 없습니다.

먼저 루트의 직접 복사본을 시도했지만 분명히 실패했습니다.

기본적인 이해를 바탕으로 다음을 시도했습니다.

  1. 새 SSD를 구입하고 삽입하세요.
  2. Typelsblk
  3. sdb라는 드라이브 보기(예:)
  4. sudo mkfs.ext4 /dev/sdb를 입력하세요.
  5. fdisk를 사용하여 파티션(예: sdb1)을 만듭니다.
  6. fdisk를 사용하여 파티션(sdb1)에 GPT 배치
  7. 콘텐츠 복사:sudo rsync -WavxHAX / --exclude={"/media/*"} /media/Rob/3a9142f5-8916-406e-87b0-4ec87d7a3d12/

(드라이브가 미디어에 설치되어 있다고 가정) 다음과 같은 설치 단계를 건너뛰었을 수도 있습니다.

sudo mount /dev/sdb1 /mnt

GPT이것은 메모리에서 기록되었으며 파티션 생성 및 포맷과 같은 단계가 순서 없이 시도되었지만 ext4어쨌든 알아낼 수 없었습니다. 어쨌든 기본 개념은 위에 설명되어 있습니다. 추가 다운로드나 라이브 USB가 필요하지 않습니다.

누군가 이것을 달성하는 방법을 말해 줄 수 있습니까?

답변1

시스템 전원이 켜져 있다고 가정sda귀하의 새 드라이브는심천개발은행용량이 충분하다면 dd를 사용하여 기능적으로 동등한 OS 사본을 얻는 것이 좋습니다.

dd if=/dev/sda of=/dev/sdb bs=128M

bs디스크 크기/기본 설정에 따라 (블록 크기) 매개변수를 조정 해야 할 수도 있습니다 . 혼동하지 않도록 주의하세요: if소스용, of대상용

복사가 완료되면 BIOS/EFI 설정을 변경하여 sdb에서 부팅한 후 즉시 sdb 디스크를 사용할 수 있습니다. 먼저 여기서 디스크를 식별해야 합니다.

답변2

/dev /proc /sys에 설치된 항목으로 인해 런타임에 운영 체제를 복사할 수 없습니다.

하지만 ext4를 사용하면 파티션을 다른 마운트 지점에 마운트할 수 있습니다.

또한 이미 설치된 폴더를 바인딩할 수도 있습니다.

# create mbr table on new SSD printf '%s\n' o w |sudo fdisk /dev/sdb;

# create partition on it printf '%s\n' n p 1 '' '' y w |sudo fdisk /dev/sdb;

# write ext4 fs on new partition sudo mkfs.ext4 /dev/sdb1;

# create folder where to bind / (root) sudo mkdir my_os; # mount new partition sudo mount /dev/sdb1 /mnt/; # mount|bind actual system to /mnt sudo mount --bind / my_os/; # like it will clone / to my_os but excluding sub mountpoints /dev /proc /sys # copy the system sudo cp -arxpf my_os/* /mnt/;

# unmount my_os sudo umount my_os;

# remove created folder my_os sudo rm -r my_os;

# change partition UUID inside new system oldUUID="6e92d1d9-ca30-42d9-9e14-c749d0f349b5"; newUUID="$(eval $(sudo blkid /dev/sdb1|awk '{print $2}') ; echo $UUID)";

# loop over files that contains old UUID replace oldUUID by newUUID sudo grep -rl "${oldUUID}" /mnt/{etc,boot} | while read f;do sudo sed -i --follow-symlinks "s/${oldUUID}/${newUUID}/g" "${f}" done

이제 듀얼 부팅으로 사용하려면 grub을 업데이트하면 됩니다.

sudo update-grub;

다른 컴퓨터에서 사용하려면 하드 드라이브에 grub을 설치하여 시작해야 합니다.

  • 첫 번째

현재 Grub을 새 하드 드라이브에 설치하면 (약간 위험함)

sudo grub-install /dev/sdb;
sudo update-grub;
# unplug new SSD
sudo grub-install /dev/sda;
sudo update-grub;
  • 두번째

SSD에 Chroot를 설치하고 Grub을 설치한 다음 거기에서 업데이트하세요!

# mount SSD in not mounted to /mnt
sudo mount /dev/sdb1 /mnt/; 
# prepare chroot envirement
sudo mount -t proc /proc /mnt/proc;
sudo mount -t sysfs /sys /mnt/sys;
sudo mount --rbind /dev /mnt/dev;
sudo cp -f /etc/hosts /mnt/etc/;
sudo cp -f /etc/resolv.conf /mnt/etc/resolv.conf;
sudo chroot /mnt rm /etc/mtab 2> /dev/null ;
sudo chroot /mnt ln -s /proc/mounts /etc/mtab ;
# get SSD path by UUID , probably it's /dev/sdb 
grub_install_target="$(sudo chroot /mnt blkid |grep "${newUUID}"|awk -F: '{print $1}')";
grub_install_target="${grub_install_target:0:8}";
((${#grub_install_target})) || echo you cannot continue;
# install grub and update it
sudo chroot /mnt grub-install "${grub_install_target}";
sudo chroot /mnt update-grub;
# unmount SSD before unluging it 
sudo umount -fl /mnt;

새 사본을 실행하면 Google에서 스왑 파일을 추가합니다(선택사항).

그러나 누군가 말했듯이 새로 설치하면 매우 빠르고 좋습니다. USB에 액세스할 수 없는 경우 grub-imageboot 또는 grml-rescueboot를 고려하면 실제 하드 드라이브에서 iso를 부팅한 다음 설치할 수 있습니다. 새로운 SSD.

행운을 빌어요

관련 정보