內核編譯
在特定的情況我們機器上面有些硬件特性需要利用起來,但是我們現成的這個內核沒有開啟這個功能,那就需要重新編譯,把這個功能模塊加進來,或者打到vmlinux中的核心文件里面。比如ntfs功能,默認系統沒有啟用此功能,但是系統是帶這個功能的,編譯的時候時候可以打開該功能,有些功能打開了,但是用不上,我們也可以在編譯的時候關閉,實現完全定制的內核功能。
針對硬件驅動的配置有模板,由于驅動數目太多(wc -l /boot/config*****,查看有4000+),且有些功能我們不了解,因此我們可以通過配置模板文件來對模塊進行修改。
模板文件:/boot/config-2.6.32-642.el6.x86_64 通過該文件我們可以看到哪些功能模塊打開,哪些沒打開
# CONFIG_CRC32_SELFTEST is not set 表示沒開啟此模塊功能
CONFIG_LIBCRC32C=m 表示打到/lib/modules里面
CONFIG_ZLIB_INFLATE=y 表示打到核心里面
內核編譯:
(1) 配置內核選項
支持“更新”模式進行配置: make help
(a) make config:基于命令行以遍歷的方式去配置內核中可配置的每個選項
(b) make menuconfig:基于curses的文本窗口界面
(c) make gconfig:基于GTK (GNOME)環境窗口界面
(d) make xconfig:基于QT(KDE)環境的窗口界面
支持“全新配置”模式進行配置
(a) make defconfig:基于內核為目標平臺提供的“默認”配置進行配置
(b) make allyesconfig: 所有選項均回答為“yes“
(c) make allnoconfig: 所有選項均回答為"no
(2) 編譯
全編譯:make [-j #]
編譯內核的一部分功能:
(a) 只編譯某子目錄中的相關代碼:
# cd /usr/src/linux
# make dir/
(b) 只編譯一個特定的模塊:
# cd /usr/src/linux
# make dir/file.ko
例如:只為e1000編譯驅動:
#make drivers/net/ethernet/intel/e1000/e1000.ko (.ko文件目錄中不存在需要自己寫),編譯完后將文件拷貝到對應的目錄
需要事先清理操作:
# make clean:清理大多數編譯生成的文件,但會保留config文件等
# make mrproper: 清理所有編譯生成的文件、 config及某些備份文件
# make distclean: mrproper、 patches以及編輯器備份文件
編譯應用舉例:
1、下載內核文件、準備模板,安裝“開發工具“包組
2、tar xvf liux-3.18.tar.xz -C /usr/src
ln -s linux-3.18.41/ linux
3、cp /boot/config-2.6.32-642.el6.x86_64 /usr/src/linux/.config
注意模板必須命名為“.config”,因為編譯的是要讀該文件,否則無法識別。
4、cd /usr/src/linux
make menuconfig 通過圖形界面配置驅動模塊(該命令依賴ncures包,首次執行需要yum安裝 )
[*]表示打到vmlinux的核心文件里面去了
[M]表示打到的/lib/modules中的.ko文件(驅動模塊)
[]表示不啟用該功能
5、全編譯make -j #(cpu的數量,lscpu可以查看)
6、cd linux
make modules_install 安裝模塊,將模塊拷貝到/lib/modules
7、make install 生成核心文件vmlinuz initramfs 及grub.conf
8、reboot
系統自動化安裝
同時部署多臺linux機器,需要依賴自動化安裝
MBR: /光盤/isolinux/boot.cat 二進制文件
stage2: isolinux/isolinux.bin
配置文件: isolinux/isolinux.cfg
label linux ### 此處如果加rescue 就變成了 rescue模式 menu label ^Install or upgrade an existing system menu default kernel vmlinuz ### 加載內核 append initrd=initrd.img ###向內核傳遞參數 label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img nomodeset ###nomodeset 內核參數 label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue ###rescue 內核參數 label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append -
每個對應的菜單選項:
加載內核: isolinuz/vmlinuz
向內核傳遞參數: append initrd=initrd.img …
裝載根文件系統,并啟動anaconda
默認啟動GUI接口
若是顯式指定使用TUI接口: 向內核傳遞text參數即可
(1)按tab鍵,在后面增加text,啟用字符界面安裝
(2)按ESC鍵: boot: linux text 啟動字符界面安裝
boot:linux 等同于 選擇 Install or upgrade an existing system
boot:rescue 等同于選擇 Rescue installed system
Anaconda安裝系統分成三個階段:
安裝前配置階段
安裝過程使用的語言
鍵盤類型
安裝目標存儲設備
Basic Storage:本地磁盤
特殊設備: iSCSI
設定主機名
配置網絡接口
時區
管理員密碼
設定分區方式及MBR的安裝位置
創建一個普通用戶
選定要安裝的程序包
安裝階段
在目標磁盤創建分區,執行格式化操作等
將選定的程序包安裝至目標位置
安裝bootloader和initramfs
首次啟動
iptables
selinux
core dump
指明kickstart文件的位置: ks=
DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
Hard drive: ks=hd:device:/directory/KICKSTART_FILE
HTTP server: ks=http://host:port/path/to/KICKSTART_FILE
FTP server: ks=ftp://host:port/path/to/KICKSTART_FILE
HTTPS server: ks=https://host:port/path/to/KICKSTART_FILE
NFS server:ks=nfs:host:/path/to/KICKSTART_FILE
kickstart文件的格式:
命令段:指明各種安裝前配置,如鍵盤類型等;
程序包段:指明要安裝的程序包組或程序包,不安裝的程序包等;
%packages
@group_name
package ###指明要包組中要安裝的包
-package ###指明包組中不安裝的包
%end
腳本段:
%pre: 安裝前腳本
運行環境:運行于安裝介質上的微型Linux環境
%post: 安裝后腳本
運行環境:安裝完成的系統
創建建kickstart文件的方式:
(1) 直接手動編輯;
依據某模板修改
(2) 可使用創建工具: system-config-kickstart
依據某模板修改并生成新配置;
檢查ks文件的語法錯誤: ksvalidator
# ksvalidator /PATH/TO/KICKSTART_FILE
手動指定安裝源的安裝方法:
1、進入光盤啟動界面,按ESC 進入"boot"界面輸入:linux methmod,進入手動引導安裝界面 ,選擇安裝方法。
2、選擇動態獲取IP還是靜態配置IP
3、選擇URL的安裝路徑
4、進入交互式安裝
注意:也可以采取在boot命令行處輸入多個選項:boot:linux askmethod ip=1.1.1.1 vnc vnc passwd="passwd" ks=hd:sda:/root/ks.cfg
自動化安裝方法:
1、cp -r /光盤/isolinux/ /testdir/myks/ 將光盤中的isolinux目錄拷貝到myks目錄下
2、編輯vim /testdir/isolinux/isolinux.cfg 配置光盤啟動的界面的選項,并指明ks模板文件的路徑ks=ftp://192.168.1.103/pub/ks.cfg
abel kickstart menu label ^kickstart Install a system menu default kernel vmlinuz append initrd=initrd.img ks= ###指明ks路徑 label linux menu label ^Install or upgrade an existing system kernel vmlinuz append initrd=initrd.img label vesa label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append -
3、 cd /testdir
mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "CentOS 6.8panlinux" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myks/
創建光盤引導文件,保存到/root/boot.iso,注意該操作必須在myks的父目錄下面進行。
4、生成模板:system-config-kickstart ,并保存到/var/ftp/pub/目錄下,注意如果模板在生成后如發現有需要變更的,直接更改生成的文件即可,不用重新用命令生成模板文件。
5、光盤啟動即可
原創文章,作者:Naruto,如若轉載,請注明出處:http://www.www58058.com/46227
總結的很詳細,也很實用,如果能有一個完整的示例來展示會更有說服力哦。