ライブブートメディアなしでオペレーティングシステムを新しいドライブに移動/コピーする方法は?

ライブブートメディアなしでオペレーティングシステムを新しいドライブに移動/コピーする方法は?

私は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。

幸運を祈る

関連情報