Linux系統管理——系統啟動和內核管理
阿新 • • 發佈:2018-02-06
執行 root ramdisk 編輯器 文件 solar lscpu bios text 1、內核
1.1內核分類
內核設計流派: 單內核(monolithic kernel):Linux 把所有功能集成於同一個程序 微內核(micro kernel): Windows, Solaris 每種功能使用一個單獨子系統實現
1.2、內核組成
組成部分: 核心文件:/boot/vmlinuz-VERSION-release
1.3、centos6啟動
1.加載BIOS的硬件信息,獲取第一個啟動設備 2.讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息 3.加載核心操作系統的核心信息,核心開始解壓縮,並嘗試驅 動所有的硬件設備 4.核心執行init程序,並獲取默認的運行信息 5.init程序執行/etc/rc.d/rc.sysinit文件 6.啟動核心的外掛模塊 7.init執行運行的各個批處理文件(scripts) 8.init執行/etc/rc.d/rc.local 9.執行/bin/login程序,等待用戶登錄 10.登錄之後開始以Shell控制主機
1.4、系統運行級別
/sbin/init CentOS6 之前; 運行級別:為系統運行或維護等目的而設定;0-6:7個級別 0:關機 1:單用戶模式(root自動登錄), single, 維護模式 2: 多用戶模式,啟動網絡功能,但不會啟動NFS;維護模式 3:多用戶模式,正常模式;文本界面 4:預留級別;可同3級別 5:多用戶模式,正常模式;圖形界面 6:重啟 默認級別: 3, 5 切換級別:init # 查看級別:runlevel ; who -r
2、內核編譯
2.1、內核組成
內核組成部分: kernel: 內核核心,一般為bzImage,通常在/boot目錄 下,名稱為vmlinuz-VERSION-RELEASE kernel object: 內核對象,一般放置於 /lib/modules/VERSION-RELEASE/ [ ]: N [M]: M [*]: Y 輔助文件:ramdisk initrd initramfs
2.2、準備
前提: (1) 準備好開發環境 (2) 獲取目標主機上硬件設備的相關信息 (3) 獲取目標主機系統功能的相關信息 例如:需要啟用相應的文件系統 (4) 獲取內核源代碼包 www.kernel.org
目標主機硬件設備相關信息: CPU: cat /proc/cpuinfo x86info -a lscpu
2.3、步驟
tar xf linux-3.10.67.tar.xz -C /usr/src cd /usr/src ln -sv linux-3.10.67 linux cd /usr/src/linux cp /boot/config-$(uname -r) ./.config make help make menuconfig make -j 2 make modules_install make install reboot
2.4、如何編譯
(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
要獲取特定目標平臺的使用幫助 make ARCH=arch_name help make ARCH=arm help
在已經執行過編譯操作的內核源碼樹做重新編譯: 需要事先清理操作: make clean:清理大多數編譯生成的文件,但會保留 config文件等; make mrproper: 清理所有編譯生成的文件、 config及某 些備份文件; make distclean:mrproper、 patches以及編輯器備份文件;
2.5、卸載內核
刪除/lib/modules/目錄下不需要的內核庫文件 刪除/usr/src/linux/目錄下不需要的內核源碼 刪除/boot目錄下啟動的內核和內核映像文件 更改grub的配置文件,刪除不需要的內核啟動列表
Linux系統管理——系統啟動和內核管理