在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux啟動流程詳解

strongerHuang ? 來源:strongerHuang ? 2024-01-23 09:14 ? 次閱讀

Linux啟動流程總的來說可以分成三個階段

d77b092e-b985-11ee-8b88-92fbcf53809c.png

Linux啟動流程圖

d77efc46-b985-11ee-8b88-92fbcf53809c.png

第一步:上電

?在 x86 系統中,將 1M 空間最上面的 0xF0000 到 0xFFFFF 這 64K 映射給 ROM

?當電腦剛加電的時候,會做一些重置的工作,將 CS 設置為 0xFFFF,將 IP 設置為 0x0000,所以第一條指令就會指向 0xFFFF0,正是在 ROM 的范圍內。

?在這里,有一個 JMP 命令會跳到 ROM 中做初始化工作的代碼,于是,BIOS 開始進行初始化的工作

d78610a8-b985-11ee-8b88-92fbcf53809c.png

第二步:BIOS啟動

固件初始化:計算機開機后,UEFI固件會進行初始化,包括硬件初始化、自檢和加載UEFI固件驅動程序等。

啟動設備選擇:UEFI固件會檢測并識別可啟動的設備,如硬盤、光盤、USB設備等。它會根據預設的啟動順序或用戶設置的啟動選項,選擇一個可啟動的設備作為啟動介質。

UEFI固件驅動程序加載:UEFI固件會加載設備上的UEFI固件驅動程序,這些驅動程序負責與硬件設備進行交互,以便后續的啟動過程能夠正常進行。

UEFI應用程序加載:UEFI固件會加載位于啟動介質上的UEFI應用程序,如引導加載程序(Bootloader)或操作系統的引導管理器。這些應用程序通常位于EFI系統分區中,以.efi文件格式存在。

引導加載程序執行:加載的引導加載程序會接管控制權,負責加載操作系統內核或其他引導組件。常見的引導加載程序有UEFI Shell、GRUB、rEFInd等。

d78c8078-b985-11ee-8b88-92fbcf53809c.png

第三步:Linux啟動

d791fd28-b985-11ee-8b88-92fbcf53809c.png

Linux啟動-引導

?我們可以通過BIOS界面選擇硬盤啟動項進入OS,那BIOS是怎么發現這個硬盤里有OS?

?答案就是MBR(Master Boot Record),

?MBR是放在硬盤的第一個扇區,一共512字節,

?可以分成兩部分:

?主引導記錄:安裝啟動引導程序的地方,446字節,

?分區表:記錄整個硬盤分區的的狀態此外,64字節

Linux啟動-引導EBR/VBR

?找到MBR后下一步做啥?

?(1)如果查找分區表時發現操作系統裝在主分區,然后執行已載入的MBR中的boot loader代碼,加載該激活主分區的VBR中的boot loader,至此,控制權就交給了VBR的boot loader

?(2)如果操作系統不是裝在主分區,那么肯定是裝在邏輯分區中,所以查找完主分區表后會繼續查找擴展分區表,直到找到EBR所在的分區,然后MBR中的boot loader將控制權交給該EBR的boot loader

d79ebc16-b985-11ee-8b88-92fbcf53809c.png

Linux啟動-引導GRUB2介紹

?GNU GRUB(GRand Unified Bootloader簡稱“GRUB”)是一個來自GNU項目的多操作系統啟動程序。GRUB是多啟動規范的實現,它允許用戶可以在計算機內同時擁有多個操作系統,并在計算機啟動時選擇希望運行的操作系統。GRUB可用于選擇操作系統分區上的不同內核,也可用于向這些內核傳遞啟動參數

?生成配置文件:grub2-mkconfig -o /boot/grub2/grub.cfg

?安裝:grub2-install /dev/sda

Linux啟動-引導GRUB2加載

?Grub2 第一個安裝的就是 boot.img,BIOS 完成任務后,會將 boot.img 從硬盤加載到內存中的 0x7c00 來運行。boot.img會加載 core.img。如果從硬盤啟動的話,這個扇區里面是 diskboot.img,diskboot.img 的任務就是將 core.img 的其他部分加載進來,先是解壓縮程序 lzma_decompress.img,再往下是 kernel.img,最后是各個模塊 module 對應的映像。這里需要注意,它不是 Linux 的內核,而是 grub 的內核。

