生效linux内核,Linux内核
內(nèi)核
單內(nèi)核體系設計、但充分借鑒了微內(nèi)核設計體系的優(yōu)點,為內(nèi)核引入模塊化機制。
內(nèi)核組成部分:
kernel:內(nèi)核核心,一般為bzimage,通常在/boot目錄下,名稱為vmlinuz
kernel object:內(nèi)核對象一般有三種選擇,一般放置于/lib/modules/VERSION-RELEASE/
[ ]:N 不選擇
[ ]:M 選擇編譯為模塊
[ ]:Y 直接選擇成為核心組成部分
輔助文件:ramdisk有以下兩種
initrd
initramfs
運行中的內(nèi)核;
uname命令
uname - print system information
uname [OPTION]...
-a:顯示所有信息
-s:顯示內(nèi)核即操作系統(tǒng)名稱
-n:顯示主機節(jié)點名稱
-r:內(nèi)核的版本號和release號
-v:顯示內(nèi)核的版本制作信息
-p:顯示處理器架構信息
-m:顯示內(nèi)核所在的硬件平臺名稱
-o:顯示操作系統(tǒng)名稱
模塊:
lsmod命令
顯示由核心已經(jīng)裝載的內(nèi)核模塊
lsmod顯示的信息來自于cat /proc/modules文件
modinfo:查看模塊的詳細信息
eg:modinfo ext4
modinfo [ -0 ] [ -F field ] [ -k kernel ] [ modulename|filename... ]
-k:顯示指定內(nèi)核的詳細信息
-p:顯示模塊參數(shù)
-n:只顯示模塊文件路徑
-a:只顯示模塊作者
-d:顯示decription
-l:license
modprobe:裝載或卸載內(nèi)核模塊
modprobe [ -C config-file ] [ modulename ] [ module parameters... ]
默認配置文件:/etc/modprobe.conf,/etc/modprobe.d/*.conf
-n:用作測試
-q:靜默模式
-r:移除模塊
-C:指明讀取模塊的配置文件路徑
modprobe -r [ modulename... ] 卸載某模塊
depmod:內(nèi)核模塊依賴關系文件及系統(tǒng)信息映射文件的生成工具;
裝載或卸載內(nèi)核模塊:
insmod:裝載模塊(不解決依賴性關系)
insmod [ filename ] [ module options... ]
rmmod:卸載模塊
rmmod [ modulename ]
/proc目錄:內(nèi)核把自己內(nèi)部狀態(tài)信息及統(tǒng)計信息,以及可配置參數(shù)通過proc偽文件系統(tǒng)加以輸出
參數(shù):
只讀:輸出信息
可寫:可接受用戶指定“新值”來實現(xiàn)對內(nèi)核某功能或特性的配置
/proc/sys
(1)sysctl命令用于查看或設定此目錄中諸多參數(shù)
sysctl -w path.to.parameter=VALUE
sysctl -w kernel.hostname=danran.com
(2)echo命令通過重定向的方式也可以修改大多數(shù)參數(shù)的值
echo "VALUE" > /proc/sys/path/to/parameter
sysctl
配置文件:/etc/sysctl.conf
(1)設置參數(shù)
sysctl -w parameter=VALUE
(2)通過讀取配置文件件設置參數(shù)生效
sysctl -p [/path/to/conf_file]
內(nèi)核中的路由轉(zhuǎn)發(fā)
sysctl -w /proc/sys/net/ipv4/ip_forword=1
常用的參數(shù):
net.ipv4.ip_forword
kernel.hostname
sysctl -w vm.drop_caches=1 清理系統(tǒng)緩存
/sys目錄:
sysfs:輸出內(nèi)核識別出的各硬件設備的相關屬性信息,也有內(nèi)核對硬件特性的設定信息,有些參數(shù)是可以修改的,用于調(diào)整硬件工作特性。
udev:通過此路徑下輸出的信息動態(tài)為各設備創(chuàng)建所需要設備文件,udev是運行用戶空間程序:專用工具:udevadmin,hotplug
udev為設備創(chuàng)建設備文件時,會讀取其事先定義好的規(guī)則文件,一般在/etc/udev/rules.d及/usr/lib/udev/rules.d目錄下
ramdisk文件的制作
(1) mkinitrd 為當前正在使用的內(nèi)核重新制作ramdisk文件
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) 由當前系統(tǒng)版本生成相應版本的initramfs文件
(2) dracut命令 為當前正在使用的內(nèi)核重新制作ramdisk文件
dracut /boot/initramfs-$(uname -r).img $(uname -r)
編譯內(nèi)核
前提:
(1) 準備好開發(fā)環(huán)境
(2) 獲取目標主機上硬件設備的相關信息
(3) 獲取到木變主機系統(tǒng)功能的相關信息,例如要啟動的文件系統(tǒng)
準備好開發(fā)環(huán)境:
包組(Centos 6)
Server Platform Development
Development Tools
目標主機硬件設備的相關信息:
CPU:
cat /proc/cpuinfo
x86info -a
lscpu
PCI
lspci 查看PCI設備的信息
-v
-vv
lsusb 查看usb設備的信息
lsblk 查看塊設備的信息
了解全部硬件設備信息
hal-device
簡單依據(jù)模板文件的制作過程:
tar xf liunx-3*.tar.gz -C /usr/src -C指定指定目錄
cd /usr/src
ln -sv linux-3* linux 創(chuàng)建解壓文件的軟鏈接linux
cd linux
cp /boot/config-$(uname -r) ./.config 復制boot目錄下的config-$(uname -r)文件到當前目錄下并命名為.config
make menuconfig 執(zhí)行編譯,配置內(nèi)核選項
.config 文件文件
make help
screen 打開一個會話
make -j # #可以同內(nèi)核核心數(shù)一致,也可以是核心的兩倍,多線程同時編譯
make modules——install 安裝模塊
make install 安裝內(nèi)核
安裝bzImage為/boot/vmlinuz-VERSION-RELEASE
生成initramfs文件
編輯grub的配置文件
init 6 重啟系統(tǒng),并測試使用新內(nèi)核
編譯內(nèi)核步驟
(1) 配置內(nèi)核選項
支持“更新”模式進行配置
(a) make config:基于命令行以遍歷的方式去配置內(nèi)核中可配置的每個選項
(b) make menuconfig:基于curses的文本窗口界面
(c) make gconfig:依賴GTK開發(fā)環(huán)境的窗口界面
(d) make xconfig:基于QT開發(fā)環(huán)境的窗口界面
支持“全新配置”模式進行配置
(a) make defconfig:基于內(nèi)核為目標平臺提供的“默認”配置進行配置;
(b) make allnoconfig:所有選項均回答為“no”
(2) 編譯
make [-j #]
如何只編譯內(nèi)核中的一部分功能:
(1) 只編譯某某子目錄中的相關代碼
cd /usr/src/linux
make dir/ (只能使用相對路徑)
(b) 只編譯一個特定的模塊
cd /usr/src/linux
make dir/file.ko
eg:只為e1000編譯驅(qū)動
make drivers/net/ethernet/intel/e1000/e1000.ko
如何交叉編譯內(nèi)核
編譯的目標平臺與當前平臺不相同
make ARCH=arch_name
要獲取特定目標平臺的使用幫助
make ARCH=arch_name help
如何在已經(jīng)執(zhí)行過編譯操作的內(nèi)核源碼樹做重新編譯
事先清理操作
make clean:清理大多數(shù)編譯生成的文件,但會保留config文件等;
make mrproper:清理所有編譯生成的文件、config及某些備份文件
make distclen:mrproper、patches以及編輯器備份文件
screen命令
打開新的screen
screen
退出并關閉screen
exit
剝離當前screen
Ctrla,d
顯示所有已經(jīng)打開的screen
screen -ls
恢復某screen
screen -r [SESSION]
總結(jié)
以上是生活随笔為你收集整理的生效linux内核,Linux内核的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fopen在linux中打开文件夹,pl
- 下一篇: linux出站入站端口维护,linux下