再インストールなしでマルチブートシステムをより大きなディスクに移行する

再インストールなしでマルチブートシステムをより大きなディスクに移行する

私のシステムドライブを大きなドライブに交換したいと思うし、デフォルトのオペレーティングシステム(OpenSUSE)またはWindows(ほとんど使用されていない)を再インストールしたくありません。 Windows と Suse のインストールに時間がかかるようで、Suse のインストールの基本設定とカスタマイズを再構築したくありません。

他の起動可能なシステムはテスト用に一時的であるため、損失はわずかです。私のシステムはBIOSブートでMBRディスクを使用し、ブートローダの最初のディスクMBRでGRUB2を使用します。LABEL=代わりにすべてのGRUBセクションが使用され、UUID=これは問題ではありません。繰り返しますが、私の/etc/fstab目的に応じてLABEL=UUIDを変更または複製することは問題ではありません。使えると信じていますケレンジラライブWindowsパーティションを移行します。パーティションを同じサイズと同じ場所に保持します。 Clonezillaを正しく理解すると、そのレプリカのUUIDは同じであるため、Windowsしてはいけない何が起こっているのかを知っているか、少なくとも気にするほどではありません。

私の質問や懸念は次のとおりです。

  1. GRUBをMBRにインストールするとパーティションが変わるため、直接複製できないようです。
  2. SuseのインストールではBTRFSを使用し、ルートパーティションをさらに大きくしたいと思います。
  3. また、Suseパーティションのサイズを増やしたいです/boot(まれに、より多くのスペースが必要な場合もあります/boot)。
  4. partcloneBTRFSファイルシステムとドライバがインストールされているライブUSBディストリビューションが見つかりませんでした。
  5. ただ一度撮りたいです。

私の理解は、partcloneBTRFSシステムを複製するにはシステムがオフラインである必要があることです。 Clonezilla Liveはとにかく起動可能なシステムなので、この方法でなければならないことを知っています。すべてのデータはオペレーティングシステムの移行に関連していない他のディスクにあるため、データの損失は問題になりません。

ツールを見つけましたが、btrfsクローンこれにより、プロセスが簡素化され、成功の可能性が高まります。私はそれをテストし、ライブシステムを複製しました。このプロセス中にシステムをかなり静かに保つことをお勧めします。同様に、パーティションのUUIDは、独自のパーティションのみを表示できるWindows以外のすべてには関係ありません。

質問の短いバージョンは、既存のシステムを新しいディスクに複製し、ケーブルを交換するときに起動可能にするために、新しいディスクとパーティションでどのような手順を実行する必要がありますか?

追加の注意事項として既存の問題これが正しいようです。私の関心事は、rsyncBTRFSシステムを使用するとすべてのスナップショットを取得できず、システムが新しいシステムで「そのまま」になるわけではないということです。btrfs-clone代替を使用するだけで、rsyncすべての問題を解決できます。これが私の主な(唯一の)デスクトップシステムなので、すべての作業を一度に実行したいと思いました。

答え1

これを完了しなければならなかったので、私が望んでいた理想的な状態ではなくても効果があると確信するプロセスを使用する必要がありました。誰かがより良い答えを得るまで、後続のユーザーのために私がしたことにうまく答えます。

最初の問題の説明には、BIOSブートが使用されており、ディスクがDOSまたはMBR形式に分割されているという情報が含まれています。したがって、UEFIブートまたはGPTパーティションの使用によって引き起こされる可能性のある合併症はここでは考慮されません。

注:ほとんどすべての重要なプロセスにはroot権限が必要です。 rootとしてログインするか(このオプションは一部のディストリビューションでは利用できません)、スイッチをrootとして使用するかsudo su、各コマンドの前にsudo。ここでの仮定は、最初の2つのオプションのいずれかを使用して、すべての操作がrootとして実行されることです。すべてのコマンドは、ユーザーアカウントではなくルートアカウントで実行されたかのように作成されます。

これには次のものが必要です。

  • 既存のシステムが稼働しています。
  • システムにアクセスできる2番目のディスク、HDDまたはSSD(内部またはUSB経由)
  • 起動可能なバージョン(CDまたはUSB)クロニズラライブ
  • リアルタイム展開またはリカバリモードエントリ機能を備えたUSBドライブ用の起動可能ディスク。

最後のエントリが同じまたは非常に似たカーネルレプリカを使用するシステムバージョンである場合は、これが最善です。どのツールを選択しても、chroot新しいシステムをインストールして使用できる必要があります。 USBドライブにCDやその他のツールは必要ありません。

