linux grub 使用


linux kernel 格式之 vmlinux、zImage、bzImage、vmlinuz、uImage

vmlinux     是編譯出來的未經壓縮的原始內核文件,是linux接受的可執行文件格式(ELF、COFF),vm 是 Virtual Memor

                     y 的縮寫,與較老的DOS系統只有640K內存限制相比,linux 支持虛擬內存,linux可以使用硬盤空間作為虛擬

                     內存,因而得名 vm。

zImage      是由gzip壓縮vmlinux文件,並加上一段解壓啟動代碼得到的壓縮文件,只能從0X00地址運行。

bzImage    表示 big zImage,bzImage 解壓縮內核到高端內存(1M以上),zImage 解壓縮內核到低端內存(第一個640K

                     如果內核較小,可以采用 zImage 或 bzImage,內核較大就應該采用 bzImage

vmlinuz      是 zImage、bzImage的統稱,編譯內核時通過以下兩種方式生成

                    1. 先make zImage,再 cp /usr/src/linux-2.4/arch/i386/linux/boot/zImage   /boot/vmlinuz

                    2. 先make bzImage,再 cp /usr/src/linux-2.4/arch/i386/linux/boot/bzImage   /boot/vmlinuz

uImage      是U-boot使用的映像文件,使用工具 mkimage 在 zImage 文件頭部補加長度為0X40的頭信息,該頭部信息說

                    了該映像文件的類型、加載位置、生成時間、大小等信息,即從uImage的0x40位置開始的內容與zImage

                    、bzImage是一樣的

 GRUB       是一款多操作系統啟動管理器,是 GRand Unified Bootloader 縮寫,它可以從 FAT、minix、FFS、ext2、

                    ReiserFS分區讀取內核,即使grub菜單配置不正確,仍可以通過其控制台設置內核參數來引導系統

 

GRUB 2 筆記

grub 2 的配置文件主要包括 /etc/default/grub 和 /etc/grub.d/ 下的各文件,同樣用 fd 表示軟盤、hd 表示硬盤(包括 ID

E、SCSI 硬盤),設備編號從0開始、分區編號從1開始,主分區從 1-4,邏輯分區從 5 開始,例如

(fd0)                               表示整個軟盤

(hd0, 1)                          表示BIOS中第1個硬盤的第1個分區

(hd0, 5)/boot/vmlinuz     表示BIOS中第1個硬盤的第1個邏輯分區下 boot 目錄下的  vmlinuz 文件

 

 GRUB 2 命令介紹

ls

        ls   (hd0, 5)/              顯示該分區的所有文件

        ls   -l                            列出當前所有設備,如(hd0)、(hd0, 1)、(hd0, 5)、(hd1)、(hd1, 1)、(hd1, 2) 等

        ls   /                             列出當前設為 root 的分區下的文件

        ls   (hd1, 1)             列出(hd1, 1)分區下的文件

root

        指定用於啟動系統的分區,即根目錄。set root 就是設置 root 這個環境變量的值

        root    (hd0, x)          掛載第1個硬盤的第 x 個分區,可以通過 ls 查看這個分區的內容

loopback

        建立回放設備,舉例如下,使用 lo0 設備訪問 aa.iso 里內容,從aa.iso里的軟盤映像中啟動

        loopback   lo0   (hd0, 3)/aa.iso      利用 grub 回放設備掛載 iso,這樣就不用提取 casper 文件夾

        linux   (lo0)/memdisk

        initrd   (lo0)/aa.img

        loopback   -d   lo0                              刪除回放設備 lo0

search

        search   -f   /ntldr                 列出根目錄里包含 ntldr 文件的分區,返回分區號

        search   -l   LINUX               列出 label 是 LINUX 的分區

        search   --set   -f   /ntldr     搜索根目錄包含 ntldr 文件的分區並設為 root,如果存在多個分區包含 ntldr 文件,

                                                        則 set 不起作用

kernel

        用來加載 linux 內核,舉例如下

        kernel   /boot/bzImage   ro   ramdisk_size=65536   root=/dev/ram0

        "/boot/bzImage"       指定加載哪個內核

        "root="                        指定了哪個分區作為根設備,"/dev/ram0" 是從 linux 角度講的,內核要從根設備上

                                              讀取一些文件

linux

        該命令是用來取代 grub 的 kernel 命令的,加載 linux 內核,舉例如下

        linux    /boot/vmlinuz-XXX   root=UUID=xxx  quiet  splash  rw  init=/bin/bash

        "/boot/vmlinuz-XXX"    指定加載哪個內核

        "root=UUID=xxx"            指定了哪個分區作為根設備,也可以使用 "root=/dev/ram0"

        "quiet"                                內核啟動時,簡化提示信息

        "splash"                              加載時啟動進度條提示,代替 init 的字符提示

        "rw   init=/bin/bash"       讓 init 進程執行 /bin/bash,無密碼進入 root 單用戶模式,執行一些救援工作

                                                      rw 表示讀寫權限,忘記添加該參數的話,root 用戶也不能執行寫操作

initrd

        initial ram disk 縮寫,先加載虛擬根文件系統,再加載硬盤上的根文件系統,舉例如下

        initrd   /boot/initrd.img-XXX        使用名稱為"/boot/initrd.img-XXX"的文件在內存中構造虛擬的根文件系統,以便

                                                                      內核檢測完硬件信息后載入必需的模塊等等

        如果 grub 配置中丟失了該動作,屏幕會出現 kernel panic 提示,因為 initrd.img-XXX 文件在開機時給 kernel 提

        供必需的設備驅動(modules)文件,否則 kernel 不能把硬件掛載到根文件系統

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM