迷你linux操作系统,自己动手做一个迷你型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 的标准硬盘上装上一个 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 命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux查看vtk版本,vtk在linux下的安装(12月8日更新)

安装前准备运行环境:ubuntu14.04 LTS, 64bit //本人在ubuntu 14.10下安装失败安装版本:vtk6.1.0.tar.gz vtkdata6.1.0.tar.gz编译器:g$ sudo apt-cache search gcc*g以保证能搜索到g,然后$ sudo apt-get install gmak…

手动开启群辉php_如何使用Synology从php页面连接到mysql服务器?

我有一个较旧的Synology设备(DSM v5.2-5967 Update 4,phpmyadmin v4.4.7-0103),它有一些带有工作php页面的本地网站.我想将其迁移到我的新Synology设备(DSM V6.1.3-15152 Update 1,phpmyadmin v4.6.6-0172).从Package Center安装新版本的phpmyadmin时,我也需要下载Maria DB和PH…

瑞斯康达nms_瑞斯康达接入网设备维护手册免费.pdf

瑞斯康达接入网设备维护手册免费瑞斯康达接入网设备维护手册瑞斯康达科技发展股份有限公司广东办事处编制二零一三年五月瑞斯康达接入网设备维护手册目录一、 MSAP 产品介绍 41、OPCOM3500E-12 设备简介 42、OPCOM3500E-6 设备简介 53、 ITN2100-12 设备简介 64、 ITN203 设备简…

linux gcc延时怎么写,Clang / GCC是否真的支持延迟加载功能?

如果您 确实经历过与上述标题相关的事情,您是否愿意对此发表评论?我试图使共享对象在Ubuntu上同时被Clang和GCC延迟加载(我实际上不介意使用哪个编译器),但是它们看起来并没有真正支持任何延迟加载功能(我期望延迟加载功能)在需要此功能时&am…

常数乘以无穷大等于多少_请教一个数学问题:无穷大乘以无穷小等于多少?

