玄箱Pro、直します。

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

スポンサーサイト

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

Montavistaとは

玄箱PROに標準で入っているディストリビューションがMontavista Linux。

ネットで調べているんですが、結構このMontavista、情報が少ないです・・。
組み込み(携帯電話なども)機器に採用されることが多いようなので、サイズが小さく、CPUアーキテクチャーをそれほど選り好みもしないってことが特長なんですかね。

私には、そもそもディストリビューションの定義そのものにも不安があるわけで(笑)。

たとえば「Debianというディストリビューションの特長を言ってみな」と言われたら「いろんなCPUに対応し、dpkgやaptといったコマンドで容易にパッケージ管理が可能」と答えるだろうなぁ。
あとはDebianそのもののインストールが誰でも出来る(CD-ROMやDVD-ROMなどで用意されているため)ってとこ。

そう考えると・・玄箱PROのMontavistaってディストリビューションと言えるんだろうか・・。
自分流LinuxというかLFSっていうか。

ARMに載せるってことでとりあえずMontavistaにしたんだろうか。
よくわかりませんぜ。
スポンサーサイト
別窓 | memo:構造 | コメント:0 | トラックバック:0
∧top | under∨

外部への接続設定

玄箱PROはLAN内での接続を想定しているため、初期状態ではインターネットにつながる設定がされていないそうです。
実際、設定を変更しない限りwgetなどでも

wget: SITE NAME : Unknown host
というようにきちんと動作しません。

ということで、設定ファイルを編集します。

/etc/netinfo
サーバとして玄箱PROを稼働させるなら、my_ipaddressの右辺は固定IPアドレスを入れた方がいいかもしれません。

my_ipaddress=dhcp
my_subnetmask=
my_dgw=ルータのIPアドレス



/etc/resolv.conf

nameserver ルータのIPアドレス



/etc/nsswitch.conf

hosts: files dns


これだけだそうです。
別窓 | memo:構造 | コメント:0 | トラックバック:0
∧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∨

mtdblockとは?

今まで何気なく見過ごしてたんですが、気がついてみたらわからないことが・・。
bootargs_rootでよく出てくる"mtdblock2"とは何でしょうか?
mtd2とはまた違うんでしょうか・・。

さぁ実験ですよ(笑)。
ためしに以下のように環境変数を書き換えてブートしてみました。

bootargs_root=root=/dev/mtd2 rw


するとコンソールには

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/mtd2 rw BOOTVER=1.091
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/mtd2 rw BOOTVER=1.091
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: sda1
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.
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "mtd2" or unknown-block(2,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)


やはりrootfsはマウントできませんね。てかデフォルトでNFS探しに行くんですね・・。関係ないですけど。
つまり、/proc/mtdによるとmtd2という領域にrootfsはあるにも関わらず、このmtd2をbootargs_rootには指定できないんですね。
HDDブートの時は/dev/sda2とか指定するのにどうしてだろ・・。

ちょっと調べてみました。
"mtdblock"でググったらひとまず目についたのがここ。そこには

ROM上のcramfsイメージをブロックデバイスに見せる為に mtdblock が入っているはずで、配布バイナリにもmtdblockの文字があるけど、 これもあるはずの文字列が見付からない。


前後の話題がまったく理解できませんので、この文章だけに注目しました。
mtdblockはROM上のcramfsイメージをブロックデバイスに見せる役割がある、という意味っぽいです。
さて、次はcramfsが何なのかわかりませんのではてなで調べました。

Linuxの圧縮ファイルシステムの一つ。書き込みはできない。組み込みシステムや小型デバイスで使われる。


とのこと。
ファイルシステム(xfsとかext3とか)の仲間ということだろうか。圧縮だから違うのかな。

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

HDDブートの際は、hddrootfs.tar.gzというファイルを使うから、一概に/dev/mtd2と/dev/sda2の何が違うのかという発想は正しいとは言えないかも。

しかし調べれば調べるほど調べものが増えるって・・・どうなのさ?(笑)
別窓 | memo:構造 | コメント:2 | トラックバック:0
∧top | under∨

/dev/mtdとは

玄箱をたちあげ、ログインしたら

~ # cat /proc/mtd


と入力。
procは「プロセス」の略・・か?
すると

dev: size erasesize name
mtd0: 00040000 00001000 "phys_mapped_flash"
mtd1: 00400000 00020000 "uImage"
mtd2: 04000000 00020000 "rootfs"
mtd3: 0bc00000 00020000 "extra"


と出力される。
要するに/dev/mtdを覗いてみた。

mtd0とはNOR型フラッシュメモリ。
サイズの40000は16進数で、10進数に変換すると262144となった。これを1KB=1024Bで換算すれば256KBとなる。つまり、mtd0は256KBのNOR型メモリということ。
ここにはU-bootとU-Boot環境変数が格納されている。

mtd1、mtd2、mtd3はNAND型フラッシュメモリで、一般的に
/dev/mtd
と表記されていればここのことだ。

mtd1のサイズは同様に換算すれば4096KB(4MB)。「uImage」とあるように、ここにはカーネルが格納されている。

mtd2のサイズは同様に65536KB(64MB)。bootargs_rootの設定でおなじみの場所だが、やっぱりここにrootfs(ルートファイルシステム)。

mtd3は192512KB(188MB)で

~ # df -h
Filesystem Size Used Available Use% Mounted on
/dev/mtd2 64.0M 15.6M 48.4M 24% /
/dev/ram1 8.0M 156.0k 7.8M 2% /mnt/ram
/dev/mtd3 188.0M 4.3M 183.7M 2% /mnt/mtd


と入力してみるとわかるように、「Mounted on」で/mnt/mtdにマウントされている。
NASとして「mtd device」と出ているのはここ。つまり、ここがファイル共有ディレクトリとなる。
別窓 | memo:構造 | コメント:0 | トラックバック:0
∧top | under∨
| 玄箱Pro、直します。 |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。