Embedded 版 (精华区)

发信人: Zinux (Linux技工), 信区: Embedded_system
标  题: 从源代码打造一个最小化的Linux系统实作指南ux环境下
发信站: 哈工大紫丁香 (2001年06月12日19:23:08 星期二), 站内信件

从源代码打造一个最小化的Linux系统实作指南ux环境下的网络编程

 以下就是从源代码中打造一个最小化的Linux系统的操作说明.它曾经是《从加电
 
启动到Bash提示符(From PowerUp to Bash Prompt)》的一部分.但是我将它们分
离 
开来,以便使得它们更简短而更为集中化.我们在此所要打造的系统是非常小的 

,而且并不准备作为工作产品来使用.如果您想从头开始打造一个有实际用途的 

系统,请参阅Gerard Beekmans所撰写的 Linux空手道实作指南篇 (Linux From 
Scratch HOWTO). 
_________________________________________________________________ 

1. 您所需要具备的条件 

我们首先要安装一个Linux发行套件比如小红帽(RedHat)到一个分区上,然后使用
 
它来在另一个分区上打造一个新的Linux系统.我将我们所要打造的系统称为目标
 
系统(target)而把我们所使用来打造新系统的系统称为源头系统(source).可别 

把这个源头(source)系统同我们同时使用的源码(source code)相混淆了哦.:) 

因此,您得需要一台具有两个独立分区的机器.如果可能,请尽量使用一台没有 

重要资料在里头的机器,以免数据受损.您可以使用一个已经存在的Linux系统作
 
重要资料在里头的机器,以免数据受损.您可以使用一个已经存在的Linux系统作
 
为源头系统,但是我并不推荐这种方式.如果您不慎遗漏了我们打造的指令的某 

些参数,您有可能会意外地在这个系统上安装了一些没有必要的东西,有可能会 

导致不兼容和冲突. 

旧型的PC机硬件,大部分的486机器或者更早的机型,其BIOS都有一些极其烦人的
 
限制.它们没有办法读取硬盘超过前512兆之后的空间.当然,这个对于Linux来 

说并不是什么大问题,因为只要Linux能够引导启动了,将使用Linux自己的磁 
盘IO,略过BIOS的调用.但是为了能够让这些旧型机器能够引导Linux,那 
么Linux内核必须存放在硬盘的前512兆之前的某个位置.如果您正好有这么个旧 

型机器,您得准备好一个独立的且完全在前512兆范围内的硬盘分区,并将其挂载
 
为/boot.其它的分区就可以在任何位置,可以任意处理而不必担心是在硬盘的什
 
么位置了. 

上一次我打造这个系统时,所使用的源头系统是小红帽6.1(RedHat 6.1),我安装
 
了基本系统,附加有以下软件包∶ 

* cpp (C++编译器) 
* egcs (增强型C编译器) 
* egcs-c++ (增强型C++语言编译器) 
* patch (打补丁程序) 
* make (编译批处理解释器) 
* dev86 (设备文件包) * dev86 (设备文件包) 
* ncurses-devel (ncurses库开发包) 
* glibc-devel (glibc库开发包) 
* kernel-headers(内核源码头文件包) 

我还安装了X Window视窗系统和Mozilla网络浏览器以便更轻松地阅读文档,而实
 
际上这两个东东并不是必要的.在我竣工之时,这个源头系统大概使用了350兆的
 
磁盘空间(看起来是多了一些,可是我还在纳闷为什么呢). 

竣工之时的目标系统占用了650兆磁盘空间,但是这个数值包含了所有的源码以及
 
中途打造出来的文件.如果空间比较紧凑,您应该在每个软件包都打造完毕之后 

执行一下make clean来清除临时文件.当然了,我对这个也是有点吃惊的. 

最后,您的准备好我们所要用来打造系统的源码包.这些就是我在本文所讨论的 

软件包.这些软件包都可以从源码盘里面找到,或者从国际互联网上找到.我会 

