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

合集下载

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发行版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文件看起来就舒服多了。

用U盘安装linux操作系统

用U盘安装linux操作系统

制作U盘启动来安装Linux系统一、安装前所需的工具和软件U盘(16G)刻录软件UltraISOLinux系统镜像文件CentOS-6.4-i386-bin-DVD1.iso二、将U盘做成启动盘1、用UltraISO软件打开CentOS-6.4-i386-bin-DVD1.iso镜像2、在启动选项中选择写入硬盘映像,便捷启动--->写入新的硬盘主引导记录(MBR)--->USB-SDD+3、选择USB-HDD+后,弹出一个提示,选择”是”4、点击写入,然后出现提示后选择”是”,然后等待几分钟5、信息框出现刻录成功,代表启动盘已经制作成功6、将CentOS-6.4-i386-bin-DVD1.iso镜像拷贝到U盘下三、戴尔PowerEdge R420安装centOS(注:因为只有一块1G的硬盘,故不需要做RAID)1、插上U盘,启动服务器,按F11进入BIOS选择界面,选择U盘启动2、进入系统的安装界面,选择第一项3、选择语言(亲测选择简体中文不会出现乱码)和启动位置(这里选择Hard drive )选择优盘的盘符。

我这里是/dev/sda4,接着会读取优盘上的数据。

4、按照引导提示选择下一步,选择主机名,根据提示填写管理员密码5、选择安装类型以及分区6、分区时注意,一定要把优盘的勾去掉,我的分区如下图所示然后确认格式化7、我的分区如下图所示然后确认格式化8、引导程序的选择一定要选择硬盘为第一引导,不然默认是优盘启动(装完系统必须要插着优盘才能启动)。

点开更改设备,在下拉“BIOS驱动顺序”里的第一BIOS驱动器处选择硬盘为第一启动9、选择所需安装的系统类型10、进入软件安装进度界面,安装完毕,选择重启11、拔掉U盘,至此linux操作系统安装完成。

制作一个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里面的名字就行了。

嵌入式linux系统开发标准教程

嵌入式linux系统开发标准教程

嵌入式linux系统开发标准教程嵌入式Linux系统开发是一门非常重要的技术,它在嵌入式设备、物联网和智能家居等领域中得到广泛应用。

本文将介绍嵌入式Linux系统开发的标准教程,帮助读者了解该技术的基本原理和常用的开发工具。

一、嵌入式Linux系统开发的基本原理嵌入式Linux系统开发是指将Linux操作系统移植到嵌入式设备中,并针对特定的应用领域进行定制开发。

它与传统的桌面Linux系统有很大的区别,主要体现在以下几个方面:1. 硬件平台的选择:嵌入式设备通常采用ARM架构或者其他低功耗的处理器架构,而不是传统的x86架构。

因此,在进行嵌入式Linux系统开发时,需要根据具体的处理器架构进行相应的移植和优化。

2. 精简的内核:由于嵌入式设备的资源有限,为了提高系统性能和节省资源,嵌入式Linux系统通常会精简内核。

这需要对Linux内核的源代码进行裁剪和优化,以去除不必要的模块和功能,并保留对应用需求的必要功能。

3. 定制化的驱动程序和应用程序:嵌入式设备通常需要与各种外设进行交互,因此需要编写相应的驱动程序。

此外,根据具体的应用需求,还需要定制相关的应用程序和用户界面。

二、嵌入式Linux系统开发的工具嵌入式Linux系统开发需要使用一些常用的工具,下面是一些常用的工具和其功能的介绍:1. 交叉编译工具链:由于嵌入式设备和开发主机的处理器架构不同,无法直接在开发主机上编译和运行目标代码。

因此,需要使用交叉编译工具链,在开发主机上生成适用于目标设备的可执行文件。

2. 调试工具:在嵌入式Linux系统开发过程中,调试是非常重要的一环。

常用的调试工具包括GDB(GNU调试器)和strace(系统调用跟踪工具),它们可以帮助开发人员追踪程序的执行过程和定位错误。

3. 文件系统工具:嵌入式设备的存储资源有限,需要使用文件系统来组织和管理存储的数据。

常用的文件系统工具包括mkfs(创建文件系统)、mount(挂载文件系统)以及文件传输工具(如scp和rsync)等。

linux安装原理

linux安装原理

linux安装原理Linux的安装原理主要是基于以下几个步骤:1. 磁盘分区:在安装Linux之前,需要将硬盘分成多个分区,以便将操作系统及其相关文件存放在不同的分区中。

常见的分区类型包括根分区、/boot分区、/home分区等。

2. 引导加载程序:Linux使用GRUB(GRand Unified Bootloader)作为引导加载程序,它的作用是在计算机启动时加载操作系统。

