构建小型嵌入式Linux系统_第1页
构建小型嵌入式Linux系统_第2页
构建小型嵌入式Linux系统_第3页
构建小型嵌入式Linux系统_第4页
构建小型嵌入式Linux系统_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Linux 系统焦扬2008.6.20目录 TOC o 1-5 h z HYPERLINK l bookmark2 o Current Document 编译linux 最小内核 3准备内核源码 3 HYPERLINK l bookmark4 o Current Document 配置内核 4 HYPERLINK l bookmark28 o Current Document 内核配置结果 14内核配置总结 15 HYPERLINK l bookmark32 o Current Document 用 busybox 制作 linux 根文件系统16 HYPERLINK l bookmark34

2、 o Current Document 配置编译 busybox 17 HYPERLINK l bookmark65 o Current Document 创建rootfs文件 23 HYPERLINK l bookmark94 o Current Document 构建rootfs 总结 27总结 28系统要求:qemu模拟X86体系shell界面 支持网络 系统越小越好2) Linux 内核 +rootfs (使用busybox)基本步骤:1 ) 编译 linux 最小内核得到 arch/i386/boot/bzImage 文件2 ) 用 busybox 制作 linux 根文件系统roo

3、tfs1 编译 linux 最小内核选用linux-2.6.23内核在编译linux内核之前,首先要确定自己的需求,需要让内核支持什么硬件, 支持多少种分区类型和文件系统, 支持哪些网卡 , 支持哪些网络协议。编译最小内核的目的就是把自己需要的功能编译进去或者编译成模块, 把不需要的裁剪掉。 这也体现了 Linux 的最主要的特点就可裁剪。由系统要求所知:所需要的硬件为X86体系,shell界面,支持网络等,那么我们就进入linux 内核的编译过程中去。现在手头上只有linux-2.6.23.tar.gz (如果没有或需要其他版本需自行下载) ,这已经足够了。准备内核源码# tar - zvx

4、f linux-2.6.23.tar.gz在当前目录下会出现一个linux-2.6.23 目录。如果打算把linux-2.6.23.tar.gz 解压到指定目录下。比如在主目录下建一个文件夹为 workplace,那么 # tar zvxf linux-2.6.23.tar.bz - C/home/rtos/workplace 。那么就把它解压到指定的文件夹 workplace里了。配置内核cd linux-2.6.23 /进入linux-2.6.23 目录make allnoconfig /这一步的目的是把内核配置的所有选项都不选择make menuconfig / 选择系统所需要的最小配置

5、make / 编译内核在配置选项时则需要使用空格键进行选取。在每一个选项前都有个括号 , 但有的是中括号有的是尖括号,还有一种圆括号。 用空格键选择时可以发现,中括号里要么是空,要么是“ * ”,而尖括号里可以是空,“*” “m,这表示前者对应的项要么不要,要么编译到内核里;后者则多一样选择, 可以编译成模块。而圆括号的内容是可以在所提供的几个选项中选择一项。选择相应的配置时,有三种选择,它们分别代表的含义如下:Y将该功能编译进内核N不将该功能编译进内核M将该功能编译成可以在需要时动态插入到内核中的模块在编译内核的过程中, 最烦杂的事情就是这步配置工作了, 有些 甚至都不清楚到底该如何对这些选

6、项进行取舍。实际上在配置时,大 部分选项可以使用其缺省值或者不选,只有小部分需要根据用户不同 的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用 的部分功能代码编译成为可加载模块, 有利于减小内核的长度,减小 内核消耗的内存,简化该功能相应的环境改变时对内核的影响; 不需 要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直 接编译到内核中。make allnoconfig这一步把内核配置的所有选项都不选择。如图1可以看到所有的选项都没有被选中II TOC o 1-5 h z lopy Ikvice t Mil1tI ji t 111 th I port supper I 1

7、-ork tlev i,心* Aiec dm i re t ATAPI / Xf W J. support mid Pa ru 11 r I ATA cipirr iiYtnid I) dr et Jdev lees r 1 ( RAI amiR.uinlumh J ek ice 41 | I VtrF I J 1el ephuiiy u)pir 1- -)Inpti I dtv i ct: Ktippui )hut sc i vr d erv i cv一“ 一 :I2C vtippor t )I get supply cl o k x iippar 1 I ifd F岫 111,-tl, x

8、(kppNo t jiimJ ia mpkiG tuppor l xsiind I-1D U:!11(SB bUppBt r )/5H card itjppor I 1EI uppur l fea Tinu Clock IHiinc kuppat i )i r i ut 1 i fa i i on 1 titrT bpace F /I)= 一,下面就要开始具体的配置内核选项,make menuconfig后出来配置界面。如图2所示:图2General setup -这里面什么都没有选择,具体选项内容就不再赘述Enable loadable module support -这个选项可以让内核支持

9、模块,模块是一小段代码,编译后可在 系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某 种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以 减少内核的体积。在运行时可以加载它到内核中去,在不需要时还可以移除它。同样都没有选择。Enable the block layer -这个选项也是什么都没有选Processor type and features -主要进行以下两项的选择:Subarchitecture Type (PC-compatible) -这是一个比较新的特性,主要的目的是使 Linux可以支持多种PC 标准,一般我们使用的PO是遵循所谓旧M兼容结构(pc/at

10、)。这个选 项可以让你选择一些其它架构。我们一般选择 PC-compatible就可以 了。如图3所示:图3Processor family (386)-选择 cpu类型,如果想让老至 386,新到P4白CP邮能运行最小系统,那么就选择386CPU否则按自己 的实际情况选择。如图4所示:L str 1the Ei f I uU ku、 I u V it v this Wlp f e the hi口 I keV v 1Ihtf i tyuu yh lu WmcM ft) 1 |dmlI try the SIW t fW - lYt?!. b fu r add i I i i rf vi L iu

11、rTr W* en i iuttt Ir uQ这个里面的其他选项都没有选择。Power management options (ACPI, APM)-没有选择Bus options (PCI, PCMCIA, EISA, MCA, ISA) -没有选择Executable file formats -* Kernel support for ELF binaries这个一定要选择,如果不选择,会使相当多的程序无法执行。Kernel support for a.out and ECOFF binariesa.out的执行文件是比较老的可执行代码,用在比较早期的UNIX 系统上。Kernel su

12、pport for MISC binaries可以让你支援别的种类的binary执行档(如:Java、Python .etc )这两项都不选。如图5所示:Networking support -Networking support -这个下面是选网卡驱动* Networking support网卡驱动,要选如图6所示:图6Networking options - Packet socket让kernel支援packet的传输,当然要选,其他选项如图7所示:I he nvnu, sc led i uhntTm, . Hi *ti n |rt. 1 txl J r 111 r s rr RuEKt