实在受不了了,只好出来说两句。好歹也是数学这一行的,看她被你们糟蹋成这样实在不忍心。“无穷大量”和“无穷小量”在高等数学中都是趋于特定极限的变量的称呼,一个变量在某一极限过程中趋于无穷大(小),那么此变量称为“无穷大(小…

深度linux支持安卓,深度操作系统 V20(1003)内测版招募:新增手机助手,支持安卓和 iOS 端,管理手机应用、文件...

IT之家9月28日消息 深度操作系统今天发布深度操作系统 20(1003)内测活动招募说明,IT之家获悉,本次操作系统将新增手机助手,支持安卓和iOS端,方便管理手机应用、文件等。更新说明:1、新增手机助手,支持安卓和…

java socket发送定长报文_java socket报文通信(二)报文的封装

昨天我们谈了怎么建立socket通信的服务端和客户端,今天我们就来谈一谈怎么封装报文。什么是报文这里我就不在阐述了,不清楚的朋友可以自己去查资料。我们今天要谈的报文主要友以下几个部分组成:3位同步校验位8位报文长度报文头报文体32位MD5校…

linux nginx 安装stream,Centos7-64bit-编译安装配置Nginx stream四层负载均衡 动态加载

Centos7-64bit-编译安装配置Nginx stream四层负载均衡 动态加载2018-08-10 17:12分享人:老牛yum install screen -y && screen -S nginxsudo yum -y groupinstall "Development Tools" && yum -y epel-release wget gc autoconf automake…

选择排序(java)

选择排序 选择排序是默认前面都是已经排序好的,然后从后面 选择最小的放在前面排序好的的后面,首先第一轮循环的时候默认的排序好的为空,然后从后面选择最小的放到数组的第一个位置,第二轮循环的时候默认第个元素是已经 排序好的…

asp:dropdownlist如何去掉三角箭头_科目二倒库打轮早会压库角,教练9图详解如何快速调车避免压线?...

大家都知道,科目二考试五项中,最难的项目就是倒车入库。史教练在给科二学员指导时,总是强调,练车时不要只记死点。科目二考试过程瞬息万变,学员在倒库过程中,因为脚下离合没控制好,速度快了&…

linux以太网连接树莓派,如何在没有Internet的情况下直接连接到树莓派

描述Raspberry Pi的多功能性意味着您一定会在室外使用它,而这超出了无线网络的范围。那么,如何在不插入键盘和显示器的情况下与之通信呢?不言而喻,在不实际的情况下,要拖着人为输入设备并随身携带显示器。首先需要满足…

ai钢笔工具怎么描线_AI中钢笔工具绘图的实战操作技巧!(干货满满)

下面小编将分几段分别讲述不同的钢笔工具的快捷干货操作哈,学会这些再加上勤学苦练保证玩的六六哒!一、AI软件使用钢笔绘图如何断开路径绘制其他路径?钢笔绘制在AI中和PS的操作是一样的,不过有些细节大家都需要注意就是在绘制的过…

交换次数c语言,插入排序 - C中的比较和交换计数

如何计算插入排序中的比较次数和交换次数?我有10个随机数组。如果有人帮助我如何在这个程序中添加20,50,100,200,500,1000,2000和5000个随机数,我将会非常高兴。我一直在想这个很长时间,但仍然找不到解决办法。插入排序 - C中的比较和交换计数…

c语言查看进程模块,计算机二级考试C语言辅导:进程模块查看

环境:VC6.0/WinXP/SP2/1024*768分辨率个人觉得VCK应该搜寻或翻译一些框架类设计方面的文章,诸如MVC等一些界面、数据、操作分离的,或更高级的文章。写这个工具的目的:用来查看 DLL 是否已经成功注入到目标进程。自用辅助工具&…

二十年后我发明了保姆机器人作文_机器人保姆我的发明作文450字

机器人保姆我的发明作文450字在新疆的妈妈打电话过来说,一岁的小弟弟晚上总是吵吵闹闹,弄得妈妈每天晚上都不能睡一个安稳觉,已经瘦了一大圈。我决定派去年精心研制出来的机器人保姆洛克照顾远在新疆的小弟弟。机器人腾空飞起,在云…

幼儿园 c语言,【资源学习】c语言程序代码,登录幼儿园200个小朋友的数据

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼编写程序,登录幼儿园200个小朋友的数据:姓名、性别、年龄、身高、体重、出生日期,分别按年龄排序后输出。要求:(1)登录数据用函数input()(2)按身高排序用函数sort()(3)输出排序结果用…

android自动回复退订,Android实现短信自动回复,挂电话

原标题:Android实现短信自动回复,挂电话简单功能,配置一下ITelephoney,ITelephony这个接口不能直接用的。需要先在src下新建包com.android.internal.telephony,在其中新建一个File,后缀为aidl(它是一种android内部进程…

前端设置画布的高度_【后期修图】ps画布设置详解

在图像设计时少不了好的工具,现在当下比较流行的软件属 PS 最好,它的功能强大,是设计者的必备工具之一。在今天的内容中,小编要与大家分享下PS中修改画布大小的实例操作步骤,希望文章对大家以后的工作有所帮助。画布大…

Android插u盘自动执行,android tv box ---- 插入u盘直接播放指定文件夹中的视频

android tv box ---- 插入u盘直接播放指定文件夹中的视频思路:1.监听u盘插入广播2.遍历指定目录下的所有文件,找到视频文件3.将符合条件的文件加入播放集合中4.循环播放num one:配置AndroidManifest.xml,注册一个静态广播num two:实现广播接收者public class MyUsbReceiver ext…

down redis集群_redis有哪些集群模式

Redis集群一般有5种:1,主从复制2,哨兵模式3,Redis官方提供的Cluster集群模式(服务端)4,Jedis sharding集群(客户端sharding)5,利用中间件代理,比如豌豆荚的codis等介绍完他们的模式,现在来分析一…