SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|

2006-03-29(Wed) WBEL4 in coLinux成功!!

  さて、実はアドバンスド大戦略にうつつを抜かしつつも、以前からサッパリ動かすコトのできなかった、White Box Enterprise Linux 4(以下、WBEL4)の、coLinux環境へのインストールはチョロチョロと進めていたりする(仕事中に浮いた時間を探しては……)。

  WBEL4はいわゆるRHEL4のクローンである。内容はほとんど同じ。よって、RHELのエクスペリメンタルバージョンであるFedoraとも親戚関係にある。だから「coLinux Fedora」なんてググってインストール方法を模索したりもしたのだが、見つかるのは決まって「本家のFedora-HowTOというWiki」で、コイツは熟読してもどーもよくわからんのだ。

  だが、試行錯誤の末、どうにかこうにかインストールして使えるトコまで持ってきたので、一応ここにインストール方法をメモっておく。

  まずは、別途用意したノートPCにWBEL4をインストールする。

・WBEL4のインストールCDでブート
・linux nofb でスタート
・CD Found で Skip
・Welcome で Next
・Language Selection で Japanese(日本語) で Next
・キーボード設定 で Japanese で 次
・アップグレードの検証 が出た場合 インストール で 次
・インストールの種類 Server で 次
・ディスクパーティションの設定 で Disk Druid で 次
・マウントポイント /、ファイルシステムタイプ ext3、容量 2008MB で OK、次
・ブートローダーの設定 で 次
・ネットワークの設定 で 編集、DHCP オフ、IPアドレス 192.168.0.4、ネットマスク 255.255.255.0 で OK
 手動設定、ホスト名 wbel4-co、ゲートウェイ 192.168.0.1、1番目のDNS 192.168.0.1 で 次
・ファイヤーウォール設定 で 有効にする、すべてチェック、SELinux 無効 で 次
・追加の言語サポート で 次
・タイムゾーンの選択 で 次
・Rootパスワードを設定 で 適当に設定して 次
・パッケージインストールのデフォルト で カスタマイズ で 次
・パッケージグループの選択 で エディタ、テキストベースのインターネット、Webサーバ、メールサーバ、Windowsファイルサーバ、DNSネームサーバ、FTPサーバ、ネットワークサーバ、開発ツール、レガシーソフトウェアーの開発 を選択 ネットワークサーバ の中の dhcp を チェック 1,428M で 次
・インストール準備完了 で 次、続行
・インストール完了、再起動
・実際に一度再起動する(sshのカギを作るため)
・rootでログイン、shutdown -h now で、一度終了する

  次に、そのノートPC上でWBEL4のインストール内容をちょっとイジった後、インストールイメージを抜き出す(私の場合はUSB接続の外付けHDDに書き出した)。

・KNOPPIX(1CD Linux)でブート、端末画面を開く
・まずはcoLinux起動時にデバイスが足りずに止まってしまう問題に対処する。
$ su -
# mkdir wbel4
# mount /dev/hda5 wbel4
# mknod -m 600 wbel4/dev/console c 5 1
# mknod -m 666 wbel4/dev/null c 1 3
# mknod -m 666 wbel4/dev/zero c 1 5
・次にデバイスが正しく追加されない問題、デバイス認識関係の処理で止まってしまう問題に対処する。
# cp -a wbel4/sbin/start_udev wbel4/sbin/start_udev.org
# vi wbel4/sbin/start_udev
make_extra_nodes ルーチンの最後に
for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do mknod $udev_root/cobd$i b 117 $i; done
mknod -m 666 $udev_root/ptmx c 5 2
を追加する。ファイル末尾付近の
scsi_replay、ide_scan、/sbin/udevstart
の行はコメントアウト
・USB接続の外付けHDDを接続、dmesgしてデバイスを調べれば/dev/sda1あたりのはず
・マウントしてWBEL4のインストールイメージを書き出す。
# mkdir usbhdd
# mount -t vfat /dev/sda1 usbhdd
# umount wbel4
# dd if=/dev/hda5 of=usbhdd/root_fs.wb4
※USB1.1しか対応してない母艦だったので、1時間強かかった
# umount usbhdd

  以上で、2GBのWBEL4のインストールイメージを、外付けHDDへ書き出すことに成功した。次は、coLinuxを動かすWindowsマシンにそれをコピーしてcoLinuxを起動する。

