内核移植简单网络服务的实现

  实验目的:实现对内核的移植,了解linux文件系统对启动的影响对linux的启动过程进行更深层次的理解,并掌握ftp服务的启动运行过程。

 

一.   首先了解开机流程:

 

 

开机自检-----àMBR引导(主引导程序)--------àGRUB菜单(引导菜单)------à

加载内核(kernel)---à运行第一个进程INIT(执行一系列的脚本文件)------à启动mingetty进程-------à登陆

二.   移植过程

实验流程

借用宿主机(完好的linux)进行对新硬盘(挂载)的移植内核,配置脚本,等操作 然后在将新硬盘应用到新的机器进行启动,该过程用虚拟机实现。

 

 

<1>.新建宿主机 加一块儿新硬盘

 

有两块儿硬盘

建立MBR的引导分区:

<2>.对硬盘进行分区,建立主分区,引导分区 ,格式化。

 

 

                          新建3个分区

 

 

                                 格式化分区 

 

将新分区sdb1sdb2挂载到/boot sysroot目录下

 

<3.>加载内核

拷贝内核:

 

拷贝驱动镜像:

 

由于硬盘可能不一样所需要的驱动也不一样,所以 要对镜像进行修改

 

93行注释掉即可

 

将其打包并重定向为initrd.gz

<4.>建立grep菜单

然后将 initrd.gz 和镜像 导入到grep菜单中 形成grep菜单

 

<5.>移植init进程

1)    先建立主文件夹下面的文件夹

2)加入调用进程所需要的库

 3)加入inittab 脚本

 

4)加入rc.sysinit

 

5)将其权限设置为可执行

 

6)导入bash命令

先拷贝问价夹  

 

 然后导入如下链接库

 

 

cp.sh脚本进行拷贝

 

拷贝结果:

 

进行第一次登陆

 

登陆成功

 然后一直一些常用的命令

方法和拷贝bash的一样

Ls 

 

设置关机 命令 

应用init命令  由于init关闭需要0级别

所以将宿主机的inittab命令的0级别 重定向到 新系统的inittab

 

编辑新系统的inittab

 

编辑rc.sysdown脚本文件

 

修改执行权限

 

导入用到的halt命令

 

设置主机名

编辑主机名判断的命令

 

创建启动过程的文件

 

创建network 加载网络功能

导入hostname的指令

 

 

加载开机背景

 安装yum   处理依赖关系

 

安装yum

 

 gimP 安装图像处理软件

调整图片大小

 

图片处理完成

 将图片压缩

将图片移动到小系统根目录下

 

将图片加载到开机菜单中

运行 

 

成功

 加载网络模块

 从宿主机上可以看出需要两个模块 所以需要建立一个目录

 

然后将宿主机的两个模块拷贝到新建的目录下面

图已经有啦这两个模块,所以下面要进行调用这两个模块。然而initrdrc.sysinit都可以调用模块

这里我们用rcSysinit

 

拷贝一些用到的命令 <和上面的方法一样 这里就不演仕了>

 

然后登陆小系统查看

成功

然后测试一下看内外主机能通讯不

 

可以

接下来 实现ftp的服务

 

现在宿主机上面安装ftp服务《略》

登陆ftp有各种方法 今天我们用简单的匿名登陆,而登陆中有一个PAM调用各种模块的过程,我们就先不进行调用,所以讲调用模块的那一项注释掉

 

然后将配置脚本  vsftpd

拷贝config文件  所以先建立目录

 

拷贝脚本

建立匿名登陆文件

 

当登陆的时候需要安装vsftp时候的ftp账号

所以现在进行拷贝

已经有了

 

然而这样还是不够的

因为用户name和用户id是需要一种nsswith机制进行解析的  所以需要建立nsswith配置文件,并连接所需的库

 

 

 

链接库

因为没建立日志文件所以 关闭日志文件

 

 

禁掉用户列表

添加empty文件

 

测试

成功!!!

简单的小linux系统移植已完成!