自己动手做一个迷你Linux系统

本文将带领大家构建一个迷你型的Linux 系统。它占用的硬盘空间远小于 16M 字节,但是却包括了 XFree86 的 X Window 窗口系统。

目标

本文要构建的这个迷你型的 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 的标准硬盘上装上一个 Debian GNU/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 命令。

时间: 2024-09-12 10:26:58

自己动手做一个迷你Linux系统的相关文章

迷你linux系统的启动流程

为了更清晰的了解,尝试简单做一个grub+kernel启动的迷你linux系统 实验环境:vmware9  rhel5.8 第一步:添加所需磁盘 关闭虚拟机rhel5.8,然后setting-->add....(亲,这些实在不想写...) 添加一个虚拟磁盘(SCSI.vmdk);注意,此磁盘推荐使用scsi (创建IDE的磁盘,再最后迷你系统引导时内核恐慌...可能是vmware的小bug吧,具体也不清楚) 第二步:创建分区 使用已有的系统rhel5.8为磁盘分俩区(因为系统已有两个磁盘sda,

大家给点建议 做一个公园车辆调度系统

问题描述 最近老师要求做一个公园车辆调度系统,本人java菜鸟,请各位java高手给个大致思路,自己动手做一下,任务大下周要交,急等!非常感谢! 解决方案 解决方案二:先搞清楚这个调度系统的功能,最好形成一份需求文档,然后再考虑技术方面的问题.解决方案三:这个至少要给出要完成的功能啊解决方案四:具体怎么调度啊,用到地图不解决方案五:这个要和硬件打交道么?比如公园门口车被提了.上报系统,在哪个点还车了上报系统?解决方案六:谢谢大家啊,老师啥也没给,就说了个这些解决方案七:那你就自由发挥呗,这都是基

自己动手做一个SQL解释器

自己动手做一个SQL解释器在一些小型的应用中,完全没有必要使用大型数据库软件.自己做一个SQL解释器就能用数据库的方式来管理了.这个解释器,能解释常用的SQL命令.你可以自行添加其他功能. <?phpclass DB_text {  var $conn;  var $classname = "db_text";  var $database;  function on_create() {  }  function connect($database_name) {    $th

mapx-MAPX C++做一个路线选择系统

问题描述 MAPX C++做一个路线选择系统 求大神指导一下 毕业设计急用 又没什么基础很急,,可以买的 解决方案 http://xueshu.baidu.com/s?wd=paperuri%3A%2804477dd92c23b9c93a399ccadbf26324%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Fwww.doc88.com%2Fp-74753124570.html&am

导出 word模板-做一个题库管理系统,怎么将存储在数据库中的试卷内容导出到word模板中呢

问题描述 做一个题库管理系统,怎么将存储在数据库中的试卷内容导出到word模板中呢 C#2008,access2003,做一个题库管理系统,怎么将存储在数据库中的试卷内容导出到word模板中呢,求助各位大神,求代码 解决方案 用npoi操作数据库http://my.oschina.net/yangxiaoguang/blog/264948 解决方案二: 用npoi操作word文档http://my.oschina.net/yangxiaoguang/blog/264948 解决方案三: http

电子商城老师说要做一个假的支付系统

问题描述 电子商城老师说要做一个假的支付系统 电子商城老师说要做一个假的支付系统,不需要对接网银,但是要具备充值的功能,请问怎么实现呢? 解决方案 看你要做的多假了.做一个页面,放一个文本框,输入一个金额,确定,就在你数据库中加上它就行了. 解决方案二: 钱只要能到你的银行卡里就行了 解决方案三: 就是不用调用网银 借口,做个假的 .充值输入金额提交,充值到数据库中像这样差不多 . 解决方案四: 后台数据库 记录用户和对应用户的余额,使用后取得余额减去使用金额,update数据库

框架-C# network comms的服务端程序一定放置在服务器环境下吗 比如做一个即时通讯系统

问题描述 C# network comms的服务端程序一定放置在服务器环境下吗 比如做一个即时通讯系统 有的人做的即时通讯软件客户端和服务端都是在windows系统下直接运行 就是exe文件 如果用这个框架做是不是还得部署到服务器环境下 初次接触网络通信编程 以前也写过用网络通讯程序 ,只是简单的手机控制电脑关机 用不到框架 现在用感觉一头雾水网上都没入门教程直接就是小案例下载下来也无法运行 解决方案 没必要,客户端操作系统就可以.但是服务器操作系统更适合生产环境,它的配置是面向服务器环境的(比

asp.net-用asp。net+acces做一个仓库管理系统

问题描述 用asp.net+acces做一个仓库管理系统 10C 有一个登陆,再有一个连接数据库access 有添加删除 查询功能就行944027604·qqcom 解决方案 http://download.csdn.net/detail/yf634227739/2012634http://download.csdn.net/detail/xuhui19850808/329914http://wenku.baidu.com/link?url=G6XZBq4xPkGIbiWWCaMIS2UAkFv

io流-java面对对象做一个初级的系统

问题描述 java面对对象做一个初级的系统 初级的人事管理系统~~求解人还管理系统的需求,前提是没有数据库,只有java类库和io流 解决方案 姐姐这里有个带论文的带程序的,如果需要的话,采纳了留下你的邮箱哦. 解决方案二: 那么数据存储可以存在文件中而不用数据库啊.