ちょっと迷った瞬間。

Linuxの高いスキルを持った数少ない内の一人がとうとう今月末で辞めるというのを偶然会った際に聞かされた。一緒にどう?と言われてちょっと迷った。どこに行くのかはまだ聞かなかったが、そっちの方が確かに面白そうなんだよなぁ。とりあえず現時点ではやる事・やってない事があるので、結局は辞めるつもりは無いのだが、その後の飲み会でそんな話 1 をしたら、前の上長に「お前、バカ言ってんじゃないよ。これから結婚するんだろ?」と言われた。まぁその通りなのだが、結婚後の事を考えてと言われると、むしろ安月給なので 2 別に今の会社にこだわる理由は全くないし、むしろ会社変えた方が結婚後の事を考えると良いかなぁと思った。

1

誘われた話のこと。

2

やってる仕事量はアホみたいに多いが、直接会社の業績に結びつかない部分の方が多いから、会社にとっての貢献度は低いのだろうけど。

居眠り。

月曜はちょっと忘れ物をしてオフィスに戻って、さっさとやって帰ろうとしたら居眠りしてしまい、残っていた最後の人に声をかけられて起きた。0:05!そんな時間じゃ終電に間に合わん、ということでタクシーに乗って新宿まで行き、そこから高速深夜バスに乗って帰った。

今日は寝ちゃアカンよ、と言われたのに、大江戸線乗って起きたら練馬だった…。幸い、新宿に出たらまだ京王線の終電に間に合ったので終電で帰れたのだが。何をやっとるんだワシは。

Windows隔離計画

Armadillo-JにDHCPサーバーを移行完了したので、これで晴れて24/365で自宅内でどこのEthernetポートに挿しても自動的にIPアドレスを割り当てられるようになった 1 。でだ、籍入れて嫁が越してくるとWindowsが我が家に復活する。嫁にLinuxを、しかもDebianを使わせるようにしようと企てているものの、一朝一夕ではどうにもならん。なのでWindowsは確実に自宅内に入ってくる。ならば自宅内で知らんMACアドレスの機器やWindowsと分かっている機器には別のセグメントのIPアドレスを割り当てられないだろうか。ちょっとudhcpの仕様を調べてみるか。自宅内の内部セグメント用ファイアウォールにはOMS 2 を使っているのでタグVLANを使えるのだが、その下のスイッチがタグVLANに対応しとらん 3 。空きポートも少なくなってきたし、タグVLAN使えるスイッチの購入を検討しようかな。んで、自宅内で検疫ネットワークを実現すると。w

無線LANはFONルータで構築してみるかな。 4

1

dhcp.leasesファイルが作られない問題が残っているものの、なんとなく目星がついているので、そっちは今日帰宅後に検証してみる。

2

OpenMicroServerの事。

3

ポートLANには対応してるのでそっちは大変役立っているが。

4

こっちもすでに分かっている機器は別の無線LANルータでアドレスを割り当てるようにしてるので。

僕の彼女はサイボーグ見てきた。

綾瀬はるかは可愛いのだけど、どうも「ドラえもんニセ最終回」と被ってる。ニセ最終回を見たことが無ければ、あーなるほどね、という印象を持つかもしれないが、アレを見ていると二番煎じかなぁという感想。サイボーグであることは序盤明かさないという脚色の方が良かったのではないかなぁと思ってみたり。伏線が全て開かされてしまったのが物足りなさを感じるのか、話の流れにちょっと無理があるのかイマイチなのか、まぁどちらにしても、ちょっと不満足。

armadillo-JにDHCPサーバを移行。

やる暇無くて、ずっとPendingしていた、玄箱で稼働させていたISC DHCPサーバからArmadillo-JにDHCPサーバを移行する計画を昨日今日で重い腰上げてやっとこさ完了。Debian Sidのudhcpのソースパッケージを持ってきて、ソースツリーをArmadillo-J用のツリーに突っ込んでクロスコンパイルしてarmadillo-Jに突っ込んだ。

環境構築

アットマークテクノのサイトにある通り。 Armadillo-Jのダウンロードサイト から下記を取得。

ソースコード展開

Kernelソースのリンクのやり方を間違えていたので最初、ちゃんとビルドできずにハマった。シンボリックリンクの名前が、”linux-2.4.22.x”という形式でないとちゃんとビルドできなかったので、そのまんま、その形でリンクを張った。

$ tar zxf atmark-dist-20060801.tar.gz
$ tar zxf linux-2.4.22-uc0-aj5.tar.gz
$ cd atmark-dist-20060801
$ ln -s ../linux-2.4.22-uc0-aj5 linux-2.4.22.x

クロスツールチェーンの導入

$ cd ../
$ sudo sh ./arm-elf-tools-20030314-fix20060808.sh

ビルド

現在、Armadillo-Jは、ブート後も簡単に変更分を反映できるように普通のBaseイメージにせずに、JFFS2ファイルシステムにしているのだが、プロダクトの選択時 1 に、Armadillo-J.JFFS2を選択すると、ビルドに失敗する。なので、プロダクト選択時には”Armadillo-J.Base”を選択した。Baseで作成されたイメージを固める前のファイルをJFFS2を使っているArmadillo-Jに持っていってもちゃんと動く。make configの選択肢は ユーザマニュアル に沿ってやれば良し。

取り合えず、ちゃんとビルド出きることを確認する。

$ cd atmark-dist-20060801
$ make config
$ make dep all

udhcpのソースパッケージ取得

確認を取れたら、Sidのudhcpのソースパッケージを取得する。今回、udhcpdを選択したのは下記理由。

  • Atmark-distには、NETtel DHCP Server 2 とISC DHCP Server 3 が含まれているのだが、前者は、MACアドレスを指定してIPアドレスを固定させる方法がない。