?隨著我們加載的東西越來越大,實模式這 1M 的地址空間實在放不下了,所以在真正的解壓縮之前,lzma_decompress.img 做了一個重要的決定,就是調用 real_to_prot,切換到保護模式,這樣就能在更大的尋址空間里面,加載更多的東西。

d7a2fa2e-b985-11ee-8b88-92fbcf53809c.png

Linux啟動-0/1號進程

?set_task_stack_end_magic(&init_task)。這里面有一個參數 init_task,它的定義是 struct task_struct init_task = INIT_TASK(init_task)。

?它是系統創建的第一個進程,我們稱為 0 號進程。這是唯一一個沒有通過 fork 或者 kernel_thread 產生的進程,是進程列表的第一個。

?1.trap_init()中斷初始化

?2.mm_init()內存初始化

?3.sched_init()調度策略初始化

?4.vfs_caches_init()基于內存文件系統rootfs初始化

?5.start_kernel()->rest_init()其他方面的初始化

?rest_init 的第一大工作是,用 kernel_thread(kernel_init, NULL, CLONE_FS) 創建第二個進程,這個是 1 號進程。1 號進程對于操作系統來講,有“劃時代”的意義。

Linux啟動-ramdisk

?init 程序是在文件系統上的,文件系統一定是在一個存儲設備上的,例如硬盤。Linux 訪問存儲設備,要有驅動才能訪問。如果存儲系統數目很有限,那驅動可以直接放到內核里面,但是文件系統的格式有很多,全都放進內核那內核就太大了。

?這該怎么辦呢?

?我們只好先弄一個基于內存的文件系統。內存訪問是不需要驅動的,這個就是 ramdisk。這個時候,ramdisk 是根文件系統。

?運行 ramdisk 上的 /init,等它運行完了就已經在用戶態了。/init 這個程序會先根據存儲系統的類型加載驅動,有了驅動就可以設置真正的根文件系統了。有了真正的根文件系統,ramdisk 上的 /init 會啟動文件系統上的 init。

Linux啟動-init介紹

?前面0/1進程都屬于內核線程,ps pid=1的是init進程

? if (ramdisk_execute_command) {

?ret = run_init_process(ramdisk_execute_command);

?...... }

?......

?if (!try_to_run_init_process("/sbin/init") ||

?!try_to_run_init_process("/etc/init") ||

? !try_to_run_init_process("/bin/init") ||

?!try_to_run_init_process("/bin/sh")) return 0

?它會嘗試運行 ramdisk 的“/init”,或者普通文件系統上的“/sbin/init”“/etc/init”“/bin/init”“/bin/sh”。不同版本的 Linux 會選擇不同的文件啟動,但是只要有一個起來了就可以。

?Init類型:

?SysV:CentOS 5之前, 配置文件/etc/inittab

