设为首页 收藏本站
查看: 1054|回复: 0

[经验分享] CentOS 6.6 系统剪裁

[复制链接]

尚未签到

发表于 2018-4-25 09:00:05 | 显示全部楼层 |阅读模式
  一:前言
  本文主要通过裁剪现有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下:

DSC0000.png
[root@localhost ~]# mkdir  /mnt/{boot,sysroot}

[root@localhost ~]# mount /dev/sdb1 /mnt/boot/

[root@localhost ~]# mount /dev/sdb2 /mnt/sysroot/

  

  2、安装grub到目标磁盘
  

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


  •   ①grub-install会安装grub引导第二阶段的文件
  •   ②setup不会安装第二阶段的引导程序,是安装引导信息到MBR
  •   第二个需要注意的地方就是--root-directory=后面接的路径应该是boot目录所在的地方,而不是/mnt/boot,因为boot目录在mnt下;目标磁盘是/dev/sdb
      

  • [root@localhost ~]# grub-install  --root-directory=/mnt /dev/sdb

[root@localhost ~]# ls /mnt/boot/

  grub  lost+found
[root@localhost ~]# 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
[root@localhost ~]#

  

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

  3、 将内核文件和initrd文件复制到/dev/sdb下的boot目录中
[root@localhost ~]# cp /boot/vmlinuz-2.6.32-504.el6.x86_64  /mnt/boot/vmlinux

[root@localhost ~]# cp /boot/initramfs-2.6.32-504.el6.x86_64.img /mnt/boot/initramfs.img

[root@localhost ~]#

  

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

[root@localhost ~]# 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}

[root@localhost ~]# bash a1.sh

  请输入一个命令:bash
[root@localhost ~]# bash a1.sh

  请输入一个命令:ls
[root@localhost ~]# bash a1.sh

  请输入一个命令:cat
[root@localhost ~]# bash a1.sh

  请输入一个命令:ifconfig
[root@localhost ~]# bash a1.sh

[root@localhost ~]# 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
[root@localhost ~]# cd /mnt/sysroot/bin/

[root@localhost bin]# ln -sv bash sh

  "sh" -> "bash"
[root@localhost 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
[root@localhost ~]# 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
  ~
[root@localhost ~]# sync     (同步)

  

  

  6、启动测试
  

  特别提醒:
DSC0001.png

DSC0002.png

  

  

DSC0003.png

  

  

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

  1、查看网卡信息:
[root@localhost ~]# lsmod  | grep e1000

  e1000                 160643  0
  2、查看网卡详细信息:
[root@localhost ~]# 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, <linux.nics@intel.com>
  srcversion:     22ED5F24EA9709C19DA8084
  alias:          pci:v00008086d00002E6Esv*sd*bc*sc*i*
  

  这里查询到了网卡模块的路径,把它复制到/dev/sdb的库文件下:
[root@localhost ~]# mkdir /mnt/sysroot/modules

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

  

  3,init程序:

  

[root@localhost ~]# 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
  

[root@localhost ~]# 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
DSC0004.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-451639-1-1.html 上篇帖子: centos下新建ftp权限 下篇帖子: 尝试CentOS 6.8安装Apache服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表