您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术嵌入式linux启动信息完全注释 正文
嵌入式linux启动信息完全注释

嵌入式linux启动信息完全注释

点击数:7528 次   录入时间:03-04 11:45:20   整理:http://www.55dianzi.com   嵌入式系统-技术
8M或10M左右,所以能放得下;

 

嵌入式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-2.4.22 etipv4Af_inet.c ]时的输出信息, 在启动过程中被socket.c调用到。

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-2.4.22 etipv4\Route.c ],Set the IP module up,路由缓冲hash表

TCP: Hash tables configured (established 8192 bind 8192)

TCP协议初始化输出信息。tcp_init [ linux-2.4.22 etipv4Tcp.c ],

NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.

UNIX网络协议信息。

af_unix_init[ linux-2.4.22 etunixAf_unix.c ], 多种连接的一种(IPv4, UNIX domain sockets, IPv6和IrDA). SMP 对称多处理器—Symmetrical Multi Processing,这里主要是指UNIX的一些网络协议.

 

上面的关于网络的输出信息是在linux启动信息中都会出现的。

加载各种文件系统

cramfs: wrong magic

会出现“cramfs: wrong magic”,别担心这没有什么害处,这个是kernel的书写bug,在2.6中有修改之,它是一个警告信息,用来检查cramfs的superblock超级块的。superblock也是VFS要用到的数据结构。

代码linux-2.4.22fscramfsInode.c:

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]  下一页


本文关键字:嵌入式  信息  Linux  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术