玄箱Pro、直します。

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

スポンサーサイト

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

mtdblockとは?(2)

いまだによくわかりません。
しかし先日の記事で

まぁいずれにしても、rootfsはcramfsというファイルシステムかもしれない、ということと、mtdblock2とはパーティションではなくrootfsそのものだということになるのかな。


と書きましたが、おかしいですよね・・。
起動時のコンソールにも

VFS: Mounted root (jffs2 filesystem).


と出力されていますから、やっぱりルート・ファイル・システムはjffs2でマウントされています。
聞きかじった情報から憶測で仮定していました。まだまだ甘い・・。

さらに調べていく内に、IBM社のdeveloperWorks:Linuxというサイトにたどり着き、そこから「組み込みデバイスでのLinuxシステム開発」というPDF書類を見つけた。以下に部分引用してみる。

MTDドライバーのセットアップ
あるフラッシュ・デバイスにアクセスし、その上にファイルシステムを設けたい場合、MTDサブシステムをカーネルに含める形でコンパイルする必要があります。それには、適当なMTDハードウェアとユーザー・モジュールを選択します。MTDサブシステムは、現在でも、さまざまな種類のフラッシュ・デバイスをサポートしていますが、いろいろなフラッシュ・チップに対応したドライバーが次々と出されてきています。

フラッシュへのアクセスを可能にするユーザー・モジュールとして人気のあるものに、MTD_CHARとMTD_BLOCKの2つがあります。

MTD_CHARには、フラッシュのキャラクタを直接する機能があるのに対して、MTD_BLOCKは、フラッシュを通常の(IDEディスクのような)ブロック・デバイスとして取り扱い、その上にファイルシステムを作成できるようにしています。MTD_CHARに関係付けられるデバイスは/dev/mtd0、mtd1、mtd2(など)で、MTD_BLOCKに関係付けられるデバイスは/dev/mtdblock0、mtdblock1(など)です。MTD_BLOCKデバイスは、ブロック・デバイスに似せたエミュレーションを行いますので、多くの場合、このエミュレーションの上にFTLやJFFS2のようなファイルシステムを作成すればよいでしょう。


との一文がありました。
やっと出ました・・mtdblock・・。
この辺りの理解を深めようとさらに調べていくと、このMTD_CHAR、MTD_BLOCKというのはそれぞれ「キャラクタ・デバイス」「ブロック・デバイス」という考え方のようです。
ITproの「デバイス・ファイルとは」に説明がありました。

cramfsの影も形もでてきません・・。やはり私の早とちりだったようです。

とりあえず気を取り直してlsコマンドで/devを覗きます。

