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

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

点击数:7528 次   录入时间:03-04 11:45:20   整理:http://www.55dianzi.com   嵌入式系统-技术

mount -o loop -t cramfs /usr.img /usr

这样,就可以经由 loopback 设备,把 usr.img 这个 cramfs 的 image 文件 mount 到 /usr 目录上去了。内核中需要对loopback这个设备的支持。

cramfs 的压缩效率一般都能达到将近 50%。

Cramfs通过优化索引节点表的尺寸和除去传统文件系统中文件之间的空间浪费来达到节约空间的目的。它还使用了zlib压缩,实现优于2:1的压缩比例。解压缩过程的系统开销并不是很大,因为Cramfs支持指定单块的解压,而并不必解压缩整个文件。

Cramfs不仅能节省空间,还能避免非正常关机导致的等待fsck或手工进行fsck的麻烦。它通过只读的方式达到这一目的。

RamDisk有三种实现方式:

在Linux中可以将一部分内存mount为分区来使用,通常称之为RamDisk,分为:

Ramdisk, ramfs, tmpfs.

① 第一种就是传统意义上的,可以格式化,然后加载。

这在Linux内核2.0/2.2就已经支持,其不足之处是大小固定,之后不能改变。

为了能够使用Ramdisk,我们在编译内核时须将block device中的Ramdisk支持选上,它下面还有两个选项,一个是设定Ramdisk的大小,默认是4096k;另一个是initrd的支持。

如果对Ramdisk的支持已经编译进内核,我们就可以使用它了:

首先查看一下可用的RamDisk,使用ls /dev/ram*

首先创建一个目录,比如test,运行mkdir /mnt/test;

然后对/dev/ram0 创建文件系统,运行mke2fs /dev/ram0;

最后挂载 /dev/ram0,运行mount /dev/ram /mnt/test,就可以象对普通硬盘一样对它进行操作了。

② 另两种则是内核2.4才支持的,通过Ramfs或者Tmpfs来实现:

它们不需经过格式化,用起来灵活,其大小随所需要的空间而增加或减少。

Ramfs顾名思义是内存文件系统,它处于虚拟文件系统(VFS)层,而不像ramdisk那样基于虚拟在内存中的其他文件系统(ex2fs)。

因而,它无需格式化,可以创建多个,只要内存足够,在创建时可以指定其最大能使用的内存大小。

如果你的Linux已经将Ramfs编译进内核,你就可以很容易地使用Ramfs了。创建一个目录,加载Ramfs到该目录即可:

# mkdir /testRam

# mount -t ramfs none /testRAM

缺省情况下,Ramfs被限制最多可使用内存大小的一半。可以通过maxsize(以kbyte为单位)选项来改变。

# mount -t ramfs none /testRAM -o maxsize=2000 (创建了一个限定最大使用内存为2M的ramdisk)

③ Tmpfs是一个虚拟内存文件系统,它不同于传统的用块设备形式来实现的Ramdisk,也不同于针对物理内存的Ramfs。

Tmpfs可以使用物理内存,也可以使用交换分区。在Linux内核中,虚拟内存资源由物理内存(RAM)和交换分区组成,这些资源是由内核中的虚拟内存子系统来负责分配和管理。

Tmpfs向虚拟内存子系统请求页来存储文件,它同Linux的其它请求页的部分一样,不知道分配给自己的页是在内存中还是在交换分区中。同Ramfs一样,其大小也不是固定的,而是随着所需要的空间而动态的增减。

使用tmpfs,首先你编译内核时得选择"虚拟内存文件系统支持(Virtual memory filesystem support)" 。

然后就可以加载tmpfs文件系统了:

# mkdir -p /mnt/tmpfs

# mount tmpfs /mnt/tmpfs -t tmpfs

同样可以在加载时指定tmpfs文件系统大小的最大限制:

# mount tmpfs /mnt/tmpfs -t tmpfs -o size=32m

FAT: bogus logical sector size 21072

具体的文件系统FAT格式。

虚拟逻辑扇区大小为20K,linux-2.4.22fsfatInode.c。

在初始化MS-DOS文件系统时,读MS-DOS文件系统的superblock,函数fat_read_super中输出的上面的信息。

UMSDOS: msdos_read_super failed, mount aborted.

UMSDOS:一种文件系统,特点容量大但相对而言不大稳定。是Linux 使用的扩展了的DOS文件系统。它在 DOS 文件系统下增加了长文件名、 UID/GID、POSIX 权限和特殊文件 (设备、命名管道等)功能,而不牺牲对 DOS 的兼容性。允许一个普通的msdos文件系统用于Linux,而且无须为它建立单独的分区,特别适合早期的硬盘空间不足的硬件条件。

VFS: Mounted root (romfs filesystem) readonly

虚拟文件系统VFS(Virtual Filesystem Switch)的输出信息。

再次强调一下一个概念。VFS 是一种软件机制,也可称它为 Linux 的文件系统管理者,它是用来管理实际文件系统的挂载点,目的是为了能支持多种文件系统。kernel会先在内存中建立一颗 VFS 目录树,是内存中的一个数据对象,然后在其下挂载rootfs文件系统,还可以挂载其他类型的文件系统到某个子目录上。

Mounted devfs on /dev

加载devfs设备管理文件系统到dev安装点上。

/dev是我们经常会用到的一个目录。

在2.4的kernel中才有使用到。每次启动时内核会自动挂载devfs。

devfs提供了访问内核设备的命名空间。它并不是建立或更改设备节点,devfs只是为你的特别文件系统进行维护。一般我们可以手工mknod创件设备节点。/dev目录最初是空的,里面特定的文件是在系统启动时、或是加载模组后驱动程序载入时建立的。当模组和驱动程序卸载时,文件就消失了。

Freeing init memory: 72K

释放1号用户进程init所占用的内存。

 

第三节:加载linux内核完毕,转入cpu_idle进程

 

系统启动过程中进程情况:

①init进程

一般来说, 系统在跑完 kernel bootstrapping 内核引导自举后(被装入内存、已经开始运行、已经初始化了所有的设备驱动程序和数据结构等等), 就去运行 init『万process之父』, 有了它, 才能开始跑其他的进程,因此,init进程,它是内核启动的第一个用户级进程,它的进程号总是1。

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  下一页


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