基于X86裁剪小型linux系统_第1页
基于X86裁剪小型linux系统_第2页
基于X86裁剪小型linux系统_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、基于 linux 内核定制 x86 平台的微操作系统(2012-06-10 00:26:21)转 载标签:分类:linux 学习笔记杂谈摘 要: 10 前言 20.1 linux 系统简介 20.2 linux 的基本思想 20.3 linux 内核 20.4 linux 内核版本命名 30.5 linux 文件系统 3 0.6linux 内核引导 4 0.7linux 系统组成 41 平台的搭建 41.1 硬件平台 41.2 软件平台 41.2.1 ubuntu 系统的下载 41.2.2 ubuntu 系统的安装 41.2.3 ubuntu 系统的配置 42 linux 内核的编译 52.1

2、 内核的下载 52.2 内核的定制 52.3 内核的编译 52.4 内核的制作 63 busybox 的编译 63.1 busybox 的下载 63.2 busybox 的配置 63.3 busybox 的编译 74 linux 文件系统的制作 74.1 文件系统的制作 74.2 文件系统的配置 94.3 文件系统的压缩 75 linux 引导程序配置 105.1 isolinux 的下载 105.2 isolinux 的配置 106 linuxcd-rom 的制作 107 linux 定制系统的运行 117.1 virtualbox 下的运行 117.2 u 盘引导在 x86 平台下的运行

3、12 8 定制系统过程中的问题 128.1 平台搭建中的问题 128.2 内核编译中的问题 128.3 busybox 编译中的问题 128.4 文件系统制作中的问题 128.5 引导程序制作中的问题 128.6 cd-rom 制作中的问题 138.7 定制系统运行的问题 13 参考 13基于 linux 内核定制 x86 平台的微操作系统王林强(河南高校物理与电子学院通信专业,河南开封,475004)摘 要:linux 是一种自由和开放,用 c 语言和汇编语言写成,并符合 posix 标准的类unix 操作系统。并且由于其可定制、可裁剪的特性,不仅在桌面操作系统中有重要的地位,而且在手机、平

4、板电脑、路由器和视频玩耍把握台等嵌入式设备有其巨大的优势。为了更好、更深化的了解及把握linux 系统。本文具体的叙述并实践,如何从linux 内核源码,经过定制、裁剪、编译、制作文件系统、内核引导,iso 光盘制作到最终完整的基于 linux 内核定制的微操作系统。通过基于linux 内核定制的微操作系统的制作,深化的理解linux 内核的工作原理、文件系统结构、内核引导等,从而精通嵌入式开发。关键词:linux;定制;嵌入式;微系统an implementation of micro-operating system based on the x86 platformlinux kerne

5、lcustomizationwang lin-qiang(school of physics and electronics, henan university, henan kaifeng 475004, china)abstract:linux is a free and open, and posix-compliant unix-like operating system written in c and assembly language. and can be cut because of its customizable features, not only in the des

6、ktop o perating system in an important position, and its huge advantage in the embedded devices, mobile phones, tablet pcs, routers, and video game consoles.in order to better and deeper understanding of and master linux system. this article tells in d etail and practice, from the linux kernel sourc

7、e code has been customized, cutting, compiling, pro duction file system, kernel boot iso cd-rom production to the final complete custom micro-oper ating system based on linux kernel.in-depth understanding of the linux kernel works through the production of custom micro-op erating system based on lin

8、ux kernel, file system structure, core guidance, so proficient in embed ded development.key words:linux; customizable;embedded development; micro-operating system0 前言linux 可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频玩耍把握台,到台式计算机、大型机和超级计算机。linux 是一个领先的操作系统,世界上运算最快的 10 台超级计算机运行的都是 linux 操作系统。由于其免费、开源、可定制、可裁剪等特性使其在嵌

