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

<< 前のページ | 次のページ >>

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

2007年1月20日(土) 00:34

LS-GL のHDDの換装(2)

起動不能にしてしまった、LS-GL。
Terastation に HDD をつないでみたら sda2 のファイルシステムが壊れているようでした。Terastation でファイルシステムを作り直すと緊急モードで LS-GL が起動しました。
標準ファームでアップデートをしたら、普通どおりに起動するようになりました。

昨日、ファームのアップデートが終了したのに緊急モードでしか起動しなかったのは、hddrootfs.img の作成に失敗していたようです。
hddrootfs.img を解凍すると hddrootfs.buffalo.updated ができるのですが、このファイル名を間違っていました。それでファームが展開できなかったようです。

で、ファイル名を正しくしてデバックモードで強制アップデート。アップデートは "rootfsをアップデートする"、"バージョンチェックをしない"、"強制アップデート"だけチェックしました。
今度は起動しました。

早速、telnet でログインしてみました。

でた〜。ログインプロンプトが出ました。
root でログインっと。

…。へ?。Password ってなに?…。
やっぱり。Terastation と同じようにどっかで書き戻してるな。

admin ではログインできましたが、su や sudo もないし。hddrootfs の作り直しです。
でも、これで root のパスワードさえ何とかできれば、LS-GL をばらさなくても telnet が使えそうです。

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

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

2007年1月19日(金) 01:21

LS-GL のディスクの換装(1)

LS-GL が届いたので遊びます。
まず、MAC アドレスを調べ、DHCP サーバに登録。うちでは一時的につなぐ時以外は、 DHCP のアドレスの割り当てを静的に行っています。

ネットワークにつないで電源を入れます。PC から管理画面を開きます。共有フォルダもチェックしようと思ったらデフォルトで共有はありませんでした。
以上、動作確認終了。

早速箱を開けて HDD を取り出しました。
これを Terastation へつなげて、各パーティションをバックアップしました。

Disk /dev/sda: 255 heads, 63 sectors, 48641 cylinders
Units = cylinders of 16065 * 512 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 48641 390010005 5 Extended
/dev/sda5 88 104 136521 82 Linux swap
/dev/sda6 105 48641 389873421 83 Linux

