Sirius

<< 前のページ

2008年1月6日(日) 15:53

HGLAN と HLWG で rsh を使う

ひさしぶりに Linkstation ネタです。

Linkstation に地デジチューナーをつなげて地デジを録画していますが、録画用の Linkstation は 2 台あって (HD-HGLAN と HD-HLWG) 別々の部屋に置いてあります。
地デジチューナーを追加でもう一台購入し 2 台で録画できるようにしました。

地デジチューナーのチャンネル切り替えは、KURO-RS をつないだ HD-HGLAN で行いますが、別々の部屋なので、発信部が届きません。KURO-RS はもう一台ありますが、一台の Linkstation は、HD-HLWG なのでカーネルモジュールのコンパイル等の作業が必要なので、どうせ今使ってる KURO-RS は片方しか使っていないのだからもう片方を隣の部屋にまで延長コードで引っ張っていこうと思いました。
ところが、KURO-RS のコネクタは、超ミニサイズのステレオプラグなので、延長コードが見つかりませんでした。そこで、

KURO-RS 本体 <-> 長ミニ・ミニ変換 <-> ミニステレオの延長コード <-> ミニ・超ミニ変換 <-> 発信部

という方法をとりました。全部で 2,500 円位でした。延長コードは 3m のものを買いましたが、うまくチューナーのチャンネル切り替えが出来ました。

次に、一台の HD-HGLAN で両方を管理してもいいのですが、混乱しそうなのでそれぞれの Linkstation の cron に登録することにしました。KURO-RS がつながっていない HD-HLWG から HD-HGLAN へリモートでコマンドを実行することにします。
SSH が使えればそれに越したことは無いのですが、以前入れようとしましたがうまくいかなかったので、rsh を Debian から持ってきて使えるようにしてあります。
それぞれ次を入れています。

HD-HGLAN:
・ rsh-redone-client_78-1_powerpc.deb
・ rsh-redone-server_78-1_powerpc.deb
HD-HLWG:
・ libpam-modules_0.72-35_mipsel.deb
・ rsh-redone-server_78-1_mipsel.deb
・ rsh-redone-client_78-1_mipsel.deb

ただ、rsh はセキュリティがザルなので、外部と直接つながっているマシンでは動かさないほうがいいです。
ssh が使えれば私も使わないんですが。

とにかくこれで同時に二番組みの録画が出来るようになりました。

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

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

2007年6月24日(日) 18:28

Linkstation で KURO-RS を動かす(3)

対症療法で修正したリモコンの送信コマンド。今のところなんの問題も無く地デジをタイマー録画しています。

さすがにノイズが無いので画質がいいです。録画のサイズが 720x480 が問題といえば問題ですが、ハイビジョンの TV は今の TV が壊れたら買うので、それまでの間は今の環境で十分です。

パッチはここに置いておきます。わたしはコンパイル KURO-BOX/HG でやりました。いつもどおり、使用は自己責任でお願いします。

なんか、他でも使えそうなので、KURO-RS はもう一台買っちゃいました。

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

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

2007年6月7日(木) 11:13

Linkstation で KURO-RS を動かす(2)

Linkstation で KURO-RS を動かしているのですが、どうも調子がよくないようです。
スリープを設定しているので、普通なら自宅に帰ったら起動しています。が、最近、エラーの LED が点滅し、電源が切れていることが多くなりました。
でも、手動で電源を入れると普通に起動してきます。はじめ、FAN 周りでエラーが出ているのかと思い、FAN を掃除したりしたのですが、状況は変わりませんでした。

シリアルコンソールは使えるようにしてあったので、コンソールの出力を見ながら状況を調べました。
Linkstation が起動したときに地デジチューナーの電源を入れるように送信コマンドを使っているのですが、どうやらそこで起動処理がとまっていて、結局、タイムアウトして Linkstation がエラーとなり電源が切れるようです。
ただ、必ずエラーになるわけでもなく、正常に起動するときもあります。なので気づくのが遅れました。

