http://wxqxq520.blog.sohu.com/164207588.html
Flash 的分区可以根据需要划分,uClinux 中支持Flash 存储器的块设备驱动负责定义上述的分区。和PC 机下的Linux 不同,Flash 的分区把系统内核文件和根文件系统单独划分到两个分区中,而PC 机的硬盘是把内核文件和根文件系统放在一个分区内。PC 机下Linux 的Bootloader 是LILO 或GRUB。它们在系统启动时能智能地在分区中找到内核文件块, 并把它加载到RAM 中运行。对于Flash 而言,把内核的镜像文件写进一个单独的分区对嵌入式系统有两大优点:
① 系统可以直接在Flash 上运行;
② LILO 或GRUB 更易找到内核代码并加载,甚至可以不用LILO 或GRUB 引导而直接运行。
内核文件和根文件系统在Flash 中的放置,可以根据系统设计需要适当选择, 选择如表1 所列。
模式选择 | 优点 | 缺点 |
内核和根文件系统放在固定偏移地址单元(单独分区) | 适用于主要系统成员地址单元固定,易于引导程序( Bootloader)加载和分别升级内核和根文件系统 | 在内核和根文件系统之间不可避免要浪费Flash 空间 |
根文件系统紧跟内核放置(不单独分区) | 节省Flash 存储空间 | 内核文件和根文件系统合二为 一,单独升级不够方便 |
内核和根文件系统压缩放置 | 节省大量的Flash 存储空间,可选择压缩放置内核或根文件系统 | 系统需要引导程序(Bootloader)和RAM 支持 |
可见,一般LINUX 内核镜像都是压缩的,因为对于X86系列处理器,系统启动初期,处于实模式状态,
可以寻得的地址空间十分有限,如果内核过大,就无法加载(还记得dos吗?因为dos只能工作在实模式,这就是
Dos下的应用程序不能超过640k的原因)。待内核加载完毕,系统被置成保护模式,32根地址线可以寻得4G地址,于是可以将被压缩过的内核展开了...有些处理器,如alpha,就没有这一限制。
对于嵌入式LINUX 而言,根文件系统有好多种,有直读的,有读写的,有专门针对NORFLASH的,有专门针对NANDFLASH 的,等等,因此,当然如果把 内核镜像放到根文件系统中的话,必须要BOOTLOAD 支持相应的文件系统,否则也无法读取并加载内核到RAM中,因此无法启动,基于这几点,因此,一般FLASH 系统中
内核和根文件系统放在固定偏移地址单元(单独分区)的,