Sirius -旧ブログ、更新されません-

2007年02月の記事

<< 前のページ

2007年2月23日(金) 18:14

tftp ブート

ブートローダの u-boot をコンパイルしてみましたが、元々の u-boot.buffalo のサイズとあまりにサイズの違うものが出来てしまいました。これをフラッシュに書き込む勇気はありません。

しばらくは、元々の u-boot を使っていくことにして、何とかネットワークブートさせたいと思います。シリアルコンソールをつければ大丈夫のようですが、まだ付けていません。シリアルコンソール無しで何とかできないかとだめもとでやってみます。

ネットワークブートするには、 tftp サーバが必要です。これは、玄箱で tftpd を動かすことにしました。次に、LS-GL の u-boot に 自分とサーバの IP アドレスを設定すれば何とかなるのではないかと考えました。
メンテナンスを考えると、内臓 HDD からのブート不可 -> ネットワークブートとなっていれば、HDD に障害があった場合に対応しやすいのではないか。そういった作りになっていることを期待してやって見ます。

まず、u-boot のパラメータを操作するコマンドを調べます。/usr/local/sbin に nvram というコマンドがあります。

# nvram -help
nvram Ver.1.00
nvram -c <printenv|del|set|get|eraseall|dump>
# nvram -c printenv
1: [bootargs=$(bootargs_base) $(bootargs_root)]
2: [baudrate=115200]
3: [loads_echo=0]
4: [ipaddr=192.168.11.150]
5: [serverip=192.168.11.1]
6: [rootpath=/nfs/arm]
7: [stdin=serial]
8: [stdout=serial]
9: [stderr=serial]
10: [cpuName=926]
11: [CASset=min]
12: [enaMonExt=no]
13: [enaFlashBuf=yes]
14: [enaCpuStream=no]
15: [MALLOC_len=4]
16: [ethprime=egiga0]
17: [bootargs_end=:::DB88FXX81:eth0:none]
18: [buffalo_ver=BOOTVER=1.01]
19: [build_time=10:35:38]
20: [initrd=initrd.buffalo]
21: [kernel=uImage.buffalo]
22: [bootargs_base=console=ttyS0,115200]
23: [bootargs_root=root=/dev/sda2 rw initrd=0x00800040,15M panic=5]
24: [bootcmd=ide reset; ext2load ide 1:1 0x00100000 /$(kernel);ext2load ide 1:1 0x00800000 /$(initrd);setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver);bootm 0x00100000 0x00800000]
25: [def_tftp=tftp 0x00100000 $(kernel);tftp 0x00800000 $(initrd);setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver);bootm 0x00100000 0x00800000]
26: [bootdelay=3]
27: [disaMvPnp=no]
28: [overEthAddr=no]
29: [usb0Mode=host]
30: [usb1Mode=host]
31: [ethact=egiga0]
32: [ethaddr=00:16:01:35:xx:xx]
# nvram -c get serverip
serverip=192.168.11.1

なるほど、set コマンドでデフォルトのパラメータを書き換えられそうです。
サーバと自分の IP アドレスを書き換えて見ます。
# nvram -c set serverip 192.168.1.200
>serverip=192.168.1.200
# nvram -c set ipaddr 192.168.1.16
>nvram_set:ipaddr = 192.168.1.16
# nvram -c printenv
1: [bootargs=$(bootargs_base) $(bootargs_root)]
2: [baudrate=115200]
3: [loads_echo=0]
4: [rootpath=/nfs/arm]
5: [stdin=serial]
6: [stdout=serial]
7: [stderr=serial]
8: [cpuName=926]
9: [CASset=min]
10: [enaMonExt=no]
11: [enaFlashBuf=yes]
12: [enaCpuStream=no]
13: [MALLOC_len=4]
14: [ethprime=egiga0]
15: [bootargs_end=:::DB88FXX81:eth0:none]
16: [buffalo_ver=BOOTVER=1.01]
17: [build_time=10:35:38]
18: [initrd=initrd.buffalo]
19: [kernel=uImage.buffalo]
20: [bootargs_base=console=ttyS0,115200]
21: [bootargs_root=root=/dev/sda2 rw initrd=0x00800040,15M panic=5]
22: [bootcmd=ide reset; ext2load ide 1:1 0x00100000 /$(kernel);ext2load ide 1:1 0x00800000 /$(initrd);setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver);bootm 0x00100000 0x00800000]
23: [def_tftp=tftp 0x00100000 $(kernel);tftp 0x00800000 $(initrd);setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver);bootm 0x00100000 0x00800000]
24: [bootdelay=3]
25: [disaMvPnp=no]
26: [overEthAddr=no]
27: [usb0Mode=host]
28: [usb1Mode=host]
29: [ethact=egiga0]
30: [ethaddr=00:16:01:35:xx:xx]
31: [serverip=192.168.1.200]
32: [ipaddr=192.168.1.16]

