基于DOC嵌入式Linux系统的构建.pdf





《基于DOC嵌入式Linux系统的构建.pdf》由会员分享,可在线阅读,更多相关《基于DOC嵌入式Linux系统的构建.pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、http:/-1-基于基于 DOC 嵌入式嵌入式 Linux 系统的构建系统的构建 刘小飞1,杨丰萍2 1华东交通大学电气与电子工程学院,江西南昌(330013)2华东交通大学交通信息工程及控制研究所,江西南昌(330013)E-mail:fei_ 摘摘 要:要:本文根据实际项目真空断路器检测仪的研制,介绍了基于 DOC 的嵌入式 Linux 系统的构建原理,描述了嵌入式 Linux 系统内核的裁剪与编译、Linux 文件系统的创建、引导装载程序的定制,最后介绍了如何在 DOC 上引导操作系统。关键词:关键词:嵌入式 Linux;bootloader;文件系统;DOC 中图分类号:中图分类号:
2、TP316 文献标识码:文献标识码:A 1引言引言 Linux 是开放源代码的操作系统,具有安全性和可靠性高、成本低、网络功能强等特点,随着嵌入式系统需求的大幅增加,Linux 操作系统由于自身的优势,成了许多嵌入式系统开发者的首选。由于嵌入式系统苛刻的硬件资源,通用的 Linux 系统通常并不适合直接运行在嵌入式系统中,需要根据实际应用 Linux 内核进行裁剪。DOC是一种新型闪存电子盘,以盘体体积小、功耗低和带硬盘仿真功能等特点,在一些对电源功耗要求苛刻、空间狭小的嵌入式场合,有它很独到的优势。加之目前生活自动化、智能设备终端等领域的技术日趋成熟,在嵌入式操作系统应用日益广泛的今天,嵌入
3、式操作系统对此类电子盘设备的支持日益完善。本文以实际项目真空断路器检测仪的研制为例,描述了如何实现基于 DOC2000 的构建嵌入式 Linux 系统1。2Linux内核配置与编译内核配置与编译 Linux 内核定制要做的主要工作就是:根据系统所需的功能,裁剪掉不需要的内核组建和模块,编译生成新内核。为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑2:1)自己定制编译的内核运行更快(具有更少的代码)2)系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)3)不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞 4)将某种功能编译为模块方式会比
4、编译到内核内的方式速度要慢一些 本测试系统无须支持最新的硬件设备,基于性能稳定的考虑,下载版本号 2.4.18 的 Linux内核。编译内核需要 root 权限,以下操作都是以 root 用户身份登陆系统的。首先将内核拷贝到/usr/src/下,命令为:#cp linux-2.4.18.tar.gz /usr/src/在/usr/src/文件夹中删除 linux-2.4 符号链接,接着解压下载的内核源程序文件,命令为:#tar-zxvf linux-2.4.18.tar.gz#mv linux linux-2.4.18 /改名#ln-s linux-2.4.18 linux#cd/usr/sr
5、c/linux /移至内核源代码目录 通常内核重新编译要运行的第一个命令是:#make mrproper /该命令确保源代码目录下没有不正确的.o 文件以及文件的互相依http:/-2-赖。#cd/usr/include/#rm-r asm linux scsi /确保/usr/include/目录下的 asm、linux 和 scsi 等链接是指向要升级的内核源代码的。#ln-s/usr/src/linux/include/asm-i386 asm#ln-s/usr/src/linux/include/linux linux#ln-s/usr/src/linux/include/scsi s
6、csi 这是配置非常重要的一部分。删除掉/usr/include 下的 asm、linux 和 scsi 链接后,再创建新的链接指向新内核源代码目录下的同名的目录。这些头文件目录包含着保证内核在系统上正确编译所需要的重要的头文件。#make menuconfig /配置内核 因为要使用 DOC 2000 作为检测系统的存储设备,所以需要内核加入对 DOC 的支持。内核配置完成保存以后,接下来是编译,执行以下命令:#make dep /读取配置过程生成的配置文件,来创建对应于配置的依赖关系树#make clean /完成删除前面步骤留下的文件,以避免出现一些错误#make bzImage 或 m
7、ake zImage#make modules /生成相应的模块#make modules_install /把模块拷贝到需要的目录中#depmod a /生成模块间的依赖关系 经过以上的步骤,得到了裁减后的内核。为了能够使用新版本的内核,我们还需要做一些改动(/rootfs 为嵌入式 Linux 存放目录),命令为:#cp/usr/src/linux/System.map /rootfs/boot/System.map-2.4.18#cp/usr/src/linux/arch/i386/bzImage /rootfs/boot/vmlinuz-2.4.18 最后并将编译好的模块拷贝入相应目录
8、:#cp r/lib/modules/2.4.18 /rootfs/lib/modules/2.4.18 3创建根文件系统创建根文件系统 3.1 编译编译 busybox busybox 被非常形象地称为嵌入式 Linux 系统中的“瑞士军刀”,因为它将许多常用的UNIX 命令和工具结合到了一个单独的可执行程序中。虽然与相应的 GNU 工具比较起来,busybox 所提供的功能和参数略少,但在比较小的系统(例如启动盘)或者嵌入式系统中,已经足够了。本系统下载 busybox 的 1.00 稳定版,压缩包大小为 1.3 MB 左右。将源码解压之后,进入到 busybox 1.00 目录中,运行
9、make menuconfig 可以打开它的编译界面。根据系统要求进行相关的设置,设置完毕后保存、退出,执行 make;make install 命令,busybox 将在目标根文件系统中建立/usr、/bin、/sbin 等目录。从中可以看到,编译好的 busybox 可执行文件和其他应用命令的符号链接。3.2 完善文件系统完善文件系统 参考一个正常的 Linux 系统就会发现,busybox 建立的文件系统还缺少很多文件。下面两行命令建立了常见 UNIX 系统中包含的一些目录,虽然它们不全是必需的,但建立它们更符合标准一些。这些命令都是在新文件系统的根目录中执行的。http:/-3-mkd
10、ir mnt root var tmp proc boot etc lib home dev mkdir/var/lock,log,run 如果 busybox 采用了动态链接的方式编译,还需要把 busybox 所需要的动态库:libcrypt.so.1、libc.so.6、ldlinux.so.2 放到 lib 目录中。3.3 设置配置文件设置配置文件/etc 中的 inittab 文件,是系统启动非常重要的脚本文件,它包括了所有 init 启动运行级别所必须的信息,后续启动的文件都由它指定。本系统 inittab 文件具体内容如下:id:3:initdefault:si:sysinit:
11、/etc/rcc l0:0:wait:/etc/rc0 16:6:wait:/etc/rc6 ca:ctrlaltdel:/sbin/shutdown-t3-r now 1:2345:respawn:/sbin/mingetty tty1 首先这个系统运行多用户模式启动,然后立即运行 rcc 脚本,进行系统初始化动作,当系统运行级别为 0 或 6 时,分别运行对应的脚本 rc0 和 rc6。其实这样就已经完成最基本的启动了,inittab 中的后两行根据开发需要新加入的。倒数第二行为了帮助 Microsoft Windows用户/etc/inittab 把 Ctrl+Alt+Del 组合键与
12、shutdown 命令相关联。最后一行在 Linux 以运行级2、3、4、5 启动时配置第一个虚拟控制台 tty1。然后介绍/etc/fstab,/etc/fstab 存放系统中的文件系统信息34。当正确设置了该文件,可以通过mount/directoryname”命令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都由空格或 tab 键分开。本系统构造的/etc/fstab 文件内容如下:/dev/nfla1 /ext2 defaults 1 1 proc /proc proc defaults 0 0 接着介绍 rcc 配置文件,本系统构造 rcc 文件代替标准 Linux
13、 中的 rc.sysinit 文件。系统初始化脚本 rc.sysinit 是在/etc/inittab 中一个最重要的脚本。本系统设置的 rcc 脚本内容如下:#!/bin/sh echo fsck ext3 fsck.ext3/dev/nftla1 echo mount proc filesystem./bin/mount-n-t proc none /proc echo mount root filesystem./bin/mount-n-o remount,rw/echo umount initrd/bin/umount/initrd/sbin/hwclock-hctosys-local
14、time/bin/tpaneld/bin/usbpnpd echo insmod usb modules/bin/mount-t usbdevfs usbdevfs/proc/bus/usb/sbin/insmod/lib/modules/2.4.18/kernel/drivers/usb/usb-ohci.o/sbin/insmod/lib/modules/2.4.18/kernel/drivers/usb/usb-uhci.o/sbin/insmod/lib/modules/2.4.18/kernel/drivers/scsi/sd_mod.o http:/-4-/sbin/insmod/
15、lib/modules/2.4.18/kernel/drivers/usb/storage/usb-storage.o/sbin/insmod-f/lib/modules/2.4.18/kernel/drivers/cjk/zkjxqd.o/sbin/insmod-f/lib/modules/2.4.18/kernel/drivers/lp/printerqd.o echo insmod eth0/sbin/insmod/lib/modules/2.4.18/kernel/drivers/net/8139too.o ifconfig lo 127.0.0.1 ifconfig eth0 192
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DOC 嵌入式 Linux 系统 构建

限制150内