GRUB的作業系統命令

除了之前的章節介紹了在GRUB上的命令只能用在GRUB上或是menu entry上以外,GRUB還有許多能在作業系統上呼叫的命令,這章節統一介紹,但是老實說,其實蠻多都不實用的,而且有些甚至沒什麼作用,而且因為我都是用Ubuntu系統,所以我也把其他平台相關的命令去掉了,列出如下。

(options - 『help』和『version』因為都差不多,所以我就省略了,太佔篇幅了)

這邊的命令清單有:

grub-editenv

用法

grub-editenv [OPTION...] FILENAME COMMAND

在環境變數那個章節有介紹過『environment block』,這個工具主要就是編輯這個block,如果你的檔案名稱為『-』的話,那就會使用預設的『/boot/grub/grubenv』,而如果你想要刪除整個『environment block』的話,則直接用『rm /boot/grub/grubenv』。

grub-editenv接受底下的COMMAND:

  • create
    建立一個空的environment block檔案。

  • list
    列出目前的所有變數。

  • set [NAME=VALUE ...]
    設定一個或多個變數。

  • unset [NAME ...]
    刪除一個或多個變數。

grub-editenv接受底下的options:

  • -v, --verbose
    顯示出更多的訊息。

grub-fstest

用法

grub-fstest [OPTION...] IMAGE_PATH COMMANDS

使用在GRUB filesystem driver的debug工具。

grub-fstest接受底下的COMMAND:

  • blocklist FILE
    顯示檔案的blocklist。

  • cat FILE
    顯示檔案的內容。

  • cmp FILE LOCAL
    比對檔案內容。

  • cp FILE LOCAL
    複製檔案。

  • crc FILE
    取得檔案的crc32 checksum。

  • hex FILE
    秀出16進制的檔案內容。

  • ls PATH
    列出路徑下的檔案清單。

  • xnu_uuid DEVICE
    計算裝置的XNU UUID。

grub-fstest接受底下的options:

  • -c, --diskcount=NUM
    指定輸入檔案的數量。

  • -C, --crypto
    掛載上crypto 裝置。

  • -d, --debug=STRING
    設定debug的環境變數。

  • -K, --zfs-key=FILE | prompt
    讀取zfs crypto key。

  • -n, --length=NUM
    從輸出檔案取得N個bytes。

  • -r, --root=DEVICE_NAME
    設定root device。

  • -s, --skip=NUM
    從輸出檔案省略N個 bytes。

  • -u, --uncompress
    解壓縮資料。

  • -v, --verbose
    印出更多的訊息。

grub-install

用法

grub-install [OPTION...] [OPTION] [INSTALL_DEVICE]

grub-install在大部分平台上就等於『grub-mkimage』加『grub-setup』,這個命令會將GRUB安裝在你的裝置上,所以你必須特別註明哪個裝置,像是:

grub-install install_device

裝置名稱『install_device』會是一個作業系統的裝置名稱或是GRUB的裝置名稱。

grub-install接受底下的options:

  • --boot-directory=dir
    將GRUB image安裝到資料夾『/dir/grub』下,這個命令在當你想要將GRUB安裝到個別的partition上或是一個可移除的裝置上非常有用,如果沒有特別指定這個option的話,預設會是『/boot』,所以下面兩個命令其實是相等的:

    grub-install /dev/sda
    grub-install --boot-directory=/boot/ /dev/sda
    

    下面這個例子是將你個別的partition給掛載到『/mnt/boot』上後,然後在將GRUB給安裝到這個partition上:

    grub-install --boot-directory=/mnt/boot /dev/sdb
    
  • --recheck
    重新檢查device map,即使『/boot/grub/device.map』已經存在了,官方建議當你加入/移除某個裝置到你的電腦時,一定要加入這個option。

grub-kbdcomp

用法

grub-kbdcomp -o OUTPUT CKBMAP_ARGUMENTS...

