Linux根文件系统结构再认识
INTRO
尽管Linux的根文件系统在形式表现上是一体的(所有数据目录均为根目录下的子目录),但实际它们是多个不同的【逻辑主体】(为了实现不同的逻辑功能)组合在一起的,参见下图。这也解释了为什么有些节点(如/var)可以挂接到不同磁盘分区上。划分这些逻辑部分对清晰把握根文件系统结构,以及整个系统的行为都有很大的好处。在划分之前,先看看“文件系统结构标准”。
文件系统结构标准
文件系统结构标准 (Filesystem Hierarchy Standard ,下称FHS)定立的目标之一是,程序可按用途性质被安装到指定的位置,用户也能预知程序的安装的文件和目录的位置。FHS通过定义文件系统各部分的涵义、用途,再加上列举所有的特殊情况,如历史遗留问题,达到了这个目标。
LINUX系统的数据文件可以根据【双重标准】来对它们分类:共享的与独享的(shareable vs. unshareable)、变化的和静态的(variable vs. static)。如果数据文件无法按照双重标准分类,它们必须另起目录存放,这样做的原因是可以把不同【使用性质】(usage characteristics)的数据文件分开不同文件系统(磁盘分区)存放。
“共享的” (Shareable)是指数据与平台不相关的,如/usr;相反“独享的”(Unshareable)指数据是平台相关的,如配置数据/etc。
“静态的”数据是相对非管理员用户而言的,没有更变的权限;而“变化的”则相反。分隔静态与动态数据的目的是为了可把静态数据安装到一个单独的只读的介质(文件系统)中,不必与动态数据一起做频繁的事务管理,比如定期备份。
与数据的【静动态性】面向“用户”不同,数据的【共享专用性】是面向“主机”而言,也就是说,有些数据是本机专用的,而另外一些是多个主机(可是本地的FHS兼容主机,可以是远程主机)共享的。比如根目录分区是本机专用的,而/usr所在分区可共享给多个FHS兼容主机。
双重标准是发展而来的,被纳入FHS,为了支持这个标准,过去默认存放在/usr 、/var、 /etc 等目录的数据都做了相应的调整。
Linux根文件系统逻辑组成
参照FHS,Linux系统按照逻辑功能大致分为以下目录(以具体目录表现逻辑功能,有意思):
/
/usr
/var
/opt
/home
P.S. 以上目录均可单独安装到一个分区上,最终挂接入根下。
/ (专用的静态的)
根目录的功能由其名可略知,根目录是系统的根本所在(Essential),是系统之所以为本系统的特征
相关文档:
虚拟机下linux下可以用使用主机的串口(虚拟机添加硬件里面可选)
linux下的超级终端minicom
进入超级终端的命令
[root]#minicom -s
选择串口一项
需要设定串口ttyS0(你的串口的设备名)
波特率115200
硬件流控关闭(默认是开启,如果开启的话,不能用键盘输入)
软件流控关闭
Save setup as dfl
exit
OK,这就可 ......
强制通过堆栈传递参数,不要用寄存器传递
仔细看一下有asmlinkage的地方通常是系统调用的函数,因为在系统调用中,寄存器从用户空间传过来后SAVE_ALL压入堆栈,接着调用相应的系统调用函数,这样系统调用函数一定要保证是通过堆栈传递参数的
转贴一段:
The asmlinkage tag is one other thing that we should observe a ......
今天将该书misc-modules部分的jiq.c代码做了些修改,以保证这份代码在UBUNTU 9.10 & Linux 2.6.31的环境下运行。
记录一下主要的修改位置:
1.config.h
新内核中使用了autoconf.h代替config.h
2.工作队列
在新的内核中为了避免非延迟的工作队列中timer的成本,将工作队列中的timer剥离出来。同时又构造了延迟工作队列 ......
1:所需头文件:<systypes.h>(数据类型定义) < sys/socket.h>(提供socket函数和数据结构)
<netinet/in.h>(定义数据结构sockaddr_in) <netdb.h>(提供获取域名或IP的函数)
<arpa/inet.h>(提供IP地址转换函数) < ......