いろいろ調べると、KURO-RS へ送信モードへの切り替え命令を送った後の、KURO-RS からの応答待ちでとまっているようでした。正常に起動したときに送信コマンドをバックグラウンドで実行するように修正しましたが、送信コマンドがうまく動かないことに変わりはありません。
とまっている送信コマンドのプロセスを殺すことは出来ました。その後、ターミナルから送信コマンドを打ち込むとやはり、送信されず、とまってしまいます。しかし、このプロセスも ctrl+C で殺し、次に送信コマンドを使うとちゃんと送信できました。

????

何でだろう。
で、対症療法ですが送信コマンドのソースを修正して、KURO-RSからの応答が無くてもブロックされないようにして、リトライするようにしました。
修正したコマンドで何度か再起動して試してみましたが大丈夫なようでした。なんか不安ですが、一週間程度これで運用して問題がなさそうであれば、パッチを公開するつもりです。

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

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

2007年5月31日(木) 21:06

Linkstation で KURO-RS を動かす

またまた、ほったらかしにしてしまいました。
結局、KURO-BOX/PRO も購入してしまいました。動作確認したのみでまだ箱に入ったままです。は〜、時間が無い!

さて、ソースネクストのダイレクトメールで、地デジチューナーが 2 万円を切っていたので購入してしまいました。
地デジ放送が始まる一年位前にそれまで使っていたビクターのテレビが壊てしまい、そのときに、今使っているテレビを購入しました。もうちょっとがんばってくれれば、地デジ対応のテレビを買ったのですが、地デジ非対応のシャープの液晶です。ワイドでもありません。少なくともあと 5 年は使いたいと思っています。
で、アナログ放送がある間は、地デジは必要ないと思っていたのですが、よくよく考えると地デジチューナーはどっちみち買わないといけないし、そのうち地デジチューナーも 4:3 のテレビ対応のものはだんだん無くなっていくんじゃないかと思って今回購入しました。

裏の理由は、地デジをデジタルで録画すると、著作権保護がかかっていろいろと面倒なので、アナログ出力が付いている今のうちに買った方がいいんじゃないか、ということに気がついたのです。
当然録画したものは個人で楽しみますよ。

で、Linkstation につないだ BUFFALO の USB キャプチャBOX(PC-MV71DX/U2) で録画してみました。
今回購入したものは、出力端子が S ビデオ x 1、 ビデオ x 1、音声 x 2、D1/D2/D3/D4 x 1、HDMI x 1 となっているのでアナログからHDMIまで一通りの出力がありました。
Sビデオケーブルでキャプチャ BOX とつなげました。何の問題も無く MPEG2 で録画できました。まあ、キャプチャBOX 自体の画質はそれほどよいとは思っていませんが、アナログ放送と違ってノイズが無い分がいいと思います。パソコン上で DivX へのコンバートも問題ないし。これでアナログ停波になってもしばらくはいけるかな。

となると、今度はタイマー録画で地デジを録画したくなります。が、このチューナーにはタイマーは付いていません。そこで登場するのが KURO-RS。こんなのです。
しばらく前に、ヨドバシへ KURO-BOX/Pro がないかと探しにいったときに見つけて買っておいたものです。(面白そうだからって目的もなしに買ってしまう自分って…。同時にAUDIO-FMT-USBも買ってるし)

本来はKURO-BOX/HG 用ですが何とか Linkstation で動かしてみます。
KURO-RS 用のカーネルモジュールをコンパイルしないといけませんが、以前、isofs のモジュールをコンパイルしているので何とかなるんじゃないかと思い、挑戦します。