安装Linux时,会将GRUB安装到硬盘的MBR(Master Boot Record)或EFI系统分区的引导扇区中。

3. 安装文件系统:Linux支持多种文件系统,包括常见的ext4、XFS等。

在安装Linux时,需要选择适合的文件系统,并用mkfs命令创建文件系统。

4. 安装操作系统文件:Linux的安装文件通常以ISO镜像的形式提供,可以使用光盘、U盘或网络进行安装。

安装程序会将操作系统文件复制到事先分好的文件系统中。

5. 配置网络、用户和权限:安装Linux后,需要配置网络连接,包括IP地址、子网掩码、网关等。

同时,也要创建用户账户,并设置文件和目录的权限,以保护系统的安全性。

6. 安装软件包管理器:Linux提供了各种软件包管理器,如Debian系列的APT、Red Hat系列的Yum等。

安装完成后,可以通过软件包管理器安装、更新和卸载软件包。

7. 安装驱动程序:对于一些硬件设备,需要安装相应的驱动程序才能正常使用。

Linux提供了开源的驱动程序,也支持部分厂商提供的闭源驱动程序。

通过以上步骤,Linux操作系统就可以被成功安装到计算机上,用户可以根据自己的需求进一步配置和使用该系统。

vmlinux生成流程

vmlinux生成流程

vmlinux生成流程vmlinux是Linux内核的可执行文件,它是内核源代码经过编译、链接等一系列处理后生成的。

下面我们将详细介绍vmlinux生成的流程。

1. 内核源代码编译vmlinux的生成过程首先需要对Linux内核的源代码进行编译。

编译器将源代码翻译成机器可以执行的目标代码,生成一系列的中间文件。

在编译过程中,需要注意选择合适的编译选项,以及处理一些与平台相关的代码。

2. 汇编代码生成在编译过程中,还会生成一些汇编代码。

汇编代码是与机器硬件直接相关的代码,它负责处理底层的硬件操作。

汇编代码一般保存在以".S"为后缀的文件中。

3. 链接过程编译完源代码和汇编代码后,需要进行链接操作。

链接器将各个模块的目标代码组合在一起,解析符号引用,生成最终的可执行文件。

在链接过程中,还需要处理一些与库相关的操作,如动态链接库和静态链接库的链接。

4. 符号表生成在链接过程中,还会生成符号表。

符号表是一个记录了各个符号(函数、变量等)地址和大小的表格,它有助于调试和动态加载等操作。

符号表一般保存在可执行文件的调试信息中。

5. 优化处理在生成vmlinux的过程中,还需要进行一些优化处理。

优化处理旨在提高代码的执行效率,减少资源占用。

优化处理涉及到很多技术,如代码折叠、循环展开、指令调度等。

6. 生成vmlinux经过以上的编译、汇编、链接和优化处理,最终可以生成vmlinux文件。

vmlinux是一个可执行的二进制文件,它包含了Linux内核的所有代码和数据。

vmlinux可以被直接加载到内存中执行,成为一个运行的操作系统。

总结:vmlinux的生成过程经历了源代码编译、汇编代码生成、链接过程、符号表生成、优化处理等多个阶段。

通过这些处理,我们可以得到一个完整的可执行的Linux内核文件。

vmlinux的生成过程是复杂而严谨的,需要编译器、链接器等工具的支持,同时也需要开发人员对内核源代码和底层硬件有深入的理解。

initramfs 生成过程

initramfs 生成过程

initramfs 生成过程initramfs 是一个用于引导 Linux 系统的初始内存文件系统。

它包含了用于引导过程中所需的关键文件和工具,例如驱动程序、文件系统工具等。

initramfs 的生成过程可以分为几个关键步骤。

首先,生成 initramfs 的过程通常是由操作系统安装程序或者更新程序自动完成的。

在安装或更新 Linux 内核时,系统会自动构建 initramfs。

但是,如果需要手动生成 initramfs,可以通过以下步骤完成:1. 收集必要的文件和工具,生成 initramfs 首先需要收集引导过程中所需的文件和工具,包括设备驱动程序、文件系统工具、初始化脚本等。

这些文件通常位于系统的 /lib 目录下。

2. 创建临时目录,在生成 initramfs 的过程中,需要创建一个临时目录来存放生成的文件系统内容。

3. 打包文件系统,将收集到的文件和工具打包成一个 cpio 归档文件。

这个归档文件将会成为 initramfs 的内容。

4. 压缩归档文件,对生成的 cpio 归档文件进行压缩,通常使用 gzip 或者 xz 等压缩工具进行压缩,以减小 initramfs 的体积。

5. 将压缩后的归档文件重命名为 initramfs 文件,生成的压缩归档文件需要被重命名为 initramfs 文件,并放置在系统的/boot 目录下。

