ALIXで遊ぼう!
型番 | PC Engines ALIX.2C2(256MB / 2LAN / USB)(ちょっと古い) |
---|---|
CPU | AMD Geode LX800 (500MHz) |
LAN | VIA VT6105M 10/100 x 2(VIA Rhineドライバで動作可能) |
Storage | コンパクトフラッシュ(16GBを使ってます) |
ALIXとは
ALIXとはPC Engines社のシングルボードコンピュータで、日本ではヤマモトツールワークスが販売しています。ファンレス、ACアダプタ駆動が可能で省スペース&省電力な自宅サーバを構築することができます。パワーはありませんので半分趣味用です USBが1.1ってのがネックでしょう。
一世代前はWRAPという名前で販売されていました(現在廃盤)。
16GBのコンパクトフラッシュを使用するとしてだいたい2まんえんぐらいでx86互換のサーバを組むことが可能です。私はいつものようにVineをインストールして使っています。VGA出力がないためネットワーク環境が整うまではシリアルコンソールで作業を行うので多少の知識が必要です。
久しぶりにALIXの設定をいじったら結構苦労したので備忘録。
インストール
Vine Linux 5.2のインストール
シリアルコンソール上でUSBなどからインストール可能ですが、私はVirtualBox上に最小構成でルートイメージを作成し、ファイルをコピーしました。概要を示します。
- Vine Linux 5.2をVirtualBoxの仮想PCにインストール(とりあえず最小構成)
- 別の仮想PCから上記のディスクをマウントし、ルートディレクトリとブートディレクトリをtarで固める
- インストール先のコンパクトフラッシュに展開しGRUBをインストール
以上で構成は終了です。いくつか設定の変更が必要なので別のLinuxなどから設定ファイル等を修正します。
GRUBをコンソールで使用する設定
GRUBの設定ファイルに記述を追加してシリアルコンソールに対応させます。
標準状態のgrub.confではGRUBメニューがシリアルコンソールに出力されないので、シリアルに出力されるように修正します。
- /boot/grub/grub.conf
default=0 timeout=5 serial --unit=0 --speed=38400 --word=8 --parity=no --stop=1 <-- シリアルの設定 terminal --timeout=2 serial console <-- 2秒待ってシリアルにGRUBメニューを表示 title Vine Linux (Current kernel) root (hd0,0) kernel /vmlinuz ro root=LABEL=/ console=ttyS0,38400,8n1 reboot=bios \ <-- コンソールの設定 resume=swap:/dev/hda2 initrd /initrd.img
この修正でGRUBメニューがシリアルコンソールに表示されるはずです。
/etc/inittabの修正
ログインプロンプトをシリアルコンソールに出力させるためにはinittabも修正します。/etc/inittabのttyの設定を修正します。
標準状態ではrc.dのスクリプトが流れた後、ログインプロンプトが出力されないため停止したようになってしまいます(実際は起動しているため、ネットワーク等の設定が適切ならSSHなどで接続可能です)。
- /etc/inittabの最後の方のgettyの設定を変更します
44 # Run gettys in standard runlevels 45 co:2345:respawn:/sbin/agetty ttyS0 38400 vt100-nav <-- 追加 46 #1:2345:respawn:/sbin/mingetty tty1 <-- コメントアウト 47 #2:2345:respawn:/sbin/mingetty tty2 48 #3:2345:respawn:/sbin/mingetty tty3 49 #4:2345:respawn:/sbin/mingetty tty4 50 #5:2345:respawn:/sbin/mingetty tty5 51 #6:2345:respawn:/sbin/mingetty tty6
その他の落とし穴
例えば仮想環境で作成したルートイメージをコピーした場合、以下のような落とし穴がありました。
おかしい場合(特にネットワークやハードウェア認識)は確認してみましょう。
- /etc/modprobe.d/modprobe.conf
- 不適切なハードウェアのエイリアスが設定されていないかを確認します
- Vine 5.2では特に記述しなくてもネットワークデバイス等は認識されたため、全てコメントアウトしてもOKです。
- /etc/sysconfig/network-script
- MACアドレスが適切かどうかを確認します
- 仮想環境で構築した場合、MACアドレスが異なっています
- /etc/udev
- eth?などの番号を固定させるため、強制的にデバイス番号が変更される
- 仮想環境で構築した場合、その時点でのMACアドレスのデバイスをeth0にするようにしているので、ALIXのデバイスをeth1とeth2に割り当てるようになってしまうようです。
このあたりをチェックする必要があるでしょう。
起動
設定が完了したらシリアル接続(RS-232Cクロス接続)でつなぎ、起動します。いつものLinux起動画面が流れるはずです。ログインプロンプトが出ない場合はシングルユーザーモードで起動して確かめるのもいいでしょう。
とりあえずネットワークが使える状態まで持って行きましょう。
環境のブラッシュアップ
ネットワークが使用可能な状態までたどり着いたら環境を最適化します。最低限必要なのは、
- カーネルの再構築
- initrdを修正して起動時にntpdateを実行するようにする
だと思います。
カーネルの再構築
ここではkernel 2.6で最低限必要な設定をメモしておきます。
- プロセッサファミリをGeode GX/LXにします
Processor type and features --> Processor family --> (X) Geode GX/LX
- ネットワークをカーネルレベルで使用可能にします
Networking --> Networking options --> --- TCP/IP networking [*] IP: kernel level autoconfiguration [*] IP: DHCP support (NEW)
- NFS-Root環境で使用可能にするためにNFS-Rootを有効にします
File systems --> Network File Systems --> <*> NFS file system support [*] Provide NFSv3 client support [*] Root file system on NFS
- VIA Rhineドライバをカーネルに組み込みます
Device Drivers --> Network device support --> Ethernet (10 or 100Mbit) --> [*] EISA, VLB PCI and on board controllers <*> VIA Rhine support
最低限これらのオプションを追加して再構築しましょう。Vineならmkkpkgを使うと楽ですね。
initrdの修正
ALIXは内蔵電池を持たないので(構成によっては付いているのもあります)、電源を抜くたびに内蔵時計がリセットされて2000年1月1日に戻ってしまいます。そこで、initrdの中でntpdateを実行するを参考にしてinitrdを修正します。
完成?
以上でとりあえずの環境が構築されたはずです。通常のPCのようにハードウェア構成の変更はほとんどないのでこの状態でバックアップをとっておけばすぐにこの環境に戻すことができます。