首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>系统管理>系统管理>正文

从源代码中打造一个最小的Linux系统

http://www.oklinux.cn  2007-10-15  来源:  sixth  会员收藏  游客收藏  【 】 

我们在此所要打造的系统是非常小的,而且并不准备作为工作产品来使用。如果您想从头开始打造一个有实际用途的 系统,请参阅Gerard Beekmans所撰写的 Linux空手道实作指南篇 (Linux From

Scratch HOWTO)。

 

您所需要具备的条件

 

我们首先要安装一个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正是用来创建这些设备文件的脚本程序(您当然可以只需要从源头系统当中复制出来,不过这可是作弊不劳而获哦)。但是最重

要的事情就是,我们需要一个文件系统来放置所有的这些东西。

 

 


上一篇:Linux系统中BSD套接口开发基础介绍   下一篇:Linux系统启动时间的极限优化


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux系统启动时间的极限优化
·Linux系统出现严重故障后的救援模式
·如何监控和保护Linux系统的运行进程
·关于Linux系统下加载NTFS分区的方法
·介绍使用Yum自动更新Linux系统服务器的方法
·Linux系统下的共享文件夹用户设定
·充分利用Linux的安全防护工具
·Windows到Linux系统代码移植遇到的问题
·Linux操作系统文件分卷压缩和合并的方法
·一个监控磁盘空间大小并自动报警的脚本
·让Linux系统支持FAT格式的磁盘分区
·在Linux环境下如何使用ReiserFS文件系统
·XP下移动硬盘装Linux后变“死盘”的解决
·Linux下Grub与Grub2配置文件对比
·在Linux系统中对不同版本的软件进行管理
·Linux系统环境下NFS文件系统的简单搭建过程
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·在Linux系统下如何调整文件打开方式
·如何在Linux系统下更改文件使用权限
·如何在Linux系统下创建ISO镜像文件
·Linux系统下如何破解PHP加密dezend软件
·Linux下恢复EXT3 Superblock的正确方法
·学习园地:Linux系统的内存管理指南
·软件推荐:开放源代码软件测试工具介绍
·Linux系统下配置OPENVZ虚拟机的过程解
·Ubuntu Linux系统下修改文档权限的方法
·VMware虚拟机Linux系统通过NAT方式上网
·通过监控Linux的运行进程来保证系统安
·安全宝典:保障Linux系统安全的九大技
  阅读排行
·使用源代码将 Glibc 升级到 2.6
·Linux下推荐的常用应用程序列表
·使用 ActiveScaffold 增强 Ruby on Rai
·什么是Linux?Linux与UNIX之间的关系
·应用:postfix邮件服务器安全策略
·提高Linux系统性能加速网络应用程序
·Linux操作系统的内核引导程序详细解析
·Linux用户(User)和用户组管理概述
·在 Linux on POWER 上利用透明大内存页
·Ubuntu Linux操作系统中的用户管理
·使用/proc文件系统来访问Linux内核
·基于linux操作系统架构openvpn总结
·Grub引导程序的安装、配置及使用汇总
·几种Linux嵌入式开发环境的简单介绍
·C++自动化(模板元)编程基础与应用(1)
网摘收藏: