VIA C3 SamuelのマシンにCentOSをインストールする試み
Debianに嫌気がさしてきたというか、カーネルアップデートを行ったところ、ネットに繋がらなくなってしまい、さらに、なぜか、grubで古いカーネルを選択してもネットワークに繋がらなくなると言う憂き目に遭った。
という理由はさておき、会社でCentOSをばんばん使っているせいか、最近、DebianよりもCentOSの方が魅力的になってきたような気がするので(yumが劇遅なことはこの際、無視)、CentOS 4.4をインストールしてみようと思ったのですが、VIA C3 Samuelなマシンは、i686互換ではないので、デフォルトのCentOSのインストーラではインストールできないというか、Anacondaがマシンをリセットしてしまうという状況。
仕方がないので、久しぶりにisolinuxなんぞと格闘してみることに。
mkisofs
僕は、Windowsユーザーなので、あえて、茨の道を歩むことにして、Win32版のmkisofsを探す旅に。そうしたところ、Win32 版 MKISOFS 2.xというところで、バイナリを発見。本当は、cygwinでcdrtoolsをビルドすればいいのだろうけど、個人的に、数年前にcygwinとお別れしたので、あえて、軟派にバイナリで良いことにする。ちなみに、このページには、cygwin1.dllに依存しないmingw版のバイナリへのリンクもある。
ISOイメージの作成
まずは、CD/DVDにすべきファイル群を揃える。これをどこか適当な場所に置く。僕の場合は、CentOS 4.4をIIJから取ってくることにしたので、http://ftp.iij.ad.jp/pub/linux/centos/4.4/os/i386/isolinux/下のファイルを取ってきて、同じディレクトリにまとめる。
ただし、今回は、i586の起動ディスクを作成することがメインなので、それに必要なファイル以外は敢えて取ってこない。そうすると、本当に必要そうなのは、
程度か。splash.lssは本当に必要かどうかは不明。なくてもスプラッシュスクリーンが出ないだけのはなし。*.msg系は、必要なら使えば良いし、要らないと思うなら、なくても大丈夫だと思われる。で、ファイルを取捨選択したので、isolinux.cfgはカスタマイズが必要。
default i586 prompt 1 timeout 600 label i586 kernel vmlzi586 append initrd=initi586.img ramdisk_size=8192
ここまですると、起動時には、
ISOLINUX 2.11 2004-08-16 Copyright (C) 1994-2004 H. Peter Anvin boot: _
としか出なくなって、既にCentOS 4.4であることが分からなくなるけど、機能上は特に問題ない。
と前置きはここまで。mkisofsを使って、ISOイメージを作成してみる。下のコマンドラインは、centos_filesというサブディレクトリの中に上記のファイル群を配置した場合のものなので、そこは適宜読み替えてください。
C:\somewhere>mkisofs.exe -no-emul-boot -boot-load-size 4 -o image.iso -b isolinux.bin -c boot.cat centos_files
ちなみに、-b(起動用プログラム)に指定しているisolinux.binや-c(起動カタログ)のboot.catの指定は、centos_filesディレクトリからの相対パス。また、CentOS5では、ブートカタログのファイルが配布されていない。この場合、
C:\somewhere>mkisofs.exe -no-emul-boot -boot-load-size 4 -o image.iso -b isolinux.bin -boot-info-table centos_files
とすれば良い。
そうすると、次のような表示がされる。
Size of boot image is 4 sectors -> No emulation Total translation table size: 2048 Total rockridge attributes bytes: 0 Total directory bytes: 570 Path table size(bytes): 10 Max brk space used 4000 2667 extents written (5 MB)
そして、image.isoが出来ているはず。このimage.isoが正しく機能するかどうかについては、VMwareやVirtualPCで検証すればいい。
実マシン用には、このISOファイルを適当なソフトで焼く。個人的には、ImgBurnがお勧め。
インストール
さてさて、ここで起動ディスクを使って、実マシンでのインストールを開始します。
さっきも書きましたが、起動直後は、
ISOLINUX 2.11 2004-08-16 Copyright (C) 1994-2004 H. Peter Anvin boot: _
というそっけない画面が出ますが、何も気にせず、[Enter]を押してください。
そうすると、最初の画面は、言語の選択です。英語で良いのならそのまま。日本語とかを選びたければどうぞ。
次にキーボード配列。これもお好きにどうぞ。
そうすると、インストール元のメディアの選択に。さっき焼いたCD以外にも既にCentOS 4.4のCD/DVDがあるならそれを選んでも結構ですが、FTPやHTTPを選択すると、メディアなしで、ネットワークインストールできます。
とりあえず、インストール中はDHCPでIPを取得するので良ければ、このままで。
で、次の画面では、ダウンロード元のURLを指定します。今回は、これもIIJを選択しました。
Web site name: ftp.iij.ad.jp CentOS-4 i386 directory: /pub/linux/centos/4.4/os/i386
ここまでやると、めでたく、anacondaが起動してくれます。後はいつも通り。ご自由にどうぞ。
USBメモリ
せっかくなので、USBメモリの場合についても言及しておきます。と、その前に、前のファイル群について説明しておいた方が混乱がないので、説明しておきます。
- isolinux.bin ISOLINUXというCD/DVD用の汎用ブートローダ。名前に反して、LINUXじゃなくともブートできる。
- boot.cat ブートカタログといわれる物。おそらく、ISOLINUXのいろいろなオフセットとかが記録されているんじゃないのか。詳しくは知りません。一応、CD/DVDの場合には必須です。
- vmlzi586 いわゆるカーネルと言われているもの。Linuxの本体とも言えるでしょう。インストーラの場合は、インストーラ専用にカスタマイズされたカーネル。普通は、vmlinuzという名前で、さらに最後のzは一般的に圧縮されたイメージであることを示す。
- initi586.img 一般的にinitrdと言われるもの。カーネルが起動するときに、初期RAMディスク(/にマウントされる)として利用されるファイル群を圧縮した物。展開すれば、ファイルシステムのイメージになる。
USBメモリに展開する場合には、ISOLINUXではなく、SYSLINUXというものを使う。そのため、基本的には、上記のうち、isolinux.binとboot.catは必要なくなる。
SYSLINUX
SYSLINUXは、フロッピーやUSBメモリからの起動時に使うもの。プロジェクト概要によれば、ISOLINUXもこのプロジェクトの一部らしい。
プロジェクトのページからたどれるリンクからダウンロードすると、Windows用のバイナリもwin32/の下に同梱されている。基本的には、システム転送ツールなので、FATやFAT32でフォーマットされたメディアに対して、MS-DOSのsysコマンドの様に適用するだけ。USBメモリの場合でも同じ。MBRの設定や、パーティションのアクティブ化も同時にした方が手っ取り早いので、普通の使い方だと、
syslinux -ma F:
のようになる。ここで、F:は、USBメモリのドライブレター。
そうしたら、あとは、起動に必要なファイル群をコピーするだけ。vmlzi586とiniti586.imgをコピーする。そして、isolinux.cfgをsyslinux.cfgと名前を変えてコピーする。文法はisolinux/syslinuxで同じ。
たったこれだけで、USBメモリからLinuxのインストーラが起動するようになる。問題は、フォーマットの仕方や、パーティションの設定によってはうまく起動しないことがあること。誰がどうやってフォーマットしたか分からないディスクの場合にはパーティションの切り直しから行った方が良いかもしれない。