~ # ls -al /dev/
drwxr-xr-x 3 root root 0 Jun 17 2004 .
drwxr-xr-x 18 root root 0 Jul 13 14:57 ..
crw-r--r-- 1 root root 5, 1 Jul 13 14:59 console
crw-r--r-- 1 root root 205, 16 Oct 10 2001 cuaam0
crw-r--r-- 1 root root 205, 17 Oct 10 2001 cuaam1
lrwxrwxrwx 1 root root 3 Apr 10 22:45 disk1 -> sda
lrwxrwxrwx 1 root root 4 Apr 10 22:45 disk1_1 -> sda1
lrwxrwxrwx 1 root root 4 Apr 10 22:45 disk1_2 -> sda2
lrwxrwxrwx 1 root root 4 Apr 10 22:45 disk1_3 -> sda3
lrwxrwxrwx 1 root root 4 Apr 10 22:45 disk1_4 -> sda4
lrwxrwxrwx 1 root root 4 Apr 10 22:45 disk1_5 -> sda5
lrwxrwxrwx 1 root root 4 Apr 10 22:45 disk1_6 -> sda6
lrwxrwxrwx 1 root root 4 Apr 10 22:45 disk1_7 -> sda7
lrwxrwxrwx 1 root root 4 Apr 10 22:45 disk1_8 -> sda8
lrwxrwxrwx 1 root root 4 Apr 10 22:45 disk1_9 -> sda9
lrwxrwxrwx 1 root root 13 Apr 10 22:45 fd -> /proc/self/fd
prw-r--r-- 1 root root 0 Jun 24 2005 initctl
brw-r--r-- 1 root root 1, 250 Oct 10 2001 initrd
brw-r--r-- 1 root root 9, 0 Feb 1 08:42 md0
brw-r--r-- 1 root root 9, 1 Feb 1 08:42 md1
brw-r--r-- 1 root root 9, 2 Feb 1 08:42 md2
brw-r--r-- 1 root root 9, 3 Feb 1 08:42 md3
brw-r--r-- 1 root root 9, 4 Feb 1 08:43 md4
brw-r--r-- 1 root root 9, 5 Feb 1 08:43 md5
brw-r--r-- 1 root root 9, 6 Feb 1 08:43 md6
brw-r--r-- 1 root root 9, 7 Feb 1 08:43 md7
crw-r--r-- 1 root root 1, 1 Nov 17 2001 mem
brw-r--r-- 1 root root 28, 0 Jan 4 2003 mmc
brw-r--r-- 1 root root 31, 0 Jan 11 2007 mtd0
brw-r--r-- 1 root root 31, 1 Jan 11 2007 mtd1
brw-r--r-- 1 root root 31, 2 Jan 11 2007 mtd2
brw-r--r-- 1 root root 31, 3 Jan 11 2007 mtd3
brw-r--r-- 1 root root 31, 4 Jan 11 2007 mtd4
brw-r--r-- 1 root root 31, 5 Jan 11 2007 mtd5
brw-r--r-- 1 root root 31, 6 Jan 11 2007 mtd6
brw-r--r-- 1 root root 31, 7 Jan 11 2007 mtd7
brw-r--r-- 1 root root 31, 0 Jan 11 2007 mtdblock0
brw-r--r-- 1 root root 31, 1 Jan 11 2007 mtdblock1
brw-r--r-- 1 root root 31, 2 Jan 11 2007 mtdblock2
brw-r--r-- 1 root root 31, 3 Jan 11 2007 mtdblock3
brw-r--r-- 1 root root 31, 4 Jan 11 2007 mtdblock4
brw-r--r-- 1 root root 31, 5 Jan 11 2007 mtdblock5
brw-r--r-- 1 root root 31, 6 Jan 11 2007 mtdblock6
brw-r--r-- 1 root root 31, 7 Jan 11 2007 mtdblock7
crw-r--r-- 1 root root 90, 0 Jan 11 2007 mtdchar0
crw-r--r-- 1 root root 90, 2 Jan 11 2007 mtdchar1
crw-r--r-- 1 root root 90, 4 Jan 11 2007 mtdchar2
crw-r--r-- 1 root root 90, 6 Jan 11 2007 mtdchar3
crw-r--r-- 1 root root 90, 8 Jan 11 2007 mtdchar4
crw-r--r-- 1 root root 90, 10 Jan 11 2007 mtdchar5
crw-r--r-- 1 root root 90, 12 Jan 11 2007 mtdchar6
crw-r--r-- 1 root root 90, 14 Jan 11 2007 mtdchar7
crw-r--r-- 1 root root 1, 3 Oct 10 2001 null
crw-r--r-- 1 root root 5, 2 May 27 2004 ptmx
drwxr-xr-x 2 root root 0 Jan 1 1970 pts
crw-r--r-- 1 root root 2, 0 Oct 10 2001 ptyp0
crw-r--r-- 1 root root 2, 1 Oct 10 2001 ptyp1
crw-r--r-- 1 root root 2, 2 Oct 10 2001 ptyp2
crw-r--r-- 1 root root 2, 3 Oct 10 2001 ptyp3
brw-r--r-- 1 root root 1, 0 Oct 24 1983 ram0
brw-r--r-- 1 root root 0, 1 Oct 24 1983 ram1
brw-r--r-- 1 root root 0, 2 Oct 24 1983 ram2
lrwxrwxrwx 1 root root 4 Apr 10 22:45 ramdisk -> ram0
crwxrwxrwx 1 root root 1, 8 Apr 3 2006 random
crwxrwxrwx 1 root root 10, 135 Apr 16 2006 rtc
brwxrwxrwx 1 root root 8, 0 Apr 5 2006 sda
brwxrwxrwx 1 root root 8, 1 Apr 5 2006 sda1
brwxrwxrwx 1 root root 8, 2 Apr 5 2006 sda2
brwxrwxrwx 1 root root 8, 3 Apr 5 2006 sda3
brwxrwxrwx 1 root root 8, 4 Apr 5 2006 sda4
brwxrwxrwx 1 root root 8, 5 Apr 5 2006 sda5
brwxrwxrwx 1 root root 8, 6 Apr 5 2006 sda6
brwxrwxrwx 1 root root 8, 7 Apr 5 2006 sda7
brwxrwxrwx 1 root root 8, 8 Apr 5 2006 sda8
brwxrwxrwx 1 root root 8, 9 Apr 5 2006 sda9
brw-r--r-- 1 root root 8, 16 Jan 11 2007 sdb
brw-r--r-- 1 root root 8, 17 Jan 11 2007 sdb1
brw-r--r-- 1 root root 8, 18 Jan 11 2007 sdb2
brw-r--r-- 1 root root 8, 19 Jan 11 2007 sdb3
brw-r--r-- 1 root root 8, 20 Jan 11 2007 sdb4
brw-r--r-- 1 root root 8, 21 Jan 11 2007 sdb5
brw-r--r-- 1 root root 8, 22 Jan 11 2007 sdb6
brw-r--r-- 1 root root 8, 23 Jan 11 2007 sdb7
brw-r--r-- 1 root root 8, 32 Jan 11 2007 sdc
brw-r--r-- 1 root root 8, 33 Jan 11 2007 sdc1
brw-r--r-- 1 root root 8, 34 Jan 11 2007 sdc2
brw-r--r-- 1 root root 8, 35 Jan 11 2007 sdc3
brw-r--r-- 1 root root 8, 36 Jan 11 2007 sdc4
brw-r--r-- 1 root root 8, 37 Jan 11 2007 sdc5
brw-r--r-- 1 root root 8, 38 Jan 11 2007 sdc6
brw-r--r-- 1 root root 8, 39 Jan 11 2007 sdc7
brw-r--r-- 1 root root 8, 48 Jan 11 2007 sdd
brw-r--r-- 1 root root 8, 49 Jan 11 2007 sdd1
brw-r--r-- 1 root root 8, 50 Jan 11 2007 sdd2
brw-r--r-- 1 root root 8, 51 Jan 11 2007 sdd3
brw-r--r-- 1 root root 8, 52 Jan 11 2007 sdd4
brw-r--r-- 1 root root 8, 53 Jan 11 2007 sdd5
brw-r--r-- 1 root root 8, 54 Jan 11 2007 sdd6
brw-r--r-- 1 root root 8, 55 Jan 11 2007 sdd7
lrwxrwxrwx 1 root root 4 Apr 10 22:45 stderr -> fd/2
lrwxrwxrwx 1 root root 4 Apr 10 22:45 stdin -> fd/0
lrwxrwxrwx 1 root root 4 Apr 10 22:45 stdout -> fd/1
crw-r--r-- 1 root root 5, 0 Oct 10 2001 tty
crw-r--r-- 1 root root 4, 0 Oct 10 2001 tty0
crw------- 1 root root 4, 1 Oct 10 2001 tty1
crw------- 1 root root 4, 2 Oct 10 2001 tty2
crw-r--r-- 1 root root 4, 3 Oct 10 2001 tty3
crw------- 1 root root 4, 64 Jul 13 15:11 ttyS0
crw-r--r-- 1 root root 4, 65 Jul 13 15:11 ttyS1
crw-rw-rw- 1 root tty 3, 0 Oct 10 2001 ttyp0
crw-rw-rw- 1 root tty 3, 1 Oct 10 2001 ttyp1
crw-rw-rw- 1 root tty 3, 2 Oct 10 2001 ttyp2
crw-rw-rw- 1 root tty 3, 3 Oct 10 2001 ttyp3
crw-r--r-- 1 root root 1, 5 Jun 17 2004 zero


