动手做一个迷你型Linux操作系统

合集下载

Linux下制作LiveCD

Linux下制作LiveCD

中科红旗软件技术有限公司----红旗教育学院
通过高品质的培训与技术支持服务,提升用户应用技能,为用户创造价值。
基于Microsoft Windows
BartPE (Windows 2000/XP/2003) 911 Rescue CD [2] (Windows NT/2000/XP/2003) Ultimate Boot CD for Windows (Windows XP) - BartPE的功能延展 MiniPE-XT

中科红旗软件技术有限公司----红旗教育学院
通过高品质的培训与技术支持服务,提升用户应用技能,为用户创造价值。
CDlinux
只有18M的光盘版Linux,支持很多硬件(PCMCIA、 SCSI、USB 等)和多种网络协议(ftp、ssh、nfs、 samba 等)。用户可方便地进行定制,并按需要自 行添加、删除软件包。CDlinux 支持东方语言 (CJK),尤其对简体中文提供全面支持,是完善的 系统修复光盘。 (http://cdlinux.berlios.de/index-cn.html)
中科红旗软件技术有限公司----红旗教育学院
通过高品质的培训与技术支持服务,提升用户应用技能,为用户创造价值。
建立新的引导启动项

6、在grub.conf里新建一个title
中科红旗软件技术有限公司----红旗教育学院
通过高品质的培训与技术支持服务,提升用户应用技能,为用户创造价值。
制作过程

7、查看aufs文件和squashfs文件
Linux下制作LiveCD
主要内容
LiveCD简介
迷你LiveCD
一些著名的 LiveCD
体验LiveCD

Linux没有最小只有更小----迷你Linux版本大集合

Linux没有最小只有更小----迷你Linux版本大集合

Linux没有最小只有更小----迷你Linux版本大集合2013-04-14 02:25:11| 分类:tdd,agile,java, | 标签:linux |字号订阅Linux没有最小只有更小----迷你Linux版本大集合Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。

Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。

严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。

Linux得名于天才程序员林纳斯·托瓦兹。

Linux 操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet 网络。

文件结构/:根目录,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。

/bin:bin 就是二进制(binary)英文缩写。

在一般的系统当中,都可以在这个目录下找到linux常用的命令。

系统所需要的那些命令位于此目录。

/boot:Linux的内核及引导系统程序所需要的文件目录,比如vmlinuz initrd.img 文件都位于这个目录中。

在一般情况下,GRUB或LILO系统引导管理器也位于这个目录。

/cdrom:这个目录在刚刚安装系统的时候是空的。

可以将光驱文件系统挂在这个目录下。

例如:mount /dev/cdrom /cdrom/dev:dev 是设备(device) 的英文缩写。

这个目录对所有的用户都十分重要。

因为在这个目录中包含了所有linux系统中使用的外部设备。

最小的Linux操作系统制作过程详解

最小的Linux操作系统制作过程详解

最小的Linux操作系统制作过程详解一,什么是BabyLinuxBabyLinux不是一个完整的发行版,他是利用原有的一套完整的linux系统的内核原代码和编译工具,利用busybox内建的强大功能,在一张软盘上做的一个很小的linux系统。

他具备一个linux系统的基本特征,支持linux系统最常用的一百多个命令,支持多种文件系统,支持网络等等,你可以把他当做一张linux 起动盘和修复盘来用,你也可以把他当做一个静态路由的路由器软件,当然,你也可以把他当做一个linux玩具,向你的朋友炫耀linux可以做的多么小。

我把他叫做BabyLinux因为他很小巧,小的很可爱,像一个刚刚出生的小baby。

二.为什么要作这样一个linux先说说我一开始的想法,当我一开始接触linux的时候,看到书上说,linux 通常安装只需要60M左右的空间,但是我发现装在我硬盘上的Redhat 6.0确要占据好几百M的空间。

为什么我的linux这么大呢? 后来我发现,装在我机器上的那么多东西只有不到30%是我平时常用的,还有30%是我极少用到的,另外的40%基本上是不用的。

于是,我和大多数初学者一样,开始抱怨,为什么linux 不能做的精简一点呢?于是,我萌发了自己裁减系统的想法。

可惜那个时候我还没有听说过有LFS和Debain。

等到我积累了足够的linux知识后,我开始制作这样一个小系统。

制作这样一个小系统最大的意义在于,你可以通过制作系统了解linux的启动过程,学会ramdisk的使用,让你在短时间内学到更多的linux知识。

当然,你会得到很大的乐趣。

这个项目只是做一个具有基本特征的linux系统,如果你想自己做一个具有完整功能的linux,请阅读Linux From Scratch (LFS)文档。

三,什么人适合读这篇文档如果你是一个linux爱好者,并且很想了解linux的启动过程和系统的基本结构,而且是一个喜欢动手研究小玩意的人,那么这个文档可以满足你的需求。

米尔i.MX6UL开发板Linux操作系统的构建方法

米尔i.MX6UL开发板Linux操作系统的构建方法

米尔i.MX6UL开发板Linux操作系统的构建方法硬件:米尔i.MX6UL开发板MYD-Y6ULX
简介:MYD-Y6ULX开发板(i.MX6UL开发板)由MYC-Y6ULX核心板和底板组成,基于 i.MX6UL处理器或i.MX6ULL处理器可选,MYD-Y6ULX开发板(i.MX6ULL开发板)提供丰盛外设硬件,板载了Mini PCIE接口(用于4G模块)及SIM卡槽、芯片及天线接口、双百兆网口、液晶接口、音频接口、带隔离的CAN,RS485,RS232等。

构建系统
本章主要介绍MYD-Y6ULX开发板上, 操作系统相关部件的编译和用法。

MYD-Y6ULX的Linux系统包含以下部件:
U-Boot: 引导程序,支持不同方式启动内核。

Linux Kernel: 适用于MYD-Y6ULX开发板的Linux 4.1.15内核,同时包含支持板载外设的驱动。

Yocto: 一个开源配合项目,提供丰盛的模板、工具和办法来支持构建出面对产品的自定义Linux系统。

本章中用到的代码存放在资源包04-Source名目下,编译u-boot和Linux内核代码前,请先安装meta-toolchain并加载环境变量到当前shell。

编译U-Boot
进入Bootloader名目,解压U-boot源码:
cd $DEV_ROOT/04-Source/
tar -xvf MYiR-iMX-uboot.tar.gz
cd MYiR-iMX-uboot
开头编译:
make distclean
make
make
这里的是配置选项名称,不同的启动模式需用法不同的配置选项,
第1页共13页。

TinyCoreLinux安装配置

TinyCoreLinux安装配置

TinyCoreLinux安装配置Published 2020年9⽉1⽇ byTiny Core Linux 安装配置简介Tiny Core Linux是⼀个mini Linux操作系统,基于 BusyBox和FLTK提供基本功能。

其发⾏版本在11M-16M 官⽹上也提供Plus版本也只有106M。

它很精致。

安装操作系统安装镜像下载下载页⾯我下载了两个版本镜像:x86版本: TinyCore-11.1.isox86_64位版本:TinyCorePure64-11.1.iso环境准备我们使⽤的vmware ⾸先新建⼀个linux虚拟机,我选的版本是其他Linux5.x或更⾼版本内核64位, 并添加了两块SATA的硬盘(默认的SCSI硬盘识别似乎有些问题)开始安装安装过程主要下⾯三个步骤:光盘启动操作系统;配置⽹络下载安装脚本安装;1 . 选择镜像: 光盘镜像选择 x86版本:TinyCore-11.1.iso (不影响安装)2 . 启动系统: 启动后会出现四个选项, 选择第三项Boot TinyCoreBoot TinyCore (on slow devices, waitusb=5)Boot Core (command line only)Boot Core (command line only on slow devices, waitusb=5)可以看到系统后进⼊命令⾏窗⼝,但是这种模式下进⾏操作重启将全部丢失。

要保留我们相关配置,需要挂载硬盘。

3 . 配置⽹络: 配置⽹卡地址路由及域名服务器。

sudo ifconfig eth0 192.168.xxx.202 netmask 255.255.255.0sudo route add default gw 192.168.xxx.1 dev eth0sudo echo nameserver 192.168.xxx.1 >> /etc/resolv.conf4 . 下载安装脚本: 会联机下载相关安装包tce-load -wi tc-install.tcz5 . 安装:启动安装脚本sudo tc-install.sh选择c从光盘启动Core Installation.Install from [R]unning OS, from booted [C]drom, from[I]so file, or from [N]et. (r/c/i/n): c选择f安装到本地硬盘Select install type for /mnt/sr0/boot/core.gzFrugal* Use for frugal hard drive installations.Note: You will be prompted for disk/partion andformatting options.HDD* Use for pendrives. Your BIOS must support USB-HDD booting.* A single FAT partition will be made.Note: Requires dosfstools extension.Warning: This is a whole drive installation!Zip* Use for pendrives. Drive will be formatted into two FAT partitions.* One small one for USB_ZIP boot compatibility, and used to hold Tiny Core.* The remaining partition will be used for backup & extensions.Note: Requires dosfstools and perl extensions.Warning: This is a whole drive installation!Select Install type [F]rugal, [H]DD, [Z]ip. (f/h/z): f选择1使⽤整个硬盘安装Select Target for Installation of core1. Whole Disk2. PartitionEnter selection ( 1 - 2 ) or (q)uit: 1选择1安装到第⼀块硬盘上Select disk for core1. sda2. sdbEnter selection ( 1 - 2 ) or (q)uit: 1安装bootloader选择yWould you like to install a bootloader?Most people should answer yes unless they are trying to embed Coreinto a different Linux distribution with an existing bootloader.Enter selection ( y, n ) or (q)uit: yInstall Extensions from this TCE/CDE Directory:选择分区格式 ext4Select Formatting Option for sda1. ext22. ext33. ext44. vfatEnter selection ( 1 - 4 ) or (q)uit: 3设置⼀些启动选项, 这⾥先不输⼊,直接回车Enter space separated boot options:Example: vga=normal syslog showapps waitusb=5选择y,开始安装Last chance to exit before destroying all data on sdaContinue (y/..)?安装完毕后有以下信息回显, 安装完毕.Writing zero's to beginning of /dev/sdaPartitioning /dev/sdaFormatting /dev/sda1mke2fs 1.45.4 (23-Sep-2019)1+0 records in1+0 records out440 bytes (440B) copied, 0.000846 seconds, 507.9KB/sUUID="XXXXXXX"Applying syslinux./mnt/drive/tce/boot/extlinux is device /dev/sda1Setting up core image on /mnt/sda1Installation has completedPress Enter key to continue.按照这个步骤把第⼆块硬盘也安装⼀下. 第⼆块硬盘使⽤镜像TinyCorePure64-11.1.iso 安装, 使⽤umount卸载原有x86镜像,mount重新挂载新的镜像。

制作自己的Linux发行版

制作自己的Linux发行版

制作自己的Linux发行版1、安装linux系统(如CentOS),安装完后在/root/下有anaconda-ks.cfg、install.log、install.log.syslog文件2、在某目录下(如:/root/zhenglei/)创建目录(如:isotest)存放linux发行版所需文件#cd /root/zhenglei/#mkdir isotest3、挂载iso文件到linux上。

挂载前,先在/mnt/下创建cdrom目录,用来挂载#mkdir /mnt/cdrom/#mount –t iso9660 –o loop /xxx/test.iso /mnt/cdrom/此处的xxx是test.iso文件所在的绝对路径4、利用tar命令将iso文件中的所有文件复制到/root/zhenglei/isotest/下#cd /mnt/cdrom/#tar -cf - . | ( cd /root/zhenglei/isotest/ ; tar –xvpf - )挂载完成后,进入/root/zhenglei/isotest/下,ls –al查看一下:[root@cluster2 isotest]# ls -altotal 152dr-xr-xr-x. 9 root root 4096 Sep 23 08:50 .drwxr-xr-x. 5 root root 4096 Sep 24 09:58 ..dr-xr-xr-x. 2 root root 4096 Sep 22 11:30 [BOOT]-r--r--r--. 1 root root 14 Sep 22 11:29 CentOS_BuildTag-r--r--r--. 1 root root 33 Sep 22 11:29 .discinfodr-xr-xr-x. 3 root root 4096 Sep 22 11:29 EFI-r--r--r--. 1 root root 212 Sep 22 11:29 EULA-r--r--r--. 1 root root 18009 Sep 22 11:29 GPL-r--r--r--. 1 root root 9591 Sep 23 08:48 icfs_ks_auto_partition.cfgdr-xr-xr-x. 3 root root 4096 Sep 22 11:29 imagesdr-xr-xr-x. 2 root root 4096 Sep 22 15:19 isolinuxdr-xr-xr-x. 2 root root 49152 Sep 23 08:47 Packages-r--r--r--. 1 root root 1354 Sep 22 11:30 RELEASE-NOTES-en-US.htmldr-xr-xr-x. 3 root root 4096 Sep 23 08:50 repodata-r--r--r--. 1 root root 1706 Sep 22 11:30 RPM-GPG-KEY-CentOS-6-r--r--r--. 1 root root 1730 Sep 22 11:30 RPM-GPG-KEY-CentOS-Debug-6-r--r--r--. 1 root root 1730 Sep 22 11:30 RPM-GPG-KEY-CentOS-Security-6-r--r--r--. 1 root root 1734 Sep 22 11:30 RPM-GPG-KEY-CentOS-Testing-6dr-xr-xr-x. 6 root root 4096 Sep 22 11:29 .svn-r--r--r--. 1 root root 4052 Sep 23 08:50 TRANS.TBL-r--r--r--. 1 root root 276 Sep 22 11:29 .treeinfo用命令rm删除不必要的文件,删除Packages文件夹下所有内容,保留Packages目录,再ls –al查看一下:[root@cluster2 isotest]# ls -altotal 40dr-xr-xr-x. 7 root root 4096 Sep 24 10:23 .drwxr-xr-x. 5 root root 4096 Sep 24 09:58 ..-r--r--r--. 1 root root 33 Sep 22 11:29 .discinfodr-xr-xr-x. 3 root root 4096 Sep 22 11:29 imagesdr-xr-xr-x. 2 root root 4096 Sep 22 15:19 isolinuxdrwxr-xr-x. 2 root root 4096 Sep 24 10:23 Packagesdr-xr-xr-x. 3 root root 4096 Sep 23 08:50 repodata-r--r--r--. 1 root root 4052 Sep 23 08:50 TRANS.TBL-r--r--r--. 1 root root 276 Sep 22 11:29 .treeinfo文件看起来就舒服多了。

制作一个linux的u盘最小系统

制作一个linux的u盘最小系统

制作一个linux的u盘最小系统最近在学习linux了,为了了解linux系统的机制,花了一个月时间研究,走了很多弯路,看了很多老资料终于做成功了,现在看起来真简单的一个东西竟然花了那么长时间去做真是浪费啊!主机环境:ubuntu 11.04 (我用XP下的的虚拟机)u盘: 金士顿 2G下载内容:最新内核linux-3.3最新制作内核文件工具: busybox-1.9.2过程如下:1.u盘分区1)将优盘分成3个区,两个主分区,一个扩展分区。

