導入
ぷらっとホームのディスクイメージには本当に最小限のものしか入ってないし、 入ってても中途半端なbuildの仕方をしてたり(apacheとか)で、結局ソースから コンパイルしている。作業自体は問題無いのだが、後になってわけわからん。やはりきちんとパッケージ管理してもらわないと。
ということで、調べてみると、 Debianのディスクイメージを発見。 早速これをもらってきてインストール。つーか、ディスクイメージだから 展開して、カーネルをフラッシュ・メモリに書き込むだけだ。フラッシュ・ メモリ書き換えちゃうとinitrdから起動できなくなっちゃわないのかなー、 という一抹の不安があるが、構わず続行。rcを見るとちゃんとネットワーク 初期化してるし、inetdも起動してるし、まぁ、OSさえ上がれば後はどうにでも なるでしょ。ダメだったら工場出荷時に戻せばいいんだし。んで、reboot。 LEDの6が異様に長いが、やがて反復横飛びに。OSは立ち上がったらしい。 試してみるか。おっ、pingは通る。telnetは?
Connection refused
ん? へ? あ゛ーーー、telnetポートが開いてないーーー! 何度rebootしても一緒だ。仕方ない、リセットして工場出荷時に戻すか。 う、え゛、戻らないの? フラッシュ書き換えたせい? しょぼーん...
ますます引き返せない状況にはまりまくりだが、とにかく現状復帰しないと 二日間の作業どころかOpenBlockSの投資自体が無駄になってしまう。 考え得る復旧策は、
- 1)TFTPでファームウェアを書き戻す
- 完全に作業前に戻すにはこれが確実。でもTFTPの環境を用意する必要あり。
- 2)OSは正常に起動しているであろうと仮定しコンソールからログインして環境設定
- 家にはRS-232Cのクロスケーブルなんか無い。会社にもあるかどうか... そもそもOSが立ち上がってない可能性も。
- 3)ディスクをノートPCに入れて直接書き換える
- これもOSは起動している前提。
というわけで、今すぐ試せるのは3しかない。
ディスクを取り出してThinkPadに取り付け、Knoppixで起動する、ディスクを マウントして中身を見る。/mnt/usr/sbin/*telnet*, /mnt/sbin/*telnet*, find /mnt -print | grep telnet... 無い。そもそもtelnetdが入ってないのだ。 何で? コンソールの作業前提か? んがーーー。いきなりtelnetdが動くと セキュリティ的にまずいってこと? telnetdくらい入れといてくれよ... 仕方ないので、バックアップしておいた元々の環境をディスクに戻す。 当然ファームウェアはDebian用のものに書き変わったままなので 確実に動くという見込みは無かったのだが、もはや試せることはそれしかない。 結果は無事に復旧。クロスのシリアルケーブルを手にいれないといけないのか?
気をとりなおして作業続行。 telnetdさえ動けば後はどうにでもなるはずってことで、もらってきた ディスクイメージにtelnetdだけインストールしてみることにした。telnetdだけ とは言え、せっかくのパッケージ管理は壊したくないので、chrootして きちんとパッケージでインストール。
# mkdir root; cd root # tar zxpf ../debian-obss-2002-04-05.tar.gz # export PATH=/usr/sbin:/sbin:/usr/local/sbin:$PATH # mount -t proc /proc /proc # echo "nameserver 192.168.253.1" > /etc/resolv.conf # apt-get update # apt-get install telnetd
rootログインは拒否してるかもしれないのでログインできるユーザと home directoryを追加。これでリモートログインできると思うのだが...
帰宅後、再びディスクをThinkPadにmountして、Debianイメージをboot diskに 展開、電源を入れる。起動成功。リナザウからtelnet...
Debian GNU/Linux 3.0 obs LinuxServer login:
やったーー!!! 苦節3日、ついにOpenBlockSのDebian化に成功。
この時点でのパッケージは以下の通り。
adduser 3.47 apt 0.5.4 apt-utils 0.5.4 at 3.1.8-11 base-config 1.33.13 base-files 3.0.2 base-passwd 3.4.1 bash 2.05a-9 bsdmainutils 5.20020211-4 bsdutils 2.11n-4 console-common 0.7.13 console-data 1999.08.29-24 console-tools 0.2.3-23.3 console-tools- 0.2.3-23.3 cpio 2.4.2-39 cron 3.0pl1-72 debconf 1.0.31 debianutils 1.16 dhcp-client 2.0pl5-7 diff 2.7-29 dpkg 1.9.20 e2fsprogs 1.27-2 ed 0.2-19 exim 3.35-1 fileutils 4.1-10 findutils 4.1.7-2 gettext-base 0.10.40-4 grep 2.4.2-3 groff-base 1.17.2-15.wood gzip 1.3.2-3 hostname 2.09 ifupdown 0.6.4-4 info 4.1-2 ipchains 1.3.10-14 iptables 1.2.5-7 klogd 1.4.1-10 libc6 2.2.5-4 libcap1 1.10-12 libdb2 2.7.7.0-5 libdb3 3.2.9-15 libgdbmg1 1.7.3-27 libident 0.22-2 libldap2 2.0.23-3 liblockfile1 1.03 libncurses5 5.2.20020112a- libnewt0 0.50.17-9.5 libpam-modules 0.72-35 libpam-runtime 0.72-35 libpam0g 0.72-35 libpcap0 0.6.2-2 libpcre3 3.4-1.1 libperl5.6 5.6.1-7 libpopt0 1.6.2-7 libreadline4 4.2a-5 libsasl7 1.5.27-3 libstdc++2.10- 2.95.4-5 libwrap0 7.6-9 login 20000902-8 logrotate 3.5.9-7 mailx 8.1.2-0.200109 makedev 2.3.1-58 man-db 2.3.20-18 manpages 1.39-1.1 mawk 1.3.3-8 modconf 0.2.42 modutils 2.4.15-1 mount 2.11n-4 nano 1.0.6-2 ncurses-base 5.2.20020112a- ncurses-bin 5.2.20020112a- net-tools 1.60-4 netbase 4.07 netkit-inetd 0.10-9 netkit-ping 0.10-9 nvi 1.79-20 passwd 20000902-8 pciutils 2.1.9-4 perl-base 5.6.1-7 ppp 2.4.1.uus-4 pppconfig 2.0.14 pppoe 3.3-1.1 pppoeconf 0.9.10.5 procps 2.0.7-8 psmisc 20.2-2.1 sed 3.02-8 setserial 2.17-24 shellutils 2.0.11-11 slang1 1.4.4-7.2 sysklogd 1.4.1-10 sysvinit 2.84-2 tar 1.13.25-2 tasksel 1.18 tcpd 7.6-9 telnet 0.17-17 telnetd 0.17-18woody2 textutils 2.0-12 util-linux 2.11n-4 whiptail 0.50.17-9.5