13、?、r, l*ir IP in c lu cii, lor ttlpd fuiLfrnd; bui 11 - in tr* eluded ni 1 ur 1 n inter taeu(Pt advnn*riJ 产分 11/Q-d ion ron t r fp I - ht? Ilii pTQimlecur 1 iy Mbs k jn/N i*fc*urk pa ktr 1 I 1 Mei in t i .irwwor k ZKi*2, Ir Rilivim i Ik j Jiji班丘, 11 U,AN Suppor sI ECfitf I Suppaf,N?l / I FEE 802 ,J I

14、JX 1yptfc 2 Supper tTh卷 I PX prolocolppIe 1 a Ik prQiutnl /ippmr t(S and/ar fa it quiMiein iwork letl in图7Device Drivers -ATA/ATAPI/MFM/RLL support - 这个必须要选 Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support 增强 型设备支持的设备,除非不需要 MFM/DLL/IDEg盘的的支持,否则就应该回答丫。 Include IDE/ATA-2 DISK support除非你都用 SCS酷置,不然就

15、开这项,也可以提升效能。 generic/default IDE chipset support普通 IDE芯片组支持,应该选择如图8所示:图8SCSI是一种并行接口标准,是一个通用接口,可以连接各种外围硬 件。SCSI存储设备再嵌入式系统上应用比较少见,在高可靠性的网 络存储设备和服务器上常用。它与ATA/ATAPI都是磁盘设备类型。ATA 习惯上叫IDE接口。ATAPI是扩展的ATA接口。和SCSI的有关的选项一概没选。* Network device support 选择自己合适的网卡* Ethernet (10 or 100Mbit)如图9所示图9Character devices *

16、 Legacy (BSD) PIY support这个必须选,否则X里的任何终端都大不开在Device Drivers里其它选项就不选择了file systems - Second extended fs support口 Ext2 extended attributesExt2 POSIX Access Control Lists口 Ext2 Security Labels在文件系统里,只选择了 ext2这种格式的文件系统,如图10所示:T?SDJ t? 11: 1 vndtd a I I r ibultIt t2 i-verule in plf献 iippnr t- 13 j put du

17、 11 in. file 冷门中m supper1ti n t、nuppor lFS f % Ilem uppor IFS fi I r s si f rn Mjppor Is i rin !uppcjr in.-1 I fy 1111 rhan/c nu i i fi |fen i i in ujipur uu 1 u hupps” i, vr n.?l an i n mu in i vr 上” ppiu 1%0)iippor I b v31mi?Ih r i er 4 HUppn r i aiiibykifE in UM-r sparv -iipior t Fy Rf MDVD Fili?

18、 ke (E/FAT/NT Fi lesytr )f Ii lew工 1thg 一3K口 kire 1 .口sun liM到rgien -7N t wi k F i II t? Sv & i vms -f art l.图10其它内核配置如:Kernel hacking -Security options -Cryptographic options -Library routines -都没有选择选择完后,exit# makemake后的结果如图11所示:r-c行/X工 CJL工 frrn c A f 4 c JJK - t c t Inh,it / nvnvry - n口h,i 寿6月口口

19、t r pin n rcli/i 3S/borch/i 3s(?/botj I / upu I fCRJUFY aTdi/iS/bwl/vrrup.bin 2 a,h / itmnpr l % /h tsu*. oCCArch/ i翼6FI,0iifcvnprseroCB.KIPY a rch/ 1 -ibflioot Arorq-re/vni inu、. bin (卫IPhth J i :猫柠fhnn t /(?jnpr t nJ,vml i nu、/,in.中LOarch y i 366/U-2. b, 23$ 图11编译成功,没有错误。期间极有可能有错误,所以需要反复,即使侥幸没有错误也

20、不代表内核可以适用,后面会有例子为证。内核配置结果得至U arch/i386/boot/bzImage 文件,# du - sh bzImage 看看它的 大小,如图12所示:bzImage为784KB为方便使用可以把它拷贝到 主目录下。I。萌EIM 1 imn-211g.23$ du ah arch/16/buut/bzIrmjre 784 Karrh/i388/ boo i/bilrwjre(rI)nu-2. 6.23 $ 图12内核配置总结(1)在做这个系统之前,我做了内核的配置与安装。用的是 kernel-269-67.0.15.EL.src.rpm,随后配置这个的最小内核时花费巨大的

21、时间与精力,查阅了很多资料与文档,对内核诸多选项也有 了大致的甚至详细的了解,但仍出现一些错误,至今未能排除,这个 过程花费一周。然后转向配置 linux-2.6.23,进展较为顺利,得到784kB的bzImage。期间彳#到的bzImage大到6.5MB (默认情况下), 小到612KB (未能实现要求功能)。2.6内核在make allnoconfig 的 情况下产生的bzImage为504KB虽然并不知道最小bzImage到底有 多小,但是由此可以得出 612KB还是小了点,这个bzImage在qemu 上能运行但是没有实现所要求的网络功能。后来发现这个612KB的bzImage在内核配

22、置时确实有很多需要加进去的选项没有加进去。(2)在多次的配置时对 make menuconfig的反复敲打,深感厌 烦,于是把make menuconfig设成命令自动补全,方法如下:进入主目录:# cd # vi .bashrc输入 complete - W menuconfig make wq保存后退出.bashrc文件包含专用于bash shell的bash信息,当登录时以及每次打开新的 shell 时, 该该文件被读取。下次再 make menuconfig 时,只需键入 make m 按 Tab 键即可命令补全。(3)配置内核选项的参考资料详见Linux kernel 2.6 配置指

23、南 作者:王旭东。2 用 busybox 制作 linux 根文件系统Linux 的根文件系统具有非常独特的特点,就其基本组成来说,linux 的根文件系统应该包括支持linux 运行的基本内容,包含着系统使用的软件和库, 以及所有用来为用户提供支持架构和用户使用的应用软件。因此,至少应包括以下几项内容:基本的文件系统结构, 包含一些必需的目录比如: /dev /bin /proc /etc /lib /usr /tmp 等。基本程序运行所需要的库函数,如 Glibc 或 uClibc基本的系统配置文件,比如 rc,inittab 等脚本文件。必要的设备文件支持: /dev/hd*,/dev/

24、tty*,/dev/fd0 。5基本的应用程序,如sh, ls , cp, mv等。下面将对制作linux 根文件系统做具体的分析:配置编译 busybox选用版本为 busybox-解压 # tar jxvf busybox-1.221.tar.bz2对busybox进行配置make menucconfig,出现如图13所示的界面| e r te led i 占 Mr 尤 nu%Hi/hli 热 itcJ Lei i tr s a rr hulk分口. Preii irp ”, for 接 lp. for cb . * fra ui e i be! ec ltd ( 1 1 t

25、u nIIRuqfbo- SirliiuLAppl M Mrch iviI Uii H1i 八 tr tv I t I k 所eo M Ui i I i t M t?li an Ul i I 1111 5 di I or ti - i nd i n固 Ut i J i 1 111 门】t UI I L I L七二 一一a/in/l*a viurd inti/L:nvn I Ui l 11 n rinm 12 FS Fr ugk Etn 5W u I r Ui i 1 i i i c i nm 5y k t vn Ui i 1 i I i V *X、c u I I a nrdu U H I i

26、I i ? h, TOC o 1-5 h z 、1wnrkinf Uti)i rucvsm Ut i lit ii r 1* - *),匕11% y$ t 甘m Lu/HinF Ui i I i I i f odd an AllerniConfiura 11on Filejy& tin I i/lira t ion Io an V trrn tij Hi I r图13Busybox Setting -General Configuration -里面选上如图14所示的几个选项5nt-v r &el tLibrvunuy 一. lb |fh I i ml lei i r & !? hoi kty

27、 . Frnj( H B婚I匕 i .? fur 1L11 p R,tor Search. LeperiJ: * ft eat Lire it 1 ee ifd lea 1 ur e iSee |al k iwre prabablY umec雷备) can f ifur allm op I toiiKp h w A -弋 gpplyi 产 E-Ka/w*1 t &w erbur ;ippkt 心口产、rn?ii,a产、* ten史 ippLt UbJipu mit in 广门可丁砂*二1 lorm upperi - init) -1 )ta in I I apple i II ink 31 r