用到的终端命令是fdiskfdisk /dev/sdb 进入u盘操作-p查看分区-d删除分区-n创建分区-a激活分区-w保存分区表并退出-q退出不保存分区表这些都是我用到的命令。

至于分区的大小,就随意了,你看着那个block自己划分吧,错了也没关系,回到上面继续改就是了。

2)格式化分区先卸载u盘上的所有分区才能格式化的。

mkfs.ext2 /dev/sdb1 格式化你的主分区mkfs.vfat /dev/sdb3 格式化你的扩展分区你可也用df -lh查看你的mount关系。

2.grub/grub2安装先要把安装的分区挂载在一个地方才能安装成功的,这是我试了好多次,失败了好多次才知道的。

mount /dev/sdb1 /tmpgrub-install --root-directory=/tmp/boot /dev/sdb将grub安装到/dev/sdb u盘的mbr上这个时候你会发现在你的/dev/sdb1分区下出现一个boot目录,里面有grub目录和很多文件。

3)在系统根目录下/boot/grub/下将grub.cfg拷贝到你的U盘分区/boot/grub下面吧,进去修改grub.cfg就可以启动u盘了。

只修改两个地方就行了,一个是UUID,一个是root。

至于uuid你把u盘插拔一下,用df查看你的分区挂载在哪个上面的uuid,复制下来修改。

