5.3. Loader:開機步驟之三

loader 是三個步驟的最後一個,loader 必須放在檔案系統裡, 通常是在 /boot/loader

Note: 雖然 /boot/boot0/boot/boot1、和 /boot/boot2 的確存在,但是他們並不是在 MBR、開機磁軌和 disklabel 中的正本。

Loader 提供了一個容易的設定方法,並使用簡易的內建命令, loader 的背後是由一個強大的命令解譯程式 (使用較複雜的命令集) 組成的。

5.3.1. Loader 的執行流程

在初始化的過程中,loader 會偵測終端機和磁碟機, 並開始設置所要開啟的磁碟,設定變數對應, 接著命令解譯程式啟動,開始解譯 loader 所傳遞的命令。

loader will then read /boot/loader.rc, which by default reads in /boot/defaults/loader.conf which sets reasonable defaults for variables and reads /boot/loader.conf for local changes to those variables. loader.rc then acts on these variables, loading whichever modules and kernel are selected.

最後,loader 預設花 10 秒等待任何按鍵的輸入,如果沒有, 就開始載入 kernel。如果有, 就啟動一個提示符號讓使用者輸入那些易懂的命令,藉此可以調整變數, 載入/卸載 module,最後決定要開機還是重開機。

較深入的技術探討可以在 loader(8) 找到。

5.3.2. Loader 的內建命令

這些命令集包括了:

autoboot seconds

如果在所給的秒數之間沒被按鍵中斷的話就接著載入 kernel, 這將會由所給的秒數開始倒數,預設的秒數為 10 秒。

boot [-options] [kernelname]

直接配合所給的參數載入核心。

boot-conf

在要開機時,使用自動的變數配置模組, 這只在你先用 unload 時才有意義,並改變一些變數, 通常是 kernel

help [topic]

顯示來自 /boot/loader.help 的求助訊息, 如果所給的主題 (topic) 是 index, 那就顯示所有的主題列表。

include filename ...

執行所給的檔案,這檔案將被讀入並一行一行地被執行, 一但有錯誤發生就直接停止這個 inlucde 命令。

load [-t type] filename

載入 kernel,kernel 模組或所先指定檔案類型,再接著檔名, 任何接在檔案之後的參數都將會傳給此檔來執行。

ls [-l] [path]

列出在路徑中的檔案,如果沒有指定路徑將顯示根目錄的檔案列表 如果有附加 -l 參數,那麼將一起顯示檔案容量。

lsdev [-v]

列出所有可以載入 module 的裝置,如果有指定 -v 參數, 那麼更詳細的資訊會一起列出。

lsmod [-v]

顯示已被載入的 module,如果有指定 -v 參數,那麼更詳細的資訊會一起列出。

more filename

顯示所指定的檔案內容,並在每 LINES (環境變數) 暫停。

reboot

直接重開機。

set variable, set variable=value

設定 loader 的環境變數。

unload

卸載所有被載入的 module。

5.3.3. Loader 的使用範例

底下是一些實際的 loader 使用範例。