ubuntu 22 源码安装bochs

输入以下命令安装

c 复制代码
切换到管理员
创建目录     
mkdir bochs && cd bochs

下载
wget http://downloads.sourceforge.net/sourceforge/bochs/bochs-2.7.tar.gz

解压        
tar -xzf bochs-2.7.tar.gz

进入目录    
cd bochs-2.7

安装依赖项
sudo apt-get update
sudo apt-get install build-essential libx11-dev libxpm-dev libgtk2.0-dev
sudo apt-get install libsdl2-dev libx11-dev
sudo apt-get install libncurses5-dev libncursesw5-dev

配置编译选项
./configure \
    --prefix=/usr \
    --without-wx \
    --with-x11 \
    --with-x \
    --with-term \
    --disable-docbook \
    --enable-cpu-level=6 \
    --enable-fpu \
    --enable-3dnow \
    --enable-long-phy-address \
    --enable-pcidev \
    --enable-usb \
    --enable-all-optimizations \
    --enable-gdb-stub \
    --with-nogui

修改 Makefile 以包含 pthread 库
sed -i 's/^LIBS = /LIBS = -lpthread/g' Makefile

编译 Bochs
make -j$(nproc)

安装 Bochs
sudo make install

可以用bochs生成配置文件,在我这个环境出问题不能用 用一下配置可以正常执行引导代码

c 复制代码
# 设置内存为32MB
megs: 32

# 设置对应机器的BIOS
romimage: file="/usr/share/bochs/BIOS-bochs-latest"
# 设置对应机器的VGA BIOS
vgaromimage: file="/usr/share/bochs/VGABIOS-lgpl-latest" 

# 选择启动盘
boot: disk 

# 设置日志文件的输出
#log: bochs_out.log
#  xchg  bx,bx 断点
magic_break: enabled=1

# 硬盘设置
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 
ata0-master: type=disk, path="boot.img", mode=flat

keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none
mouse: type=ps2, enabled=false, toggle=ctrl+mbutton

gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0

配置调试

菜单栏找到配置默认生成任务 任意点一个 会生成tack.json 在同目录生成 一个文件 launch.json 输入一下内容

c 复制代码
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [       
        {
            "name": "(onix) kernel debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/kernel.bin",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerServerAddress": "localhost:1234",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}
相关推荐
A-刘晨阳2 小时前
麒麟v10桌面版2403版本运行程序提示权限不足(KYSEC)
运维·云计算·操作系统·银河麒麟·麒麟桌面系统
Zhu7582 小时前
【软件更新】在Ubuntu24 LTS中更新openssl到指定版本,例如openssl3.5.6 LTS
linux·ssh·ssl
ALINX技术博客2 小时前
【黑金云课堂】VMware Ubuntu 开发环境安装教程
linux·fpga开发·fpga
charlie1145141912 小时前
嵌入式Linux模块开发——struct module 深度解析:内核模块的核心数据结构
linux·开发语言·数据结构·c
恒创科技HK2 小时前
恒创科技:刚交付的香港云服务器应该做哪些测试
运维·服务器
刘某的Cloud2 小时前
svc中外部流量访问限制
linux·运维·docker·kubernetes·service
code monkey.2 小时前
【寻找Linux的奥秘】Linux 基础 IO 全解析:从 C 库到内核,吃透文件操作的底层逻辑
linux·c语言·基础io
wanhengidc2 小时前
云手机对小说工作室的作用
运维·服务器·网络·网络协议·智能手机
阿沁QWQ2 小时前
Docker镜像制作实战
运维·docker·容器