"bootcmd" を書き換えて tftp ブートするようにすればデフォルトでネットワークブートは出来そうです。しかし、失敗したら…。
…やめておこう。

では、玄箱に tftpd をインストールします。
ソースを持ってきてコンパイルし、インストールします。Debian のソースを利用しました。netkit-tftp_0.17.orig.tar.gz を使いました。
次に、inetd から tftpd が起動されるように /etc/inetd.conf の中の tftpd に関する部分のコメントを外します。
そして、カーネルイメージとラムディスクイメージを置くディレクトリ(デフォルトでは /tftpboot) へそれぞれをコピーします(uImage.buffalo, initrd.buffalo)。
最後に dhcp サーバの設定をします。bootp でも出来るようですが、dhcp サーバを立ててあるので。
dhcpd の設定ファイル /etc/dhcpd.conf に次の行を追加します。
allow booting;
allow bootp;
変更がおわったら、dhcpd と inetd を再起動。

LS-GL に戻って、カーネルイメージとラムディスクイメージをリネームし、再起動します。

# mv /boot/uImage.buffalo /boot/uImage.buffalo-
# mv /boot/initrd.buffalo /boot/initrd.buffalo-

再起動。
ディスクエラーの LED が点滅していますが起動しました。ssh でログインも出来るし、web の管理画面も開けました。

次に、IP アドレスを DHCP サーバから持ってこれないかを試してみました。ipaddr を削除します。
# nvram -c del ipaddr

再起動

…起動しませんでした。HDD を取り出して別マシンでファイル名を元に戻さないと。
Terastation へつなげてファイル名を戻しました。

起動してきたので、u-boot の ipaddr を設定しなおします。
# nvram -c set ipaddr 192.168.1.16
>nvram_set:ipaddr = 192.168.1.16

たとえば、シリアルコンソール無しでも新品のHDD をつなげてEMモードで起動して、ファームウェアの更新でファームのインストールが出来るかもしれません。今度試してみよう。
まあ、これでカーネルやラムディスクの実験がしやすくなったといえばいえるかな。HDD が壊れたときも手間が若干、省けそうです。
もっとも、一番やりたかった tftp ブートが出来てしまったし、wizd も動くし、さらにもうすぐ玄人志向から Kuro-Box/PRO が発売されるからどうなるかわかりません。

蛇足ですが、USB の外し方が悪かったのか、Terastation の調子が悪くなり、電源を切って(切れるまでにえらい時間がかかった)、再起動したら raid 修復が始まってしまいました。
ほって置いたらディスクが一台エラーを起こし、縮退モードになっていました。再起動してディスクを認識させなおして raid 修復。何とか終わりましたがそろそろ HDD が限界かな。予備を買っておこう。

written by sirius [/Linkstation] [この記事のURL] [コメントを書く] [コメント(1)] [TB(0)]

この記事へのトラックバックPingURL

2007年2月8日(木) 23:11

ジャンボフレームとOpenSSH