這個指令會處理『keymaps』裡面的一個 X keyboard layout,將其轉成GRUB keymap命令可以讀的格式。

grub-kbdcomp接受底下的options:

  • -o, -- output=FILE
    將檔案給匯出到指定檔案。

grub-menulst2cfg

用法

grub-menulst2cfg [INFILE [OUTFILE]]

這個指令可以將舊版的『menu.lst』轉成『grub.cfg』。

grub-mkconfig

用法

grub-mkconfig [OPTION]

為GRUB產生一個組態檔,用法像是:

grub-mkconfig -o /boot/grub/grub.cfg

grub-mkconfig接受底下的options:

  • -o file, --output=file
    系統預設是將產生的組態檔輸出到standard output,所以要記得用這個option將組態給輸出到特定檔案上。

grub-mkdevicemap

用法

grub-mkdevicemap [OPTION]...

自動產生一個device map。

grub-mkdevicemap接受底下的options:

  • -n, --no-floppy
    不要去選找任何的軟碟(floppy drive)。

  • -s, --probe-second-floppy
    探測第二個軟碟(floppy drive)。

  • -m, --device-map=FILE
    使用指定的檔案當成device map,預設的話是『/boot/grub/device.map』。

  • -v, --verbose
    印出更多的資訊。

grub-mkimage

用法

grub-mkimage [OPTION...] [OPTION]... [MODULES]

這個指令可以用來產生GRUB 映像檔。

grub-mkimage接受底下的options:

  • -c, --config=FILE
    嵌入一個組態檔。

  • --compress = (xz | none | auto)
    選擇你的『core image』用的壓縮演算法。

  • -d, --directory=DIR
    使用這個指定資料夾底下的image和modules,預設的話是『default=/usr/lib/grub/< platform>』。

  • -k, --pubkey=FILE
    嵌入一個public key。

  • -m, --memdisk=FILE
    嵌入一個memdisk image。

  • -n, --note
    為CHAP IEEE1275加入note。

  • -o, --output=FILE
    選擇要輸出檔案的路徑跟檔名,預設是『stdout』。

  • -O, --format=FILE
    指定輸出image的格式,所有可以的格式包含:

i386-coreboot i386-multiboot i386-pc i386-pc-pxe
i386-pc-eltorito i386-efi i386-ieee1275 i386-qemu
x86_64-efi i386-xen x86_64-xen mipsel-yeeloong-flash
mipsel-fuloong2f-flash mipsel-loongson-elf powerpc-ieee1275 sparc64-ieee1275-raw
sparc64-ieee1275-cdcore sparc64-ieee1275-aout ia64-efi mips-arc
mipsel-arc mipsel-qemu_mips-elf mips-qemu_mips-flash mipsel-qemu_mips-flash
mips-qemu_mips-elf arm-uboot arm-efi arm64-efi
  • -p, --prefix=DIR
    設定prefix的資料夾,預設是『/boot/grub』。
  • -v, --verbose
    印出更多資訊。

grub-mklayout

用法

grub-mklayout [OPTION...] [OPTIONS]

這個指令會處理Linux裡的一個『keymaps』 keyboard layout,將其轉成GRUB keymap命令可以讀的格式。

grub-mklayout接受底下的options:

  • -i, --input=FILE
    設定輸入的檔案名稱,預設是STDIN。

  • -o, --output=FILE
    設定輸出的檔案名稱,預設會是STDOUT。

  • -v, --verbose
    印出更多資訊。

grub-mkrelpath

用法

grub-mkrelpath [OPTION...] PATH

將系統的裝置路徑轉換成GRUB的。

grub-mkstandalone

用法

grub-mkstandalone [OPTION...] [OPTION] SOURCE...

這個指令可以用來產生memdisk-based的GRUB 映像檔。

