Linux内核管理–之定制一个属于自己的小型系统

本网站用的阿里云ECS,推荐大家用。自己搞个学习研究也不错

<

div id=”content”>一、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).给目标机磁盘分区:

wKiom1MXGgjA2C8eAAJVRU-gN_8548.jpg

2).将分区格式化:

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

 

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

wKiom1MXGiKAIkKLAAIPisnf1BU159.jpg

 

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

wKioL1MXGhCB2HPRAALj_IJIY6A602.jpg

 

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

wKioL1MXGjmDgBHmAAFmmRiTCGo160.jpg

 

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

wKiom1MXGo6wdh1eAANsb7hYxb0473.jpg

7).接着去移植bashls等命令至目标主机的根文件系统:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[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

执行脚本:

1
2
3
4
5
6
7
[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 命令,查看库文件等文件是否存在:

wKioL1MXHGfTauOqAAIcyNcuSww564.jpg

 

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

wKiom1MXHLbh7r-TAADFUPsn70M384.jpg

 

II.bash创建个软迼/div>

未经允许不得转载:演道网 » Linux内核管理–之定制一个属于自己的小型系统

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册