「c」とつくものがキャラクタ・デバイス、「b」とつくものがブロック・デバイスという説明が先ほどのITproでありました。

が!!

また混乱させられる事態が・・。先ほどのlsコマンドのmtdの箇所だけ抜き取って見ると

brw-r--r-- 1 root root 31, 0 Jan 11 2007 mtd0
brw-r--r-- 1 root root 31, 1 Jan 11 2007 mtd1
brw-r--r-- 1 root root 31, 2 Jan 11 2007 mtd2
brw-r--r-- 1 root root 31, 3 Jan 11 2007 mtd3
brw-r--r-- 1 root root 31, 4 Jan 11 2007 mtd4
brw-r--r-- 1 root root 31, 5 Jan 11 2007 mtd5
brw-r--r-- 1 root root 31, 6 Jan 11 2007 mtd6
brw-r--r-- 1 root root 31, 7 Jan 11 2007 mtd7


mtdが全部「b」・・。ブロック・デバイスかよ・・。
キャラクタ・デバイスとしては「mtdchar」というものが用意されているみたいです。
ということは、/mnt/mtdにマウントされた/dev/mtd3もブロック・デバイスであり、mountコマンドで

~ # mount
/dev/root on / type jffs2 (rw,noatime)
proc on /proc type proc (rw,nodiratime)
sysfs on /sys type sysfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
devpts on /dev/pts type devpts (rw)
/dev/ram1 on /mnt/ram type tmpfs (rw)
/dev/sda1 on /mnt/disk1 type xfs (rw)
/dev/mtd3 on /mnt/mtd type jffs2 (rw,noatime)


と入力して出される結果の「jffs2」というのはこのブロック・デバイス(厳密にはエミュレーションですが・・)上に作成されたファイルシステムだ、というわけですね。

それならランダムアクセスな共有スペース(mtd)の説明がつき、私的にはだいぶん楽になります(笑)。
このlsを確かめるまでは「なぜキャラクタ・デバイスにランダムアクセスするんだろ・・」と疑問に思っていましたから。

でもまだまだわからないことがありますので、もう少し勉強します。
続きは(3)で(笑)。
スポンサーサイト
別窓 | memo:構造 | コメント:1 | トラックバック:0
∧top | under∨
<<sushi-kさんのDebian化を試す | 玄箱Pro、直します。 | ハックキットで夢のDebian GNU/Linuxサーバー 玄箱PROをハックしよう!>>

この記事のコメント

psRAEC http://www.90SGZoHdWfN8O69Bluk0u450TSMCkjf6.com
2012-08-12 Sun 18:12 | URL | shulc #AHsJ.tNA[ 内容変更]
∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

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

トラックバックURL

FC2ブログユーザー専用トラックバックURLはこちら
∧top | under∨
| 玄箱Pro、直します。 |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。