修改Nokia 770的Root Image

假设当前工作目录是$HOME/nokia_770

1. 下载最新的image文件,OS 2006 edition v. 2.2006.39-14

http://www.maemo.org/downloads/nokia_770

2. 下载Linux下的更新工具flasher-2.0

http://maemo.org/downloads/d3.php

3. 下载用于生成jffs2映像的shell脚本

http://stage.maemo.org/svn/integration/trunk/rootimagescripts/tar2jffs2.sh

3. 安装mtd-tools,因为需要它提供的mkfs.jffs2和sumtool这两个工具

$ sudo apt-get install mtd-tools

或者(你需要先安装wajig)

$ wajig install mtd-tools

4. 首先从官方的image文件里解压出rootfs.jffs2这个文件

$ mkdir SE2006_image
$ cd SE2006_image
$ sudo ../flasher-2.0 --unpack \
   -F ../SU-18_2006SE_2.2006.39-14_PR_F5_MR0_ARM.bin

5. 挂载上一步得到的rootfs.jffs2

$ sudo modprobe mtdblock
$ sudo modprobe mtdram total_size=65536 erase_size=256
$ sudo modprobe jffs2
$ sudo modprobe loop
$ sudo losetup /dev/loop0 \
   $HOME/nokia_770/SE2006_image/rootfs.jffs2
$ sudo dd if=$HOME/nokia_770/SE2006_image/rootfs.jffs2 \
   of=/dev/mtdblock0
$ sudo mkdir /mnt/jffs2
$ sudo mount -t jffs2 /dev/mtdblock0 /mnt/jffs2

6. 从/mnt/jffs2获得rootfs的内容,以便修改

$ mkdir myRootFS
$ cd myRootFS
$ sudo tar czf - /mnt/jffs2 | tar xvzf -

7. 卸载/mnt/jffs2

$ sudo umount /mnt/jffs2
$ sudo losetup -d /dev/loop0
$ sudo rmmod jffs2
$ sudo rmmod loop
$ sudo rmmod mtdram
$ sudo rmmod mtdblock

8. 现在可以做一些修改了,比如给/etc/apt/sources.list添加一些更新源,更改/usr/sbin/gainroot和/etc/sudoers以便获得root权限,添加中文字体等等,或者添加一些软件包

9. 重新将修改后的rootfs做成image

$ cd myRootFS/mnt/jffs2
$ sudo tar czvf $HOME/nokia_770/myRootImage.tgz .
$ cd $HOME/nokia_770
$ sudo ./tar2jffs2.sh myRootImage.tgz

10. 将修改过的root image写到770上

$ sudo ./flasher-2.0 --rootfs myRootImage.jffs2 \
   --flash-only rootfs --flash --reboot
flasher v0.8.1 (May 30 2006)

Suitable USB device not found, waiting

用USB线接入你的770,然后开机。一切正常的话,可以看到类似这样的信息:

Found device SU-18, hardware revision 1602

同时,770的屏幕上也可以看到更新的进度条。更新结束后,会自动重新启动。

Ref:

  1. http://maemo.org/maemowiki/HOWTO_FlashLatestNokiaImageWithLinux
  2. http://maemo.org/maemowiki/ModifyingRootImage
  3. http://maemo.org/maemowiki/HowDoiBecomeRoot

Leave a Reply

Your email address will not be published. Required fields are marked *

*

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.
For more help see http://daringfireball.net/projects/markdown/syntax

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>