实验二 嵌入式程序的开发与根文件系统的搭建
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科实验报告课程名称:嵌入式
实验地点:软件楼210 专业班级:物联网学号:
学生姓名:
指导教师:
实验成绩:
2016年月日
实验二嵌入式程序的开发与根文件系统的搭建
一,实验目的
二,实验内容
三,实验资源
四,实验操作
1,编译busybox
A)修改Make file
B)make menuconfig 修改编译配置选项
C)make 时遇到的问题,解决方法
a)error: ‘SYS_ioprio_ser’ undeclared (first use in this function)
b)err or: ‘UBI_DEV_NUM_AUTO’ undeclared (first use in this
function)
在busybox-1.19.4/include 下面新建mtd 文件夹,并将ubi-user.h
复制到它里面
c)e rror: ‘ARPHRD_INFINIBAND’ underclared (not in a
function)
在interface.c 中添加#define ARPHRD_INFINIBAND 32
d)err or; elements of array ‘filter_instr’ have incomplete type
e)error: ‘GFP_KERNEL’ undeclared (first use in this function)
D)make install
E)修改_install/bin/busybox 属性
为什么要修改属性
保证busybox 中命令的级别,使它们在运行时不会受限
F)查看busybox 动态库
2, 制作initrd.img
A)创建映像文件
1)fa355@fa355-desktop:~/Desktop/share/busybox-1.19.4$ mkdir
initrd
2)udo dd if=/dev/zero of=initrd.img bs=1k count=8192
3)sudo mke2fs -F -v initrd.img
4)sudo mount -o loop initrd.img initrd
5)cd initrd
B)添加busybox 到此映像文件
1)sudo cp –r ../_install/* .
C)添加动态库
1)sudo mkdir lib
2)cd lib
3)sudo cp /usr/local/arm/3.4.1/arm-linux/lib/ld* .
4)sudo cp /usr/local/arm/3.4.1/arm-linux/lib/libc-2.3.2.so .
5)sudo cp /usr/local/arm/3.4.1/arm-linux/lib/libc.so.6 .
6)sudo cp /usr/local/arm/3.4.1/arm-linux/lib/libm* .
7)sudo cp /usr/local/arm/3.4.1/arm-linux/lib/libcrypt* .
D)创建必要的目录
1)fa355@fa355-desktop:~/Desktop/share/busybox-1.19.4/initrd$ sudo
mkdir proc lib etc dev root home var tmp
2)chmod 777 tmp
3)cd dev
4)sudo mknod -m 644 console c 5 1
5)sudo mknod -m 644 null c 1 3
6)sudo mknod -m 640 ram b 1 1
7)sudo mknod -m 644 mem c 1 1
8)cd ..
E)创建脚本文件
1)sudo touch etc/inittab
2)输入内容
3)设置权限
F)交叉编译helloworld并复制到initrd/home/
/usr/local/arm/3.4.1/bin/arm-linux-gcc helloworld.c –o helloworld
G)生成initrd.img
1)cd..
2)sudo umount initrd
3, 测试initrd.img
A)执行skyeye –e vmlinux
B)Skyeye 启动后,在home目录下执行 ./helloworld
C)结果
4,利用现有initrd.img 生成所需要的根文件
如何扩充initrd.img 大小?
五,实验总结
1, 实验制作initrd.img 部分,由于对相应目录不清楚导致制作错误。
2, 测试initrd.img 时,误将程序最后执行错误当作程序错误,认为Skyeye 未成功启动,浪费大量时间,试图解决错误,最终还是未成功解决can’t access tty。
3,添加动态库时,未添加ld-2.3.2.so 导致出现找不到init 的错误。