Linux的設計模式:核心和外圍功能性模塊組構成的,其內核支持動態模塊的裝載和卸載。linux
裁剪Liniux的原理:設計模式
-->POST(Power-on Self Test:開機自檢)bash
-->BIOS(Boot Sequence :指定啓動的設備讀取磁盤中操做系統內核文件)ide
-->GRUB [ 測試
BootLoader :加載內核文件至內存ui
(stage1:MBR;加密
stage1.5:識別內核文件所在的文件系統,提供文件系統是別的擴展spa
stage2:GRUB的引導程序,其配置文件:/boot/grub/grun.conf ) ]操作系統
-->kernel( initrd :將內核解壓縮爲根目錄,加載合適的驅動程序,最後退出虛擬文件系統)設計
-->SHELL
init是linux的第一個進程,實現系統的初始化,負責管理用戶空間的進程;
PID爲1
其二進制程序爲/sbin/init
配置文件:/etc/inittab
/lib/modules/:linux須要的驅動程序在此目錄下
Grub的功能:
1.選擇要啓動的內核或系統,界面可隱藏
2.提供交互式接口,能夠編輯grub.conf文件:e進入編輯模式
3.基於密碼保護
啓動內核映像:定義在相應的title下
傳遞參數(進入編輯模式):定義在全局段
grub.conf的語法:
default=n:指定默認啓動該grub.conf中的第n-1個title選項(0表示第一個)
timeout=n:啓動進行讀秒,用沒有其餘操做的狀況下須要等待n秒
splashp_w_picpath=(hd0,0) /path/to/Splashp_w_picpath_File:指定使用的背景圖片
hiddenmenu:啓動時是否顯示菜單
title
root:內核文件存放的分區
hd0:表示設備;從0開始編號
0:表明分區;從0開始編號
格式:root(hd0,0)
kernel:指定內核文件以及傳遞給內核文件的參數
格式:kernel /path/to/kernel_file [參數] ro root=/path/to/Device [quiet]
initrd:指定initrd製做的以.img結尾的文件
格式:initrd: /FileName.img
裁剪Linux並自動安裝網卡模塊:
環境: 宿主機
目標機
1.在宿主機中添加一塊新的磁盤
2.爲新添加的磁盤建立兩個主分區
3.分別對/dev/sdb1和/dev/sdb2建立文件系統,且都爲ext4
4.在/mnt目錄下建立兩個目錄/boot和sysroot
5.將/dev/sdb1掛載到/mnt/boot目錄下;將/dev/sdb2掛載到/mnt/sysroot目錄下
6.安裝grub至/dev/sdb上
7.複製內核文件和initrd文件至/mnt/boot/目錄下
8.爲目標主機建立根文件系統
9.移植bash和一些相關的命令至目標主機的跟文件系統
10.測試bash是否移植成功:用chroot將根目錄切換爲/mnt/sysroot
11.爲grub提供配置文件且基於md5對grub進行加密:啓用內核映像和參數傳遞模式的保護
12.建立/mnt/sysroot/lib/modules目錄並將ib/modules/2.6.32-358.el6.i686/kernel/drivers/net/e1000/e1000.ko拷貝到其目錄下
13.編寫init腳本使其完成自動網卡模塊的加載併爲其目標主機配置IP
14.爲/mnt/sysroot/sbin/init賦予可執行權限 chmod +x /mnt/sysroot/sbin/init
15.將全部信息同步至磁盤CentOS1.1-000002.vmdk
16.掛起目標主機新建目標主機併爲其添加一塊已存在的磁盤CentOS1.1-000002.vmdk
17.基於md5加密的grub參數傳遞模式,編輯grub時須要輸入加密時的密碼
18.基於md5加密的內核映像模式,啓動系統時須要輸入加密時的密碼
19.最終完成linux的裁剪,並可以成功進入系統
20.測試以後可以成功ping同172.16.0.1的主機
安裝網卡模塊須要用到的相關命令:
查看PCI設備的信息:
# lspci
查看當前系統轉載的模塊:
# lsmod
查看某模塊的信息:
# modinfo MOD_NAME
查看某模塊的依賴關係:
# depmod MOD_NAME
動態裝載某模塊:
# modprobe MOD_NAME 或 # insmod /path/to/Module_File
動態卸載某模塊:
# modprobe -r MOD_NAME 或 # rmmod /path/to/Module_File