Linux內核編譯及管理

Linux內核(Kernel)
負責管理系統的進程、內存、設備驅動程序、文件和網絡系統
包含了驅動主機各項硬件的偵測程序與驅動模塊
Linux內核 + 各種自由軟件 = 完整的操作系統
linux 內核的存放位置: /boot
查看內核版本
#uname -r
查看發行版本
#cat /etc/RedHat-release
#lsb_release -a

內核網站 :www.kernel.org

學習使用內核
 通過linux內核的源代碼,瞭解操作系統的工作原理
 根據主機硬件的具體情況,定製linux內核
 對內核源代碼進行修改,以滿足特定功能的需要
 升級內核
 重新編譯內核,系統能夠更加安全地運行
 新的內核爲用戶提供新功能
 新的內核支持較新的硬件設備正常工作
 正確配置個性化的內核會使系統運行更快捷、穩定

內核版本

編譯內核步驟
 檢查編譯環境是否正常 #rpm -qa | grep gcc
官網下載內核www.kernel.org
安裝內核源碼包 : 1.make mrproper :配置內核前準備工作 (相當於make clean)
 2.make menuconfig : 定製內核配置文件
3.make : 編譯內核(時間很長)
make modules : 編譯內核模塊
4.make modules_install : 安裝內核模塊
make install : 安裝 內核文件
5.查看內核編譯有無成功
#uname -r
 #ls /boot
 #ls /lib/modules/

引導程序配置文件
/boot /grub
/boot/grub/grub.conf (先加載MBR,再尋找這個文件) <—— /etc/grub.conf 軟鏈接

default=0 // 默認引導的菜單項
timeout=5 //選擇菜單等待時間
splashimage=(hd0,0)/grub/splash.xpm.gz //啓動時的背景圖(分辨率和像素相同可以替換,用Linux 下的圖形工具保存(GNU圖形處理器))
hiddenmenu //隱藏GRUB菜單
passwd --md5 $1$TDARd1$1xJFgaNrprkwXEjE1GHee. //passwd 注意頂格,破解方法:進救援模式刪掉這一行
title Red Hat Enterprise Linux (2.6.32-279.el6.i686) // 菜單名稱,可以隨意更改
passwd --md5 $1$TDARd1$1xJFgaNrprkwXEjE1GHee.
root (hd0,0) //這裏的root表示內核所在的分區, 以下爲 GRUB菜單項配置(MBR加載後進行)
kernel /vmlinuz-2.6.32-279.el6.i686  ro root=UUID=102490b8-4135-44f1-a439-7bba50176f7c rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
//內核文件的位置及內核啓動參數:
1) 這裏的 / 是/boot , 每個分區都有一個根文件系統,剛啓動時沒有根分區
2) ro 系統啓動時根分區爲只讀掛載
3) 這裏的root表示根分區,後面和fstab文件一樣有三種寫法
4) rhgb (redhat graphics boot)就是會看到圖片來代替啓動過程中顯示的文本信息,這些信息在啓動後用dmesg也可以看到
quiet表示在啓動過程中只有重要信息顯示,類似硬件自檢的消息不回顯示 rhgb : red hat grafic boot
initrd /initramfs-2.6.32-279.el6.i686.img // 初始虛擬磁盤的位置
initrd :稱爲初始化虛擬磁盤,用於幫助加載內核模塊,讓 Linux 內核在開機過程中不需掛載根目錄
 就能載入所需要的模塊。initrd 可以通過 int13 芯片讀取內核模塊(驅動程序),當硬盤被驅動後內核就可以掛載根目錄了。
 其他模塊的讀取也就沒問題了。
initrd /boot /initramfs-2.6.32-220.el6.i686.img 設置 initrd (虛擬化磁盤)鏡像文件名。


 如何查看硬盤分區的 UUID,我們可以通
 過 dumpe2fs /dev/sda1 |more 來查看。

GRUB限制
GRUB菜單限制 密碼記錄的位置
 未經授權禁止修改啓動參數 <——全局部分(第一個“title"之前)
 未經授權禁止進入指定系統 <——系統引導部分(每個”title“部分之後)

密碼設置方式(grub.conf):1.passwd 明文密碼串,沒多大意義 2.passwd --md5 加密密碼串

GRUB限制的實現
 使用#grub-md5-crypt獲取加密字串
 修改grub.conf ,添加密碼記錄 : passwd --md5 $1$TDARd1$1xJFgaNrprkwXEjE1GHee.(注意頂格)

GRUB中應用文件語法
(磁盤,分區編號)文件絕對路徑
 磁盤:hd0、hd1 //數字就代表第幾個分區
hd0 = hda / sda
 hd1 = hdb / sdb
分區編號:從0開始編號 (嚴格的講編號是後面的分區號減1,即sdn -1)
 (hd1,3) = hdb4 / sdb4
 (hd0,7) = hda8 / sda8

內核文件的絕對路徑:要參考分區的掛載點

引導程序的功能:編寫內核命令行、裝載初始化虛擬磁盤、將控制權交給Linux內核
 初始虛擬磁盤映像:文件系統映像文件;包含內核引導所需的基本驅動模塊;/boot/initrd-2.6.32-279.el6.i686kdump.img
 /boot/initrd-kernekversion 微型根文件系統,加載到內存中。爲了保證根分區的正常掛載和驅動正常加載,先加載虛擬根目錄

Switching root 相當與 chroot

Linux 內核完成的三個步驟
1.用Linux設備驅動程序替換BIOS設備驅動程序(最關鍵)
2. 把根分區只讀掛載
3. 啓動init進程 (加載fstab)

內核配置文件(grub.conf)丟失或破壞了怎麼辦?
grub> root (hd0,0)
 grub> kernel /vmvmlinuz-2.6.32-279.el6.i686 (補齊)ro root=/dev/sda2
 grub> initrd /initramfs-2.6.32-279.el6.i686.img (補齊)
grub> boot
此時可啓動系統,啓動系統後修復內核配置文件

內核配置文件(grub.conf)配置錯誤怎麼辦?
 在啓動菜單中選擇要啓動的那個系統,按“p"進入直接修改grub配置

模塊:一組功能,完成特定的任務,可以加載和卸載
 模塊文件擴展名.ko
可以靈活的爲內核增加減少相應的功能
 默認位於/lib/modules/kernelversion/目錄中

模塊操作命令
#lsmod : 列出當前已經加載模塊/proc/modules
 Module Size Used by
 rfkill 15242 1 bluetooth — 依賴於該模塊的其他模塊
/ / /
模塊名稱 佔用內存大小 使用該模塊的系統組件數量

#rmmod : 簡單卸載指定模塊
#modinfo:查看模塊信息

#insmod [模塊的絕對路徑] : 載入指定模塊 (絕對路徑可以通過moinfo查詢)
#modprobe : 載入個別或一組模塊(依賴)
-r 卸載模塊以及該模塊依賴的模塊
#depmod : 分析模塊的依賴性寫入modules.dep文件(和repocreate相似)

本文永久更新鏈接地址http://www.linuxidc.com/Linux/2017-02/140721.htm

發佈了3 篇原創文章 · 獲贊 12 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章