CentOS 6.6 系统剪裁

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS 6.6 系统剪裁相关的知识,希望对你有一定的参考价值。

一:前言

本文主要通过裁剪现有Linux系统,打造一个属于自己的Linux小系统,让其能够装载网卡驱动,并配置IP地址,实现网络功能。


二:原理:

linux系统的启动流程:

1、首先Linux要通过POST自检,检查硬件设备有没有故障

2、如果有多块启动盘的话,需要在Bios中选择启动磁盘

3、启动MBR中的bootloader引导程序

4、加载内核文件

5、执行所有进程的父进程init

6、打印欢迎界面

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

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

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

在启程的流程中,init主要是用来做哪些操作的呢?

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

三:操作步骤:

 1:目标磁盘分区:

在系统中添加一个硬盘,并命名为test,进行分区/dev/sdb1为100M来做引导程序,/dev/sdb2为1G用来装根文件系统,把这两个分区用mke2fs 进行格式化,然后进行如下操作,把/dev/sdb1挂载到/mnt/boot下,把/dev/dsb2挂载到/mnt/sysroot下:

技术分享

[[email protected] ~]# mkdir  /mnt/{boot,sysroot}

[[email protected] ~]# mount /dev/sdb1 /mnt/boot/

[[email protected] ~]# mount /dev/sdb2 /mnt/sysroot/


 2、安装grub到目标磁盘


一个系统能启动,就需要引导,所以我们首先要安装一个grub引导程序到我们的新磁盘上,安装grub引导程序主要有两个命令,一个是grub-install,另一个是setup,这里最好使用grub-install来安装。因为:

  1. ①grub-install会安装grub引导第二阶段的文件 

  2. ②setup不会安装第二阶段的引导程序,是安装引导信息到MBR 

  3. 第二个需要注意的地方就是--root-directory=后面接的路径应该是boot目录所在的地方,而不是/mnt/boot,因为boot目录在mnt下;目标磁盘是/dev/sdb 

  1. [[email protected] ~]# grub-install  --root-directory=/mnt /dev/sdb

   [[email protected] ~]# ls /mnt/boot/

   grub  lost+found

   [[email protected] ~]# ls /mnt/boot/grub/

   device.map     iso9660_stage1_5   stage1           xfs_stage1_5

   e2fs_stage1_5  jfs_stage1_5       stage2

   fat_stage1_5   minix_stage1_5     ufs2_stage1_5

   ffs_stage1_5   reiserfs_stage1_5  vstafs_stage1_5

   [[email protected] ~]#


   安装好了grub会发现grub.conf这个文件不在,后面再补


 3、 将内核文件和initrd文件复制到/dev/sdb下的boot目录中

   

  [[email protected] ~]# cp /boot/vmlinuz-2.6.32-504.el6.x86_64  /mnt/boot/vmlinux

  [[email protected] ~]# cp /boot/initramfs-2.6.32-504.el6.x86_64.img /mnt/boot/initramfs.img

  [[email protected] ~]# 


 4、创建目标主机根文件系统


  

[[email protected] ~]# mkdir -p /mnt/sysroot/{bin,lib,media,proc,selinux,tmp,boot,etc/rc.d,lib64,misc,net,root,srv,usr,dev,home,mnt,opt,sbin,sys,var}

[[email protected] ~]# bash a1.sh 

请输入一个命令:bash

[[email protected] ~]# bash a1.sh 

请输入一个命令:ls

[[email protected] ~]# bash a1.sh 

请输入一个命令:cat

[[email protected] ~]# bash a1.sh 

请输入一个命令:ifconfig

[[email protected] ~]# bash a1.sh 

[[email protected] ~]# ls /mnt/sysroot/

bin   dev  home  lib64       media  mnt  opt   root  selinux  sys  usr

boot  etc  lib   lost+found  misc   net  proc  sbin  srv      tmp  var

[[email protected] ~]# cd /mnt/sysroot/bin/

[[email protected] bin]# ln -sv bash sh

"sh" -> "bash"

[[email protected] bin]# ls -l

总用量 1116

-rwxr-xr-x. 1 root root 904872 8月  27 01:57 bash

-rwxr-xr-x. 1 root root  45224 8月  27 01:57 cat

-rwxr-xr-x. 1 root root 109208 8月  27 01:57 ls

-rwxr-xr-x. 1 root root  77336 8月  27 01:58 mount

lrwxrwxrwx. 1 root root      4 8月  27 01:59 sh -> bash


附:命令移植脚本

#! /bin/bash

#

j="/mnt/sysroot"

read -p "请输入一个命令:"  i

   if which $i &> /dev/null;then

       a=`which $i`

   else

       echo " 命令有错"

   fi

b=`dirname $a`

[ -d ${j}${b} ] || mkdir -p ${j}${b}

[ -f ${j}${a} ] || cp $a ${j}${b}


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

       z=`dirname $c`

       [ -d ${j}${z} ] || mkdir -p ${j}${z}

       [ -f ${j}${c} ] || cp $c ${j}${z}

done



5、为grub提供配置文件grub.conf

 

[[email protected] ~]# vi /mnt/boot/grub/grub.conf

default=0

timeout=5

title  CentOS

   root (hd0,0)

  kernen /vmlinux ro root=/dev/sda2 selinux=0 init=/bin/bash

  initrd /initramfs.img

~                        

[[email protected] ~]# sync     (同步)



6、启动测试


特别提醒:

技术分享

技术分享



技术分享



四:装载模块,实现网络功能

 1、查看网卡信息:

     

[[email protected] ~]# lsmod  | grep e1000

e1000                 160643  0 

  

  2、查看网卡详细信息:

 

[[email protected] ~]# modinfo e1000

filename:       /lib/modules/2.6.32-504.el6.x86_64/kernel/drivers/net/e1000/e1000.ko

version:        7.3.21-k8-NAPI

license:        GPL

description:    Intel(R) PRO/1000 Network Driver

author:         Intel Corporation, <[email protected]>

srcversion:     22ED5F24EA9709C19DA8084

alias:          pci:v00008086d00002E6Esv*sd*bc*sc*i*


这里查询到了网卡模块的路径,把它复制到/dev/sdb的库文件下:

[[email protected] ~]# mkdir /mnt/sysroot/modules

[[email protected] ~]# cp /lib/modules/2.6.32-504.el6.x86_64/kernel/drivers/net/e1000/e1000.ko  /mnt/sysroot/modules/


3,init程序:


[[email protected] ~]# vi /mnt/sysroot/lib/init

#! /bin/bash 


echo -e "\t \033[31m CentOS 6.6 \033[0m"

mount -n -t proc proc /proc

mount -n -t sysfs sysfs /sys

insmod /modules/e1000.ko

[ $? -eq 0 ] && echo -e "\t \033[33m e1000 \033[0m"

ifconfig eth0 192.168.10.10/24

ifconfig lo 127.0.0.0/8

mount -n -o remount,rw /dev/sda2 /

/bin/bash


[[email protected] ~]# vi /mnt/boot/grub/grub.conf

default=0

timeout=5

title  CentOS

   root (hd0,0)

  kernen /vmlinux ro root=/dev/sda2 selinux=0 init=/lib/init

  initrd /initramfs.img

技术分享

本文出自 “11501323” 博客,谢绝转载!

以上是关于CentOS 6.6 系统剪裁的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 6.6 系统剪裁

CentOS 6.6_64 安装截图

centos 6.6怎么部署vnc

CentOS 6.6 新安装系统的网络IP配置

实现VMware Workstation中的CentOS 6.6 上网的方法

CentOS 6.6系统桌面字体怎么设置