总结之:CentOS 6.4系统裁减详解及装载网卡步骤

2024-09-05 12:58

本文主要是介绍总结之:CentOS 6.4系统裁减详解及装载网卡步骤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://tanxw.blog.51cto.com/4309543/1368801

前言
   随着接触Linux的慢慢深入、对Linux也有了一个基本认识了吧,慢慢的接触系统内核、系统配置文件、在了解Linux的系统启动流程后,现在来总结一下一个简单的Linux系统的裁减方法和步骤,一个只有内核文件和几个简单的命令的小Linux系统,现在就开始以下裁减:

正文 
   首先在一个虚拟机上新增一块硬盘、这样等裁减好了之后可以把这块硬盘挂载到别的虚拟机上去、运行自已裁减的那个Linux系统;

wKioL1MW6cOB-EHAAAGPeEDJ9iQ811.jpg

wKioL1MW6cejrXyuAAIgtdPsFkM192.jpg

wKiom1MW6e-B2P3OAAF9-XUwsEc625.jpg

wKioL1MW6c6Ss1qjAAEZKYfTnis903.jpg

wKioL1MW6duSTyg1AAEumrbayV0149.jpg



   添加完硬盘后就启动虚拟机了;    


   查找一下刚才添加的硬盘:
   # fdisk -l /dev/sd[a-z]

wKioL1MW6mzz2W_CAAD0OCsStpg036.jpg


   添加完硬盘之后就应该分区格式化硬盘了;
   # fdisk /dev/sdb

   这里就自己分区好了、很简单的、比windows简单多了!!!

   分区完后就给这两个分区格式化了;
   格式化指定文件系统类型为ext4
   # mke2fs -t ext4 /dev/sdb1
   # mke2fs -t ext4 /dev/sdb2

wKioL1MW6xyAIpb_AAB97b2jK_Y110.jpg


   格式化完了之后就看到刚才分的两个分区列表了;

   而后在/mnt目录下创建两个目录分别挂载到刚分好的那两个分区上去:
   # mkdir -pv /mnt/{boot,sysroot}


   挂载目录/mnt/boot到/dev/sdb1分区上去;
   挂载目录/mnt/sysroot到/dev/sdb2分区上去;
   # mount /dev/sdb1 /mnt/boot/
   # mount /dev/sdb2 /mnt/sysroot/

wKiom1MW64viHnRKAAEdUcbC910790.jpg


   而后就往sdb上安装grub;
   创建的boot在哪就指定到哪个路径下去,然后再指定安装在哪块硬盘上,grub安装完之后就会生成/mnt/boot/grub/目录、grub目录下就会生成相关的文件
   # grub-install --root-directory=/mnt /dev/sdb

wKiom1MW67_RaaJFAAE0HARIVEs807.jpg

wKiom1MW7DbCm7Z-AADhvPLKxe8781.jpg


   现在我们把宿主机里的内核文件给sdb拷贝一份到/mnt/boot/目录下,名字我们就叫mvlinuz、版本号我们就不带了、init文件也拷贝一份到/mnt/boot/目录下,名字就简单的改为initramfs.img
   # cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /mnt/boot/vmlinuz
   # cp /boot/initramfs-2.6.32-431.el6.x86_64.img /mnt/boot/initramfs.img

wKiom1MW7FXwj2gKAADiJhm3tYc730.jpg

   完整的linux有哪些目录呢、那我们就得来创建一下这些个目录了;之前我们挂载的那个sysroot的目录都没有到、那我们就在这个目录下创建这些目录、切换到/mnt/sysroot/下:
   # mkdir -pv /etc/rc.d root boot dev proc sys tmp var usr srv lib lib64 bin sbin home mnt media

wKiom1MW7KXhuVHdAABPNoOCSS4284.jpg

   到这里了、如果我们的第二块硬盘上再有个可执行程序是不是就可以运行了呢、那我们不仿移植一些程序到我们的第二块硬盘上去、我们之前写了一个移植可执行程序的脚本、包括程序所依赖的库文件也一并移植过去了、代码如下:

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash
#
#定义目标目录、也就是要拷贝到的那个目录
target= /mnt/sysroot
#声明清理命令的方法
clearCmd() {
   #判断命令是否存在、如果不存在就提示没有找到命令
   if  which  $cmd &>  /dev/null then
         #获取命令的路径
         cmdPath=` which  --skip- alias  $cmd`
   else
         echo  "No such command"
         return  5
   fi
}
#定义拷贝命令的方法
cmdCopy() {
         #获取命令路径、只取目录部分
         cmdDir=` dirname  $1`
         #判断目录是否存在、不否在就创建
         [ -d ${target}${cmdDir} ] ||  mkdir  -p ${target}${cmdDir}
         #判断要拷贝的命令否存在在、不存在就拷贝
         [ -f ${target}${1} ] ||  cp  $1 ${target}${cmdDir}
}
#定义拷贝库文件的方法
libCopy() {
         #循环所有获得的命令所依赖的所有库文件
         for  lib  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
}
#循环让用户输入要拷贝的命令
while  true do
   read  -p  "Enter a command: "  cmd
   if  "$cmd"  ==  'quit'  ] ; then
         echo  "quit"
         exit  0
   fi
   #调用清理命令方法
   clearCmd $cmd
   [ $? - eq  5 ] &&  continue
   #调用拷贝命令和库文件的方法
   cmdCopy $cmdPath
   libCopy $cmdPath
