日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Note For Linux By Jes(14)-启动流程、模块管理与 Loader

發布時間:2023/12/14 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Note For Linux By Jes(14)-启动流程、模块管理与 Loader 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux的啟動流程分析

啟動流程一覽

  • 加載BIOS 的硬件資訊與進行自我測試,并依據配置取得第一個可啟動的裝置;

  • 讀取并運行第一個啟動裝置內MBR boot Loader (亦即是grub, spfdisk 等程序)

  • 依據boot loader 的配置加載Kernel Kernel會開始偵測硬件與加載驅動程序;

  • 在硬件驅動成功后,Kernel會主動呼叫init 程序,而init 會取得run-level 資訊;

  • init 運行/etc/rc.d/rc.sysinit 文件來準備軟件運行的作業環境(如網絡、時區等)

  • init 運行run-level 的各個服務之啟動(script 方式)

  • init 運行/etc/rc.d/rc.local 文件;

  • init 運行終端機模擬程序mingetty 來啟動login 程序,最后就等待使用者登陸啦;



  • BIOS, boot loader kernel 加載:

    BIOS, 啟動自我測試與MBR

    Boot Loader 的功能



    • 提供菜單:使用者可以選擇不同的啟動項目,這也是多重啟動的重要功能!

    • 加載核心文件:直接指向可啟動的程序區段來開始操作系統;

    • 轉交其他loader:將啟動管理功能轉交給其他loader 負責。


    加載核心偵測硬件與initrd 的功能


    第一支程序init 及配置檔/etc/inittab runlevel

    Run level:運行等級有哪些

    • 0 - halt (系統直接關機)

    • 1 - single user mode(單人維護模式,用在系統出問題時的維護)

    • 2 - Multi-user, without NFS(類似底下的runlevel 3,但無NFS 服務)

    • 3 - Full multi-user mode(完整含有網絡功能的純文字模式)

    • 4 - unused (系統保留功能)

    • 5 - X11 (runlevel 3 類似,但加載使用X Window)

    • 6 - reboot (重新啟動)

    /etc/inittab 的內容與語法

    [配置項目]:[run level]:[init 的動作行為]:[命令項目]



    init 的處理流程

  • 使用/etc/rc.d/rc.sysinit 進行系統初始化

  • 由於runlevel 5 ,因此只進行『l5:5:wait:/etc/rc.d/rc5』,其他行則略過

  • 配置好[ctrl]+[alt]+[del] 這組的組合鍵功能

  • 配置不斷電系統的pf, pr 兩種機制;

  • 啟動mingetty 的六個終端機(tty1 ~ tty6)

  • 最終以/etc/X11/perfdm -nodaemon 啟動圖形介面啦!



  • init 處理系統初始化流程(/etc/rc.d/rc.sysinit)

    取得網絡環境與主機類型:
    讀取網絡配置檔/etc/sysconfig/network ,取得主機名稱與默認通訊閘(gateway) 等網絡環境。

  • 測試與掛載內存裝置/proc U盤裝置 /sys
    除掛載內存裝置/proc 之外,還會主動偵測系統上是否具有usb 的裝置,若有則會主動加載 usb 的驅動程序,并且嘗試掛載usb 的文件系統。

  • 決定是否啟動SELinux
    我們在第十七章談到的SELinux 在此時進行一些檢測,并且檢測是否需要幫所有的文件重新編寫標準的SELinux 類型(auto relabel)

  • 啟動系統的亂數產生器
    亂數產生器可以幫助系統進行一些口令加密演算的功能,在此需要啟動兩次亂數產生器。

  • 配置終端機(console) 字形:

  • 配置顯示於啟動過程中的歡迎畫面(text banner)

  • 配置系統時間(clock) 與時區配置:需讀入/etc/sysconfig/clock 配置值

  • 周邊設備的偵測與Plug and Play (PnP) 參數的測試:
    根據核心在啟動時偵測的結果(/proc/sys/kernel/modprobe ) 開始進行ide / scsi / 網絡/ 音效等周邊設備的偵測,以及利用以加載的核心模塊進行PnP 裝置的參數測試。

  • 使用者自訂模塊的加載
    使用者可以在/etc/sysconfig/modules/*.modules加入自訂的模塊,則此時會被加載到系統當中

  • 加載核心的相關配置:
    系統會主動去讀取/etc/sysctl.conf 這個文件的配置值,使核心功能成為我們想要的樣子。

  • 配置主機名稱與初始化電源管理模塊(ACPI)

  • 初始化軟件磁盤陣列:主要是透過/etc/mdadm.conf 來配置好的。

  • 初始化LVM 的文件系統功能

  • fsck 檢驗磁碟文件系統:會進行filesystem check

  • 進行磁碟配額quota 的轉換(非必要)

  • 重新以可讀寫模式掛載系統磁碟:

  • 啟動quota 功能:所以我們不需要自訂quotaon 的動作

  • 啟動系統虛擬亂數產生器(pseudo-random)

  • 清除啟動過程當中的緩存文件:

  • 將啟動相關資訊加載/var/log/dmesg 文件中。



  • 啟動系統服務與相關啟動配置檔(/etc/rc.d/rc N & /etc/sysconfig)

    使用者自訂啟動啟動程序(/etc/rc.d/rc.local)

    根據/etc/inittab 之配置,加載終端機或X-Window 介面

    啟動過程會用到的主要配置檔:/etc/modprobe.conf/etc/sysconfig/*

    Run level 的切換:init[0-6]







    核心與核心模塊:

    • 核心:/boot/vmlinuz /boot/vmlinuz-version

    • 核心解壓縮所需RAM Disk/boot/initrd (/boot/initrd-version)

    • 核心模塊:/lib/modules/version/kernel /lib/modules/$(uname -r)/kernel

    • 核心原始碼:/usr/src/linux /usr/src/kernels/ (要安裝才會有,默認不安裝)

    核心模塊與相依性:

    /lib/modules/$(uname -r)/kernel

    lib/modules/$(uname -r)/modules.dep

    depmod

    核心模塊的觀察:

    多少模塊:lsmod

    • 模塊名稱(Module)

    • 模塊的大小(size)

    • 此模塊是否被其他模塊所使用(Used by)

    模塊的資訊:modinfo

    核心模塊的加載與移除:

    insmod 則完全由使用者自行加載一個完整檔名的模塊

    rmmod 移除模塊

    核心模塊的額外參數配置:/etc/modprobe.conf





    Bootloader: Grub

    boot loader 的兩個stageStage1:運行boot loader 主程序,Stage2:主程序加載配置檔

    grub 的配置檔/boot/grub/menu.lst 與菜單類型

    grub 對磁碟的代號配置與Linux 不同,主要透過偵測的順序來給予配置。如(hd0) (hd0,0) 等。

    menu.lst 內每個菜單與titile 有關,而直接指定核心啟動時,至少需要kernel initrd 兩個項目

    menu.lst 內配置loader 控制權移交時,最重要者為chainloader +1 這個項目。

    若想要重建initrd ,可使用mkinitrd 處理

    重新安裝grub MBR boot sector 時,可以利用grub shell 來處理。





    啟動過程的問題解決:

    忘記root 口令的解決之道:

    重新啟動!一定要重新啟動!怎么重開都沒關系;

  • 在啟動進入grub 菜單后,(1)在你要進入的菜單上面點'e' 進入詳細配置;(2)將光棒移動到kernel 上方并點'e' 進入編輯畫面;(3)然后出現如下畫面來處理:

    grub edit> kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet single

    重點就是那個特殊字體的咚咚啦!按下[enter] 再按下b 就能夠啟動進入單人維護模式了。

  • 進入單人維護模式后,系統會以root 的權限直接給你一個shell ,此時你就能夠運行『passwd 』這個命令來重建root 的口令啦!然后直接『init 5 』就可以切換成為X 窗口介面羅!就是這么簡單。

  • init 配置檔錯誤:

    grub edit> kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet init=/bin/bash



    BIOS 磁碟對應的問題(device.map)

    因文件系統錯誤而無法啟動:/etc/fstab

    利用chroot 切換到另一顆硬盤工作

    總結

    以上是生活随笔為你收集整理的Note For Linux By Jes(14)-启动流程、模块管理与 Loader的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。