在運用DOS計劃機的進程中,我很觀賞的一點是,啟發進程對立簡單領會。在DOS中沒有太多的變化組件。此刻天,我想和大師瓜分一下電腦是怎樣啟發和啟用像FreeDOS如許的大略操縱體例的大概。
初始啟發當你翻開計劃機的電源時,體例會舉行少許自我查看,如考證外存和其余組件。這被稱為開機自檢PowerOnSelfTest(POST)。POST之后,計劃機運用一個硬源代碼訓令,報告它在何處找到加載操縱體例的訓令。這即是“啟發加載步調bootloader”,常常它將試圖找到硬盤上的主啟發記載MasterBootRecord(MBR)。而后,MBR加載主操縱體例,在這邊即是FreeDOS。
這個定位一個消息再不計劃機不妨加載操縱體例的下一個局部的進程被稱為“啟發bootstrapping”,來自于“經過你本人的全力振奮起來pickingyourselfupbyyourbootstraps”的陳舊講法。恰是從這個用法中,咱們沿用了“啟發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體例時看到“BadormissingCommandInterpreter”的消息,這表示著SHELL=或SHELLHIGH=指向了一個在你體例中不生存的shell步調。
你不妨經過察看SHELL=或SHELLHIGH=行來調節和測試這個題目。即使做不到這一點,請保證你在FreeDOS體例的根目次下有一個名為COMMAND.COM的步調。它即是shell,我接下來會講到它。
shell在DOS體例中,“shell”一詞常常是指一個吩咐行證明器:一個交互式步調,它從用戶何處讀取訓令,而后實行它們。在這邊,FreeDOS的shell與Linux的Bashshell一致。
只有你用SHELL=或SHELLHIGH=訴求內核加載一個各別的shell,要不DOS上的規范吩咐行shell被稱為COMMAND.COM。當COMMAND.COM啟用時,它也探求一個文獻來擺設本人。默許情景下,COMMAND.COM會在根目次下探求一個名為AUTOEXEC.BAT的文獻。AUTOEXEC.BAT是一個“批處置文獻”,它包括一組啟用時運轉的訓令,大概一致于Linux上Bash啟用時讀取的~/.bashrc“資源文獻”。
你不妨在FDCONFIG.SYS文獻頂用SHELL=或SHELLHIGH=變換shell以及shell的啟用文獻。FreeDOS1.3RC4安置步調將體例樹立為讀取FDAUTO.BAT而不是AUTOEXEC.BAT。這與內核讀取另一個擺設文獻的因為溝通;你不妨在硬盤上用另一個DOS雙啟用FreeDOS。FreeDOS將運用FDAUTO.BAT而MS-DOS將運用AUTOEXEC.BAT。
即使沒有像AUTOEXEC.BAT如許的啟用文獻,shell將大略地提醒用戶輸出日子和功夫。
即是那些了。當FreeDOS加載了內核,而內核也加載了shell,FreeDOS就籌備好讓用戶輸出吩咐了。