28、un 1 inv:ruble I scale support sy si em needii loci le for ihi s io mark)* iv ihe Je*prue/ m11/ext?J a lh la DjUbyll tve(?ulaL) f图14Build Options -Build BusyBox as a static binary (no share libs)这一项不选,即采用动态库的方式* Do you want to build BusyBox with a Cross Compiler?(/home/br/buildroot/build_arm/staging

29、_dir/bin/arm-linux-uclibc-) Cross Compiler 指定交叉编译器,即为利用 buildroot 构建 的交叉编译器路径。如15图所示:11 r 居 eltutm wuLnv 门 um* Hi 冲 lifted let t r r i are hotkey Prei n in 49 e|11 v far Hjlpt for Search. Levnd: (*) fe iure j b teleelud ( | lureui J rkjyEkji j a ta 1 iic Ij innr y nu* red 1 IL* UI Id hih.P r vJ I I

30、IjI*U hV boh.0lui Id ia】th Lnr/H Filr %u”ri I 打 arminwant m lmi)d BukyHvi wi th Qoss nnp if a I I sourres a t once图15Installation Options -注意选择*Don t use /usr,不选的话busybox将默认安装到/usr 目录下。将覆盖系统原有的命令。(./_install) BusyBoxinstallation prefix安装路径,执行 makeinstall 后会在 busybox-1.00 目录下生成_install 目录,包含了busybox编

