« CQW-MRB: Edimax 3G-6210nのファームを入れてみる | トップページ | NFS server on Raspberry Pi »

2012年12月23日 (日)

CQW-MRB ファームウェアからrootfsを取り出す

v1.04のファームウェアからrootファイルシステムを取り出すことができました。割と簡単です。

squashfsインストール

RHEL5系のデフォルトsquashfs-tools 3.4.1でOK。

# yum install squashfs-toos

ファームウェアの分解


# dd if="../cqwmrb_v104.bin" of="header.img" bs=1 count=1441792
# dd if="../cqwmrb_v104.bin" of="body.img" skip=1441792 bs=1 count=2334720
# dd if="../cqwmrb_v104.bin" of="footer.img" skip=3776512 bs=1 count=2

body.imgが目的のイメージファイルです。header.imgはCSYSで始まるヘッダ+カーネルイメージ、footer.imgは16ビットのCRCらしい。

rootfsを取り出す

# unsquashfs body.img work

できました。

# cd work/squashfs-root/#
ll
total 52
drwxr-xr-x 2 root root 4096 Jun 15 2010 bin
drwxr-xr-x 2 root root 4096 Jun 15 2010 dev
drwxr-xr-x 2 root root 4096 Jun 15 2010 dev.tmp
drwxr-xr-x 10 root root 4096 Jun 15 2010 etc
drwxr-xr-x 10 root root 4096 Jun 15 2010 etc.tmp
drwxr-xr-x 3 root root 4096 Jun 15 2010 lib
lrwxrwxrwx 1 root root 11 Dec 15 22:14 linuxrc -> bin/busybox
drwxr-xr-x 2 root root 4096 Jun 15 2010 proc
drwxr-xr-x 2 root root 4096 Jun 15 2010 sbin
drwxr-xr-x 2 root root 4096 Jun 15 2010 sys
drwxr-xr-x 2 root root 4096 Jun 15 2010 tmp
drwxr-xr-x 6 root root 4096 Jun 15 2010 usr
drwxr-xr-x 8 root root 4096 Jun 15 2010 var
drwxr-xr-x 3 root root 4096 Jun 15 2010 web

おまけ:squashfsを直接マウント

CentOS5系のカーネル(2.6.18)では古いらしく、うまく行きません。

# mount -t squashfs -o loop body.img /mnt
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so


# tail /var/log/messages
kernel: squashfs: version 3.2-alpha (2006/12/12) Phillip Lougher
kernel: SQUASHFS error: Major/Minor mismatch, trying to mount newer 3.1 filesystem
kernel: SQUASHFS error: Please update your kernel

3.1より新しいファイルシステムなのでマウント出来ないと言っています。
12/16現在の2.6系の最新カーネル:2.6.39.4にアップデートしてみました。


# uname -a
Linux ns1 2.6.39.4 #4 SMP Sun Dec 16 11:26:27 JST 2012 i686 i686 i386 GNU/Linux
# tail /var/log/messages
kernel: squashfs: version 4.0 (2009/01/31) Phillip Lougher
kernel: SQUASHFS error: Major/Minor mismatch, older Squashfs 3.1 filesystems are unsupported

今度は3.1より古いファイルシステムなのでサポートされないと言っています。なんだかさっきのメッセージと矛盾しているような。。。
まあもしかしたら2.6.18から2.6.39までのどこかでちょうど良いのがあるのかもしれません。
でもビルドは時間もかかるし現状で特に問題もないので、いまはこれ以上は深く追求しないことにします。

« CQW-MRB: Edimax 3G-6210nのファームを入れてみる | トップページ | NFS server on Raspberry Pi »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/143173/56375237

この記事へのトラックバック一覧です: CQW-MRB ファームウェアからrootfsを取り出す:

« CQW-MRB: Edimax 3G-6210nのファームを入れてみる | トップページ | NFS server on Raspberry Pi »

最近のトラックバック

2017年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
フォト
無料ブログはココログ