カーネルモジュールのコンパイル。Linkstation 用のコンパイラが無いので KURO-BOX/HG でコンパイルします。
Linkstation(HD-HGLAN) のカーネルソースが必要です。linux-2.4.20_hglan_htgl.tar.gz を使いました。
カーネルソースを展開します。次に、KURO-RS についてきた CD の Linux/linux_readme.txt を参考にソースを修正し、コンパイルします。
usb のモジュールは、私が使ったソースでは drivers/usb_new でした。ftdi_sio.c も KURO-BOX/HG のソースと違っていて id_table_FT232BM にもデバイスの記述を追加しないとだめでした。また、make modules_install はやりません。Linkstation 用のモジュールなので、KURO-BOX/HG でインストールしてはいけません。
カーネルモジュール( usbserial.o と ftdi_sio.o ) を Linkstation の /lib/modules/2.4.20_mvl31-ppc_linkstation/kernel/drivers/usb/serialの下にコピーします。

# depmod -a
# modprobe ftdi_sio

KURO-RS を差してうまく認識したようです。
KURO-BOX/HG 用のリモコンの記録・再生アプリケーションは、そのまま Linkstation へコピーして動きました。
これで、PCAST と組み合わせて地デジのタイマー録画も出来そうです。

ところが、再起動したら KURO-RS を認識しなくなりました。どうやら、linux_readme.txt に書いてあった murasaki でモジュールのロードをするのがまずいようです。
結局、/etc/modules.conf へ次の行を追加することにしました(LSUVCD の前の行に)。まあ、ずっとつなぎっぱなしにするので問題ないでしょう。

alias char-major-188 ftdi_sio

あとは、PCAST で予約したときに cron にリモコン送信コマンドの登録を手動ですれば OK かな。
(自動で cron に登録するアプリも作りたいけど時間が無い。)

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

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

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日(土) 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月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

2007年1月29日(月) 23:48

パーティションの追加

注意。initrd の修正をミスすると、LS-GL が起動しなくなることがあります。自己責任でお願いします。

LS-GL の rootfs は、500MB 程度しかないので、いろいろインストールするとすぐにあふれてしまいます。そこで、rootfs を拡張したいと思います。

単純にパーティションにサイズを大きくしただけでは、ファームウェアのアップデートができなくなってしまいます。そこで、標準システムはそのままで、新たにパーティションを用意したらどうなるかを実験してみました。

LS-GL でパーティションは次のようになっています。

sda1 -> /boot
sda2 -> /
sda4 -> 拡張パーティション
sda5 -> swap
sda6 -> /mnt/disk1/share

sda3 が開いているじゃないですか。ここにカスタマイズしたルートファイルシステムを作ってやればいけるかも。ただし、sda3 に不具合があった場合、sda2 を利用するようにして、また、sda2 と sda3 を切り替えて使えるようにしたいと思います。

まず初めに起動シーケンス中で、ルートファイルシステムをマウントしているファイルを探します。initrd の中です。

initrd の中の linuxrc がブートシーケンスです。この中で、ルートファイルシステムを決定し、カーネルの変数に設定します。/proc/sys/kernel/real-root-dev なんですが、ここに、デバイスのメジャー番号とマイナー番号を書き込んでやると、そのデバイスがルートファイルシステムになるみたいです。
しかし、間違うと起動不能。玉砕覚悟でやってみるか。

EM モードでも telnet を使えるようにしてあるので、念のため EM モードにしてからパーティションを操作します。
EM モードにするには、/etc/hddrootmode のファイル名を変更すればいいはず。
# mv /etc/hddrootmode /etc/hddrootmode-

再起動後に telnet でログインし、パーティションを変えます。

1、拡張パーティション内の sda5, sda6 を削除。
2、拡張パーティション (sda4) を削除。
3、新たにプライマリでパーティションを作成 (sda3)。
4、残り全部を拡張パーティションとして、sda5, sda6 を作成。
5、再起動
6、sda5 をスワップでフォーマット。
7、sda3, sda6 を xfs でフォーマット。
8、sda2 の内容を sda3 にコピー。
9、hddrootmode をもとに戻して再起動。
赤字がキーボードからの入力です。

# fdisk /dev/sda

