저는 Linux를 진지하게 사용한 지 몇 달밖에 되지 않았습니다. 주제에 대한 수백 개의 기사에도 불구하고 운영 체제를 다른 드라이브에 복사하는 간단한 솔루션을 찾을 수 없습니다.
먼저 루트의 직접 복사본을 시도했지만 분명히 실패했습니다.
기본적인 이해를 바탕으로 다음을 시도했습니다.
- 새 SSD를 구입하고 삽입하세요.
- Typelsblk
- sdb라는 드라이브 보기(예:)
- sudo mkfs.ext4 /dev/sdb를 입력하세요.
- fdisk를 사용하여 파티션(예: sdb1)을 만듭니다.
- fdisk를 사용하여 파티션(sdb1)에 GPT 배치
- 콘텐츠 복사:
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.
행운을 빌어요