気が付いたら ssh 関連に支障が出てくるようになりました。scp でストールする。ssh でもある程度使うと応答がなくなる。標準ファームでも同じでした。
なので、OpenSSH もインストールします。
openssl-0.9.8d.tar.gz、openssh-4.5.tar.gz を入れます。しかし、openssh-4.5.tar.gz が tar でエラーになり展開できません。
そこで、tar-1.16.tar.gz もインストール。でも展開できない。どうも解凍に失敗しているようなので、zlib もインストールしなおし。
それでも失敗。
え〜〜〜。
zcat openssh-4.5.tar.gz | tar xvf - でも失敗。
ふと気づいて、

# ls -l /bin/gzip
-rwxr-xr-x 3 root root 145635 Jan 27 11:21 /bin/gzip -> busybox*

なぁ〜んだ。busybox なんだ。
gzip-1.3.9.tar.gz をインストール。無事、openssl-0.9.8d.tar.gz、openssh-4.5.tar.gz を展開してインストール。
しかしまだストールする。

???

samba は問題なく使えている。ssh も前は問題なく使えていました。
え〜〜と、何をしたっけ。でも、標準ファームでもだめなんだよな。
気づいたのがイーサネットのフレームサイズをジャンボフレームにしたこと。
玄箱なんかはジャンボフレームを使っていますが問題はありません。だめもとでフレームサイズを元に戻しました。すると、ストールせずに scp 出来ました。転送速度を考えるとジャンボフレームは使いたいところですが、あきらめてデフォルトに戻しました。

written by sirius [/Linkstation] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2007年2月5日(月) 22:22

カーネルの入れ替え

カーネルモジュールの作成がうまくいったので、カーネルの入れ替えに挑戦してみました。

ソースのあるディレクトリに移動して、
# make uImage
カーネルは arch/arm/boot/uImage に作成されます。
# mkimage -l arch/arm/boot/uImage
Image Name: Linux-2.6.12.6-arm1
Created: Sat Feb 3 14:51:25 JST 2007
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1788276 Bytes = 1746.36 kB = 1.71 MB
Load Address: 0x00008000
Entry Point: 0x00008000

カーネル入れ替え! /boot/uImage.buffalo を別な名前にしておいて、

# cp arch/arm/boot/uImage /boot/uImage.buffalo

再起動!

…。ssh で入れない。

telnet では入れましたが、EM モードで動いていました。
ついでなのでこの状態で USB HDD をつないで見ました。まあ、当たり前ですが、EM モードでも認識しました。
と、いうことは、USB HDD にルートファイルシステムを置いて、そこを使用することも可能のようです。
実験時には便利ですが、いまはカーネルの入れ替えが先、後で時間のあるときにやってみましょう。

さて、何がいけないのでしょうか。linuxrc を見ました。
 /proc/buffalo/firmware
 /mnt/etc/linkstation_release
そうだった、この二つが一致しないと起動しないんだった。EM モードでも telnet が使えるようにしておいて助かりました。
sda3 をマウントして

# mount /dev/sda3 /mnt/disk1
# cd /mnt/disk1/etc
# mv linkstation_release linkstation_release.orig
# cat /proc/buffalo/firmware > linkstation_release
# date > boot.this
# reboot;exit

再起動後に ssh でログイン。うまくいきました。

$ cat /proc/version
Linux version 2.6.12.6-arm1 (root@EILINK04) (gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2)) #77 Sat Feb 3 14:51:25 JST 2007

OK。

カーネルの入れ替えが可能となるとかなりカスタマイズが可能となりそう。linuxrc はチェックを外そうかと思います。
u-boot のソースもあるようなのでこちらのコンパイルもやってみようかな。ただし、u-boot はフラッシュにあるから飛ばしたら最悪です。

written by sirius [/Linkstation] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2007年2月4日(日) 22:17

wizd のコンパイル

wizd with DVDISO のコンパイル。

1、libdvdread をインストール
libdvdread-0.9.4.tar.gz
$ ./configure
$ make
$ su
# make install

2、libjpeg のインストール
jpegsrc.v6b.tar.gz
$ ./configure
$ make
$ su
# make install install-lib

3、wizd のコンパイル。
$ make

OK。

