
私は、2 つのドライブ、小さな SSD、および 1 TB HDD を備えたラップトップ (ASUS harman/kardon) を持っています。SSD には Windows がインストールされており、HDD には Linux をインストールしました。
私は Linux パーティションをほぼ独占的に使用しているため、Linux パーティションを他のドライブに切り替えて、Windows を HDD に配置する方法はありますか (Windows ライセンスを失いたくありません)。
Linux イメージをそのまま維持したいので、Windows を最初から復元する必要があっても構いません。
追加のスペースが必要になる可能性があることは理解しており、両方のパーティションを収容するのに十分な大きさの外付けドライブを持っています。
では、両方を最初からやり直さずに、Linux を SSD に、Windows を HDD に切り替えることは可能でしょうか?
試行 1
HDD 上の Linux パーティションを縮小して、Windows パーティション用のスペースを確保しました。その後、HDD に Windows をインストールするために Windows インストール ディスクを作成しました。残念ながら、このインストール ディスクは他の Windows インストールを取得します。また、「今すぐインストール」ボタンしか表示されず、どこにインストールされるのか全くわからないため、まったく役に立ちません。
SSD を物理的に取り外し、HDD から Linux のものをどこか別の場所に保存し、Windows インストールを実行して制御を任せる必要があるようです (そもそも、どのようなユーザーがオペレーティング システムを制御する必要があるのでしょうか?)。他に何かアイデアはありますか? Windows を特定の場所に強制的にインストールする方法はありますか?
アップデート
HDD にパーティションを作成し、そこに Windows をインストールすることができました。次に、SSD を再フォーマットし (ブート パーティションはそのまま残します)、rsync (リンクされた質問から) を使用して、古いドライブから新しいドライブにすべてのデータをコピーしました。
その後、 を実行しましたsudo grub-install <SSD>
が、起動時に grub は HDD 上のインストールのみを取得します (また、常に存在する Windows ブート マネージャーも取得します)。手順が抜けているのでしょうか? 新しい「インストール」から起動するときに、何らかの方法で grub-install を実行する必要がありますか? もしそうなら、そこからどのように起動すればよいのでしょうか?
編集:新しい「インストール」に chroot する必要があるようです。ただし、これを行うと、grub をインストールしたいディスク (/dev/nvme0n1) が失われます。起動時にこのディスクが存在する場合 (存在するはずです)、grub が動作するように設定する方法はありますか?
答え1
というわけで、ようやくこれを実現できました。確かにかなりの作業が必要でしたが、完了し、問題なく動作しているようです (しかも、はるかに高速です)。残っているのは、まだ HDD 上にあるスワップの処理だけです。
ステップ1:
Linux ライブ ディスクを作成し、そこから起動して、Windows のインストールに十分なスペースを確保するために HDD を縮小します (パーティションは最終的にサイズ変更されるため、正確なサイズについては心配する必要はありません)。私は gparted が好きなので Linux ライブ ディスクを使用しましたが、そのドライブはマウントされていてサイズ変更できないため、実行中の Linux システムではそれができませんでした。
注: Windows をインストールした後は、Windows パーティションを移動できません。移動できると想定していました。つまり、Linux パーティションが HDD の先頭にある場合 (私の場合)、そのスペースは無駄になります。すべてをドライブの末尾に移動してから、Windows パーティションを先頭に配置することをお勧めします。Windows パーティションはいつでも拡張できます (ただし、これにはかなり時間がかかります)。
ステップ2:
Windowsのブートディスクを作成する - 実行できますWindowsサイト理想的には、これは 2 番目のフラッシュ ドライブに保存されます。何か問題が発生して最初からやり直す必要がある場合 (必ずそうしなければならないというわけではありません)、新しい Linux ディスクを作成する必要がないためです。
ステップ3:
Windows をインストールし、「今すぐインストール」をクリックして、パーティションを選択できるまで進み、HDD のサイズ変更時に作成したパーティションを選択します (フォーマットする必要はなく、Windows がドライブの空き領域を使用して処理します)。Windows に任せてください。新しい Windows インストールに初めてログインすると、ライセンス キーが検証されます。
ステップ4:
元の Windows インストールから必要なものをすべてコピーします。
ステップ5:
ライブ ディスク (HDD にインストールされているディスクではありません) から Linux を再度起動します。SSD を破壊し、ext4 パーティションを作成します。最初に FAT32 パーティションに触れないようにしてください。これはブート パーティションであり、重要です。
ステップ6:
すべてを新しいドライブに rsync します。これには、古いディスクと新しいディスクをマウントし、すべてを同期することが含まれます (/proc/devices など、いくつかの操作が失敗する可能性がありますが、問題ありません。ただし、root であることを確認してください)。これは次のようになります。
mount /dev/sda2 oldDisk/ #the existing linux partition
mount /dev/nvme0n1p2 newDisk/ #The new, empty partition on SSD
rsync -avz oldDisk/ newDisk
ステップ7:
元の Linux インストールを再起動します (ライブ フラッシュ ドライブでも機能する可能性があります)。
mount /dev/nvme0n1p2 /mnt #Mount the new drive somewhere
mount --bind /dev /mnt/dev/
grub-install --boot-device=/mnt /dev/nvme0n1 #note this is the whole device, not just the patition (akin to /dev/sda)
update-grub #so the new stuff is picked up.
これは概説されているここ。
これですべてです。その後、Linux インストールをクリーンアップしました。Windows ブート マネージャーはようやく正常に動作するようになったようです (数回の再起動サイクルで十分だと思います)。
古い Linux インストールが残っていますが、まだクリーンアップしていません。また、Windows ブート マネージャーも、Windows インストールが欠落しているため少しおかしくなっていたので、クリーンアップする方法もわかりませんが、少なくとも起動はします。