總結之:CentOS 6.4系統裁減詳解及裝載網卡步驟

前言
? ?隨著接觸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要寫得更好自己后期再慢慢改吧、加慢判斷和顯示顏色什么的等等:

結語:
? ?好像東西很多的樣子、其實也不是很多了、可能我比較啰嗦、噼里啪啦的寫了一大堆吧、其實操作也不多、就是要理清步驟就很清晰了、不是嗎、好吧、就到此結束吧、人無完人、有錯或有什么不妥還望大神指點哦!










本文轉自 wei0164 51CTO博客,原文鏈接:http://blog.51cto.com/tanxw/1368801,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279567.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279567.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android 設備占用_如何查看正在占用Android設備的空間

android 設備占用When you picked up your shiny new Android device, you probably thought “yeah, this has plenty of storage. I’ll never fill it up!” But here you are, some number of months later with a full phone and no clue why. No worries: here’s how yo…

最近沉迷生意經

高度戰略搶占顧客心智 速度戰略 . 規模不夠就談發展速度,避開自己的劣勢; . 發展速度快說明產品好,受歡迎度高; 錢是工具,從錢上解脫 . 不能被錢所困 . 放下錢,才能瀟灑地使用錢 第一時間搶占顧客心智 . 核心點就是搶占…

mysql密碼正確卻提示錯誤, 不輸入密碼反而能登錄

今天部署阿里云服務器, 發現之前可以連接的mysql服務器突然連接不上了, 密碼我確認是正確的,但登錄時就是顯示密碼錯誤, 很崩潰, 差點氣得我就想重裝mysql了。 好在經過幾番苦尋找到了以下能解決我問題的資料, 成功解決了我的問題, 萬分感謝,…

域用戶權限|安裝軟件

如何讓普通的域用戶有安裝軟件的權限?現在給客戶部署了活動目錄,客戶要求 普通的域用戶也可以自己安裝軟件。不知道如何設置,希望大家幫幫忙!我告訴客戶的做法如下:不知道可行性如何? 1、在域中新建一個域賬…

c/c++ new delete初探

new delete初探 1,new有2個作用 開辟內存空間。調用構造函數。2,delete也有2個作用 釋放內存空間調用析構函數。如果用new開辟一個類的對象的數組,這個類里必須有默認(沒有參數的構造函數,或者有默認值的參數的構造函數)的構造函數…

php舊版本windows_Windows的舊版本中如何進行多任務處理?

php舊版本windowsConsidering that DOS was a single-tasking OS and the ties it had with early versions of Windows, just how did earlier versions of Windows manage to accomplish multi-tasking? Today’s SuperUser Q&A post looks at the answers to this ques…

批量提取視頻文件信息(文件大小及時長)并統計