と、いうことで、wizd with DVDISOダウンロードページ に LS-GL 用を追加。
なお、LS-GL 用は、umount のオプションで -d をつけるように CGI を修正しました。

written by sirius [/Linkstation] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2007年2月3日(土) 21:15

Windows 共有と Norton Internet Security

新しい VAIO type U は Windows Vista です。が、この Vista から他のマシンの共有が見れませんでした。

いろいろ探ると、Norton Internet Security のファイアウォールがデフォルトで

Windows 共有をすべて遮断している
参照さえも遮断しています。インターネット以外は使うなって事? また、
ローカルなネットワークも信頼していない
さらに、
信頼するアドレスへの追加は単独のアドレスのみ
で範囲指定も出来ない、ということが分かりました。

サービスで付いてきたから使っているけど、こんなもんに金は出せない。サービス期間が終わったらさっさと別のソフトに変えます。
Symantec のソフトは昔から避けていました。最悪は Windows 95 のころに入れてみた Norton Utility でした。パソコンを投げつけたくなるほど重くするソフトでした。それ以来個人では Norton シリーズは一切使っていません。
今回も使いたくはないのですが、セキュリティソフトをいれずにネットワークを使う危険は避けたいです。でも、やはりお金が…。

ただ、Norton の悪口ばかり言っていますが、例えば Norton Ghost なんかは、ものすごく重宝しているし、技術もすごいなと思っています。
仕事柄、パソコンのセットアップを 50 台とか 100 台とかしなくちゃいけないときに、この Ghost は、マルチキャストを使って、HDD のイメージをネットワーク経由で配布できます。本当にマルチキャストでやっているようで 10 台やるのも 50 台やるのも殆ど時間に変わりがありません。どうせ時間がかかるだろうと思っていたのでこれは感動しました。やるな Norton と思いました。まあ、ネットワークに不都合があったりすると時間がかかりますが、これは Ghost の所為ではありません。ハブの問題だったりケーブルや LAN カードの所為だったりします。
また、Norton Anti Virus の企業向けのものを使ったときも、ドメイン構成にしているとサーバからクライアントへインストールでき、一台づつセットアップする必要がなく、これも助かりました。

個人では使いたくないが、仕事では使いたい。なんとも不思議なソフトです。

あと、Windows Vista のデフォルトでは、Linkstation をアクセス制限ありで使用していると Linkstation の共有にアクセスできませんでした。
Buffalo の Q&A に対処方がありましたが、コントロールパネル -> システムとメンテナンス -> 管理ツール -> ローカルセキュリティーポリシー -> ローカルポリシー -> セキュリティオプション -> "ネットワークセキュリティ:LAN Manager 認証レベル" を "LM とNTLM 応答を送信する" に設定しないとだめでした。

written by sirius [Vaio type U] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2007年2月3日(土) 13:37

カーネルモジュールのコンパイル

Linkstation wiki に LS-GL のソース一式があるので、カーネルモジュールのコンパイルをして、iso をマウントできるようにしてみます。
ソースは、gpl_ls-gl.zip です。
カーネルソースは、解凍したファイルの中の、linux-2.6.12_lsp.1.7.8.tgz です。

# tar xzvf linux-2.6.12_lsp.1.7.8.tgz
# cd linux-2.6.12_lsp.1.7.8
# make menuconfig
メニューから、iso ファイルシステムをモジュールでコンパイルするように設定します。ついでに、udf も有効にしました。

Makefile は、クロスコンパイル用の Makefile なのでこのファイルの中の
CROSS_COMPILE=arm-none-linux-gnueabi-
の先頭に # をつけてコメントにします。

次に環境変数に gcc のヘッダファイルのパスを設定します。
# export C_INCLUDE_PATH=$C_INCLUDE_PATH:/opt/arm-gnu/buffalo-ls-gl/include:/opt/arm-gnu/buffalo-ls-gl/lib/gcc/arm-none-linux-gnueabi/3.4.4/include:/opt/arm-gnu/buffalo-ls-gl/include:/opt/arm-gnu/buffalo-ls-gl/lib/gcc/arm-none-linux-gnueabi/3.4.4/include

