私は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。
幸運を祈る