至于root,你用u盘启动,进入grub命令行,用ls命令查看一下,哪个盘符下面有个boot目录,哪个盘符就是你的分区,记住它,出去改一下root里面的名字就行了。

minix操作系统设计与实践 概述及解释说明

minix操作系统设计与实践  概述及解释说明

minix操作系统设计与实践概述及解释说明1. 引言1.1 概述引言部分将对整篇长文进行简要概述,并介绍文章的结构和目的。

本文将讨论MINIX操作系统的设计与实践,包括MINIX的概述、设计原则以及实践应用等方面内容。

同时,我们还会对MINIX的内核架构进行详细分析,包括内核组成部分、进程管理子系统以及文件系统子系统等。

此外,我们也会介绍MINIX的用户界面和工具集,包括用户界面概述、Shell命令解析器以及编译和调试工具链等内容。

最后,文章将以总结和展望作为结尾。

1.2 文章结构本文共分为五个部分:引言、MINIX操作系统设计与实践、MINIX内核架构分析、MINIX用户界面和工具集介绍以及结论。

其中,引言部分主要是对全文进行简要概述,并介绍了每个部分的内容安排。

1.3 目的本文旨在深入了解和解释MINIX操作系统的设计与实践,并对其各个方面进行详细探讨。

通过对MINIX操作系统的研究,在学术领域中推动操作系统领域的发展,并为读者提供一个全面了解MINIX操作系统的参考资料。

