1. 程式人生 > >Linux系統管理——系統啟動和內核管理

Linux系統管理——系統啟動和內核管理

執行 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系統管理——系統啟動和內核管理