Loading... # 《一个操作系统的实现》--- ubuntu下bochs2.3.5的配置与使用 > 云平台:阿里云 > 操作系统:ubuntu14.04 > bochs:2.3.5 本篇博客来源于本人在按照《ORANGE'S 一个操作系统的实现》配置环境时遇到的问题,遂发出来分享 **安装过程中如果遇到权限问题,请使用`sudo`** ## 安装图形化界面 ### 安装ubuntu图形化界面 ```bash apt-get update apt-get install vnc4server apt-get install xfce4 apt-get install ubuntu-desktop sudo apt-get install xrdp ``` ### 允许图形化界面root登录 > 如果发现图形化界面登录只可以使用guest登录,则使用如下方法 打开`50-unity-greeter.conf` ```bash cd /usr/share/lightdm/lightdm.conf.d/ vim ./50-unity-greeter.conf ``` 修改配置文件,在文件中添加下面三行语句 ```bash user-session=ubuntu greeter-show-manual-login=true all-guest=false ``` 打开`.profile`文件 ```bash vim /root/.profile ``` 将`.profile`文件最后一行修改为 ```bash tty -s && mesg n || true ``` ### 重启 ```bash reboot ``` 随后便可以使用`VNC登录`的方式进入服务器 ## 安装bochs ### 下载bochs 点击[链接](https://sourceforge.net/projects/bochs/files/bochs/2.3.5/),下载`bochs-2.3.5.tar.gz` 如果无法下载,可以使用如下的[百度网盘链接](https://pan.baidu.com/s/1wouHfxh8xImpeV8ERdJDrw?pwd=groy)(提取码:`groy`) ### 安装依赖环境 ```bash sudo apt-get install build-essential sudo apt-get install xorg-dev sudo apt-get install bison sudo apt-get install libgtk2.0-dev sudo apt-get install g++ ``` ### 解压 ```bash tar vxzf bochs-2.3.5 cd bochs-2.3.5 ``` ### 配置 ```bash ./configure --enable-debugger --enable-disasm ``` #### 配置过程出错 配置过程如果报错 ```bash ERROR: X windows gui was selected, but X windows libraries were not found. ``` 编辑`configure`配置文件 ```bash vim configure ``` 在配置文件内寻找 ```bash echo ERROR: X windows gui was selected, but X windows libraries were not found. exit 1 ``` 将`exit 1`注释掉 ```bash echo ERROR: X windows gui was selected, but X windows libraries were not found. #exit 1 ``` ### make make前需要修改`bx_debug/symbol.cc`的代码 #### 打开`symbol.cc` ```bash vim bx_debug/symbol.cc ``` #### 编辑`symbol.cc` 在97行左右添加如下代码 ```c++ using namespace std; #ifdef __GNUC__ //修改 using namespace __gnu_cxx; //修改 #endif //修改 struct symbol_entry_t ``` #### 安装 ```bash make install ``` ## 安装nasm ```bash apt-get install nasm ``` ## 测试 ### asm源码及编译 在你的项目文件下建立`boot.asm`文件 ```asm org 07c00h ; 告诉编译器程序加载到7c00处 mov ax, cs mov ds, ax mov es, ax call DispStr ; 调用显示字符串例程 jmp $ ; 无限循环 DispStr: mov ax, BootMessage mov bp, ax ; ES:BP = 串地址 mov cx, 16 ; CX = 串长度 mov ax, 01301h ; AH = 13, AL = 01h mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮) mov dl, 0 int 10h ; 10h 号中断 ret BootMessage: db "Hello, OS world!" times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节 dw 0xaa55 ; 结束标志 ``` 编译 ```bash nasm boot.asm -o boot.bin ``` ### 制作镜像 #### 生成镜像文件 ```bash bximage ``` 第一步选`fd`,其余默认即可 会在你的项目文件下方生成`a.img`软盘镜像 #### 写入引导区 ```bash dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc ``` #### 生成bochsrc **在本项目文件的目录下生成`bochsrc`,作为配置文件** ```ini #how much memory the emulated machine will have megs: 32 #filename of ROM images 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=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_mapping: enabled=1, map=/usr/local/share/bochs/keymaps/x11-pc-us.map ``` **注意`romimage` `vgaromimage` `keyboard_mapping`要依照你的服务器中对应文件的路径填写,需要自己去找具体文件地址** ### 运行 > 此步需要用图形化界面登录 ```bash bochs -f bochsrc ``` 输入回车 调试界面按c回车,若虚拟机上显示`Hello, OS world!`则配置成功 最后修改:2024 年 09 月 12 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