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
                }
            ]
        }
    ]
}
相关推荐
Championship.23.241 小时前
Linux Top 命令族深度解析与实战指南
java·linux·服务器·top·linux调试
techdashen2 小时前
Cloudflare 为何抛弃 NGINX,用 Rust 自研了一个代理
运维·nginx·rust
南城猿2 小时前
保姆级 Ubuntu 部署 禅道
linux·运维·ubuntu
zhangrelay2 小时前
三分钟云课实践速通--模拟电子技术-模电--SimulIDE
linux·笔记·学习·ubuntu·lubuntu
珠海西格电力2 小时前
零碳园区产业园管理系统的全场景源网荷储氢协同调度功能是如何实现的
大数据·运维·人工智能·物联网·能源
木木_王2 小时前
嵌入式Linux学习 | 数据结构 (Day05) 栈与队列详解(原理 + C 语言实现 + 实战实验 + 易错点剖析)
linux·c语言·开发语言·数据结构·笔记·学习
Joseph Cooper3 小时前
Linux Power Management 子系统:从 suspend/resume 到 Runtime PM、PM QoS
linux·驱动开发·linux kernel·嵌入式linux·电源管理
政宇 | STAR3 小时前
docker相关
ubuntu
wj3055853783 小时前
CC-Switch 在 WSL Ubuntu 中安装记录
linux·运维·ubuntu
人生匆匆3 小时前
通过nginx解决跨域问题
运维·nginx