作業系統實驗 & bochs 環境設定

2023-04-21 15:01:35

wsl2 - Ubuntu 22.04 + VSCode + bochs + xfce4 + VcXsrv

筆者環境 wsl2 - Ubuntu 22.04

0. 安裝WSL2 & VSCode & 終端

網上教學千千萬,請自行查詢

WSL2 WSL2安裝教學_pengege666的部落格-CSDN部落格
​ 切換清華源:ubuntu | 映象站使用幫助 | 清華大學開源軟體映象站 | Tsinghua Open Source Mirror
​ 備份:sudo cp /etc/apt/sources.list /etc/apt/sources.bak
​ 修改:sudo vim /etc/apt/sources.list
​ 更新:sudo apt update

VSCodeVisual Studio Code - Code Editing. Redefined

​ 安裝外掛:WSL

​ 然後點選左下綠色按鈕,按提示連線WSL

終端:Microsoft Store就有

1. 安裝軟體包

以下命令以行為單位貼上到終端執行

sudo apt update
sudo apt upgrade

sudo apt-get install -y neofetch
sudo apt-get install -y gcc
sudo apt-get install -y vim
sudo apt-get install -y build-essential
sudo apt-get install -y g++
sudo apt-get install -y libgtk2.0-dev
sudo apt-get install -y nasm
sudo apt-get install -y gdb

2. 設定 WSL2 圖形介面

採用 xfce4 + VcXsrv

xfce4是一個輕量級的類Unix的桌面系統,提供桌面環境

VcXsrv提供圖形介面,使在windows子系統wsl裡的操作能夠圖形化顯示

2.1 安裝VcXsrv

下載地址:https://sourceforge.net/projects/vcxsrv/files/latest/download


選擇one large window


一定勾選Disable access control

看到下圖即為成功

*解決高DPI模糊問題

2.2 安裝xfce4

sudo apt install -y xfce4

2.3 設定

開啟 .bashrc:cd ~ & vim .bashrc

在 .bashrc 檔案最後新增

# 設定xfce4
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0

新增後執行source ~/.bashrc命令。

2.4 啟動

sudo startxfce4

此外,當看到防火牆選項時,請同意其通過

小技巧:當在終端執行sudo startxfce4後,xfce4會在前臺輸出log無法執行其他命令。此時可以再開一個終端視窗執行其他命令(比如開bochs什麼的)

3. 安裝bochs

bochs 2.6.2:https://sourceforge.net/projects/bochs/files/bochs/2.6.2/bochs-2.6.2.tar.gz

3.1 下載

在Linux下使用wget命令下載

wget https://sourceforge.net/projects/bochs/files/bochs/2.6.2/bochs-2.6.2.tar.gz

3.2 解壓

* 非必須

*移動原始碼到合適的目錄(筆者這裡放在 ~/OS/實驗3 下)

mv bochs-2.6.2.tar.gz OS/實驗3

*開啟原始碼所在目錄

cd OS/實驗3

解壓

tar -zxvf bochs-2.6.2.tar.gz

3.3 設定

1.進入解壓出來的目錄

cd bochs-2.6.2/

2.生成 Makefile

請在終端貼上下列命令(請整塊貼上)

./configure \
--prefix=/your_path/bochs \
--enable-debugger \
--enable-disasm \
--enable-iodebug \
--enable-x86-debugger \
--with-x \
--with-x11 \
LDFLAGS='-pthread' \
LIBS='-lX11'

下對設定命令進行解析 來源:《作業系統真相還原》

--prefix=/your_path/bochs \			# 指定安裝目錄,安裝目錄替換your_path
--enable-debugger \				# 開啟bochs自身偵錯程式
--enable-disasm \				# 使bochs支援反組合
--enable-iodebug \				# 啟動io介面偵錯程式
--enable-x86-debugger \				# 使bochs支援x86偵錯程式
--with-x \					# 使用x windows
--with-x11 \					# 使用x11影象使用者介面

下給出筆者所用命令

./configure \
--prefix=/home/fwm-0100/bochs \
--enable-debugger \
--enable-disasm \
--enable-iodebug \
--enable-x86-debugger \
--with-x \
--with-x11 \
LDFLAGS='-pthread' \
LIBS='-lX11'

*3. 修改Makefile

vim Makefile

在92行新增

IBS =-lm -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lpthread

為啥要搞這步捏? 來源:《作業系統真相還原》

3.4 編譯安裝

編譯:make

安裝:sudo make install

bochs安裝目錄如下:

3.5 設定bochs

開啟bochs程式目錄,筆者這裡是/home/fwm-0100/bochs/bin

建立bochsrc.disk

sudo vim bochsrc.disk

輸入以下內容(注意路徑/home/fwm-0100要改成自己的bochs安裝目錄)

###############################################
######## Configuration file for Bochs #########
###############################################

# 第一步
# 設定Bochs在執行過程中能夠使用的記憶體,本例為32MB
megs: 32


# 第二步
# 設定對應真實機器的BIOS和VGA BIOS
# 對應兩個關鍵字:romimage 和 vgaromimage
# 注意這裡的/home/fwm-0100 要替換為自己的安裝目錄
romimage: file=/home/fwm-0100/bochs/share/bochs/BIOS-bochs-latest
vgaromimage: file=/home/fwm-0100/bochs/share/bochs/VGABIOS-lgpl-latest


# 第三步
# 設定Bochs所使用的磁碟
# 軟碟的關鍵字為floppy。
# 若只有一個軟碟,則使用floppya即可,若有多個,則為floppya,floppyb…
# floppya: 1_44=a.img, status=inserted


# 第四步
# 選擇啟動碟符
# 預設從軟碟啟動,將其註釋,我們使用從硬碟啟動
# boot: floppy
boot: disk


# 第五步
# 設定紀錄檔檔案的輸出
log: bochs.out


# 第六步
# 開啟或關閉某些功能

# 關閉滑鼠
mouse: enabled=0

# 開啟鍵盤
keyboard_mapping: enabled=1,map=/home/fwm-0100/bochs/share/bochs/keymaps/x11-pc-us.map

# 硬碟設定
ata0: enabled=1,ioaddr1=0x1f0,ioaddr2=0x3f0,irq=14

# gdb支援(需要在設定的時候就開啟,不然會報錯)
# 這樣gdb便可以遠端連線到此機器的1234埠偵錯
# gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0

################### 設定結束 ###################

3.6 執行bochs

以下操作更加建議直接在圖形化介面下的終端執行命令

進入bochs安裝目錄下的bin目錄,執行./bochs

此時在VcXsrv出現一個bochs的黑色視窗

所有需要輸入的地方請見下圖中框出部分

在終端輸入c 在VcXsrv下的bochs的黑色視窗出現bochs的UI

看到下面的視窗,證明已經成功啦!!!!


常見問題

原因:disk有tab(空格)

解決:刪除組態檔空格即可

原因:看圖,不應該換行

解決:不換行嘍

原因:設定編譯的時候沒寫gdb

解決:組態檔就不要加gdb嘍,註釋掉

原因:組態檔沒有放在bochs安裝目錄的bin目錄下

解決:移動到bin目錄下,如:/home/fwm-0100/bochs/bin

參考檔案

《作業系統真相還原》

通過 VcXsrv 在 WSL2 上使用圖形化介面(xfce4) - bluenlq - 部落格園 (cnblogs.com)

WSL2(Ubuntu 22.04.2 LTS) + Win11 + Bochs-Gui_wsl安裝bochs_物與我皆無盡也的部落格-CSDN部落格

Linux下bochs開啟黑畫面解決方法

特別鳴謝:ZGY