The number of cylinders for this disk is set to 9729.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1          25      200781   83  Linux
 /dev/sda2              26          87      498015   83  Linux
 /dev/sda4              88        9729    77449365    5  Extended
 /dev/sda5              88         104      136521   82  Linux swap
 /dev/sda6             105        9729    77312781   83  Linux

Command (m for help): d
Partition number (1-6): 6

Command (m for help): d
Partition number (1-5): 5

Command (m for help): d
Partition number (1-5): 4

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (88-9729, default 88):
Using default value 88
Last cylinder or +size or +sizeM or +sizeK (88-9729, default 9729): +20000M

Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Selected partition 4
First cylinder (2521-9729, default 2521):
Using default value 2521
Last cylinder or +size or +sizeM or +sizeK (2521-9729, default 9729):
Using default value 9729

Command (m for help): n
First cylinder (2521-9729, default 2521):
Using default value 2521
Last cylinder or +size or +sizeM or +sizeK (2521-9729, default 9729): 2537

Command (m for help): n
First cylinder (2538-9729, default 2538):
Using default value 2538
Last cylinder or +size or +sizeM or +sizeK (2538-9729, default 9729):
Using default value 9729

Command (m for help): t
Partition number (1-6): 5
Hex code (type L to list codes): 82
Changed system type of partition 5 to 82 (Linux swap)

Command (m for help): p

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1          25      200781   83  Linux
 /dev/sda2              26          87      498015   83  Linux
 /dev/sda3              88        2520    19543072+  83  Linux
 /dev/sda4            2521        9729    57906292+   5  Extended
 /dev/sda5            2521        2537      136521   82  Linux swap
 /dev/sda6            2538        9729    57769708+  83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

ここで再起動。再起動しないと、sda3 にファイルシステムが作れません。再度 telnet でログインします。

# mkswap /dev/sda5
Setting up swapspace version 1, size = 139792384 bytes
# mkfs.xfs -f /dev/sda3
meta-data=/dev/sda3              isize=256    agcount=19, agsize=262144 blks
         =                       sectsz=512
data     =                       bsize=4096   blocks=4885768, imaxpct=25
         =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal log           bsize=4096   blocks=2560, version=1
         =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0

# mount /dev/sda2 /mnt/disk1
# mkdir /mnt/tmp
# mount /dev/sda3 /mnt/tmp
# cd /mnt/disk1
# mv etc/hddrootmode- etc/hddrootmode
# tar cf - * | (cd ../tmp;tar xvf -)
# cd ..
# umount /mnt/disk1
# date > /mnt/tmp/etc/boot.this
# umount /mnt/tmp
# mksf.xfs /dev/sda6
meta-data=/dev/sda6              isize=256    agcount=19, agsize=1048576 blks
         =                       sectsz=512
data     =                       bsize=4096   blocks=19328195, imaxpct=25
         =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal log           bsize=4096   blocks=9437, version=1
         =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0

# mount /dev/sda6 /mnt/disk1
# mkdir /mnt/disk1/share
# chmod 777 /mnt/disk1/share

再起動。
ここまで正常起動を確認できたら、initrd の linuxrc を書き換えます。

1、sda3 をチェックし、etc の下に boot.this というファイルがあり、起動可能であれば、ルートファイルシステムを sda3 にする。このとき万一のことを考え、boot.this ファイルは削除し、正常起動しなかった場合、次回の起動時は、sda3 を使わないようにする。
この linuxrc は公開できないので (著作権が buffalo にあると思われる。)、パッチ形式のファイルをここに置いておきます。例によって無保証です。

2、sda3 の etc/init.d/rcS の最後のほうで、boot.this ファイルを作成し、次回起動時も sda3 から起動するようにする。
たとえば、date > /etc/boot.this とか。

修正した initrd から、initrd.buffalo を作成し、/boot へコピーすれば OK です。万が一のときを考え、元の initrd.buffalo は名前を変えておいてください。

再起動。

sda3 をルートファイルシステムとして起動しました。

確認のため、/etc/boot.this ファイルを削除して再起動。
sda2 をルートファイルシステムとして起動しました。
ファームを更新してみます。(当然 telnet が使えるファームです)。

