当前位置: 首页 > news >正文

《操作系统真象还原》第一章 部署工作环境

ref:https://www.bilibili.com/video/BV1kg4y1V7TV/?spm_id_from=333.999.0.0&vd_source=3f7ae4b9d3a2d84bf24ff25f3294d107
https://www.bilibili.com/video/BV1SQ4y1A7ZE/?spm_id_from=333.337.search-card.all.click&vd_source=3f7ae4b9d3a2d84bf24ff25f3294d107
在实体机ubuntu20.04 环境运行。
前置安装:

sudo apt install build-essentialsudo apt-get install libghc-x11-devsudo apt-get install xorg-dev

在运行sudo apt-get install libghc-x11-dev 报错 unable to correct missing packages,在阿里源上找不到包。
添加163源问题解决

vim /etc/apt/sources.list
# 在尾行追加
deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse
# 更新软件源
sudo apt-get update
# 再次执行安装命令即可
sudo apt-get install libghc-x11-dev

安装仿真环境
下载Bochs https://udomain.dl.sourceforge.net/project/bochs/bochs/2.6.8/bochs-2.6.8.tar.gz

# 下载
wget https://udomain.dl.sourceforge.net/project/bochs/bochs/2.6.8/bochs-2.6.8.tar.gz
# 解压缩
tar -zxvf bochs-2.6.8.tar.gz

为即将要安装的bochs创建一个空目录,我的在家目录/home/ubuntu/ 下
mkdir bochs
进入解压后的文件夹,并且配置编译安装的路径,进行安装

cd bochs-2.6.8
./configure --prefix=/home/ubuntu/bochs --enable-debugger --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11 LDFLAGS='-pthread'
make 
make install

进入安装好的bochs目录,创建bochsrc.disk 并填充配置信息(修改romimage:、romimage:、 keyboard:后面路径信息的前部分为自己的bochs安装路径)

vim bochsrc.diskmegs : 32romimage: file=/home/ubuntu/bochs/share/bochs/BIOS-bochs-latest
vgaromimage: file=/home/ubuntu/bochs/share/bochs/VGABIOS-lgpl-latestboot: disklog: bochs.outmouse:enabled=0
keyboard:keymap=/home/ubuntu/bochs/share/bochs/keymaps/x11-pc-us.mapata0:enabled=1,ioaddr1=0x1f0,ioaddr2=0x3f0,irq=14
ata0-master: type=disk, path="hd60M.img", mode=flat,cylinders=121,heads=16,spt=63#gdbstub:enabled=1,port=1234,text_base=0,data_base=0,bss_base=0

创建启动磁盘

bin/bximage

然后在输入框依次输入以下,输入一个,按一次回车

1

hd

flat

60

hd60M.img

以上这一部分是分配硬盘资源之类的。

测试代码

cd …

touch mbr.s

SECTION MBR vstart=0x7c00mov ax,0x0000	;设置栈指应该是程序一开始就应该做的事情,这个值是参照1m内存空间布局图选择的,以后会刻意避开mov ss,axmov ax,0x7c00mov sp,ax	mov ax,0x0600mov bx,0x0700	;BH是设置缺省属性,属性是指背景色,前景色,是否闪烁等,例如07H表示黑底白字,70H表示灰底黑字等等。mov cx,0x0000mov dx,0x184f	;这个看书p61,同时看其中关于页的知识int 0x10mov ax,0x0300	mov bx,0x0000	int 0x10mov ax,0x0000mov es,axmov ax,messagemov bp,axmov ax,0x1301mov bx,0x0007	;设置字体属性,02是黑底绿字,07是黑底白字mov cx,0x000cint 0x10jmp $message db "Hello World!"times 510-($-$$) db 0db 0x55,0xaa

安装编译器nasm 命令: sudo apt install nasm

编译 nasm -o test mbr.s

写入虚拟机启动磁盘 dd if=/home/ubuntu/test of=/home/ubuntu/bochs/hd60M.img bs=512 count=1 conv=notrunc

启动虚拟机查看效果(在bochs目录下)

cd bochs
bin/bochs -f bochsrc.disk

启动之后,输入c即可看见Hello world!

http://www.lryc.cn/news/192997.html

相关文章:

  • SpringCloud-Config
  • 劣币驱良币的 pacing 之殇
  • Gin 中的 Session(会话控制)
  • ChatGPT AIGC 实现数据分析可视化三维空间展示效果
  • Stable Diffusion 动画animatediff-cli-prompt-travel
  • fatal error C1083: 无法打开包括文件: “ta_libc.h”: No such file or directory
  • c 语言基础题目:L1-034 点赞
  • SaaS人力资源管理系统的Bug
  • GPTQ 和 AWQ:LLM 量化方法的比较
  • JVM:虚拟机类加载机制
  • PHP筆記
  • IDEA启动报错Failed to create JVM. JVM path的解决办法
  • 源码解析FlinkKafkaConsumer支持周期性水位线发送
  • Nginx:动静分离(示意图+配置讲解)
  • 通讯网关软件024——利用CommGate X2Access实现Modbus TCP数据转储Access
  • vim工具的使用
  • Docker学习_存储篇
  • 微信小程序获取当前日期时间
  • Unity关键词语音识别
  • SpringBoot的配置文件——.yml和.properties
  • Retrieve Anything To Augment Large Language Models
  • 什么是面向对象编程
  • c++视觉处理----固定阈值操作:Threshold()函数,实时处理:二值化,反二值化,截断,设为零,反向设为零
  • KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(8)
  • 【问题解决】Ubuntu 安装 SeisSol 依赖 easi 报错解决: undefined reference to `H5free_memory‘
  • 循环小数(Repeating Decimals, ACM/ICPC World Finals 1990, UVa202)rust解法
  • [GAMES101]透视投影变换矩阵中为什么需要改变z值
  • sklearn处理离散变量的问题——以决策树为例
  • QT 数据库表格----QSqlTableModel
  • Vue_Bug Failed to fetch extension, trying 4 more times