9、入式领域获得巨大的进展,并占据大部分市场,深化的了解、把握linux 的裁剪、定制、移植,对嵌入式更好的开发起着至关重要的作用,基于火热的嵌入式开发,将来市场中将需要更多精于 linux 移植开发的工程师。0.1 linux 系统简介linux 操作系统是一种自由和开放源码的类unix 操作系统的一种克隆系统。它诞生于1991 年的 10 月 5 日(这是第一次正式向外公布的时间)。以后借助于 internet 网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今日世界上使用最多的一种 unix 类操作系统,并且使用人数还在迅猛增长,目前存在着很多不同的 linux,但它们都使用了 li

10、nux 内核。linux 操作系统的诞生、进展和成长过程始终依靠着以下五个重要支柱:unix 操作系统、minix 操作系统、gnu 方案、posix 标准和 internet 网络。目前,linux 的发行版有很多,如 ubuntu,redhat,debian,fedora 等等。0.2 linux 的基本思想linux 的基本思想有两点:第一,一切都是文件;其次,每个软件都有确定的用途。其中第一条具体来讲就是系统中的全部都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说 linux 是基于 unix 的,很大程度上也

11、是由于这两者的基本思想格外相近。0.3 linux 内核linux 是最受欢迎的自由电脑操作系统内核。它是一个用 c 语言和汇编语言写成,符合 posix 标准的类 unix 操作系统。linux 最早是由芬兰黑客林纳斯. 托瓦兹(linus b. torvalds)为尝试在英特尔 x86 架构上供应自由免费的类 unix 操作系统而开发的。该方案开头于 1991 年,在方案的早期有一些 minix 黑客供应了帮忙,而今日全球很多程序员正在为该方案无偿供应挂念。技术上说 linux 是一个内核。“内核”指的是一个供应硬件抽象层、磁盘及文件系统把握、多任务等功能的系统软件。一个内核不是一套完整的

12、操作系统。一套基于 linux 内核的完整操作系统叫作 linux 操作系统,或是 gnu/linux。0.4 linux 内核版本命名版本的格式为 a.b.c,其中 a,b,c 代表:a 大幅度转变的内核。这是很少发生变化,只有当发生重大变化的代码和核心发生才会发生。在历史上曾转变两次的内核:1994 年的 1.0 及 1996 年的 2.0。b 是指一些重大修改的内核。内核使用了传统的奇数次要版本号码的软件号码系统(用偶数的次要版本号码来表示稳定版本)。c 是指稍微修订的内核。这个数字当有平安补丁,bug 修复,新的功能或驱动程序,内核便会有变化。自 2.6.0(2003 年 12 月)发

13、布后,人们生疏到,更短的发布周期将是有益的。自那时起,版本的格式为 a.b.c.d,其中 a,b,c,d 代表:a 和 b 是无关紧要的,c 是内核的版本,d 是平安补丁0.5 linux 文件系统linux 继承了 unix 操作系统结构清楚的特点。在linux 下的文件结构格外有条理。/根名目|/bin存放二进制文件。|/boot存放 linux 的内核及引导系统程序。|/cdrom挂载光驱文件系统。|/dev存放使用的外部设备。|/etc存放各种配置文件和子名目。|/home存放用户的主名目。|/lib存放系统动态连接共享库。|/lost+found存放意外崩溃和意外信息。|/mnt存放

14、挂载储存设备的挂载名目。|/media挂载 usb 接口的移动硬盘 。|/opt存放可选的程序。|/proc存放系统信息 。|/root超级权限用户 root 的家名目。|/sbin存放系统管理员的系统管理程序。|/srv服务启动后,所需访问的数据目录|/sys一种虚拟的基于内存的文件系统 。|/tmp临时文件名目 。|/usr存放用户应用程序和文件。|/var存放系统日志。0.6 linux 内核引导lilo(linux loader),lilo 代表 linux 加载程序。lilo 是一个在系统启动时运行的程序,它允许选择用于引导计算机的操作系统。gnu grub(简称“grub”)是一个