まったく問題ありませんでした。これで標準ファームと切り替えて使うことが出来ます。
完了。

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

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

2007年1月28日(日) 20:01

mkimage のコンパイル

注意。initrd の修正をミスすると、LS-GL が起動しなくなることがあります。自己責任でお願いします。

今まで、initrd.buffalo の作成に mkimage がなかったので、玄箱で作成していましたが、いちいち面倒なので LS-GL で出来ないかを試しました。

海外の linkstation wiki に mkimage がありますが、ライブラリの不整合でうまく動きませんでした。
そこで、せっかくコンパイルできるのだから。コンパイルしてみました。
Linkstation wiki の uboot_1.11_MSSII.tar.bz2 を展開します。

# bzcat uboot_1.11_MSSII.tar.bz2 | tar xvf -
# make cradle_config
# make
エラーが出ますが、mkimage は作成されます。tools の下に作成されます。mkimage をパスの通った場所にコピーします。

initrd.buffalo から initrd を取り出すには次のようにします。
# dd if=initrd.buffalo of=initrd.gz bs=64 skip=1
# gunzip initrd.gz

これで initrd が取り出せます。これをマウントしますが、LS-GL には loop デバイスがないので、作成します。

# cd /dev
# mknod loop0 b 7 0
# mknod loop1 b 7 1
# mknod loop2 b 7 2
# mknod loop3 b 7 3
# mknod loop4 b 7 4
# mknod loop5 b 7 5
# mknod loop6 b 7 6
# mknod loop7 b 7 7

では、initrd.buffalo の作り方。

initrd を作り変える場合は、initrd をマウントします。
# mkdir /mnt/tmp
# mount -o loop initrd /mnt/tmp
必要に応じて /mnt/tmp 以下のファイルを修正します。

initrd.buffalo を作ります。
# umount -d /mnt/tmp
# gzip initrd
# mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initrd -d initrd.gz initrd.buffalo
万が一を考え、/boot にある initrd.buffalo をリネームし、作成した initrd.buffalo を /boot にコピーすれば、修正した initrd で起動されます。

最近、LS-GL しかさわってないな〜。

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

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

2007年1月27日(土) 12:52

いろいろインストール

make が動くようになったのでいろいろコンパイル。
実は、apt-get は簡単でいいんですが、昔ながらのこっちのやりかたも嫌いじゃないです。

patch-2.5.4.tar.gz
ホストの指定をしないとだめだった。
$ ./configure --host=arm-none-linux-gnu
$ make
$ su
# make install

termcap-1.3.1.tar.gz
$ ./configure
$ make
$ su
# make install

perl-5.8.8.tgz
less のコンパイルで perl がエラーになるので、Linkstation wiki の perl で上書きする。
# tar xzvf perl-5.8.8.tgz -C /

ncurses-5.6.tar.gz
$ ./configure
$ make
$ su
# make install

less-382.tar.gz、 less-382-iso258.patch
$ patch -p1 < less-382-iso258.patch
$ ./configure
$ make
$ su
# make install

lv451.tar.gz
euc、jis、sjis、utf-8 等のページャー、コンバーター
$ cd src
$ ./configure
$ make
$ su
# make install

sed-4.1.tar.gz
vim のコンパイルで sed がエラーになるのでインストール。
$ ./configure
$ make
$ su
# make install

vim-7.0.tar.bz2
vi クローン。vi よりずっと高機能なのに、日本語が使えるって事以外は vi の機能しか使っていません。emacs はエディタとは思っていないので使いません。

$ ./configure --enable-multibyte --enable-rubyinterp
$ make
$ su
# make install

readline-5.1.tar.gz
$ ./configure --enable-multibyte
$ make
$ su
# make install

bash-3.2.tar.gz
$ ./configure --enable-alias --enable-directory-stack --enable-multibyte --enable-readline
$ make
$ su
# make install

