linux内核脚本之家,linux内核管理--之定制一个属于自己的小型系统

一、linux系统启动流程介绍

我们来了解下linux系统的启动流程:

首先linux要通过POST自检过程(BIOS)-->如果想要做多块启动盘的话,还需要在bios中选择启动磁盘-->引导MBR(bootloader引导程序)-->加载initrd文件-->执行进程init-->显示欢迎界面;

需要注意:

在linux的启动流程中,加载内核文件时还需要借助别外两个文件:

1)initrd,CentOS5上是用内存模拟的磁盘设备;

2)initramfs,CentOS6上是用内存模拟的文件系统;

在启程的流程中,init主要通过调用/etc/inittab这个配置文件,然后再去执行/etc/rc.d/rc.sysinit的系统初始化脚本.

二、制作的详细步骤

在宿主机上添加块新磁盘,并将其命名:1111111111.vmdk,这是宿主机上的第二块磁盘(/dev/sdb),而等到时候挂载到目标主机的时候,因为那里只有这宿主机上(/dev/sdb)的这一块磁盘,所以在目标主机上应该是/dev/sda这个名字,这是必须要清楚的。弄清楚之后在来做其它操作,第一个分区500M,用来装引导程序;第二个分区15G,用来装根文件系统。格式化完成后要将其挂载,将/dev/sdb1挂载到/mnt/boot下,将、dev/sda2挂载到/mnt/sysroot下.

1).给目标机磁盘分区:

84ea8fe4ddaa220df8e92b668d4a1bbe.png

2).将分区格式化:[root@xiaomazi ~]# mke2fs -t ext4 /dev/sdb1

[root@xiaomazi ~]# mke2fs -t ext4 /dev/sdb2

3).创建挂载目录并将其挂载至/mnt/sysroot、/mnt/boot目录下:

c0536fd0dc556c0b03bb0106bed25b6f.png

4).安装grub至目标磁盘(注意:boot在哪里就在哪里安装grub.):

ddac417a72b53d52bd132917dbfdd953.png

5).复制内核和initrd文件:

3cada4bb93a101369cc6dce11a17f456.png

6).创建目标主机的根文件系统:

9dc5fae3271a06be0af6fb2106c5676e.png

7).接着去移植bash、ls等命令至目标主机的根文件系统:[root@xiaomazi sysroot]# vim bincp.sh

#!/bin/bash

#

target=/mnt/sysroot

clearCmd() {

ifwhich $cmd &> /dev/null; then

cmdPath=`which--skip-alias$cmd`

else

echo"No such command"

return5

fi

}

cmdCopy() {

cmdDir=`dirname$1`

[ -d ${target}${cmdDir} ] || mkdir-p ${target}${cmdDir}

[ -f ${target}${1} ] || cp$1 ${target}${cmdDir}

}

libCopy() {

forlib in`ldd $1 | grep-o "/[^[:space:]]\{1,\}"`; do

libDir=`dirname$lib`

[ -d ${target}${libDir} ] ||mkdir-p ${target}${libDir}

[ -f ${target}${lib} ] ||cp$lib ${target}${libDir}

done

}

whiletrue; do

read-p "Enter a command: "cmd

if[ "$cmd"== 'quit'] ;then

echo"quit"

exit0

fi

clearCmd $cmd

[$? -eq5 ] && continue

cmdCopy $cmdPath

libCopy $cmdPath

done

执行脚本:[root@xiaomazi ~]# chmod +x bincp.sh 给执行权限

[root@xiaomazi ~]# sh -n bincp.sh 测试语法错误

[root@xiaomazi ~]# sh bincp.sh

Enter a command: bash给目标机一个bash命令

Enter a command: quit

quit

[root@xiaomazi ~]#

8).使用tree /mnt/sysroot命令,查看库文件等文件是否存在:

b7002a27c9e7882b4909bab801850c7e.png

I.执行bincp.sh脚本给目标机可执行命令:ls,cat,vi,cp,mv,mkdir,touch.

200c5994ba3f7451a011f07272ad40ea.png

II.给bash创建个软连接:

72ee4ae8340b9cfd6dc8090b9cdaec9e.png

9).为目标机的grub提供配置文件:

I.注意这样写会有报错的,请看:

682a7e197a2cc85cc6eb72526517d0a4.png

II.在新建虚拟机时候需要注意的地方:

ce20201c19fd0ad0096ffe38335b7d33.png

52c6b69a9255c5e8ec9ce97aef867c50.png

III.自己定义的系统名字,与等待时间:

550bff35e30b72ffbf756dfb7b224551.png

IV.内核恐慌,没有找到init,在上面I中已经说明了,那里指的错误就是这个吆.

9200fc2a44cf5941e128eb50fde90a7c.png

V.告诉系统找/bin/bash:

ab9ecd68fdbcdcc6293bac7b219410d5.png

VI.在目标机上显示如下信息就可以了:

43c008ba67cf7f62fa5f529d9f70cbf4.png

2.编写init脚本:

1).如何去写一个init脚本呢?

注意:init一般都在/sbin目录下面:

我们知道init要通过调用etc/inittab配置文件,然后再去执行/etc/rc.d/rc.sysinit的系统初始化脚本的,

现在就通过init脚本来完成它也是可以的.

[root@xiaomazi ~]# vim /mnt/sysroot/sbin/init

1380a664c7a5238d8262b69793ae7b85.png

2).在grub.conf文件中指定init脚本:

0d52175b34782ae3c5463926ae87707a.png

3).创建模块modules目录,之后将e1000.ko复制进目标主机的磁盘上,并复制命令之目标机:

cee399501d984559abe1d777aed5c581.png

4).在启动目标机后就会显示如下信息:

a51a29fe0940641e6c7f73f8b72003b8.png

5).查看下网卡信息:

9961b7d66adcf8ed7233edb40eff4c0e.png

6).测试配置好IP后,是否能ping通:

e80c997f6d330ee1b9e50b6cfbe6e3ae.png

7).测试能否创建文件:

1df79c07b994ee6f24454296610a9557.png

A smile is the most beautiful language!!!

3c2498ae2fd026894b1ad0eb83d641ec.png

3c2498ae2fd026894b1ad0eb83d641ec.png

3c2498ae2fd026894b1ad0eb83d641ec.png以本人的理解而写出博客,如若有错误,欢迎指出.

3c2498ae2fd026894b1ad0eb83d641ec.png

3c2498ae2fd026894b1ad0eb83d641ec.png

3c2498ae2fd026894b1ad0eb83d641ec.png

---->小马子

---->小马子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值