- vm安裝CentOS虛擬機帶有桌面的版本。
-
su
輸入密碼123456
。更新yum -y update
。一般已經(jīng)安裝好后面這2個工具:yum install -y net-tools wget
。 - 看下ip地址
ifconfig
,然后本地終端連接ssh root@192.168.249.132
輸入密碼即可,主要是為了復(fù)制網(wǎng)址方便些。大概率wget https://nchc.dl.sourceforge.net/project/bochs/bochs/2.7/bochs-2.7.tar.gz
無法下載bochs,所以直接下載到本地然后復(fù)制過去scp .\bochs-2.7.tar.gz root@192.168.249.132:~
。 - 安裝bochs。
tar -zvxf bochs-2.7.tar.gz
,cd bochs-2.7
,安裝過程主要參考這兩篇文章:最新Linux(centos)安裝bochs和【實現(xiàn)操作系統(tǒng) 01】CentOS 9 安裝配置 Bochs 2.7 虛擬機,及編寫簡單的 bootloader 并寫入軟盤啟動
// 1、先安裝依賴
yum install gcc-c++ glibc-headers
yum install libX11-devel.x86_64
yum install libXrandr-devel.x86_64
yum install -y epel-release
// 2.configure
./configure --with-x11 --with-wx --enable-debugger --enable-disasm --enable-all-optimizations --enable-readline --enable-long-phy-address --enable-ltdl-install --enable-idle-hack --enable-a20-pin --enable-x86-64 --enable-smp --enable-cpu-level=6 --enable-large-ramfile --enable-repeat-speedups --enable-fast-function-calls --enable-handlers-chaining --enable-trace-linking --enable-configurable-msrs --enable-show-ips --enable-cpp --enable-debugger-gui --enable-iodebug --enable-logging --enable-assert-checks --enable-fpu --enable-vmx=2 --enable-svm --enable-3dnow --enable-alignment-check --enable-monitor-mwait --enable-avx --enable-evex --enable-x86-debugger --enable-pci --enable-usb --enable-voodoo
// 3.修改文件cpp為cc且修改配置文件路徑
cp misc/bximage.cpp misc/bximage.cc
cp iodev/hdimage/hdimage.cpp iodev/hdimage/hdimage.cc
cp iodev/hdimage/vmware3.cpp iodev/hdimage/vmware3.cc
cp iodev/hdimage/vmware4.cpp iodev/hdimage/vmware4.cc
cp iodev/hdimage/vpc.cpp iodev/hdimage/vpc.cc
cp iodev/hdimage/vbox.cpp iodev/hdimage/vbox.cc
cp bx_debug/parser.cpp bx_debug/parser.cc
vi bx_debug/debug.h
修改:
#include "config.h"為#include "../config.h"
#include “osdep.h"為#include "../osdep.h"
#include "cpu/decoder/decoder.h"為#include "../cpu/decoder/decoder.h"
make
make install
- 生成個軟盤鏡像。在家目錄
bximage
,選擇創(chuàng)建軟盤fd其他默認(rèn),成功后目錄中出現(xiàn)a.img文件。 - 按照書上的,編寫asm代碼,
vi boot.asm
。
org 07c00h ;org指令規(guī)定程序的起始地址,不規(guī)則則默認(rèn)是0000h
mov ax,cs
mov ds,ax
mov es,ax
call DispStr
jmp $ ;$表示當(dāng)前行地址,所以這是無限循環(huán)
DispStr:
mov ax,BootMessage
mov bp,ax
mov cx,16
mov ax,01301h
mov bx,000ch
mov dl,0
int 10h
ret
BootMessage: db "Hello,OS World!"
times 510-($-$$) db 0 ;一共512字節(jié),最后2字節(jié)寫0xaa55,所以中間插入很多0字節(jié),數(shù)量就是512-2-上面那段代碼占用的字節(jié)(當(dāng)前行地址-這一節(jié)開頭地址即程序初地址)
dw 0xaa55 ;最后補這個是由于加電自檢后尋找啟動盤會優(yōu)先查找軟盤0面0磁道1扇區(qū)(1扇區(qū)512字節(jié)),并發(fā)現(xiàn)如果扇區(qū)最后字節(jié)以0xaa55結(jié)尾則認(rèn)為這是引導(dǎo)扇區(qū),并把這512字節(jié)數(shù)據(jù)復(fù)制到0000:7c00處并把控制交由這段引導(dǎo)程序,即我們這段程序,那我們這段程序怎么跑到7c00處的?請看第一行代碼!
- 安裝nasm。
sudo yum install automake gcc kernel-devel
wget https://www.nasm.us/pub/nasm/releasebuilds/2.15/nasm-2.15.tar.gz
tar -zvxf nasm-2.15.tar.gz
./autogen.sh
./configure
make && make install
- 編譯代碼:
nasm boot.asm -o boot.bin
- 寫進(jìn)軟盤鏡像:
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
- 配置文件,在家目錄中
vi bochsrc
。
################################################
#configure file for Bochs
################################################
# how much memory the emulated machine will have
megs: 32
# filename of Rom images, 注意下邊要根據(jù)你安裝目錄來調(diào)整
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest
#what disk images will be used
floppya: 1_44=/root/a.img, status=inserted
#choose the boot disk.
boot: floppy
#where do we send log messages?
log: bochsout.txt
#disable the mouse
mouse: enabled=0
# enable key mapping, using US layout as default.
keyboard: keymap=/usr/local/share/bochs/keymaps/x11-pc-us.map
-
在家目錄啟動
bochs -f bochsrc
,后面是指定配置文件,其實可以省略,因為bochs會默認(rèn)從幾個目錄中找配置文件。詢問操作時默認(rèn)或按6,之后按c
表示continue?就啟動了,雖然這個啟動界面有些奇怪,但至少顯示了自定義的信息。文章來源:http://www.zghlxwxcb.cn/news/detail-665908.html
-
上面制作并把數(shù)據(jù)寫到a.img鏡像后,可以vi查看這個文件,輸入命令
%!xxd
可以以16進(jìn)制查看,這時候32行末尾即512字節(jié)處最后2個字節(jié)就是55aa,即我們程序最后一行的dw 0xaa55
。文章來源地址http://www.zghlxwxcb.cn/news/detail-665908.html
到了這里,關(guān)于《一個操作系統(tǒng)的實現(xiàn)》windows用vm安裝CentOS——從bochs環(huán)境搭建到第一個demo跑通的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!