假设当前工作目录是$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:
- http://maemo.org/maemowiki/HOWTO_FlashLatestNokiaImageWithLinux
- http://maemo.org/maemowiki/ModifyingRootImage
- http://maemo.org/maemowiki/HowDoiBecomeRoot