以下講的是內核基礎、內核管理、安裝編譯內核、安裝程序anaconda、kickstart。
1、內核基礎
對於內核,現在有單內核和微內核設計,現在的內核多采用單內核和高度模塊化設計,對於模塊化設計,可以進行動態裝卸載。
內核一般由三部分組成:內核核心文件、內核對象、ramdisk。內核核心文件,一般爲bzImage,經過壓縮處理的鏡像文件,通常內核核心文件保存在/boot目錄下,名稱爲vmlinuz-VERSION-release。內核對象,即內核額外的功能模塊,該類文件放置於/lib/modules/VERSION-release。
ramdisk取決於內核能否直接驅動rootfs所在的存儲設備,一般來講,kernel的核心文件和ramdisk文件必須具有相同的版本號。ramdisk文件是在操作系統安裝完成之後執行的,由特定的應用程序組成。
ramdisk文件的製作工具有mkinitrd、dracut兩種,具體解釋如下:
CentOS 5:mkinitrd initrd-KERNEL-VERSION.img kernel-version
CentOS 6/7:dracut initramfs-KERNEL-VERSION.img kernel-version
2、內核管理
(1)、uname命令 -----------顯示內核信息
常用選項:
-n:顯示節點名稱
-r:顯示版本號
-a:顯示所有信息
# uname -n
little
# uname -r
2.6.32-573.el6.x86_64
# uname -a
Linux little 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
(2)、lsmod命令 --------顯示已經裝載的內核模塊
對於已經裝載模塊,所顯示的內容包括三部分,即模塊名稱、模塊大小、被引用次數及被誰所引用。
(3)、modinfo命令 ---------------顯示具體內核信息
常用選項:
-F field:顯示指定字段的信息
-a:顯示模塊作者
-n:顯示模塊的絕對路徑
-d:顯示模塊的描述信息
-l:顯示許可證信息
-p:顯示模塊的參數信息
(4)、modprobe命令 ------------裝卸載模塊
modprobe的默認的配置文件 [-C config-file]爲:/etc/modprobe.conf,/etc/modprobe.d/*
# modprobe module_name ---------裝載模塊,可自動識別和解決依賴關係
# modprobe -r module_name ---------卸載模塊
3、僞文件系統
與內核信息相關的僞文件系統主要有兩個,即/proc、/sys兩類。
(1)、/proc
/proc:爲內核狀態、統計信息的輸出接口。對於/proc的內容,可以使用echo進行重定向覆蓋輸出,進行設置和修改內核的功能和特性,如:echo "VALUE" > /proc/sys/PATH/TO/PARAMETER。
對於/proc/sys進行查看和配置可用sysctl命令,sysctl命令的具體用法如下:
sysctl命令 -----------查看和配置內核參數
查看內核參數:
sysctl -a:查看所有可以被修改的內核參數
sysctl variable:查看指定內核參數的設定值
配置某個內核參數的值:
sysctl -w variable=value
sysctl -p --------重載
(2)、/sys
sysfs:輸出內核識別出來的各硬件設備的相關屬性信息。
udev:讀取/sys目錄下的硬件設備信息,按需創建設備文件,運行於用戶空間,內核通過內置的devtmpfs爲每個內核所要使用的設備創建設備文件;
4、安裝編譯內核
(1)、安裝編譯的條件:
安裝開發環境、獲取目標主機各硬件信息、獲取目標主機功能選項信息。開發環境的開發工具有 gcc、make、automake、qt、GTK、ncurses等。安裝編譯之前需安裝程序包組"Development Tools"和"Server Platform Development",即開發工具,和服務器平臺開發。
獲取目標主機上各硬件設備的相關信息,有以下命令:lscpu、lspci、lsusb、lsblk、hal-device 。
(2)、編譯安裝應用程序的三個步驟:
第一步:# ./.configure ARG1 [ARG2...]
.configure文件記錄了內核的編譯細節,# make menuconfig|xconfig|gconfig|config
第二步:# make
對於編譯,可進行多線程編譯,# make [-j #]
第三步:# make modules_install
# make install
在進行安裝之前,要先安裝相應的模塊,然後再安裝內核核心文件,生成grub啓動菜單。
(3)、配置內核的7種方式:
1)、# make config:單行命令行遍歷內核所有功能,交互式配置
2)、# make menuconfig:基於 curses 的文本模式配置窗口;
3)、# make gconfig:基於 GTK 開發環境的窗口配置界面
4)、# make xconfig:基於 QT 開發環境的窗口配置界面
5)、# make defconfig:基於內核
6)、# make allnoconfig:全部不編譯,模版
7)、# make allyesconfig:所有功能全部編譯進核心
(4)、三種內核編譯方式:全編譯、部分編譯、交叉編譯
(5)、linux系統安裝的注意事項
CentOS操作系統絕對不能分區的目錄有:bin, sbin, lib, lib64;建議單獨分區的目錄有:boot, home, var, usr等。
5、安裝程序anaconda
對於系統安裝,在具體的進行安裝之前,需運行一個安裝程序,即安裝程序anaconda。anaconda給我們提供了兩種操作界面,即TUI文件配置窗口、GUI圖形界面/CLI命令行界面。
裝載rootfs,然後啓動anaconda,如果內存不夠512M,則anaconda是以文本界面啓動的,如果內存大於512M,anaconda默認以圖形界面啓動。對於stage2階段的配置文件:/isolinux/isolinux.cfg,其中有向內核傳遞的附加參數,其中最重要的是ks,即kickstart啓動無人值守安裝,ks指定了kickstart配置文件的位置,可以本機也可以遠程,注意是絕對路徑。
anaconda在安裝前具有一個準備配置階段,進行各種基礎配置。對於安裝階段,主要有6個步驟,如下:
anaconda安裝:
1)、運行某些預安裝腳本,完成初始化
2)、創建分區,執行格式化安裝文件系統,掛載
3)、將選定的程序包或程序包組安裝至目標位置
4)、安裝bootloader至MBR及boot分區中
5)、製作ramdisk文件
6)、運行安裝後腳本
對於 kickstart文件,具體具有三部分,即命令段、腳本段、程序包/程序包組段。
【命令段】指明各種安裝前的配置,分爲必備命令和可選命令兩類。9個必備命令爲:authconfig、bootloader、keyboard、lang、part、clearpart、volgroup、logvol、rootpw、timezone。可選命令爲:install、upgrade、text、network、firewall、selinux、repo、reboot、halt/poweroff、url、firstboot。
【腳本段】有安裝前執行的腳本和安裝後執行的腳本兩部分,%pre --- %end:爲安裝前腳本,運行環境是運行於安裝介質上的微型Linux系統環境。%post ----- %end:爲安裝後腳本,運行環境是安裝以後的操作系統。
【程序包段】指明要安裝的程序包或程序包組以及不安裝程序包,%packages ----- %end。
創建kickstart文件的兩種方法,全新創建或用ks模板進行改寫,具體如下:
1)、直接以anaconda-ks.cfg爲模版,複製之後修改即可。
2)、使用工具來創建:# system-config-kickstart &
如果命令不存在,則yum install system-config-kickstart安裝。
3)、檢測ks文件的語法是否存在錯誤:
# ksvalidator
如果該命令不存在,安裝pykickstart-1.74.20-1.el6.noarch。
關閉防火牆:
CentOS 6:# service iptables stop
# chkconfig iptables off
CentOS 7:# systemctl stop firewalld.service
# systemctl disable firewalld.service
臨時清理防火牆規則,並將selinux設置爲permissive模式:
# iptables -F ---------防火牆臨時不生效
# setenforce 0 ----------SELinux臨時不限用戶行爲