Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145445
  • 博文数量: 16
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1229
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-02 23:30
文章分类
文章存档

2014年(16)

我的朋友

分类: LINUX

2014-05-03 12:07:41

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

2).将分区格式化:

点击(此处)折叠或打开

  1. [root@xiaomazi ~]# mke2fs -t ext4 /dev/sdb1
  2. [root@xiaomazi ~]# mke2fs -t ext4 /dev/sdb2
3).创建挂载目录并将其挂载至/mnt/sysroot、/mnt/boot目录下:

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

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

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

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

点击(此处)折叠或打开

  1. [root@xiaomazi sysroot]# vim bincp.sh
  2. #!/bin/bash
  3. #
  4. target=/mnt/sysroot
  5. clearCmd() {
  6. ifwhich $cmd &> /dev/null; then
  7. cmdPath=`which--skip-alias$cmd`
  8. else
  9. echo"No such command"
  10. return5
  11. fi
  12. }
  13. cmdCopy() {
  14. cmdDir=`dirname$1`
  15. [ -d ${target}${cmdDir} ] || mkdir-p ${target}${cmdDir}
  16. [ -f ${target}${1} ] || cp$1 ${target}${cmdDir}
  17. }
  18. libCopy() {
  19. forlib in`ldd $1 | grep-o "/[^[:space:]]\{1,\}"`; do
  20. libDir=`dirname$lib`
  21. [ -d ${target}${libDir} ] ||mkdir-p ${target}${libDir}
  22. [ -f ${target}${lib} ] ||cp$lib ${target}${libDir}
  23. done
  24. }
  25. whiletrue; do
  26. read-p "Enter a command: "cmd
  27. if[ "$cmd"== 'quit'] ;then
  28. echo"quit"
  29. exit0
  30. fi
  31. clearCmd $cmd
  32. [$? -eq5 ] && continue
  33. cmdCopy $cmdPath
  34. libCopy $cmdPath
  35. done
7.1)执行脚本:

点击(此处)折叠或打开

  1. [root@xiaomazi ~]# chmod +x bincp.sh 给执行权限
  2. [root@xiaomazi ~]# sh -n bincp.sh 测试语法错误
  3. [root@xiaomazi ~]# sh bincp.sh
  4. Enter a command: bash给目标机一个bash命令
  5. Enter a command: quit
  6. quit
  7. [root@xiaomazi ~]#
8).使用tree /mnt/sysroot 命令,查看库文件等文件是否存在:

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

II.给bash创建个软连接:


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

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



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


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

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

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

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



2.编写init脚本:

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

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

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

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

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

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

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

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

5).查看下网卡信息:

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

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





Welcome to the xiaomazi blog!!


阅读(4624) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~