?Upstart:CentOS 6,配置文件/etc/inittab,/etc/init/*.conf

?Systemd:CnetOS7, 配置文件/usr/lib/system/syste,/etc/systemd/system

Linux啟動-運行級別

d7a92958-b985-11ee-8b88-92fbcf53809c.png

Linux啟動-fstab

?任何硬件設備連接后,操作系統使用硬件,即需要掛載。windows只不過是自動“掛載”了,linux需要手動自己搞。在Linux系統下,例如每次掛載/dev/sdb1(例如U盤設備文件)需要手動使用命令mount。當然,每次重啟,開啟時,硬盤一般也是被自動掛載的,而自動掛載的信息,就記錄在/etc/fstab文件中。

? 系統每次啟動都會讀取/etc/fstab中的配置內容,自動掛載該文件中被記錄的設備和分區。

? 第一列:設備文件或UUID或label(三者的區別看下面)

? 第二列:設備的掛載點(空目錄)

? 第三列:該分區文件系統的格式(可以使用特殊的參數auto,自動識別分區的分區格式)

? 第四列:文件系統的參數,設置格式的選項

? 第五列:dump備份的設置(0表示不進行dump備份,1代表每天進行dump備份,2代表不定日期的進行dump備份)

? 第六列:磁盤檢查設置(其實是一個檢查順序,0代表不檢查,1代表第一個檢查,2后續.一般根目錄是1,數字相同則同時檢查)

Linux啟動-用戶登錄

一般來說:用戶登錄方式有三種

1.命令行登錄

2.ssh登錄

3.圖形登錄

Linux是多任務多用戶的操作系統,它允許多人同時在線工作。但每個人都必須要輸入用戶名和密碼才能驗證身份并最終登錄。但登陸時是以圖形界面的方式給用戶使用,還是以純命令行模式給用戶使用呢?這是終端決定的,也就是說在登錄前需要先加載終端。

現代Linux上,console終端已經和原始的意義不太一樣了,其設備映射在/dev/console上,所有內核輸出的信息都輸出到console終端,而其他用戶程序輸出的信息則輸出到虛擬終端或偽終端。

總結下:

/dev/console:控制臺終端

/dev/ttyN:虛擬終端,ctrl+alt+f[1-6]切換的就是虛擬終端

/dev/ttySN:串行終端

/dev/pts/N:偽終端,ssh等工具連接過去的活著圖形終端下開啟的命令行終端就是偽終端。

Linux啟動-用戶切換

Linux預設提供了六個命令窗口終端機讓我們來登錄。

默認我們登錄的就是第一個窗口,也就是tty1,這個六個窗口分別為tty1,tty2 … tty6,你可以按下Ctrl + Alt + F1 ~ F6 來切換它們

?

?針對我的VM Virtual BOX ctrl+alt + F1是圖形終端, ctrl+alt + F2~F6命令行終端

Linux啟動流程思維導圖

d7ad673e-b985-11ee-8b88-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11304

    瀏覽量

    209523
  • 命令
    +關注

    關注

    5

    文章

    684

    瀏覽量

    22027
  • 啟動流程
    +關注

    關注

    0

    文章

    14

    瀏覽量

    6479

原文標題:Linux啟動流程 梳理| 思維導圖 | 流程圖

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux啟動流程基本分析

    Linux啟動流程總的來說可以分成三個階段 Linux啟動流程圖 ? 第一步:上電 ?在 x86
    的頭像 發表于 05-11 08:49 ?685次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>啟動</b><b class='flag-5'>流程</b>基本分析

    linux啟動流程分析

    linux啟動流程分析
    發表于 08-04 00:27

    Linux啟動過程詳解

    1、Linux 基礎安裝Linux操作系統 Linux文件系統 Linux常用命令 Linux啟動
    發表于 11-02 07:01

    嵌入式Linux啟動流程簡介

    目錄嵌入式 Linux 啟動流程簡介啟動流程Bootloader 簡介市面上可見的 bootloader入式
    發表于 11-04 09:04

    Linux啟動流程是怎樣的

    本文簡單的介紹了什么是嵌入式系統,以及嵌入式Linux的系統結構,并且簡單的介紹了Linux啟動流程
    發表于 11-05 06:44

    Linux文件系統啟動流程

    Linux 命令的結合使用Linux 文件系統啟動流程sysvinit服務的管理與裁剪systemd服務的管理與裁剪了解 qt4、qt5 的移植了解 yocto構建文件系統常規
    發表于 12-17 06:00

    Linux啟動設置詳解

      關于linux啟動   2. 關于rc.d   3. 啟動腳本示例   4. 關于rc.local   5. 關于bash啟動腳本   6. 關于開機程序的自動
    發表于 09-14 15:56 ?34次下載

    Linux基礎命令之Linux啟動過程詳解

    2.2 Linux啟動過程詳解 在了解了Linux的常見命令之后,下面詳細講解Linux啟動
    發表于 10-18 14:17 ?2次下載
    <b class='flag-5'>Linux</b>基礎命令之<b class='flag-5'>Linux</b><b class='flag-5'>啟動</b>過程<b class='flag-5'>詳解</b>

    詳解嵌入式linux 啟動信息

    詳解嵌入式linux 啟動信息
    發表于 10-30 10:28 ?11次下載
    <b class='flag-5'>詳解</b>嵌入式<b class='flag-5'>linux</b> <b class='flag-5'>啟動</b>信息

    linux內核啟動流程

    Linux啟動代碼真的挺大,從匯編到C,從Makefile到LDS文件,需要理解的東西很多。畢竟Linux內核是由很多人,花費了巨大的時間和精力寫出來的。而且直到現在,這個世界上仍然有成千上萬的程序員在不斷完善
    發表于 11-14 16:19 ?4352次閱讀
    <b class='flag-5'>linux</b>內核<b class='flag-5'>啟動</b><b class='flag-5'>流程</b>

    詳解bootloader的執行流程與ARM Linux啟動過程分析

    S3C2410 ARM處理器為例,詳細分析了系統上電后 bootloader的執行流程及 ARM Linux啟動過程。
    的頭像 發表于 12-21 09:24 ?1.1w次閱讀
    <b class='flag-5'>詳解</b>bootloader的執行<b class='flag-5'>流程</b>與ARM <b class='flag-5'>Linux</b><b class='flag-5'>啟動</b>過程分析

    嵌入式 Linux 啟動流程和 bootloader 介紹

    目錄嵌入式 Linux 啟動流程簡介啟動流程Bootloader 簡介市面上可見的 bootloader入式
    發表于 11-01 16:32 ?11次下載
    嵌入式 <b class='flag-5'>Linux</b> <b class='flag-5'>啟動</b><b class='flag-5'>流程</b>和 bootloader 介紹

    嵌入式linux的運行過程,嵌入式linux啟動流程--詳解

    開門見山:1、嵌入式linux啟動第一步----Boot LoaderBoot Loader在這里我就不細說了,詳細分析起來的話有很多內容,網上也有很多講解很詳細的文章。這段小程序中我們可以初始化
    發表于 11-02 11:06 ?12次下載
    嵌入式<b class='flag-5'>linux</b>的運行過程,嵌入式<b class='flag-5'>linux</b>的<b class='flag-5'>啟動</b><b class='flag-5'>流程</b>--<b class='flag-5'>詳解</b>

    嵌入式Linux專題(一)——嵌入式Linux系統構成及啟動流程

    本文簡單的介紹了什么是嵌入式系統,以及嵌入式Linux的系統結構,并且簡單的介紹了Linux啟動流程
    發表于 11-02 12:36 ?15次下載
    嵌入式<b class='flag-5'>Linux</b>專題(一)——嵌入式<b class='flag-5'>Linux</b>系統構成及<b class='flag-5'>啟動</b><b class='flag-5'>流程</b>

    AURIX? TC3xx啟動流程詳解

    本文首先介紹整個啟動流程的概況,接著分別介紹了firmware啟動流程,boot mode的配置,以及用戶程序啟動
    的頭像 發表于 06-06 10:31 ?3666次閱讀
    AURIX? TC3xx<b class='flag-5'>啟動</b><b class='flag-5'>流程</b><b class='flag-5'>詳解</b>
    主站蜘蛛池模板: tube 69sex 第一次| 乱轮黄色小说| 99热久久久久久久免费观看| 色综合久久网| 国产成人91青青草原精品| 极品丰满翘臀后进啪啪| 男女无遮挡在线完整视频| 日本黄色高清视频网站| 在线免费午夜视频| 欧美同性精品xxxx| 天堂伊人| www.丁香.com| 国内真实下药迷j在线观看| 俺去操| 国产精品久久久亚洲第一牛牛| h视频在线免费| 色噜噜噜噜色| 午夜影视在线免费观看| 57pao成人永久免费视频| 色聚网久久综合| 午夜免费视频| 日本一区二区三区免费看 | 噜啪啪| 日韩爱爱| 黄色网址播放| 人人草人人爱| 人人精品| 一级特一级特色生活片| 国产成都一二三四区| 久久xx| 欧美成人免费| 久久99精品久久久久久秒播| 亚洲欧美日韩动漫| 一级特黄aaa大片在| 2017天天干夜夜操| 色五阁| 色女仆影院| 亚洲欧洲色天使日韩精品| 97伊人久久| 久久精品国产免费中文| 黄色生活毛片|