Linux内核配置编译与文件系统构建要点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux内核配置编译与文件系统构建
南京大学
黄开成101180046
2012.11.11
一:实验目的
1.了解嵌入式系统的开发环境,内核与文件系统的下载和启动;
2.了解Linux内核源代码的目录结构及各自目录的相关内容,了解Linux内核各配置选项内容和作用,掌握Linux内核的编译过程;
3.了解嵌入式操作系统中文件系统的类型和应用、了解JFFS2文件系统的优点及其在嵌入式系统中的作用、掌握利用Busybox软件制作嵌入式文件系统的方法,并且掌握嵌入式Linux文件系统的挂载过程。二:实验环境说明
1.PC机使用openSUSE 14 Enterprise 系统。
2.开发板使用深圳市武耀博德信息技术有限公司生产的基于Inter 的PXA270处理器的多功能嵌入式开发平台EELIOD。
3.PC机通过RS-232串口与开发板相连,在PC机终端上运行minicom 程序构造一个开发板上的终端,用于对开发板的控制。
4.PC机与开发板通过ethernet网络相连接,并可在开发板上通过加载网络文件系统(NFS)与PC机通信。
5.Bootloader可以通过tftp协议从PC机上下载内核镜像和根文件系统镜像。下载目录为/tftpboot 。
6.用于开发板的Linux内核源码为linux-2.4.21-51Board_EDR,
busybox版本为busybox-1.00-pre5。
7.交叉编译器的路径为/usr/local/arm-linux/bin/arm-linux。
三:实验操作过程和分析记录
1.嵌入式系统的开发环境和开发流程:
1.1启动minicom和开发板
在PC机上打开一个终端,输入:
>minicom
按Ctrl+A-o进入minicom的configuration界面。对串行通信接口进行配置,串口设置为:/dev/ttyS0(串口线接在PC机的串口1上)、bps=115200、8位数据、无校验、无流控制。
然后打开开发板电源,看到屏幕有反应之后,按任意键进入配置界面,如果长时间没有按下任何键,bootloader将会自动从flash中读取内核和根文件系统并启动开发板上的Linux系统。
分析:嵌入式系统中,通常并没有像PC机中BIOS 那样的固件程序,因此整个系统的加载启动任务完全由bootloader来完成。bootloader的主要作用是:初始化硬件设备;建立内存空间的映射图;完成内核的加载,为内核设置启动参数。
按0进入命令行模式,出现51board>,可以设置开发板和PC机的IP 地址:
51board> set myipaddr 192.168.208.133(设置开发板的IP地址) 51board> set destipaddr 192.168.208.33(设置PC机的IP地址)注意IP地址的设置:使其处于同一网段,并且避免和其他系统的
IP发生冲突。
通过bootloader的主菜单可以完成很多功能,3——下载内核,4——将内核烧进flash,5——下载文件系统,6——将文件系统烧进flash,7——启动嵌入式操作系统等。
51board> tftp zImage kernel (下载内核)
51board> tftp ramdisk.gz ramdisk (下载文件系统)
51board> boot (启动系统,进入目标机终端)
1.2 NFS服务器架设
NFS是在不同机器不同操作系统之间进行网络共享文件的服务系统。在嵌入式系统中目标机可以将宿主机的共享文档挂载在自己的系统中,从而,目标机使用宿主机上的远端文件就像是使用自己本地的文件一样,有利于嵌入式开发。
# ifconfig eth0 192.168.208.133 (配置网络)
上面的eth0为接口名,eth0表示第一个以太网接口,如果使用其他网络接口,应做相应修改。
# mount 192.168.208.133:/exp /test -o nolock -o proto=tcp (将主机上的exp目录挂载到目标机的test目录上)
此时可以对主机上/exp目录下的文件进行操作,就像已经在制作的文件系统里面一样,便于以后开发程序的调试,不必每次都重新烧写文件系统。
1.3编写应用程序并在目标机上运行
编写简单的c程序hello.c:
#include
int main()
{printf(“hello,world\n”);
return 0;
}
然后在主机上用交叉编译器进行编译。
>/usr/local/arm-linux/bin/arm-linux-gcc-o hello hello.c
此外也可以设置好PATH环境变量以方便使用。
>export PATH=/usr/local/arm-linux/bin:$PATH
>gcc -o hello hello.c
将可执行文件hello复制到共享目录/exp,在目标机上运行hello #./hello
显示hello,world
1.4归纳总结嵌入式系统下软件开发的一般流程
PC机上编写软件代码并用交叉编译环器编译——制作内核和文件系统并通过串口完成下载——启动内核并借助于NFS文件系统进行程序测试——完成调试后,将可执行文件加入文件系统并运行。2.Linux内核配置与编译
本实验中用的内核源码是linux-2.4.21-51Board_EDR,在目录/usr/src/linux下。源代码树下有如下目录:arch(支持的微处理器体系结构),include(头文件),init(初始化代码),mm(内存管理代码),kernel(主要的内核代码),drives(所有的设备驱动程