grub-mkstandalone接受底下的options:

  • --compress[=no,xz,gz,lzo]
    可以使用這些格式來壓縮你的GRUB檔案。

  • -d, --directory=DIR
    使用這個指定資料夾底下的image和modules,預設的話是『default=/usr/lib/grub/< platform>』。

  • --fonts=FONTS
    安裝字體,預設的話是『unicode』。

  • --install-modules=MODULES
    只安裝指定模組和其相依套件,預設是全部安裝。

  • -k, --pubkey=FILE
    嵌入一個public key。

  • --locale-directory=
    使用指定資料夾底下的語言檔,預設路徑是『/usr/share/locale』。

  • --locales=LOCALES
    只安裝相關的語言檔,預設是全部安裝。

  • --modules=MODULES
    預先讀取指定的modules。

  • --themes=THEMES
    安裝相關的themes,預設是『starfield』。

  • -v, --verbose
    印出更多資訊。

  • --core-compress=xz|none|auto
    選擇壓縮『core image』的演算法。

  • -o, --output=FILE
    選擇要輸出檔案的路徑跟檔名。

  • -O, --format=FILE
    指定輸出image的格式|所有可以的格式包含:

i386-coreboot i386-multiboot i386-pc i386-pc-pxe
i386-pc-eltorito i386-efi i386-ieee1275 i386-qemu
x86_64-efi i386-xen x86_64-xen mipsel-yeeloong-flash
mipsel-fuloong2f-flash mipsel-loongson-elf powerpc-ieee1275 sparc64-ieee1275-raw
sparc64-ieee1275-cdcore sparc64-ieee1275-aout ia64-efi mips-arc
mipsel-arc mipsel-qemu_mips-elf mips-qemu_mips-flash mipsel-qemu_mips-flash
mips-qemu_mips-elf arm-uboot arm-efi arm64-efi

grub-script-check

用法

grub-script-check [OPTION...] [PATH]

這個指令會檢查你的『grub.cfg』的語法(但是說真的,我亂改也試不出來=.=)。

grub-mkpasswd-pbkdf2

用法

grub-mkpasswd-pbkdf2 [OPTION...] [OPTIONS]

為GRUB產生加密過的密碼。

grub-mkpasswd-pbkdf2接受底下的options:

  • -c number
  • --iteration-count=number
    設定底下演算法的疊代次數,當然疊代越多次越安全,預設是1000次。

  • -l number

  • --buflen=number
    產生hash的長度,預設是64。

  • -s number

  • --salt=number
    雜訊『salt』的長度,預設是64。

grub-mkrescue

用法

grub-mkrescue [OPTION...] [OPTION] SOURCE...

產生一個可開機的GRUB救援映像檔,用法如下:

grub-mkrescue -o grub.iso

這個命令裡面會使用另一個命令『mkisofs』來產生image,只要你的options並不是『grub-mkrescue』的options,則這個指令將會直接傳給『mkisofs』模式裡的『xorriso』當成參數,簡單來說就是只要在『--』之後的參數不屬於『grub-mkrescue』的話就會直接變成『mkisofs』的參數。

如果要在你的image裡面加一些檔案的話,就要建立資料夾,並且指定它,用法如下,它會將檔案『my_file1』給包到image裡面:

mkdir -p disk/boot/grub
cp my_file1 disk/boot/grub/
grub-mkrescue -o grub.iso disk

grub-mkrescue接受底下的options:

  • -o file
  • --output=file
    這個option是必要的,會將輸出存到檔案裡。

  • --modules=modules
    決定哪些modules你要預先包到這個image裡,多個modules的話要使用空白鍵隔開,如果在script裡面用的話要記得用『" "』。

  • --rom-directory=dir
    如果是要為QEMU還是Coreboot產生映像檔,則這個選項會將qemu.img或是 coreboot.elf給複製到這個映像檔裡。

  • --xorriso=file
    如果你有自己的xorriso程式的話,可以用這個option指定,不然就會用內建的程式。

  • --grub-mkimage=file
    如果你有自己的grub-mkimage程式的話,可以用這個option指定,不然就會用內建的程式。

