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

2007年01月の記事

<< 前のページ

2007年1月30日(火) 23:28

Vaio type U 到着

Sony Style に注文していた type U が届きました。VGN-UX91NSです。 以前とほとんど変わっていませんが、本体に Intel inside のシールと Windows Vista のシールが貼ってありました。また、以前は付いていたリカバリーディスクは今回は付いていませんでした。Windows を起動したらリカバリーディスクを早速作成しましょう。そして、キーボードの雰囲気も以前とは違うようです。打ちやすくなったかどうかはまだわかりませんが。

使い始める前に、工場出荷時のイメージを取っておきましょう。ここを参考にディスクのイメージをとっておきます。最近アップデートした TrueImage Home 10 のブータブルメディアで、ネットワーク経由でイメージを取りました。約1時間20分ほどかかりました。念のため、べりファイしたところで今日は終わりです。

ツイン VAIO
左がバックアップ中の UX91NS、右が UX90PS。う〜〜ん。やっぱり病気かもしれない。

written by sirius [Vaio type U] [この記事の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月23日(火) 00:33

amazonn で買い物

しばらく利用していなかった amazon。ちょっとのぞいたら 「DVD を 4 枚買うと 1 枚ただ」というのにつられて気づいたら 8 枚買ってしまいました。まあ、割引を考えて平均して一枚あたり 930 円になるけど。

コンタクト 特別版
エクソシスト ディレクターズカット版
マトリックス 特別版
魔法の剣 キャメロット 特別版
2001年宇宙の旅
チャーリーとチョコレート工場
時計じかけのオレンジ
バリー・リンドン

うう、amazon の策略にどっぷり浸かっている。見る時間もろくにないのに。ついでに「OP-FAN HD-HCシリーズ用 冷却ファンユニット」も買っちゃったし。

そうそう、VAIO の typeU。注文しました。今もっているゼロスピのバッテリーとかを考えると同じ色の黒にしました。分割は嫌いなので一括です。

こんなに買って払えるのだろうか?ちょっとはセーブしろ。自分。
2、3ヶ月はもう無駄遣いできないな〜。

written by sirius [その他] [この記事の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

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

2007年1月15日(月) 00:28

Mserv を使ってみる

内向きのサーバとして使っている Kuro-Box/HG は、250GB HDD を内臓させて、MP3 倉庫としても使っています。
倉庫といっても、USB スピーカをつないで、JUKE-BOX としても使っています。この JUKE-BOX 用の Web インターフェースとして、「玄箱の本」の中のものを改造して使っていました。
ところが最近、この Web インターフェースがうまく動いてくれなくなりました。多分、曲数が多くなったせいでしょう。

探してみたところ、Mserv というものが同様なことができるようなので使ってみました。ソースからビルドしましたが、そのままでは問題がありました。

日本語が使えね〜〜
日本語のファイル名やパスがあるとうまく表示されませんでした。また、日本語のタグがやはり取得できないようです。

ソースからビルドしたので、当然、ソースコードがあります。
改造しちゃえ。
日本語の id3v2 タグが使えるようにソースを修正し、CGI でも日本語が使えるように jcode.pl を利用して日本語コードを euc に変換するようにしちゃいました。そしたらもうひとつ問題が…。

ファイル数を増やしたら落ちた
やっぱり…。

結局、この手の動的に曲情報を一括して取得する方式では、ファイル数が多くなると Kuro-Box/HG の様にメモリの少ない場合にうまくいかなくなるという事でしょう。
ということで、自分用に新規に作るか…。(めんどくせ〜)

せっかく改造したので、Msserv(ver 0.35) 用のパッチをここに置いておきます。ただし、普通、id3v2 タグは UTF-8 のようですが、jcode.pl を使っているので、UTF-8 は使えません。また、Kuro-Box ではファイル名が shift-jis なので、id3v2 タグも shift-jis でないと Web ページが文字化けします。(UTF-8 以外なら jcode.pl で変換しているので大丈夫なはず。2007.01.15 訂正)本体はこちらからどうぞ。
いつも通り、使用は自己責任で。

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

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

2007年1月1日(月) 15:47

あけましておめでとうございます

謹賀新年。

今年もいろいろやっていこうと思います。よろしくお願いします。

新年ということで、ホームにあるようにいくつか更新しました。興味のある方は見てください。

グラタンの外付けが、速度に難はあるものの、順調に動いているので、もう一台グラタンを買ってしまいそうです。ほんと、病気ですね。

私のホームページですが、テキストエディタでしこしこ書いています。
レイアウトはテーブルを使っています。いまどきのページはスタイルシートを使ってレイアウトするのが主流なので、そろそろ勉強しようかと思っています。

なので、新年早々ですが、更新がちょっと止まってしまうかもです。
前にも書きましたが、閉鎖するつもりはないので、見捨てずにたま〜に見に来てください。

それと、wizd の方は、たまに、ダウンロードして下さる方がいらっしゃるんですが、今とまっちゃってます。AP1000 をメディアプレーヤー代わりに使っているので、自分の中の優先順位はかなり下になっているのであまり期待にこたえられないと思います。

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

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

<< 前のページ

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

MySketch 2.7.2 written by 夕雨