done


wKioL1MW77zCBKyQAAFBsoEDZCE400.jpg

wKioL1MW8B-SiUDtAACmR-uljKg736.jpg

   接着切换到/mnt/sysroot/bin/目录下、给bash创建一个软链接、因为系统默认找shell都是找sh
   # ln -sv bash sh    

   现在我们切换到/mnt/sysroot/目录试一下看就知道了:
   # chroot /mnt/sysroot/

wKiom1MW8L3gz8-gAACRqZOTlL8973.jpg


   看、我们的小根可以用了    
   这里我们再提供一个init脚本给这个小系统,在/sbin/目录下,这个init要通过调用/etc/inittab这个配置文件,然后再去执行/etc/rc.d/rc.sysinit下的初始化脚本、这样的话那我们就把初始化脚本的内容拿到init里来执行;

   这个脚本到底要做哪些操作呢:

   # vim /mnt/sysroot/sbin/init

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
#
#打印欢迎信息
echo  -e  "\tWecome to \033[34m Mini Linux-2.6 OS\033[0m"
#挂载两个伪文件系统;-t后面跟文件系统类型
mount  -n -t proc proc  /proc
mount  -n -t sysfs sysfs  /sys
  #启动后再以读写方式重新挂载/dev/sda2上,这样的话就要把宿主机关机再后再新运行这个小系统了
mount  -n -o remount,rw  /dev/sda2  /
#运行bin下的bash
/bin/bash


   保存退出后给init一个可执行权限:
   chmod +x /mnt/sysroot/sbin/init
   此时我们就要给这块硬盘上的小系统提供一个grub的配置文件了,如果不写这个配置文件也可以启动、但一进入就会进到grub小shell中让你配置系统的grub信息;
   # vim /mnt/boot/grub/grub.conf

1
2
3
4
5
6
default=0
timeout=5
title Mini Linux OS
     root(hd0,0)
     kernel  /vmlinuz  ro root= /dev/sda2  selinux=0 init= /sbin/init
     initrd  /initramfs .img


   OK,保存退出!        

   同步一下到对应的磁盘上:
   # sync    
   经过以上的操作、下面我们就来创建一个新的虚拟机、然后选择虚拟机使用我们刚才装小系统的那块硬盘、CentOS_SecondSCSI.vmdk;

wKioL1MW8-CD_ojRAAH2able-f0277.jpg
   好了、我们把已经运行的虚拟机都挂载起,运行我们刚才创建好的那个有CentOS_SecondSCSI.vmdk磁盘的虚拟机,到这里我们就看到我们裁减的小系统跑起来了、看到我们自己定义的Min Linux-2.6 OS了!    wKioL1MW9GLQHBi0AABl_cHytmI133.jpg

进到我们的小系统里去了:

wKiom1MXATDhooQGAABLZHNpUzs579.jpg


   接下来我们要在小系统里装载网卡、但是要确保被装载的网卡驱动没有使用、我们可以用lsmod这个命令查看一下:这里以e1000为例来说明问题、我这里的虚拟机上已经装有了、那我就先卸载了再装载上去:

   在宿主机上查看当前内核装载的模块信息:
   # lsmod

   卸载e1000网卡驱动:
   # modprobe -r e1000

   要装载的话用下面命令即可:
   # modprobe e1000

   那怎么样把e1000的内核模块拷贝到我们的小系统里面里、让他装上去、并且启用网络功能呢、首先确保我们系统中的piv4没有做成模块,这里我们的ipv4没有做成模块、那就去移植这个模块吧:
   首先给他创建一个目录、切换到/mnt/sysroot/lib目录中:
   # mkdir modules

   再拷贝我们系统上的内核模块到这个目录里去
   # cp /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/sysroot/lib/modules/

   再移植一些所需要用到的命令:insmod、rmmod、ifconfig、ip、ping

   OK、同步一下我们就可以重新启动小系统了
   # sync

   进到小系统里、敲命令吧;
   # insmod /lib/modules/e1000.ko
   # ifocnfig eth0 176.16.251.100/16
   # ping -c 3 176.16.251.100
wKioL1MXAfLx2_ZuAAFwEvAOYU4644.jpg

wKiom1MXA0LRw9JvAADu3n6P1sw699.jpg

wKioL1MXAxzjKk7rAAFg5pXqsEk919.jpg


   好了、到这里我们就基本完成了小系统的裁减了、要想装载更多的功能、后面可以自己再添加、想装什么就装什么、要想系统启动就有网络那可以在init中设置一下、在init中加上ifconfig eth0 176.16.251.100/16就可以了、init要写得更好自己后期再慢慢改吧、加慢判断和显示颜色什么的等等:

结语:
   好像东西很多的样子、其实也不是很多了、可能我比较啰嗦、噼里啪啦的写了一大堆吧、其实操作也不多、就是要理清步骤就很清晰了、不是吗、好吧、就到此结束吧、人无完人、有错或有什么不妥还望大神指点哦!

这篇关于总结之:CentOS 6.4系统裁减详解及装载网卡步骤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1139031

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、