デバイスクローニング (Clonezilla)
最近は無料でデバイスをクローニングする方法ってほとんどなくなってきていますよね.
今回 Clonezilla という無料ツールを使ったのですが,情報が少なく完遂するまでに奮闘したのでその備忘録として記します.
なおSS等は撮っていないので本記事は文字だけの文章になります.
あとほぼ自分用のメモなので文章が雑です.
実際に使う場合や細かな手順は公式ドキュメントも読んだ方がいいと思います.読め.
何故お前を使うのか
メリット
-
オープンソース・ローカル・完全無料
-
LiveUSBから起動するのでOS起動中のバグに怯える必要がない
-
コマンドラインを確認できる
-
めっちゃ速い(256GBが5分くらい)
デメリット (?)
-
GUI使ってみたらほぼGUIだった - 表示が割と崩壊してる
- 調べると情報がない または間違っている
大まかな手順
-
必要なLiveデバイスを用意する
-
パーティションの作成・フォーマット(partition to local partition の場合)
-
クローニング
-
ブートローダの修復
-
パーティションの拡張・未割り当て領域の割り当て
kwsk
0. 必要な物
-
クローン先のデバイス
-
クローニングソフト (Clonezilla)
-
コピー元OSの回復用デバイス
1. Live USB の作成
要件
- size: 500MB over
- fs: FAT16/32
手順
-
Clonezilla Live の DL (use zip format)
-
展開(root に GPL ファイルが格納されていること)
2. 3. クローニング
device to local device の場合
すべてのパーティションを元のデバイスから同等以上の容量のデバイスにクローニングする場合はこの手法が楽.
但しパーティションの順番もそのままなので,例えば真ん中を拡張したい場合は後からそこよりも後ろのパーティションを delete しなければいけない.
事前のパーティション割り当てやフォーマットは必要なく,クローン先デバイスの内容はすべて削除される(余りは未割り当て領域になる).
-
Clonezilla を立ち上げる
-
to RAM モードがLive USBの内容を最初にすべてRAMに読み込ませる高速モードなためお勧め
-
large fontモードも使ってみたが違いは分からなかった
-
言語・キーボードの設定・Start Clonezilla
- デバイスをまだ接続していない場合はClonezillaが立ち上がってからモード選択までに接続する(忘れてたらモード選択前からやり直す)
-
-
device-device
-
Expart mode
- Beginner mode も使ったがデバイス間の容量が違うと(コピー先の方が大きい場合でも)クソる
-
disk_to_local_disk_clone
-
クローン元デバイス -> クローン先デバイスの順に選択
-
デバイスは
nvme*0
(内臓NVM Express),sda1
(外付けUSB),sdb1
, ... のように表示され,容量や物理デバイス名なども表記されているので注意して選択する- アルファベットはポート,番号はパーティション
-
画面の比率によっては表示が崩壊しているので注意する
-
-
パラメータ選択
-
-r
からチェックを外す(入れるとクローン後の容量表示がバグった) -
その他必要に応じて注意深く設定する
-
-
実行パラメータの選択・実行
-
-k
で実行する(他はクローン後の容量表示がバグった)
-
partition to local partition の場合
個別にパーティションの容量等を計算してよりマニュアリティックに調整したい場合など.
事前にパーティションの割り当て・フォーマットが必要.
2. パーティションの事前作成
Windowsの場合で解説する.
-
Windows用回復ツールが入ったデバイス(OSインストールメディアなど)からコマンドプロンプトを立ち上げる
-
deskpart
でdiskpart.exe
を実行する
以下,必要なコマンドの解説
-
list [argv]
: 認識されている [argv] を一覧-
disk
: 物理デバイス -
volume
: ボリューム -
partition
: 選択したdiskのパーティション
-
-
select [argv1] [###]
: [argv1] (disk/volume/partition) の [###] 番目を選択
disk選択 -> partition選択後
-
delete partition override
: パーティションを強制削除 -
create partition [argv1] size=[argv2]
: パーティションを作成[argv1]:
-
efi
: ESP (Unified Extensible Firmware Interface Partition).数百MB程度.ファイルシステムはfat32
-
msr
: MSR (Microsoft Reserved Partition).数十~百MB程度.ファイルシステムはフォーマットされない -
primary
: プライマリパーティション.その他の最も一般的なパーティション.ファイルシステムはntfs
[argv2]: 作成するパーティションのサイズをMB単位で指定.省略時は割り当て可能な全ての領域
なお,この操作後は自動的に作成したパーティションが選択された状態になる.
-
-
format fs=[argv] quick
: クイックフォーマット.[argv] はfat32
,ntfs
など -
assign letter=[argv]
: ドライブ文字[argv]
を割り当てる
3. クローニング
-
device-device, Expart, partition to local partitionモードでClonezillaを立ち上げる
-
パーティションのソース・ターゲットを選択
-
パラメータ設定
-
e1 auto
とe2
のみを有効にする -
その他の設定も注意して選択すること
-
-
パーティションごとに実行
-
-k
で実行する
-
これら一連の操作をクローニングするパーティションの数だけ繰り返す
(特定のパーティションを拡張したい場合はそこで中断し,拡張を行ってから次のパーティションのクローニングに戻る)
4. ブートローダの修復
何故かシステムドライブはクローン後例外なく
file: \Windows\system32\winload.efi
error code: 0x000000e
でBSoDする.
そのため以下の操作でブートローダを修復する.
-
回復用デバイスからコマンドプロンプトを立ち上げる
-
システムドライブにレター
C:
が割り当てられているか確認する-
diskpart
->list volume
-
割り当てられていない場合,
select volume ###
->assign letter=c
-
他のドライブが
C:
を占有している場合は干渉しないレターに割り当て直す -
必要な操作が終わったら
ctrl-c
でdiskpartを抜ける
-
-
ブートシステムをコピーして再構築する
-
bcdboot C:\Windows /l ja-jp
(/l ja-jp
は環境によって異なる)-
本来は
bootrec /scanos
->bootrec /RebuildBcd
->Y
でいけるらしいが,何故か「指定されたパスが見つかりません」とエラーになるのでこの手法をとる -
ja-jp
の部分を確認するコマンドもあるのだが,忘れた
-
-
再起動・OS選択をして正常に起動できれば完了.
5. パーティションの拡張・未割り当て領域の割り当て
デバイスに未割り当て領域が残っており,割り当てたい場合などは diskpart.exe
から割り当てる.
パーティションの拡張を行いたい場合は未割り当て領域が右側に隣接している状態で行う.これは discmgmt.msc
の方が楽か.
これらの操作は該当デバイスが使用中(OS起動中)でも実行できる.
この記事は筆者のZenn処女作です
あと後書きコメントをそれっぽく書く方法誰か知りませんか
参考
Discussion