Chrome OSのディスクをサイズアップする
fdiskで仮想ディスクのセクタ数、ヘッダ数、シリンダ数の設定は必要なかったので、その部分を削除した。仮想ディスクの方で定義してあるのでfdiskではその値が使われる。(2009/11/28)
ダウンロードしたChrome OSのバイナリ(chromeos-image-999.999.32309.211410-a1.vmdk.bz2
)ではベースとなるLinux(Ubuntu)のルートファイルシステムの大きさが960MB程度しかなく、Chrome OS自身が600MBを使っているので、残りは約300MBしかない。これでは、追加でソフトウェアを入れようとしても足りない場合もある。また、配布されているvmdk(仮想ディスク)ファイルは約3GBで構成されていて(ルート:約1GB、スワップ:約1GB、ステートフル:約1GB)で4GBのUSBメモリに入れると1GB程、未使用となってしまう。
そこで、chromeos-image-999.999.32309.211410-a1.vmdkを4GBのvmdkに入れ替えサイズアップした。
この手法は、別にChrome OSに限らず、LinuxシステムのHDD(やパーティション)が窮屈になった場合にHDD(やパーティション)を引っ越すにも使えるのでメモを取っておく。また、最後のところで触れるが、ディスクのサイズアップだけでなくサイズダウンも可能で、実際650MB程度の仮想ディスクにChrome OSを入れて動作させている。
今回はいつものように、作業が簡単なのでVMwareの仮想マシン環境を使って行ったが、物理的なHDDやUSBメモリを使って直接作業することも可能である。
手順とすれば以下の5ステップとなる。
- コピー先の空の仮想ファイルを作成する:今回は机の中で眠っているエレコムのMF-AU204GGTという4GBのUSBメモリに最終的にコピーすることを考えて、それと同じ大きさの仮想ディスクを用意した。
- パーティションの作成する:今回はルート:約2GB、スワップ:約1GB、ステートフル:約1GBにした。配布されているバイナリはスワップは使っていないのでルート2GB、ステートフル:2GBとかもで可能だろう(未確認。)またWindows PCに挿してUSBメモリとして使えるように、ルート:2GB、ステートフル:1GB、NTFS:1GBなども可能だろう。
- 各パーティションをファイルシステムとしてフォーマットする。ext3を使う。
- ルートファイルシステムをコピー先のパーティションへコピーする。(ステートフルのファイルシステムは実質的に空なのでそのまま。)
- ブートローダをインストールする:Chrome OSではextlinuxというsyslinux系のローダを使っているので、extlinuxをインストールした。(GRUBの場合は“LinuxにおけるgrubによるMBRの修復方法”を参照。)
※ Chrome OSの外部記憶にはルートファイルシステムを納めるパーティションと、設定情報などを保存するためのステートフル・パーティション(/mnt/stateful_partitionにマウントされる)から構成されている。
■ 空の仮想ディスクの作成
コピー先として使う4GBの空の仮想ディスクを作成する。作成するのはVMwareの固定形式の仮想ディスク。flash-image.vmdk と flash-image-flat.vmdk。ディスクの大きさは最終的に書き込むUSBメモリと同じ大きさの4,043,308,544バイト。USBメモリの大きさはfdiskコマンド等で確認できる。
root@vmhost:~/tmp# fdisk /dev/sdd
Command (m for help): p
Disk /dev/sdd: 4043 MB, 4043308544 bytes
125 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 7750 * 512 = 3968000 bytes
:
:
先ず、この容量と同じ大きさのフラットファイル(flash-image-flat.vmdk)を作成する。
root@vmhost:~/tmp# dd if=/dev/zero of=flash-image-flat.vmdk bs=1010827136 count=4 4+0 records in 4+0 records out 4043308544 bytes (4.0 GB) copied, 56.8931 s, 71.1 MB/s root@vmhost:~/tmp# ls -l flash-image-flat.vmdk -rw-r--r-- 1 root root 4043308544 2009-11-27 19:44 flash-image-flat.vmdk root@vmhost:~/tmp#
(ddのパラメータの設定については“ddが2,147,479,553バイト以上を1回で処理できない話”を参照。)
次にエディタで定義ファイル(flash-image.vmdk)を作成する。作成済みのファイルは以下の通り。
root@vmhost:~/tmp# cat flash-image.vmdk # Disk DescriptorFile version=1 CID=11111111 parentCID=ffffffff createType="monolithicFlat" # Extent description RW 7897087 FLAT "flash-image-flat.vmdk" 0 # The Disk Data Base #DDB ddb.virtualHWVersion = "4" ddb.encoding = "UTF-8" ddb.uuid = "11 11 11 11 11 11 11 11-11 11 11 11 11 11 11 11" ddb.geometry.cylinders = "491" ddb.geometry.heads = "255" ddb.geometry.sectors = "63" ddb.adapterType = "ide" ddb.toolsVersion = "8227" root@vmhost:~/tmp#
ここで、ちゃんと定義しないといけないのは、中程の“Extent description”。RWの後の値はディスクの総セクタ数(総容量÷512)。FLATの後はフラットファイルのファイル名。
セクタ数、ヘッダ数、シリンダ数は必ずしも上のfdiskで調べたUSBのジオメトリに合わせる必要ない。決め方については“VMwareの仮想ディスクをLinuxでマウントして使う”を参照のこと。ここではシリンダ数とヘッダ数をLinuxの論理ディスクで使う63、255として、総容量から逆算してシリンダ数を491している。
その他のパラメータに関しては利用しているVMwareの環境に合わせて“適当に”設定しておく。(既にあるフラットディスクの定義ファイルをコピーして来て、それに変更を加える形で作れば、大抵は動作する筈。)
参考までに、最終的にUSBに書き込むと次のようになる。
root@vmhost:~/tmp# fdisk /dev/sdd Command (m for help): p Disk /dev/sdd: 4043 MB, 4043308544 bytes 255 heads, 63 sectors/track, 491 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x7d78abf7 Device Boot Start End Blocks Id System /dev/sdd1 1 122 979933+ 83 Linux /dev/sdd2 123 244 979965 82 Linux swap / Solaris /dev/sdd3 * 245 491 1984027+ 83 Linux Command (m for help): q root@vmhost:~/tmp#
■ パーティションの作成
空の4GB仮想ディスクが出来たので、これをパーティショニングする。今回は
- ルート:2GB
- スワップ:1GB
- ホーム:1GB
とする。仮想ディスクのパーティショニングはホストマシンで
root@vmhost:~/tmp# fdisk flash-image-flat.vmdk
とする方法と、適当な仮想マシン作って空の仮想ディスク(flash-image.vmdk)を仮想マシンに追加し、仮想マシンの中で
root@ubuntu:~/tmp# fdisk /dev/sdc
とする方法がある。(パーティショニングだけでなく、以降の作業を仮想マシンを使わずにLinux上で行う方法と仮想マシン上で行う方法がある。)Linuxに慣れていれば、仮想マシンを使わずにお手軽に作業できるが、仮想マシンを使った方が安全だろう。(ターゲット・ディスクのMBRを書きかえる作業等があるので、ミスをするとLinux自身が起動出来なくなってしまう。)
以下の例では仮想マシンを使って設定する方法を載せておく。
仮想マシンを利用して作業する場合は、新規に使い捨て仮想マシンを作る。仮想マシンのOSはLinuxであれば、どれでも構わないと思うが、私はUbuntu 9.10をインストールした。(大した理由もないが、Chrome OSのカーネルが2.6.30であり、Ubuntu 9.10は 2.6.31なので一番近いかな、と思って。)
以下の記述を分かり易くするためにIDEディスクを使い、
とする。
OSをインストールしたら一旦仮想マシンをShutdownして、Chrome OSの仮想ディスクとコピー先の空の仮想ディスクを接続する。
- IDE 0:1 Chrome OSの仮想ディスク(chromeos-image-999.999.32309.211410-a1.vmdk)
- IDE 1:1 コピー先の空の仮想ディスク(flash-image.vmdk)
この様に構成にすることで、仮想マシンの中では次の様にディスクを使い分けることになる。
準備ができたら仮想マシンを立ち上げ、ターミナル・ウィンドウ開き、“sudo -s”でrootになっておく。準備が出来たら、コピー先の仮想ディスクのパーティショニングにfdiskコマンドを使う。
まず、参考のためにオリジナルの仮想ディスクのパーティションを確認する。
root@ubuntu:~# fdisk /dev/sdb Command (m for help): p Disk /dev/sdb: 2988 MB, 2988442112 bytes 255 heads, 63 sectors/track, 363 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 1 122 972800 83 Linux /dev/sdb2 122 243 972800 82 Linux swap / Solaris /dev/sdb3 * 243 364 972800 83 Linux Command (m for help): q root@ubuntu:~#
(実際には、パーティションの物理セクタと論理セクタが異なっているので、警告メッセージが出るが、知りたい情報のエッセンスは上記の内容となる。)sdb1がステートフル、sdb2がスワップ、そしてsdb3がルート・ファイルシステム。
コピー先の仮想ディスクはステートフルとスワップはそのままにして、残りを全てルート・ファイルシステムに割り当てるようにする。fdiskを起動し、パーティションテーブルを設定する。
root@ubuntu:~# fdisk /dev/sdc Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0xbb5e3dd9. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-491, default 1): 1 Last cylinder, +cylinders or +size{K,M,G} (1-491, default 491): 122 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (123-491, default 123): 123 Last cylinder, +cylinders or +size{K,M,G} (123-491, default 491): 244 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (245-491, default 245): 245 Last cylinder, +cylinders or +size{K,M,G} (245-491, default 491): 491 Command (m for help): p Disk /dev/sdc: 4043 MB, 4043308544 bytes 255 heads, 63 sectors/track, 491 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xbb5e3dd9 Device Boot Start End Blocks Id System /dev/sdc1 1 122 979933+ 83 Linux /dev/sdc2 123 244 979965 83 Linux /dev/sdc3 245 491 1984027+ 83 Linux Command (m for help):
次にsdc2のシステムIDをスワップに変更し、sdc3にbootableフラグを設定して、HDD(仮想ディスク)に書き出す。なお、bootableフラグはChrome OSがブートローダとして使っているextlinuxがbootableフラグのあるパーティションから起動するらしいので設定する(ソースコードとこ見ていないが、bootableフラグを設定しないとブートしなかった。)
Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 82 Changed system type of partition 2 to 82 (Linux swap / Solaris) Command (m for help): a Partition number (1-4): 3 Command (m for help): p Disk /dev/sdc: 4043 MB, 4043308544 bytes 255 heads, 63 sectors/track, 491 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xbb5e3dd9 Device Boot Start End Blocks Id System /dev/sdc1 1 122 979933+ 83 Linux /dev/sdc2 123 244 979965 82 Linux swap / Solaris /dev/sdc3 * 245 491 1984027+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. root@ubuntu:~#
これでコピー先のHDDのパーティショニングは終了。
root@ubuntu:~# ls /dev/sdc* /dev/sdc /dev/sdc1 /dev/sdc2 /dev/sdc3 root@ubuntu:~#
■ ファイルシステムのフォーマット
/dev/sdc1と/dev/sdc3をext3ファイルシステムとしてフォーマットする。この時、各ファイルシステムにラベルを付ける必要がある。Linuxのカーネルが立ち上がる際、ステートフルをマウントする際、このラベルでパーティションを識別している。オリジナルのディスクでは次のようになっている。
root@ubuntu:~# e2label /dev/sdb1 C-STATE root@ubuntu:~# e2label /dev/sdb3 C-ROOT root@ubuntu:~#
このラベル名に合わせて、各パーティションをフォーマットする。
root@ubuntu:~# mkfs -t ext3 -L C-STATE /dev/sdc1 mke2fs 1.41.9 (22-Aug-2009) Filesystem label=C-STATE OS type: Linux : : root@ubuntu:~# root@ubuntu:~# mkfs -t ext3 -L C-ROOT /dev/sdc3 mke2fs 1.41.9 (22-Aug-2009) Filesystem label=C-ROOT OS type: Linux : : root@ubuntu:~# root@ubuntu:~# e2label /dev/sdc1 C-STATE root@ubuntu:~# e2label /dev/sdc3 C-ROOT root@ubuntu:~#
■ ファイルシステムのコピー
オリジナルのルート・ファイルシステム(/dev/sdb3)をコピー先のルート・ファイルシステム(/dev/sdc3)にコピーする。ステートフルのファイルシステムは初期状態では空(lost+foundだけ)なので、何もしなくてOK。
まず、それぞれのファイルシステムをマウントする。
root@ubuntu:~# mkdir src dst root@ubuntu:~# mount /dev/sdb3 src root@ubuntu:~# mount /dev/sdc3 dst root@ubuntu:~# ls src bin dev home lost+found mnt postinst root selinux sys trunk var boot etc lib media opt proc sbin srv tmp usr root@ubuntu:~# ls dst lost+found root@ubuntu:~#
rsyncコマンド使ってコピーする。
root@ubuntu:~# ls dst/ lost+found root@ubuntu:~# rsync -axAXH src/ dst/ root@ubuntu:~# ls dst/ bin dev home lost+found mnt postinst root selinux sys trunk var boot etc lib media opt proc sbin srv tmp usr root@ubuntu:~#
(ファイルのシステムのコピーにはdump+restoreを使う方法もある。昔“PXEによるディスクレス・クライアント(総集編)”で調べた頃はrsyncではSELinuxのACL(Account Control List)を正確にコピーできなかったが、その後、rsyncのバージョンが上がってACLもコピーできるようになっている。それにUbuntuベースのLinuxであれば標準でSELinuxは使っていないので。dump+restoreよりはrsyncの方がお手軽だろう。)
コピーしたファイルシステムのサイズ等を確認する。
root@ubuntu:~# df src/ dst/ Filesystem 1K-blocks Used Available Use% Mounted on /dev/sdb3 957496 591136 317720 66% /home/ubuntu/src /dev/sdc3 1952808 609476 1244132 33% /home/ubuntu/dst root@ubuntu:~# df -i src/ dst/ Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb3 60800 20720 40080 35% /home/ubuntu/src /dev/sdc3 124160 20720 103440 17% /home/ubuntu/dst root@ubuntu:~#
オリジナルに比べてサイズが若干大きくなっているのは、ファイルのサイズだけ割り当てて実際にはファイルの内容が書かれていないようなファイルをコピーする際にサイズ分のファイルとしてコピーするためだろう。例えば、次のようなファイルがある。
root@ubuntu:~# ls -l src/var/log/lastlog dst/var/log/lastlog -rw-rw-r-- 1 root utmp 292292 2009-11-20 06:15 dst/var/log/lastlog -rw-rw-r-- 1 root utmp 292292 2009-11-20 06:15 src/var/log/lastlog root@ubuntu:~# du src/var/log/lastlog dst/var/log/lastlog 12 src/var/log/lastlog 292 dst/var/log/lastlog root@ubuntu:~#
この様にファイルサイズの若干の違いは出てくるが、iノードの数は全く同じなので、ちゃんとファイルシステム全体はコピーされている。
■ ブートローダのインストール
最後に、BIOSからシステムをブートできるようにブートローダをインストールする。Chrome OSで使われているブートローダはextlinuxなので、次のような操作になる。
ブートするカーネルイメージのあるディレクトリを指定してextlinuxというコマンド実行すると“extlinux.sys”というファイルが生成される。
root@ubuntu:~# ls -l dst/boot/extlinux.sys -r--r--r-- 1 root root 14336 2009-11-20 06:16 dst/boot/extlinux.sys root@ubuntu:~# extlinux -i dst/boot/ dst/boot/ is device /dev/sdc3 root@ubuntu:~# ls -l dst/boot/extlinux.sys -r--r--r-- 1 root root 12800 2009-11-27 20:09 dst/boot/extlinux.sys root@ubuntu:~#
extlinuxの実行前後でextlnux.sysの作成日時が変わっている。また、同時にパーティション(この場合は/dev/sdc3)の先頭セクタにブートローダのプログラムの一部が書き込まれる。参考までにダンプを載せておく。
root@ubuntu:~# hd -n 512 /dev/sdc3 00000000 eb 58 90 45 58 54 4c 49 4e 55 58 00 02 00 00 00 |.X.EXTLINUX.....| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 37 8c 3c 00 00 00 00 00 00 00 00 00 00 00 00 00 |7.<.............| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000050 00 00 00 00 00 00 00 00 00 00 fa fc 31 c0 8e d0 |............1...| 00000060 bc b4 7b 06 57 8e c0 b9 08 00 bf b4 7b f3 a5 8e |..{.W.......{...| 00000070 d8 bb 78 00 0f b4 37 0f a0 56 88 16 24 30 20 d2 |..x...7..V..$0 .| 00000080 78 15 b1 06 89 3f 89 47 02 f3 64 a5 8a 0e 18 7c |x....?.G..d....|| 00000090 88 4d f8 cd 13 eb 27 f6 45 f0 7f 75 08 66 8b 45 |.M....'.E..u.f.E| 000000a0 f8 66 a3 1c 7c b4 08 cd 13 72 13 20 e4 75 0f c1 |.f..|....r. .u..| 000000b0 ea 08 42 89 16 1a 7c 83 e1 3f 89 0e 18 7c fb bb |..B...|..?...|..| 000000c0 aa 55 b4 41 8a 16 24 30 cd 13 72 10 81 fb 55 aa |.U.A..$0..r...U.| 000000d0 75 0a f6 c1 01 74 05 c6 06 02 7d 00 66 a1 f8 7d |u....t....}.f..}| 000000e0 bb 00 7e e8 10 00 66 81 3e 2c 7e 6b a2 ce 76 0f |..~...f.>,~k..v.| 000000f0 85 c3 00 e9 46 02 bd 01 00 66 03 06 1c 7c 66 31 |....F....f...|f1| 00000100 d2 eb 4f 55 e8 d5 00 66 0f b7 fd b9 10 00 66 52 |..OU...f......fR| 00000110 66 50 06 53 57 6a 10 89 e6 66 60 8a 16 24 30 1e |fP.SWj...f`..$0.| 00000120 16 1f b4 42 cd 13 1f 66 61 8d 64 10 72 10 5d 66 |...B...fa.d.r.]f| 00000130 01 f8 29 fd c1 e7 09 01 fb 21 ed 75 c6 c3 66 60 |..)......!.u..f`| 00000140 31 c0 8a 16 24 30 cd 13 66 61 e2 c2 c6 06 02 7d |1...$0..fa.....}| 00000150 4f 5d 66 52 66 50 55 53 66 0f b7 36 18 7c 66 0f |O]fRfPUSf..6.|f.| 00000160 b7 3e 1a 7c 66 f7 f6 31 c9 87 ca 66 f7 f7 e8 6b |.>.|f..1...f...k| 00000170 00 29 ce 39 f5 76 02 89 f5 c0 e4 06 41 08 e1 88 |.).9.v......A...| 00000180 c5 88 d6 8a 16 24 30 95 b4 02 bd 10 00 66 60 cd |.....$0......f`.| 00000190 13 66 61 72 17 66 0f b6 c8 c1 e0 09 5b 01 c3 5d |.far.f......[..]| 000001a0 66 58 66 5a 66 01 c8 29 cd 75 a7 c3 4d 75 de 95 |fXfZf..).u..Mu..| 000001b0 d1 2e fc 7d 75 df 31 f6 8e d6 bc b0 7b 8e de 66 |...}u.1.....{..f| 000001c0 8f 06 78 00 be e7 7d ac 20 c0 74 09 b4 0e bb 07 |..x...}. .t.....| 000001d0 00 cd 10 eb f2 98 cd 16 cd 19 eb fe 3b 2e fc 7d |............;..}| 000001e0 76 04 8b 2e fc 7d c3 42 6f 6f 74 20 65 72 72 6f |v....}.Boot erro| 000001f0 72 0d 0a 00 00 00 00 00 00 40 16 00 7f 00 55 aa |r........@....U.| 00000200 root@ubuntu:~#
次にextlinux.sysのあるディレクトリにextlinux.confという構成ファイルを作る必要があるが、これはオリジナルのChrome OSのファイルがコピーされているので、そのまま使う。なお、この構成ファイルの中の記述で、ルート・ファイルシステムのマウントオプションを“ro”から“rw”へ変更することでChrome OSのルート・ファイルシステムへ書き込みができる(=設定変更ができる)ようにも出来る。
最後にHDD(この場合は仮想ディスクだが)のMBRに1次ローダのプログラムを書き込む。
root@ubuntu:~# cat /usr/lib/syslinux/mbr.bin > /dev/sdc root@ubuntu:~#
参考までにMBRに書き込まれた1次ローダのダンプを載せておく。
root@ubuntu:~# hd -n 512 /dev/sdc 00000000 fa 31 c0 8e d8 8e d0 bc 00 7c 89 e6 06 57 52 8e |.1.......|...WR.| 00000010 c0 fb fc bf 00 06 b9 00 01 f3 a5 ea 20 06 00 00 |............ ...| 00000020 52 b4 41 bb aa 55 31 c9 30 f6 f9 cd 13 72 13 81 |R.A..U1.0....r..| 00000030 fb 55 aa 75 0d d1 e9 73 09 66 c7 06 8d 06 b4 42 |.U.u...s.f.....B| 00000040 eb 15 5a b4 08 cd 13 83 e1 3f 51 0f b6 c6 40 f7 |..Z......?Q...@.| 00000050 e1 52 50 66 31 c0 66 99 e8 66 00 e8 21 01 4d 69 |.RPf1.f..f..!.Mi| 00000060 73 73 69 6e 67 20 6f 70 65 72 61 74 69 6e 67 20 |ssing operating | 00000070 73 79 73 74 65 6d 2e 0d 0a 66 60 66 31 d2 bb 00 |system...f`f1...| 00000080 7c 66 52 66 50 06 53 6a 01 6a 10 89 e6 66 f7 36 ||fRfP.Sj.j...f.6| 00000090 f4 7b c0 e4 06 88 e1 88 c5 92 f6 36 f8 7b 88 c6 |.{.........6.{..| 000000a0 08 e1 41 b8 01 02 8a 16 fa 7b cd 13 83 c4 10 66 |..A......{.....f| 000000b0 61 c3 e8 c4 ff be be 7d bf be 07 b9 20 00 f3 a5 |a......}.... ...| 000000c0 c3 66 60 89 e5 bb be 07 b9 04 00 31 c0 53 51 f6 |.f`........1.SQ.| 000000d0 07 80 74 03 40 89 de 83 c3 10 e2 f3 48 74 5b 79 |..t.@.......Ht[y| 000000e0 39 59 5b 8a 47 04 3c 0f 74 06 24 7f 3c 05 75 22 |9Y[.G.<.t.$.<.u"| 000000f0 66 8b 47 08 66 8b 56 14 66 01 d0 66 21 d2 75 03 |f.G.f.V.f..f!.u.| 00000100 66 89 c2 e8 ac ff 72 03 e8 b6 ff 66 8b 46 1c e8 |f.....r....f.F..| 00000110 a0 ff 83 c3 10 e2 cc 66 61 c3 e8 62 00 4d 75 6c |.......fa..b.Mul| 00000120 74 69 70 6c 65 20 61 63 74 69 76 65 20 70 61 72 |tiple active par| 00000130 74 69 74 69 6f 6e 73 2e 0d 0a 66 8b 44 08 66 03 |titions...f.D.f.| 00000140 46 1c 66 89 44 08 e8 30 ff 72 13 81 3e fe 7d 55 |F.f.D..0.r..>.}U| 00000150 aa 0f 85 06 ff bc fa 7b 5a 5f 07 fa ff e4 e8 1e |.......{Z_......| 00000160 00 4f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 |.Operating syste| 00000170 6d 20 6c 6f 61 64 20 65 72 72 6f 72 2e 0d 0a 5e |m load error...^| 00000180 ac b4 0e 8a 3e 62 04 b3 07 cd 10 3c 0a 75 f1 cd |....>b.....<.u..| 00000190 18 f4 eb fd 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001b0 00 00 00 00 00 00 00 00 d9 3d 5e bb 00 00 00 01 |.........=^.....| 000001c0 01 00 83 fe 3f 79 3f 00 00 00 bb e7 1d 00 00 00 |....?y?.........| 000001d0 01 7a 82 fe 3f f3 fa e7 1d 00 fa e7 1d 00 80 00 |.z..?...........| 000001e0 01 f4 83 fe 7f ea f4 cf 3b 00 37 8c 3c 00 00 00 |........;.7.<...| 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200 root@ubuntu:~#
なお、MBRの構造などについては“LinuxにおけるMBRのまとめとバックアップ方法”を参照のこと。
以上で作業は終了となる。一旦、仮想マシンをshutdownして、改めて今作成した仮想ディスク flash-image.vmdk をシステムディスク(IDE 0:0)として付け替えてブートすればChrome OSが立ち上がる。
■ USBメモリに書き出す
最初に書いたように、今回のコピー先の仮想ディスクは実際のUSBメモリと全く同サイズで作ってある。従って作成した仮想マシンのフラットファイルをそのままUSBに書き込めば Chrome OSのブータブルUSBメモリが出来上がる。
root@vmhost:~/tmp# dd if=flash-image-flat.vmdk of=/dev/sdd bs=1010827136 4+0 records in 4+0 records out 4043308544 bytes (4.0 GB) copied, 618.876 s, 6.5 MB/s root@vmhost:~/tmp#