後者はソースツリーに含まれてはいるもののデフォルトではビルドができない。そもそもデカすぎる。ということで、Debianから組込システム向けのDHCPサーバであるudhcpを取得してビルドしたわけである。

$ cd ..
$ apt-get source udhcp
$ cp -i udhcp-0.9.8cvs20050303/ atmark-dist-20060801/user/udhcp

ビルド用設定ファイルの修正

atmark-dist-yyyymmdd/user/ディレクトリ以下に、ソースコードを突っ込んだだけではビルドできない。なので、以下のファイルを修正する。ncursesのメニュー形式でコンパイルするので、選択出きるようにするわけである。

  • atmark-dist-20060801/config/config.in

$ diff -u config.in.org config.in
--- config.in.org   2006-08-16 19:11:04.000000000 +0900
+++ config.in       2008-06-01 19:29:43.000000000 +0900
@@ -291,6 +291,7 @@
 bool 'brcfg'                       CONFIG_USER_BRCFG_BRCFG
 bool 'bridge utils'                CONFIG_USER_BRCTL_BRCTL
 bool 'dhcpcd'                      CONFIG_USER_DHCPCD_DHCPCD
+bool 'udhcp'                       CONFIG_USER_DHCPD_UDHCP
 if [ "$CONFIG_USER_DHCPCD_DHCPCD" = "y" ]; then
    bool '  dhcpcd link-local support'      CONFIG_USER_DHCPCD_LLIP
 fi
  • atmark-dist-20060801/user/Makefile

$ diff -u Makefile.org Makefile
--- Makefile.org    2006-06-10 19:52:27.000000000 +0900
+++ Makefile        2008-06-01 19:30:05.000000000 +0900
@@ -72,6 +72,7 @@
 dir_$(CONFIG_USER_DHCPCD_DHCPCD)            += dhcpcd
 dir_$(CONFIG_USER_DHCPCD_NEW_DHCPCD)        += dhcpcd-new
 dir_$(CONFIG_USER_DHCPD_DHCPD)              += dhcpd
+dir_$(CONFIG_USER_DHCPD_UDHCP)              += udhcp
 dir_$(CONFIG_USER_DIALD_DIALD)              += diald
 dir_$(CONFIG_USER_DISCARD_DISCARD)          += discard
 dir_$(CONFIG_USER_DISCARD_ECHO)             += discard

これで後はビルド時 4 に上記を選択するようにする。その辺はユーザガイドを参照のこと。

実行ファイルをアップロード

udhcpは実はちゃんと最後までビルドできないのだが、実行ファイル自体はatmark-dist-20060801/user/udhcp/以下にちゃんとできる。なので、ファイルをArmadillo-JへFTPでアップロードする。

udhcpdの設定

udhcpdは/binディレクトリ以下に配置し、アクセス権を変更する。

# mv -i /home/guest/pub/udhcpd /bin/
# chown root:root /bin/udhcpd
# chmod 755 /bin/udhcpd

udhcpdの設定ファイルを作成する。udhcp/sample/udhcpd.confを使うのが楽。以下のように設定する 5

start                192.168.0.20    #default: 192.168.0.20
end          192.168.0.254   #default: 192.168.0.254
interface    eth0            #default: eth0
max_leases   254             #default: 254
remaining    yes             #default: yes
auto_time    7200            #default: 7200 (2 hours)
decline_time 3600            #default: 3600 (1 hour)
conflict_time        3600            #default: 3600 (1 hour)
offer_time   60              #default: 60 (1 minute)
min_lease    60              #defult: 60
lease_file   /var/lib/misc/udhcpd.leases     #defualt: /var/lib/misc/udhcpd.leases
pidfile      /var/run/udhcpd.pid     #default: /var/run/udhcpd.pid
opt  dns     192.168.0.2 192.168.0.3
option       subnet  255.255.255.0
opt  router  192.168.0.254
option       domain  hoge.org
option       lease   864000          # 10 days of seconds
static_lease xx:xx:xx:xx:xx:xx 192.168.0.100
static_lease xx:xx:xx:xx:xx:xx 192.168.0.101
static_lease xx:xx:xx:xx:xx:xx 192.168.0.102
static_lease xx:xx:xx:xx:xx:xx 192.168.0.103
static_lease xx:xx:xx:xx:xx:xx 192.168.0.104
static_lease xx:xx:xx:xx:xx:xx 192.168.0.105

起動してみる

今回、ライブラリはuClibsを指定してコンパイルしていたのだが、バックグラウンドジョブは対応していないらしく、フォアグラウンドで実行させねばならん。なので、一番最後に実行される起動スクリプトとして下記を用意した。

# cd /etc/rc.d/rc.start/
# ls
rc.40.network   rc.70.inetd     rc.80.thttpd    rc.89.sntp      rc.99.ledctrl
# cp -ip rc.80.thttpd rc.99.udhcpd
# vi rc.99.udhcpd
#!/bin/sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin

echo -n "Starting udhcpd: "
mkdir -p /var/lib/misc/
exec udhcpd  /etc/udhcpd.conf
if [ $? = 0 ]; then echo "done"; else echo "failed"; fi

# mv -i rc.99.ledctrl rc.98.ledctrl

これでhalt後に起動かければDHCPサーバとして動く。停止させる時は、”kill -9”で無理やり停止させないといけないのがイケてなくてアカンなぁ。この辺は改善余地アリだなぁ。

1

AtmarkTechno-Productsの選択時

2

atmark-dist-20060801/user/dhcpd/

3

atmark-dist-20060801/user/dhcp-isc/

4

make menuconfig, make dep allを実行する

5

コメントは省略