--------------------------------------------
ここまでインストールしたら、ルートのパーティションの空きが 80MB になってしまいました。
これはちょっと考えないと。ファームのアップデートも出来て、ルートのパーティションサイズをもっと大きくする方法を考えないとだめです。

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

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

2007年1月26日(金) 00:36

make の作成

さて、make を何とかしないといけません。以前、HD-LWG のときに telnet を Debien から持ってきたのを思い出し、Debien のパッケージを探しました。arm 用の make もありましたが、glibc のバージョンが合わず動きません。

じゃあ、クロスコンパイルをしようと、設定したのですがうまくいかず、10 分で挫折。(オイッ!)

そのとき、まちがえてパスの設定を変更せずに PC で動く make をコンパイルしてしまいました。
うん?ひょっとして…!
このときの make の出力を見てみよう。


if gcc -DLOCALEDIR=\"/usr/local/share/locale\" -DLIBDIR=\"/usr/local/lib\" -DINCLUDEDIR=\"/usr/local/include\" -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -MT ar.o -MD -MP -MF ".deps/ar.Tpo" -c -o ar.o ar.c; \
        then mv -f ".deps/ar.Tpo" ".deps/ar.Po"; else rm -f ".deps/ar.Tpo"; exit 1; fi
if gcc -DLOCALEDIR=\"/usr/local/share/locale\" -DLIBDIR=\"/usr/local/lib\" -DINCLUDEDIR=\"/usr/local/include\" -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -MT arscan.o -MD -MP -MF ".deps/arscan.Tpo" -c -o arscan.o arscan.c; \
        then mv -f ".deps/arscan.Tpo" ".deps/arscan.Po"; else rm -f ".deps/arscan.Tpo"; exit 1; fi


このコマンドをそのまま LS-GL で実行してやれば…。

% make | tee MAKEOUT

で PC 上でコンパイルして画面出力を MAKEOUT に保存します。余分なメッセージをエディタで削除し、LS-GL に持ってきます。

$ ./configure && sh MAKEOUT

……。できました。いいのか?こんなので。

ちょっと不安なので、出来上がった make をパスの通った場所へ移動しもう一度作ります。

$ make distclean
$ ./configure && make

make distclean は完全にクリーンな状態に戻します。
出来上がりました。サイズを見てみると最初の make が 125740 バイトで二番目の make が 340650 バイトでした。やっぱり何かが違っていたようです。

root になってインストール
# su
# make install

試しにもう一度最初から作り直してみましたが、サイズは同じでした。完了。

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

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

2007年1月25日(木) 01:27

include ファイル

Linkstation wiki のセルフ開発環境の中に入っていなかった include ファイルは、クロスコンパイル環境の中に入っていたものをコピーしました。
arm-gnu.tar.bz2 を展開したときの

arm-gnu/buffalo_ls_gl/sysroot/usr 下の include をすべて /usr/include へコピーしました。

また、それ以外のツール類 (autoconf とか)も必要なので、
automake_autoconf.tgz
coreutils-update.tgz
も入れました。ただし、coreutils-update の中にも su が入っていて、実行属性が正しくないので、展開する際、root を抜けずに続けて su の実行属性を設定しないといけません。

# tar xzvf automake_autoconf.tgz -C /
# tar xzvf coreutils-update.tgz -C /
# chmod u+s /bin/su
# chmod u+s /usr/bin/su

しかし、まだ問題が…。

make が無い!

で、gnu の make をダウンロードし、展開。

# tar xzvf make-3.81.tar.gz
# cd make-3.81
# ./configure



# make
sh: make: command not found

