
在使用 DOS 計算機的過程中,我很欣賞的一點是,引導過程相對容易理解。在 DOS 中沒有太多的變動組件。而今天,我想和大家分享一下電腦是如何引導和啟動像 FreeDOS 這樣的簡單操作系統的概況。
初始引導
當你打開計算機的電源時,系統會進行一些自我檢查,如驗證內存和其他組件。這被稱為開機自檢Power On Self Test(POST)。POST 之後,計算機使用一個硬編碼指令,告訴它在哪裡找到加載操作系統的指令。這就是「引導加載程序boot loader」,通常它將試圖找到硬盤上的主引導記錄Master Boot Record(MBR)。然後,MBR 加載主操作系統,在這裡就是 FreeDOS。
這個定位一個信息以便計算機能夠加載操作系統的下一個部分的過程被稱為「引導bootstrapping」,來自於「通過你自己的努力振作起來picking yourself up by your bootstraps」的古老說法。正是從這個用法中,我們採用了「引導boot」一詞來表示啟動你的計算機。
內核
當計算機加載 FreeDOS 內核時,內核所做的第一件事就是識別用戶所表示要使用的任何參數。它被保存在一個叫做 FDCONFIG.SYS的文件中,與內核保存在同一個根目錄下。如果FDCONFIG.SYS不存在,那麼 FreeDOS 的內核就會尋找一個叫做CONFIG.SYS的替代文件。
如果你在 20 世紀 80 年代或 90 年代使用過 DOS,你可能對 CONFIG.SYS文件很熟悉。從 1999 年起,FreeDOS 首先尋找FDCONFIG.SYS,以防你的 DOS 系統與其他 DOS(如 MS-DOS)做了雙啟動。請注意,MS-DOS 只使用CONFIG.SYS文件。因此,如果你用同一個硬盤同時啟動 FreeDOS 和 MS-DOS,MS-DOS 使用CONFIG.SYS來配置自己,而 FreeDOS 則使用FDCONFIG.SYS。這樣一來,雙方都可以使用自己的配置。
FDCONFIG.SYS可以包含一些配置設置,其中之一是SHELL=或SHELLHIGH=。任何一個都會指示內核加載這個程序作為用戶的交互式 shell。
如果 FDCONFIG.SYS和CONFIG.SYS都不存在,那麼內核就會假定幾個默認值,包括在哪裡找到 shell。如果你在啟動 FreeDOS 系統時看到 「Bad or missing Command Interpreter」 的信息,這意味着SHELL=或SHELLHIGH=指向了一個在你系統中不存在的 shell 程序。

你可以通過查看 SHELL=或SHELLHIGH=行來調試這個問題。如果做不到這一點,請確保你在 FreeDOS 系統的根目錄下有一個名為COMMAND.COM的程序。它就是shell,我接下來會講到它。
shell
在 DOS 系統中,「shell」 一詞通常是指一個命令行解釋器:一個交互式程序,它從用戶那裡讀取指令,然後執行它們。在這裡,FreeDOS 的 shell 與 Linux 的 Bash shell 相似。
除非你用 SHELL=或SHELLHIGH=要求內核加載一個不同的 shell,否則 DOS 上的標準命令行 shell 被稱為COMMAND.COM。當COMMAND.COM啟動時,它也尋找一個文件來配置自己。默認情況下,COMMAND.COM會在根目錄下尋找一個名為AUTOEXEC.BAT的文件。AUTOEXEC.BAT是一個「批處理文件」,它包含一組啟動時運行的指令,大致類似於 Linux 上 Bash 啟動時讀取的~/.bashrc「資源文件」。
你可以在 FDCONFIG.SYS文件中用SHELL=或SHELLHIGH=改變 shell 以及 shell 的啟動文件。FreeDOS 1.3 RC4 安裝程序將系統設置為讀取FDAUTO.BAT而不是AUTOEXEC.BAT。這與內核讀取另一個配置文件的原因相同;你可以在硬盤上用另一個 DOS 雙啟動 FreeDOS。FreeDOS 將使用FDAUTO.BAT而 MS-DOS 將使用AUTOEXEC.BAT。
如果沒有像 AUTOEXEC.BAT這樣的啟動文件,shell 將簡單地提示用戶輸入日期和時間。

就是這些了。當 FreeDOS 加載了內核,而內核也加載了 shell,FreeDOS 就準備好讓用戶輸入命令了。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/203723.html
微信掃一掃
支付寶掃一掃