此外,通过对MINIX内核架构和用户界面工具集的分析,读者将能够更好地掌握操作系统的设计原则和实践应用,从而为自己的研究和开发工作提供有益指导。

以上是引言部分的内容,主要包括概述、文章结构和目的三个方面的说明。

希望能够清晰明了地介绍本文的主题和内容安排,以吸引读者继续阅读。

2. MINIX操作系统设计与实践:2.1 MINIX概述:MINIX是一个小型的Unix-like操作系统,由Andrew S. Tanenbaum 教授在1987年首次发布。

它的名称“MINIX”代表“Minimal Unix”,这意味着它被设计成轻量级且具有最基本的功能。

MINIX旨在用于教学目的,并作为学生了解操作系统原理和实践的工具。

2.2 MINIX设计原则:MINIX的设计遵循几个关键原则。

首先,它被设计成非常模块化和可扩展的,使得内核中的各个功能模块可以独立开发、测试和维护。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

自己动手做一个迷你型Linux操作系统本文要构建的这个迷你型的Linux 系统只能在一台特定的单机上运行,如果读者朋友们有兴趣的话,在这个系统的基础上加以改进,是可以构建出通用的、可以在大多数常规PC 机上即插即用的系统来的。

但是这已经不在本文的话题之内了,读者朋友们如果有兴趣,可以通过我的电子邮件和我讨论其中的细节问题。

