- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验六 Linux内核编译
讲师:杨行
【实验目的】
1、掌握Linux内核编译
2、了解Linux内核Makefile
3、了解Linux内核Kbuild系统
【实验原理】
网站可以下载标准内核文件;
本次实验使用的内核源码详见,ARM裸板驱动开发课程所发的arm_linux文件夹;
编译内核
1 内核源码目录分析
2 内核编译主要过程;
du -hs linux-.tar.gz
tar xzvf linux--mini2440tar.gz -C /
find -name * | wc –l
tree
cp config_mini2440_w35 .config
make menuconfig
make zImage
3 编译主要过程讲解
将所有目标连接为: LD vmlinux
去除vmlinux生成纯二进制文件 OBJCOPY arch/arm/boot/Image
提示镜像文件编译生成 Image Kernel: arch/arm/boot/Image is ready
汇编编译程序启动头 AS arch/arm/boot/compressed/head.o
压缩源码Image: GZIP arch/arm/boot/compressed/piggy.gz
汇编编译产生压缩程序 AS arch/arm/boot/compressed/piggy.o
链接 LD arch/arm/boot/compressed/vmlinux
纯二进制文件生成: OBJCOPY arch/arm/boot/zImage
最终生成: Kernel: arch/arm/boot/zImage is ready
/linux-/arch/arm/boot$ du -hs Image
/linux-/arch/arm/boot$ du -hs zImage
4 运行内核
copy zImage 到tftpboot目录中;
tftp 下载zImage到0到0址后;
使用bootm 0启动内核;
查看内核是否可以正常启动;
未能启动内核的原因有两种:
第一种:未配置网络文件系统;
第二种:未正确设置u-boot启动参数;
4.1 配置nfs文件系统
1. sudo apt-get install nfs-kernel-server
2. sudo vim /etc/exports
+
/nfsroot *(rw,sync,no_root_squash)
3. sudo /etc/init.d/portmap restart
4. sudo /etc/init.d/nfs-kernel-server restart
5. showmount –e
切换到/home/spring/arm_linux/mini2440/src目录下:
6 sudo tar xvf nfsroot.tar -C /
4.2 设置u-boot的启动参数
在u-boot命令行模式下:
set bootargs root=/dev/nfs rw nfsroot=:/nfsroot ip=30 console=ttySAC0,115200
save
5 编写测试程序hello.c
#includestdio.h
int main()
{ printf(hello world!\n);
while(1);
}
5.1 在PC机上面编译hello.c
arm-linux-gcc –c helo.c –o hello.o
arm-linux-gcc hello.o –o hello
cp hello /nfsroot
5.2 在mini2440平台上后台运行hello,并使用命令杀死hello进程
/sq1415 # ls
hello
/sq1415 # ./hello
/sq1415 # hello world!
/sq1415 #
/sq1415 # ps -a |grep hello
729 0 0:50 ./hello
731 0 0:00 grep hello
/sq1415 # kill -9 729
/sq1415 # jobs
[1]+ Killed ./hello
/sq1415
文档评论(0)