N9 Harmattan的文件系统

在《gemfield的N9》一文中提到了Harmattan并不是meego系统,本文将要阐述的文件系统也佐证了这一点。Harmattan的文件系统遵循了标准的linux并且作了自己的一点扩展。

N9的Harmattan系统一共有三个分区,如下(可以在N9终端下使用df命令查看):

1、/ (root fs),根文件系统,文件系统类型是ext4,大小是4GB(gmefield的N9本分区使用了36%),存储的是基本的操作系统和一些应用程序;
2、/home/user,文件系统类型是ext4,大小是2GB(gemfield的N9本分区使用了6%),存储的是第三方应用程序(如UC浏览器)、系统数据库(比如邮件和记事);
3、/home/user/MyDocs,这个分区就是N9以usb模式连接到Pc上时,你能看到的内容。类型是VFAT,方便USB访问的大容量存储。存储的是用户的数据,比如照片、视频、音乐等。大小是10GB(gemfield的N9本分区使用了29%)。

我们现在从根文件系统开始,根文件系统基于Filesystem Hierarchy Standard, version 2.3标准。参考:http://www.civilnet.cn/bbs/browse.php?topicno=58037。它定义了标准linux存储各种文件类型的目录。根文件系统是linux内核最初加载的文件系统。在内核启动时,可使用”root=”启动bootloader命令行指定的根文件系统所在的设备。Harmattan基本上遵循了这个惯例。比如:

1、/bin,存储常用linux命令,在Harmattan中是一个裁减的busybox,被誉为嵌入式系统中的“瑞士军刀”,CivilNet施展能力的重要伙伴。其中,gemfield下文展示了N9上/bin目录下的命令:

ash: Kenneth Almquist在1989年编写的shell解释器;
busybox:其它的文件都是链接文件,指向busybox;
cat:将文件连接到标准输出;
chgrp: 变更文件与目录的所属群组;
chmod:变更文件到访问权限,如可执行权限;
chown:变更文件的拥有者;
cp:复制;
date:日期;
dd: 以指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换;
develsh:N9的sh;
devel-su:N9上的su,在N9的terminal里使用这个命令获得root权限,密码为rootme;
df:磁盘分区使用情况;
diff::比较文件异同;
dmesg:打印内核信息缓冲区的内容;
echo:显示一行文本;
egrep: 在输入文件(缺省为标准输入)中搜索 Pattern 参数指定的模式相匹配的行;
false:不做任何事情,返回值false;
fgrep: 查找一个或多个与给出的字符串或词组相匹配文件中的行;
fsync:同步文件的改动;
fuser: 列出本地进程的进程号;
grep:匹配字符
gunzip: 解压缩;
gzip: 解压缩;
hostname:显示系统主机名字,N9上显示RM696;
ip: 网络配置;
kill:发送信号到进程;
ln:建立链接;
login:登陆,开始一个新的系统会话;
ls:显示目录内容;
lsmod:显示模块;
mkdir:创建目录;
mknod:建立字符或块设备的node文件;
mktemp: 建立暂存文件;
more: 用于显示内容超过一屏的文件;
mount:挂载分区;
mv:移动,重命名;
netstat: 显示与IP、TCP、UDP和ICMP协议相关的统计数据;
pidof: 获取进程号;
ping:ping 目的Ip;
ping6:ip6的ping;
ps:显示进程信息;
pwd:显示当前路径;
readlink: 判断执行文件的类型,如果是一个符号链接,得到这个链接的目的路径;
rm:删除文件;
rmdir:删除空的目录;
run-parts: 执行目录下的命令或脚本,以基本的词汇(字符)顺序执行的;
sed:流编辑器,参考gemfield的《Sed编辑器,也叫stream editor》;
sh: Bourne脚本解释器;
sleep:休眠;
stty: 打印或更改terminal(终端)的设置;
su:切换到其它用户;
sync:刷新文件系统缓冲区;
tar:档案;
tempfile:显示临时文件路径;
touch: 修改文件的时间戳记;
true:不做任何事,返回值为true;
umount:卸载分区;
uname:打印系统信息;
uncompress:解压;
which:查找命令所在路径;
zcat:解压。

2、/boot,这个目录存储内核启动时(在执行用户态程序之前)需要的东西。

3、/dev,设备文件所在的目录。

4、/etc,主机系统配置文件所在的目录。
一些子目录也是需要的,如:

opt,/opt的配置目录,安装的应用程序的配置信息都存储在这个目录里;
X11,X视窗系统的配置目录;

5、/home,用户目录。

6、/lib,基本的共享库和内核模块所在的目录。

7、/media,为可移出媒介(比如u盘)准备的挂载点。

8、/mnt,为临时文件系统准备的挂载点。

9、/opt,安装程序的目录。

10、/proc,挂载proc文件系统。 proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。

11、/sbin,基本的系统二进制程序。

12、/srv,service的缩写,存储一些系统服务所需的数据。

13、/tmp,存储临时文件的目录。系统掉电后数据丢失。

14、/usr,用户目录,里面包含子目录。
这个目录包含了一些必备的子目录,如:

bin,一些常用的用户命令;
games,游戏益智类的二进制程序;
include,c程序的头文件目录;
lib,库文件目录;
libexec,特定的库文件目录;
local,本机端自行安装的软件预设放置的目录。目前也适用于 /opt 目录;
sbin,不重要的系统命令;
share,共享数据存放的目录;
src,源码所在的目录;
X11R6,X11视窗系统,第6个版本;

15、/var,包含系统运行时需要改变的数据。通常这些数据所在的目录大小是要经常变化或扩充的。
这个目录包含了一些必备的子目录,如:

backups:空;
cache:程序缓存数据目录;
clean-device:空;
lib:系统或程序附属的状态信息存放的目录;
local:/usr/local的变量数据;
lock:  闭锁文件(Lock files)在/var/lock, 通常在目录中为正在使用文件的程序的个别项目;
log:存放各种各样的日志文件;
mail:用户邮箱文件;
mstarup: Mille Starup;
opt: /opt里安装的程序存放变量的目录;
run:存放系统启动以来之后的系统相关信息;
spool: 一些队列数据存放的地方;
tmp:存放临时文件,并且系统重启后还能得以保存;

在Harmattan平台上,应用程序的安装(deb包)主要是按照debian策略(参考:http://www.debian.org/doc/debian-policy/),并加了一些harmattan平台自己的扩展(参考:http://civilnet.cn/bbs/browse.php?topicno=58042)。程序的二进制文件和其它程序所需文件必须安装在/opt/package_name子目录下,其中package_name和应用程序包的名字相关。

备注:本文属于gemfield的CivilNet Blog(http://civilnet.cn/gemfield)【嵌入系统】版块;bug提交至[gemfield@civilnet.cn];资料发布及讨论区:http://civilnet.cn/bbs;转载此文时,请保证包括【备注】在内的文章的完整性。