嵌入式linux系统由 linux内核 + 根文件系统 两部分组成
一个完整的嵌入式linux系统组成:bootloader + boot parameters + kernel + root filesystem
嵌入式linux系统使用的是linux内核,制作方法基本和x86平台的linux内核一致,下面介绍制作运行于micro2440开发板的内核和根文件系统。
嵌入式linux内核的制作:
1,到www.kernel.org下载源代码,解压,进入内核源代码目录。
2,清除原有的配置与中间文件
x86: make distclean
arm: make distclean
3,配置内核:
x86: make menuconfig arch=i386
arm: make menuconfig arch=arm //配置完毕在内核源代码目录生成.config文件,建议参考arch/arm/configs/s3c2410_defconfig .config、
4,编译内核:
x86: make bzimage
arm: make uimage arch=arm cross_compile=arm-linux- //编译成功在arch/arm/boot/目录下产生zimage内核映像
5,使用tftp下载到开发板运行即可
根文件系统的制作:
根文件系统是linux启动时使用的第一个文件系统,就像pc机上的文件目录
6,创建根文件系统的目录(目录名随便取)
mkdirrootfs
cd rootfs
mkdirbin dev etc lib proc sbin sys usr mnt tmp var
mkdirusr/bin usr/lib usr/sbin lib/modules
7,创建设备文件
cddev/
mknod -m 666consolec 5 1
mknod -m 666nullc 1 3
8,安装/etc(随便拷贝点/etc/目录下的文件到该etc目录下)
9,编译内核模块
cd linux 2.6.29 //进入linux内核目录
make modules arch=arm corss_compile=arm-linux-
10,安装内核模块(把编译好的内核模块拷贝到创建的这个文件系统)
make modules_install arch=arm install_mod_path=/***/rootfs //生成rootfs/lib/modules/2.6.29.4-friendlyarm
busybox的配置-编译-安装:
11,配置busybox(linux下面是用的一整套的命令和工具的集合)
解压busybox,进入busybox根目录
make menuconfig
选择需要使用的工具
进入 busybox settings->build option->
选中 “build busybox as a static binary”,静态链接
更改cross compiler prefix 为(arm-linux-)
进入installation option->
选中“do not use /usr”,可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统
更改busybox installation prefix位置为(/xxx/rootfs)
12,编译,安装busybox(把相关的命令/文件拷贝到这个正在创建的文件系统)
在busybox根目录下
make arch=arm cross_compile=arm-linux- /*等...........等*/
make install //执行的是busybox这个可执行文件/*rootfs/bin/目录下多了好多文件*/
13,至此根文件系统制作完成
由根文件系统制作ramdisk
14,需要一个软件genext2fs,为制作ramdisk的工具,
下载地址http://download.chinaunix.net/download.php?id=6874&resourceid=3625
安装方法:
解压genext2fs
#cd genext2fs
#./configure
#make
#make install
15,利用genext2fs制作ramdisk
#genext2fs -b 8192 -d /***/rootfs ramdisk //根文件系统的所有内容变成了ramdisk=8192=8mb
gzip -9 -f ramdisk //对ramdisk进行压缩,将此压缩文件放到开发板即 可作为根文件系统启动起来
开发板可运行的文件系统:
nfs文件系统:文件系统在pc机上,开放给开发板运行
ramdisk文件系统:下载到开发板的内存中运行
linux支持的文件系统:
ext2,ext3,vfat,jffs,romfs,nfs,这些不同的文件系统由虚拟文件系统vfs统一管理
嵌入式linux支持的文件系统:
jffs2,yaffs,cramfs,ramdisk,ramfs
jffs2:用于norflash上,可读写,支持数据压缩
yaffs2:用于nandflash上,不支持数据压缩,可读写
cramfs:既可以用于norflash上,又可以用于nandflash上,只读,支持数据压缩
ramdisk:用一部分固定大小的内存作为分区来使用,并非是一个实际的文件系统,方便内核启动
nfs:文件系统在pc机上,通过网络共享
自动驾驶技术的成本大揭秘
芯动联科:高性能MEMS惯性传感器龙头
成都慧视智能图像处理技术,让城市交通更加智慧化
kb0开关与隔离开关二者之间的区别是什么
汽车IGBT模块功率循环试验设计
你知道嵌入式Linux内核?文件系统的制作也是有密切关联的
EDA软件的设计难点
如何在基于互联网的M2M系统中使用第三方IP协议栈
什么是ADC?信号链ADC的位置在哪?ADC芯片的常见架构
冷热冲击试验箱温度变化速率的选择
Highest Linearity, Downconvert
高压密闭消解_原子荧光光度法测定涂料中砷含量的应用方案
锐龙5 3600X测试曝光 几乎看齐i7-9700K
卫生型耐震隔膜压力表产品的主要技术指标和特点
气相焊接工艺是如何进行的
OLED技术知识整合 你想知道的都在这
霍尔传感器电路图大全(六款霍尔传感器电路图)
根号叁借助NVIDIA CloudXR解决方案
海伯森获评“第七届深圳市自主创新百强中小企业”及“深圳市专精特新企业”
苹果的万元iPhone难获超高端用户认可,超高端智能手机市场为何存在?