31、译结果和相关的工具符号连接。这两项如图16所示:图16Busybox Setting -里的其它两项默认选择Applets下面的选项是一些应用程序可供选择Coreutils -里面的一些基本命令选项选择如图17所示h/p hmd howh eul k sursi呼uiniiP:汗i r tw ntos2um v /um 2dsu * deiiu 11 Li I ock i z e uf SI2 by I e i)cho ba bit SuS3 ei iiuri ukinir no opiiunx; tiuLI e tth。upiun% ( n and - envv I nvq Id h ad

32、h i 11Jm lul I ngh n agnantn 弓 LUT n J i r图17Init Utilities -一定要选中init 选项,如图18所不图18Linux Ext2 FS Progs -选择* mke2fs如图19所示:图19Networking Utilities -选择的选项如图20所示:ota11rpinp(1rwJ(1ihi-r- iwikw11ikeiden id(1Ipz1 !甲pul1 ih srnflintI 1(*1f-CuH 1 i /I 1na h 1 v h n i u h r 1 pD r tin/ uLitpuri k 7k 1nab 1si:

33、t ipt|Mci fic optionti1 ive nml* Olli t 1rn 里面选择ash,如图21所示hooiir your dv fauI I I ( nant?Ahh S| tr 1 (|i I tu11* ob ciintru I ( NtW1cd F N and md -5 uppqr 阳( t*ad t S support. ( I i 3 二 suppgM ( M*I* O3ih ite th uppor t ( MlWI lend p2it mi th upper l i-o M Oil ( SEWu)I i i(ii op i i o pn t 3 r pc),

34、i 。扑* 1 pv r arru i cf Nl,M*ui I tin ter.iuii df r(.bhi i MtWiui I un vur iuu u f t uI ( NFWi( uiiniuKl rurimiikl iu ot 11 r ide thc1l hui I 1 ii卜,MEMO(*Jhrrk tu: pivi tiu 1 un ii)live shrill htW叼p i I rtij Jv i ii t t tv ihUl1*4tj r 叩uud ( NIW(叫iHhirwndnin ”rwri tnr a rd v 3 r at j ) (j1 KEM(upjnd

35、pronpi sdrinR t MWI h sh* &h(n h Bourne MhM I C|ii 1 ont( I de n匕史 uu iiiiEFJCtiue Uitll “ariup- loihJfllune* ommiJ L fiv cd i 1 in1 hty 1 e I 1 ne t-d 111 rtunnbJtd b 1 NIMiCI 5 11 ilory i so 1 MiW) I lory m,1W州sh 臼叫(NWa nry、h J I pro传 1 4 NEW图21其它Applets选项都没有选择或默认选项配置完exit 后makemake install目录下_ins

36、tall 包含了 busybox编译结果和相关的工具符号连接cd _install可以看到 _install 目 录下的 bin sbin linuxrc#cd bin#cd sbin可以看到在busybox里编译进去的二进制可执行程序。如图22所下:11 lujsbaK- L 39.1 1 s“pl4H ti1 e . 1 vdhival ImawImic. 1 iiriktAJITtfJISIhi 叼huMjjnf I it ii i ull-.i -vLfliK-L2,2fc lS 词111*.in* *鼻 11 1 工r*hin/el 口/ Cunti/in产HlVh I 1 HA |

37、ns i 11/eoreuli1 r / lL i la U S ed t r v1*1 mJ * I. ( 1Imat 寸i 4 hilATM. Li n t I a . p /1U i n pi iy “ l h vigil iF-fijr t 1! *bi n $ 白eI u rd 1 nri nii t nkS Fiip nu91 jfriiJ ink f t v 12 nrkr iw nt* I I g.B cn 13 popirifr ci* f e r 1pT ff FB 上口。1tar 1ii, *:用亡 *. t”E dm,1 mjpr bC 1 uehiwpvf

38、 F1rur tly图22创建rootfs 文件1M大小的 rootfs.imgdd if=/dev/zero of=rootfs.img bs=1024k count=1(2)格式化为ext2文件系统:mkfs.ext2 -i 1024 -F rootfs.img默认每inode 8192字节,改为1024字节,可存放1024文件(3)挂载文件系统mkdir rootfsmount -o loop rootfs.img rootfs(4)拷贝文件到ext2文件系统中去rsync a busybox/_install/ rootfs/chown R root:root rootfssync /

39、 文件系统刷新同步(5)在rootfs 中添加设备mkdir devls -la /dev/tty* /查阅 tty 设备的主次设备号mknod tty0 c 4 0mknod tty1 c 4 1mknod tty2 c 4 2mknod tty3 c 4 3mknod tty4 c 4 4mknod tty5 c 4 5mknod console c 5 1mknod null c 1 3( 6)添加配置脚本文件mkdir etc添加 inittab/ 内容在 busybox 中的 /examples/bootfloppy/etc/inittab 有模板 , 可以拷过来直接用。在 etc

40、里 mkdir init.d在 init.d 里添加 rcS, 内容为:#!/bin/shmount -t proc none /procmount -t sysfs none /sys再 chmod a+x rcS如 图 23 所 示 , 可 以 看 到 /dev 、 /etc 目 录 下 的 内 容 以 及/etc/init.d/rcS 、 /etc/inittab 、 /etc/fstab 的内容moi Git I* tj i ne I r I i + t uundproc nb)n icy s ii*ttoo lE4EDl r aot TiJ* 匚J devr lj * kUt dc J Jl 3con(rou I -MM tlfv S rd . knj nr sro de inzr uh Ij * f ulukIru t i tilX k ni 1 .d R rd .riMi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论