嵌入式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,创建根文件系统的目录(目录名随便取)
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
7,创建设备文件
cd dev/
mknod -m 666 console c 5 1
mknod -m 666 null c 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机上,通过网络共享
上一篇:嵌入式导航系统是在怎样的设计下实现的
下一篇:关于uboot的功能分析透彻方案
推荐阅读最新更新时间:2024-11-13 21:07
设计资源 培训 开发板 精华推荐
- 用于软启动电路的 LTC3615MPFE 双路 3A 同步降压型 DC/DC 转换器的典型应用
- 用于 GB 以太网交换机时钟和时序平面的 137.5 至 4400MHz PLL 时钟发生器
- RT9288A LED Driver with PWM Brightness Control (12V to 60V) 典型应用
- CH579 USB/BLE 双模键盘 兼容CIY68
- AD9204-40EBZ,用于 AD9204BCPZ-40、2 通道、10 位、40 MSPS 模数转换器的评估板
- OM13088: LPCXpresso4367开发板
- 基于STCH02的15W,5V-3A USB适配器,具有一次侧检测CC特性
- LT1634BCS8-5 单节锂离子电池监控电路的典型应用 (IQ = 20uA)
- ZR431FTA 可调精密齐纳并联稳压器的典型应用
- 使用 Analog Devices 的 REF198GRUZ-REEL 的参考设计
- LPC55S69 新一代基于ARM Cortex-M33内核 通用安全低功耗MCU
- 了解PI高性能AC-DC产品,答题赢好礼
- 希望一月 爱上EEWORLD——论坛推广月
- 【有奖直播】 聚焦语音识别核心技术,走进Microchip Timberwolf™音频处理器研讨会
- 6月4日上午10:00直播:英飞凌栅极驱动芯片的应用以及安富利对应的解决方案
- 点评《让世界更安全——TI Hercules开发实战手册》,精彩好礼等你拿!
- 端午节芯币兑换礼品专场礼品专场
- 免费测评|抢鲜体验树莓派Pico!
- 全球首款Cortex-M23内核物联网芯片SAML10和SAM L11系列 闯关获取SAML10/SAML11法宝,拆除电子界安全危机,赢好礼!