学习Linux,就要对它的每一个阶段都要有所了解,由于学习的需要,这里,我们要自行搭建操作系统。而搭建操作系统,需要硬件和软件的支持。这里由于条件的限制,我们在虚拟机上完成这一案例。我们都知道,linux操作系统的核心是内核,由于linux是开源的,这里,我们可以直接利用现成的内核,也就是说,内核不用我们自行编写,但是其他的脚本要我们自己去模仿着去编写。
首先,我们看一下linux的工作流程
现在我们要在虚拟机上添加一块硬盘:
要把新添加的硬盘放到一个自己习惯的地方,这里我放到D盘
硬盘创建完成后,我们要去格式化才能用。为了保险起见,我们要先查看一下我们要格式化哪块硬盘,因为现在机器上有两块硬盘
有上图我们看到,我们要格式化的硬盘为上图中的反白处,即sdb硬盘。下面我们要对其进行分区并格式化
我们利用fdisk命令及相关参数来分区,这里我们只分出boot(100M)和/(1G)分区,然后进行格式化并挂载。
分区情况:
利用mkfs命令格式化boot分区和/分区:
挂载分区:
利用 grub-install –root-directory=/mnt/ /dev/sdb来创建grub目录。
拷贝现有的内核文件和驱动:
对驱动进行修改,把驱动文件移到tmp/abc目录下,并进行修改,
由于我们挂载swap分区,所以我们要把init文件里的第87行注释掉,否则会出现错误信息,此时我们要把那个后缀为.img的文件删除,并把修改后的文件进行打包
接着要把该压缩文件拷贝到/mnt/boot/目录下,由于grub文件下缺少grub.conf文件,此时我们要编写此配置文件。
接着我们切换到/mnt/sysroot/目录下,创建dev etc home lib media misc mnt net opt proc root sbin selinix srv sys tftpboot tmp usr var目录
接着我们要把相关文件拷贝到现在的目录中。
然后我们要创建inittab表格,并创建rc.sysinit文件,然后我们把bash文件拷贝到我们穿件的第二块硬盘的bin目录下
接着扔需拷贝大量配置文件,由于要拷贝的工作量很大,所以我们编写一个脚本文件来完成拷贝工作
此时,我们要多执行sync这条命令,意思是说把刚才的操作都同步到硬盘里去。
这时,我们可以尝试打开自制的系统了,这时我们打开另一个新的虚拟机,且要把原有的硬盘删除掉,把刚创建的硬盘加载上去。
打开后是会出现错误的,接下来我们继续修改。此时我们会发现在sysroot目录下少一个bin的目录,创建后,在在下面创建bash文件。修改过后,就可以进去了
接着我们要利用cp.sh脚本来拷贝相关命令文件,如ls等,这时,是没有任何功能的,就相当于裸机,随后我们将进一步完善。
<续>-网络模块、ftp
由于开机时没有开机背景,现在我们借助另一个工具yum来制作图片,然后修改配置文件来达到开机有背景的效果。
现在在根目录下有一个图片,利用yum制作成符合格式的xpm格式的图片,并打包。
修改/mnt/boot/grub/grub.conf的配置文件,在其中加入一条
1.xpm就是制作的图片,然后把字图片移到/mnt/boot/grub/
目录下,然后把刚做的操作同步到新加的硬盘里,重启加入这块硬盘的虚拟机,看到这一效果:
下面我们去添加网络模块,我们利用如下命令查看网卡模块,利用lsmod 来查看名称 大小 使用次数 和依赖关系,查看相关信息时,用modinfo后跟名称来查看,用ramod后跟名称来卸载模块,加载模块用modprobe跟名称或者用insmod跟路径和名称来加载
然后我们去加载模块,使我们的小系统具有网络功能。
首先我们要先创建个目录来存放网络模块,并把模块和依赖关系拷贝过去
接下来就是要去调用模块了,先去配置/mnt/sysboot/etc/rc.d/rc.sysinit文件
然后再加载相应的文件,这里我们依然用cp.sh脚本来完成ifconfig、ping、netstat、kill、sysctl、insmod、
这时我们便可以测试了
这时,网络模块已加载成功。
接下来,我们向这一小系统里加入服务的功能,例如ftp服务。
我们先把ftp这一服务安装到原系统里,然后我们再根据安装的配置文件,做相应的修改,来实现我们这一简易小系统的ftp服务功能
首先我们把vsftpd和配置脚本移植到新创建的硬盘里,这里我们依然用cp.sh这一脚本来移植
由于我们做的是个简易的小系统,且这是我才入手linux,所以,只简单的做到匿名登录,而匿名登录的信息是要存放到相应目录里的,所以我们要先创建此目录
为了实现名称和id的对应关系,我们还要做一些其他的操作
现在修改配置文件
在/mnt/sysroot/etc/nsswitch.conf里倒入如下参数
接着我们还要拷贝一些其他文件
然后我们日志的相关指令注释掉,然后我们要创建一个目录
这时,我们可以测试了
此时,ftp服务已经成功移植到这个小系统里了。