grub-probe

用法

grub-probe [OPTION...] [OPTION]... [PATH|DEVICE]

這個程式會萃取你指定裝置/路徑的資訊,用法如下:

grub-probe --target=fs /boot/grub
grub-probe --target=drive --device /dev/sda1

grub-probe必須指定裝置或是路徑,並且接受底下的options:

  • -d
  • --device
    如果有這個option的話,那就代表你想要知道的資訊是一個系統裝置檔,像是『/dev/sda1』,換而言之,如果沒有這個option的話,代表就是filesystem的路徑,像是『/boot/grub』,則grub-probe就會印出包含這個filesystem的裝置資訊。

  • -m file

  • --device-map=file
    通常預設的device map會在『/boot/grub/device.map』裡,但是如果指定這個option的話就會用指定的檔案當成你的device map。

  • -t target

  • --target=target
    特別指定要印出哪些更細的分類資訊,可取得的分類如下:

    • ‘fs’
      GRUB filesystem module.

    • ‘fs_uuid’
      Filesystem Universally Unique Identifier (UUID).

    • ‘fs_label’
      Filesystem label.

    • ‘drive’
      GRUB的裝置名稱.

    • ‘device’
      系統的裝置名稱。

    • ‘partmap’
      GRUB partition map module.

    • ‘abstraction’
      GRUB的抽象模組(abstraction module) (e.g. ‘lvm’)。

    • ‘cryptodisk_uuid’
      加密過的裝置UUID。

    • ‘msdos_parttype’
      MBR partition type code (會是兩個16進制的編碼).

    • ‘hints_string’
      可以傳進命令『search』的平臺search hints字串。

    • ‘bios_hints’
      PC BIOS平臺的Search hints。

    • ‘ieee1275_hints’
      IEEE1275平臺的Search hints。

    • ‘baremetal_hints’
      這個search hints主要是disk是直接定址而不是透過firmware。

    • ‘efi_hints’
      EFI平臺的Search hints。

    • ‘arc_hints’
      ARC平臺的Search hints。

    • ‘compatibility_hint’
      對於這個裝置給一個預測的GRUB裝置名稱。

    • ‘disk’
      整個硬碟的系統裝置名稱

  • -v

  • --verbose
    印出更多的訊息。

grub-reboot

用法

grub-reboot [OPTION] MENU_ENTRY

設定GRUB的預設啟動entry,在下次啟動才有效。

grub-reboot接受底下的options:

  • --boot-directory=DIR
    使用你自己的GRUB映像檔,而不是系統預設的『/boot/grub』,所以用這個option的話,路徑應該會像『DIR/grub』才對。

這個行為其實可以不用這個命令,只要修改相關組態在用命令『update-grub』也可以。

grub-set-default

用法

grub-set-default [OPTION] MENU_ENTRY

設定GRUB下一次開機預設的啟動entry,這個命令跟『grub-reboot』主要的差別是這個命令必須要將『/etc/default/grub』裡面的『GRUB_DEFAULT』設定成『GRUB_DEFAULT=saved』,只要這個設定沒改的話,接下來每次選定不同的entry開機都會被紀錄起來,而命令『grub-reboot』則不會被紀錄起來。

底下兩個例子:

sudo grub-set-default 3
sudo grub-set-default "Ubuntu, Linux 2.6.32-15-generic"

grub-reboot接受底下的options:

  • --boot-directory=DIR
    使用你自己的GRUB映像檔,而不是系統預設的『/boot/grub』,所以用這個option的話,路徑應該會像『DIR/grub』才對。

update-grub

update-grub2

用法

update-grub
update-grub2

這兩個指令其實是一樣的,都是等於『grub-mkconfig -o /boot/grub/grub.cfg』這個命令,就是產生GRUB2的組態檔。

results matching ""

    No results matching ""