・coLinuxの走っているWindowsマシンにコピーする(c:\Program Files\coLinux\wbel4\root_fs.wb4)
・coLinuxの起動設定wbel4.colinux.xmlをdefault.colinux.xmlを元に作る、変更点は以下のとおり(オイラの場合)
13c13
<     <block_device index="0" path="\DosDevices\c:\Program Files\coLinux\root_fs" enabled="true" />
---
>     <block_device  index="0" path="\DosDevices\c:\Program Files\coLinux\wbel4\root_fs.wb4" enabled="true" />
19,20c19,28
<     <!-- block_device index="1" path="\DosDevices\c:\coLinux\swap_device" enabled="true" / -->
---
>     <block_device  index="1" path="\DosDevices\c:\Program Files\coLinux\wbel4\swap_fs.wb4" enabled="true" />
>     <block_device  index="2" path="\DosDevices\c:\Program Files\coLinux\wbel4\work_fs.wb4" enabled="true" />
>     <block_device  index="3" path="\DosDevices\c:\Program Files\coLinux\wbel4\manifestdestiny-source-1.iso" enabled="true" />
>     <block_device  index="4" path="\DosDevices\c:\Program Files\coLinux\wbel4\manifestdestiny-source-2.iso" enabled="true" />
>     <block_device  index="5" path="\DosDevices\c:\Program Files\coLinux\wbel4\manifestdestiny-source-3.iso" enabled="true" />
>     <block_device  index="6" path="\DosDevices\c:\Program Files\coLinux\wbel4\manifestdestiny-source-4.iso" enabled="true" />
>     <block_device  index="7" path="\DosDevices\c:\Program Files\coLinux\wbel4\manifestdestiny-binary-i386-1.iso" enabled="true" />
>     <block_device  index="8" path="\DosDevices\c:\Program Files\coLinux\wbel4\manifestdestiny-binary-i386-2.iso" enabled="true" />
>     <block_device  index="9" path="\DosDevices\c:\Program Files\coLinux\wbel4\manifestdestiny-binary-i386-3.iso" enabled="true" />
>     <block_device index="10" path="\DosDevices\c:\Program Files\coLinux\wbel4\manifestdestiny-binary-i386-4.iso" enabled="true" />
26c34
<     <bootparams>root=/dev/cobd0</bootparams>
---
>     <bootparams>root=/dev/cobd0 ro</bootparams>
40c48
<     <network index="0" type="tap" />
---
>     <network index="0" type="tap" name="coLinux40" />

  とりあえずの起動に重要なのは「block_device index="0"」の行と「<bootparams>」に「ro」を足すことだけだ。でもって、イザ起動!!

$ ./colinux-daemon.exe -c wbel4.colinux.xml

  無事に起動しただろうか?

  結局、ハマったのはudevという、RHEL4から新しく追加になったデバイス自動管理機構のせいであった。一般にLinuxの場合、/devの下に強烈に多くのデバイスファイルが並んでいるが、接続もしてないし、使いもしないのになんでこうも多く並んでいるのだろうと疑問に思ったことはないだろうか? それを必要なものだけに抑えたい、しかも自動的に……というのがudevの役割だ。だから、RHEL4では起動開始時点では/devの下はカラッポで、起動してから必要なデバイスファイルが作られる……のだが、どーもcoLinux環境ではうまく動かないっぽい。で、それをフォローしてやるのが、上記の/sbin/start_udevファイルへの記述の追加だ(udevの思想を無視したムリムリの追加だが、動けばいいのだ!!)。

  ちなみにオイラが使っているcoLinuxのバージョンは、職場のPCが「colinux-0.6.2」、モバイルPCが「colinux20050524(0.6.3-pre13)」。コイツらのベースカーネルは各々2.6.10と2.6.11となっており、WBEL4のカーネル2.6.9と非常に近くとても相性がいい。オイラはこの環境でいままでWBEL3も動かしていたが、WBEL3のカーネルは2.4系列であり、モジュール関係が根こそぎ動かなくてヘコんでいたが、今度はバッチリである。

  画像の説明

  さて、次回は起動したばかりのWBEL4をそこそこ使える状態にしつつ、WBEL3と同時に起動してWBEL3とWBEL4の間で通信なんかしちゃってみたい。ほんじゃまた。