15、来自 gnu 项目的多操作系统启动程序。 grub 是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统, 并在计算机启动时选择期望运行的操作系统。grub 可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。0.7 linux 系统组成引导程序+linux 内核+文件系统=微 linux 操作系统1 平台的搭建linux 定制平台的正确选择、配置、安装、调试将为下面的系统制作供应有力的保证。并削减制作过程中问题发生的几率。1.1 硬件平台处理器:intel® atomcpu n450 1.66ghz ×2内存:992.8m硬盘:wdc wd16

16、00bevs-00rst01.2 软件平台本次平台接受接受 xp+ubuntu12.04 双系统。系统 1:microsoft windows xp professional 2002 service pack 3系统 2:ubuntu 12.041.2.1 ubuntu 系统的下载请留意选择与自己硬件匹配的版本。本次平台的 ubuntu 下载地址:o1.2 .2ubuntu 系统的安装ubuntu12.04 使用 u 盘安装双系统,并合理分区。正确安装之后的系统信息:版本12.04(precise)32 位内核 linux3.5.0-rc1gnome2.4.1内存:992.8m处理器:int

17、el® atomcpu n450 1.66ghz ×2可用的磁盘空间:6.7gb1.2.3ubuntu 系统的配置装完双系统后,启动进入 ubuntu12.04,打开终端获得 root 权限:sudosu然后安装编译内核时需要的工具:apt-get installbuild-essential kernel-package libncurses 5-dev libqt3-headersbuild-essential(基本的编程库(gcc, make 等)kernel-package(系统里生成kernel-image 的一些配置文件和工具)libncurses5-dev(m

18、ekemenuconfig 要调用的)libqt3-headers(makexconfig 要调用的)注:其它工具在升级过程中可以按提示安装2 linux 内核的编译linux 内核的编译是系统定制与裁剪的关键。要充分考虑系统所满足的硬件要求及限制,编译出最佳内核,充分发挥硬件和 linux 内核的特性。2.1 内核的下载本次定制使用当前最新的 linux 3.5.0 内核,可依据实际状况合适选择内核版本。linux3.5.0 内核的下载地址:/pub/linux/kernel/v3.0/testing/linux-3.5-rc1.tar.bz22.2

19、内核的定制1:首先在终端下获得 root 权限sudosu 2:把下载的内核源文件拷贝到/usr/src 名目下cp/home/linux-3.5-rc1.tar.bz2 /usr/src 3:进入/usr/src 名目cd/usr/src4:解压 linux-3.5-rc1.tar.bz2 在当前的名目下tar-jxvf linux-3.5-rc1.tar.bz25:解压后得到 linux-3.5-rc1 文件夹,文件夹内为内核的源代码,进入该文件夹cd/usr/src/linux-3.5-rc1 6:使用 make 命令进行内核定制makexconfig运行完后,会消灭一个配置的窗口,然后

20、按自己的定制要求对选项进行配置,此次定制的是微内核,故可不支持声卡、nfc 等,主要配置 cpu 为intel® atomcpu。配置完成后,选择 file->saveas,默认保存为.config,选择 save。2.3 内核的编译1:进入 linux-3.5-rc1 文件夹,使用make 命令开头编译 bzimage 内核文件(留意”i”为大写)。cd/usr/src/linux-3.5-rc1 makebzimage依据电脑的配置状况,编译需要一段时间,编译成功后可在/usr/src/linux-3.5-rc1/arch/x86/boot 找到生成的内核文件bzimage

21、。2.4 内核的制作1:对内核进行压制cp /usr/src/linux-3.5-rc1/arch/x86/boot/bzimage /root/vmlinuz后面制作 cd-rom 时要用到 vmlinuz,即定制成功的内核文件。3 busybox 的编译busybox 是一个集成了一百多个最常用 linux 命令和工具的软件。busybox 包含了一些简洁的工具,例如 ls、cat 和 echo 等等,还包含了一些更大、更简单的工具,例如 grep、find、mount 以及 telnet。有些人将 busybox 称为 linux 工具里的瑞士军刀。简洁的说 busybox 就好像是个大

22、工具箱,它集成压缩了 linux 的很多工具和命令,也包含了 android 系统的自带的 shell。其目标是在一张软盘上创建一个可引导的 gnu/linux 系统,这可以用作安装盘和急救盘。3.1 busybox 的下载这里选择 1.20.0 版本busybox 的下载地址为: 3.2 busybox 的配置busybox 的配置程序和 linux 内核菜单配置方式近似。1:在终端下进入 root 权限sudosu2:将下载的 busybox 源文件拷贝到/usr/src/busybox 文件夹下mkdir/usr/src/busybox 3:解压 busybox-1.20.0.tar.b

23、z2cd/usr/src/busyboxtar-jxvfbusybox-1.20.0.tar.bz24:进入新生成的 busybox-1.20.0 文件夹,进行 busybox 的配置cd/usr/src/busybox/busybox-1.20.0make menuconfig弹出一配置对话框,并配置需要编译进 busybox 的功能选项。下面为必选项:show verbose applet usage messagesruntime suid/sgid configuration via /etc/busybox.conf build busybox as a static binary

24、(no shared libs)don”t use /usr配置好后,退出并保存。3.3 busybox 的编译1:开头编译 busybox makemake install编译好后在 busybox-1.20.0 名目下生成子名目_install,里面的文件./busybox|bin|linuxrc -> bin/busybox|sbin其中可执行文件 busybox 在 bin 名目下,制作文件系统将用到_install 下的文件。(注:由于 gcc 与 busybox 不能很好的兼容,会消灭很多问题,请参看后面的 busybox 编译中的问题。)4 linux 文件系统的制作正如前

25、面介绍的 linux 文件系统一样,无论多小的 linux 系统或许具有一个文件系统。4.1 文件系统的制作1:在/usr 下建一个名目 tmp用来装文件系统并建立文件名目sudosumkdir /usr/tmp cd/usr/tmpmkdir etcusrvartmpproc homerootdevetc、proc、dev 是肯定要建的,bin 和 sbin 拷贝_install 下生成的。2:拷贝 busybox-1.20.0 下的_install 文件夹到 rootfs 下cp-r /usr/src/busybox/busybox-1.20.0/_install/*/usr/tmp3:在

26、 dev 文件夹下建立设备文件名: cd/usr/tmp/devcp-r /dev/console./cp-r/dev/null./cp-r/dev/zero./4:建立 etc 名目下的配置文件需要建立的文件:busybox.conf groupinittab motd passwdresolv.conf sh adow- fstabinit.d issuemtabprofile shadow1) 其中 init.d 是从busybox-1.20.0 源代码名目下拷贝过来。cp -r/busybox-1.20.0/examples/etc/init.d /usr/tmp/etc/echo e

27、cho echo把 init.d 拷过来后要更改其中的文件 rcs。chmodu+x/usr/tmp/etc/init.d/rcs 用记事本打开 rcs,并写入下面的内容:#!/bin/shmount-oremount,rw /bin/mount-a>/etc/mtab echoecho -en“ttwelcomto dead_angellinuxn“ hostname dead_angel保存并退出。2)busybox.conf 是一个空文件. 3)fstab 的内容如下:/dev/fd0/ext2 defaults 00none/procproc defaults 00/dev/cd

28、rom/mnt/cdrom udf,iso9660noauto,owner,kudzu,ro 00/dev/fd0/mnt/floppy autonoauto,owner,kudzu0 04) group 的内容如下:root:0:root5) inittab 的内容如下::sysinit:/etc/init.d/rcs:askfirst:/bin/shtty2:respawn:/bin/getty38400tty2tty3:respawn:/bin/getty38400tty3tty4:respawn:/bin/getty38400tty4ocess#stufftodo when resta

29、rtingthe initpr:restart:/bin/init#stufftodo before rebooting:ctrlaltdel:/bin/reboot:shutdown:/bin/umount -a-r:shutdown:/bin/swapoff -a issuedead_angellinux release 0.1 6)motd 的内容为空7)mtab 的内容为空8)passwd 的内容如下:root:0:0:root:/root:/bin/ash 9)profile 的内容如下:#/etc/profile:system-wide .profile fileforthebou

30、rneshellsecho echoexportps1=“uh w$“ echo“done“alias ll=”ls -l” alias du=”du -h” alias df=”df -h” alias rm=”rm -i” echo10)resolv.conf 的内容如下nameserver2 11)shadow 的内容如下:root1$adltab9sr/mskqylivsjt/:12705:0:99999:7: 12)shadow-的内容如下:root1$dwu.tenp$b7anixogoizmwjr6ih8810:12705:0:99999:7:4.2 文件系

31、统的压缩linux 初始 ram 磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。initrd 文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd ram 磁盘卸载,并释放内存。在很多嵌入式 linux 系统中,initrd 就是最终的根文件系统。制作 img 映象文件:1:先返回我们的主名目cd2:建立一个 8m 的空间用来放我们的跟文件系统ddif=/dev/zero of=initrd.img bs=1kcount=8129 3:将它格式化为 ext2 的文件系统,然后挂载mke2fs -f-v-m

32、0initrd.img sudomkdir /mnt/initrdsudomount -oloopinitrd.img /mnt/initrd 4:接着把我们做好的文件系统复制进去:sudocp -av/usr/tmp/*/mnt/initrd 5:复制完后,卸载 initrdsudoumount /mnt/initrd 6:压缩根文件系统镜像:gzip-fv9 initrd.imgmvinitrd.img.gz /usr/initrd.gz到此,我们的就完成了根文件系统的制作,/usr/initrd.gz 将在制作cd-rom 时用到。5 linux 引导程序配置isolinux 是特地用来

33、引导可移动介质的轻量级引导程序,由于这样的介质通常不会固定只针对一种硬件。isolinux 其实是一个简洁的 linux 系统。5.1 isolinux 的下载isolinux 的下载地址: /pub/linux/utils/boot/syslinux/syslinux-4.05.tar.gz5.2 isolinux 的配置制作 bootloader,由于我们用的是livecd,所以我们就选用isolinux 作为我们的 bootloader。1:下载好后,解压到/usr/isolinux 名目下mkdir /usr/isolinuxtar-jxvf sy

34、slinux-4.05.tar.gz /usr/isolinux 2:建立一个临时文件夹,并把 isolinux.bin 拷进去mkdir -p/usr/tmpcp/usr/isolinux/syslinux-4.05/core/isolinux.bin /usr/tmp 3:创建 isolinux 的配置文件gedit /usr/tmp/isolinux.cfg isolinux.cfg 的内容是:default vmlinuzinitrd=initrd.gz kernel vmlinuzappend initrd=/initrd.gzload_ramdisk=1 prompt_ramdis

35、k=0 ramdisk_size=60000 rwroot=/dev/ram编辑好后保存退出。6 linuxcd-rom 的制作整合并制作 livecd1:在 root 名目下创建以个透亮片文件夹mkdir /root/tmp 2:将我们定制的内核 vmlinuz 拷贝到该名目下cp /root/vmlinuz/root/tmp 3:将我们制作的文件系统 initrd.img 拷贝到改名目下cp /usr/initrd.gz/root/tmp4:将我编写的引导文件 isolinux.bin、isolinux.cfg 拷贝到改名目下cp /usr/tmp/* /root/tmp 5:生成 iso 文件mkisofs -o dead_angel_linux_v1.10.iso -b /root/tmp/isolinux.b in -c /root/tmp/boot.cat -no-emul-boot -boot-load-size 4 -boot- info-table /home最终,在我们的 home 底下就生成了一个 dead_angel_linux_v1.10.iso 的光盘镜像,至此,一个基于 linux 内核定制的 x86 平台微操作系统就

温馨提示

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

评论

0/150

提交评论