sda1 が ext3、sda2 が xfs、sda5 が swap、sda6 が xfs です。
Terastation ではデバイスが sda5 までしかなかったので mknod で sda6 は作りました。
(# mknod sda6 b 8 6)

別の 80 GB の SATA の HDD をつないで、パーティションを切りなおして、バックアップから書き戻します。
Disk /dev/sdb: 255 heads, 63 sectors, 9729 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 523 4200966 83 Linux
/dev/sdb2 524 3134 20972857+ 83 Linux
/dev/sdb4 3135 9729 52974337+ 5 Extended
/dev/sdb5 3135 3151 136521 82 Linux swap
/dev/sdb6 3152 9729 52837753+ 83 Linux

sda1 に 4G、sda2 に 20G、swap(sda5) に 128M、sda6 に残り全部。それぞれフォーマットしてから書き戻しました。

この HDD を LS-GL へ内蔵して、起動。管理画面が出るのを PC で確認して、ファームの強制アップデート!
HD-HGLAN のころは、-force オプションで強制アップデートできたようですが、今回はうまくいきませんでした。
アップデートの設定ファイル lsupdater.ini のなかで、

VersionCheck = 1

となっているところを

VersionCheck = 0

とすると、アップデートの途中までいきましたが、パーテーションサイズを変更したのが悪かったのかエラーになってアップデートができませんでした。
そこで、デバックモードを有効にするために、lsupdater.ini にオプションを追加します。

[SpecialFlags]
Debug = 1

再度、LSUpdater.exe を起動し、システムメニューのデバックモードを有効にし、完全フォーマットを行いました。
フォーマットされ、パーティションが切られ、フォーマットされました。緊急モードで起動したようです。
デバックモードを外し、再度アップデートを行います。今度はアップデートが完了しました。
しかし、やはり緊急モードでしか起動しません。

いろいろやっているうちに起動しなくなりました。やはり、今までと違って起動ファイルはディスク上にあるようでそれが壊れてしまった模様。
もう一度やり直し。

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

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

2007年1月17日(水) 22:04

LS-GL の前準備

LS-GL が届くのが待ち遠しいので、先にファームをいじってみます。

Buffalo のサイトから LS-GL 用の最新のファーム (Ver 1.02) をダウンロードして解凍します。
出てきた hddrootfs.img を hddrootfs.img.zip に改名して、解凍します。
その際にパスワードを聞いてくるので某パスワードを入力します。
出てきた hddrootfs.buffalo.update hddrootfs.buffalo.updated を hddrootfs.buffalo.update.tar.gz hddrootfs.buffalo.updated.tar.gz に名前を変えて玄箱へ持っていきます。
ここから 玄箱での作業。root になって、

# mkdir root
# cd root
# tar xvfz ../hddrootfs.buffalo.update.tar.gz

これでファイルが取り出せるので、早速、telnet が使えるようにします。
etc/init.d/rcS でコメントアウトされている次の行の # を消します。

# /usr/sbin/telnetd

root のパスワードを外す。(これでもだめな可能性があるがそのときはそのときでまた考えます。Terastation と同じ手を使います)
パスワードは etc/shadow 内に書かれています。このときファイルのパーミッションに注意します。このファイルのパーミッションを変えてしまうと誰もログインできなくなります。

tar で固めます。

# tar cvfz ../hddrootfs.buffalo.update *
# tar cvfz ../hddrootfs.buffalo.updated *

あとは、zip で固めて OK。パスワードはつけなくても大丈夫のようですが、パスワードつきで固めました。

LS-GL が届いたら、このファームを強制アップデートすれば箱を開けなくても telnet できるはずです。(シリアルコンソールをつける予定なので結局、箱は開けるつもりだけど)

ちょっと解凍したディスクイメージの中を散歩してみたら眼を引くファイルが…。

etc の下に…

ssh_config
ssh_host_dsa_key
ssh_host_dsa_key.pub
ssh_host_key
ssh_host_key.pub
ssh_host_rsa_key
ssh_host_rsa_key.pub
sshd_config

おいおい。いいんかいホストキーなんか置いちゃって。

usr/local/bin の下に…

scp*
sftp*
ssh*
ssh-add*
ssh-agent*
ssh-keygen*
ssh-keyscan*

しまいには、usr/local/sbin の下に…

sshd*

って そのまんまで ssh が動きそうです。(もちろんホストキーは作り直してね)

さらに、usr/local/bin には

bison*
flex*
yacc*
m4*

とか

rlogin*
rsh*

とか。さすがに as とか gcc はありませんが、usr/bin にはリンク先に実体は無いものの

arm-none-linux-gnueabi-ar@
arm-none-linux-gnueabi-ranlib@

なんてシンボリックリンクがあったりして。どうせここまでやったんなら開発環境付きのフルバージョンファームを公開してよ、Buffalo さん。
もっともセルフの開発環境や、カーネルのソースらしきものは、もう見つけてあります。

ssh が使える様になったら telnet は止めようと思います。
(2007.01.20 訂正)

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

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

2007年1月17日(水) 00:14

LS-400GL 購入

LinkStation/玄箱をハックしように新 linkstation のハックが書かれています。HS-DHGLも購入していろいろ楽しそうなので、私も LS-GL を手に入れることにしました。U-Boot で、tftp boot ができたって事が最大の購入理由。届いたら早速やってみたいけど、その前に シリアルコンソールを引き出さないといけないので、ちょっと先かな。

初期不良のみの保証しかないけど安かったからいいか。玄箱、Linkstation、Terastation、グラタンとついに 10 台目か…。きっと新Linkstationはもう一台買うと思う。

そういえば、VAIO の typeU をもう一台買おうと思っていたら、いつのまにか在庫が無くなって買えなくなっていました。今日見たら、Windows Vista 版が発売になるそうで、欲しかったのと同スペック (ゼロスピのメモリ 1G フラッシュ 32G) の値段が 6 万ほど安くなっていました。金曜日から予約だそうです。買っちゃうだろうな〜。ブルーの筐体のを買うつもりです。

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

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

2006年3月16日(木) 23:39

PCast の録画予約情報

Link de 録!の予約が無い時、Linkstation をスリープさせようと考えています。/usr/local/PCast に PCast 関連のファイルがあるので、いろいろ見てみました。

DbAcRap がメインのコマンドらしいです。
このコマンドを使って、キャプチャーボックスの状態を取得する方法は、知っていました。PC-MV71DX/U2 は、電波の状態が悪くなるとエラーになって、録画失敗が多いので、cron を使って、エラー時に再起動するようにしています。

PCast の Web インターフェースの CGI に この DbAcRap を使っているのがあったので調べた結果をまとめました

予約状況が取得できるので、後はスクリプトを作成するだけです。

wizd の方は、いままでソースしか見ていなかったのですが、CGI をながめていたら、ひょっとして、チャプター撰択に関しては、こっちでやってるのかも知れないと思うようになりました。今度のやすみにじっくり見てみます。

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

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

2006年3月15日(水) 21:54

HLWG で telnet

HD-HLWG は cpu に mips を使っているので、HD-HGLAN の様に 玄箱/HG のバイナリは使えない。Debian のパッケージを利用する方法をまとめたページを追加しました。

2ch の方にも使えたと言う書き込みがあり、wizd with DVDISO も使ってもらえているようで嬉しいです。早く 4:3 以外のものもちゃんと映るようにしないと。

とはゆうものの、Link de 録!を使っていますが、これについてもちょっとやりたいことがあります。予約状況をみて、予約が無ければ、平日の日中は自動でスリープさせようと考えています。うまくできたらまとめたいと思います。

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

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

2006年3月14日(火) 23:54

HD-HGLAN でtelnet

HGLAN に telnet を導入する手順のページを追加。

玄箱と HGLAN は基本的に同じらしく、玄箱のバイナリは、HGLAN でも動くようです。ただ、基板のバージョンは違っているので、全てがそうかどうかは分かりません。

次の予定は、HGLAN に SSH を導入することです。

HLWG にも telnet を導入していますが、こちらのバイナリは、Debian から持ってきました。その手順も後でまとめます。

ちょっと時間がかかりそうなのが、Terastation の isofs です。単純に玄箱でコンパイルしただけではだめなようです。玄箱や Linkstation の gcc は 2.95.3 ですが、Terastation の gcc は 3.3.1 なのと、glibc のバージョンも違うようなので厄介です。

あと、トップページにあった月齢を表示するプログラムを JAVA で作っていたのですが、作り方が悪いのか、表示が遅くなったり、ちょっと不都合があるようなので消しました。原因が分かり、修正が可能であれば戻すつもりです。

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

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

2006年3月11日(土) 23:51

Linkstation で telnet

wizd の方は、ちょっと悩むところがあったので、逃避しています。

HD-HG300LAN が届いたので、早速 telnet を仕込んで見ました。
分解して他の Linux Box につなぐやり方は、沢山ホームページがあるので、ファームウェアに仕込んで、Update でやってみました。(フラッシュ ROM じゃありません。念のため。)

Debian から PPC のバイナリを持って来て、いろいろやってみましたがうまくいかず、結局、玄箱のファームから抜きだすことになりました。手順を近いうちにアップします。
次は、GCC の導入に挑戦です。

wizd は、明日からまた再開します。待っている方、申し訳ない。

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

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

<< 前のページ | 次のページ >>

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

MySketch 2.7.2 written by 夕雨