我们的目标Linux 系统运行在一台普通的Intel 386 PC 机上,可以有硬盘,也可以不要硬盘,而用Flash Disk 来代替。

如果是用Flash 盘的话,需要能够支持从Flash 盘启动,而且Flash 盘的大小要在16M 字节或者以上。

我们希望用户一开机启动,就直接进入X Window 图形界面,运行事先指定好的程序。

不需要用户输入用户名和密码进行登录。

我们设定的这个目标有点像一个X Terminal 终端工作站。

稍加改进,还可以做成干脆无盘的形式,也就是说,连16M 的Flash 盘也不要了。

不过,这也超出了本文的话题了。

读者朋友们如果有兴趣,可以来信和我进行讨论。

系统启动因为我们要考虑从Flash 盘进行启动,所以我们选择用LILO 作为我们的Boot Loader,而不选用GRUB。

这是考虑到GRUB 有较强的对硬盘和文件系统的识别能力,而Flash 盘到底不是标准的硬盘,并且我们选用的文件系统GRUB 又不一定认识,搞不好的话GRUB 反会弄巧成拙。

而LILO 就简单的多了,它在硬盘开始的MBR 写入一个小程序,这个小程序不经过文件系统,直接从硬盘扇区号,读出Kernel Image 装入内存。

这样,保险系数就大大增加。

并且也给了我们自由选用文件系统的余地。

