中古で DELL Latitude E6320 英語キーボードを購入しました。
目的は Arch Linux 専用機にすること。
 
dell-latitude-e6320-2
 
E6320 には Windows7 Pro がプリインストールされていたので、何かのときのために取っておきたい。
でもなんとなく内蔵HDD内でデュアルブートは嫌だなぁと思ったので、とりあえず余っていた 40GB の SATA HDD に ddrescue コマンドで Windows 環境のクローンを作ることにしました。
 
また、この作業の副産物として、作成した外付けHDDから Windows7 をブートできたという次第です。
 
今後のためにやったことをメモしておきます。
 
 
 

環境


 

  • DELL Latitude E6320 (ラップトップ、英語キーボード、Windows7 は日本語)
    intel core i5 (つまり 64bit)
    4GB RAM
    320GB HDD (SATA)
  • 40GB HDD (SATA、Linux MINT が入れっぱなしの状態で他のラップトップから抜き取ったもの)
    これを USB で外付けHDDとして使用できるケースに格納
  • Ubuntu 13.4 日本語Remix DVD
  • Arch Linux 2015-01-01 の iso を使って作ったブータブル USB メモリ (容量2GB)
  • iMac (Ubuntu と Arch を用意するのに使いました)

 
 
 

Mac で Ubuntu DVD と Arch USB を作る


 
Ubuntu は最新ではないです。単に前に焼いたものが手元にあったので 13.4 を使いました。
Ubuntu は Live で起動して GUI の gparted を使いたかったというだけです。
日本語Remix の x86_64 版 iso をダウンロードして、Mac のディスクユーティリティで DVD に焼きました。
 
Arch は毎月前半に最新のものに更新されるので、archlinux-YYYY.MM.DD-dual.iso をダウンロードします(今回使用したのは archlinux-2015.01.01-dual.iso )。
ディスクユーティリティで USB メモリを FAT32 形式にフォーマットとします。
その後、diskutil コマンドと dd コマンドで以下を行います。
 

  1. $ diskutil list で USB メモリの /dev/sd* という識別子を確認。以下は /dev/sdb で認識されているとして話を進めます。
  2. $ diskutil unmountDisk /dev/sdb で USB メモリをアンマウントします。アンマウントしてファイルシステムから切り離されている状態でないと次の dd コマンドが実行できません。
  3. $ sudo dd if=~/archlinux-2015.01.01-dual.iso of=/dev/sdb bs=1m これが USB メモリに書き込むコマンドです。
    「~/archlinux-2015.01.01-dual.iso」の部分は実際にダウンロードした iso ファイルがあるパスに (Finder で iso ファイルを表示させ、ターミナルへドラッグが確実かと)。bs オプションに与える数値の表記ですが、MiB を表す「m」は小文字でないとダメなようです。
  4. 数分待って dd が終了したら $ diskutil eject /dev/sdb で USB メモリを取り外すことができます。

 
 
 

Windows パーティションを移動先よりも小さくする


 
ddrescue を使用するためには、バックアップの対象になっているパーティションのサイズが、移動先のパーティション以下になっている必要があります。
今回対象にしている Windows7 のファイル容量は全体で 21GB 程度ですが、格納されているパーティションのサイズは HDD 全体の 320GB を使用しています。
つまり初期状態(320GB 丸々 Windows パーティションになっている状態)では、移動先の HDD(40GB) よりも大きいため ddrescue でのクローン化はできません。
 
なのでまずは Windows パーティションの縮小を試みます。
(Windows を普段使ってないので理由は分からなかったのですが) Windows にプリインストールされているユーティリティでは Windows パーティションを今回の要件である 40GB 以下にすることが出来なそうに見えました。
ここで粘って Windows 内で処理できるように頑張っても良いと思いますが、僕の場合は Linux の GParted でやってしまったほうが早そうだなと思ったので、Ubuntu の LiveDVD からパーティションを操作することにしました。
 
