匿名
尚未登入
登入
頂極製作所
搜尋
檢視 緯育 2026-0414 的原始碼
出自頂極製作所
命名空間
頁面
討論
更多
更多
頁面操作
閱讀
檢視原始碼
歷史
←
緯育 2026-0414
由於下列原因,您沒有權限進行編輯此頁面的動作:
您請求的操作只有這個群組的使用者能使用:
管理員
您可以檢視並複製此頁面的原始碼。
本系列講座詳細解析了Linux系統從按下電源到出現登入畫面的完整開機流程,並深入探討了啟動載入器GRUB (Grand Unified Bootloader) 的運作原理、歷史與設定方式。講座將開機過程劃分為啟動載入器 (Boot Loader)、核心 (Kernel) 載入與初始化,以及作業系統初始化等三個主要階段,闡述了每個階段的任務、可能的故障點及其對應的螢幕現象,幫助聽眾根據顯示訊息診斷問題。<br><br> 講座重點講解了目前主流使用的GRUB2,內容涵蓋其歷史背景、模組化設計、多階段啟動機制(Stage 1與Stage 2)、目錄結構、設定檔的產生方式,並比較了GRUB2與舊版GRUB Legacy在硬碟命名、設定檔管理等方面的差異。講師強調GRUB2的設定檔應透過update-grub等指令自動產生,不建議手動編輯。此外,講座也實際操作示範了如何修改設定檔以客製化開機選單(如顯示隱藏選單、設定倒數計時),旨在讓聽眾全面理解電腦開機的複雜性以及GRUB在其中扮演的關鍵角色。 知識點 === Linux開機啟動過程 === * 開機過程概述 ** 講座範圍:從按下電源開關,到可以輸入密碼之前的過程。 ** 目的:讓聽眾瞭解開機啟動過程與細節,以便在電腦無法正常開機時,能根據過程中的資訊判斷問題點。 ** 開機過程是分層啟動與分層轉交的:硬體自檢(BIOS/UEFI) -> 轉交給硬碟的開機磁區(MBR/GPT) -> 啟動載入器(Boot Loader) -> 載入並執行核心(Kernel) -> 核心初始化並轉交給作業系統 -> 作業系統初始化。 * 開機的三個主要階段 ** 第一階段:啟動載入器 (Boot Loader):對應開機選單。如果連開機選單都看不到,問題就出在第一階段。 ** 第二階段:核心 (Kernel) 載入:在開機選單選擇後,會有一段時間螢幕上跳動黑白字元,這就是核心在載入與初始化。 ** 第三階段:作業系統初始化 (System Initialization):當看到彩色的字元開始跳動時,代表進入了作業系統初始化階段。 * 開機失敗的診斷方法 ** 看不到開機選單:問題在第一階段,與啟動載入器有關。 ** 看到開機選單,但選擇後停在黑白字元畫面:問題在第二階段,可能是核心(Kernel)出錯,或核心找不到作業系統無法讀取。 ** 看到彩色字元,但無法進入登入畫面:問題在第三階段,作業系統初始化失敗。畫面最後留下的訊息通常是錯誤提示。 * 各階段的權責轉交 ** BIOS/UEFI:完成硬體檢測後,根據設定的開機順序,尋找硬碟的 MBR 或 GPT,並將主控權轉交給它。 ** 啟動載入器 (Boot Loader):從 MBR 啟動後,顯示開機選單。使用者選擇後,它會找到對應的核心檔案,載入到記憶體中,然後將主控權轉交給核心。 ** 核心 (Kernel):接管主控權後開始啟動,主要任務是識別電腦的所有硬體(CPU、記憶體等)並載入相應的驅動程式。識別完成後,將主控權轉交給作業系統的初始化程序。 ** 作業系統 (System):接管主控權後,開始啟動大量系統服務(如電源管理、安全服務等),螢幕上會顯示一連串的 "OK"。服務啟動完畢後,顯示登入畫面。 === 啟動載入器 (Boot Loader) 概論 === * 啟動載入器的作用與限制 ** MBR 結構:包含Bootloader (446 bytes)、分割區表 (64 bytes) 和結束標記 (55 AA)。 ** 主要任務:位於MBR中的第一階段啟動載入器(Stage 1),其目標是尋找並啟動第二階段的啟動載入器(Stage 2)。 ** 空間限制:由於 MBR 中的 Bootloader 區域只有 446 bytes,空間極小,難以塞入現代開機所需的所有複雜功能。 * 現代啟動載入器所需具備的功能 ** 管理指令、模組化功能、版本更新、擴充功能(支援新檔案系統/解析度)。 ** 能識別不同類型的儲存設備(IDE, SATA, NVMe M.2, USB)、正確定址設備容量、辨識各種檔案系統(NTFS, FAT32, EXT4, XFS)。 * 常見的啟動載入器類型 ** LILO (Linux Loader):早期啟動載入器,已不再使用。 ** Syslinux:輕量級啟動介面,常用於製作可開機隨身碟(如 Rufus)。 ** Loadlin:用於在同一分割區實現 DOS 與 Linux 雙系統啟動。 ** U-Boot (Das U-Boot):常見於嵌入式系統。 ** GRUB (GRand Unified Bootloader):目前PC上最主流的啟動載入器。 ** GRUB Legacy:舊版本,現在只修正安全性問題。 ** GRUB2:目前所有新安裝系統使用的版本,是課程講解的重點。 === GRUB (Grand Unified Bootloader) 詳解 === * 簡介與歷史 ** 角色:在 BIOS 完成啟動程序後,負責載入並啟動作業系統核心。 ** 歷史淵源:最初為啟動 GNU Hurd 核心而開發,後來被 Minix 和 Linux 等作業系統採用,具備多重開機能力。 * GRUB 的介面與特性 ** 開機選單:某些發行版(如 Ubuntu)預設隱藏,可透過修改設定或開機時按住 Shift 鍵使其顯示。 ** 圖形化支援:支援彩色介面、圖形化背景(如PNG)、甚至簡單動畫。 ** 設備識別能力:能識別多種檔案系統、設備(含USB)及其UUID。 * GRUB 2 與 GRUB 1 的比較 ** 硬碟分割區命名: ** GRUB 2: hd0,1 表示第一顆硬碟的第一個分割區,較直觀。 ** GRUB 1: hd0,0 表示第一顆硬碟的第一個分割區,易混淆。 ** 設定檔 (Configuration File): ** GRUB 2: 主要設定檔位於 /boot/grub/grub.cfg,應由程式(如 grub2-mkconfig)自動產生,不建議手動修改。 ** GRUB 1: 設定檔 (menu.lst) 需使用者手動編輯。 ** 功能與指令:GRUB 2 支援腳本功能,但取消了在作業系統內執行 grub-shell 的功能,相關指令需在開機選單的指令模式下執行。 * GRUB 啟動概念與流程 ** 兩種引導模式: ** 直接引導 (Direct Guidance):直接啟動本機作業系統。 ** 鏈接引導 (Chained Guidance):從一個硬碟的選單轉接到另一顆硬碟的選單,適用於多系統環境。 ** 兩階段啟動 (Two-Stage Boot): ** 第一階段 (Stage 1):位於 MBR (446 bytes),唯一功能是尋找並載入 Stage 2。 ** 第二階段 (Stage 2):通常位於 MBR 之後、第一個分割區之前的空間,是 core.img 的實體。它包含GRUB所有核心功能,負責載入模組、讀取設定檔、顯示選單,並最終將主控權交給作業系統核心。 ** 開機失敗情境分析: ** 畫面全黑,僅游標閃爍:Stage 1 找不到 Stage 2。 ** 成功顯示選單,但選擇後無反應:Stage 2 載入成功,但選單設定錯誤,找不到開機目標。 * GRUB 的檔案結構與設定 ** 主要目錄與設定檔: ** /etc/default/grub:控制 GRUB 選單的顯示行為(如逾時、樣式)。 ** /etc/grub.d/:存放產生開機選單內容的腳本,檔名數字決定執行順序。 ** /usr/lib/grub/:存放 GRUB 的所有原始檔案,包含各種模組 .mod 和映像檔 .img。 ** /boot/grub/ (或 /boot/grub2/):存放開機時真正會用到的檔案,是從原始檔目錄複製而來的子集。 ** 核心映像檔與模組: ** core.img:Stage 2 的備份檔,內含讀取檔案系統所需的基本模組。 ** .mod 檔案:讓 GRUB 能夠識別不同檔案系統(如 ext2.mod)、硬體(如 vga.mod)的模組。 ** boot.img:一個混合檔案,前半部是可用於修復 MBR 的 Stage 1 程式碼。 ** 更新 GRUB 設定: ** 修改 /etc/default/grub 或 /etc/grub.d/ 後,必須執行指令重新產生主態檔 /boot/grub/grub.cfg。 ** 常用指令:update-grub (推薦) 或 grub-mkconfig > /boot/grub/grub.cfg。 ** 在開機選單中按 e 可臨時編輯當次開機指令,按 F10 或 Ctrl+X 繼續開機。 [[檔案:2026-0414-02.png|800px]] === 核心版本與硬體相容性 === * 新核心通常支援較新硬體與功能;過舊硬體可能被新版本移除支援(如 486)。 * 發行版未必隨系統更新快速升級核心,需自行關注版本與相容性。 * 建議自行編譯核心,只啟用所需架構與功能,使核心更小更快;內建功能需透過重新編譯才能變更。 === Linux 兩階段啟動與核心映像 === * 由 MBR/GRUB 等 bootloader 啟動核心,核心常駐管理資源與系統呼叫。 * 啟動初期以 initrd/initramfs 解壓於記憶體形成暫時根,載入必要模組並偵測硬體後,切換到磁碟上的正式根檔案系統再進入登入流程。 * vmlinuz/vmlinux 為核心映像;initrd/initramfs 提供最小啟動環境與模組集合。 === 核心選項與模組管理 === * 編譯選項分為:編入核心(速度快)、編成模組(可按需動態載入)、關閉(不提供該功能)。 * 已編譯模組位於 /lib/modules/$(uname -r)/,依子系統分類(檔案系統、網路、音效、arch 等)。 * 工具與用法: ** lsmod:列出已載入模組與相依關係。 ** modinfo <模組名>:顯示位置、授權、簡介、相依等。 ** insmod/rmmod:低階載入/移除,需要完整路徑與自行處理相依。 ** modprobe/modprobe -r:高階載入/移除,自動解析相依,較常用。 * 範例:以 modprobe -r e1000 移除網卡模組網路中斷;再 modprobe e1000 載入網路恢復,驗證模組對功能的影響。 === 開機自動載入與持久化 === * 臨時載入重開機不保留;需將模組名寫入 /etc/modules 或 /etc/modules-load.d/ 以開機自動載入(建議使用 modules-load.d/ 結構化管理)。 * 若重啟後裝置狀態不保,需強化持久化設定(將驅動模組加入自動載入、正確綁定)。 === /boot 目錄與升級參考 === * 必要檔案:vmlinuz(核心映像)、initrd/initramfs(暫時根)。 * 其他重要檔案: ** config-:編譯設定檔,升級至新版本(如 7.0/7.1)時載入舊版 config 為基礎,針對新增選項決策以維持相容與穩定。 ** System.map:核心符號對應表,除錯用途。 * 清理時務必保留目前使用中的核心映像與對應的 initrd/initramfs,以免無法開機。 === 核心編譯與設定複雜度 === * 目標:核心越小越穩定,只留必要內容以提升效能與啟動速度。 * 以既有 config 為基礎做增量調整;核心設定項目上千至上萬,閱讀理解門檻高。 * 編譯通常產生核心映像與相應的 initrd/initramfs,配合完整啟動流程。 === 原始碼位置與取得 === * 常見路徑:/usr/src(核心原始碼)、/lib/modules//(模組與建置資訊)。 * 可透過發行版套件或官方來源取得原始碼;必要時補齊工具鏈與開發環境。 === 驅動安裝與排錯流程(顯示卡/網卡/音效卡等) === * 來源:從官方或廠商取得驅動原始碼或套件;有時提供自動化腳本(如 AutoRun.sh、autoroll)協助編譯安裝。 * 基本步驟:下載→解壓→補齊相依→編譯/安裝→載入模組→驗證裝置→設定持久化→重啟確認。 * 相依套件:安裝失敗常因依賴缺失,依提示補齊後重試。 * 驗證方法:以指令工具確認模組載入;在「硬體管理員」風格介面由問號轉為卡片表示驅動生效;重啟後狀態仍在表示持久化設定正確。 * 環境差異:不同發行版或虛擬化設定可能採用不同驅動;透過 lsmod/modinfo 推測實際使用裝置與驅動。 * 備援策略:若核心版本不支援某新卡,升級核心或以外部模組補強;在無網路環境以 SCP 傳遞驅動包。 [[檔案:2026-0414-03.png|800px]] === Linux啟動流程與程序管理 === * 核心啟動與控制權轉交 ** 當Linux核心(Kernel)完成啟動後,會透過chroot將根目錄從記憶體切換至硬碟,並將控制權轉交給使用者空間的第一個程序/sbin/init。 ** init是作業系統啟動的第一支程式,其程序ID(Process ID, PID)永遠是1。 * 現代化的Init系統:Systemd ** 現代Linux發行版中,init的角色已由Systemd接管,它成為控制整台電腦程序的總管。 ** 使用者下達的指令,實際上是透過Systemd與核心溝通來進行程序管理。 ** ps -ef --forest指令的樹状圖可清晰顯示,PID為1的systemd是系統中所有程序的父程序,證明其對整個系統的主控權。 * Systemd的角色與功能 ** 所有程序的總管理者:所有服務和程式都由Systemd管理。使用者啟動服務時,是向Systemd發出請求,由其決定是否執行。 ** 守護程序(Daemon):Systemd作為一個守護程序,在系統背景中持續運行,負責監控和控制所有程序。 === 初始化系統的演進與Systemd特性 === * 傳統初始化系統的演進 ** SysV init (傳統):採用循序啟動機制,服務依賴性強。單一服務啟動失敗會導致後續依賴的服務長時間等待或失敗,嚴重影響開機效率。 ** Upstart (過渡):透過分析依賴關係,並行啟動無依賴的服務,提升了效率。但仍未根本解決服務失敗導致的阻塞問題。 * Systemd (現代主流) 啟動機制與特性 ** 並行啟動機制:無論服務間是否存在依賴,開機時「一次性」將所有服務同時啟動,極大縮短開機時間。Systemd會週期性地檢查並嘗試重啟失敗的服務。 ** 服務啟動的「假性成功」現象:systemctl start指令執行成功僅代表啟動命令已下達,不保證服務會持續運行。服務可能因設定錯誤而稍後停止,管理者必須主動使用systemctl status檢查服務的真實狀態。 ** 全面的系統管理套件:Systemd不僅是init系統,還整合了日誌(journald)、網路(networkd)、時間(timedated, timesyncd)、登入(logind)及DNS解析(resolved)等多種管理功能,成為一個全面的系統管理平台。 === Systemd服務管理 (systemctl) === * Systemd 單元 (Unit) 概念 ** Systemd將系統資源統一管理為「單元」(Unit),常見類型有.service、.socket、.target等。 ** .service: 指一個持續運行的服務程式,會佔用記憶體資源。 ** .socket: 僅監聽特定連接埠,本身佔用資源極少。當有連線請求時,才喚醒對應的.service來處理,實現按需啟動,節省系統資源。 * 服務管理指令 (systemctl) ** 這是Systemd環境下推薦使用的標準服務管理指令,取代了傳統的service指令。 ** 管理服務運行狀態: ** 啟動服務:systemctl start [服務.service] ** 停止服務:systemctl stop [服務.service] ** 重啟服務:systemctl restart [服務.service] (先停後啟) ** 重載設定:systemctl reload [服務.service] (不中斷服務,僅讓新連線採用新設定,建議優先使用) ** 檢查服務狀態: ** systemctl status [服務.service]:顯示服務是否運行、PID、日誌等詳細資訊。 ** 管理開機啟動設定: ** 設定開機自啟:systemctl enable [服務.service] ** 禁止開機自啟:systemctl disable [服務.service] ** 檢查是否開機自啟:systemctl is-enabled [服務.service] ** 列出系統單元: ** systemctl list-units:列出當前系統中所有已載入的單元及其狀態。 * 主要目錄結構 ** /usr/lib/systemd/system: 存放所有服務單元的「原始設定檔」。 ** /etc/systemd/system: 存放系統級的組態檔和服務啟用的符號連結,管理者通常透過systemctl enable/disable間接操作此目錄。 ** /etc/systemd/: 存放journald.conf, networkd.conf等Systemd子服務的主要組態檔。 === 實例分析與標準工作流程 === * 實例1:DNS解析服務 (systemd-resolved) ** 在Ubuntu系統上,/etc/resolv.conf通常指向本地回環地址(127.0.0.53),DNS查詢由systemd-resolved.service服務處理。 ** 當使用systemctl stop systemd-resolved.service停止該服務後,系統將無法解析域名,證明了服務對系統功能的關鍵作用。 * 實例2:設定SSH服務允許root登入 ** 預設情況下,多數Linux發行版出於安全考量,不允許root直接透過SSH遠端登入。 ** 設定步驟: 1. 編輯SSH服務端設定檔:vi /etc/ssh/sshd_config。 2. 找到PermitRootLogin選項,將其值修改為yes。 3. 存檔後,執行systemctl reload ssh.service使新設定生效。 * IT服務部署的標準工作流程 1. 尋找:上網搜尋所需的功能或服務。 2. 安裝:使用套件管理器(如apt或yum)安裝軟體。 3. 修改:閱讀文件並編輯設定檔以符合需求。 4. 重啟/重載:使用systemctl指令套用設定。 5. 交付:告知客戶服務已設定完成。 [[檔案:2026-0415-01.png|800px]]
返回到「
緯育 2026-0414
」。
* [[檔案:2000-Dragon-30.png|15px]] [[附近走走]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[應用程式]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[郵遞區號]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[作品紀錄]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[攝影相簿]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[網路書籤]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[網路照片]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[星艦日誌]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[Privacy_Policy|隱私政策]]<br>
附近走走
應用程式
郵遞區號
作品紀錄
攝影相簿
網路書籤
網路照片
星艦日誌
隱私政策
首頁
wiki工具
wiki工具
特殊頁面
頁面工具
頁面工具
使用者頁面工具
更多
連結至此的頁面
相關變更
頁面資訊
頁面日誌