已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Linux内核定制X86平台的微操作系统摘要:10前言20.1Linux系统简介20.2Linux的基本思想20.3Linux内核20.4Linux内核版本命名30.5Linux文件系统30.6Linux内核引导40.7Linux系统组成41平台的搭建41.1硬件平台41.2软件平台41.2.1Ubuntu系统的下载41.2.2Ubuntu系统的安装41.2.3Ubuntu系统的配置42Linux内核的编译52.1内核的下载52.2内核的定制52.3内核的编译52.4内核的制作63BusyBox的编译63.1BusyBox的下载63.2BusyBox的配置63.3BusyBox的编译74Linux文件系统的制作74.1文件系统的制作74.2文件系统的配置94.3文件系统的压缩75Linux引导程序配置105.1ISOLINUX的下载105.2ISOLINUX的配置106LinuxCD-ROM的制作107Linux定制系统的运行117.1VirtualBox下的运行117.2U盘引导在X86平台下的运行128定制系统过程中的问题128.1平台搭建中的问题128.2内核编译中的问题128.3BusyBox编译中的问题128.4文件系统制作中的问题128.5引导程序制作中的问题128.6CD-ROM制作中的问题138.7定制系统运行的问题13参考13基于Linux内核定制X86平台的微操作系统王林强(河南大学物理与电子学院通信专业,河南开封,475004)摘要:Linux是一种自由和开放,用C语言和汇编语言写成,并符合POSIX标准的类Unix操作系统。并且由于其可定制、可裁剪的特性,不仅在桌面操作系统中有重要的地位,而且在手机、平板电脑、路由器和视频游戏控制台等嵌入式设备有其巨大的优势。为了更好、更深入的了解及掌握Linux系统。本文详细的讲述并实践,如何从Linux内核源码,经过定制、裁剪、编译、制作文件系统、内核引导,iso光盘制作到最终完整的基于Linux内核定制的微操作系统。通过基于Linux内核定制的微操作系统的制作,深入的理解Linux内核的工作原理、文件系统结构、内核引导等,从而精通嵌入式开发。关键词:Linux;定制;嵌入式;微系统Animplementationofmicro-operatingsystembasedonthex86platformLinuxkernelcustomizationWangLin-qiang(SchoolofPhysicsandElectronics,HenanUniversity,HenanKaifeng475004,China)Abstract:Linuxisafreeandopen,andPOSIX-compliantUnix-likeoperatingsystemwritteninCandassemblylanguage.Andcanbecutbecauseofitscustomizablefeatures,notonlyinthedesktopoperatingsysteminanimportantposition,anditshugeadvantageintheembeddeddevices,mobilephones,tabletPCs,routers,andvideogameconsoles.InordertobetteranddeeperunderstandingofandmasterLinuxsystem.Thisarticletellsindetailandpractice,fromtheLinuxkernelsourcecodehasbeencustomized,cutting,compiling,productionfilesystem,kernelbootisoCD-ROMproductiontothefinalcompletecustommicro-operatingsystembasedonLinuxkernel.In-depthunderstandingoftheLinuxkernelworksthroughtheproductionofcustommicro-operatingsystembasedonLinuxkernel,filesystemstructure,coreguidance,soproficientinembeddeddevelopment.Keywords:Linux;customizable;embeddeddevelopment;micro-operatingsystem0前言Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。由于其免费、开源、可定制、可裁剪等特性使其在嵌入式领域获得巨大的发展,并占据大部分市场,深入的了解、掌握Linux的裁剪、定制、移植,对嵌入式更好的开发起着至关重要的作用,基于火热的嵌入式开发,未来市场中将需要更多精于Linux移植开发的工程师。0.1Linux系统简介Linux操作系统是一种自由和开放源码的类UNIX操作系统的一种克隆系统。它诞生于1991年的10月5日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今天世界上使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长,目前存在着许多不同的Linux,但它们都使用了Linux内核。Linux操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。目前,Linux的发行版有很多,如Ubuntu,RedHat,Debian,Fedora等等。0.2Linux的基本思想Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。0.3Linux内核Linux是最受欢迎的自由电脑操作系统内核。它是一个用C语言和汇编语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰黑客林纳斯.托瓦兹(LinusB.Torvalds)为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,在计划的早期有一些Minix黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。技术上说Linux是一个内核。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。0.4Linux内核版本命名版本的格式为A.B.C,其中A,B,C代表:A大幅度转变的内核。这是很少发生变化,只有当发生重大变化的代码和核心发生才会发生。在历史上曾改变两次的内核:1994年的1.0及1996年的2.0。B是指一些重大修改的内核。内核使用了传统的奇数次要版本号码的软件号码系统(用偶数的次要版本号码来表示稳定版本)。C是指轻微修订的内核。这个数字当有安全补丁,bug修复,新的功能或驱动程序,内核便会有变化。自2.6.0(2003年12月)发布后,人们认识到,更短的发布周期将是有益的。自那时起,版本的格式为A.B.C.D,其中A,B,C,D代表:A和B是无关紧要的,C是内核的版本,D是安全补丁0.5Linux文件系统Linux继承了Unix操作系统结构清晰的特点。在linux下的文件结构非常有条理。/根目录|/bin存放二进制文件。|/boot存放Linux的内核及引导系统程序。|/cdrom挂载光驱文件系统。|/dev存放使用的外部设备。|/etc存放各种配置文件和子目录。|/home存放用户的主目录。|/lib存放系统动态连接共享库。|/lost+found存放意外崩溃和意外信息。|/mnt存放挂载储存设备的挂载目录。|/media挂载usb接口的移动硬盘。|/opt存放可选的程序。|/proc存放系统信息。|/root超级权限用户root的家目录。|/sbin存放系统管理员的系统管理程序。|/srv服务启动后,所需访问的数据目录|/sys一种虚拟的基于内存的文件系统。|/tmp临时文件目录。|/usr存放用户应用程序和文件。|/var存放系统日志。0.6Linux内核引导LILO(LInuxLOader),LILO代表Linux加载程序。LILO是一个在系统启动时运行的程序,它允许选择用于引导计算机的操作系统。GNUGRUB(简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。0.7Linux系统组成引导程序+Linux内核+文件系统=微Linux操作系统1平台的搭建Linux定制平台的正确选择、配置、安装、调试将为下面的系统制作提供有力的保证。并减少制作过程中问题发生的几率。1.1硬件平台处理器:Intel?Atom?CPUN4501.66GHz2内存:992.8M硬盘:WDCWD1600BEVS-00RST01.2软件平台本次平台采用采用XP+Ubuntu12.04双系统。系统1:MicrosoftWindowsXPProfessional2002ServicePack3系统2:Ubuntu12.041.2.1Ubuntu系统的下载请注意选择与自己硬件匹配的版本。本次平台的Ubuntu下载地址:/12.04/ubuntu-12.04-desktop-i386.iso1.2.2Ubuntu系统的安装Ubuntu12.04使用U盘安装双系统,并合理分区。正确安装之后的系统信息:版本12.04(precise)32位内核Linux3.5.0-rc1GNOME2.4.1内存:992.8M处理器:Intel?Atom?CPUN4501.66GHz2可用的磁盘空间:6.7GB1.2.3Ubuntu系统的配置装完双系统后,启动进入Ubuntu12.04,打开终端获得root权限:sudosu然后安装编译内核时需要的工具:apt-getinstallbuild-essentialkernel-packagelibncurses5-devlibqt3-headersbuild-essential(基本的编程库(gcc,make等)kernel-package(系统里生成kernel-image的一些配置文件和工具)libncurses5-dev(mekemenuconfig要调用的)libqt3-headers(makexconfig要调用的)注:其它工具在升级过程中可以按提示安装2Linux内核的编译Linux内核的编译是系统定制与裁剪的关键。要充分考虑系统所满足的硬件要求及限制,编译出最佳内核,充分发挥硬件和Linux内核的特性。2.1内核的下载本次定制使用当前最新的Linux3.5.0内核,可根据实际情况合适选择内核版本。Linux3.5.0内核的下载地址:/pub/linux/kernel/v3.0/testing/linux-3.5-rc1.tar.bz22.2内核的定制1:首先在终端下获得root权限sudosu2:把下载的内核源文件拷贝到/usr/src目录下cp/home/linux-3.5-rc1.tar.bz2/usr/src3:进入/usr/src目录cd/usr/src4:解压linux-3.5-rc1.tar.bz2在当前的目录下tar-jxvflinux-3.5-rc1.tar.bz25:解压后得到linux-3.5-rc1文件夹,文件夹内为内核的源代码,进入该文件夹cd/usr/src/linux-3.5-rc16:使用make命令进行内核定制makexconfig运行完后,会出现一个配置的窗口,然后按自己的定制要求对选项进行配置,此次定制的是微内核,故可不支持声卡、NFC等,主要配置CPU为Intel?Atom?CPU。配置完成后,选择file-saveas,默认保存为.config,选择save。2.3内核的编译1:进入linux-3.5-rc1文件夹,使用make命令开始编译bzImage内核文件(注意I为大写)。cd/usr/src/linux-3.5-rc1makebzImage根据电脑的配置情况,编译需要一段时间,编译成功后可在/usr/src/linux-3.5-rc1/arch/x86/boot找到生成的内核文件bzImage。2.4内核的制作1:对内核进行压制cp/usr/src/linux-3.5-rc1/arch/x86/boot/bzImage/root/vmlinuz后面制作CD-ROM时要用到vmlinuz,即定制成功的内核文件。3BusyBox的编译BusyBox是一个集成了一百多个最常用linux命令和工具的软件。BusyBox包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例如grep、find、mount以及telnet。有些人将BusyBox称为Linux工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了Linux的许多工具和命令,也包含了Android系统的自带的shell。其目标是在一张软盘上创建一个可引导的GNU/Linux系统,这可以用作安装盘和急救盘。3.1BusyBox的下载这里选择1.20.0版本BusyBox的下载地址为:/downloads/busybox-1.20.0.tar.bz23.2BusyBox的配置BusyBox的配置程序和linux内核菜单配置方式近似。1:在终端下进入root权限sudosu2:将下载的BusyBox源文件拷贝到/usr/src/busybox文件夹下mkdir/usr/src/busybox3:解压busybox-1.20.0.tar.bz2cd/usr/src/busyboxtar-jxvfbusybox-1.20.0.tar.bz24:进入新生成的busybox-1.20.0文件夹,进行BusyBox的配置cd/usr/src/busybox/busybox-1.20.0makemenuconfig弹出一配置对话框,并配置需要编译进busybox的功能选项。下面为必选项:ShowverboseappletusagemessagesRuntimeSUID/SGIDconfigurationvia/etc/busybox.confBuildBusyBoxasastaticbinary(nosharedlibs)Dontuse/usr配置好后,退出并保存。3.3BusyBox的编译1:开始编译BusyBoxmakemakeinstall编译好后在busybox-1.20.0目录下生成子目录_install,里面的文件./busybox|bin|linuxrc-bin/busybox|sbin其中可执行文件busybox在bin目录下,制作文件系统将用到_install下的文件。(注:由于GCC与BusyBox不能很好的兼容,会出现很多问题,请参看后面的BusyBox编译中的问题。)4Linux文件系统的制作正如前面介绍的Linux文件系统一样,无论多小的Linux系统也许具有一个文件系统。4.1文件系统的制作1:在/usr下建一个目录tmp用来装文件系统并建立文件目录sudosumkdir/usr/tmpcd/usr/tmpmkdiretcusrvartmpprochomerootdevetc、proc、dev是一定要建的,bin和sbin拷贝_install下生成的。2:拷贝busybox-1.20.0下的_install文件夹到rootfs下cp-R/usr/src/busybox/busybox-1.20.0/_install/*/usr/tmp3:在dev文件夹下建立设备文件名:cd/usr/tmp/devcp-R/dev/console./cp-R/dev/null./cp-R/dev/zero./4:建立etc目录下的配置文件需要建立的文件:busybox.confgroupinittabmotdpasswdresolv.confshadow-fstabinit.dissuemtabprofileshadow1)其中init.d是从busybox-1.20.0源代码目录下拷贝过来。cp-R/busybox-1.20.0/examples/etc/init.d/usr/tmp/etc/把init.d拷过来后要更改其中的文件rcs。chmodu+x/usr/tmp/etc/init.d/rcs用记事本打开rcs,并写入下面的内容:#!/bin/shmount-oremount,rw/bin/mount-a/etc/mtabechoechoechoechoecho-enttWelcomtoDead_AngelLinuxnhostnameDead_Angel保存并退出。2)busybox.conf是一个空文件.3)fstab的内容如下:/dev/fd0/ext2defaults00none/procprocdefaults00/dev/cdrom/mnt/cdromudf,iso9660noauto,owner,kudzu,ro00/dev/fd0/mnt/floppyautonoauto,owner,kudzu004)group的内容如下:root:0:root5)inittab的内容如下::sysinit:/etc/init.d/rcs:askfirst:/bin/shtty2:respawn:/bin/getty38400tty2tty3:respawn:/bin/getty38400tty3tty4:respawn:/bin/getty38400tty4#Stufftodowhenrestartingtheinitprocess:restart:/bin/init#Stufftodobeforerebooting:ctrlaltdel:/bin/reboot:shutdown:/bin/umount-a-r:shutdown:/bin/swapoff-aissueDead_AngelLinuxrelease0.16)motd的内容为空7)mtab的内容为空8)passwd的内容如下:root:0:0:root:/root:/bin/ash9)profile的内容如下:#/etc/profile:filefilefortheBourneshellsechoechoexportPS1=uhw$echoDonealiasll=ls-laliasdu=du-haliasdf=df-haliasrm=rm-iecho10)resolv.conf的内容如下nameserver211)shadow的内容如下:root1$adltAB9Sr/MSKqylIvSJT/:12705:0:99999:7:12)shadow-的内容如下:root1$DWU.tenP$B7ANiXoGoiZMwJR6Ih8810:12705:0:99999:7:4.2文件系统的压缩Linux初始RAM磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。initrd文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个initrdRAM磁盘卸载,并释放内存。在很多嵌入式Linux系统中,initrd就是最终的根文件系统。制作img映象文件:1:先返回我们的主目录cd2:建立一个8M的空间用来放我们的跟文件系统ddif=/dev/zeroof=initrd.imgbs=1kcount=81293:将它格式化为ext2的文件系统,然后挂载mke2fs-F-v-m0initrd.imgsudomkdir/mnt/initrdsudomount-oloopinitrd.img/mnt/initrd4:接着把我们做好的文件系统复制进去:sudocp-av/usr/tmp/*/mnt/initrd5:复制完后,卸载initrdsudoumount/mnt/initrd6:压缩根文件系统镜像:gzip-fv9initrd.imgmvinitrd.img.gz/usr/initrd.gz到此,我们的就完成了根文件系统的制作,/usr/initrd.gz将在制作CD-ROM时用到。5Linux引导程序配置ISOLINUX是专门用来引导可移动介质的轻量级引导程序,因为这样的介质通常不会固定只针对一种硬件。ISOLINUX其实是一个简单的Linux系统。5.1ISOLINUX的下载ISOLINUX的下载地址:/pub/linux/utils/boot/syslinux/syslinux-4.05.tar.gz5.2ISOLINUX的配置制作bootloader,因为我们用的是LiveCD,所以我们就选用isolinux作为我们的bootloader。1:下载好后,解压到/usr/isolinux目录下mkdir/usr/isolinuxtar-jxvfsyslinux-4.05.tar.gz/usr/isolinux2:建立一个临时文件夹,并把isolinux.bin拷进去mkdir-p/usr/tmpcp/usr/isolinux/syslinux-4.05/core/isolinux.bin/usr/tmp3:创建isolinux的配置文件gedit/usr/tmp/isolinux.cfgisolinux.cfg的内容是:DEFAULTvmlinuzinitrd=initrd.gzkernelvmlinuzappendinitrd=/initrd.gzload_ramdisk=1prompt_ramdisk=0ramdisk_size=60000rwroot=/dev/ram编辑好后保存退出。6LinuxCD-ROM的制作整合并制作LiveCD1:在root目录下创建以个透明片文件夹mkdir/root/tmp2:将我们定制的内核vmlinuz拷贝到该目录下cp/root/vmlinuz/root/tmp3:将我们制作的文件系统initrd.img拷贝到改目录下cp/usr/initrd.gz/root/tmp4:将我编写的引导文件isolinux.bin、isolinux.cfg拷贝到改目录下cp/usr/tmp/*/root/tmp5:生成iso文件mkisofs-oDead_Angel_linux_V1.10.iso-b/boot/tmp/isolinux.bin-c/boot/tmp/boot.cat-no-emul-boot-boot-load-size4-boot-info-table/home最后,在我们的home底下就生成了一个Dead_Angel_linux_V1.10.iso的光盘镜像,至此,一个基于Linux内核定制的x86平台微操作系统就制作好了。7Linux定制系统的运行用UNetbootin可以轻松的把Linux操作系统装进U盘,可将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区聘用人员合同范本
- 社群广告推广合同范本
- 2025年专升本体育专业运动训练学试卷(含答案)
- 物业签订车位合同范本
- 美甲店如何签合同协议
- 灯光音响租赁合同范本
- 酒厂窖池租赁合同范本
- 药品研发劳动合同范本
- 维修电脑劳动合同范本
- 监控合同增加补充协议
- 2025宁夏回族自治区大学生乡村医生专项计划招聘工作人员13人考试笔试模拟试题及答案解析
- 学校食堂满意度测评及管理方案
- 2025安徽清水街道招聘就业专干6人笔试考试参考试题附答案解析
- 2025云南楚雄州元谋县国有资产投资管理有限公司及所属子公司合同制员工招聘13人考试笔试备考试题及答案解析
- 小学语文教师素养大赛知识素养试题
- 北京市海淀区2025-2026学年高三上学期期中地理试题 含解析
- 施工现场安全事故应急预案
- 2025版疾病控制护理护士培训大纲
- 2025年中级消防设施操作员《理论知识》题库必做200题(含答案)
- 特种设备重大事故隐患判定标准
- 北京第十三中学分校2023-2024学年九年级上学期期中物理试卷
评论
0/150
提交评论