首頁 > 軟體

Linux核心編譯及管理

2020-06-16 17:21:16

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


IT145.com E-mail:sddin#qq.com