存档

文章标签 ‘hanlin-v3’

如何修改翰林V3的固件

2008年5月1日 7 条评论

首先说明什么是翰林V3:这是一款使用E-ink的电子书阅读设备。
如果你不知道这个东西是什么,那么本文剩下的部分可以不用看了。

本来这个主题是要写如何修改翰林V3的显示字体,因为宋体显示中文还可以,但是英文简直是惨不忍睹。结果花了不少的功夫把宋体焕成了雅黑之后,今天早上去论坛看看,却发现翰林很适时地推出了一款新的固件,可以自由选择书籍显示的字体。详细的介绍也有人贴了出来。所以就把标题改成了“如何修改翰林V3的固件”。因为我所作的工作也就是修改了一下固件而已。

首先需要声明:修改固件存在风险,请务必先备份阅读器上的重要数据,并且准备好官方固件,准备吃后悔药。同时修改的固件可能会导致阅读器无法开机甚至无法恢复,请自行担负其风险,本人对此不负责。

OK,现在开始正题。

首先你需要一些工具。必需的第一个东西是Linux操作系统,我使用Debian,因此下面的介绍均以Debian为例。
在你的Linux上面请保证有下列的程序或者包:
hg (Mercurial Distributed SCM) 或 git (Fast Version Control System)
gcc
dd
mtd-tools (for mkfs.jffs2)
mkcramfs

在Debian上可以执行下列的一串命令来确保它们都在:
$su
#apt-get install mercurial
#apt-get install git-core
#apt-get install gcc-4.1
#apt-get install mtd-tools
#apt-get install mkcramfs

然后你需要一个项目的源代码,OpenInkpot。目前可以通过hg或者git获得,但是hg不久就会停止。获取方式主页上面有。目前可以用这个命令:
$ hg clone http://hg.openinkpot.org/trunk openinkpot-trunk

获取到代码之后,不需要编译整个项目,否则你需要花掉几十个小时外加十多GB的磁盘。你所需要的只是进入到目录utils/mkv3update当中,执行
$ CC=gcc make
即可获得一个mkv3update的程序。这个程序将用来生成我们修改过的翰林v3固件。

把这个mkv3update程序,连同utils/mkv3update/scripts目录下面的firmeware_unpack.sh文件一同拷贝到某个地方。

下一步的工作就是找到你要修改的原始固件。通常就是V3update.bin文件,把它也拷贝到上面两个程序所在的目录。

将下面的代码写入一个脚本程序,例如patch-v3-update:

–脚本开始–

#! /bin/bash

if [ ! -e V3update.bin ]; then
    echo No Hanlin firmware \(V3update.bin\) present.
fi

if [ -e V3update.bin.patch ]; then
    rm V3update.bin.patch
fi

if [ -d tmp ]; then
    umount tmp/root_fs
    rm -r tmp
fi

mkdir tmp
mkdir tmp/root_fs
mkdir tmp/root_fs_patch
# mkdir tmp/ro_fs

. ./firmware_unpack.sh V3update.bin tmp

mount -o loop tmp/root.fs tmp/root_fs
cp -a tmp/root_fs/* tmp/root_fs_patch

if [ -e ./do-patch-rootfs ]; then
    . ./do-patch-rootfs
else
    echo You do not have do-patch-rootfs script.
fi

mkcramfs tmp/root_fs_patch/ tmp/root.fs.patch

./mkv3update –write-hanlin=V3update.bin.patch tmp/zImage tmp/ro.fs tmp/root.fs.patch tmp/logo tmp/jffs2.fs

–脚本结束–

注意脚本当中标红色的部分。将这部分作为分界线,脚本的前面部分就做了众多的解开V3update.bin,并且将其中内容解到一个tmp/root_fs_patch的目录当中的工作,你可以把这部分单独拷贝出来执行。执行之后,到tmp/root_fs_patch/root/下面看看,这就是翰林V3当中的文件系统结构。在这个目录当中,你可以随意修改其中的内容,当然包括tmp/root_fs_patch/root/fonts/truetype当中的字体文件。

修改完毕之后,即可执行红色部分之后的命令,这些命令把修改过的文件打包生成一个新的文件文件,称为V3update.bin.patch。只要将其拷贝到SD卡的根目录,然后重命名为V3update.bin,即可按照翰林V3正常的固件省级方式进行升级。

经过我的实验,只要将其中的simsun.ttc/simsun.ttf文件一起删除,然后用msyh.ttf拷贝到其中,重命名为simsun.ttf,再建立软链接simsun.ttc指向它,即可实现书架和默认的chm,txt,wol文件都使用雅黑字体了。

如果你想将工作自动化,直接在patch-v3-update脚本的相同目录下面写一个do-patch-rootfs的脚本,就可以自动由该脚本调用了。

自己做了一个翰林V3的一经替换了雅黑字体的固件,基于翰林最近的2008-04-25版本,目前用起来还没有任何的问题。