给出美国的站点和位于澳大利亚的镜像站点的地址. 

* MAKEDEV (设备生成器包) 
美国站点:ftp://tsx-11.mit.edu/pub/linux/sources/sbin 
另外一个美国站点:ftp://sunsite.unc.edu/pub/Linux/system/admin 
* Lilo (Linux引导器包) 
美国站点:ftp://lrcftp.epfl.ch/pub/linux/local/lilo/ 
澳大利亚: ftp://mirror.aarnet.edu.
au/pub/linux/metalab/system/boot/lilo 澳大利亚: ftp://mirror.aarnet.
edu.au/pub/linux/metalab/system/boot/lilo 
* Linux内核包(Kernel) 使用 主页上所列举的镜像站点而最好不要使用美国 
站点站点下载,因为这些站点通常是超负荷运转的. 
美国站点:ftp://ftp.kernel.org/pub/linux/kernel 
澳大利亚站点: ftp://kernel.mirror.aarnet.edu.au/pub/linux/kernel/ 
* GNU libc库包 其本身,以及liuxthreads线程附加库可在以下地址下载到∶ 
美国站点:ftp://ftp.gnu.org/pub/gnu/glibc 
澳大利亚站点:ftp://mirror.aarnet.edu.au/pub/gnu/glibc 
* GNU libc附加库包 您可能还会需要linuxthreads线程附加库和libcrypt加密 
附加库. 如果libcrypt没在那个站点找到,那就是因为美国出口法律限制的 
原因, 那么您就可以从这里弄到libcrypt加密附加库. 通常linuxthreads 
线程附加库跟libc库是放在同一个地方的. 
libcrypt加密附加库:ftp://ftp.gwdg.de/pub/linux/glibc 
* GNU ncurses 
美国站点:ftp://ftp.gnu.org/gnu/ncurses 
澳大利亚站点:ftp://mirror.aarnet.edu.au/pub/gnu/ncurses 
* SysVinit (初始化脚本包) 
美国站点:ftp://sunsite.unc.edu/pub/Linux/system/daemons/init 
澳大利亚: 
ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/daemons/init 
* GNU Bash (命令解释器包) 
美国站点:ftp://ftp.gnu.org/gnu/bash 
澳大利亚站点:ftp://mirror.aarnet.edu.au/pub/gnu/bash 澳大利亚站点:ftp:
//mirror.aarnet.edu.au/pub/gnu/bash 
* GNU sh-utils (命令解释器工具包) 
美国站点:ftp://ftp.gnu.org/gnu/sh-utils 
澳大利亚站点:ftp://mirror.aarnet.edu.au/pub/gnu/sh-utils 
* util-linux (Linux常用工具包) 本软件包包含有agetty和login。 
另外一个站点:ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/ 
澳大利亚站点:ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/misc 

总结一下,您所需要的就是∶ 
* 一台具有两个分别是400兆和700兆独立分区的机器,或许您可能会需要少一 
些. 
* 一个Linux发行套件(譬如一个RedHat光盘)和安装方式(譬如一个光驱) 
* 以上所列举的源码的tar包. 

我假定您可以自己安装源头系统,而用不着我来帮忙.从这里开始,我假定源头 

系统已经安装好了. 

本小项目的第一个里程碑就是使得内核启动起来然后死翘翘,因为它没找到init 

初始化程序.也就是说我们得安装一个内核和安装lilo.为了顺利安装lilo,我 

们要用上在目标系统上/dev目录下的设备文件.lilo需要它们来实现底层必需的 

磁盘存取来写入引导扇区.MAKEDEV正是用来创建这些设备文件的脚本程序(您当 

然可以只需要从源头系统当中复制出来,不过这可是作弊不劳而获哦).但是最重
 
要的事情就是,我们需要一个文件系统来放置所有的这些东西. 
--

  puke! 
  技工而已

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.239.152]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.325毫秒