何考えているんだ、自分(鬱
ただ、./configure で問題が出なかったので、後は本当に make だけか。

結局、LS-GL 用の make は探せませんでした。クロスコンパイルするしかないって事です。
はあ〜〜。作業量を考えると…。

続く。

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

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

2007年1月24日(水) 00:09

開発環境の導入

海外の linkstation wiki に LS-GL の開発環境一式がありました。ただし、まだベータ状態みたいです。
早速導入します。

linkstation wiki から ls-gl-pro-native-toolchain.tar.gz をダウンロードして LS-GL で解凍します。
Downloads -> uploads -> LS_Pro_temporary -> NativeToolchain にあります。

# tar xzvf ls-gl-pro-native-toolchain.tar.gz

release 以下に解凍されますので、その opt をルートに移動します。

# cd release
# tar cf - .|(cd /;tar xvf -)

release 以下はもう削除してかまいません。
もともと、ルートのパーティション (sda2) のサイズは大きくありませんが、全体で 500MB で残りが 200MB 強です。

ログインしたときのパスを追加します。/etc/profile に直接書いてもいいのですが、行儀が悪いので、/etc/profile に次の内容を追加します。

# user profile
if [ -f "$HOME/.profile" ]; then
    . $HOME/.profile
fi

そしてホームディレクトリに .profile を作成します。

PATH=/opt/arm-gnu/buffalo-ls-gl/bin:$PATH
LANG=ja_JP.UTF-8
EDITOR=vi
PAGER=less
TERM=xterm

export LANG PATH EDITOR PAGER TERM

alias ls='ls -FA'
alias rm='rm -i'

$ gcc -v
Using built-in specs.
Configured with: ../../src/gcc-2005q3/configure --prefix=/opt/arm-gnu/buffalo-ls-gl --build=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi --enable-languages=c,c++
Thread model: posix
gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2)

じゃ、早速
$ vi hello.c

int main(int argc, char *argv[])
{
    printf("Hellow LS-GL.\n");
    return 0;
}

$ gcc -o hello hello.c
$ hello
Hellow LS-GL.

OK。

と思ったのですが、LS-GL には一切ヘッダファイルが置いてありません。LS-GL のソースから持ってくるしかないみたいです。
なかなか終わらない。

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

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

2007年1月22日(月) 19:58

su のインストール

海外の Linkstation wiki に LS-GL 用の su がありました。

Downloads セクションの uploads -> LS_Pro_temporary -> Binaries の下にある addons.tar の中に su コマンドがありました。wget も入っています。

ただ、そのままでは実行属性が正しくないのでうまく動きません。 root で実行属性を変えます。

# tar xzvf addons.tar -C /
# chmod u+s /bin/su

これで rcS の telnet をコメントにできます。

上記のサイトにはネイティブコンパイラや LS-GL のソース等も置いてあります。

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

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

2007年1月21日(日) 11:40

LS-GL に ssh でログインする

LS-GL にはもともと ssh が入っているので、sshd を動かして、ssh で LS-GL にログインできるようにします。

まず、ホストキーが既に作成されているので、これを作り直します。
root でログインし、

1、ホストキーの作成。
# ssh-keygen -b 1024 -f /etc/ssh_host_key -N "" -t rsa1
# ssh-keygen -d -f /etc/ssh_host_rsa_key -N "" -t rsa
# ssh-keygen -d -f /etc/ssh_host_dsa_key -N "" -t dsa

それぞれ、既にファイルがあるので上書きのプロンプトが出ます。当然 y です。

2、ユーザの作成。
ssh でログインするユーザを作成します。私は同じユーザで共有もアクセスするので、まず、Web 管理画面からユーザを追加しました。次に、/etc/passwd ファイルを修正して、ユーザー ID 等を設定しました。

3、sshd の起動
# sshd

これで、取りあえず他のマシンから ssh でログインできました。

4、スタートアップ時に自動起動させる。
いろいろやり方はありますが、単純に telnet の代わりにします。telnetd を起動している次の行に /usr/local/sbin/sshd -f /etc/sshd_config を追加します。

5、ユーザ毎のキーを作成
ただログインするだけでは必要ありませんが、パスワード入力なしでログインしたりする場合に必要になります。
キーを作成するユーザでログインし、
$ ssh-keygen -b 2048 -t rsa1
$ ssh-keygen -f id_rsa -t rsa
$ ssh-keygen -f id_dsa -t dsa

