Linux中國

FreeDOS 如何啟動

在使用 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.SYSCONFIG.SYS 都不存在,那麼內核就會假定幾個默認值,包括在哪裡找到 shell。如果你在啟動 FreeDOS 系統時看到 「Bad or missing Command Interpreter」 的信息,這意味著 SHELL=SHELLHIGH= 指向了一個在你系統中不存在的 shell 程序。

![Bad or missing Command Interpreter](/data/attachment/album/202106/20/140821ivavbphy3r3wy7n4.png "Bad or missing Command Interpreter")

你可以通過查看 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 將簡單地提示用戶輸入日期和時間。

![Without AUTOEXEC.BAT, the shell will prompt for date and time](/data/attachment/album/202106/20/140821vgv8ooo77k5mbio3.png "Without AUTOEXEC.BAT, the shell will prompt for date and time")

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

![FreeDOS is ready for you to enter your first command](/data/attachment/album/202106/20/140821s6bvhy3ykzyskhbv.png "FreeDOS is ready for you to enter your first command")

via: https://opensource.com/article/21/6/freedos-boots

作者:Jim Hall 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國