USBでブートしてネットワークインストールという簡単なお仕事ができなかった私
顛末というかメモはこちら→Intel Atom... - Kazutaka Ogaki - FriendFeed。今時のコンパクトなマザーボード(miniITXとかいうらしい)はパラレルなATA(IDE)なんかついてないので、CD(DVD)ドライブが使えないんですね。
以下、USBデバイスのフォーマットの確認の事項以外はごくごく当たり前のことしか書いてません。かつ、あくまで自分用のメモなので、抜けもあるかと思いますんで念の為。
結論から言うと、以下のようなプロセスならば、何処の馬の骨ともわからないUSBメモリを使ったとしても失敗は少ないのではないかと思います。
prerequisite
手順
以下、断りがなければroot権限で作業
利用するUSBメモリがどのようなフォーマットであるか確認する
大抵はUSBメモリは/dev/sdc とかいうデバイス名に割り振られるので、確認してみる
# fdisk -lu /dev/sdc Disk /dev/sdc: 1999 MB, 1999568384 bytes 62 heads, 62 sectors/track, 1015 cylinders, total 3905407 sectors Units = セクタ数 of 1 * 512 = 512 bytes This doesn't look like a partition table Probably you selected the wrong device. デバイス Boot Start End Blocks Id System /dev/sdc1 ? 3020518592 3021025229 253319 e4 SpeedStor 領域 1 は異なった物理/論理開始位置になっています(Linux では無い?): 物理=(190, 120, 0) 論理=(785774, 53, 51) 領域 1 は異なった物理/論理終点になっています: 物理=(544, 125, 44) 論理=(785906, 41, 24) Partition 1 does not end on cylinder boundary. /dev/sdc2 ? 1006562073 2994530118 993984023 98 不明 領域 2 は異なった物理/論理開始位置になっています(Linux では無い?): 物理=(1010, 16, 43) 論理=(261852, 48, 10) 領域 2 は異なった物理/論理終点になっています: 物理=(205, 205, 22) 論理=(779014, 4, 55) Partition 2 does not end on cylinder boundary. : 以下、ずらずらと出てくる :
これでは気味が悪いかもしれないので、マウントしてみて、/etc/mtabの登録内容を見てみると、vfatというタイプであると認識はされている。
# mkdir /mnt/usb # mount /dev/sdc /mnt/usb # mount | grep sdc /dev/sdc on /mnt/usb type vfat (rw)
上記のfdiskコマンドの結果がごくあっさりしたものだった場合、フォーマットが特殊なものになっている可能性があるので、まずフォーマットからやり直す。
たとえば、VSphere4.0のESXi4のイメージをddコマンドで書き込んだ場合にはこんな風にfdiskの結果が変化する。また、mountもできない(VMware ESXiは独自のファイルシステムVMFSを使っているから、それに対応していないOSではマウントできない。下記/dev/sdc7のあたり)
# fdisk -lu /dev/sdc Disk /dev/sdc: 1999 MB, 1999568384 bytes 64 heads, 32 sectors/track, 1906 cylinders, total 3905407 sectors Units = セクタ数 of 1 * 512 = 512 bytes デバイス Boot Start End Blocks Id System /dev/sdc1 8192 1843199 917504 5 拡張領域 /dev/sdc4 * 32 8191 4080 4 FAT16 <32M /dev/sdc5 8224 520191 255984 6 FAT16 /dev/sdc6 520224 1032191 255984 6 FAT16 /dev/sdc7 1032224 1257471 112624 fc VMware VMKCORE /dev/sdc8 1257504 1843199 292848 6 FAT16
USBメモリのフォーマット
まず、本当にUSBメモリのデバイス名が /dev/sdc とかで正しいのかを確認する。現在マウントされていなければ、まず大丈夫なので、dfコマンドを実行して出てこなければOK
フォーマットは、FAT16, FAT32とかいろいろあるようだが、Linuxの世界ではvfatで指定すれば大丈夫なようだ。何もオプションをつけないと、既存のファイルシステムに上書きできないので、-Iのオプションをつけた。
# mkfs -t vfat -I /dev/sdc
で、必要最小限のものをUSBに焼く
なにがminimumかっていうと、diskboot.imgですかね。これがあれば、ネットワークインストールもCDなどのメディアからのインストールも開始可能。
よく使うrikenさんのところから、持ってきてみました。
# wget http://ftp.riken.jp/Linux/centos/5.4/os/x86_64/images/diskboot.img # dd if=diskboot.img of=/dev/sdc
通常なら、これだけでUSBのインストールメディアの出来上がり。*1
まったくの余談 diskboot.imgの中身
# mount -o loop diskboot.img /mnt/usb # ls -l /mnt/usb 合計 9306 -rwxr-xr-x 1 root root 292 10月 1 16:53 boot.msg -rwxr-xr-x 1 root root 919 10月 1 16:53 general.msg -rwxr-xr-x 1 root root 7397850 10月 1 16:53 initrd.img -rwxr-xr-x 1 root root 10648 10月 1 16:53 isolinux.bin -r-xr-xr-x 1 root root 9660 10月 1 16:53 ldlinux.sys -rwxr-xr-x 1 root root 94600 10月 1 16:53 memtest -rwxr-xr-x 1 root root 817 10月 1 16:53 options.msg -rwxr-xr-x 1 root root 517 10月 1 16:53 param.msg -rwxr-xr-x 1 root root 490 10月 1 16:53 rescue.msg -rwxr-xr-x 1 root root 63803 10月 1 16:53 splash.lss -rwxr-xr-x 1 root root 338 10月 1 16:53 syslinux.cfg -rwxr-xr-x 1 root root 1932284 10月 1 16:53 vmlinuz
こうなるとinitrd.img(initial RAM Disk image)の中身が見たくなるのは人情ですが、たしかMiracle Linuxのブログかなんかで書いてあったような。*2
こんな記事もLinux 初期 RAM ディスク (initrd) の概要。最近は圧縮されたcpioのアーカイブになってるので、いきなりマウントはできんのですか。そうですか。その代わり単に解凍するだけ。つーことは、上記のファイルのいずれかがcpio相当の機能を持ってるってことですか。isolinux.binかldlinux.sys、vmlinuz(カーネル)だっけ?memtestを実行してみたくもあり、、、
ちなみにsyslinux.cfgの中身。grepしたところでは、このファイルを読むのはldlinux.sys。
default linux prompt 1 timeout 600 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label linux kernel vmlinuz append initrd=initrd.img label text kernel vmlinuz append initrd=initrd.img text label ks kernel vmlinuz append ks initrd=initrd.img label memtest86 kernel memtest append -
....仕事しよ。