Linux內核:單內核,模塊化
內核的某些模塊
編譯進內核本體 [*]
編譯成內核模塊 [M]
不選擇使用 [ ]
內核的組成部分
/boot/vmlinuz-VERSION
/lib/modules/VERSION/
*.ko
模塊間有可能有依賴關系
內核模塊管理
lsmod:顯示內核已裝載的模塊;
動態裝卸載模塊:
卸載:modprob -r 模塊名
rmmod 模塊名
裝載:modporb 模塊名
insmod 模塊路徑 (使用modinfo可以查看)
查看某模塊的詳細信息
modinfo 模塊名
檢查并生成模塊間依賴關系的命令
depmod
復制e1000模塊至/mnt/sysroot目錄,可在新的系統中啟用網絡功能
內核參數的配置:
/proc,/sys
/proc:內核映像
許多參數(讀寫,只讀)
只讀文件:輸出統計信息
讀寫文件:設定內核工作機制
/proc/sys
不允許使用文本編輯器打開進行編寫,而只能通過重定向或使用專用的工具;
/proc:虛擬成了文件系統
net/ipv4/ip_forward
幾個常用參數:
kernel.hostname
vm.drop_caches
net.ipv4.icmp_echo_ignore_all
net.ipv4.ip_forward
ip地址屬于內核,而非網卡。
修改內核參數的辦法
echo “ “>/proc/sys/
sysctl –w net.ipv4.ip_forward=1
cat /proc/sys/net/ipv4/ipforward
配置文件:/etc/sysctl.conf
sysctl –a:顯示sysctl可控制的所有內核參數;
sysctl –p:重讀配置文件并生效之;
/sys:
Linux 2.4-:/dve所有設備都是事先預置。
Linux 2.6+:/dev下所有設備文件能夠按需創建。
kernel初始化時,根文件系統尚未掛載。
/sys中存入硬件設備的相關信息。
用戶空間的某應用程序就可根據/sys中信息來為每個設備按需創建設備文件。
udev:用戶空間的程序,用于創建所需要設備, udevadmin
/etc/udev/rules.d目錄下
ramdisk:/boot/initramfs-VERSION.img
創建工具:mkinitrd CentOS5
dracut CentOS6
Dracut /boot/initramfs-`uname –r`.img `uname –r`
展開initramfs文件:
cp /boot/initramfs-RELEASE.img /tmp/initramfs.img.gz
gzip –d /tmp/initramfs.img.gz
mkdir /tmp/initramfs
cd /tmp/initramfs
cpio –id < ../initramfs.img
bash子進程:
exec COMMAND:能啟動command為一個進程,此進程會取代當前shell進程;
echo $DISPLAY 顯示當前的桌面和屏幕;
screen工具:
啟動新的屏幕:screen
退出新屏幕:exit 關閉屏幕
拆除新屏幕:Ctrl+a,d 臨時隱藏屏幕;
screen –ls :查看所有被隱藏屏幕的ID
screen –r SID:連接至某隱藏的屏幕;
lftp工具:ftp客戶端工具
lftp HOST
-u USERNAME,PASSWORD
-p PORT
-e ‘CMD’
lftp:子命令
help:獲取幫助信息
cd:切換目錄
lcd:切換本地系統目錄
get FILE:下載文件;
!COMMAND:執行shell命令,而非FTP命令
mget FILE1…FILEn:下載多個文件,支持使用通配符
mirror DIR:鏡像目錄至本地
put FILE:上傳文件
put FILE1…FILEn:上傳多個文件
lftpget:類似于wget:下載指定URL
kernel:
www.kernel.org
編譯內核前提:查看本地硬件信息常用工具
1、 查看CPU信息:
cat /proc/cpuinfo
x86info:不常用 需要額外安裝
lscup
2、查看PCI信息
lspci
-v
3、查看USB
lsusb
4、查看塊設備
lsblk
1、 查看所有硬件
/boot/config-2.6.32… 所有硬件信息整合到此文件中
編譯:交叉編譯
cross-compilling
編譯內核的步驟:(安裝好開發環境) CentOS6:Development Tools; Server Platform Development; curese-devel)
第一步:配置內核
make config
make allyesconfig
make allnoconfig
make menuconfig
make gconfig(依賴于Gnome桌面環境及Gnome的圖形開發環境, –gkt2)
make kconfig(依賴于KDE桌面環境及KDE圖形開發環境,qt)
第二步:編譯
make
第三步:安裝內核模塊
make modules_install
安裝位置:/lib/modules/VERSION
分析模塊間依賴關系并成dep文件
第四步:安裝內核
make install
安裝內核:/boot/vmlinuz-VERSION
編輯grub.conf,添加一新的title
獲取源代碼,展開指定目錄下:
tar xf Linux-3.10… -C /usr/src
ln –sv linux-3.10.10 linux
cd linux
make menuconfig
編輯完成后自動保存成.config文件
可以先將/boot下的config文件復制到Linux目錄中,將名字改為.config,再使用make menuconfig來修改配置。
后續的編譯,開始之前的清理工作
make clean
清理編譯的文件,但保留配置文件;
make mrproper
移除所有編譯生成的文件,配置文件和備份文件;
make distclean
完全清理
1、 將編譯生成的文件保存至別處;
mkdir /path/to/somewhere
cd /path/to/somewhere
./configure –ksource=/usr/src/linux
2、 如何只編譯內核的部分代碼
(1) 只編譯某子目錄中的相關代碼
cd /usr/src/linux
例如: make SUBDIR=arch/
make diver/net/
(2) 只編譯部分模塊
make M=path/to/dir
make M=drivers/net
(3) 只編譯一個模塊
make path/to/dir/MOD_NAME.ko
例如:
make drivers/net/Ethernet/intel/e1000/e1000.ko
(4) 將編譯生成的文件保存至別處
make O=/path/to/some/where
1. 交叉編譯
make ARCH=arch
例如:
make ARCH=arm
獲取ARCH的可用默認配置
make ARCH=arch help
例如:
make ARCH=arm acs5k_defconfig
原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/4441