需要注意的是,生成 initramfs 的具体步骤可能会因不同的Linux 发行版而有所差异,例如使用不同的打包工具或压缩工具。

因此,在手动生成 initramfs 时,最好参考所使用 Linux 发行版的官方文档或者社区指南,以确保按照正确的步骤进行操作。

总的来说,生成 initramfs 的过程涉及到文件收集、打包、压缩和命名等步骤,最终生成的 initramfs 文件将会包含引导 Linux 系统所需的关键文件和工具,以确保系统能够成功引导到正常运行状态。

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

最小的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的启动过程和系统的基本结构,而且是一个喜欢动手研究小玩意的人,那么这个文档可以满足你的需求。

如果你仅仅是用linux来做一些普通的日常工作,而不在乎你的linux到底怎么工作,那么这份文档也许不太适合你。

另外,如果你是linux爱好者,但是目前还是一个刚刚入门的newbi,我建议你先把linux命令学好。

不过我想我会尽可能的把这份文档写详细一些,如果你有足够的毅力,或许一个newbi也能成功做一个babylinux。

或者,你遇到一件很不巧的事情,比如你的老婆来例假了,你的这个周末就泡汤了,那么阅读这篇文档并做一个linux小玩具可以打发你的时间。

四,应该具备的知识在做一个babylinux之前,你应当已经会应用linux最常用的命令。

并且至少有一次成功编译并安装系统内核的经历,会通过编译源代码来安装软件。

如果你具备了这些条件,那么做这样一个小系统会很顺利,如果你还没有掌握这些知识,你可能会遇到一些困难。

但是只要有毅力,也可以成功。

你不需要具备编程的知识,因为我的目标是:让具有中等以上linux水平的爱好者可以通过阅读文档轻松完成这个项目。

关于一张软盘上的linux还有一个很著名的linux叫LOAP(Linux On AFloppy) 但是他是由比较专业的人员需要编写很多程序完成的。

而且没有关于他制作过程的文档。

五,linux系统引导过程简介首先,主板的BIOS会读取硬盘的主引导记录(MBR),MBR中存放的是一段很小的程序,他的功能是从硬盘读取操作系统核心文件并运行,因为这个小程序太小了,因此通常这个小程序不具备直接引导系统内核的能力,他先去引导另一个稍微大一点的小程序,再由这个大一点的小程序去引导系统内核。

在linux 系统中这样的小程序有LILO和GRUB。

在这个项目中,我决定用LILO来做系统引导程序。

在软盘上启动linux系统的过程和在硬盘上启动的过程相似。

Linux系统内核被引导程序装入内核并运行后,linux内核会检测系统中的各种硬件。

并做好各种硬件的初始化工作,使他们在系统正式运行后能正常工作。

之后内核做的最后一个工作是运行/sbin 下的init程序,init是英文单词initialization(初始化)的简称,init程序的工作是读取/etc/inittab文件中描述的指令,对系统的各种软硬件环境做最初化设定。

最后运行mingetty等待用户输入用户名登录系统。

所有的工作就这么简单,虽然linux启动的时候有很多内容,看上去十分高深,但是都不过是对这个过程的扩充。

明白了这个道理,你可以写一些脚本程序让他在系统启动的特定时间运行完成任务。

事实上系统内核并不关心/sbin 下的init是不是真的init,只要是放在/sbin下名叫init的可执行程序他都可以执行。

可以做以下实验:编写一个非常简单的C程序:main(){printf(“hello,world!\n”);}保存后以init。

c保存他,并用gcc编译。

#gcc –-static -o init init。

c这里的--static 参数告诉gcc把这个程序静态联接,这样这个程序不倚赖任何库就能运行。

把编译好的init程序拷贝到/sbin下,备份好原来的那个。

重新启动系统最后系统的输出结果是: hello,world!然后停在那里。

做这个实验以前先确定你知道如何把系统恢复到原来的状态,有一个简单的方法,在内核启动前给他加上init=参数,比如你原先的init 被你改成了init。

bak 只要在启动的时候给内核加上init=/sbin/init。

bak就可以用原来的init程序启动系统。

做完以上实验,就明白了内核和init程序之间的关系。

此外,init程序不一定是一个二进制可执行程序,他可以是一个bash脚本,一个指向另一个程序的联接,他的位置也并不一定要在/sbin下,只要在启动内核时,给内核加上init 参数就能被运行,比如,开始时给内核加上init= /bin/bash参数,内核在最后一步就直接运行bash给出提示符,不用登录系统就可以输入命令了。

其功能类似单用户模式启动系统。

/sbin/init 程序只是内核默认运行的第一个程序。

六,编译一个linux系统内核1,编译前的规划和准备在编译内核前,请先确定你的需求,把你的需求罗列成一张详细的表格。

