一.linux启动原理

1.加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备;
2.读取并执行第一个启动设备内MBR的boot Loader (即是 grub,spfdisk等程序);
3.依据 boot loader的设置加载kernel,kernel会加检测硬件与加载驱动程序;
4.在硬件驱动成功后,kernel会主动调用init进程,而init会取得runlevel信息;

5.init执行/etc/rc.d/rc.sysinit 文件来准备软件执行的操作环境(如 网络 时区等);

6.init执行runlevel的各个服务的启动(script 方式);
7.init执行/etc/rc.d/rc.local 文件;
8.init执行终端机模拟程序mingetty来启动login进程,最后等待用户登录;
二.手动配置个性化linux(mylinux)
针对主机启动过程中的非必要内容进行简化:
1.对磁盘进行分区,格式化,挂载。

(1.在宿主机中添加一块IDE接口的硬盘(内核默认有IDE接口硬盘驱动)。(如果是SCSI接口的硬盘。内核是不支持的。需要initrd 中的驱动加载成功即可启动)。将磁盘进行分区,修改启动分区。

(2.格式化两块磁盘
第一块

第二块磁盘分区

 

(3.挂载分区

 

(4.在分区中创建grub及将MBR写入磁盘

2.拷贝系统正常运行所需要的内容
(1.拷贝内核和驱动文件

 

(2.在挂载点目录下创建系统启动时所需要的目录
 
 
(3.拷贝虚拟机启动过程的主程序init(/sbin/init)及被改程序调用的系统模块。
 
拷贝被init程序调用的模块
 
 
(5.手动创建第一块分区下的boot/grub/grub.conf引导菜单文件。
 
 
注意:在此处直接新编辑grub.conf 引导菜单文件
此时可以直接加该硬盘添加带一台新的机器中。此时机器可以正常启动。
作为一个单独的系统。

也可以如下:在宿主机器中编辑/boot/grub/grub.conf 文件添加如下内容:

提供选择的方案界面如下:

我选择了第二个系统选项进入系统如下:
 

上图中的加载驱动可以通过修改 initrd文件去掉。在我查阅的书籍中提到linux的内核中默认已经加载有IDE接口的驱动所以在引导启动时仅需要给出内核就行。但是事实并非如此。经过我多次测试,必须在加载有initrd的情况下系统才能够进行下去!!!推测:可能由于系统版本的缘故!

3.这是个性化的linux机器的“裸机已经可以运行了”。不过这是系统仅仅支持一些内置的基础命令如:"cd” 切换目录 "<tab><tab>” 补全信息

要想使自己的小机器支持一些简单的指令可在宿主机运行的情况下使用“which  命令的名称”查看命令的可运行程序的位置。将其拷贝到DIY的机器的硬盘的对应位置。硬盘的目录从挂载点开始。如:ls 命令

使用“which  ls”:
 
拷贝相应的“ls”命令调用的模块

拷贝“ls”的主程序

测试!!!

测试成功!!!!  
4.补充:二.2.(5 中安装背景图片的个性化过程。
(1.使用linux自带的工具imag绘图工具制作该图片。
   ①.安装yum客户端安装工具

 

②.使用yum安装gimp绘图工具(提前将图片上传至管理员家目录“/root”下)

 

③.安装完成后使用“gimp”直接调出程序界面,如图:

④.打开并编辑

⑤.顺便调整一下图片的色深及分辨率。调低一些。(我的是14为色深,640*480分辨率)

⑥.另存图片并选择格式  

⑦.将图片放在某个目录中(我将该图片压缩并拷贝到“/mnt/boot/grub/”下)。

⑧.修改启动菜单 /boot/grub/grub.conf

 

自此这个实验的所有目标已经达到!喜欢的朋友可以进行DIY制作个性化的linux了。以后还可以使用源码编译一个先进的内核,喜欢的朋友可以参考哦!资源共享。希望对大家有所帮助。
                        嗯,韩宇说的对呀!