那么,我们要如何安装LILO 呢?首先,我们要找一块普通的800M 左右的IDE 硬盘,连在目标机器的IDE 线上。

这样在我们的目标机器上,IDE1 上挂的是Flash 盘,IDE2 上挂的是一块工作硬盘。

我们用标准的步骤在IDE2 的标准硬盘上装上一个DebianGNU/Linux 系统。

当然,如果读者朋友们手头没有Debian,也可以装Red Hat 系统。

装好工作系统之后,要首先做一些裁减工作,把不必要的Service 和X Window 等等东西都删掉。

这样做的目的是增进系统启动速度,因为我们在后面的工作中,肯定要不停的重新启动机器,所以启动速度对我们的工作效率是很关键的。

装好工作系统之后,在Falsh 盘上做一个Ext2 文件系统,这个用mke2fs 这个命令就可以完成。

由于Flash 盘是接在IDE1 上的,所以在Linux 里面,它的身份是/dev/hda。

本文作者在操作的时候,把整个Flash 盘划分了一个整个的分区,所以,调用mke2fs 的时候,处理的是/dev/hda1。

读者朋友们应该可以直接在/dev/hda 上做一个Ext2 文件系统,而不用事先分区。

在Flash 盘上做好了文件系统之后,就可以把一个编译好的内核映像文件vmlinuz 拷贝到Flash 盘上了。

注意,必须要先把这个vmlinuz 映像文件拷贝到Flash 盘上,然后才能在Flash 盘上安装LILO。

不然的话,LILO 到时候可是会LILILILI 打结巴的,因为它会找不到Kernel Image 在Flash 盘上的位置的,那样的话Flash 盘也就启动不起来了。

还有,如果读者朋友们在Flash 盘上用的是一个压缩的文件系统的话,到时候LILO 也会出问题,它虽然能正确的找到Kernel Image 在硬盘上的起始位置,但是它却没有办法处理被文件系统重新压缩过的这个Kernel Image,不知道该如何把它展开到内存中去。

把Kernel Image 拷贝过去以后,我们就可以动手编辑一份lilo.conf 文件,这份文件可以就放在工作系统上就行了。

但是注意在lilo.conf 中索引的文件名的路径可要写对。

这些路径名都是在工作系统上看上去的路径名。

比如,如果Flash 盘Mount 在/mnt 目录下面,那么,在lilo.conf 中,vmlinuz 的路径名就是/mnt/vmlinuz。

注意这一点千万不要搞错。

不然的话,如果一不小心把工作系统的LILO 给破坏掉了,那就麻烦了。

编辑好了lilo.conf,然后再运行lilo 命令,注意,要告诉它用这个新的lilo.conf 文件,而不要用/etc/lilo.conf。

安装好LILO 之后,我们可以立即重新启动,测试一下。

首先在BIOS 里面,设置成从IDE1 开始启动,如果我们看到LILO 的提示符,按回车后还能看到Kernel 输出的消息,这就算是LILO 的安装成功了。

记得这个操作的方法,以后每次我们更新Flash 盘上的Kernel Image,都记得要更新LILO。

也就是说,要重新运行一遍lilo 命令。

编译内核试验成功LILO 的安装以后,我们开始考虑编译一个新的内核。

当然,要编译新的内核,我们首先要进入我们的工作系统。

这里有两个办法进入工作系统,一是在BIOS 里面设置从IDE2 启动,当然,这就要求当初安装工作系统的时候,要把LILO 安装在/dev/hdb 上;另一个办法是还是从IDE1 启动,不改变BIOS 的设置,但是在看到LILO 的提示符的时候,要键入linux root=/dev/hdb1,最前面的linux 是在lilo.conf 里面定义的一个entry,我们只采用这个entry 所指定的Kernel Image,但是用/dev/hdb1 作为root 文件系统。

两个办法可能有的时候一个比另一个好,更方便一些。

这就要看具体的情况了。

不过,它们的设置并不是互相冲突的。

在编译内核的时候,由于我们的内核是只有一台机器使用的,所以我们应该对它的情况了如指掌;另外一方面,为了减低不必要的复杂性,我们决定不用kernel module 的支持,而把所有需要的东西直接编译到内核的里面。

这样编译出来的内核,在一台普通的586 主板上,把所有必要的功能都加进去,一般也不到800K 字节。