隨著設備性能提高,視頻文件越來越大了。服務器在對外提供視頻服務時,需要承擔越來越大的存儲負擔。一般提供1080P的AVC編碼視頻已滿足多數觀看需求。(1小時視頻大約1.3G)此文要解決的就是關于已有大量高清視頻(1小時超…

列出所有K個元素的子集-----2013年1月26日

問題描述:列出一個集合的元素個數為k的所有子集。思路:在字典順序列出所有子集的基礎上判斷元素個數就可以了&#xff0c;比較簡單。代碼如下:1 #include <stdio.h>2 #define MAX 10003 4 int main()5 {6 int n5;7 int set[MAX]{1};8 int index0;9 int …

docker swarm的應用----docker集群的構建

一、docker安裝 這里我們安裝docker-ce 的18.03版本 yum -y remove docker 刪除原有版本 #安裝依賴包 [rootDocker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2 #添加docker的CE版本的yum源配置文件 [rootDocker ~]# curl https://download.docker…

微信小程序 fire_如何在Fire TV和Fire TV Stick上側面加載應用程序

微信小程序 fireAmazon’s Fire TV and Fire TV stick technically runs Android…but you wouldn’t know it from looking. Amazon has a wall of content for its set-top box, and doesn’t want Google (with its own competing platform) to crash the party. But even t…

PS 技巧

1. 鋼筆的使用&#xff1a; 扣完一圈以后&#xff0c;按Ctrl回車鍵&#xff0c;會出現螞蟻線&#xff0c;然后按CtrlJ 是復制扣出來的圖層&#xff0c;右下角的框里會出現一個新圖層&#xff0c;注意每個圖層前邊有一個小框&#xff0c;點一下是出現眼睛就可以顯示該圖層在中央…

Ibatis - Open quote is expected for attribute {1} associated with an element type '

昨天晚上提交的代碼&#xff0c;今天運行起來&#xff0c;始終報錯&#xff1a; Open quote is expected for attribute "{1}" associated with an element type id,查了半天&#xff0c;覺得很奇怪。 回滾到昨天的代碼&#xff0c;運行正常。經過compare代碼&#…

Linux系統運維之路

九月份開始&#xff0c;半年內搞定運維&#xff0c;博客會慢慢的更新&#xff0c;vim編輯器&#xff0c;Nginx配置文件優化 運維基礎 運維基礎-Linux發展史、安裝、基本操作 運維基礎-用戶和組管理 運維基礎-文件權限管理 運維基礎-進程管理 運維基礎-IO 管道 運維基礎-查找壓…

設備無法獲得谷歌運行怎么辦_因此,您剛剛獲得了Google主頁。 怎么辦?

設備無法獲得谷歌運行怎么辦So you scored a Google Home for Christmas. That’s awesome because this is a killer little smart speaker that can do a lot of different things—in fact, it can be a little overwhelming. The good news is that we’ve got you covered…

IDEA Maven創建多個Module相互依賴

1、前言 在大型企業項目中&#xff0c;系統架構復雜多變&#xff0c;一個項目根本無法支撐起所有業務。為了提高項目擴展性、靈活性、重用性&#xff0c;封裝性&#xff0c;將項目分為多個Module是非常必要的。 這里就不說IDEA如何安裝了&#xff0c;安裝好IDEA后需要修改maven…

速達5000出現計算成本數據溢出的問題

算成本提示某貨品成本溢出處理方法&#xff0c;該問題是由于貨品成本異常&#xff0c;成本上億或者負億造成的&#xff1b; 1.首先通過語句&#xff1a;select * into tmp_goods from l_goods where ABS(aprice)>100000&#xff0c;把成本價格超過10萬的貨品資料取出&#x…

Win32頁上的所有控件屬性與方法

Win32頁上的所有控件。該頁控件是在32位Win系統中的一些基本控件&#xff0c;如果你選擇開發CLX程序&#xff0c;則在控件面板上不會顯示該頁TTabControl屬性DisplayRect&#xff1a;只定該控件客戶區的一個矩形HotTrack&#xff1a;設置當鼠標經過頁標簽時&#xff0c;它的字是…

收銀員英文縮寫_如何在沒有收銀員的蘋果商店購買東西

收銀員英文縮寫If you visit an Apple Store in the hopes of buying a new iPhone, iPad, or MacBook, you have to talk to an Apple employee, since all the expensive products are kept in the back. However, if it’s just an accessory you want, you can buy it with…

上傳文件 connection reset

適用于&#xff1a;Windows 7&#xff0c;Windows Server 2003&#xff0c;Windows Server 2008&#xff0c;Windows Server 2008 R2&#xff0c;Windows Vista 由于FTP的工作方式&#xff0c;在防火墻后面的服務器上使用文件傳輸協議&#xff08;FTP&#xff09;服務會產生一系…

分區表備份工具下載

分區表一般很少被破壞&#xff0c;然而一旦出問題&#xff0c;想要恢復卷上的數據就非常麻煩。這個工具軟件是我以前經常用的&#xff0c;卷分區被誤刪除后可在幾分鐘內得到恢復&#xff0c;非常方便。使用說明請參見&#xff1a;[url]http://www.sansky.net/html/2007-05-23-4…