E6320 の DVD ドライブに Ubuntu DVD を入れた状態で電源を ON し、DELL のロゴが出た直後から F12 を数回押すとブートデバイスを選択できる画面になりました(余談ですが、Dynabook は F2 で選択画面へ移行します。メーカーによって違うようです)。
矢印キーで CD/DVD を選択し、エンターを押すと Ubuntu が DVD から起動するので、「Ubuntu を試す」の方を選んで Live で立ち上げます。
 
GParted の使い方は検索すればたくさん出てくると思うので割愛しますが、要は

  • 先頭パーティション(bootフラグが設定されています)の 160MiB 程度の部分はいじらず
  • 次のパーティション(Windows で言えば C ドライブ)の部分を目的のサイズまで縮小
  • 縮小の際、矢印で操作すると GParted が前方に余計なパーティションを作ってしまったので、数値入力で縮小後の MiB 数を打ち込む
  • ファイルサイズ(今回の場合は 21GB 程度)ギリギリまで縮小すると、Windows を立ち上げた時ファイルを保存する空き領域が全くなくなってしまうので数GB余裕を持たせる。今回は 30GiB のサイズに縮めました

 
GParted 上で「結構時間かかるかもよ」的なメッセージが出てましたが、実行してみると割りとすんなり(1~2分だったような)で終わりました。
 
縮小処理が終わると、

  1. 先頭パーティション boot フラグ
  2. 縮小し終わったパーティション(C ドライブ) 30GiB
  3. 未使用領域(残り全部)

の状態に。
 
Ubuntu の LiveCD の役目はこれで終わりなのでシャットダウンします。
 
 
 

ddrescue でクローン化


 
次は Arch USB の出番です。
 
今度は USB ジャックに Arch iso の入った USB とクローン化に使う 40GB 外付け HDD が接続された状態で PC を起動し、ブートデバイス選択画面で USB Drive を選択します。
 
Arch が立ち上がったら(今回のケースの場合は CPU が intel の 64bit CPU なので) x86_84 を選んで起動。
 
Arch のプロンプトが出てきたら、次の手順を実行します。
 

  1. # lsblk でデバイスの構成を確認します。
    以下は、

    • 内蔵HDD = /dev/sda
    • 移動先HDD = /dev/sdb

    として話を進めます

  2. 後はもう ddrescue で移動先を丸ごと上書きするだけです。
    # ddrescue -v --force /dev/sda /dev/sdb
    ddrescue についてのポイントをいくつか

    • 類似したコマンドで dd_rescue というのがあるようですが、今回使ったのは ddrescue です
    • /dev/sda の総容量は 320 GB ですが、先の GParted によるパーティショニングでファイルが実際に置いてあるパーティションの総容量は 30GB 程度になっており、且つ、それ以外の部分は未使用になっているため、移行先である 40GB の /dev/sdb よりも小さいと判断されます
    • -v オプションによって、実行中の状態を観察できます
    • –force オプション(- が2つ)によって、書き込み先の HDD がどんな状態であろうと問答無用で全体が上書き処理されます。
      実際、今回使用した /dev/sdb の中身は Linux MINT が入っており、複数のパーティションに分割されていましたが、見事にソースである Windows HDD とそっくりそのまま同じ状態の HDD が出来上がりました。正にクローンです

 
40GB 以下のサイズ感でしかもディスクが壊れたりしているわけじゃなかったからだと思いますが、ddrescue の実行時間は 26 分程度でした。
 
終了したら Arch のプロンプトで # shutdown -P now と打ち込んでシャットダウンします。
 
 
 

意図してなかったけど Windows7 を外付けからブートできた


 
完成したクローンHDDを USB ポートにつないでブートデバイス選択で起動したらすんなり起動しました。
ただし、どの PC もそうなるわけじゃないみたいです。
あと、ソフトウエアによってはアクティベーションで引っかかって外付けブート状態では使えないなんてことも容易に想像が付きます。
なので、Windows をメイン OS として使ってるのに外付けからブートというのはあんまりお薦めしません。
僕のように Mac や Linux がメインで、Windows はあってもなくてもいいということであれば、内蔵 HDD を汚さずに外付けからブートできるって棚から牡丹餅的で嬉しかったです。
 
 
 
 

§1711 · Posted By · 1月 25, 2015 · Development · Tags: , , , , , · [Print]