「未解決の問題」の編集履歴(バックアップ)一覧はこちら
「未解決の問題」(2015/03/13 (金) 10:54:16) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
**NAND領域をマウントできない
NANDブート時にルートに割当たっているところからゴッソリとコピーしてこようとしたときの問題。
> mount /dev/mtd2 /mnt/mtd
> mount: /dev/mtd2 is not a block device
ん?etchの時は問題なくできたはずなのに...
> KUROBOX-PRO:~# cat /proc/mtd
> dev: size erasesize name
> mtd0: 00040000 00001000 "physmap-flash.0"
> mtd1: 00400000 00020000 "uImage"
> mtd2: 04000000 00020000 "rootfs"
> mtd3: 0bc00000 00020000 "extra"
> KUROBOX-PRO:~# ls -l /dev/ | grep mtd*
> crw------- 1 root root 90, 0 Mar 11 14:54 mtd0
> crw------- 1 root root 90, 1 Mar 11 14:54 mtd0ro
> crw------- 1 root root 90, 2 Mar 11 14:54 mtd1
> crw------- 1 root root 90, 3 Mar 11 14:54 mtd1ro
> crw------- 1 root root 90, 4 Mar 11 14:54 mtd2
> crw------- 1 root root 90, 5 Mar 11 14:54 mtd2ro
> crw------- 1 root root 90, 6 Mar 11 14:54 mtd3
> crw------- 1 root root 90, 7 Mar 11 14:54 mtd3ro
> brw-rw---T 1 root disk 31, 0 Mar 11 14:54 mtdblock0
> brw-rw---T 1 root disk 31, 1 Mar 11 14:54 mtdblock1
> brw-rw---T 1 root disk 31, 2 Mar 11 14:54 mtdblock2
> brw-rw---T 1 root disk 31, 3 Mar 11 14:54 mtdblock3
mtdblock2のほうか
> mount /dev/mtdblock2 /mnt/mtd
> mount: you must specify the filesystem type
ファイルシステムを指定しないとだめになった?
調べてみるとjffs2を指定すべきらしい。
> mount -t jffs2 /dev/mtdblock2 /mnt/mtd
指定してみるが…ハング。応答が返ってきません。
syslogには以下のログが大量に出ている
> Mar 16 17:02:08 localhost kernel: [259459.519943] JFFS2 version 2.2. (NAND) (SUMMARY) c 2001-2006 Red Hat, Inc.
> Mar 16 17:05:34 localhost kernel: [259665.270902] uncorrectable error :
> :
> :
> :
> :
> Mar 16 17:05:34 localhost kernel: [259665.298841] mtd->read(0x800 bytes from 0x1f800) returned ECC error
> Mar 16 17:05:34 localhost kernel: [259665.399566] jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000024: 0x2b2b instead
> :
> :
> Mar 16 17:05:36 localhost kernel: [259665.408602] Further such events for this erase block will not be printed
> :
> Mar 16 20:07:58 localhost kernel: [270609.004576] mtd->read(0x1ac bytes from 0x36dfe54) returned ECC error
> Mar 16 20:07:58 localhost kernel: [270609.011194] Empty flash at 0x036dfe50 ends at 0x036dfe54
> Mar 16 20:07:58 localhost kernel: [270609.022359] Empty flash at 0x036dff48 ends at 0x036dff4c
> Mar 16 20:07:58 localhost kernel: [270609.084315] Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes
> Mar 16 20:07:58 localhost kernel: [270609.092236] empty_blocks 0, bad_blocks 0, c->nr_blocks 512
>
3時間かかってmountされずに終了。
kernelの問題?よくわからないので後ほど調査することにする。
**回避策
NANDから取れないならNAND更新用のinitrd.buffaloからいただくことにする。
玄箱PRO用Firmware V1.02 kbpfw102.zip を使う。
> KUROBOX-PRO:~# apt-get install unzip
> KUROBOX-PRO:~# unzip kbpfw102.zip
> KUROBOX-PRO:~# dd if=initrd.buffalo of=initrd.gz bs=64 skip=1
> 301354+1 records in
> 301354+1 records out
> 19286692 bytes (19 MB) copied, 20.6181 s, 935 kB/s
> KUROBOX-PRO:~# gunzip initrd.gz
> KUROBOX-PRO:~# mkdir /tmp/root
> KUROBOX-PRO:~# mount -o loop initrd /tmp/root
> KUROBOX-PRO:~# ls -l /tmp/root/boot
> total 18021
> -rw-r--r-- 1 root root 1714088 Mar 1 2007 initrd.buffalo
> -rw-r--r-- 1 root root 14680064 Apr 10 2007 nandrootfs.jffs2
> -rwxrwxrwx 1 root root 245776 Apr 10 2007 u-boot.bin
> -rwxrwxrwx 1 root root 1736612 Apr 10 2007 uImage.buffalo
このnandrootfs.jffs2の中に入っている一式が欲しかったもの
このイメージから中身を取り出すためには以下の手順でできるはずだが、mtdramがない
> mknod /tmp/mtdblock0 b 31 0
> modprobe mtdblock
> modprobe mtdram total_size=4000000 erase_size=20000
> modprobe jffs2
> dd if=/tmp/root/boot/nandrootfs.jffs2 of=/tmp/mtdblock0
> mkdir /mnt/mtd
> mount -t jffs2 /tmp/mtdblock0 /mnt/mtd
回避策でも行き詰まった。
**NAND領域をマウントできない
NANDブート時にルートに割当たっているところからゴッソリとコピーしてこようとしたときの問題。
> mount /dev/mtd2 /mnt/mtd
> mount: /dev/mtd2 is not a block device
ん?etchの時は問題なくできたはずなのに...
> KUROBOX-PRO:~# cat /proc/mtd
> dev: size erasesize name
> mtd0: 00040000 00001000 "physmap-flash.0"
> mtd1: 00400000 00020000 "uImage"
> mtd2: 04000000 00020000 "rootfs"
> mtd3: 0bc00000 00020000 "extra"
> KUROBOX-PRO:~# ls -l /dev/ | grep mtd*
> crw------- 1 root root 90, 0 Mar 11 14:54 mtd0
> crw------- 1 root root 90, 1 Mar 11 14:54 mtd0ro
> crw------- 1 root root 90, 2 Mar 11 14:54 mtd1
> crw------- 1 root root 90, 3 Mar 11 14:54 mtd1ro
> crw------- 1 root root 90, 4 Mar 11 14:54 mtd2
> crw------- 1 root root 90, 5 Mar 11 14:54 mtd2ro
> crw------- 1 root root 90, 6 Mar 11 14:54 mtd3
> crw------- 1 root root 90, 7 Mar 11 14:54 mtd3ro
> brw-rw---T 1 root disk 31, 0 Mar 11 14:54 mtdblock0
> brw-rw---T 1 root disk 31, 1 Mar 11 14:54 mtdblock1
> brw-rw---T 1 root disk 31, 2 Mar 11 14:54 mtdblock2
> brw-rw---T 1 root disk 31, 3 Mar 11 14:54 mtdblock3
mtdblock2のほうか
> mount /dev/mtdblock2 /mnt/mtd
> mount: you must specify the filesystem type
ファイルシステムを指定しないとだめになった?
調べてみるとjffs2を指定すべきらしい。
> mount -t jffs2 /dev/mtdblock2 /mnt/mtd
指定してみるが…ハング。応答が返ってきません。
syslogには以下のログが大量に出ている
> Mar 16 17:02:08 localhost kernel: [259459.519943] JFFS2 version 2.2. (NAND) (SUMMARY) c 2001-2006 Red Hat, Inc.
> Mar 16 17:05:34 localhost kernel: [259665.270902] uncorrectable error :
> :
> :
> :
> :
> Mar 16 17:05:34 localhost kernel: [259665.298841] mtd->read(0x800 bytes from 0x1f800) returned ECC error
> Mar 16 17:05:34 localhost kernel: [259665.399566] jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000024: 0x2b2b instead
> :
> :
> Mar 16 17:05:36 localhost kernel: [259665.408602] Further such events for this erase block will not be printed
> :
> Mar 16 20:07:58 localhost kernel: [270609.004576] mtd->read(0x1ac bytes from 0x36dfe54) returned ECC error
> Mar 16 20:07:58 localhost kernel: [270609.011194] Empty flash at 0x036dfe50 ends at 0x036dfe54
> Mar 16 20:07:58 localhost kernel: [270609.022359] Empty flash at 0x036dff48 ends at 0x036dff4c
> Mar 16 20:07:58 localhost kernel: [270609.084315] Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes
> Mar 16 20:07:58 localhost kernel: [270609.092236] empty_blocks 0, bad_blocks 0, c->nr_blocks 512
>
3時間かかってmountされずに終了。
kernelの問題?よくわからないので後ほど調査することにする。
**回避策
NANDから取れないならNAND更新用のinitrd.buffaloからいただくことにする。
玄箱PRO用Firmware V1.02 kbpfw102.zip を使う。
> KUROBOX-PRO:~# apt-get install unzip
> KUROBOX-PRO:~# unzip kbpfw102.zip
> KUROBOX-PRO:~# dd if=initrd.buffalo of=initrd.gz bs=64 skip=1
> 301354+1 records in
> 301354+1 records out
> 19286692 bytes (19 MB) copied, 20.6181 s, 935 kB/s
> KUROBOX-PRO:~# gunzip initrd.gz
> KUROBOX-PRO:~# mkdir /tmp/root
> KUROBOX-PRO:~# mount -o loop initrd /tmp/root
> KUROBOX-PRO:~# ls -l /tmp/root/boot
> total 18021
> -rw-r--r-- 1 root root 1714088 Mar 1 2007 initrd.buffalo
> -rw-r--r-- 1 root root 14680064 Apr 10 2007 nandrootfs.jffs2
> -rwxrwxrwx 1 root root 245776 Apr 10 2007 u-boot.bin
> -rwxrwxrwx 1 root root 1736612 Apr 10 2007 uImage.buffalo
このnandrootfs.jffs2の中に入っている一式が欲しかったもの
このイメージから中身を取り出すためには以下の手順でできるはずだが、mtdramがない
> mknod /tmp/mtdblock0 b 31 5
> modprobe mtdblock
> modprobe mtdram total_size=4000000 erase_size=20000
> modprobe jffs2
> dd if=/tmp/root/boot/nandrootfs.jffs2 of=/tmp/mtdblock5
> mkdir /mnt/mtd
> mount -t jffs2 /tmp/mtdblock0 /mnt/mtd
回避策でも行き詰まった。