約 1,492,542 件
https://w.atwiki.jp/aerocats/pages/23.html
ddコマンドとは、「ファイルを形式制御しながらコピーする※1」コマンドである。 cpコマンド?もコピーのためのコマンドだが、ddコマンドはcpコマンド?と違い「デバイス対デバイス」でもコピーが可能となっている。 この「直接デバイスへのコピー機能」を利用し、rmコマンド?では不十分な「HDDなどのデバイスの内容を消去(0をコピー)する」という使い方もある。 標準Linuxでのddコマンド 概要 helpを表示してみる。 ~ # dd --help BusyBox v1.1.1 (2007.04.06-12 02+0000) multi-call binary Usage dd [if=FILE] [of=FILE] [bs=N] [count=N] [skip=N] [seek=N] [conv=notrunc|noerror|sync] Copy a file, converting and formatting according to options if=FILE read from FILE instead of stdin of=FILE write to FILE instead of stdout bs=N read and write N bytes at a time count=N copy only N input blocks skip=N skip N input blocks seek=N skip N output blocks conv=notrunc don t truncate output file conv=noerror continue after read errors conv=sync pad blocks with zeros Numbers may be suffixed by c (x1), w (x2), b (x512), kD (x1000), k (x1024), MD (x1000000), M (x1048576), GD (x1000000000) or G (x1073741824) ~ # BusyBoxのコマンドのようだ。 ※1引用:「玄箱PROで遊ぼう!!(48ページ)」(ラトルズ)
https://w.atwiki.jp/aerocats/pages/24.html
シリアルコンソールを接続しtftpブートなどを試みた際、ブートに失敗し *** Warning no boot file name; using 960BA8C0.img Using egiga0 device TFTP from server (tftpサーバーのIPアドレス); our IP address is (玄箱PROのIPアドレス) Filename 960BA8C0.img . Load address 0x0 Loading * TFTP error File not found. (1) Starting again というエラーを繰り返す場合がある。 どのような状況でこのエラーが出現し、どのように対処すればいいのかを検証する。 960BA8C0.imgとは何か U-Boot.jpにU-Bootコマンドマニュアルがあり、その中で以下のような記述がある。 filename ロードするファイルです。 省略された場合は、環境変数bootfileの値、環境変数bootfileが設定されていない場合、 自分のIPアドレス .imgを使います。 自分のIPアドレス の部分は、IPアドレスを16進で表記して、並べたものです。例えば、192.168.3.202を16進で表記すると、C0.A8.03.CAとなりますので、"CA03A8C0.img"を探しに行きます。 つまり、U-Bootがロードすべきカーネルを自身により発見できなかった場合、「 自分のIPアドレス .img」というファイルをカーネルとして探すようになっている。 この際、「自分のIPアドレス」とは初期状態(正しくは『DHCPにより取得できなかった場合』)の「192.168.11.150」を指す。 上記のように、192.168.11.150を16進数で表記すると「960BA8C0」となる。 なぜ発生するのか ユーザーがカーネルを指定しているにもかかわらずU-Bootがカーネルを見つけることができない、という意味は「指定内容が間違っている」ということだ。 しかしそれ以外に、コンソールを接続する基板(ドーターボード)の不良でこのエラーが発生した事例もある。 U-bootの操作
https://w.atwiki.jp/aerocats/pages/22.html
玄箱PROの本体背面にある赤いボタンがRESETボタンだ。 動作内容 HDDの初期化シリアルコンソールでのログ telnetでのログ パーティションの状態 動作を追跡する エラー 動作内容 標準Linuxでのこのボタンの動作順序は以下となる。 システム起動時に/etc/init.d/rcSが/etc/init.d/Kevent.shを実行する /etc/init.d/Kevent.shが/usr/local/sbin/Keventdを起動する /usr/local/sbin/Keventdはデーモンとして常駐しカーネルイベントを参照、変化があっても無くても常にその結果を/usr/local/bin/KeventHandller.shに渡す その都度呼び出された/usr/local/bin/KeventHandller.shはLANの状態と、miconaplコマンドで電源ボタン・RESETボタンを監視しており、RESETボタンを押されたことを認識すると/usr/local/bin/InitDisk1.shを実行する これらの動作は標準Linuxで完備されており、独自にユーザーランドを構築した場合はこの機能は失われる。 必要であれば導入するしかない。 HDDの初期化 Linuxの形式に初期化されていなければRESETボタンの長押しでHDDの初期化が開始される。 シリアルコンソールでのログ ~ # SCSI device sda 156301488 512-byte hdwr sectors (80026 MB) SCSI device sda drive cache write back sda sda1 SCSI device sda 156301488 512-byte hdwr sectors (80026 MB) SCSI device sda drive cache write back sda sda1 XFS mounting filesystem sda1 ~ # telnetでのログ telnetではコンソール上には何も表示されない。ある程度のタイミングを見計らってmountコマンドででも確認すればいいだろう。 パーティションの状態 fdiskコマンド?で確認してみる。 ~ # 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 9729 78148161 83 Linux Command (m for help) パーティション?は1つだけ切られている。デバイス名は「/dev/sda1」となる。 次にmountコマンドで確認する。 ~ # mount | grep sda1 /dev/sda1 on /mnt/disk1 type xfs (rw) ~ # xfs形式で/mnt/disk1にマウントされている。 動作を追跡する エラー RESETボタンを長押しすることで発生するエラーには以下のパターンがある。 KeventHandller.sh(InitDisk1.sh)が反応する既定のエラーだけを列記するので、独自に記述したシェルスクリプトなどは考慮しない。 (エラー)disk is already mounted! (エラー)disk is already formatted! (エラー)RESETボタンでの初期化中、INFO LEDが点滅して作業が中断する
https://w.atwiki.jp/aerocats/pages/53.html
RESETボタンを押しHDDに開発用Linux(あるいは何らかのディストリビューション導入キット)を導入しようとした際、コンソール上では何も進まなくなりINFO LEDもオレンジの点滅が止まる気配がない、といったエラーが起こることがある。 この時mountコマンドで確認してもHDDはマウントされておらず、ただfdiskコマンド?で確認すると4つのパーティション?に切られていることがわかっている。 そして開発用Linuxのhddrootfs.tar.gzも展開されていないはずだ。 原因HDDの取り付け後 パーティションを切る 各パーティションをフォーマットし、開発用Linux導入完了 fdiskコマンドでパーティション解放 InitDisk1.shのチェックを抜ける パーティションを切る 各パーティションをフォーマットする /etc/melco/infoを用意する 対処 原因 一度、開発用Linuxを導入し何らかの事情で再度開発用Linuxを導入する際によく見受けられるエラーだ。 この時、共通して見られる行為は 標準Linuxからのブートになっている HDDはfdiskコマンド?でパーティション?を解放している dd if=/dev/zero /dev/sda bs=1M count=1と実行している場合もある などだろう。 ここで玄箱PROのHDDがどのように処理されているのか追ってみる。 HDDの取り付け後 まずは未フォーマットのHDDがある。 もちろんこのままではHDDとして機能はしない。(必要に応じて)パーティション?を切り、ファイルシステムを導入(フォーマット)しないと役に立たない。 パーティションを切る /usr/local/bin/InitDisk1.sh内の処理で、 fdisk ${DISK1_DEV} /usr/local/bin/PartitionDefinition を実行しパーティション?を4つに切る。 HDDの先頭512バイトにパーティションテーブルを含むMBRが確保される。 各パーティションをフォーマットし、開発用Linux導入完了 続けて/usr/local/bin/InitDisk1.shが呼び出した/usr/local/bin/kuro_lib内のFormat_EXT3関数、Format_XFS関数、そしてmkswapコマンド?でそれぞれのパーティション?を適宜フォーマットしていく。 この際に重要なのは、各パーティション?の先頭512バイトにブートセクターが置かれることだ。 ext3形式のブートセクターには何も記録されていないが、xfs形式のブートセクターの先頭3バイトには「XFS」という文字列が入る(余談だが、このためxfs形式の上からext3形式をフォーマットしても先頭の「XFS」という文字列が残る)。 この後、各種ファイルの展開などがあり開発用Linuxの導入も終わる。 fdiskコマンドでパーティション解放 HDDのマウントをはずし、fdiskコマンド?でHDD先頭のパーティションテーブルを書き換え(消去し)、各パーティション?の「壁」を取り払う。 しかしこのままであれば、基本領域であったパーティション?の中のデータそのものはフォーマットされない限り消えることはない。 ここで重要なのは「パーティション?は存在しないがsda2とsda4の先頭領域だった場所には「XFS」という文字列はそのまま残っている」という点だ。 そしてこの状態で再度の開発用Linuxの導入をするため、RESETボタンを押すとどうなるか続けてみる。 InitDisk1.shのチェックを抜ける /usr/local/bin/InitDisk1.shのXFSフォーマットチェックの方法は以下だ。 XFS_FORMATTED=`dd if=${DISK1_DEV} bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] ExitWithError formatted XFS_FORMATTED=`dd if=${DISK1_DEV}1 bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] ExitWithError formatted XFS_FORMATTED=`dd if=${DISK1_DEV}4 bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] ExitWithError formatted つまり、/dev/sda、/dev/sda1、/dev/sda4の先頭に「XFS」という文字列がなければ「フォーマットされていない」と見なされる。 この時のHDDの状態は下のようになっている。 /dev/sdaは存在するが先頭に「XFS」という文字列はなく、/dev/sda1、/dev/sda4に関してはそもそもそのようなデバイスが存在しない。 よってこの状態のHDDは/usr/local/bin/InitDisk1.shの初期チェックを通過してしまう。 パーティションを切る その次に待っているのはパーティション?を切る処理だ。 fdisk ${DISK1_DEV} /usr/local/bin/PartitionDefinition この処理後、HDDは以下のようになる。 /usr/local/bin/PartitionDefinitionを変更して実行しない限り、以前とまったく同じパーティション?の切り方になるはずだ。 各パーティションをフォーマットする 次に/usr/local/bin/InitDisk1.shはFormat_EXT3関数とFormat_XFS関数を呼び、それぞれext3形式とxfs形式にフォーマットを始める。 Format_EXT3関数にはチェック項目はないため、/dev/sda1は問題なくext3形式でのフォーマットが完了する。 しかしFormat_XFS関数は再度ここでxfs形式フォーマットのチェックを行う。 KEY=`dd if=$1 bs=1 count=3` if [ "${KEY}" = "XFS" ] ; then チェック対象デバイスの先頭3バイトを読み込み、それが「XFS」であれば別の処理が待っている。 この時、HDDは以下のようになっている。 /dev/sda1、/dev/sda3はフォーマットする、という意味で空白にしている。 /dev/sda2、/dev/sda4は、ちょうど先頭3バイトに「XFS」が入る形になっている。 よって次の処理を実行する。 . /etc/melco/info /etc/melco/infoというファイルを開く、という意味だが、このファイルは標準では存在しない。 製品仕様書にもあるが、 内蔵HDD(/dev/sda)が既にxfs形式でフォーマットされている場合、フォーマットは行われない。但し、/etc/melco/info内、 force_format=yesとすることで、xfsでフォーマットされている/いないにかかわらず、フォーマットを行うようにすることができる。 とのことで、任意のファイルだ。 このファイルがないため、多くは内部的にここで止まっている。 これが処理が止まり、INFO LEDが点滅しつづける原因だ。点滅を止めるmiconaplコマンドに到達していないのだ。 この図のような状態に、実際は/dev/sda1のext3形式でのフォーマットが済んでいるため、/dev/sda3以外のパーティション?はすべて手動でマウントできる。 その後で、INFO LEDを止めるため miconapl -a led_set_code_information clear とすればいい。 /dev/sda3は mkswap /dev/sda3 swapon /dev/sda3 でswapを有効にできる。 ただし、開発環境はHDDに一切展開されていないので注意が必要だ。 /etc/melco/infoを用意する これを回避するため/etc/melco/infoを用意した場合、次の処理を通る。 if [ "${force_format}" = "yes" ] ; then 確認のため10秒間のタイマーが始動 else return 0 fi (略) dd if=/dev/zero of=$1 bs=512 count=1 mkfs.xfs $1 -f /etc/melco/infoに「force_format=yes」と記述していれば、先頭の512バイト(つまりブートセクター)を消去しxfs形式でのフォーマットが始まる。 しかし、/etc/melco/infoが「force_format=no」あるいは記述がない場合、elseを通りreturn 0、つまりFormat_XFS関数を抜けさせられ、あとに続くmkfs.xfsコマンドは実行されない。 つまり、/dev/sda2、/dev/sda4にフォーマットは施されないのだ。 この時のHDDは以下。 パーティション?を切る前のファイルシステムがそのまま使えてしまうため、一見mkfs.xfsが処理されたように思えるためわかりにくいが、/dev/sda2と/dev/sda4は実は前回の開発用Linuxのままなのだ。 そこにデータが残っていれば扱うことができる。 対処 /etc/melco/infoを用意し、force_format=yesと記述しておけばいい。 ~ # mkdir /etc/melco ~ # echo force_format=yes /etc/melco/info これでFormat_XFS関数を通過できる。 現時点でINFO LEDが点滅している場合、fdiskコマンド?で全パーティション?を解放し、上の/etc/melco/infoを用意して一度再起動し、再度RESETボタンを押せば開発用Linuxを導入できるだろう。 また各種Debian化キットなどもシリアルコンソールの世話になることなく導入できるのではないだろうか。
https://w.atwiki.jp/aerocats/pages/36.html
コマンドの使い方を探る/以下の全ファイルから「miconapl」文字列を探す $PLAYDATAを調べる $SSPD_NEWを調べる まとめファンの制御 ブザーの制御 LEDの制御 温度の管理 コマンドの使い方を探る 玄箱PROに組み込まれた各種装置を論理的に操作するのはCPUである88F5182だが、実際に直接制御しているのはμPD78F0500だ。 そして88F5182がμPD78F0500を制御するために使用しているのがこのmiconaplコマンドなのだが、このコマンドはプログラムでありソースは公開されていない。 詳しい使い方を知るためにはmiconaplコマンドを使用しているスクリプトを調べればいい。 /以下の全ファイルから「miconapl」文字列を探す findコマンドでファイル形式のものを検索し、その中身にmiconaplという記述があればそれを出力する。 ~ # find / -type f | xargs grep -i miconapl /etc/init.d/rcS miconapl -b -a boot_end /etc/init.d/bootcomplete.sh /usr/local/sbin/miconapl -b -a boot_end /etc/init.d/FanController.sh /usr/local/sbin/miconapl -a fan_set_speed stop /etc/init.d/shutdown_start.sh miconapl -a bz_on button /etc/init.d/shutdown_start.sh miconapl -a shutdown_wait /etc/init.d/reboot_start.sh miconapl -a bz_on button /etc/init.d/reboot_start.sh miconapl -a reboot grep /sys/class/scsi_host/host1/scan Permission denied grep /sys/class/scsi_host/host0/scan Permission denied grep /sys/bus/pci/drivers/uhci_hcd/new_id Permission denied grep /sys/bus/pci/drivers/ohci_hcd/new_id Permission denied grep /sys/bus/pci/drivers/ehci_hcd/new_id Permission denied grep /sys/bus/pci/drivers/mvSata/new_id Permission denied grep /sys/bus/pci/drivers/sk98lin/new_id Permission denied grep /sys/bus/pci/drivers/serial/new_id Permission denied grep /sys/bus/pci/drivers/tpm_atmel/new_id Permission denied grep /sys/devices/system/leds/leds0/event Permission denied grep /sys/devices/platform/host0/target0 0 0/0 0 0 0/delete Permission denied grep /sys/devices/platform/host0/target0 0 0/0 0 0 0/rescan Permission denied /usr/local/bin/kuro_lib MICONAPL=/usr/local/sbin/miconapl /usr/local/bin/KeventHandller.sh INT_DETAIL=`$MICONAPL -a int_get_switch_status |grep "int=" |sed -e "s/int=//"` /usr/local/bin/PlayBeep.sh miconapl -a bz_melody ${PLAYDATA} /usr/local/bin/InitDisk1.sh miconapl -a led_set_cpu_mcon diag /usr/local/bin/InitDisk1.sh miconapl -a led_set_on_off diag /usr/local/bin/InitDisk1.sh miconapl -a led_set_brink diag /usr/local/bin/InitDisk1.sh miconapl -a bz_on on3off3 /usr/local/bin/InitDisk1.sh miconapl -a bz_on /usr/local/bin/InitDisk1.sh miconapl -a led_set_brink off /usr/local/bin/InitDisk1.sh miconapl -a led_set_on_off off /usr/local/bin/InitDisk1.sh miconapl -a led_set_cpu_mcon off /usr/local/bin/InitDisk1.sh miconapl -a led_set_code_information 28 /usr/local/bin/InitDisk1.sh miconapl -a bz_on button /usr/local/bin/InitDisk1.sh miconapl -a led_set_code_information clear /usr/local/sbin/Fand miconapl -a fan_set_speed full /usr/local/sbin/Fand TEMP=`miconapl -a temp_get|grep temp=| sed -e "s/.*=//"` /usr/local/sbin/Fand SPD=`miconapl -a fan_get_speed|grep fan_rpm=|sed -e "s/.*=//"` /usr/local/sbin/Fand SSPD=`miconapl -a fan_set_speed|grep fan_speed=|sed -e "s/.*=//"` /usr/local/sbin/Fand miconapl -a fan_set_speed ${SSPD_NEW} /usr/local/sbin/miconapl /var/run/miconapl.pid /usr/local/sbin/miconapl /var/log/miconapllog.txt /usr/local/sbin/miconapl Usage miconapl ver.%s(%s) OPTION /usr/local/sbin/miconapl /etc/miconapl.conf /usr/local/sbin/miconapl miconapl already running /usr/local/sbin/miconapl /var/lock/miconapl /usr/local/sbin/miconapl miconapl giveup /usr/local/sbin/miconapl #[miconapl.%s] ~ # ここまでで出てきたのは miconapl -b -a boot_end miconapl -a fan_set_speed stop miconapl -a bz_on button miconapl -a shutdown_wait miconapl -a reboot $MICONAPL -a int_get_switch_status miconapl -a bz_melody ${PLAYDATA} miconapl -a led_set_cpu_mcon diag miconapl -a led_set_on_off diag miconapl -a led_set_brink diag miconapl -a bz_on on3off3 miconapl -a bz_on miconapl -a led_set_brink off miconapl -a led_set_on_off off miconapl -a led_set_cpu_mcon off miconapl -a led_set_code_information 28 miconapl -a led_set_code_information clear miconapl -a temp_get miconapl -a fan_get_speed miconapl -a fan_set_speed ${SSPD_NEW} など。 引数らしき要素を簡単にまとめると miconapl -b -a boot_end miconapl -a fan_set_speed stop|${SSPD_NEW} miconapl -a bz_on button|on3off3 miconapl -a shutdown_wait miconapl -a reboot miconapl -a int_get_switch_status miconapl -a bz_melody ${PLAYDATA} miconapl -a led_set_cpu_mcon diag|off miconapl -a led_set_on_off diag|off miconapl -a led_set_brink diag|off miconapl -a led_set_code_information 28|clear miconapl -a temp_get miconapl -a fan_get_speed となる。実際に試してみるのが一番だが、${PLAYDATA}と${SSPD_NEW}という変数は個別に調べる必要がある。 ${PLAYDATA}を調べる ${PLAYDATA}を調べるため、/usr/local/bin/PlayBeep.shを見てみる。 ~ # cat /usr/local/bin/PlayBeep.sh #!/bin/sh if [ -f "$1" ] ; then TEMPO=`grep "TEMPO=" $1|sed -e "s/TEMPO=//"` MELODY=`grep -v "TEMPO=" $1` PLAYDATA="${TEMPO} ${MELODY}" else MELODY=`echo $*| sed -e "s/$0//"` PLAYDATA=${MELODY} fi miconapl -a bz_melody ${PLAYDATA} ~ # miconapl -a bz_melodyのあとに「TEMPO」と「MELODY」が続くということがわかる。 このスクリプトそのものの詳細は「PlayBeep.sh」で説明する。 同様に「TEMPO」で検索すると/usr/local/music/SW_ON.mscがヒットし、中を見ると ~ # cat /usr/local/music/SW_ON.msc TEMPO=30 b4 b5 b4 b6 とある。 TEMPOは数字で示しMELODYは「b4 b5 b4 b6」というように音程とオクターブの組み合わせの羅列らしい。 まともに「ドレミファソラシド」と演奏させるには ~ # miconapl -b -a bz_melody 120 c3 d3 e3 f3 g3 a3 b4 c4 というようにB(シ)をキーとして組み立てればうまくいく。 ${SSPD_NEW}を調べる 次に/usr/local/sbin/Fandを覗いてみる。 ~ # cat /usr/local/sbin/Fand #!/bin/sh CONF_FILE=/etc/fan.prof miconapl -a fan_set_speed full while do while do sleep 60 TEMP=`miconapl -a temp_get|grep temp=| sed -e "s/.*=//"` SPD=`miconapl -a fan_get_speed|grep fan_rpm=|sed -e "s/.*=//"` SSPD=`miconapl -a fan_set_speed|grep fan_speed=|sed -e "s/.*=//"` if [ -f ${CONF_FILE} ] ; then L_LIMIT=`grep ${SSPD} ${CONF_FILE}| awk {print $2} ` H_LIMIT=`grep ${SSPD} ${CONF_FILE}| awk {print $3} ` if [ "${TEMP}" -lt "${L_LIMIT}" ] ; then DIRECT=DOWN elif [ "${TEMP}" -gt "${H_LIMIT}" ] ; then DIRECT=UP else DIRECT=NO fi if [ "${DIRECT}" = "DOWN" -a "${SSPD}" = "slow" ] ; then SSPD_NEW=stop elif [ "${DIRECT}" = "DOWN" -a "${SSPD}" = "fast" -o "${DIRECT}" = "UP" -a "${SSPD}" = "stop" ] ; then SSPD_NEW=slow elif [ "${DIRECT}" = "DOWN" -a "${SSPD}" = "full" -o "${DIRECT}" = "UP" -a "${SSPD}" = "slow" ] ; then SSPD_NEW=fast elif [ "${DIRECT}" = "UP" -a "${SSPD}" = "fast" ] ; then SSPD_NEW=full else SSPD_NEW=${SSPD} fi miconapl -a fan_set_speed ${SSPD_NEW} fi done done ~ # こちらもスクリプトそのものはFandで説明するが、${SSPD_NEW}に当てはまる値としてはstop、slow、fast、fullの4種類あるようだ。 まとめ ファンの制御 miconapl -a fan_set_speed stop|slow|fast|full ファンの回転スピードを停止|微速|中速|最速と変更する。引数をつけずmiconapl -a fan_set_speedとした場合、ファンのスピード状態を表示する miconapl -a fan_get_speed ファンの回転スピードを表示する ブザーの制御 miconapl -a bz_on button|on3off3 ブザーをピッと鳴らす|ピッピッピッ・・と鳴らす miconapl -a bz_melody テンポ メロディ メロディ ・・ 指定したテンポ(メロディを4/4とするなら250あたりで楽譜上の120程度)とメロディ(音階『b c cm d dm e f fm g gm a am』とオクターブ1~6(オクターブの始まり音はb)の組み合わせ)でブザーを鳴らす LEDの制御 miconapl -a led_set_on_off diag|off エラーLEDの制御開始|停止をする。 miconapl -a led_set_cpu_mcon diag|off エラーLEDを点灯|消灯させる。事前にmiconapl -a led_set_on_off diagが必要 miconapl -a led_set_brink diag|off エラーLEDを点滅|点灯させる。事前にmiconapl -a led_set_cpu_mcon diagが必要 温度の管理 miconapl -a temp_get 88F5182の温度を表示。HDDや電源ユニットの温度ではない
https://w.atwiki.jp/aerocats/pages/66.html
/procとは /procの構成 実際に標準Linuxではどのような構成となっているか。 ファイルもしくはディレクトリ名 設定内容 buddyinfo buffalo/ bus/ cmdline cpu/ cpuinfo devices diskstats driver/ execdomains filesystems fs/ interrupts iomem ioports kallsyms kmsg loadavg locks mdstat meminfo misc modules mounts self/mountsのシンボリックリンク mtd mv_xor net/ partitions resource_dump scsi/ self 1405のシンボリックリンク slabinfo stat swaps sys/ sysvipc/ tty/ uptime version vmstat
https://w.atwiki.jp/aerocats/pages/15.html
起動メッセージ メッセージを読む電源ON 周辺装置の初期化 メインメモリ上にカーネルを読み込む カーネルの起動SATAデバイスドライバの読み込み NORフラッシュ NANDフラッシュ USB ネットワーク rootfsのマウント ルートファイルシステムによる初期化MountSystemFolders関数 checkroot.sh Kevent.sh mount_share.sh sethostname.sh networking.sh httpd.sh telnet.sh inetd.sh smb.sh clientUtil_servd.sh bootcomplete.sh FanController.sh boss.sh 起動メッセージ Orion1 CPU = Low === KURO U-Boot. === ** LOADER ** ** KUROBOX BOARD KURO_BOX LE (CFG_ENV_ADDR=fffff000) U-Boot 1.1.1 (Apr 10 2007 - 18 10 08) Marvell version 1.12.1 - TINY DRAM CS[0] base 0x00000000 size 128MB DRAM Total size 128MB [256kB@fffc0000] Flash 256 kB Addresses 20M - 0M are saved for the U-Boot usage. Mem malloc Initialization (20M - 16M) Done NAND 256 MB Soc 88F5182 A2 CPU ARM926 (Rev 0) running @ 500Mhz Orion 1 streaming disabled SysClock = 250Mhz , TClock = 166Mhz USB 0 host mode USB 1 host mode PCI 0 PCI Express Root Complex Interface PCI 1 Conventional PCI, speed = 33000000 Net egiga0 [PRIME] Using 88E1118 phy Found boot image hit any key to switch tftp boot. Hit any key to stop autoboot 2 1 0 system_bootend Hit any key to stop autoboot 3 2 1 0 Loading from device 0 NULL at 0xfa000000 (offset 0x20000) Image Name Linux-2.6.12.6-arm1 Created 2007-04-10 13 45 13 UTC Image Type ARM Linux Kernel Image (uncompressed) Data Size 1736548 Bytes = 1.7 MB Load Address 00008000 Entry Point 00008000 stop_sound ## Booting image at 00100000 ... Image Name Linux-2.6.12.6-arm1 Created 2007-04-10 13 45 13 UTC Image Type ARM Linux Kernel Image (uncompressed) Data Size 1736548 Bytes = 1.7 MB Load Address 00008000 Entry Point 00008000 Verifying Checksum ... OK OK Starting kernel ... arg console=ttyS0,115200 root=/dev/mtdblock2 rw panic=5 BOOTVER=1.09 CONFIG_KUROBOX_PLATFORM CONFIG_KUROBOX_KUROBOX --- Uncompressing Linux................................................................................................................. done, booting the kernel. Linux version 2.6.12.6-arm1 (root@dev-hara) (gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2)) #27 Tue Apr 10 22 47 16 JST 2007 CPU ARM926EJ-Sid(wb) [41069260] revision 0 (ARMv5TEJ) CPU0 D VIVT write-back cache CPU0 I cache 32768 bytes, associativity 1, 32 byte lines, 1024 sets CPU0 D cache 32768 bytes, associativity 1, 32 byte lines, 1024 sets Machine MV-88fxx81 Using UBoot passing parameters structure Sys Clk = 250000000, Tclk = 166664740 Memory policy ECC disabled, Data cache writeback Built 1 zonelists Kernel command line console=ttyS0,115200 root=/dev/mtdblock2 rw panic=5 BOOTVER=1.09 PID hash table entries 1024 (order 10, 16384 bytes) Console colour dummy device 80x30 Dentry cache hash table entries 32768 (order 5, 131072 bytes) Inode-cache hash table entries 16384 (order 4, 65536 bytes) Memory 128MB 0MB 0MB 0MB = 128MB total Memory 126208KB available (3037K code, 426K data, 112K init) Mount-cache hash table entries 512 CPU Testing write buffer coherency ok NET Registered protocol family 16 serial_initialize_ttyS1 (Debug) ttyS1 is initialized. config_device_cs Error Unknown board CPU Interface ------------- SDRAM_CS0 ....base 00000000, size 128MB SDRAM_CS1 ....disable SDRAM_CS2 ....disable SDRAM_CS3 ....disable PEX0_MEM ....base e0000000, size 128MB PEX0_IO ....base f2000000, size 1MB PCI0_MEM ....base e8000000, size 128MB PCI0_IO ....base f2100000, size 1MB INTER_REGS ....base f1000000, size 1MB DEVICE_CS0 ....base fa000000, size 2MB DEVICE_CS1 ....base f4000000, size 32MB DEVICE_CS2 ....base fa800000, size 1MB DEV_BOOCS ....base ff800000, size 8MB CRYPTO ENG ....no such Flash bankwidth 1, base ff800000, size 400000 KUROBOX FLASH size 4096[KB] Marvell Development Board (LSP Version 1.10.3.patch5_DB_NAS)-- KUROBOX_BOARD_KUROBOX Soc 88F5182 A2 Detected Tclk 166664740 and SysClk 250000000 Marvell USB EHCI Host controller #0 c04e4b00 Marvell USB EHCI Host controller #1 c04e4a40 pexBarOverlapDetect winNum 2 overlap current 0 mvPexInit Warning Bar 2 size is illigal it will be disabled please check Pex and CPU windows configuration PCI bus0 Fast back to back transfers enabled PCI bus1 Fast back to back transfers enabled SCSI subsystem initialized usbcore registered new driver usbfs usbcore registered new driver hub Use the XOR engines (offloading) for enhancing the following functions o RAID 5 Xor calculation o kernel memcpy o kenrel memzero o copy user to/from kernel buffers Number of XOR engines to use 2 cesadev_init(c00122e4) Fast Floating Point Emulator V0.9 (c) Peter Teichmann. inotify device minor=63 JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat, Inc. SGI XFS with no debug enabled Serial 8250/16550 driver $Revision 1.90 $ 4 ports, IRQ sharing disabled ttyS0 at MMIO 0x0 (irq = 3) is a 16550A ttyS1 at MMIO 0x0 (irq = 4) is a 16550A io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered RAMDISK driver initialized 3 RAM disks of 32768K size 1024 blocksize loop loaded (max 8 devices) Marvell Gigabit Ethernet Driver egiga o Ethernet descriptors in DRAM o DRAM SW cache-coherency o Checksum offload enabled o Loading network interface ** egiga_init_module (10) eth0 Intergrated Sata device found scsi0 Marvell SCSI to SATA adapter scsi1 Marvell SCSI to SATA adapter Vendor Seagate Model ST380815AS Rev 3.AA Type Direct-Access ANSI SCSI revision 03 SCSI device sda 156301488 512-byte hdwr sectors (80026 MB) SCSI device sda drive cache write back SCSI device sda 156301488 512-byte hdwr sectors (80026 MB) SCSI device sda drive cache write back sda unknown partition table Attached scsi disk sda at scsi0, channel 0, id 0, lun 0 Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0, type 0 physmap flash device 400000 at ff800000 Found SST 39LF020 phys_mapped_flash Found 1 x8 devices at 0x0 in 8-bit bank number of JEDEC chips 1 cfi_cmdset_0002 Disabling erase-suspend-program due to code brokenness. RedBoot partition parsing not available Debug nand_scan nand_flash_ids[i].pagesize is exist Debug nand_scan mtd- erasesize=0x00020000 Debug nand_scan mtd- oobblock=0x00000800 Debug nand_scan mtd- oobsize=0x00000040 NAND device Manufacturer ID 0x20, Chip ID 0xda (ST Micro NAND 256MiB 3,3V 8-bit) Scanning device for bad blocks Using static partition definition Creating 3 MTD partitions on "nand_mtd" 0x00000000-0x00400000 "uImage" 0x00400000-0x04400000 "rootfs" 0x04400000-0x10000000 "extra" usbmon debugs is not available ehci_platform ehci_platform.4523 EHCI Host Controller ehci_platform ehci_platform.4523 new USB bus registered, assigned bus number 1 ehci_platform ehci_platform.4523 irq 17, io mem 0x00000000 ehci_platform ehci_platform.4523 park 0 ehci_platform ehci_platform.4523 USB 0.0 initialized, EHCI 1.00, driver 10 Dec 2004 hub 1-0 1.0 USB hub found hub 1-0 1.0 1 port detected ehci_platform ehci_platform.16781 EHCI Host Controller ehci_platform ehci_platform.16781 new USB bus registered, assigned bus number 2 ehci_platform ehci_platform.16781 irq 12, io mem 0x00000000 ehci_platform ehci_platform.16781 park 0 ehci_platform ehci_platform.16781 USB 0.0 initialized, EHCI 1.00, driver 10 Dec 2004 hub 2-0 1.0 USB hub found hub 2-0 1.0 1 port detected USB Universal Host Controller Interface driver v2.2 Initializing USB Mass Storage driver... usbcore registered new driver usb-storage USB Mass Storage support registered. usbcore registered new driver usbhid drivers/usb/input/hid-core.c v2.01 USB HID core driver mice PS/2 mouse device common for all mice md raid0 personality registered as nr 2 md raid1 personality registered as nr 3 md raid5 personality registered as nr 4 raid5 measuring checksumming speed arm4regs 304.000 MB/sec 8regs 215.200 MB/sec 32regs 249.200 MB/sec raid5 using function arm4regs (304.000 MB/sec) md md driver 0.90.1 MAX_MD_DEVS=256, MD_SB_DISKS=27 Buffalo Platform Linux Driver(Light) 0.01 installed. MICON ctrl (C) BUFFALO INC. V.1.00 installed. Kernel event proc (C) BUFFALO INC. V.1.00 installed. MICON V2 (C) BUFFALO INC. V.1.00 installed. NET Registered protocol family 2 IP routing cache hash table of 1024 buckets, 8Kbytes TCP established hash table entries 8192 (order 4, 65536 bytes) TCP bind hash table entries 8192 (order 3, 32768 bytes) TCP Hash tables configured (established 8192 bind 8192) NET Registered protocol family 1 NET Registered protocol family 17 md Autodetecting RAID arrays. md autorun ... md ... autorun DONE. Empty flash at 0x00df85f8 ends at 0x00df8800 VFS Mounted root (jffs2 filesystem). Freeing init memory 112K --- rcStart (NANDroot) --- ===== Starting MountSystemFolders ===== mounting procfs ... [Success] mounting sysfs ... [Success] mouting usbfs ... [Success] remouting rootfs ... [Success] mounting all devices ... [Success] ===== Starting checkroot.sh ===== rm /var/lock/perfmon is a directory rm /var/lock/printing is a directory rm /var/lock/subsys is a directory [Success] ===== Starting Kevent.sh ===== [Success] HDD未フォーマットの場合 ===== Starting mount_share.sh ===== Mounting /dev/sda on /mnt/disk1 as a xfs file system. XFS bad magic number XFS SB validate failed mount Mounting /dev/sda on /mnt/disk1 failed Invalid argument Failed. Mounting /dev/sda on /mnt/disk1 as a ext3 file system. mount Mounting /dev/sda on /mnt/disk1 failed Invalid argument Failed. Mounting /dev/mtd3 on /mnt/mtd as a jffs2 file system. Success. [Success] HDDをフォーマットしている場合 ===== Starting mount_share.sh ===== Mounting /dev/sda1 on /mnt/disk1 as a xfs file system. XFS mounting filesystem sda1 Starting XFS recovery on filesystem sda1 (dev sda1) Ending XFS recovery on filesystem sda1 (dev sda1) Success. Mounting /dev/mtd3 on /mnt/mtd as a jffs2 file system. Success. [Success] ===== Starting sethostname.sh ===== hostname is setted to KUROBOX-PRO [Success] LANに未接続の場合 ===== Starting networking.sh ===== create network files.. IP=[dhcp], netmask=[], dgw=[], dns1=[], dns2=[] killall dhcpcd no process killed route SIOC[ADD|DEL]RT No such process Configuration network interface lo eth0 requesting DHCP tout=30[s] ** dhcp fail ** setting default ip route SIOC[ADD|DEL]RT No such process /etc/dhcpc/dhcpcd.exe down dhcpcd.exe interface eth0 has been brought down add default if hostname is setted to KUROBOX-PRO [Success] LANに接続されている場合 ===== Starting networking.sh ===== create network files.. IP=[dhcp], netmask=[], dgw=[], dns1=[], dns2=[] killall dhcpcd no process killed route SIOC[ADD|DEL]RT No such process Configuration network interface lo eth0 requesting DHCP tout=30[s] eth0 link down eth0 link up 5 , full duplex 5 , speed 100 Mbps 5 /etc/dhcpc/dhcpcd.exe /etc/dhcpc/dhcpcd-eth0.info up dhcpcd.exe interface eth0 has been configured with old IP=192.168.1.9 hostname is setted to KUROBOX-PRO [Success] ===== Starting httpd.sh ===== [Success] ===== Starting telnet.sh ===== [Success] ===== Starting inetd.sh ===== [Success] ===== Starting smb.sh ===== $Starting SMB services $Starting NMB services [Success] ===== Starting clientUtil_servd.sh ===== Starting clientUtil_server starting on eth0 [Success] ===== Starting bootcomplete.sh ===== [Success] ===== Starting FanController.sh ===== [Success] ===== Starting boss.sh ===== (サングラス男AA) [Success] KUROUTOSHIKOU KUROBOX Series KUROBOX/PRO(KOSHO) KUROBOX-PRO login メッセージを読む 電源ON 玄箱PROの電源を入れると、まずCPUのプログラムカウンタにU-Bootのメモリアドレスが設定されU-Bootが実行される。 Orion1 CPU = Low === KURO U-Boot. === ** LOADER ** ** KUROBOX BOARD KURO_BOX LE (CFG_ENV_ADDR=fffff000) U-Boot 1.1.1 (Apr 10 2007 - 18 10 08) Marvell version 1.12.1 - TINY 周辺装置の初期化 U-Bootによる低レベルでの初期化を行い、カーネルイメージを見つける。 PCで言うBIOSのような働きをする。 DRAM CS[0] base 0x00000000 size 128MB DRAM Total size 128MB [256kB@fffc0000] Flash 256 kB Addresses 20M - 0M are saved for the U-Boot usage. Mem malloc Initialization (20M - 16M) Done NAND 256 MB Soc 88F5182 A2 CPU ARM926 (Rev 0) running @ 500Mhz Orion 1 streaming disabled SysClock = 250Mhz , TClock = 166Mhz USB 0 host mode USB 1 host mode PCI 0 PCI Express Root Complex Interface PCI 1 Conventional PCI, speed = 33000000 Net egiga0 [PRIME] Using 88E1118 phy Found boot image hit any key to switch tftp boot. Hit any key to stop autoboot 2 1 0 system_bootend Hit any key to stop autoboot 3 2 1 0 メインメモリ上にカーネルを読み込む 見つけたカーネルイメージをメインメモリへ読み込む。 PCで言うブートローダーの働きをする。 NANDフラッシュの0x20000番地(mtd1の128k以降)からロードする。 Loading from device 0 NULL at 0xfa000000 (offset 0x20000) Image Name Linux-2.6.12.6-arm1 Created 2007-04-10 13 45 13 UTC Image Type ARM Linux Kernel Image (uncompressed) Data Size 1736548 Bytes = 1.7 MB Load Address 00008000 Entry Point 00008000 stop_sound カーネルイメージをメインメモリの0x00100000番地へロード。 ## Booting image at 00100000 ... Image Name Linux-2.6.12.6-arm1 Created 2007-04-10 13 45 13 UTC Image Type ARM Linux Kernel Image (uncompressed) Data Size 1736548 Bytes = 1.7 MB Load Address 00008000 Entry Point 00008000 Verifying Checksum ... OK OK カーネルの起動 読み込んだカーネルを実行する。 この時点でU-Bootからカーネルに制御が移される。 Starting kernel ... arg console=ttyS0,115200 root=/dev/mtdblock2 rw panic=5 BOOTVER=1.09 CONFIG_KUROBOX_PLATFORM CONFIG_KUROBOX_KUROBOX --- カーネルが圧縮された自身の展開。 Uncompressing Linux................................................................................................................. done, booting the kernel. カーネルの起動。 Linux version 2.6.12.6-arm1 (root@dev-hara) (gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2)) #27 Tue Apr 10 22 47 16 JST 2007 CPU ARM926EJ-Sid(wb) [41069260] revision 0 (ARMv5TEJ) CPU0 D VIVT write-back cache CPU0 I cache 32768 bytes, associativity 1, 32 byte lines, 1024 sets CPU0 D cache 32768 bytes, associativity 1, 32 byte lines, 1024 sets Machine MV-88fxx81 Using UBoot passing parameters structure Sys Clk = 250000000, Tclk = 166664740 Memory policy ECC disabled, Data cache writeback Built 1 zonelists Kernel command line console=ttyS0,115200 root=/dev/mtdblock2 rw panic=5 BOOTVER=1.09 PID hash table entries 1024 (order 10, 16384 bytes) Console colour dummy device 80x30 Dentry cache hash table entries 32768 (order 5, 131072 bytes) Inode-cache hash table entries 16384 (order 4, 65536 bytes) Memory 128MB 0MB 0MB 0MB = 128MB total Memory 126208KB available (3037K code, 426K data, 112K init) Mount-cache hash table entries 512 CPU Testing write buffer coherency ok NET Registered protocol family 16 serial_initialize_ttyS1 (Debug) ttyS1 is initialized. config_device_cs Error Unknown board CPU Interface ------------- SDRAM_CS0 ....base 00000000, size 128MB SDRAM_CS1 ....disable SDRAM_CS2 ....disable SDRAM_CS3 ....disable PEX0_MEM ....base e0000000, size 128MB PEX0_IO ....base f2000000, size 1MB PCI0_MEM ....base e8000000, size 128MB PCI0_IO ....base f2100000, size 1MB INTER_REGS ....base f1000000, size 1MB DEVICE_CS0 ....base fa000000, size 2MB DEVICE_CS1 ....base f4000000, size 32MB DEVICE_CS2 ....base fa800000, size 1MB DEV_BOOCS ....base ff800000, size 8MB CRYPTO ENG ....no such Flash bankwidth 1, base ff800000, size 400000 KUROBOX FLASH size 4096[KB] Marvell Development Board (LSP Version 1.10.3.patch5_DB_NAS)-- KUROBOX_BOARD_KUROBOX Soc 88F5182 A2 Detected Tclk 166664740 and SysClk 250000000 Marvell USB EHCI Host controller #0 c04e4b00 Marvell USB EHCI Host controller #1 c04e4a40 pexBarOverlapDetect winNum 2 overlap current 0 mvPexInit Warning Bar 2 size is illigal it will be disabled please check Pex and CPU windows configuration PCI bus0 Fast back to back transfers enabled PCI bus1 Fast back to back transfers enabled SCSI subsystem initialized usbcore registered new driver usbfs usbcore registered new driver hub Use the XOR engines (offloading) for enhancing the following functions o RAID 5 Xor calculation o kernel memcpy o kenrel memzero o copy user to/from kernel buffers Number of XOR engines to use 2 cesadev_init(c00122e4) Fast Floating Point Emulator V0.9 (c) Peter Teichmann. inotify device minor=63 JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat, Inc. SGI XFS with no debug enabled Serial 8250/16550 driver $Revision 1.90 $ 4 ports, IRQ sharing disabled ttyS0 at MMIO 0x0 (irq = 3) is a 16550A ttyS1 at MMIO 0x0 (irq = 4) is a 16550A io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered RAMDISK driver initialized 3 RAM disks of 32768K size 1024 blocksize loop loaded (max 8 devices) Marvell Gigabit Ethernet Driver egiga o Ethernet descriptors in DRAM o DRAM SW cache-coherency o Checksum offload enabled o Loading network interface ** egiga_init_module (10) eth0 SATAデバイスドライバの読み込み Intergrated Sata device found scsi0 Marvell SCSI to SATA adapter scsi1 Marvell SCSI to SATA adapter Vendor Seagate Model ST380815AS Rev 3.AA Type Direct-Access ANSI SCSI revision 03 SCSI device sda 156301488 512-byte hdwr sectors (80026 MB) SCSI device sda drive cache write back SCSI device sda 156301488 512-byte hdwr sectors (80026 MB) SCSI device sda drive cache write back sda unknown partition table Attached scsi disk sda at scsi0, channel 0, id 0, lun 0 Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0, type 0 NORフラッシュ physmap flash device 400000 at ff800000 Found SST 39LF020 phys_mapped_flash Found 1 x8 devices at 0x0 in 8-bit bank number of JEDEC chips 1 cfi_cmdset_0002 Disabling erase-suspend-program due to code brokenness. RedBoot partition parsing not available NANDフラッシュ Debug nand_scan nand_flash_ids[i].pagesize is exist Debug nand_scan mtd- erasesize=0x00020000 erasesizeとはNANDフラッシュの内容を消去する単位の大きさであり、それが0x00020000、つまり128KBだとなっている。 消去はブロック単位で行われるため、1ブロック128KBだということになる。 Debug nand_scan mtd- oobblock=0x00000800 OOBとはOut Of Bandの略で、ECCと呼ばれるエラー訂正コードを格納する領域を意味する。 16進数で00000800は10進数で2048を意味し、これはOOBのブロック数を指している。 Debug nand_scan mtd- oobsize=0x00000040 OOBのサイズが00000040だと意味する。 10進数で64となり、OOBのサイズは64バイトだとわかる。 NAND device Manufacturer ID 0x20, Chip ID 0xda (ST Micro NAND 256MiB 3,3V 8-bit) Scanning device for bad blocks Using static partition definition Creating 3 MTD partitions on "nand_mtd" 0x00000000-0x00400000 "uImage" 0x00400000-0x04400000 "rootfs" 0x04400000-0x10000000 "extra" USB usbmon debugs is not available ehci_platform ehci_platform.4523 EHCI Host Controller ehci_platform ehci_platform.4523 new USB bus registered, assigned bus number 1 ehci_platform ehci_platform.4523 irq 17, io mem 0x00000000 ehci_platform ehci_platform.4523 park 0 ehci_platform ehci_platform.4523 USB 0.0 initialized, EHCI 1.00, driver 10 Dec 2004 hub 1-0 1.0 USB hub found hub 1-0 1.0 1 port detected ehci_platform ehci_platform.16781 EHCI Host Controller ehci_platform ehci_platform.16781 new USB bus registered, assigned bus number 2 ehci_platform ehci_platform.16781 irq 12, io mem 0x00000000 ehci_platform ehci_platform.16781 park 0 ehci_platform ehci_platform.16781 USB 0.0 initialized, EHCI 1.00, driver 10 Dec 2004 hub 2-0 1.0 USB hub found hub 2-0 1.0 1 port detected USB Universal Host Controller Interface driver v2.2 Initializing USB Mass Storage driver... usbcore registered new driver usb-storage USB Mass Storage support registered. usbcore registered new driver usbhid drivers/usb/input/hid-core.c v2.01 USB HID core driver mice PS/2 mouse device common for all mice md raid0 personality registered as nr 2 md raid1 personality registered as nr 3 md raid5 personality registered as nr 4 raid5 measuring checksumming speed arm4regs 304.000 MB/sec 8regs 215.200 MB/sec 32regs 249.200 MB/sec raid5 using function arm4regs (304.000 MB/sec) md md driver 0.90.1 MAX_MD_DEVS=256, MD_SB_DISKS=27 Buffalo Platform Linux Driver(Light) 0.01 installed. MICON ctrl (C) BUFFALO INC. V.1.00 installed. Kernel event proc (C) BUFFALO INC. V.1.00 installed. MICON V2 (C) BUFFALO INC. V.1.00 installed. ネットワーク NET Registered protocol family 2 IP routing cache hash table of 1024 buckets, 8Kbytes TCP established hash table entries 8192 (order 4, 65536 bytes) TCP bind hash table entries 8192 (order 3, 32768 bytes) TCP Hash tables configured (established 8192 bind 8192) NET Registered protocol family 1 NET Registered protocol family 17 md Autodetecting RAID arrays. md autorun ... md ... autorun DONE. Empty flash at 0x00df85f8 ends at 0x00df8800 rootfsのマウント ルートファイルシステムのマウント。 bootargs_rootで設定されたデバイスがマウントされている。 VFS Mounted root (jffs2 filesystem). initで使用したメモリの解放。 Freeing init memory 112K ルートファイルシステムによる初期化 /etc/init.d/rcSの実行。 ここからは実際にマウントされたルートファイルシステムによるシステムの初期化。 --- rcStart (NANDroot) --- MountSystemFolders関数 /etc/init.d/rcS内のMountSystemFolders関数の実行。 ===== Starting MountSystemFolders ===== mounting procfs ... [Success] mounting sysfs ... [Success] mouting usbfs ... [Success] remouting rootfs ... [Success] mounting all devices ... [Success] checkroot.sh /etc/init.d/checkroot.shの実行。 ===== Starting checkroot.sh ===== rm /var/lock/perfmon is a directory rm /var/lock/printing is a directory rm /var/lock/subsys is a directory [Success] Kevent.sh /etc/init.d/Kevent.shの実行。 ===== Starting Kevent.sh ===== [Success] mount_share.sh /etc/init.d/mount_share.shの実行。 HDDが未フォーマットの場合 ===== Starting mount_share.sh ===== Mounting /dev/sda on /mnt/disk1 as a xfs file system. XFS bad magic number XFS SB validate failed mount Mounting /dev/sda on /mnt/disk1 failed Invalid argument Failed. Mounting /dev/sda on /mnt/disk1 as a ext3 file system. mount Mounting /dev/sda on /mnt/disk1 failed Invalid argument Failed. Mounting /dev/mtd3 on /mnt/mtd as a jffs2 file system. Success. [Success] HDDがフォーマット済みの場合 ===== Starting mount_share.sh ===== Mounting /dev/sda1 on /mnt/disk1 as a xfs file system. XFS mounting filesystem sda1 Starting XFS recovery on filesystem sda1 (dev sda1) Ending XFS recovery on filesystem sda1 (dev sda1) Success. Mounting /dev/mtd3 on /mnt/mtd as a jffs2 file system. Success. [Success] sethostname.sh /etc/init.d/sethostname.sh?の実行。 ===== Starting sethostname.sh ===== hostname is setted to KUROBOX-PRO [Success] networking.sh /etc/init.d/networking.shの実行。 LANに未接続の場合 ===== Starting networking.sh ===== create network files.. IP=[dhcp], netmask=[], dgw=[], dns1=[], dns2=[] killall dhcpcd no process killed route SIOC[ADD|DEL]RT No such process Configuration network interface lo eth0 requesting DHCP tout=30[s] ** dhcp fail ** setting default ip route SIOC[ADD|DEL]RT No such process /etc/dhcpc/dhcpcd.exe down dhcpcd.exe interface eth0 has been brought down add default if hostname is setted to KUROBOX-PRO [Success] LANに接続済みの場合 ===== Starting networking.sh ===== create network files.. IP=[dhcp], netmask=[], dgw=[], dns1=[], dns2=[] killall dhcpcd no process killed route SIOC[ADD|DEL]RT No such process Configuration network interface lo eth0 requesting DHCP tout=30[s] eth0 link down eth0 link up 5 , full duplex 5 , speed 100 Mbps 5 /etc/dhcpc/dhcpcd.exe /etc/dhcpc/dhcpcd-eth0.info up dhcpcd.exe interface eth0 has been configured with old IP=192.168.1.9 hostname is setted to KUROBOX-PRO [Success] httpd.sh /etc/init.d/httpd.sh?の実行。 ===== Starting httpd.sh ===== [Success] telnet.sh /etc/init.d/telnet.sh?の実行。 ===== Starting telnet.sh ===== [Success] inetd.sh /etc/init.d/inetd.sh?の実行。 ===== Starting inetd.sh ===== [Success] smb.sh /etc/init.d/smb.sh?の実行。 ===== Starting smb.sh ===== $Starting SMB services $Starting NMB services [Success] clientUtil_servd.sh /etc/init.d/clientUtil_servd.sh?の実行。 ===== Starting clientUtil_servd.sh ===== Starting clientUtil_server starting on eth0 [Success] bootcomplete.sh /etc/init.d/bootcomplete.sh?の実行。 ===== Starting bootcomplete.sh ===== [Success] FanController.sh /etc/init.d/FanController.sh?の実行。 ===== Starting FanController.sh ===== [Success] boss.sh /etc/init.d/boss.sh?の実行。 ===== Starting boss.sh ===== (サングラス男AA) [Success] KUROUTOSHIKOU KUROBOX Series KUROBOX/PRO(KOSHO) KUROBOX-PRO login
https://w.atwiki.jp/aerocats/pages/51.html
標準Linuxの/usr/local/bin/内にある。 スクリプト #!/bin/sh # KURO-BOX/PRO shell script common routines. # Ver 1.002007/01/17 new by Y.H. # DEFAULT_IP=192.168.11.150 ENETNAME=eth0 #setup global environment values. MTD_SHARE=`grep extra /proc/mtd| sed -e "s/ .*//"` MTD_UIMAGE=`grep uImage /proc/mtd|sed -e "s/ .*//"` MTD_ROOTFS=`grep rootfs /proc/mtd|sed -e "s/ .*//"` MTD_UBOOT=mtd0 MTD_SHARE_DEV=/dev/${MTD_SHARE} MTD_UIMAGE_DEV=/dev/${MTD_UIMAGE} MTD_ROOTFS_DEV=/dev/${MTD_ROOTFS} MTD_RBOOT_DEV=/dev/${MTD_UBOOT} MTD_UIMAGE_CHARDEV_MINORNUM=`echo ${MTD_UIMAGE_DEV}|sed -e "s/.*mtd//"|sed -e "s/.*mtdblock//"` MTD_UIMAGE_CHARDEV=/dev/mtdchar${MTD_UIMAGE_CHARDEV_MINORNUM} MTD_ROOTFS_CHARDEV_MINORNUM=`echo ${MTD_ROOTFS_DEV}|sed -e "s/.*mtd//"|sed -e "s/.*mtdblock//"` MTD_ROOTFS_CHARDEV=/dev/mtdchar${MTD_ROOTFS_CHARDEV_MINORNUM} MTD_SHARE_CHARDEV_MINORNUM=`echo ${MTD_SHARE_DEV}|sed -e "s/.*mtd//"|sed -e "s/.*mtdblock//"` MTD_SHARE_CHARDEV=/dev/mtdchar${MTD_SHARE_CHARDEV_MINORNUM} DISK1_DEV=/dev/sda DISK2_DEV=/dev/sdb DISK1_MPT=/mnt/disk1 DISK2_MPT=/mnt/disk2 MTD_MPT=/mnt/mtd RAMDISK_MPT=/mnt/ram RAMDISK_DEV=/dev/ram1 RAMDISK_SIZE=8 KERNEL_EVENT_TAIL=/proc/buffalo/kernevnt FIRST_NAND=/etc/first_boot MICONAPL=/usr/local/sbin/miconapl HEXDUMP=/usr/bin/hexdump CHANGE_TO_DEVHDD_FILE=${MTD_MPT}/ChangeMeDevHDD SCSI_MAJOR=8 SCSI1_MINOR_BASE=0 SCSI2_MINOR_BASE=16 # $1 device of check target # retval # 1 device $1 is mounted. # 0 device $1 is not mounted. IsMounted(){ MOUNTED=`grep $1 /proc/mounts` if [ "${MOUNTED}" != "" ] ; then return 1 else return 0 fi return 0 } # $1 return value of evaluate target. DispSF(){ if [ "$1" -eq 0 ] ; then echo [Success] else echo [Failed ] fi } # $1 Executing shellscript. (mainly used for rcS) # $2 Option(default is start) exec_sh(){ if [ ! x"$2" = x"" ] ; then EXEC_OPT=$2 else EXEC_OPT=start fi echo "" echo "===== Starting $1 =====" /etc/init.d/$1 ${EXEC_OPT} DispSF $? echo "" } # $1 Check target mount point. CheckMPT(){ if [ "$1" != "" ] ; then echo "Checking MPT($1) is exist or not." if [ ! -e "$1" ] ; then echo "$1 not exist. So create a directory, now." mkdir $1 -p chmod 777 $1 else echo "$1 is exist. So no need to create a directory." fi else echo "Checking MPT target is something wrong." fi } create_sysfolder(){ rm -rf ${RAMDISK_MPT} mkdir -m 777 -p ${RAMDISK_MPT} mount -t tmpfs -o mode=1777,size=${RAMDISK_SIZE}m ${RAMDISK_DEV} ${RAMDISK_MPT} if [ $? -ne 0 ] ; then echo "*** ERROR! ${RAMDISK_MPT} mount fail!!" reboot -f fi mkdir -m 777 -p /mnt/ram/tmp /mnt/ram/var/tmp /mnt/ram/var/run rm -rf /tmp /var ln -sf /mnt/ram/tmp /tmp ln -sf /mnt/ram/var /var mkdir -m 777 -p /var/lock mkdir -m 755 -p /var/empty/sshd mkdir -m 755 -p /var/lib/dhcp mkdir -m 755 -p /var/lib/nfs chown rpcuser rpcuser /var/lib/nfs mkdir -m 755 -p /var/lock/subsys mkdir -m 755 -p /var/lock/perfmon mkdir -m 755 -p /var/lock/printing mkdir -m 755 -p /var/log/hotplug mkdir -m 755 -p /var/log/samba mkdir -m 755 -p /var/log/linkstation mkdir -m 755 -p /var/run/usb mkdir -m 755 -p /var/spool ln -s /etc/cron /var/spool/cron MODEL=`grep PRODUCTNAME /proc/buffalo/firmware|sed -e "s/PRODUCTNAME=//"` echo "KUROUTOSHIKOU KUROBOX Series ${MODEL}" /etc/issue ln -sf issue /etc/issue.net rm -f /var/lock/* } # $1 target device to format Format_EXT3(){ echo "***** Starting to format $1 *****" mkfs.ext3 $1 if [ $? -eq 0 ] ; then echo "Format is succeeded without error." else return 1 exit 1 fi return 0 } # $1 target device to format. Format_XFS(){ KEY=`dd if=$1 bs=1 count=3` if [ "${KEY}" = "XFS" ] ; then . /etc/melco/info if [ "${force_format}" = "yes" ] ; then echo "Disk (or partition) is looks like already formatted." echo "If you stop format, Press Ctrl+C in 10 seconds!!!" COUNTER=10 echo -n "waiting " while [ ${COUNTER} -gt 0 ] do echo -n "." sleep 1 COUNTER=$((${COUNTER} - 1)) done echo "" echo "OK, go on formatting." else return 0 fi fi echo "***** Cleaning Disk partition information *****" dd if=/dev/zero of=$1 bs=512 count=1 echo "***** Starting to format $1 *****" mkfs.xfs $1 -f if [ $? -eq 0 ] ; then echo "Format is succeeded without error." else return 1 exit 1 fi return 0 } # $1 target device to check partition # ret 0 this is no partition disk. # ret 1 this is nand share type partition # ret 2 this is developkit type partition (maybe) IsHavePartition(){ if [ -x ${HEXDUMP} ] ; then DISK_1_PART_TAIL=`hexdump -s 446 -n 64 -e 8/1 "%02x " 2/4 "%10d " "\n" $1 | sed -n "1p"|awk {print $10} ` DISK_2_PART_TAIL=`hexdump -s 446 -n 64 -e 8/1 "%02x " 2/4 "%10d " "\n" $1 | sed -n "2p"|awk {print $10} ` DISK_3_PART_TAIL=`hexdump -s 446 -n 64 -e 8/1 "%02x " 2/4 "%10d " "\n" $1 | sed -n "3p"|awk {print $10} ` DISK_4_PART_TAIL=`hexdump -s 446 -n 64 -e 8/1 "%02x " 2/4 "%10d " "\n" $1 | sed -n "4p"|awk {print $10} ` if [ "${DISK_1_PART_TAIL}" -ne 0 -a "${DISK_2_PART_TAIL}" -eq 0 -a "${DISK_3_PART_TAIL}" -eq 0 -a "${DISK_4_PART_TAIL}" -eq 0 ] ; then return 1 elif [ "${DISK_1_PART_TAIL}" -ne 0 -a "${DISK_2_PART_TAIL}" -ne 0 -a "${DISK_3_PART_TAIL}" -ne 0 -a "${DISK_4_PART_TAIL}" -ne 0 ] ; then return 2 else return 0 fi else return 0 fi return 0 } # $1 target device to mount. # $2 target mountpoint of $1. # $3 File system of target device(default is xfs). # $4 Mounted device permission(default is 777). MountShare(){ # ret 0 this is no partition disk. # ret 1 this is nand share type partition # ret 2 this is developkit type partition (maybe) if [ "$1" = "/dev/sda" -o "$1" = "/dev/sdb" ] ; then IsHavePartition $1 RET=$? [ "${RET}" -eq 1 ] TARGET_DEV=${1}1 [ "${RET}" -eq 2 ] TARGET_DEV=${1}4 [ "${RET}" -eq 0 ] TARGET_DEV=${1} else TARGET_DEV=$1 fi IsMounted ${TARGET_DEV} if [ $? = 1 ] ; then echo "${TARGET_DEV} is already mounted." return 1 fi if [ "$3" = "" ] ; then FS=xfs else FS=$3 fi if [ "$4" = "" ] ; then PERMISSION=777 else PERMISSION=$4 fi echo "Mounting ${TARGET_DEV} on $2 as a ${FS} file system." mount -t ${FS} ${TARGET_DEV} $2 case $? in 0) chmod ${PERMISSION} $2 echo "Success." ;; *) echo "Failed." return 1 ;; esac echo "" return 0 } MiconIntEnable(){ cat /proc/buffalo/miconint_en } CreateDevFile(){ DISK_DEV=$1 case ${DISK_DEV} in ${DISK1_DEV}) SCSI_MINOR_BASE=${SCSI1_MINOR_BASE} [ ! -e ${DISK_DEV} ] mknod ${DISK_DEV} b ${SCSI_MAJOR} ${SCSI_MINOR_BASE} ;; ${DISK2_DEV}) SCSI_MINOR_BASE=${SCSI2_MINOR_BASE} [ ! -e ${DISK_DEV} ] mknod ${DISK_DEV} b ${SCSI_MAJOR} ${SCSI_MINOR_BASE} ;; *) return -1 esac SCSI_MINOR=$((${SCSI_MINOR_BASE} + 1)) DEV_NO=1 while [ ${DEV_NO} -lt 8 ] do [ ! -e ${DISK_DEV}${DEV_NO} ] mknod ${DISK_DEV}${DEV_NO} b ${SCSI_MAJOR} ${SCSI_MINOR} DEV_NO=$((${DEV_NO} + 1)) SCSI_MINOR=$((${SCSI_MINOR} + 1)) done } lock_file(){ case $1 in check) [ -f "${LOCK}" ] echo "${THIS_SCRIPT} already runnign" return 1 ;; create) echo "${THIS_SCRIPT}" $2 ${LOCK} ;; delete) rm -f ${LOCK} ;; delete_log) rm -f ${LOCK}.log ;; *) ;; esac }
https://w.atwiki.jp/aerocats/pages/21.html
日経Linux2007年5月号(56ページ)より以下抜粋。 Linuxを形作るファイルは、役割ごとに/binや/homeなどあらかじめ定められたディレクトリに並んでいます。設定に関するファイルは/etc(スラエトセと読む)にあります。Linux自体の起動設定、ネットワーク設定、表示設定、個別のアプリケーション設定など、多岐にわたりますが、すべてがテキスト・ファイル形式で収められています。 テキストファイルで各種の設定 /etcには「設定」と名がつく作業に必要なファイルが集められている。 Linuxのありとあらゆるシステム設定に欠かせないファイルがあるため、新しいプログラムをインストールしても「/etcに設定ファイルがあるだろう」と容易に想像がつく。 FHSとの比較 標準Linux・開発用Linuxの/etc(スラエトセ)ディレクトリをFHSが定めた内容と比較してみる。 FHS 標準Linux 開発用Linux 設定内容 /etc/opt × /optに関する設定。 (/etc/X11) × X Window Systemに関する設定。 (/etc/sgml) × SGMLに関する設定。 (/etc/xml) × XMLに関する設定。 csh.login × Cシェルがログイン時に参照。 exports × NFSクライアントにアクセスを許す共有ディレクトリの一覧。 fstab ○ ファイルシステムのマウントポイント。 ftpusers × FTPアクセスを禁止するユーザー一覧。 gateways × 動的経路を設定するroutedコマンド?が参照。 gettydefs × loginコマンド?を呼び出すgettyコマンド?が通信速度と端末の設定時に参照。 group ○ ユーザーグループの定義。 host.conf × 名前解決(DNS)の際の優先順位を定義。 hosts ○ 名前解決のためのホスト名、IPアドレス設定。 hosts.allow × xinetd?経由で起動するサーバーのアクセス可能ホストを定義。 hosts.deny × xinetd?経由で起動するサーバーのアクセス拒否ホストを定義。 hosts.equiv × 外部からのリモートアクセスを許可するか否かを設定。 hosts.lpd × 外部からのリモートアクセスによる印刷を許可するか否かを設定。 inetd.conf × ポートを監視するinetd?に対象ポートと、アクセスを発見した場合に起動するプログラムを指示。 inittab ○ 起動時のランレベル?などを定義。 issue ○ ローカルログイン時の表示メッセージ。 id.so.conf × 共有ライブラリ?の検索パスを定義。 motd × コンソールログイン時の表示メッセージ。 mtab ○ マウント中のファイルシステム一覧。 mtools.conf × MS-DOSのディスクにアクセスするmtoolsコマンド群の設定。 networks × ブート時に用いるホスト名、IPアドレスの対応情報。 passwd ○ ユーザー名、ユーザーIDなどを記録。 printcap × プリンタの設定。 profile ○ ログイン時にbash?が参照・実行する設定。 protocols × プロトコルのデータベースであり、IPヘッダーに含まれるプロトコル種別を示す数値と特定のプロトコルを結び付ける。 resolv.conf ○ ホスト名とIPアドレスにおける名前解決の設定。 rpc × RPC(Remote Procedure Call)に用いるサーバー名とプロトコル番号の一覧。 securetty × rootがログインできるターミナルを指定。 services ○ ネットワークサービス名と利用ポート、プロトコルの対応を定義。 shells × ログインシェルとして利用可能なシェルを記述。 syslog.conf ○ ログデーモンであるsyslog?の設定。 ※引用「日経Linux2007年5月号(59ページ)」(日経BP社)
https://w.atwiki.jp/aerocats/pages/56.html
/proc /proc/mounts rootfs / rootfs rw 0 0 /dev/root / jffs2 rw,noatime 0 0 proc /proc proc rw,nodiratime 0 0 sysfs /sys sysfs rw 0 0 usbfs /proc/bus/usb usbfs rw 0 0 devpts /dev/pts devpts rw 0 0 /dev/ram1 /mnt/ram tmpfs rw 0 0 /dev/sda1 /mnt/disk1 xfs rw 0 0 /dev/mtd3 /mnt/mtd jffs2 rw,noatime 0 0 /proc/cpuinfo Processor ARM926EJ-Sid(wb) rev 0 (v5l) BogoMIPS 266.24 Features swp half thumb fastmult CPU implementer 0x41 CPU architecture 5TEJ CPU variant 0x0 CPU part 0x926 CPU revision 0 Cache type write-back Cache clean cp15 c7 ops Cache lockdown format C Cache format Harvard I size 32768 I assoc 1 I line length 32 I sets 1024 D size 32768 D assoc 1 D line length 32 D sets 1024 Hardware MV-88fxx81 Revision 0000 Serial 0000000000000000 /proc/devices Character devices 1 mem 2 pty 3 ttyp 4 /dev/vc/0 4 tty 4 ttyS 5 /dev/tty 5 /dev/console 5 /dev/ptmx 7 vcs 10 misc 13 input 21 sg 90 mtd 128 ptm 136 pts 180 usb Block devices 1 ramdisk 7 loop 8 sd 9 md 31 mtdblock 65 sd 66 sd 67 sd 68 sd 69 sd 70 sd 71 sd 128 sd 129 sd 130 sd 131 sd 132 sd 133 sd 134 sd 135 sd 254 mdp /proc/mtd dev size erasesize name mtd0 00040000 00001000 "phys_mapped_flash" mtd1 00400000 00020000 "uImage" mtd2 04000000 00020000 "rootfs" mtd3 0bc00000 00020000 "extra" /proc/interrupts CPU0 0 103019 Mv Timer Tick 3 438 serial 12 0 ehci_hcd usb2 17 0 ehci_hcd usb1 21 426 eth0 29 110 mvSata 30 20704 xor_chan0 31 0 xor_chan1 34 0 MiCon Err 0 /proc/ioports 00000000-000fffff PCI IO Primary 00100000-001fffff PCI IO Primary /proc/meminfo MemTotal 126328 kB MemFree 107748 kB Buffers 0 kB Cached 9640 kB SwapCached 0 kB Active 6332 kB Inactive 6100 kB HighTotal 0 kB HighFree 0 kB LowTotal 126328 kB LowFree 107748 kB SwapTotal 0 kB SwapFree 0 kB Dirty 0 kB Writeback 0 kB Mapped 5644 kB Slab 4616 kB CommitLimit 63164 kB Committed_AS 25104 kB PageTables 244 kB VmallocTotal 385024 kB VmallocUsed 4428 kB VmallocChunk 380412 kB