ubuntu 8.04 bochs 调试linux 0.11内核_gcc4 hdc-0.11 hdc-0.11.img-程序员宅基地

技术标签: deb  extension  delay  ubuntu  linux  makefile  linux内核学习  

要下载的软件包:
bochs-2.3.5
linux-0.11-081030.tar.gz
linux-0.11-devel-060625.zip(hdc-0.11-new.img 文件系统)
(hdc-0.11-new.img 只用这一个文件也可以时入linux 0.11系统,只需在配置bochs时稍做修改就可以,但是要调试源码的话,还是自己编译来得爽)

安装bochs之前做一些准备工作
sudo apt-get install build-essential
sudo apt-get install xorg-dev
sudo apt-get install bison

一.安装bochs
1. 解包
tar xvfz bochs-2.3.5.tar.gz
2.进入bochs-2.3.5目录
cd bochs-2.3.5
3. 配置
编译两份不同的配置的版本
第一个的版本为使用bochs自带的内部调试器

./configure --prefix=/opt/bochs/debug --enable-plugins --enable-debugger --enable-disasm
注释:
    * --prefix=/opt/bochs/debug 软件将被安装到哪个目录下
    * --enable-plugins 是必须要的
    * --enable-debugger 是打开bochs的自带调试器
    * --enbale-disasm 允许反汇编
4. 编译
make
5. 安装
sudo make install
6.加一个符号连接
ln -s /opt/bochs/debug/bin/bochs /usr/bin/bochsdbg

第二个版本为使用gdb-stub的版本
1. 清理
在配置第二个版本之前,需要把刚才编译的东西清理掉,输入以下命令:
make clean
2. 配置
然后配置,配置命令为
./configure --prefix=/opt/bochs/gdbstub --enable-plugins --enable-disasm --enable-gdb-stub
配置注释:
    * --enable-gdb-stub 打开gdb stub支持
    * 其他选项同上,注意这个不同版本会安装到不同的目录下。
3. 编译
make
4. 安装
sudo make install
这样bochs使用外部调试器gdb的版本就编译好了。
5.建一个符号链接
ln -s /opt/bochs/gdbstub/bin/bochs /usr/bin/bochs

二. 编译linux 0.11 内核
linux 0.11源码文件在linux-0.11-081030.tar.gz中,进入目录解压后的目录linux-0.11中

1. ubuntu 8.04 gcc 版本为4.2.4,但是GCC4.x 默认检查stack安全,会导致出现__stack_chk_fail错误,所以在编译之前应先修改Makefile:
    linux-0.11/Makefile
    linux-0.11/kernel/Makefile
    linux-0.11/kernel/chr_dev/Makefile
    linux-0.11/kernel/blk_dev/Makefile
    linux-0.11/fs/Makefile
    在 CFLAGS参数中加入-fno-stack-protector

2. 安装 as86 ld86
下载dev86-0.16.3-8.i386.rpm包,转为deb,然后安装
sudo apt-get install alien (安装rpm转deb工具)
sudo alien dev86-0.16.3-8.i386.rpm (转为deb)
sudo apkg -i dev86-0.16.3-8.i386.deb (安装as86与ld86)
更简单的方法是: sudo apt-get install bin86 (这种方法等下次重装系统的时候试一下,呵呵)

3.编译 make (编译不成功记得在下次编译前 make clean 一下),如果编译成功则在linux-0.11目录下生成 Image

三. 配置bochs
这是bochs-2.3.5的配置文件

romimage: file=$BXSHARE/BIOS-bochs-latest 
megs: 16
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
vga: extension=vbe
floppya: 1_44="Image", status=inserted
floppyb: 1_44=diska.img, status=inserted
ata0-master: type=disk, path="hdc-0.11-new.img", mode=flat,cylinders=410, heads=16, spt=38
boot: a
log: bochsout.txt
parport1: enable=0
vga_update_interval: 300000
keyboard_serial_delay: 200
floppy_command_delay: 50000
ips: 4000000
mouse: enabled=0
private_colormap: enabled=0
fullscreen: enabled=0
screenmode: name="sample"

(注:如果编译内核不成功且只是想启动bochs,看一下linux 0.11 界面的话,可以直接把上述配置的boot:a,改为boot:c)

运行bochs
bochs -f bochsrc.bxrc
注:用gdb 调试时出现“system bios must end at 0xffff”,可把*.bxrc romimage 一行中的address=0f0000 去掉
#romimage: file=$BXSHARE/BIOS-bochs-latest, address=0xf0000
 romimage: file=$BXSHARE/BIOS-bochs-latest
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/AstrayLinux/article/details/7335955

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签