玄箱Pro、直します。

超初心者が、玄箱PROでLinuxを勉強する無謀なブログです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
別窓 | スポンサー広告
∧top | under∨

7ヶ月目の日記

Linuxに触れて7ヶ月。
いや、さっぱりわかりません。
わからないことだけをグダグダ書きます。

・/dev/rootとは何か
/devディレクトリにもいませんけど、/にjffs2でマウントされています。
これがずーーーーっっっっっっっとわかりませんっ。
かれこれ7ヶ月。
/etc/fstabにも記述がない。
標準Linuxなら/dev/mtdblock2、開発用Linuxなら/dev/sda2を/に指定していますけど、これってひょっとして「マウントしろ」って意味とは違うのかな・・。
/etc/init.d/rcSに「mount -o rw,remount /dev/root /」とあるんですけど、remountは「デバイスとマウントポイントを変更しない」とのこと。
ということは、roでマウントされた/dev/rootを単にrwでremountしているだけなんでしょうか。
それならば、どの段階で/dev/rootなるものを/にマウントしたのかがわかりません・・。

・rootfs
これも/にマウントされています。rootfsというタイプで。
なんじゃこりゃー。
/dev/mtdblock2だの/dev/sda2だのがどこでどう絡むのかがわかりません。

・$THIS_SCRIPT
/usr/local/bin/kuro_lib内のlock_file()に出てくる変数ですが、これって何でしょうか・・?
環境変数でもなさそうなのに突然出てきてわかりません。
実行しているシェルスクリプト名を返すのかな・・。

今思いつくだけでこれだけ。
まだまだ調べれば調べるほど増えそうな感じですね。
別窓 | 日記のようなもの | コメント:0 | トラックバック:0
∧top | under∨

まとめwiki

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

備忘録として始めたこのブログ。
更新したプロフィールにも書いたのですが、だんだん目的のコマンドやログを探し出すのが困難になってきました。
いや、てか私のまとめ方や整理の仕方が悪いんでしょうけど・・ブログって時系列のくくりだから項目別ってのはうまい方法ないですよねぇ・・。

そこで、ここに書いてきた内容を少しずつまとめていくwikiも始めました。
玄箱PROとかLinuxとか

編集のお手伝いをしてくださる方、間違いを正していただける方などいらっしゃいましたら、ぜひお力をお貸しください。
よろしくお願いいたします。
別窓 | 日記のようなもの | コメント:0 | トラックバック:1
∧top | under∨

勉強再開・・?

やっと工場出荷に戻しました。
もう何度目かわかりませんが・・・。

標準ファームの構成と開発用Linuxでのビルド練習を復活します。
楽しみでもありますが不安いっぱい。
別窓 | 日記のようなもの | コメント:0 | トラックバック:0
∧top | under∨

2ヶ月目の日記

更新のペースがあきらかに落ちていますが、実は毎日玄箱PROは触っています。
lighttpdのビルドがどうしてもうまくいかず、その検証ばかりを毎日繰り返しています。

とりあえず楽しくて仕方ありません(笑)。
ゆっくりのんびり、だけどしっかりとLinuxを理解しよう、と始めましたが少しゆっくり過ぎる気もします。

ま、いいか。

■Linuxの全体像
ファイルシステム、ブートローダーなどの大まかな理解は進んだような気がします。
CUIによるディレクトリ表現にも慣れてきたので、他の方の説明を読むのにも以前ほど苦痛はなくなってきたかも。
ブラックボックス的なものがないおかげでコンピュータそのものの動作を理解する機会に恵まれる反面、「こんな仕組みでセキュリティは大丈夫?」と不安に思うところもあります。
案外手作り感たっぷりなところにものすごく魅力を感じています(笑)。

■コマンド
wget、tarなどのコマンドがそれぞれのプログラムでありアプリケーションだということに驚きました。
というか、ひょっとしたらコンピュータでは普通のことなのだろうか・・。
LinuxというOS(Montavista、Debianともに)があらかじめ備えている機能の一部だと思い込んでいたのでびっくりしましたし、この発想が様々な実験の妨げになっていた気もします。
しかし「無ければ導入する」というところが非常に楽しく、カスタムメイドでOSを強化している気にもなり、どんどんLinuxの勉強に魅かれていった要因にもなったと思います。
てか理解するスピード遅すぎ(笑)。

■標準Cライブラリ
やっとここに興味が湧いてきました。
基本中の基本を習得するのにえらい時間がかかってしまった・・。
/lib/cppエラーでlimits.hやらassert.hを探して調べてリンク貼りまくっている内に、CD-ROMにあるdevelopment_kitも調べたくなりました。
しかしまだまださっぱりわかりません(笑)。