これで、パブリックキーを使うとパスワードなしでのログインがでます。リモートからコマンドを実行するときに便利です。ssh の使い方は探すとたくさんあるのでここでは省略します。

ところが、他のマシンから LS-GL へは、ログインできるようになりましたが、LS-GL から他のマシンへは root 以外ではログインできませんでした。

ログインしようとすると、
# ssh foo.bar
Host key verification failed.

となってしまいました。どのホストもそうです。localhost もだめです。初めての現象でした。これに時間がかかりましたが、いろいろ知らべて /dev/tty のパーミッションの問題のようでした。

# ls -l /dev/tty
crw-r--r-- 1 root root 5, 0 Oct 10 2001 /dev/tty
# chmod go+w /dev/tty
# ls -l /dev/tty
crw-rw-rw- 1 root root 5, 0 Oct 10 2001 /dev/tty

オリジナルの HDD を確認しても同じパーミッションでした。他にも問題があるかもしれないけど、まあ、外からログインする製品ではないからね。

これで LS-GL からも他のマシンへ ssh でログインできました。su か sudo をインストールしたら、telnet は切ってしまおうと思います。

次に開発環境の整備です。

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

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

2007年1月20日(土) 16:25

initrd を作り変える

LinkStation/玄箱をハックしようを参考に、initrd を作り直して、EM モードでも telnet を使えるようにします。

まず、initrd.img を initrd.img.zip に名前を変えて、hddrootfs.img とは違う某パスワードで解凍。
出てきた initrd.buffalo を玄箱へ持ってきて、

# dd if=initrd.buffalo of=initrd.gz bs=64 skip=1

で initrd.gz を取り出し、解凍します。

# gunzip initrd.gz

これで、initrd ができました。
loop デバイスを使って mount します。

# mount -o loop initrd /mnt/tmp

initrd の内容が /mnt/tmp 以下にありますから、必要なファイルを修正します。telnet はファームの修正と同じです。root のパスワードは shadow の編集で ok です。
アンマウント。圧縮、イメージ作成。

# umount /mnt/tmp
# gzip initrd
# mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initrd -d initrd.gz initrd.buffalo

mkimage は一行です。玄箱にはもともと mkimage は入ってませんが、探せばすぐに見つかるでしょう。
後は、zip で固めて出来上がり。

こうして出来上がった initrd を LS-GL へ持っていくなり、initrd.img を使ってファームを更新すれば、EMモードでも telnet が使えます。

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

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

2007年1月20日(土) 11:04

LS-GL のHDDの換装(3)

root でログインできるようにします。
結局、hddrootfs で shadow ファイルを編集しても無駄でした。
次のような shell スクリプトを etc/init.d に myroot.sh という名前で作成し、実行属性をつけます。
#!/bin/sh
if [ -x /etc/init.d/myroot.sh ]; then
   echo "myroot:x:0:0:MyRoot:/root/:/bin/bash">>/etc/passwd
   chmod u+w /etc/shadow
   echo "myroot::13320:0:99999:7:::" >> /etc/shadow
   chmod u-w shadow
fi

次に etc/init.d/rcS の最後の行の前に次の内容を追加します。
# Add myroot User
if
   grep myroot /etc/passwd > /dev/null
then
   if [ -f /etc/init.d/myroot.sh ]; then
      rm /etc/init.d/myroot.sh
   fi
else
   if [ -x /etc/init.d/myroot.sh ]; then
      /etc/init.d/myroot.sh
   fi
fi

これで、hddrootfs.img を作り直して、強制アップデートをかけました。
telnet。
myroot でログイン。

できました。あとは、root のパスワードを変更して、再起動。
root でログインできたら、/etc/passwd と /etc/shadow から myroot を削除して、rcS の修正を元に戻して OK。

次は ssh です。
(2007.01.21 訂正)

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

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

<< 前のページ

Sirius

MySketch 2.7.2 written by 夕雨