嵌入式linux内核制做、根文件系统制做

嵌入式系统构成:linux

主要由bootloader、kernel、以及根文件系统三部分组成。网络

 

内核制做步骤:ui

制做嵌入式平台使用的linux内核制做方法与pc平台上的linux内核基本一致spa

1.清除原有配置与中间文件设计

x86:make distclean日志

arm:make distcleancode

2.配置内核blog

x86:make menuconfig内存

arm: make menuconfig ARCH=arm开发

3编译内核4

x86:make bzImage

arm:make uImage ARCH=arm CROSS_COMPILE=arm-linux-

注意make zImage与make uImage的区别

make uImage会先产生zImage,而后再产生uImage(再zImage的基础上加上48字节的头,包括压缩方式等)

 

用tftp下载时,须要把zImage拷贝到/tftp文件夹下

 

根文件系统制做

文件系统包含两个层次的含义:

一、按照固定格式组织的目录与文件(看的见)

二、在特定的存储介质上管理这些目录和文件须要的数据(看不见)

制做文件系统步骤:

一、建立目录和文件

二、位建立好的目录和文件创建管理数据

mkdir rootfs
cd rootfs
mkdir bin dev etc lib proc sbin sys usr mnt tmp var
mkdir usr/bin  usr/lib usr/sbin lib/modules

2.建立设备文件

cd dev/
mknod -m 666 console c 5 1     //mknod:建立设备文件
mknod -m 666 null c 1 3

三、安装/etc

tar etc.tar.gz  -C  /XXX/rootfs

四、编译内核模块

进入linux内核目录下

make modules ARCH=arm  CROSS_COMPILE=arm-linux-           //编译的结果,内核模块.ko文件散落在各个角落中

五、安装内核模块

make modules_install ARCH=arm INSTALL_MOD_PATH=../rootfs  //把.ko文件copy到lib/modules中

 

安装/编译busybox

Busybox: 嵌入式开发中的瑞士军刀

1.配置busybox
#make menuconfig    //进入busybox目录下
a、进入Busybox Settings ->build Options->
选中 “Build busybox as a static binary”, 静态连接

Cross Compiler prefix (arm-linux-)
Installation Options->
选中 “Don‘t use /usr”, 选中该项能够避免busybox 被安装到宿主系统的/usr目录下,破坏宿主系统

Busybox Installation Prefix (/xxx/rootfs)
该选项代表编译后的busybox
的安装位置

 

编译安装busybox

make:编译

make install   //安装

 

文件系统类型

linux引入虚拟文件系统VFS(Virtual File System)。

在嵌入式linux应用中,主要的存储设备为RAM和FLASH。经常使用的基于存储设备的文件系统类型包括:jffs2,yaffs,cramfs,ramdisk,ramfs等。 

jffs2:日志闪存文件系统版本2,用于NOR flash,可读写、支持数据压缩的日志文件系统。

yaffs/ubitFS:用于nand flash设计的一种日志型文件系统,不支持数据压缩。

Cramfs:只读的压缩文件系统。(用的愈来愈少)

Ramdisk:将部分固定大小的内存当作块设备来使用。

Initramfs:将内存当作块设备用(如今用的多)

NFS:网络文件系统。 (开发阶段使用)

 

把zImagecopy到/tftp下

tftp 31000000 zImage

nand erase 200000 300000(offset  size)

nand write 31000000 200000 300000(内存addr offset  size)

利用Initramfs特色:每次添加一个功能都须要从新编译内核,从新下载。

相关文章
相关标签/搜索