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
                }
            ]
        }
    ]
}
相关推荐
Lsetea15 分钟前
OpenSSL的checkhost显示不匹配却退出0:名称检查与证书验收
linux·https·shell·ssl证书·openssl
张文君26 分钟前
Ubuntu iSCSI CHAP认证与Win11挂载
linux·运维·ubuntu
一直C29 分钟前
嵌入式 Linux 驱动开发学习笔记:中断、等待队列与工作队列
linux·驱动开发·嵌入式硬件·学习·imx6ull
程序员-Benothing36 分钟前
Linux防火墙配置教程:iptables、firewalld、nftables、ufw
linux·运维·服务器
齐鲁大虾1 小时前
如何通过 CUPS Web 界面(http://localhost:631)安装打印机驱动
linux
Black蜡笔小新1 小时前
中央厨房配餐看不见风险高?EasyCVR可视化监管方案设计
运维·安全·easycvr
木雷坞1 小时前
Docker Compose端口映射排查:用port和inspect定位网页访问失败
运维·docker·容器
yunwei371 小时前
eBPF 实例教程:使用内核跟踪点监控 GPU 驱动活动
linux·后端·性能优化
龙亘川1 小时前
电子印章安全审计管理业务建模:从证书密钥、安全策略到审计预警的全链路闭环
运维·人工智能·安全·智慧城市·开源软件·数据可视化
AlfredZhao2 小时前
用脚本按顺序执行初始化 DB 的 SQL 文件
linux