基于X86裁剪小型linux系统.docx
- 文档编号:12636053
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:21
- 大小:30.29KB
基于X86裁剪小型linux系统.docx
《基于X86裁剪小型linux系统.docx》由会员分享,可在线阅读,更多相关《基于X86裁剪小型linux系统.docx(21页珍藏版)》请在冰豆网上搜索。
基于X86裁剪小型linux系统
基于Linux内核定制X86平台的微操作系统
(2012-06-1000:
26:
21)
转载▼
标签:
杂谈
分类:
linux学习笔记
摘 要:
1
0 前言 2
0.1 Linux系统简介 2
0.2 Linux的基本思想 2
0.3 Linux内核 2
0.4 Linux内核版本命名 3
0.5 Linux文件系统 3
0.6Linux内核引导 4
0.7Linux系统组成 4
1 平台的搭建 4
1.1 硬件平台 4
1.2 软件平台 4
1.2.1 Ubuntu系统的下载 4
1.2.2 Ubuntu系统的安装 4
1.2.3 Ubuntu系统的配置 4
2 Linux内核的编译 5
2.1 内核的下载 5
2.2 内核的定制 5
2.3 内核的编译 5
2.4 内核的制作 6
3 BusyBox的编译 6
3.1 BusyBox的下载 6
3.2 BusyBox的配置 6
3.3 BusyBox的编译 7
4 Linux文件系统的制作 7
4.1 文件系统的制作 7
4.2 文件系统的配置 9
4.3 文件系统的压缩 7
5 Linux引导程序配置 10
5.1 ISOLINUX的下载 10
5.2 ISOLINUX的配置 10
6 LinuxCD-ROM的制作 10
7 Linux定制系统的运行 11
7.1 VirtualBox下的运行 11
7.2 U盘引导在X86平台下的运行 12
8定制系统过程中的问题 12
8.1 平台搭建中的问题 12
8.2 内核编译中的问题 12
8.3 BusyBox编译中的问题 12
8.4 文件系统制作中的问题 12
8.5 引导程序制作中的问题 12
8.6 CD-ROM制作中的问题 13
8.7 定制系统运行的问题 13
参考 13
基于Linux内核定制X86平台的微操作系统
王林强
(河南大学物理与电子学院通信专业,河南 开封,475004)
摘 要:
Linux是一种自由和开放,用C语言和汇编语言写成,并符合POSIX标准的类Unix操作系统。
并且由于其可定制、可裁剪的特性,不仅在桌面操作系统中有重要的地位,而且在手机、平板电脑、路由器和视频游戏控制台等嵌入式设备有其巨大的优势。
为了更好、更深入的了解及掌握Linux系统。
本文详细的讲述并实践,如何从Linux内核源码,经过定制、裁剪、编译、制作文件系统、内核引导,iso光盘制作到最终完整的基于Linux内核定制的微操作系统。
通过基于Linux内核定制的微操作系统的制作,深入的理解Linux内核的工作原理、文件系统结构、内核引导等,从而精通嵌入式开发。
关键词:
Linux;定制;嵌入式;微系统
An implementation of micro-operating system
based on the x86 platform Linux kernel customization
Wang 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 desktop operating 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 detail and practice, from the Linux kernel source code has been customized, cutting, compiling, production file system, kernel boot iso CD-ROM production to the final complete custom micro-operating system based on Linux kernel.
In-depth understanding of the Linux kernel works through the production of custom micro-operating system based on Linux kernel, file system structure, core guidance, so proficient in embedded development.
Key words:
Linux; customizable;embedded development; micro-operating system
0 前言
Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。
Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。
由于其免费、开源、可定制、可裁剪等特性使其在嵌入式领域获得巨大的发展,并占据大部分市场,深入的了解、掌握Linux的裁剪、定制、移植,对嵌入式更好的开发起着至关重要的作用,基于火热的嵌入式开发,未来市场中将需要更多精于Linux移植开发的工程师。
0.1 Linux系统简介
Linux操作系统是一种自由和开放源码的类UNIX操作系统的一种克隆系统。
它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。
以后借助于Internet 网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长,目前存在着许多不同的Linux,但它们都使用了Linux内核。
Linux 操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:
UNIX 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet 网络。
目前,Linux的发行版有很多,如Ubuntu,RedHat,Debian,Fedora等等。
0.2 Linux的基本思想
Linux的基本思想有两点:
第一,一切都是文件;第二,每个软件都有确定的用途。
其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。
至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。
0.3 Linux内核
Linux是最受欢迎的自由电脑操作系统内核。
它是一个用C语言和汇编语言写成,符合POSIX标准的类Unix操作系统。
Linux最早是由芬兰黑客林纳斯.托瓦兹(Linus B. Torvalds)为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。
该计划开始于1991年,在计划的早期有一些Minix黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。
技术上说Linux是一个内核。
“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。
一个内核不是一套完整的操作系统。
一套基于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月)发布后,人们认识到,更短的发布周期将是有益的。
自那时起,版本的格式为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 存放挂载储存设备的挂载目录。
|————————/media 挂载usb接口的移动硬盘 。
|————————/opt 存放可选的程序。
|————————/proc 存放系统信息 。
|————————/root 超级权限用户root的家目录。
|————————/sbin 存放系统管理员的系统管理程序。
|————————/srv 服务启动后,所需访问的数据目录
|————————/sys 一种虚拟的基于内存的文件系统 。
|————————/tmp 临时文件目录 。
|————————/usr 存放用户应用程序和文件。
|————————/var 存放系统日志。
0.6Linux内核引导
LILO(LInux LOader),LILO代表Linux加载程序。
LILO是一个在系统启动时运行的程序,它允许选择用于引导计算机的操作系统。
GNU GRUB(简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。
GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。
GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
0.7Linux系统组成
引导程序+Linux内核+文件系统=微Linux操作系统
1 平台的搭建
Linux定制平台的正确选择、配置、安装、调试将为下面的系统制作提供有力的保证。
并减少制作过程中问题发生的几率。
1.1 硬件平台
处理器:
Intel® Atom™ CPU N450 @ 1.66GHz × 2
内 存:
992.8M
硬 盘:
WDC WD1600BEVS--00RST0
1.2 软件平台
本次平台采用采用XP+Ubuntu 12.04双系统。
系 统1:
Microsoft Windows XP Professional 2002 Service Pack 3
系 统2:
Ubuntu 12.04
1.2.1 Ubuntu系统的下载
请注意选择与自己硬件匹配的版本。
本次平台的Ubuntu下载地址:
1.2 .2Ubuntu系统的安装
Ubuntu 12.04使用U盘安装双系统,并合理分区。
正确安装之后的系统信息:
版本 12.04(precise)32位
内核Linux3.5.0-rc1
GNOME 2.4.1
内存:
992.8M
处理器:
Intel® Atom™ CPU N450 @ 1.66GHz × 2
可用的磁盘空间:
6.7GB
1.2.3Ubuntu系统的配置
装完双系统后,启动进入Ubuntu12.04,打开终端获得root权限:
sudo su
然后安装编译内核时需要的工具:
apt-get install build-essential kernel-package libncurses5-dev libqt3-headers
build-essential (基本的编程库(gcc, make等)
kernel-package ( 系统里生成 kernel-image 的一些配置文件和工具)
libncurses5-dev (meke menuconfig要调用的)
libqt3-headers (make xconfig要调用的)
注:
其它工具在升级过程中可以按提示安装
2 Linux内核的编译
Linux内核的编译是系统定制与裁剪的关键。
要充分考虑系统所满足的硬件要求及限制,编译出最佳内核,充分发挥硬件和Linux内核的特性。
2.1 内核的下载
本次定制使用当前最新的Linux 3.5.0内核,可根据实际情况合适选择内核版本。
Linux 3.5.0 内核的下载地址:
http:
//www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.5-rc1.tar.bz2
2.2 内核的定制
1:
首先在终端下获得root权限
sudo su
2:
把下载的内核源文件拷贝到/usr/src目录下
cp /home/linux-3.5-rc1.tar.bz2 /usr/src
3:
进入/usr/src目录
cd /usr/src
4:
解压linux-3.5-rc1.tar.bz2 在当前的目录下
tar -jxvf linux-3.5-rc1.tar.bz2
5:
解压后得到 linux-3.5-rc1文件夹,文件夹内为内核的源代码,进入该文件夹
cd /usr/src/linux-3.5-rc1
6:
使用make命令进行内核定制
make xconfig
运行完后,会出现一个配置的窗口,然后按自己的定制要求对选项进行配置,此次定制的是微内核,故可不支持声卡、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-rc1
make bzImage
根据电脑的配置情况,编译需要一段时间,编译成功后可在/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,即定制成功的内核文件。
3 BusyBox的编译
BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。
BusyBox 包含了一些简单的工具,例如ls、 cat 和 echo等等,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。
有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。
简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。
其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。
3.1 BusyBox的下载
这里选择1.20.0版本
BusyBox的下载地址为:
3.2 BusyBox的配置
BusyBox的配置程序和linux内核菜单配置方式近似。
1:
在终端下进入root权限
sudo su
2:
将下载的BusyBox源文件拷贝到/usr/src/busybox文件夹下
mkdir /usr/src/busybox
3:
解压busybox-1.20.0.tar.bz2
cd /usr/src/busybox
tar -jxvf busybox-1.20.0.tar.bz2
4:
进入新生成的busybox-1.20.0文件夹,进行BusyBox的配置
cd /usr/src/busybox/busybox-1.20.0
make menuconfig
弹出一配置对话框,并配置需要编译进busybox的功能选项。
下面为必选项:
Show verbose applet usage messages
Runtime SUID/SGID configuration via /etc/busybox.conf
Build BusyBox as a static binary (no shared libs)
Don't use /usr
配置好后,退出并保存。
3.3 BusyBox的编译
1:
开始编译BusyBox
make
make install
编译好后在busybox-1.20.0目录下生成子目录_install,里面的文件.
/busybox
|————————bin
|————————linuxrc -> bin/busybox
|————————sbin
其中可执行文件busybox在bin目录下,制作文件系统将用到_install下的文件。
(注:
由于GCC与BusyBox不能很好的兼容,会出现很多问题,请参看后面的BusyBox编译中的问题。
)
4 Linux文件系统的制作
正如前面介绍的Linux文件系统一样,无论多小的Linux系统也许具有一个文件系统。
4.1 文件系统的制作
1:
在/usr下建一个目录tmp 用来装文件系统并建立文件目录
sudo su
mkdir /usr/tmp
cd /usr/tmp
mkdir etc usr var tmp proc home root dev
etc、proc、dev是一定要建的,bin和sbin拷贝_install下生成的。
2:
拷贝busybox-1.20.0下的_install文件夹到rootfs下
cp -R /usr/src/busybox/busybox-1.20.0/_install/* /usr/tmp
3:
在dev文件夹下建立设备文件名:
cd /usr/tmp/dev
cp -R /dev/console ./
cp -R /dev/null ./
cp -R /dev/zero ./
4:
建立etc目录下的配置文件
需要建立的文件:
busybox.conf group inittab motd passwd resolv.conf shadow- fstab init.d issue mtab profile shadow
1)其中init.d是从busybox-1.20.0源代码目录下拷贝过来。
cp -R /busybox-1.20.0/examples/etc/init.d /usr/tmp/etc/
把init.d拷过来后要更改其中的文件rcs。
chmod u+x /usr/tmp/etc/init.d/rcs
用记事本打开rcs,并写入下面的内容:
#!
/bin/sh
mount -o remount,rw /
/bin/mount -a
>/etc/mtab
echo
echo
echo
echo
echo -en "\t\tWelcom to Dead_Angel Linux\n"
hostname Dead_Angel
保存并退出。
2)busybox.conf是一个空文件.
3)fstab的内容如下:
/dev/fd0 / ext2 defaults 0 0
none /proc proc defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
4)group的内容如下:
root:
0:
root
5)inittab的内容如下:
:
:
sysinit:
/etc/init.d/rcs
:
:
askfirst:
/bin/sh
tty2:
:
respawn:
/bin/getty 38400 tty2
tty3:
:
respawn:
/bin/getty 38400 tty3
tty4:
:
respawn:
/bin/getty 38400 tty4
# Stuff to do when restarting the init process
:
:
restart:
/bin/init
# Stuff to do before rebooting
:
:
ctrlaltdel:
/bin/reboot
:
:
shutdown:
/bin/umount -a -r
:
:
shutdown:
/bin/swapoff -a
issue
Dead_Angel Linux release 0.1
6)motd的内容为空
7)mtab的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 X86 裁剪 小型 linux 系统