では、コンパイル。コンパイル時間がわかるように time コマンドを使ってみます。
# time make


real 79m15.277s
user 74m0.600s
sys 4m52.980s

約 80 分で終わりました。

# make modules_install
# mv binaries/lib/modules/2.6.12.6-arm1/kernel/fs/{isofs,udf} /lib/modules/2.6.12.6-arm1/kernel/fs/.
# depmod -a
# modprobe isofs
# lsmod
Module Size Used by
isofs 23620 0
appletalk 32372 20
psnap 3076 1 appletalk
llc 5748 1 psnap
# rmmod isofs

うん、いけそう。
マウントしてみます。
# mount -o loop test.iso /mnt/tmp
# df
 Filesystem 1k-blocks Used Available Use% Mounted on
 /dev/sda3 19532832 595524 18937308 3% /
 /dev/ram1 15360 72 15288 0% /mnt/ram
 /dev/ls_disk1_1 194443 72698 111706 39% /boot
 /dev/ls_disk1_6 57741504 6749576 50991928 12% /mnt/disk1
 /dev/sda2 493212 417064 76148 85% /mnt/rootfs
 /dev/loop0 4341354 4341354 0 100% /mnt/tmp
# ls /mnt/tmp
AUDIO_TS VIDEO_TS
# umount -d /mnt/tmp

なお、アンマウントする際に -d オプションをつけないと loop デバイスが解放されません。
ついでに USB プリンタなんかのモジュールもコンパイルしてみました。USB プリンタをつないでの確認はしていませんが、コンパイルは特にエラーもなくできました。

OK。

written by sirius [/Linkstation] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2007年2月2日(金) 22:37

VAIO のアップデート

type U と Windows Vista。
使い始めるまでに、Windows Update や VAIO Update や Norton の Live Update をかけていると2時間以上かかってしまいました。かな〜りいらいら。

何で出たばかりの OS にアップデートがあるんじゃ〜〜〜。
何で出たばっかりのハードにアップデートがあるんじゃ〜〜〜。

ま、元プログラマーとしては理解できるんですけどね。ユーザとしてはイラつきますな。
ただ、最近の MS とか、その他を見ると、バグフィックスをすれば、出荷する製品の検査を短くしても何とかなるって思っているんじゃないかと。これは冗談じゃないですよ。
もし、このような理由で出荷後のバグフィックスが多いのであれば、

責任者、ちょっと出て来い!

って思います。

コンピュータがインフラになってきているのだから、いくらソフトの規模が大きく、複雑になり、開発工数が莫大なものになったからって言っても、このままではメーカもユーザも、いつか痛いしっぺ返しを食うことになると思います。

取りあえず、この状態で一度 Vista のパーティションをバックアップします。ということで、今日はここまで。

早く Vista を使ってみたいよ〜〜。

written by sirius [Vaio type U] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2007年2月1日(木) 19:45

いろいろインストール2

いろいろインストールのつづきです。

pkg-config-0.21.tar.gz
w3m をインストールするため
$ ./configure
$ make
$ su
# make intstall

gc6.7.tar.gz
w3m をインストールするため
$ ./configure
$ make
$ su
# make intstall
# ldconfig

ヘッダファイルの不足分をコピーする
openssh-3.7.1p2_arm.tgz を展開し、include の下の openssl をディレクトリごと /usr/include へコピー。
zlib-1.2.3_arm.tgz を展開し、zlib.h、zconf.h を/usr/include へコピー。

w3m-0.5.1.tar.gz
若干、エラーが出るので -i オプションをつけて make する。
$ ./configure
$ make -i
$ su
# make -i install

/etc/termcap がないので適当に linux マシン(今回は玄箱)から持ってくる。

以上で、目的とした w3m が動きました。
次の目標は wizd with DVDISO を動かすこと。つまり、カーネルモジュールのコンパイルです。

written by sirius [/Linkstation] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

<< 前のページ

Sirius -旧ブログ、更新されません-

MySketch 2.7.2 written by 夕雨