さて、LANDISKの日本語表示を何とかしたいと言うことで、ちょっとだけ調べてましたが、まずはtelnetdを入れる必要があります。が、いくつか参考にさせていただいたサイトを見ると、いずれも内容を理解してから実行するようにとのアドバイスが書かれていますので、まずは、先日も紹介しましたこちらで入手した「landisk_telnetd_v2.0.zip」の中身を見て、何をしているのかを確認したいと思います。

入手したアーカイブを解凍すると「README.TXT」と「update.tgz」が入っています。この「update.tgz」にtelnet関連のアップデートが入っているものと思われます。こちらの「update.tgz」を解凍すると下記のファイルが入っていました。
  1. landisk-update.sh
  2. update-files.tar.gz
まずは、1)のシェルスクリプトが実行されるものと思われるので、「landisk-update.sh」の中身を見ていきます。最初に実行されるのが、以下のコマンドです。

# Controll LED.
/usr/local/bin/ledcont cycle 8
/usr/local/bin/ledcont pwrblink

LANDISK独自のコマンドのような気もしますが、まあ、コメントの記載内容とコマンドの名前からして、何かLEDの制御をするコマンドの様です。ここではスルー。

で、次は、

# Stop Daemons.
/home/LANDISK/scripts/killftpd.sh stop
/etc/rc.d/init.d/S99reset_daemon stop
/etc/rc.d/init.d/S92netatalk stop
/etc/rc.d/init.d/S91samba stop
# /etc/rc.d/init.d/S95httpd stop
/etc/rc.d/init.d/S90identd stop
/etc/rc.d/init.d/S60lpd stop
/etc/rc.d/init.d/S40cron stop
/etc/rc.d/init.d/S35dhcpcd stop
/etc/rc.d/init.d/S20network stop
/etc/rc.d/init.d/S15inet stop

コメントにもあるように各種デーモンを止めているみたいですね。始めは、LANDISK特有のスクリプトでFTPサービスを止めている様子。次はリセット監視(?)、AFPサーバ、SMBサーバ、identd、プリントサーバ、cron、DHCP、network、inetと順に止めていっています。途中、HTTPデーモンはコメントアウトされていますが、これは何ででしょうかね・・?

各コマンド名の前についている「Snn」と言うプリフィックスも気になりますが、まあ、ネットワーク関連のサービスを止めているようです。一応、外からのアクセスを止めるためだと思われます。

で、次、

# Remount root in rw-mode.
mount -o remount,rw %root% /
if [ $? != 0 ]; then
	/usr/local/bin/ledcont accblink
	/usr/local/bin/ledcont pwrblink
	/usr/local/sbin/leddrv_unload
	exit 1
fi

まずルートディレクトリを書き込み可能にマウントし直しているようです。で、マウントに失敗した場合、LEDで何かを示して終了と言う感じですね。

で、次、

# Backup setting files
for n in hosts.allow hosts.deny inetd.conf securetty sudoers; do
	f=/etc/$n
	if [ -f $f ]; then
		/bin/cp $f $f.backup
		if [ $? != 0 ]; then
			/usr/local/bin/ledcont accblink
			/usr/local/bin/ledcont pwrblink
			/usr/local/sbin/leddrv_unload
			exit 1
		fi
	fi
done

コメントによると、いくつかの設定ファイルをどこかに保存するようです。保存されるファイルは、「hosts.allow」「hosts.deny」「inetd.conf」「securetty」「sudoers」の5つ。同一ディレクトリに「.backup」と言う拡張子を付加してコピーするだけのようです。ここでも失敗したら、LEDが何らかの表示をして終了と言う感じの様子。

で、次、

# Add sudoers
s='/etc/sudoers'
if [ -f $s -a $(/usr/bin/grep -c landisk $s) = 0 ]; then
	echo '' >> $s
	echo 'landisk	ALL=(ALL)	ALL' >> $s
fi

sudoresと言う設定ファイルについて、ファイルが存在して、かつ、このファイルの中に「landisk」と言うキーワードが含まれていたら、ファイルの末尾に空行と「landisk」と言うユーザが何でもコマンドを実行できる様に設定をしているようです。このファイルは設定が後勝ちになってるようですね。で、万が一 landisk ユーザが設定されていない場合は、どうなるんでしょうか・・・?ちょっと謎です。

で、次、

# Copy Files.
tar xpzf /mnt/hda3/.landisk-update/update-files.tar.gz -C /
if [ $? != 0 ]; then
	/usr/local/bin/ledcont accblink
	/usr/local/bin/ledcont pwrblink
	/usr/local/sbin/leddrv_unload
	exit 1
fi

ルートでこのシェルスクリプトと一緒に入っていた「update-files.tar.gz」を解凍するようです。ファイルは上書きですね。どういうファイルが入っているのかは、また後で確認します。失敗したら、また、LEDで知らせてくれる様子です。

で、次、

# Remount root in ro-mode.
sync
mount -o remount,ro %root% /

「sync」でバッファされている内容をディスクに書き込んで、ディスクをリードオンリーにマウントし直しているようです。設定は終わったということですね。ちなみに、エラーチェックはなし。

で、次、

# Remove updator files
rm -rf /mnt/hda3/.landisk-update/update.tgz
rm -rf /mnt/hda3/.landisk-update/update-files.tar.gz

コピーしたアップデートファイルを削除しています。これは、自分で行う必要があるんですね・・。アップデートの仕組みに組み込まれているわけではないようなので、もし、自前でアップデートファイルを作成したりする時には、注意が必要ですね(ま、そんな機会は無さげですが・・)。これを忘れると、二度とアップデートができなくなるんでしょうか・・?

で、次、

# Reboot
sync
mount -o remount,ro /dev/hda3 /mnt/hda3
/home/LANDISK/scripts/powerctrl.sh reboot

また、ディスクに変更内容を書き込んで、特定のパーティションをリマウントしなおして、リブートしているようです。

・・・リマウントの箇所が何をしているのか良くわかりませんね・・。

で、最後に「exit 0」。これをしないとシステムがアップデートに成功したと認識できないんですかね・・?

まあ、大体やってることはわかりました。次は「update-files.tar.gz」の中身を見ることにします。

つづく。