




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式Linux内核裁剪与系统构建实验一、实验目的1、了解linux内核裁减过程,掌握内核的编译方法及在开发板下如何运行一个内核。2、学会基于busybox的根文件系统的制作。3、熟悉开发板及uboot的使用。二、实验条件 IBM-PC兼容机 Redhat9.0或其他兼容的Linux操作系统 OMAP3730开发板三、实验原理1、 linux内核裁减编译:/见教材6.3.2 (第一版p126-p130,第二版p143-p147)2、 基于busybox根文件系统制作:见教材6.3.3 (第一版p131-p136,第二版p148-p154)3、 Uboot使用:参照附录一4、 内核裁剪编译参考步骤:参照附录二5、 根文件系统制作参考步骤:参照附录三6、 在开发板OMAP3730下运行内核参考步骤:参照附录四7、 OMAP3730开发板:四、实验内容与实验步骤1、 内核裁减编译。2、 基于busybox,制作根文件系统。3、 在开发板上运行自己裁减过的内核和文件系统。备注:本实验默认在ubuntu下进行,在其他版本的linux中操作基本类似。实验中用到的软件包均可在xmu_omap3730_lib1.tar.gz中找到。输入命令$ tar zxvf xmu_omap3730_lib1.tar.gz。注:这里的$,包括下文的#均表示一种系统用户权限,前者表示普通用户,后者表示超级用户;在ubuntu下可在命令前追加sudo命令来使用超级用户权限,在fedora下可输入su命令后,按提示输入密码即可切换超级用户。一般来说普通用户能做的超级用户均有权限做。解压后可看到如下几个文件或文件夹:artatr-desktop:/workdir/omap3730/lib_1$ lsarm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2busybox-1.18.2.tar.gzfileshellolinux-03.00.01.06.tar.bz2minicom-2.5.tar.gzMLOruntimelibu-boot.binxmu_omap3730_lib1.tar.gz五、实验报告要求实验报告中要包含以下几个部分:1、实验目的2、实验条件3、实验原理4、实验步骤分析5、实验结果与总结实验步骤要详细,关键步骤要有截图,运行结果也要有截图。内核配置要求列出选择的内核配置选项,并说明它的功能。说明编译出来的内核文件uImage大小附录一u-boot命令简介:printenv 用来打印u-boot中正在使用的所有环境变量(包括未保存的),可不带参数setenv 用来设置一个环境变量,参数用空格隔开。例如 setenv bootdelay 2saveenv 用来保存环境变量,无参数tftp 用来从tftp服务器下载文件,通常用来下载内核,initrd,以及bootloader自身。例如 tftp 31000000 uImage,即把tftp服务器上/arm-zznux/tftpboot/uImage文件下载到内存的0x31000000地址nand 用来执行nand flash操作,这个命令有几个子命令nand scrub nand flash low-level clean-upnand erase 用来擦除nand flashnand bad 用来显示nand flash的坏块列表nand read 用来把nand flash上的数据读入内存nand read.jffs2 同nand read功能一样,差别在于会自动跳过坏块nand write 用来把内存数据写入nand flashnand write.jffs2 同nand write功能一样,差别在于会自动跳过坏块使用实例:nand erase 44000 400000 擦除自0x00044000开始,长度是0x00400000字节的nand flash区域nand write 2000000 44000 400000 将内存地址从0x02000000开始长度为0x00400000字节的数据块拷贝到nand flash中从0x00044000开始的位置nand read 2000000 44000 400000 将nand flash中从0x00044000开始长度为0x00400000 字节的数据块拷贝到内存中从0x02000000开始的位置bootm 用来加载前面提到u-boot特有的uImage格式文件。该文件可以是linux内核,initrd,甚至是VxWorks操作系统镜像。u-boot会自动按照正确的方式处理。bootm 2000000 即是加载存放在内存地址0x02000000中的uImage文件md 用来显示内存的数值,例如md 2000000 即是显示自0x02000000开始的内存内容reset 用来复位开发板(如果该开发板支持)u-boot环境变量简介:baudrate 用来设置终端的串口波特率ethaddr 用来设置网卡的MAC地址ipaddr 用来设置开发板ip地址serverip 用来设置tftp下载使用的服务器地址netmask 用来设置开发板的ip地址子网掩码bootdelay用来设置开发板自启动读秒时间bootcmd用来设置开发板自启动时执行的命令bootargs用来存放通过bootm命令启动linux内核时,传递给内核的参数附录二内核裁剪编译参考步骤注:以下命令的初始位置在xmu_omap3730_lib1.tar.gz的解压文件夹下输入一、先构建交叉编译器用到的是arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2压缩包。/来源光盘,做法的目标1) 在/usr/local/目录下面创建文件夹arm命令为:#mkdir /usr/local/arm2) 解压编译器到/usr/local/arm目录下。命令为:#tar jxvf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C /usr/local/arm3) 设置环境变量命令为:#export PATH= /usr/local/arm/arm-2009q1/bin:$PATH4) 查看环境变量命令为:#echo $PATH若能看到/usr/local/arm/arm-2009q1/bin:表示添加路径成功。可输入arm-none-linux-gnueabi-gcc v,若能看到版本号则证明安装成功。二、内核编译用到的是linux-03.00.01.06.tar.bz2 /改+概述1) 解压linux内核压缩包$ sudo tar jxvf linux-03.00.01.06.tar.bz2 $ cd linux-03.00.01.062) 配置编译清除原配置:$ make ARCH=arm distclean载入设置好的配置文件:$ make ARCH=arm omap3_stalker_defconfig/主要选项有哪些,截图在这一步,如果对内核感兴趣的同学可以输入命令make menuconfig或make xconfig来查看具体的配置信息编译内核:$ make ARCH=arm 生成所需的uImage:$ make ARCH=arm uImage 编译成功后就可以在linux-03.00.01.06/arch/arm/boot目录下看到生成的uImageatrart-desktop:/workdir/omap3730$ ls linux-03.00.01.06/arch/arm/boot/bootp compressed Image install.sh Makefile uImage zImage 附录三根文件系统制作参考步骤注:以下命令的初始位置在xmu_omap3730_lib1.tar.gz的解压文件夹下输入配置并编译busybox解压busybox压缩包:# tar zxvf busybox-1.18.2.tar.gz# cd busybox-1.18.2修改交叉编译器:/在配置中改# gedit Makefile浏览busybox 默认配置,并修改如上图164 行所示内容,即在CROSS_COMPILE ?=后面添加arm-none-linux-gnueabi-载入默认配置:# make defconfig/具体,详细配置放在附录这一步可输入make menuconfig或者make xconfig查看具体的配置信息,感兴趣的同学可自行尝试。如果修改了配置,可以将.config 文件保存下来,用来恢复自己的配置。附录五中有对busybox配置进行一个简略的介绍。编译busybox# make# make install编译结果会存放到busybox-1.18.2/_install 目录下。复制运行时刻库到生成的文件系统中# cp ar ./runtimelib _install/lib在文件系统中建立必要的目录# cd _install# mkdir root dev home sys etc etc/init.d proc tmp在相应目录中手动建立配置文件,请查看files 目录,这些文件原本需要手动编辑输入,其中在子目录init.d 中的文件rcS 需要被设置可执行属性。将这些文件复制到目的文件系统中。# cp av ././files/* etc构建根文件系统dev 目录# cd devlinux 至少需要用到null 设备节点# sudo mknod null c 1 3后面init 启动时候inittab 配置需要设置console,保证控制台输出和命令行输入# sudo mknod console c 5 1# cd .在dev下应该能看到两个文件:atratr-desktop:/workdir/omap3730/busybox-1.18.2/_install $ ls devconsole null/将当前目录下所有文件及目录的属主和属组改为root# sudo chown -R root:root . 输入ls l,可以查看是否更改成功,上图就是更改成功了。在busybox 执行时把进程的属主或属组ID 置为该文件的文件属主# sudo chmod +s ./bin/busybox 至此,我们的文件系统已经准备好了。可以查看busybox-1.18.2/_install文件夹中的内容:atratr-desktop:/workdir/omap3730$ ls busybox-1.18.2/_install/bin dev etc home lib linuxrc proc root sbin sys tmp usr附录四在开发板上运行编译好的内核和文件系统注:以下命令的初始位置在xmu_omap3730_lib1.tar.gz的解压文件夹下输入/不使用SD卡1) 将实验用SD卡插入SD卡读卡器,如果此时读卡器插在开发主机的USB 接口上,操作系统窗口桌面上会显示此卡上的两个分区图标:boot 和rootfs。2) 将MLO、u-boot.bin和刚才生成的uImage拷入SD卡上的boot分区# sudo cp MLO u-boot.bin /media/boot上面编译生成的uImage在linux-03.00.01.06/arch/arm目录下# sudo cp linux-03.00.01.06/arch/arm/uImage /media/boot此时boot分区里应该有:atratr-desktop:/media/boot$ ls /media/bootMLO u-boot.bin uImage 3) 复制文件系统:# sudo cp ar busybox-1.18.2/_install/* /media/rootfs此时rootfs分区里应该有:这样SD卡上的系统就制作完成了,下面准备上电测试。从Ubuntu 系统中卸载SD 卡(右键单击桌面分区图标,在弹出的菜单中选中“卸载文件卷”),从SD 卡读卡器上取出SD 卡,插入断开电源的开发板上SD 卡插座中。在断电情况下连接串口J12 到开发主机COM1。/目的在开发主机上安装minicom,在Ubuntu上输入命令sudo apt-get install minicom,在Fedora上输入命令yum install minicom即可自动联网安装minicom若无法上网,可用提供的minicom-2.5.tar.gz安装包,在minicom-2.5.tar.gz所在文件夹目录位置输入命令:# tar zxvf minicom-2.5.tar.gz# cd minicom-2.5# ./configure# make# make install即可安装minicom。可通过输入minicom v命令测试是否安装成功,若成功应该可以看到版本号:安装好后即可开始调试了输入minicom s后可以看到:选择“串口设置”按上图修改配置。输入对应字母可修改对应选项,回车确认。/按键选择回车确认后,选择“设置保存为dfl”“退出”串口配置完成,接通开发板电源,观察minicom窗口中的显示下文是一种显示情况:Texas Instruments X-Loader 1.4.4ss (Jul 21 2011 - 11:49:14)OMAP3630/3730-GP ES2.1Reading boot sectorLoading u-boot.bin from mmcU-Boot 2009.11 ( 7鏈?21 2011 - 12:01:24)OMAP34xx/35xx-GP ES2.1, CPU-OPP2 L3-165MHzOMAP3 SBC3530 + LPDDR/NANDI2C: readyDRAM: 512 MBNAND: 512 MiBIn: serialOut: serialErr: serialEthernet MAC address: 02:0d:04:02:50:0bDie ID #567000229e3800000163810d0402500bNet: smc911x-0Warning: smc911x-0 MAC addresses dont match:Address in SROM is ff:ff:ff:ff:ff:ffAddress in environment is 02:0d:04:02:50:0bHit any key to stop autoboot: 0 mmc1 is availablereading boot.scr* Unable to read boot.scr from mmc 0:1 *reading uImage2912216 bytes readBooting from mmc .# Booting kernel from Legacy Image at 82000000 . Image Name: Linux-2.6.32 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2912152 Bytes = 2.8 MB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum . OK Loading Kernel Image . OKOKStarting kernel .Uncompressing Linux. done, booting the kernel. 0.000000 Linux version 2.6.32 (realtimedspatr-desktop) (gcc version 4.3.3 (Sourcery G+ Lite 2009q1-203) ) #1 PREEMPT Thu Jul 21 12:19:24 CST 2011 0.000000 CPU: ARMv7 Processor 413fc082 revision 2 (ARMv7), cr=10c53c7f 0.000000 CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache 0.000000 Machine: OMAP3 STALKER 0.000000 Memory policy: ECC disabled, Data cache writeback 0.000000 OMAP3630/DM3730 ES1.0 (l2cache iva sgx neon isp 192mhz_clk ) 0.000000 SRAM: Mapped pa 0x40200000 to va 0xfe400000 size: 0x100000 0.000000 Reserving 12582912 bytes SDRAM for VRAM 0.000000 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 0.000000 Kernel command line: console=ttyS0,115200n8 vram=12M omapfb.vram-0 omapfb.mode=dvi: omapdss.def_disp=lcd070 root=/dev/mmcblk0p2 rw init=/init mpurate=1000 boardmodel=SBC35X-B1-1880-LUAC0 rootfstype=ext3 rootwait当出现 Please press Enter to activate this console. 后,敲回车ENTER即可进入系统。/统一命名至此,已经验证了我们制作的内核和文件系统可以工作。压缩包中另有一个名为hello的程序,有兴趣的同学可以拷入文件系统根目录下,然后进入系统后输命令./hello即可运行。附录五BusyBox的主要设定项目BusyBox的设定项目大致分以下两个:1、与BusyBox全体相关的设定2、选择具体的Applet(命令)首先在与BusyBox全体相关的设定中,有如下设定项目:o General Configuration确保缓存的方法,Usage信息的表示形式,是否有suid位,是否支持SELinux等的设定o Build Options是否静态地生成目标文件等编译相关的设置o Debugging O
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年戏曲艺术与表演技巧考试试题及答案
- 2025年摄影艺术专业考试试题及答案
- 2025年物流管理岗位考试试卷及答案
- 2025年商务英语翻译考试试题及答案
- 2025年城市规划师资格考试试卷及答案
- 2025年电商运营与市场推广考试卷及答案
- 2025年公共卫生与预防医学考试题及答案
- 2025年护理学专业毕业考试试卷及答案
- 2025年酒店管理专业考试题目及答案
- 数字化在小学教育的应用
- 北京市通州区2024-2025学年高二下学期期中质量检测数学试卷(原卷版+解析版)
- 心内科相关试题及答案
- 2025年江西省安福县事业单位公开招聘辅警36名笔试题带答案
- 2024年企业所得税年度纳税申报表(A类2017 年版2025年01月修订)-(2025 0323)
- 河南省豫西北教研联盟(许平洛济)2025届高三下学期第三次质量检测生物试卷+答案
- 竞业协议竞业限制协议书
- 2025年全国保密教育线上培训考试试题库附参考答案(培优)及答案详解1套
- 2025初级《银行业法律法规与综合能力》高分必会试题库1000题-单选500题
- 低值易耗品试题及答案
- 10.1 认识民法典 课件-2024-2025学年统编版道德与法治七年级下册
- 2025年新高考地区数学名校地市选填压轴题好题汇编(八)(解析版)
评论
0/150
提交评论