linux kernel
但核心體系設計,但充分借鑑了微核心設計體系的優點,為核心引入模組化機制
核心組成部分:
kernel:核心核心,一般為bzimage,通常在/boot目錄下,名稱為vmlinuz
kernel object 核心物件,一般放置於/lib/modules/version-release/
[ ]:n
[m]:m
[*]:y
輔助檔案ramdisk
initrd
initramfs
執行中的核心
uname -r 顯示version-releasae
-n顯示結點名稱
模組lsmod :顯示由核心已經裝載的核心模組
顯示的內容來自於:/proc/modules 檔案
modinfo命令
顯示模組的詳細描述資訊
modinfo [ -k kernel] [modulename|filename...]
-n 只顯示模組檔案路徑
-p 顯示模組引數
-a author
-d 描述
-l license
modprobe裝載或者解除安裝核心模組
-r ipv6 解除安裝ipv6
depmod
核心模組依賴關係及系統資訊對映檔案的生成工具
裝載或解除安裝核心模組
insmod ..
rmmod ..
/proc目錄
核心把自己內部狀態資訊及統計資訊,以及可配置引數通過proc偽檔案系統加以輸出
引數唯讀:輸出資訊
可寫:(一般/proc/sys) 可接受使用者指定「新值」來實現對核心某功能或特性的配置
sysctl用於檢視或設定此目錄中的諸多引數
-w path.to.parameter=value
eg: # sysctl -w kernel.hostname=mail.meu.com
echo通過重定向的方式也可以修改大多數引數的值
echo "value" > /proc/sys/path/to/parameter
eg: echo "www.mdu.com" > /proc/sys/kernel/hostname
sysctl命令
配置檔案:/etc/sysctl.conf
(1)設定引數
sysctl -w parameter=value
(2)通過讀取配置檔案設定引數
sysctl -p [/path/to/conf_file]
核心中的路由**
/proc/sys/net/ipv4/ip_forward
常用的幾個引數
net.ipv4.ip_forward
vm.drop_caches
kernel.hostname
/sys目錄
udev通過此路徑下輸出的資訊動態為各裝置建立所需要檔案裝置;udev是執行使用者空間程式:專用工具udevadmin,hotplug
udev為裝置建立裝置檔案時,會讀取其事先定義好的規則檔案,一般在/etc/udev/rules.d及/usr/lib/udev/rules.d目錄下
ramdisk檔案的製作
(1)mkinitrd
為當前正在使用的核心重新製作ramdisk檔案
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
(2)dracut
為當前正在使用的核心重新製作ramdisk檔案
dracut /boot/initramfs-$(uname -r).img $(uname -r)
編譯核心
前提:(1)準備好開發環境
(2)獲取目標主機上硬體裝置的相關資訊
(3)獲取到目標主機系統功能的相關資訊,例如要啟用的檔案系統
(4)獲取核心源**包
準備好開發環境
包組(centos6)
server platform development
development tools
目標主機硬體裝置相關資訊
cpu:
cat /proc/cpuinfo 檢視核心cpu資訊
lscpu [-v]
x86info -a
pci裝置:
lscpi [-v] [-vv]
lsusb
lsblk
了解全部硬體裝置資訊
hal-device
簡單依據模板檔案的製作過程
tar xf linux-3.10.67.tar.xz -c /usr/src
cd /usr/src
in -sv linux-3.10.67 linux
cd linux
cp /boot/config-$(uname -r) ./.config
make menuconfig
screen
make -j #
make modules_install
make install
重啟並測試使用新核心
Linux核心 程序管理
注 對linux系統來說,執行緒只是一種特殊的程序,linux不區分執行緒和程序 程序 處於執行期的程式 包含的資源 一 程序描述符及任務結構 程序存放在任務佇列 task list 的雙向迴圈鍊錶中 鍊錶中每一項型別均為task struct 程序描述符,也可表示為task t 該結構定義在inc...
Linux核心 程序管理
1 程序生命週期 某個程序通過系統呼叫fork,建立乙個用於執行程式的程序。生成此程序的程序稱為父程序,被生成的程序稱為子程序。子程序通過複製父程序的資料得以建立 父程序執行系統呼叫wait,等待子程序結束 子程序通過系統呼叫exec將程式讀取到記憶體並開始執行 當程式執行完畢後,子程序通過系統呼叫...
Linux核心模組管理
linux 核心模組管理 目錄 核心模組路徑 檢視已載入的核心 載入與解除安裝核心模組 修改核心引數 linux核心採用的是模組化技術,這樣的設計使得系統核心可以保持最小化,同時確保了核心的可擴充套件性與可維護性,模組化設計允許我們在需要時才將模組載入至核心,實現動態核心調整。本文重點關注方法與思路...