How-To:Linux 安裝 Bochs

操作環境:

  • Fedora 27
  • Bochs v2.6.9

 

Bochs 是一款歷史悠久的 x86 PC 模擬器,可以用來安裝及執行 x86 架構的作業系統。不過在如今虛擬化技術盛行的情況下,這類的模擬器或許沒有太多可應用的場合。而之所以撰寫本文,主要是想將幾年前的研究筆記轉化為 How-To 的形式留存。

 

本文選用了 Windows 98 第二版(Second Edition,SE)作為安裝範例,這是因為 DR 當年初次學習安裝作業系統時,就是從 Windows 98 及 Windows Me(Millennium Edition)開始的。所以本文的流程某方面來說也有歷史保存上的意義,記錄了 90 年代主流 PC 作業系統的安裝方式。

 

1. 安裝 Bochs

Fedora 上安裝 Bochs 相當簡單,只要透過 dnf 安裝即可:

  • sudo dnf install bochs

 

2. 建立專案目錄

這並非必要的步驟,只是 DR 偏好將 Bochs 所用的映像檔、設定檔皆放置在特定的單一目錄裡,所以會先在使用者家目錄下新增一個目錄:

  • mkdir bochs_lab
  • cd bochs_lab

 

而本文的後續步驟都會在 bochs_lab 目錄下進行,所有檔案也都是放置在該目錄下。

 

3. 建立磁碟映像檔

在啟動 Bochs 模擬器、進行作業系統安裝之前,需要先執行 Bochs 附帶的 bximage 工具,建立一個映像檔來充作模擬器的硬碟:

  • bximage

 

執行 bximage 後,會出現一個文字選單,這時請選擇「1」,也就是「Create new floppy or hard disk image」,接著便會依序出現以下問句:

  • Do you want to create a floppy disk image or a hard disk image?
    • 建立軟碟映像檔或硬碟映像檔,預設值為「hd」,也就是硬碟,按下 Enter 確認即可。
  • What kind of image should I create?
    • 選擇映像檔類型,同樣可按預設值,選擇「flat」。
  • Enter the hard disk size in megabytes, between 10 and 8257535
    • 填入硬碟容量,由於安裝 Windows 98 並不需要很大的硬碟容量,所以 DR 是填入 2000,也就是 2GB。
  • What should be the name of the image?
    • 映像檔名稱,直接按預設值(c.img)確認即可。

 

完成上述程序後,便會在當前目錄下產生一個 2GB 的 c.img,用於作為模擬器的硬碟。

 

4. 建立 Bochs 設定檔

建立設定檔的方式是直接執行 Bochs:

  • bochs

 

這時會出現 Bochs 的文字選單,選擇 4(Save options to...),便會要求輸入欲儲存的檔名,這時請填入「bochsrc」,因為這是 Bochs 預設載入的設定檔名稱。完成後,當前目錄下便會產生一個名為 bochsrc 的檔案,稍後本文所有的設定變更,都會直接透過編輯此設定檔來完成。

 

5. 修改 Bochs 設定

編輯前一步驟所建立的 bochsrc,首先如果想要增加模擬器中的可用記憶體容量,可以修改以下設定:

memory: host=32, guest=32

 

舉例來說,如果想設為 256MB,就修改為:

memory: host=256, guest=256

 

接著,為了將先前建立的硬碟(c.img)掛載到 IDE/ATA 介面 0 的 Master 上,找到以下設定:

ata0-master: type=none

 

變更為:

ata0-master: type=disk, path="c.img", mode=flat

 

完成硬碟設定後,接下來自然就是光碟機的設定了。為了將 Windows 98 的光碟映像檔掛載到 IDE/ATA 介面 1 的 Master 上,找到以下設定:

ata1-master: type=none

 

如果映像檔的檔名為 win98se.iso,並且放置於當前目錄下,便修改為以下內容:

ata1-master: type=cdrom, path=win98se.iso, status=inserted

 

最後,為了解決模擬器中時鐘過快的問題,找到以下設定:

clock: sync=none, time0=local, rtc_sync=0

 

變更為:

clock: sync=realtime, time0=local, rtc_sync=1

 

完成上述變更後,儲存檔案即會生效。

 

6. 開機裝置設定

在 bochsrc 設定檔裡,有以下設定:

boot: floppy

 

表示模擬器預設會以軟碟機開機,如果變更為 cdrom 即表示使用光碟機開機、disk 則表示使用硬碟開機。由於 Windows 98 的安裝光碟分成零售版與 OEM 版,其中前者並非可開機光碟,必須搭配軟碟開機片才能執行光碟中的安裝程式。所以如果手上的媒體是屬於前者,除了 boot 設定需要保持為 floppy 外,還需要額外加上一行設定,將開機片掛載至軟碟機中:

