windows migration on VirtualBox(実践編)
あけましておめでとうございます。
前に調べたhdd上にあるwindowsの移行に関して実践してみる。参考にしたページはここ
http://tornweb.dk/blog/?Articles=20080603-Running_existing_Windows_in_VirtualBox_by_Andreas_Moegelmose
イメージで呼び出す方法については明確なページもないので、HDD上にあるWindowsパーティションを呼び出す方法でやってみる。
LinuxをデュアルブートでLinuxをメインにしているけど、たまにWinodwsを使いたいけど再起動はなんてときは良いのでは。
- Winodws側の準備
2つの準備が必要。windowsを起動して実施。
- MergeIDE
現在Windows上のコントローラでは起動に失敗するので、これをダウンロードしてMergeIDE.batファイルを起動する。
- ハードウェアプロファイル
次に、現在インストールしているドライバで失敗しないように、バーチャルマシン用にハードウェアプロファイルを作成します。コントロールパネル->システム->ハードウェア->ハードウェアプロファイルで作成することができます。現在のプロファイルを選択してコピーを行います。新しいコピーには"VirtualBox boot"と、現在のプロファイルには"Stand-alone boot"とリネームします。
あなたの選択の後に現在のハードウェアプロファイルを順序づけます(この順序はWindowsが起動するときに表示される順序を決定します。よく使われる一つとして、"VirtualBox boot"を先に持っていけばよいでしょう)
念のため、「ハードウェアプロファイルをユーザが選択するまで待つ」にチェックを入れておけば、ブート時に誤った選択をすることはないでしょう。
Windows側での作業は以上。次は、Ubuntu内でWindowsを起動します。
- Ubuntu側の準備
- VirtualBox(binary版)のインストール
オープンソース版でないVirtualBoxをダウンロードしインストールします。deb版があるからだいじょうぶでしょう。
- mbr-toolsのインストール
次は、バーチャルマシン用のmbrの作成を行います。
$ sudo apt-get install mbr
- バーチャルマシンの作成
- MBRの作成
自分のディレクトリに戻って、.VirtualBox配下にMBRを作成します。
$ cd ~
$ install-mbr --force .VirtualBox/vboxmbr.mbr
- バーチャルマシンの作成
fdiskでターゲット(windows)の場所を確認します。
$ sudo fdisk -l
Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0x8f800100デバイス Boot Start End Blocks Id System
/dev/sda1 1 6 48163+ de Dell ユーティリティ
/dev/sda2 * 7 7757 62259907+ 7 HPFS/NTFS
/dev/sda3 7758 14131 51199155 83 Linux
/dev/sda4 14132 38913 199061415 5 拡張領域
/dev/sda5 14132 14593 3710983+ 82 Linux swap / Solaris
/dev/sda6 14594 38913 195350368+ 83 Linux
$
この場合、sda2がターゲットなので、-partitionsの後の値を2にする(sda1であれば1ね)。併せて先ほど作ったmbrにも登録します。
$ sudo VBoxManage internalcommands createrawvmdk -filename /home/hoge/.VirtualBox/WindowsXP.vmdk -rawdisk /dev/sda -partitions 2 -mbr /home/hoge/.VirtualBox/vboxmbr.mbr -relative -register
複数のパーティションを持つ場合はこんな感じ。(ここでは、sda1とsda5)
$ sudo VBoxManage internalcommands createrawvmdk -filename /home/hoge/.VirtualBox/WindowsXP.vmdk -rawdisk /dev/sda -partitions 1,5 -mbr /home/hoge/.VirtualBox/vboxmbr.mbr -relative -register
- VirtualBox内のマシンの作成
パーミッションをユーザが動作で切るようにします。[username]や[group]はあなたのユーザ・グループに変えます。
$ sudo chown [username]:[group] .VirtualBox/WindowsXP.vmdk .VirtualBox/WindowsXP-pt.vmdk
- groupの追加
.VirtualBox/WindowsXP.vmdkが、/dev/sda2にアクセスできるよう、VirtualBoxを実行するユーザをdiskグループに追加。
$ sudo useradd -G disk -a `whoami`
もし、まだvboxusersグループに登録していない場合はそちらも追加しておくこと。
ここまで来たら、VirtualBoxを起動して登録します。ファイル->仮想メディアマネージャで追加を選択し、vmdkファイル(.VirtualBox/WindowsXP.vmdk)を選択しOKを押します。
マシンを作成するには、新規を押し、次へをクリック。名前を入力し、OSタイプを設定。今回はXPを選択し次へ。メモリサイズは1000Mで選択して次へ。WindowsXP.vmdkを選択して次へ。そして完了。
ほとんど完了ですが、Windows起動のために"IO APICを有効化"と"VT-x/AMD-Vを有効化"を選択しておきます。バーチャルマシンを選択して設定を押し、高度のタブからこれらのチェックボックスをONにしておきます。
- バーチャルマシンの設定
- ネットワーク
PCnet-FAST IIでOK?
探してください。。
/homeの移行
年末で、やっと時間ができたので、HDDの換装もかねて、
/homeを別パーティションに移行することにした。
用意したHDDは320GのWDのもの。元のHDDは160Gのやつ。2倍の容量だ。。。
さて、なんかのLiveCD(なんでもよい)で起動。
換装先のhddをusbドライブ(ここでは/dev/sdb)に入れて、dd。まるごと移す。
$sudo dd if=/dev/sda of=/dev/sdb bs=65536 conv=sync,noerror
全部移すのに2時間弱。終わったら、HDDを入れ替えて新HDDで起動。
当然ながら無事起動。当然ながら空き領域が残る。
/以下は81%。ほとんどが/home以下。なので、/homeを新パーティションに
移行しよう。
まずはfdisk
$ sudo fdisk /dev/sda
このディスクのシリンダ数は 38913 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
(例. DOS FDISK, OS/2 FDISK)コマンド (m でヘルプ): p
Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0x8f800100デバイス Boot Start End Blocks Id System
/dev/sda1 1 6 48163+ de Dell ユーティリティ
/dev/sda2 * 7 7757 62259907+ 7 HPFS/NTFS
/dev/sda3 7758 14131 51199155 83 Linux
/dev/sda4 14132 38913 199061415 5 拡張領域
/dev/sda5 14132 14593 3710983+ 82 Linux swap / Solarisコマンド (m でヘルプ): n
利用可能フリーセクタがありません
む、できない。確かにPrimaryは4つだが、、拡張領域を増やすだけなのに。。
ちょっと調べてcfdiskでいけるんちゃうってことで、
$ sudo LANG=C cfdisk /dev/sda
で/dev/sda6を増やすことができた。
その後、/dev/MAKEDEVではうまく/dev/sda6が認識できなかったので、
やむを得ずudevのお力をかります。再起動(別の方法があるんだろうな。。)。
再起動後、うまく認識。
デバイス Boot Start End Blocks Id System
/dev/sda1 1 6 48163+ de Dell ユーティリティ
/dev/sda2 * 7 7757 62259907+ 7 HPFS/NTFS
/dev/sda3 7758 14131 51199155 83 Linux
/dev/sda4 14132 38913 199061415 5 拡張領域
/dev/sda5 14132 14593 3710983+ 82 Linux swap / Solaris
/dev/sda6 14594 38913 195350368+ 83 Linux
で、mkfs.ext3。
$sudo mkfs.ext3 /dev/sda6
終わった。マウント。
$sudo mount /dev/sda6 /mnt
できてる。では、既存の/homeと同期。
$sudo rsync -av /home/ /mnt
待つ、ひたすら待つ。。。。
終わったら、recovery modeでrootにdropして起動。
起動したら、最初の/homeは移動。
$sudo mv /home /home.bak
終わったら、fstabの追加なのだが、その前に/dev/sda6のuuidを引っ張っておく。
$sudo vol_id --uuid /dev/sda6
で1行のuuidが出るので、この値を/etc/fstabにある/dev/sda6の(new-uuid)に入れる。
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
# /dev/sda3
UUID=(uuid) / ext3 errors=remount-ro 0 1
# /dev/sda1
UUID=(uuid) /media/sda1 vfat utf8,umask=007,gid=46 0 1
# /dev/sda2
UUID=(uuid) /media/sda2 ntfs defaults,umask=007,gid=46 0 1
# /dev/sda6
UUID=(new-uuid) /home ext3 defaults 0 2
# /dev/sda5
UUID=(uuid) none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
## usbfs is the USB group in fstab file:
none /proc/bus/usb usbfs devgid=125,devmode=664 0 0
ひとまず、/homeなのでdefaultでよいか。
再起動。/homeがマウントで来ていたら、ログイン時にいつも通りに入れるはず。
(ダメな時はパスワード入力後にエラーメッセージが出ます。)
で、問題がなければ、/home.bakは削除。
結果、こんな感じが、
$ df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/sda3 49G 37G 9.1G 81% /
varrun 1013M 228K 1013M 1% /var/run
varlock 1013M 0 1013M 0% /var/lock
udev 1013M 56K 1013M 1% /dev
devshm 1013M 24K 1013M 1% /dev/shm
lrm 1013M 39M 974M 4% /lib/modules/2.6.24-23-generic/volatile
/dev/sda1 47M 124K 47M 1% /media/sda1
/dev/sda2 60G 42G 18G 71% /media/sda2
gvfs-fuse-daemon 49G 37G 9.1G 81% /home/kazken/.gvfs
こういった感じになりました。/がすっきり。
$ df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/sda3 49G 4.7G 41G 11% /
varrun 1013M 228K 1013M 1% /var/run
varlock 1013M 0 1013M 0% /var/lock
udev 1013M 56K 1013M 1% /dev
devshm 1013M 24K 1013M 1% /dev/shm
lrm 1013M 39M 974M 4% /lib/modules/2.6.24-23-generic/volatile
/dev/sda1 47M 124K 47M 1% /media/sda1
/dev/sda2 60G 42G 18G 71% /media/sda2
/dev/sda6 185G 33G 143G 19% /home
gvfs-fuse-daemon 49G 4.7G 41G 11% /home/kazken/.gvfs
windows migration on VirtualBox
物理HDD上にあるWindowsをVirtualBox(host on linux)にて取り込むにはどうすれはいいの?のメモ。
今の状況はこんな感じ
デバイス Boot Start End Blocks Id System
/dev/sda1 1 6 48163+ de Dell ユーティリティ
/dev/sda2 * 7 7757 62259907+ 7 HPFS/NTFS
/dev/sda3 7758 14131 51199155 83 Linux
/dev/sda4 14132 14593 3711015 5 拡張領域
/dev/sda5 14132 14593 3710983+ 82 Linux swap / Solaris
でこの様にしたい。
- 現在のHDDをUSBのHDDに移す。で大容量のHDDに入れ替え。
- 入れ替えたHDDにはUbuntuのみ導入。
- USBのHDDからsda2のパーティションのみイメージで取り込み
- イメージをVirtualBoxに認識させる。ウマー。
この辺が参考になりそう。と思ったら、これはHDD上にあるWindowsパーティションを呼び出す方法なのでだめ。
http://tornweb.dk/blog/?Articles=20080603-Running_existing_Windows_in_VirtualBox_by_Andreas_Moegelmose
移行後の対策としては以下のURLで解説済み。でもこれもHDD上の呼び出し対策くさい。
http://www.virtualbox.org/wiki/Migrate_Windows
ここの最後の投稿は気になる。TrueImageか。。。
http://forums.virtualbox.org/viewtopic.php?t=7456&highlight=&sid=187e3b5b4efd4cfdb2bc16513bed0e29
最悪は、NTFS呼び出しなのかな。。
Wireless LAN
そろそろ買い換えておこう、のメモ
欲しいのはルータタイプとブリッジタイプなんだけど、どこがいいのだろうか。。
うるう秒
個人利用の皆様はあまり関係ないですが、うるう秒に関するポイントのメモ
うるう秒のざっくりとした説明は、このあたりでばっちり。
1.tzdataのバージョン。2005年以降のバージョンであれば問題ないはず。*1
http://h50221.www5.hp.com/cgi/service/knavi/production/doc_disp.cgi?category=1101&doc=jnav015322
2.ntpdのバグ
以下の条件をすべて満たしていると、うるう秒を契機にしてntpdのバグによって上位のNTPサーバとの同期外れが発生する場合がある。この場合はntpdを上げれば良い。
http://www.jp.redhat.com/support/errata/RHBA/RHBA-2007-0189J.html
- ntpdのバージョンが4.2.0.a.20040617-6以前
- ntpdをslewモード(-x)で起動している
- 上位のNTPサーバと比較して0.5秒以上のオフセットが出ている
3.時刻戻り
1台の同期先とNTPで同期している場合、うるう秒を越えた際に時刻戻りが起きて論理矛盾が発生するかも。
3台以上との同期を行っているか、slewモードであれば問題ないはず。
4.「60」秒問題
Linuxのtzdataはうるう秒を「60」で表現します。
23:59:59
23:59:60<=ここ
00:00:00
Solarisなどの場合は23:59:59からじわじわ1秒をずらす(これはslewに似ているがハード側で対処している)ので
つぎは00:00:00となるので問題になりません。
この「60」となるタイミングにAPやミドル側でタイムスタンプを打たれたり、このタイムスタンプを使った評価処理などが行われる場合は、影響が無いか調べておくべきでしょう。