你需要让内核支持什么硬件,支持多少种分区类型和文件系统,支持哪些网卡,支持哪些网络协议。

等等。

请尽可能详细的罗列这些内容,但是你也不要太贪心,因为你所有能利用的空间只有1440K,如果你编译出一个大于1440K或很接近这个数字的内核,你的这个项目就不能完成了,你已经没有空间再放ramdisk映象文件,除非你原意再多出一张软盘,做一个两张软盘的小linux系统。

对于声卡驱动之类,我劝你还是放弃吧,因为一个声卡驱动也许只让你的内核增大了十多K,但是你有了一个声卡驱动就务必要有一个播放器吧,否则声卡驱动就没有意义,可一个播放器的大小可不是一张软盘可以装得下的。

在我先前制作的babylinux内核有900多K,其中,文件系统部分站了大部分,因为我的目标是把他做成一个系统修复盘。

因此我在内核中编译7种文件系统的支持,每减少一个文件系统就可以减小几十甚至200多K的内核大小。

越是复杂,越是安全的文件系统,其支持模块也越大,比如在linux下FAT模块只有32K,VFAT只有17K,但是ext3的模块就有86K,JFS达到216K,reiserfs模块是224K,可以想像,编译一个支持7个文件系统的900多K的内核,文件系统部分就占了600K 以上的空间,所以如果某一个文件系统是你根本不用的,那么还是不要编译进内核把,这样至少可以省下100多K的空间。

对于其他的驱动,比如网卡,通常大小只有8,9K,最大的也不过10多K,因此可以把常用的网卡芯片的驱动都编译进去。

另外如果你想让你的babylinux支持U盘,那么scsi的驱动模块也是不可小看的,他通常要接近150K,因为U盘是被当做scsi设备来驱动的。

另外你还需要让你的内核支持即插即用,这些都是不小的空间开销,我的建议是你放弃一两个你不用的文件系统。

总之,你最后编译出来的内核大小最好不要超过900K,否则你在busybox里只能编译进去很少的命令。

在我编译的busybox中,我编译进去120多个命令,基本上把busybox支持的命令都包括进去了。

加上小系统所必需的文件系统目录,/dev下的设备文件,以及/etc下几个必需的配置文件,做成ramdisk压缩后的大小是440多K,加上900K左右的内核刚好可以放入一张1440K软盘,请注意,你应该留下至少50K 的空间,因为我们要在软盘上创建一个ext2文件系统,而文件系统本生需要占据大概25K的磁盘空间。

另外lilo的引导文件boot。

b的大小是5。

7K,还有装上lilo后自动产生的map文件也要10多K的空间,map文件的具体大小由内核安装的实际大小决定,通常不会超过30K。

综上所述,请遵循下面的公式:内核大小+文件系统压缩印象文件+50K <= 1440K另外一点需要说明的是:以上所罗列的文件系统模块大小是察看我现在使用的Redhat 9 的/lib/modules下的模块文件得到的,实际编译进内核大小会小一点,因为我们用make bzImage在内核源代码目录树下生成的内核是经过压缩过的。

如果你对以上说的内容不太明白也没有关系,我会在下面的内容中做详细的说明。

2,必需编译进内核的内容首先,我们制作的这个小系统是基于一张软盘的,因此,你的内核必需支持软盘。

另外对IDE硬盘和cdrom的支持也是不可少的,否则做出来的babylinux 就没有实用价值,因为他不能访问硬盘和光盘上的内容这样的linux虽然可以做的更小,但是制造一个完全没有用的东西是浪费时间。

其他的包括framebuffer 等,如果你需要支持在字符界面下以高分辨率显示,以看到更多的屏幕内容,那么就必需把framebuffer支持编译进内核,此外在高分辨率下使用的8x8字体也必需编译进去。

否则即使你给内核传递了vga= 参数,内核会因为没有可用的小字体而自动转跳到低分辨率模式下,这是以前困扰我好几天想不明白的事情,后来通过反复试验才明白原来是缺少字体的文体。

这里我先大致提一下需要注意的事情。

在下一小节具体编译时,我会继续就某些细节问题说明。

3,关于内核的版本我是在Redhat 9 linux系统下打造的babylinux小系统。

使用的是Redhat 9 自带的2。

4。

20版的内核。

为什么我不用最新的2。

6的内核?一开始我也企图用最新的内核,但是通过试验我发现,在用最新的2。

6。

9内核的情况下,我编译一个all-no的(即所有内容都选N,不支持任何硬件,只有一个最基本的内核)最小化内核就要460K左右,如果我在这个基础上再加入几种文件系统和必要的驱动,那么内核的大小就不能装下一张1440K的软盘,而我用2。

相关文档
最新文档