debian 化(19)ジェイルの作成

LS-WSGL/R1

カーネルモジュールの操作や Buffalo 固有コマンドの実行環境として 標準ファームのジェイルを構成する。
ジェイルとは牢獄、閉じ込めたディレクトリツリーの事である。

標準ファームのディレクトリツリーを取り出し元として、
・標準ファームの HDD
・initrd
が考えられる。
・debian が動作している状態で、/boot にある (標準ファームの HDD を接続しなくてよい)
・まるごとコピーするので、コンパクトな方がよい
との理由から、 今回は後者、/boot/initrd.buffalo から取り出すことにする。

initrd.gz の復元

mini:~# ls /boot
conf_save.tgz                   initrd.buffalo       log.tgz
conf_save.tgz.orig              initrd.buffalo.orig  lost+found
hddrootfs.buffalo.updated.done  initrd.gz            uImage.buffalo
mini:~#
/boot には、 initrd の /linuxrc を編集したときの initrd.gz があるので、 これを使う。

まずは、圧縮を解く。

mini:~# cd /boot
mini:/boot# gunzip initrd.gz
mini:/boot#

loop デバイスの確認

debian なので、loop デバイスはあるはず。
mini:/boot# ls -l /dev/loop?
brw-rw---- 1 root disk 7, 0 May 26 11:41 /dev/loop0
brw-rw---- 1 root disk 7, 1 May 26 11:41 /dev/loop1
brw-rw---- 1 root disk 7, 2 May 26 11:41 /dev/loop2
brw-rw---- 1 root disk 7, 3 May 26 11:41 /dev/loop3
brw-rw---- 1 root disk 7, 4 May 26 11:41 /dev/loop4
brw-rw---- 1 root disk 7, 5 May 26 11:41 /dev/loop5
brw-rw---- 1 root disk 7, 6 May 26 11:41 /dev/loop6
brw-rw---- 1 root disk 7, 7 May 26 11:41 /dev/loop7
mini:/boot#
OK

マウント

/tmp/root に initrd をマウントする。
mini:/boot# mkdir /tmp/root
mini:/boot# mount -o loop /boot/initrd /tmp/root
mini:/boot# ls /tmp/root
bin  etc  libexec  linuxrc.orig  mnt   root    sbin  tmp  var
dev  lib  linuxrc  lost+found    proc  rootfs  sys   usr
mini:/boot#

容量の確認

initrd 内の全部を /usr/local/buffalo へコピーするので、 容量を確認する。
mini:/boot# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/md1               4993920    213768   4780152   5% /
tmpfs                    63116         0     63116   0% /lib/init/rw
tmpfs                    63116         0     63116   0% /dev/shm
/dev/root.old            15351     13874      1477  91% /initrd
/dev/md0                988088    149348    788548  16% /boot
/boot/initrd             15351     13820      1531  91% /tmp/root
mini:/boot#
/tmp/root は 13820 Used、/ は 4780152 の Available。
余裕で収まる。

ジェイルへコピー

tar でコピーする。

今なら、cp を使ってもよいのかな?
大昔は cp では、
リカーシブにコピーできないとか、
ファイル以外コピーできなかったり、
ファイルの日付が変ったり
して、具合いがよくなかったので、かならず tar を使っていた。
( cd コピー元 ; tar cf - . ) | ( cd コピー先 ; tar xvf -)
というワンパターンが脳に刻み込まれている。

コピー先を作る

mini:/boot# ls -l /usr/local/buffalo
ls: /usr/local/buffalo: No such file or directory
mini:/boot# mkdir !$
mkdir /usr/local/buffalo
mini:/boot#
コピーする
mini:/boot# (cd /tmp/root; tar cf - .)|(cd /usr/local/buffalo/; tar xvf -)
	:
	:
mini:/boot# ls /usr/local/buffalo/
bin  etc  libexec  linuxrc.orig  mnt   root    sbin  tmp  var
dev  lib  linuxrc  lost+found    proc  rootfs  sys   usr
mini:/boot#

initrd のアンマウント

mini:/boot# umount /tmp/root
mini:/boot# 

確認

一応、cdroot できるか確認
mini:/boot# ls /usr/local/buffalo/etc/linkstation_emergence
/usr/local/buffalo/etc/linkstation_emergence
mini:/boot# ls -l !$
ls -l /usr/local/buffalo/etc/linkstation_emergence
-rw-r--r-- 1 root root 84 Jul 22  2008 /usr/local/buffalo/etc/linkstation_emergence
mini:/boot# cat !$
cat /usr/local/buffalo/etc/linkstation_emergence
VERSION=0.01
SUBVERSION=RAM 0.00
PRODUCTID=0x00003002
BUILDDATE=2008/07/22 16:22:55
mini:/boot# chroot /usr/local/buffalo/ cat /etc/linkstation_emergence
VERSION=0.01
SUBVERSION=RAM 0.00
PRODUCTID=0x00003002
BUILDDATE=2008/07/22 16:22:55
mini:/boot#
OK.

LS-WSGL debian 化の残課題まとめ

1.debian がまともに動くようにする

1)起動時のエラーつぶし
(1)md0 の起動時マウント
・ネットワークの設定
・パッケージリストのアップデート
・mdadm のインストール
2)標準ファームによる RAID 化(md0, md1, md10)
3)電源スイッチによる電源OFF実現
4)LED の点滅解除
5)パッケージのアップデート
6)swap の有効化
7)標準ファームのジェイル化
8)カーネルモジュールのロード

2.手順化、ハックキット化

1)シリアルコンソールを使わないインストール方法の検討
2)インストーラ作成


LinkStation Mini
LS-WSGL
楽天市場
Amazon
Yahoo!ショッピング
Livedoor デパート
Sofmap
TSUKUMO ネットショップ
ムラウチドットコム
ヤマダ電機WEB
パソQ


設定が復元できていない
ハックの記録
LinkStation/玄箱 をハックしよう

セキュリティホールは塞がれている

Copyright (C) 2003-2008 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市