1. 関連ディスクの名前を確認します。

を通じて走ったmount | grep '/dev/sd'。現在マウントされているすべてのパーティションが表示されます。 BTRFSファイルシステムの場合は、質問に示すように、特定のパーティションに対して複数のマウントポイントを一覧表示できますon / type btrfs。ルートを複製する過程で、そのパーティションも複製されるため、これらのパーティションはすべて無視できます。別の物理ディスクからマウントされ、移行後もそのディスクが残っている場合は、別のパーティションをスキップすることもできます。

また、必要ですが、見つけるのが難しいのは、Windowsがインストールされているパーティションです。通常、Windowsが最初にインストールされている場合は、Windowsパーティションである可能性が高くなります/dev/sda1。特に、Linuxシステムもそのパーティションにある場合はさらにそうです/dev/sda

見つけるべき一般的なパーティション/homeはとです/boot

2. 新しいディスクに必要なパーティションを作成します。

新しいディスクをUSB経由で接続できる場合は、作業が簡単になります。

  1. ディスクが接続されていない状態でコマンドを実行するlsblk
  2. ディスクを接続してlsblk2回目の実行
  3. 2番目のリストのデバイスは、最初のリストのデバイスではなく、使用されるデバイスです。

注:このプロセス中にいつでも再起動して複数のUSBディスクが接続されていると、デバイス名が変更される可能性が高くなります。続行する前に、必ず正しいデバイス名を確認してください。そうしないと、どこかでデータが失われる可能性があります。

使用されるツールは個人的な選択であり、好みによって異なります。ほとんどのシステムで一般的に使用できる一部のオプションには、、、、、partedなどがあります。gpartedcfdiskfdiskgdisk

パーティションの作成後に実行し、システムpartprobeが新しいパーティションを「認識」していることを確認します。一部のツールはこれを行う必要があることをカーネルに通知し、一部のツールはそうではありません。自分で行うと、実際に完了することが保証されます。

コマンドを再度使用して、パーティションが作成され、カーネルで表示できることを確認してくださいlsblk

3. 新しいパーティションに Linux ファイルシステムを作成します。

BTRFSルートパーティションはmkfs.btrfsこのコマンドで作成でき、作成およびパーティションmkfs.ext4化に使用できます。便宜上、新しいディスクにスワップパーティションがある場合は、このコマンドを使用して新しいスワップパーティションを準備できます。/boot/homemkswap

4. BTRFSルートパーティションをクリーンアップして、レプリケーション操作にかかる時間を短縮します。

システムのスナップショットを一覧表示snapper listし、できるだけ削除を使用してくださいsnapper delete <number>。したがって、ロールバックオプションは非常に制限されます。システムが複製されると、システムは安定した状態になる可能性が高く、以前の状態にロールバックする必要はありません。

BTRFSファイルシステムでバランス操作を実行します。完全なバランスをとるには非常に時間がかかることがあります!特定のパーセント未満の使用率を持つブロックのバランスを取ることに制限することで、待つ時間を短縮しながら多くの作業を完了できます。システムがどれほど汚れているかに応じて、50%が忍耐の限界である可能性があります。私のシステムはしばしばバランスをとるため、より高い割合(90%)を使用でき、許容できる時間がかかります。この-dusageオプションは、バランス操作を指定されたデータブロック比よりも少なく使用するように制限します。

私のシステムでは、コマンドは次のようになります。btrfs balance start -dusage=90 /

5. マウントポイントを作成し、複製用の新しいパーティションをマウントします。

ルートパーティションはすべてのケースで明らかです。また、必要なものは分割/homeです/boot

6. BTRFS以外のファイルシステムの複製

このコマンドは、コピーされたファイルの所有権と権限を保存するために使用できるため、rsync単純なコマンドよりも優れています。プロセスが中断されたら再起動することもできます。cprsync

例は次のとおりです。rsync --archive -hh --hard-links --partial --info=stats1 --info=progress2 --modify-window=1 --one-file-system /boot/ /boot2/

7. レプリケーションルート、BTRFS、パーティション

これbtrfs-cloneプログラムは私が信頼することを決めたツールです。この記事では、使用されているスペースの面で最良の結果が「作成」戦略から得られることを示唆しているので、これは私が選択した戦略です。

コマンドは非常に簡単ですが、これを行う方法は次のとおりです。btrfs-clone --strategy generation / /mnt

手術は少し時間がかかると予想されます。

8. 「新しい」システムを修正してください

