内核移植简单网络服务的实现
实验目的:实现对内核的移植,了解linux文件系统对启动的影响对linux的启动过程进行更深层次的理解,并掌握ftp服务的启动运行过程。
一. 首先了解开机流程:
开机自检-----àMBR引导(主引导程序)--------àGRUB菜单(引导菜单)------à
加载内核(kernel)---à运行第一个进程INIT(执行一系列的脚本文件)------à启动mingetty进程-------à登陆
二. 移植过程
实验流程
借用宿主机(完好的linux)进行对新硬盘(挂载)的移植内核,配置脚本,等操作 然后在将新硬盘应用到新的机器进行启动,该过程用虚拟机实现。
<1>.新建宿主机 加一块儿新硬盘
有两块儿硬盘
建立MBR的引导分区:
<2>.对硬盘进行分区,建立主分区,引导分区 ,格式化。
新建3个分区
格式化分区
将新分区sdb1,sdb2挂载到/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 安装图像处理软件
调整图片大小
图片处理完成
将图片压缩
将图片移动到小系统根目录下
将图片加载到开机菜单中
运行
成功
加载网络模块
从宿主机上可以看出需要两个模块 所以需要建立一个目录
然后将宿主机的两个模块拷贝到新建的目录下面
图已经有啦这两个模块,所以下面要进行调用这两个模块。然而initrd和rc.sysinit都可以调用模块
这里我们用rc。Sysinit
拷贝一些用到的命令 <和上面的方法一样 这里就不演仕了>
然后登陆小系统查看
成功
然后测试一下看内外主机能通讯不
可以
接下来 实现ftp的服务
现在宿主机上面安装ftp服务《略》
登陆ftp有各种方法 今天我们用简单的匿名登陆,而登陆中有一个PAM调用各种模块的过程,我们就先不进行调用,所以讲调用模块的那一项注释掉
然后将配置脚本 vsftpd
拷贝config文件 所以先建立目录
拷贝脚本
建立匿名登陆文件
当登陆的时候需要安装vsftp时候的ftp账号
所以现在进行拷贝
已经有了
然而这样还是不够的
因为用户name和用户id是需要一种nsswith机制进行解析的 所以需要建立nsswith配置文件,并连接所需的库
因为没建立日志文件所以 关闭日志文件
禁掉用户列表
添加empty文件
成功!!!
简单的小linux系统移植已完成!