俗话说:曲高和寡。上次说CE玩家之游戏篇,想来很多人感兴趣,不过......这次嘛,要说说大多数人不会去试试的东东----在CE机器上装Linux。可能会惨到没有读者吧。
Linux是什么呢?我也不多说了,知道的我也不必解释,不知道的一时也解释不清楚。那个时候在iPaq上装linux是不可逆的过程,装了linux就不能再装回WinCE了,有谁肯去试试?现在就有点不一样了,Pocket Linux1.0正式版出现了,不仅在iPaq上可以安装Linux,还可以在Casio机器上安装Linux呢。最重要的是,你如果不喜欢,还可以重装回来!
说到这里,有些人可能不相信,iPaq用的是Flash Rom,可以改写操作系统的内容,iPaq可以升级WinCE的版本,所以用Linux也是可能的,但是我们都知道Casio用的是Mask Rom,不可能重写,怎么可能装Linux呢?
硬件底层的东西一时我也不太了解,从Pocket Linux的文档来看,它的过程是这样的:先从WinCE启动机器->然后自动执行cyace.exe来切换控制权->Linux接过系统控制权->从CF卡load Linux的核心->启动完成。
这篇我就重点说Casio机器上装linux吧(因为我的机器是Casio E-115),有空再说iPaq。
按照文档来看,只要是基于MIPS系统都有可能安装linux,现在已知支持的有Casio E100、E105、E115。由于Casio没有Flash Rom,Linux必须从WinCE Load,因此需要在WinCE中安装bootloader(引导启动)、kernel(系统核心)、root filesystem(root文件系统),这些都要安装在Compact Flsah卡中。
在做一个启动PocketLinux的CF卡之前必须注意以下事项:
1.一块>=32Mb的CF卡
所需的CF卡越大越好,至少......如果只有一块8Mb的卡是不适合开发Linux的(由于Linux的kernel并不大,其实8Mb就够了,不过只有系统核心就如同没有任何应用程序的空白操作系统,什么也不能用......)
2.一个安装Linux系统的机器和一个读卡器(对CF卡要可读写)一些CF相关设备是可以在Linux中工作的,不过大多数需要USB支持,所以需要支持USB的kernel,有时Linux中USB支持的设备工作不稳定,甚至会造成整个系统的Down掉。
3.vmlinux-stripped - 用于CE机器上的Linux 的核心系统(kernel)在
www.pocketlinux.com可以下载
4.pocketlinux.tar.gz - PocketLinux运行需要的文件
5.cyace.exe - bootloader程序(有点象SystemCommander)
CyaCE是一个开放式的程序,可以在
www.pocketlinux.com下载
6.还需要一些工具,用于Linux的root 文件系统。
root-small.tar.gz - a cut down Linux filesystem.
root-large.tar.gz - a larger filesystem.
然后要format CF卡,CF卡必须至少有两个分区,一个windows格式,存放bootloader和kernel,另一个Linux 分区放Linux启动后所用的一切......(CF卡也要分区,各位没有想过吧),建议分第三个区存放用户文件,那么系统的root区就可以设为只读以防一些意外事件。
CF卡上的分区建议为:
1./dev/sdb1 - vfat - 2.5Mb - windows partition
2./dev/sdb2 - ext2 - 5Mb - PocketLinux read/write partition
3./dev/sdb3 - ext2 - 其余空间 - root partition
使用fdisk分区后这样格式化:
# mkfs.msdos /dev/sdb1
# mkfs.ext2 /dev/sdb2
# mkfs.ext2 /dev/sdb3
好了,现在安装CyaCE(安装开始喽...)
copy cyace.exe和cyacecfg.txt和kernel到CF卡的windows分区。
编辑cyacecfg.txt以指向正确的kernel镜像(要有Linux知识哦......)
# mount /dev/sdb1 /mnt/sdb1 -t vfat
# cp vmlinux /mnt/sdb1
# cp cyace.exe /mnt/sdb1
# cp cyacecfg.txt /mnt/sdb1
# umount /mnt/sdb1
接着安装Linux文件系统
基本的Linux file system要放在第三个分区(This must be done as root
to allow the device files to be created)
# mount /dev/sdb3 /mnt/sdb3 -t ext2
# cd /mnt/sdb3
# tar zxvf ~/root-<size>.tar.gz
# tar zxvf ~/pocketlinux.tar.gz
启动!!!
大多数机器上,启动Linux要执行cyace.exe(从CE的文件管理器执行),Casio E100/E105/E115可以设置Linux为“当CF卡插如时自动启动”(把cyace和kernel放在CF卡的CE/R4100目录中,把cyace.exe改名为AutoRun.exe)。一旦系统核心(kernel)启动,PocketLinux会运行SysV初始,默认PocketLinux是run-level 5。
设备连接:
最简单的方法是通过minicom这样的终端模拟来建立串行连接,默认情况下是PPP
连接。命令如下(假设设备是接在ttyS0(com1)):
pppd /dev/ttyS0 115200 noauth nodetach nocrtscts local persist proxyarp <ip1>:<ip2>
ip1和ip2是source(PC)和destination(CE机)的IP地址。大多数情况下需要root的权限。一旦连接建立,你可以用telnet -l root <ip2>
好啦,安装部分讲完了。有人愿意试一下吗?拿出一个别人看不懂的机器......有几点要注意:
一是tvt-make-cf这个script不要去使用,据说还不稳定,原句是"Since this script must be run as root it could potentially do VERY BAD THINGS to your system if not configured correctly. "
二是装了Linux,原来CE系统内存中存储的程序也会被干掉,先backup一下吧。
安装在ram里面好象也是可以的,不过据说不方便。
恢复原来的CE:
拿下主电池,Reset吧......
装完了有些什么呢?Application Launcher,Address Book,News,Memo Pad,email
Themes,Simple Calculator,Layout Test,User Info......
讲完啦,有人听吗?(台下扔来臭鸡蛋和烂番茄......)有兴趣的话下次可以再深入一点,或是有iPaq的人想看看(也可以restore的哦)。
后文:
从这篇文章可以引出一个有趣的推论:既然linux都可以启动,那么CE升级版也应该可以启动喽,以后的CE4.0 5.0也可以从CF卡上启动啊,要什么flash rom呢?CE设备的厂商们啊......不要再出什么Casio E900了,给我一个CF卡启动的方案吧。