/etc/fstab新しいシステムにインストールするパーティションの変更に対応するには、ファイルを変更する必要があるかもしれません。システム全体がまったく同じになる必要はありません。移行プロセス中にタグ名、UUID、デバイス名まで変更できます。

openSUSEの場合、問題の別の原因がある可能性があります。システム設定には、grub.cfgメニューの特定のカーネルパラメータをハードコードするためにGRUB設定中に使用されるファイルが含まれています。ファイルには、/etc/default/grub次のような行を含めることができます。

GRUB_CMDLINE_LINUX_DEFAULT="splash=silent resume=/dev/disk/by-label/Linux_swap quiet mitigations=auto"

注目すべき部分はまさにこの部分だresume=....。これは、ディスク一時停止操作に使用されるスワップパーティションを指します。この行がコメントアウトされずにresume=...含まれていて、新しいディスクのラベル、UUID、またはデバイス名が現在のディスクと異なる場合は、新しいバージョンを反映するように変更する必要があります。これは後の段階で重要になります。

9. 使用クローン属Windowsパーティションを複製します。

私はClonezillaの専門家ではありません。オプションを使用しているようです。クロネズラライブ起動可能なCDに。言語/キーボードオプションに加えて、私が従ったステップは次のとおりです。

    device-device  work directly from a disk or partition to a disk or partition
    Expert  Expert mode: choose your own options
    part_to_local_part  local_partition_to_local_partition
Select the source partition
Select the target partition
    Options menu changes
        add  Reinstall grub on target hard disk
        drop Automatically adjust geometry ...
        drop sfdisk uses CHS ...
        drop Resize filesystem ...
        add  No GUI ...
        add  Remove NTFS volume dirty flag ...
    -sfck   Skip checking/repairing source file system
    -p choose  Choose reboot/shutdown/etc when everything is finished

完了すると、Windowsパーティションが複製され、GRUBが完了します。可能MBRに追加します。

10. 既存のディスクを新しいディスクに交換する

それがまさに運動のポイントです。既存のディスクをマウント解除し、新しいディスクをインストールします。両方のディスクがマウントまたは接続されたままになっていると、その後システムが混乱する可能性があります。あるいは、2つのディスクを使用して新しいディスクを起動ディスクとして使用する場合は、新しいUUIDとラベルを提供するために不要になった古いパーティションを変更または再フォーマットする必要があります。

11. 起動プロセスを再構築します。

私の実験によると、ClonezillaがMBR(存在する場合)に追加するブートローダは不完全です。上記の設定により、古いシステムバージョンはinitrd特にopenSUSEの新しいシステムと互換性がない可能性があります/etc/default/grub。最後に、grub.cfgファイルには新しいシステムと互換性のない要素を含めることができます。前のステップが正常に完了したら、3つのステップをすべて変更するのは簡単なプロセスです。

ライブディスクを実行し、必要に応じて回復オプションを選択します。 UbuntuなどのLive CDを使用している場合は、Liveシステムに移動して端末を開くことができます。ライブシステムで端末を使用するには、sudo suroot 権限が必要です。ほとんどのシステムでは、回復モードはすでにルーティングされています。

以下では、ディスクに/dev/sdx次のパーティションがあるとします。

/dev/sdx1  Windows
/dev/sdx2  `/boot`
/dev/sdx3  `/`
/dev/sdx4  swap

パーティション番号とデバイス名もシステムによって異なり、状況に応じて次の手順を変更する必要があります。

ステップ

  1. 作業ディレクトリを作成します。通常/mnt、すでに存在する可能性があります。
  2. 新しいシステムのルートパーティションをマウントします。
    mount /dev/sdx3 /mnt
  1. 新しいシステムのブートパーティションをマウントします。
    mount /dev/sdx2 /mnt/boot
  1. 既存システムのプロセスを新しいシステムに接続する
    for item in proc sys dev run; do
        mount /$item --rbind /mnt/$item
    done
  1. マウントされたシステムに切り替える
    chroot /mnt
  1. 新しいシステムが通常マウントする別のパーティションをマウントします。
    mount -a
  1. 新規initrd
    mkinitrd
  1. MRBへのGRUBのインストール
    grub2-install /dev/sdx
  1. 新しく作成grub.cfg
    grub2-mkconfig -o /boot/grub2/grub.cfg
  1. 終了してchroot再起動
    exit
    reboot
  1. ライブまたはリカバリシステムのあるUSBドライブディスクを取り外します。
  2. 新しいディスクがWindowsおよびLinuxシステムで起動できることを確認してください。

関連情報