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

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

 

一.   首先了解开机流程:

 

简单linux内核的移植实现ftp服务_移植 

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

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

二.   移植过程

实验流程

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

 

 

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

简单linux内核的移植实现ftp服务_移植_02

 

有两块儿硬盘

建立MBR的引导分区:

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

 

 

简单linux内核的移植实现ftp服务_ftp_03  简单linux内核的移植实现ftp服务_linux_04                        新建3个分区

 

 

简单linux内核的移植实现ftp服务_移植_05                                 格式化分区 

简单linux内核的移植实现ftp服务_ftp_06 

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

简单linux内核的移植实现ftp服务_ftp_07 

<3.>加载内核

拷贝内核:

简单linux内核的移植实现ftp服务_ftp_08 

拷贝驱动镜像:

简单linux内核的移植实现ftp服务_ftp_09 

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

简单linux内核的移植实现ftp服务_linux_10 

93行注释掉即可

 

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

简单linux内核的移植实现ftp服务_ftp_11

<4.>建立grep菜单

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

简单linux内核的移植实现ftp服务_移植_12 

<5.>移植init进程

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

简单linux内核的移植实现ftp服务_ftp_13 简单linux内核的移植实现ftp服务_linux_14

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

简单linux内核的移植实现ftp服务_ftp_15

 3)加入inittab 脚本

简单linux内核的移植实现ftp服务_移植_16 

4)加入rc.sysinit

简单linux内核的移植实现ftp服务_移植_17 

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

简单linux内核的移植实现ftp服务_linux_18 

6)导入bash命令

先拷贝问价夹  

简单linux内核的移植实现ftp服务_移植_19 

 然后导入如下链接库

 

简单linux内核的移植实现ftp服务_linux_20 

cp.sh脚本进行拷贝

简单linux内核的移植实现ftp服务_ftp_21 

拷贝结果:

简单linux内核的移植实现ftp服务_移植_22 

进行第一次登陆

简单linux内核的移植实现ftp服务_linux_23 

登陆成功

 然后一直一些常用的命令

方法和拷贝bash的一样

Ls 

 

设置关机 命令 

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

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

简单linux内核的移植实现ftp服务_移植_24 

编辑新系统的inittab

简单linux内核的移植实现ftp服务_ftp_25

 

编辑rc.sysdown脚本文件

简单linux内核的移植实现ftp服务_ftp_26 

修改执行权限

简单linux内核的移植实现ftp服务_linux_27 

导入用到的halt命令

简单linux内核的移植实现ftp服务_移植_28 

设置主机名

编辑主机名判断的命令

简单linux内核的移植实现ftp服务_ftp_29 

创建启动过程的文件

简单linux内核的移植实现ftp服务_linux_30

 

创建network 加载网络功能

简单linux内核的移植实现ftp服务_移植_31

导入hostname的指令

简单linux内核的移植实现ftp服务_ftp_32 

 

加载开机背景

 安装yum   处理依赖关系

简单linux内核的移植实现ftp服务_移植_33 

安装yum

简单linux内核的移植实现ftp服务_移植_34 

 gimP 安装图像处理软件

简单linux内核的移植实现ftp服务_移植_35

调整图片大小

 

图片处理完成

 将图片压缩简单linux内核的移植实现ftp服务_ftp_36

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

简单linux内核的移植实现ftp服务_ftp_37 

将图片加载到开机菜单中

简单linux内核的移植实现ftp服务_linux_38

运行 

简单linux内核的移植实现ftp服务_ftp_39 

成功

 加载网络模块

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

简单linux内核的移植实现ftp服务_linux_40 

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

简单linux内核的移植实现ftp服务_linux_41 简单linux内核的移植实现ftp服务_ftp_42 简单linux内核的移植实现ftp服务_linux_43

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

这里我们用rcSysinit

简单linux内核的移植实现ftp服务_ftp_44 

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

 

然后登陆小系统查看

简单linux内核的移植实现ftp服务_移植_45

成功

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

简单linux内核的移植实现ftp服务_linux_46

 

可以

接下来 实现ftp的服务

 

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

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

简单linux内核的移植实现ftp服务_移植_47 

然后将配置脚本  vsftpd

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

简单linux内核的移植实现ftp服务_移植_48 

拷贝脚本

简单linux内核的移植实现ftp服务_移植_49

建立匿名登陆文件

简单linux内核的移植实现ftp服务_移植_50 

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

所以现在进行拷贝

简单linux内核的移植实现ftp服务_ftp_51 简单linux内核的移植实现ftp服务_linux_52

已经有了

 

然而这样还是不够的

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

 

简单linux内核的移植实现ftp服务_linux_53 

简单linux内核的移植实现ftp服务_移植_54 

链接库简单linux内核的移植实现ftp服务_ftp_55

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

简单linux内核的移植实现ftp服务_移植_56 

简单linux内核的移植实现ftp服务_linux_57 

禁掉用户列表

简单linux内核的移植实现ftp服务_ftp_58

添加empty文件

简单linux内核的移植实现ftp服务_移植_59 

测试简单linux内核的移植实现ftp服务_移植_60

成功!!!

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