■メジャーディストリビューション
あらゆるサイトでDebian化、Debian化と記されていましたが、素人の私にはDebian化するメリットがイマイチよくわかりませんでした。
しかし、ひとたびDebian化して、gccやmake、その他もろもろをapt-getする内に「こりゃ便利だな」と、やっとわかりました(笑)。
標準ファームで四苦八苦しながら順番にビルドして、しかも失敗して悩んで実験してを繰り返していた開発環境が数行のコマンドで簡単に導入できてしまい、なおかつそれらをパッケージ管理できるところがものすごいですよね・・。
そしてサイトに答えがたくさんあるところも心強いし。
ホント、やっと理解できました。
環境的に許されるなら是非ともメジャーディストリビューションを入れるべきだということですね。

■玄箱PROの用途
ここのところしきりにこればかり考えています。
Linuxの学習に最適なんですが、もしも勉強に一段落ついたらどうしようかな、と悩んでいます。
あるいは、何か目標に向けて勉強する方が効率もいいのではないか、と。
で、最近「いいな」と思っているのはDNSサーバとメールサーバ。
webサーバっていっても別に発信することもないし、ファイルサーバはちょっとつまらない。
常時起動できるメリットを活かせる使い方、他にいいのありますかねぇ・・。
別窓 | 日記のようなもの | コメント:0 | トラックバック:0
∧top | under∨

lddが使えない(3)

見落としていました。

前回の記事「lddが使えない(2)」で、sushi-kさんのDebian化後の/usr/bin/lddと、標準ファームの/usr/bin/lddには3つの違いがある、と書きましたが、もう1つありました。

しかもそれが原因だった、という一番重要な箇所でした。

しかも・・・1行目(笑)

NG
#! /bin/sh

OK
#! /bin/bash


ここでした。
標準ファームlddの1行目、ここの部分をshからbashに変更すればlddは動きます。

shとbashの違いがよくわかりませんのでちょっと調べてみました。
まず

~ # ls -l /bin | grep sh
lrwxrwxrwx 1 root root 7 Apr 10 22:45 ash -> busybox
-rwxrwxrwx 1 root root 619848 Dec 21 2006 bash
lrwxrwxrwx 1 root root 4 Apr 10 22:45 bash2 -> bash
lrwxrwxrwx 1 root root 7 Apr 10 22:45 fdflush -> busybox
lrwxrwxrwx 1 root root 7 Apr 10 22:45 sh -> busybox


としてみると、
sh -> busybox
とありますので、shとはbusyboxのコマンドとわかりました。

一方、坂本浩則さんの「シェル」というページに以下の説明がありました。

sh - Bourne シェル, POSIX シェル
sh は標準のシェルであり、 POSIX(IEEE Std1003.2) で標準化されていますが、 全てのシステムの sh で完全に POSIX 対応しているわけではありません。 対話機能が貧弱なため、ログインシェルとして使用されることは少なく 主にスクリプトとして使用されています (システムがハングした後の再起動時に fsck が失敗したりすると /bin/sh で作業する必要があったりもしますが)。 FreeBSD などでは ash と呼ばれる機能強化したものが使用されています。 ksh や bash が /bin/sh として使われているシステムもあります。

bash - Bourne Again SHell
Bourne シェルを元に機能拡張したシェル。 コマンドラインでの編集機能が充実しており、 ksh とはよく似ています。 GNU のソフトとして配布されており、 特に Linux で標準シェルとして採用されていることで広まっています。


とのこと。つまりbashとはshの機能拡張版か。
どうやら今後のことを考えて、文中にもあるように「bashを/bin/shとして動かす」という方法がいいような気がしてきました。
ということで

~ # mv /bin/sh /bin/sh.orig
~ # ln -s /bin/bash /bin/sh
~ # ls -l /bin | grep sh
lrwxrwxrwx 1 root root 7 Apr 10 22:45 ash -> busybox
-rwxrwxrwx 1 root root 619848 Dec 21 2006 bash
lrwxrwxrwx 1 root root 4 Apr 10 22:45 bash2 -> bash
lrwxrwxrwx 1 root root 7 Apr 10 22:45 fdflush -> busybox
lrwxrwxrwx 1 root root 9 Aug 8 15:08 sh -> /bin/bash
lrwxrwxrwx 1 root root 7 Apr 10 22:45 sh.orig -> busybox


としました。これならほかに/bin/shを使用するスクリプトがあっても自動でbashを使うことになりますし、いちいちスクリプトそのものの1行目を直してまわる必要もありません。

原因ははっきりしません。
"busyboxのsh"をキーワードにググってみると、6件だけヒットするんですがどこも「busyboxのshは特殊」というニュアンスですね。
私個人はbusyboxさんはtarや今回のshの件で、とにかく困ったちゃんな印象を持ちました(笑)。

とりあえずすっきりしましたのでビルド練習に戻れます。
別窓 | 日記のようなもの | コメント:0 | トラックバック:0
∧top | under∨
BACK | 玄箱Pro、直します。 | NEXT
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。