所以,这个办法是可行的。

而且减低了init scripts 的复杂程度。

从运行方面来考虑,由于需要的kernel 代码反正是要装载到内存中的,所以并不会引起内存的浪费。

在我们的目标平台上,我们希望使用USB 存储设备。

还有一点要注意的,就是对Frame buffer 的支持。

这主要是为了支持XFree86。

一般说来,如果我们的显卡是XFree86 直接支持的,那当然最好,也就不需要frame buffer 的内核支持。

但是如果XFree86 不支持我们的显卡,我们可以考虑用VESA 模式。

但是XFree86 的VESA 卡支持运行起来不太漂亮,还有安全方面的问题,有时在启动和退出X Window 的时候会出现花屏。

所以我们可以采用kernel 的vesa 模式的frame buffer,然后用xfree86 的linux frame buffer 的驱动程序。

这样一般就看不到花屏的现象了,而且安全方面也没有任何问题。

devfs 也是我们感兴趣的话题。

如果kernel 不使用devfs,那么系统上的root 文件系统就要有/dev 目录下面的所有内容。

这些内容可以用/dev/MAKEDEV 脚本来建立,也可以用mknod 手工一个一个来建。

这个方法有其自身的好处。

但是它的缺点是麻烦,而且和kernel 的状态又并不一致。

相反的,如果使用了devfs,我们就再也不用担心/dev 目录下面的任何事情了。

/dev 目录下面的项目会有kernel 的代码自己负责。

实际使用起来的效果,对内存的消耗并不明显。

所以我们选择devfs。

busybox有了LILO 和kernel image 之后,接下来,我们要安排root 文件系统。

由于flash 盘的空间只有16M 字节,可以说,这是对我们最大的挑战。

这里首先要向大家介绍小型嵌入式Linux 系统安排root 文件系统时的一个常用的利器:BusyBox。

Busybox 是Debian GNU/Linux 的大名鼎鼎的Bruce Perens 首先开发,使用在Debian 的安装程序中。

后来又有许多Debian developers 贡献力量,这其中尤推busybox 目前的维护者Erik Andersen,他患有癌症,可是却是一名优秀的自由软件开发者。

Busybox 编译出一个单个的独立执行程序,就叫做busybox。

但是它可以根据配置,执行ash shell 的功能,以及几十个各种小应用程序的功能。

这其中包括有一个迷你的vi 编辑器,系统不可或缺的/sbin/init 程序,以及其他诸如sed, ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat ... 等等这些都是一个正常的系统上必不可少的,但是如果我们把这些程序的原件拿过来的话,它们的体积加在一起,让人吃不消。

可是busybox 有全部的这么多功能,大小也不过100K 左右。

而且,用户还可以根据自己的需要,决定到底要在busybox 中编译进哪几个应用程序的功能。

这样的话,busybox 的体积就可以进一步缩小了。

使用busybox 也很简单。

只要建一个符号链接,比方ln -s /bin/busybox /bin/ls,那么,执行/bin/ls 的时候,busybox 就会执行ls 的功能,也会按照ls 的方式处理命令行参数。

又比如ln -s /bin/busybox /sbin/init,这样我们就有了系统运行不可或缺的/sbin/init 程序了。

当然,这里的前提是,你在busybox 中编译进去了这两个程序的功能。

这里面要提出注意的一点是,busybox 的init 程序所认识的/etc/inittab 的格式非常简单,而且和常规的inittab 文件的格式不一样。

所以读者朋友们在为这个busybox 的init 写inittab 的时候,要注意一下不同的语法。

至于细节,就不在我们这里多说了,请大家参考Busybox 的用户手册。

从启动到进入shellbusybox 安装好以后,我们就可以考虑重新启动,一直到进入shell 提示符了。

这之前,我们要准备一下/etc 目录下的几个重要的文件,而且要把busybox 用到的library 也拷贝过来。

用ldd 命令,后面跟要分析的二进制程序的路径名,就可以知道一个二进制程序,或者是一个library 文件之间的互相依赖关系,比如busybox 就依赖于libc.so 和ld-linux.so ,我们有了这些知识,就可把动手把所有需要的library 拷贝到flash 盘上。

相关文档
最新文档