嵌入式Linux内核的块设备驱动:
对于linux 的根文件系统,目前有三种块设备的驱动可以选择,它们分别是:
a) Blkmem 驱动
b) MTD 驱动
c) RAM disk 驱动
Blkmem 驱动是专门为嵌入式linux 开发的一种块设备驱动,它是嵌入式linux系统中最为古老和通用的块设备驱动。它原理相对简单但是配置比较复杂,需要根据你即的Flash的分区使用情况来修改代码。当然修改的结果是它可以对一些NOR型的Flash进行读写操作。不过目前支持的Flash类型不够多。如果新加入对一种Flash的支持需要作的工作量比较大。
Linux的MTD驱动是标准Linux的Flash驱动。它支持大量的设备,有足够的功能来定义Flash的分区,进行地址映射等等。使用MTD你可以在一个系统中使用不同类型的Flash。它可以将不同的Flash组合成一个线性的地址让你来使用。
在标准的Linux 2.4内核中MTD有一系列的选项,你可以根据个人系统的需要来选择,定制。
另外一种选择就是RAM disk 驱动。在PC上它经常用于没有硬盘的Linux的启动过程。它和Flash没有直接的关系。不过当Flash上启动的是经过压缩的内核时。RAM disk 可以作为根文件系统。
MTD 驱动提供了对Flash强大的支持,你通过它甚至可以在Flash上运行一个可以读写的真正的文件系统,比如JFFS2。而Blkmem驱动则望尘莫及。
NET4: Linux TCP/IP 1.0 for NET4.0
调用inet_init [ linux-
IP Protocols: ICMP, UDP, TCP, IGMP
列出可以支持的IP协议,此处为kernel源代码inet_add_protocol(p);的输出。
在linux启动过程中,都会看到这句的输出。
IP: routing cache hash table of 512 buckets, 4Kbytes
IP路由代码的输出信息。
ip_rt_init [ linux-
TCP: Hash tables configured (established 8192 bind 8192)
TCP协议初始化输出信息。tcp_init [ linux-
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
UNIX网络协议信息。
af_unix_init[ linux-
上面的关于网络的输出信息是在linux启动信息中都会出现的。
加载各种文件系统
cramfs: wrong magic
会出现“cramfs: wrong magic”,别担心这没有什么害处,这个是kernel的书写bug,在2.6中有修改之,它是一个警告信息,用来检查cramfs的superblock超级块的。superblock也是VFS要用到的数据结构。
代码linux-
2.4
cramfs_read_super(。。。)
/* Do sanity checks on the superblock */
if (super.magic != CRAMFS_MAGIC) {
/* check at 512 byte offset */
mEMCpy(&super, cramfs_read(sb, 512, sizeof(super)), sizeof(super));
if (super.magic != CRAMFS_MAGIC) {
printk(KERN_ERR "cramfs: wrong magic ");
goto out;
}
}
2.6
if (super.magic != CRAMFS_MAGIC) {
if (!SILent)
printk(KERN_ERR "cramfs: wrong magic ");
goto out;
}
超级块是文件系统的“头部”。它包含文件系统的状态、尺寸和空闲磁盘块等信息。如果损坏了一个文件系统的超级块(例如不小心直接将数据写到了文件系统的超级块分区中),那么系统可能会完全不识别该文件系统,这样也就不能安装它了,即使采用e2fSCK 命令也不能处理这个问题。
Cramfs文件系统:
cramfs 是 Linus Torvalds 本人开发的一个适用于嵌入式系统的小文件系统。由于它是只读的,所以,虽然它采取了 zlib 做压缩,但是它还是可以做到高效的随机读取。 cramfs 不会影响系统读取文件的速度,又是一个高度压缩的文件系统。
我们制作image文件之后,我们还要考虑怎样才能在系统运行的时候,把这个 image 文件 mount 上来,成为一个可用的文件系统。由于这个 image 文件不是一个通常意义上的 block 设备,我们必须采用 loopback 设备来完成这一任务,如:
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
上一篇:基于VxWorks的产品映象设计