====================1.嵌入式软件层次
1.bootloader(u-boot)
2.linux内核
3.文件系统(NFS yaffs2)
====================2.u-boot的编译
1.清除原有配置和中间文件
make distclean
2. 配置开发板 (告诉u-boot,编译成的映像文件应该运行在什么开发板上)
1.1 在Makefile里面搜索开发板名称,找到(开发板名称)_config
1.2 make (开发板名称)_config 如:make mini2440_config
3. 编译
make ARCH=arm CROSS_COMPILE=arm-linux-
====================3.Linux内核编译
1.清除原有配置和中间文件
make distclean
2. 配置内核
make menuconfig ARCH=arm("*"表示相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块)
1.System Type 选择为对应的芯片型号
2.自行添加其他配置项(一般参照已有的.config文件)
详细配置参照
生成.config文件
3. 编译内核
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
1.如果编译报错 "mkimage" command not found. mkimage:用于给内核加上头
在u-boot目录中复制mkimage到根目录的bin目录下
cp/u-boot/tools/mkimage /bin
2.如果在自己的/u-boot/tools/没有找到mkimage
原因在于编译u-boot的时候没有执行make distclean.
在u-boot下执行make distclean,再次编译即可.
3. 如果编译过程中出现非法路径 如: "/home/s5-driver/lesson8/rootfs"
3.1使用vim 或者 gedit 打开内核目录下得 .config文件
3.2 搜索 : CONFIG_INITRAMFS_SOURCE
3.3 CONFIG_INITRAMFS_SOURCE = "xxxxxxx"
修改"xxxxxx"为自己的rootfds目录
或者直接删除"xxxxx"中的xxxxx路径
4.复制内核映像文件到tftpboot文件目录下
cp arch/arm/boot/uImage /tftproot
1.生成的内核映像文件位于 arch/arm/boot/uImage
2.tftpboot目录查看办法
2.1 vim/etc/xinetd.d/tftp 配置tftp服务器
2.2 找到server : 后面的路径下的文件就是tftp服务器的根文件目录
5.这样,启动开发板, 通过tftp下载方式下载内核,就能启动内核.
不过由于还没有挂载文件系统会报错.
==================4. 挂载文件系统(NFS)
1. 建立根文件系统目录和文件
1.1 mkdir rootfs
1.2 cd rootfs
1.3 mkdir bin dev etc lib proc sbin sys usr mnt tmp var
1.4 mkdir usr/bin usr/lib usr/sbin lib/modules
1.5 创建设备文件
cd rootfs/dev (内核启动必须要的两个设备文件)
mknod -m 666(设备权限) console(控制台) c(字符设备) 5(主设备号) 1(次设备号)
mknod -m 666 null c 1 3
1.6 给根文件系统添加配置文件(与硬件平台无关) /etc : 目录包含各种系统配置文件
复制etc.tar到Linux操作系统,并解压
cp etc/* /rootfs/etc/ -tf(复制etc下的所有内容到/rootfs/etc/下)
1.7 给根文件系统添加内核模块
编译: make modules ARCH=arm CROSS_COMPILE=arm-linux-
安装: make modules_install ARCH=arm INSTALL_MOD_PATH=/自己的rootfs目录/
1.8 编译/安装busybox (实现linux操作系统的一些命令)
复制busybox.tar到Linux操作系统,并解压
配置busybox :
make menuconfig
选中 : Busybox Settings -> build Options-> Build busybox as a static binary 静态链接
Busybox Settings -> build Options-> Cross Compiler prefix (arm-linux-) 申明交叉工具链
Installation Options-> Don‘t use /usr 避免安装到pc机下
Installation Options-> Busybox Installation Prefix (/xxx/rootfs) // busybox的安装位置
编译busybox :
make
安装busybox :
make install (实际是拷贝过程)
2.挂载根文件系统(NFS 基于网络,方便调试)
2.1 配置内核文件
make menuconfig ARCH=arm
1. 如果选中了initramfs的文件系统,需要取消
2. File systems -> (选中) Network File Systems ->(选中)root file system on NFS
2.2 重新编译内核
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
2.3 设置启动参数
参数说明:
192.168.1.3 (tftp服务器地址,也就是linux_pc机ip地址)
192.168.1.6 (tftpke客户机ip地址,开发板ip地址)
192.168.1.1 (网关地址)
255.255.255.0 (掩码)
/home/S5-driver/lesson9/rootfs (rootfs的路径)
设置指令:
setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.3:/home/S5-
driver/lesson9/rootfs ip=192.168.1.6:192.168.1.3:192.168.1.1:255.255.255.0::eth0:off
2.4 配置/启动PC机的nfs
vi /etc/exports : 修改为任何ip地址可以访问*(), 修改根文件系统的目录
重启NFS : /etc/init.d/nfs restart
arm linux内核 java arm linux内核编译文件系统
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章