floppya: 1_44=boot.img, status=inserted

 

其中的 boot.img 即為開機片的映像檔。至於若安裝光碟本身就能夠開機,則無須掛載開機片,並且需要將 boot 設定變更為 cdrom。

 

7. 啟動 Bochs 模擬器

執行以下指令便會自動載入當前目錄下的 bochsrc 設定檔,並啟動模擬器(附圖 1):

  • bochs -q

 

或者,也可以用更明確的方式來載入特定的設定檔:

  • bochs -q -f bochsrc

 

8. 安裝 Windows 98

若是使用安裝光碟開機,將會進入啟動選單(附圖 2),這裡選擇第二個選項(Boot from CD-ROM),接著便會進入附圖 3 所示的選單(若是使用開機片開機,則會直接來到此畫面),然後選擇第一個選項(Start Windows 98 Setup from CD-ROM.)。

 

接下來,在附圖 4 的畫面中按下 Enter,然後在附圖 5 中選擇「Configure unallocated disk space (recommended).」,並在附圖 6 中選擇「Yes, enable large disk support」。這時安裝程式將會在硬碟中建立分割區,並要求重新開機(附圖 7),此時按下 Enter 後便會重新啟動。

 

重新啟動後,同樣選擇先前的「Start Windows 98 Setup from CD-ROM.」,安裝程式將會自動對先前建立的分割區進行格式化(附圖 8),接著再進入附圖 9 的畫面,按下 Enter 後便會執行磁碟檢查工具(附圖 10)。完成磁碟檢查後選擇「Exit」,就會進入最終的圖形化安裝介面(附圖 11),到此就可以直覺地完成作業系統的安裝(附圖 12)。

 

在 Bochs 裡,滑鼠擷取預設是透過 Ctrl + 滑鼠中鍵來進行切換。而在完成作業系統安裝後,就可以將 boot 設定變更為 disk,進入硬碟中所安裝的作業系統(附圖 13)。

 

9. 替代流程:利用 FreeDOS 來建立分割區及格式化

從前一步驟的描述中可以看到,Windows 98 的安裝程式會先建立分割區及格式化,然後再進行檔案安裝程序。然而當年一種常見的實作,其實是先在 DOS 下使用 fdisk 及 format 指令進行分割區的建立與格式化,因此以下 DR 將會透過 FreeDOS 來重現這道流程。

 

首先前往 FreeDOS 的下載頁面,下載軟碟開機片(Boot floppy)的映像檔,然後掛載到 Bochs 的軟碟機中:

floppya: 1_44=freedos.img, status=inserted

 

在確認 boot 設定為 floppy 後,啟動模擬器後便會一路進入到附圖 14 的畫面,選擇 English,並在附圖 15 的畫面中選擇「No - Return to DOS」,如此一來就會進入 FreeDOS 的文字操作介面(附圖 16)。

 

在該介面中執行以下指令:

  • fdisk

 

FDISK 一開始將會詢問是否啟用大容量磁碟支援(附圖 17),這裡請選擇「Y」。接著便會進入 FDISK 主選單(附圖 18),請選擇「1」來建立分割區,然後再次選擇「1」來建立主要分割區(附圖 19)。此時,程式會詢問是否使用最大可用空間(附圖 20),這裡選擇「N」,並指定分割區容量(附圖 21)。舉例來說,DR 是填入 1000,也就是 1GB。

 

按下 Enter 後,便會建立一個 1GB 大小的 C 磁碟區,佔了硬碟總容量的 50%(附圖 22)。接著,按下 Esc 返回主選單,並延續與先前相同的流程來建立第二個主要分割區。其中的差別僅在於當詢問是否使用最大可用空間時,這次是選擇「Y」,直接利用剩餘未分割之空間作為 D 磁碟區的容量。最終的分割情形就如附圖 23 所示,這時接連按下三次 Esc 後就會結束 FDISK 程式。

 

完成分割區的建立後,需要執行重開機指令:

  • reboot

 

重開機後,再次依照先前的程序進入到 FreeDOS 介面,並輸入以下指令進行分割區的格式化:

  • format c:
  • format d:

 

程式將會出現資料清除警告,這時請輸入「YES」並按下 Enter。然後則會要求輸入磁碟區的標籤名稱,直接留空並按下 Enter 即可(附圖 24)。完成格式化後,輸入以下指令便能夠進行關機動作:

  • fdapm /poweroff

 

完成前述操作後,再次執行 Windows 98 安裝程式,將會自動跳過分割區的建立及格式化,直接進行磁碟檢查及後續的安裝步驟。

 

10. 其它參考資料