LS-HGLメモ  LS-H500GL改めLS-H10GL(ぉ のdebian化メモ。主に自分向け備忘録。 2009/07/28 : debian環境に挑戦(1)  linkstationの偉い人の所へ行けばdebian化キットが実費で入手できるのだが、 そこは最後の手段として自分でやってみる事にする。決して500円を惜しんでいる訳では(ry。  他のディストリビューションで動いているLinuxでもdebian化できる、debootstrap という ツールがあるらしい。これはwgetとarがあれば動くらしい。へー。  とりあえずwgetでdebootstrapを取得。 # wget http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.15_all.deb  次にarでdebootstrapを展開。 # ar sh: ar: command not found  ……arがない。(``;  最近のtarは多機能だからarの代わりにならんかな? ……。なりませんでした。 単にbusyboxに「お前はarになるのだ」とリンクを張ったら動かない? ……。なりませ(ry  さっきのbootstrap_*.debのあった所に.tar.gzの奴があったな。あれならtarで展開出来るぞ。 debootstrap_1.0.15.tar.gz げっつ。tar xvzf して……。  Makefileが出来てる。……んー?debootstrap_1.0.15_all.debを作るツールなのかなぁ。 後で気付いたが、ヘルプファイルらしきものも含まれるので、こっちを展開するだけでもインストール 出来そうな気もする(注:未確認)。が、いらん苦労を背負い込みたくないので以下略。  arについてネットで調べる。複数のファイルをまとめるツールで、用途はtarとよく似てる気が するんだが、tarがarの上位とかそーいう甘い話はない模様。ちっ # なんか缶詰の中に缶切りがあって、缶詰を開ける方法で悩んでる気がするなぁ…。(-_-;  とりあえず母艦を起動する。さーてarしますか。 # ar -x debootstrap_1.0.15_all.deb sh: ar: command not found  ……arがない。(``;;  母艦にもarがないんかい!なんでじゃーーーーー。orz 落ち着け!落ち着くんだ俺!オチはつけるな俺!  ここらで考えが変な方向へ。疲れてるに違いない。 ar をインストールすればいいが、今立ち上がってるのはi386だからバイナリ互換はないよなぁ。 armel用ar をインストール方法はないのかなぁ。…とゴソゴソ探し始める。 # なんか缶詰の中に缶切りがあって(以下略  全然そんな情報は見つからず。……つまり根本的にボケてんだな?とりあえず頭を休めよう。 母艦debian に入っていた数独でもプレイして心を静める。……30分もかけるなよw  ふう。おちついた。(``*  何をどう勘違いしたか判らないが、ファイル展開だけだから母艦にarをインストールして、 あとはls-hglで動かせばいいだけの話なんだが…何故armel用arを探そうとするのか……。 (注: そもそもクロス環境によるセットアップも可能だったりする)  ……これだけの結論に至るまで、どんだけ時間がかかってるのやら。  母艦で aptitude search ar とかしてパッケージを探す。arという文字列が含まれる奴が全て出てくる。 読み切れるかぁああw ……しかも見つからない。orz  man ar でヘルプを眺める。ファイルを以下略するツールですよー云々。関連するから binutils も 参照しろとか何とか。ふむふむ。また10分程悩んで。  あー、aptitude insltall binutils すれば ar が入るんだ。 ……ここまで理解するのにトータルで1時間以上かかってる訳ですが。|ω・`)  やっとこ ar -x debootstrap_1.0.15_all.deb に成功。ではまたls-hglへ戻ります。 ls-hglに戻ったら時計が飛んでる事に気付く。たしか昨晩抜いて夜電源入れたから18時間とかその程度なんだが。 コンデンサの電力は数時間のオーダーですか…。  時計をふにふに直して再開。 # cd / # zcat /root/data.tar.gz |tar xv # debootstrap --arch armel lenny /mnt/disk1/deboot/ http://ftp.jp.debian.org/debian I: Retrieving Release I: Retrieving Packages : I: Extracting zlib1g... W: Failure trying to run: chroot /mnt/disk1/deboot mount -t proc proc /proc # あ、エラー停止した。 エラーが出たコマンドを手打ちでポチッとな。 # chroot /mnt/disk1/share/deboot/ mount -t proc proc /proc chroot: cannot execute mount: No such file or directory  chroot しようとしたが、その時マウントするディレクトリが見つかりませんよ、と。 眠い頭で30分程試行錯誤して断念。明日だ明日。(``; 2009/07/29 : debian環境に挑戦(2)  chrootってあんまりやったことないので、どーやったら動くのかよく判ってません。 chroot /hoge とかやっても「/bin/sh が無いよ」で失敗する。/hoge/bin/sh も準備したし、 これは単体でも動くのを確認したつもりなんだけどなぁ。  とりあえず、debootstrapを --foreign & --second-stage でやってみるけどやっぱりNG。 うーん。もう少しchrootについて調べてみるか。  ……まさかkernelの問題で動いてない訳じゃないよね?(汗 色々なサイトでは玄箱proのカーネルはEABI(armel)だと聞いてるんだけど、実はOABI(arm)とか そーいうオチじゃないだろうなぁ。仮にOABIカーネルだとすると動かないかも。 2009/07/30 : debian環境に挑戦(3)  悩むと確認することがどんどん増えていきます。(-_-;  基本的にdebootstrapを実行したらchroot出来る環境を整えられると思ってたんだが、 先に何か旧環境を移しておく必要があるのかもしれない。 ポイント 1.   debootstrap中に chroot /hoge mount -t proc proc /proc が失敗してるので  /hoge/procがあれば後へ進めるんじゃないか? → 駄目でした。debootstrapが停止した時点で mkdir proc して chrootしたが失敗。 ポイント 2.   そもそも ar が無いのが駄目? → debootstrap 中で再度arを使ってる可能性。  一応、クロス環境で--foreignはやってないので、可能性は否定しないが…。 → ls-hglの標準kernelが「なんちゃってEABI」という可能性を考えて  ls-hgl上でクロス環境で debootstrap --foreign してみると一応出来た。 ポイント 3.   Linkstationの /bin/bash はどっか外部ライブラリとリンクしてんのか? → /lib とか他の環境もコピーしなきゃ駄目っぽい。インストーラでやってくれよー。 ポイント 4.   OABI環境でのdebootstrapが必要? → 実はls-hglのkernelがOABI版だってオチは無いだろうなぁ、と。  debootstrap --arch arm で一個作ってみる必要があるかも。   仮にOABI環境を使うにしてもOABIはサポート終了方向だし、OABIユーザーランドが  半端に怪しい挙動を示しながら動いてしまうらしいので、混在させるとトラブル発生時の  原因確認が難しくなる。よって早めにEABI環境へ移行をすべき。   ちなみにEABI環境だと浮動小数点処理が「とても」速いらしい。   と考えると、早めのカーネルコンパイルが必要になることに。  今の状態だとi386でクロス環境作ってって話になるのでちょいと面倒な話じゃのう。   …NetBSDだとカーネルコンパイルも全然苦にならないのにLinuxだと面倒だと  思ってしまうのは何故なんだろうか。(._.; =========  結局、/lib とか /usr を一通り持ってきてもdebootstrapに失敗する。 しかも「dpkgがない」とか寝言ぬかしやがりますよ先生。dpkgはdebootstrapが持ってくる奴でしょーが。  これはls-hglのtarか、debootstrap自体が腐ってるんじゃないか?という結論に至る。 とりあえずクロス環境でインストールする方向に方針転換。  まずは母艦で debootstrap --foreign してやるまで。 母艦:# aptitude install debootstrap 母艦:# mkdir ./lenny-armel 母艦:# debootstrap --foreign --arch armel lenny ./lenny-armel http://ftp.jp.debian.org/debian 母艦:# cd ./lenny-armel 母艦:# tar czf ../lenny-armel-rootfs.tar.gz ./* 母艦:# mount /dev/sdb2 /media/disk-2 母艦:# cp /lenny-armel-rootfs.tar.gz /media/disk-2 母艦:# mkdir /media/disk-2/lenny-armel 母艦:# tar xvzf /media/disk-2/lenny-armel 母艦:# umount /media/disk-2  一応、母艦でarmel用tarball作成〜ls-hglへファイル展開まで作業を済ませてしまった訳だが、 確か昨日LS-HGL側でdebootstrap --foreign した後に固めたtarballがあるんで、2つのファイルを 見比べる。 -rw-r--r-- 1 root root 48158439 Jul 30 00:02 debinst.tar.gz -rw-r--r-- 1 root root 71672082 Jul 31 2009 lenny-armel-rootfs.tar.gz  ……。ls-hglで固めたファイルが48MBで母艦で固めたファイルが71MB。 ls-hglのgzipは化け物なみの強力圧縮でですね、わかります。 ……んな訳あるかぁあああ!!(ノ-_-)ノ⌒○  自前でdownloadした奴とapittudeで拾った奴とでdebootstrapのバージョンが異なる可能性は あるけど、それでも準備されるファイルのサイズが20MBも違う訳なかろう…。  debootstarp 起動時のオプションが異なる可能性も否定はせんけどな……。 アーキテクチャ指定間違えたりとか。(憤死  この数日悩んだオチがこれかい、という感じ。自分の操作ミスの可能性は棚上げして、 ls-hglのツール類が腐ってたという事にしておこう。(-_-;  そもそもls-hglにarが無い時点でかなりイレギュラーな方法を実施している自覚はあるが そこは棚上げしておくことも言うまでもない。(ぉぃ  気を取り直してdebootstrap後半戦。  まずはchrootから。 root@LS-HGL7BD:/# cd /mnt/disk1/lenny-armel root@LS-HGL7BD:/mnt/disk1/lenny-armel# chroot . sh-3.2#  お、サクッとchroot成功するやん。 sh-3.2# debootstrap/debootstrap --second-stage I: Installing core packages...  …お、なんか始まった。30分待っても全く状況が変わらないが、時々HDDが動いてるようなので 多分大丈夫なんだろう。って事にして寝ます。 2009/07/31 : debian環境に挑戦(4)  朝、出勤前に確認してみたけど、second-stageが終わってません。遅い。 定期的にHDDアクセスがあるので死んではいないだろうとは思うが一応確認。 root@LS-HGL7BD:~# top top - 08:02:36 up 7:08, 2 users, load average: 1.89, 1.71, 1.65 Tasks: 66 total, 3 running, 63 sleeping, 0 stopped, 0 zombie Cpu(s): 6.8%us, 92.3%sy, 0.0%ni, 0.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 126324k total, 99848k used, 26476k free, 16424k buffers Swap: 1001448k total, 0k used, 1001448k free, 65768k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4422 root 25 0 2908 796 228 R 58.8 0.6 373:19.66 debootstrap 21403 root 19 0 2192 1124 872 S 19.0 0.9 0:00.10 miconapl 21399 root 15 0 2084 944 736 R 3.8 0.7 0:00.07 top 831 root 16 0 2152 784 568 S 1.9 0.6 1:20.46 miconmon_exec.s 1108 root 15 0 2380 964 520 S 1.9 0.8 3:28.73 diskmon_exec.sh  負荷もちょこちょこ変わってるし、プロセス状態もR(Running)なので動いてる筈。 帰宅するまでに終わってなかったらどうしよう。  ましてエラーで終了とか(ガクガクブルブル ============  …という訳で帰宅して確認すると、終わってません。(爆 お前はカーネルコンパイルでもしてんのか。(-_-; 再挑戦してみたが、どーも状況変わらない。debootstrap 前半戦からやり直し。 2009/08/01 : debian環境に挑戦(5)  朝確認してみるも状況変わらず。うーん。 debootstrapのログファイルを発見したので見てみると、開始後5分足らずまでしかログが無い。 どう考えても転けてる、って事だろうね。|ω・`)  試行錯誤の結果、根本的な話としてkernelがOABI用なんじゃねーか?という疑念が。 ネットで調べると玄箱/PROは「kernelが正式対応してない段階で無理矢理EABIにしてる」 という話だったので、後の世代であるls-hglあたりはカーネルバージョンも上がってるし、 「正式対応したEABI」だと思ってたんだけど。  という訳でOABI(arm)なdebootstrapで後半戦をやってみることに。 # cd /mnt/disk1/lenny-arm # ls bin dev lib root sys var boot etc mnt sbin tmp debootstrap home proc selinux usr # export DEBOOTSTRAP_DIR=/mnt/disk1/lenny-arm/debootstrap # ./debootstrap/debootstrap --second-stage --second-stage-target=/mnt/disk1/lenny-arm/ I: Installing core packages... I: Unpacking required packages... I: Unpacking base-files... : I: Configuring tasksel... I: Base system installed successfully.  通った!!所要時間としては10分そこそこ。どー考えても一晩はない。(笑  あとはdebian公式サイトのガイドとか他のサイトを参考にしつつ進める。 # chroot . sh-3.2# MAKEDEV generic /sbin/MAKEDEV: warning: can't read /proc/devices /sbin/MAKEDEV: warning: can't read /proc/devices :  warningが出た。procが読めないらしい。mountで見るとprocはあるように見えるんだが…。 問題が出たときにMAKEDEVしよう。  /etc/fstab は…と。からっぽ。あとでls-hgl親環境からもってこよう。  /etc/default/rcS を見る。timezoneがUTC=yesなんでnoに変更してtzconfig。 sh-3.2# tzconfig WARNING: the tzconfig command is deprecated, please use: dpkg-reconfigure tzdata  tzconfigは推奨しないのでdpkg-reconfigureを使え、と。へいへい。 sh-3.2# dpkg-reconfigure tzdata Current default timezone: 'Asia/Tokyo' Local time is now: Sat Aug 1 17:17:31 JST 2009. Universal Time is now: Sat Aug 1 08:17:31 UTC 2009.  メニュー形式でサクサク。…なんだがAsia/Japanがねぇ。しばらく悩んでAsia/Tokyoを発見。 Asia/Osakaとかはない。ちっw  その他ネットワーク周りを見直したが、ここも設定は空っぽ。 chroot環境なら無しでもとりあえず動くようだし、直すのが面倒なので後回し。  一応、シリアルコンソールは動かないと洒落にならんので、inittabだけは忘れないうちに ls-hgl標準環境からコピーしておく。  で、inittabの中を見るとデバイスでttyS0を使ってる。 debian環境の /dev を見たがttyS0は無い。 sh-3.2# MAKEDEV ttyS0 /sbin/MAKEDEV: warning: can't read /proc/devices  /proc ファイルシステムがない、と。さっきのMAKEDEVのエラーは多分これか。 proc は何回も mount 出来るらしいので、debian環境のprocもマウントしてMAKEDEVしておく。 sh-3.2# mount -t proc /proc /proc sh-3.2# MAKEDEV ttyS0  んで、debian環境ならaptitude(パッケージ管理システム)が使えないと旨味がない。 という訳で、/etc/apt/sources.list の確認。…空っぽ。忘れないうちに記述。 sh-3.2# aptitude update  うし、aptitudeも通った。満足満足。 (気分転換)  ここで、armで通った操作と同じ操作をarmel用debootstrapでもやってみる。 やっぱりlib6の展開あたりで落ちてる模様。ふむ。 2009/08/02 : 今後の方針  今日は一休み。今後の進め方を考える。 debian環境は立ち上がったが、ネットワーク設定等は標準環境の間借り状態。 なんちゃってdebianってところか。  chrootしてても他からtelnetすると、chroot前の環境が見えてるし。(-_-;; これはchroot後にtelnetを再起動すると新環境になるのかねぇ。  そんなこんなで最終的にはブート時からdebianが起動する状態にしたいのだが、 どーやって進めていこう…。(゜゜; 必要事項: ・/boot と / の差し替え(u-boot用イメージの変更)が必要な筈。 ・/etc 下の設定ファイル各種の取得。 ・buffalo固有のファイル(電源SW管理など)の移転。  今後の事も考えると、出来ればどっかにまとめておいてリンクで対応にしたい。 ・そろそろls-hgl環境のバックアップを取っておこう。 推奨事項: ・カーネルのEABI(armel)環境化   今後の標準がEABIである以上、OABI環境に居座っていたくない。  さらに(スクリプトで自動化出来ない限り)環境を2回も作り直ししたくないので、  一気にEABIにしたいところ…。   無謀かなぁ…。うーむ。 次回以降の話 ・EABI対応カーネルを入手する/自力makeする。 クロスコンパイル環境があった方が今後のため。 u-boot用イメージも作らないといけない。 ・標準ls-hgl特有の環境を移植する。 ネットワーク環境とか電源管理周りのコマンドとか。 initrdで色々サービスが走りすぎてる気もするので、そこの調整も必要。 ・正規HDDの中をのぞいてみる。   代替HDDでもインストール出来てしまったのでやらんかも。 ・その他   サーバ&UNIXな端末として動いてもらう。<優先度低いw