吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12993|回复: 104
收起左侧

[系统底层] 从0到-1写一个操作系统-0x00-环境准备

  [复制链接]
peiwithhao 发表于 2022-12-26 14:47
本帖最后由 peiwithhao 于 2023-3-2 13:58 编辑

这里写个往期推荐,这样可以来回跳跃(狗头
0x00-环境准备
0x01-BIOS以及MBR
0x02-MBR支持显卡
0x03-MBR操作硬盘以及Loader
0x04-进入保护模式

今天开始更新编写OS,从底层bootloader至用户shell编写一条龙,可以帮助广大想从事操作系统类型工作的同学对底层更加透彻,我的所有源码都在github上同文章保持同步更新,地址在文末,大家可以多提出意见PR

0x00 环境准备

本机环境为Ubuntu 20.04,镜像大家可以自行去官网免费获得

1. bochs安装

这里当然也可以使用qemu,但由于我是大部分对照《操作系统真象还原》这本书来学习,所以为了避免不必要的麻烦,使用bochs即可。
首先这里是安装路径,大伙认准2.6.8的版本,下载后文件即为bochs-2.6.8.tar.gz(2.6.2有点问题)
我们此时先进行解压,然后进入bochs-2.6.2目录

tar -zxvf bochs-2.6.8.tar.gz

此时我们需要依次进行文件配置以及make

./configure \
--prefix=/your_path/bochs \
--enable-debugger \
--enable-disasm \
--enable-iodebug \
--enable-x86-debugger \
--with-x \
--with-x11

这里如若想使用gdb进行调试,则需要将--enable-debugger替换为--enable-gdb-stub,不过我这里不建议大家使用gdb,因而环境一致可能造成许多不同的问题,我们直接用bochs本身自带的调试功能即可

当我们将上述配置好会形成Makefiel后直接make就可以开始编译了

make
当咱们make无误后,再次使用命令make install即可在你的制定目录下生成所需要要的文件

2. bochs配置

我们在bochs目录下创建一个名为bochsrc.disk,我感觉这很类似与我们qemu中的初始init文件,他就是设置参数来调整我们的磁盘情况,你也可以理解为咱们这在规定磁盘参数
具体配置如下

#第一步,首先设置 Bochs 在运行过程中能够使用的内存,本例为 32MB
#关键字为 me gs
megs :512
#第二步,设置对应真实机器的 BIOS VGA BIOS
#对应两个关键字为 romimage vgaromimage
romimage: file=/home/dawn/repos/OS_learning/bochs/share/bochs/BIOS-bochs-latest
vgaromimage: file=/home/dawn/repos/OS_learning/bochs/share/bochs/VGABIOS-lgpl-latest
#第三步,设置 Bochs 所使用的磁盘,软盘的关键字为 floppy
#若只有一个软盘,目IJ 使用 floppy 即可,若有多个,则为 floppya, floppyb… #floppya: 1_ 44=a.img, status=inserted
#第四步,选择启动盘符。
#boot: floppy #默认从软盘启动,将其注释
boot: disk #改为从硬盘启动。我们的任何代码都将直接写在硬盘上,所以不会再有读写软盘的操作。
#第五步,设置日志文件的输出。
log: bochs.out
#第六步,开启或关闭某些功能。
#下面是关闭鼠标,并打开键盘。
mouse: enabled=0
keyboard:keymap=/home/dawn/repos/OS_learning/=bochs/share/bochs/keymaps/xll-pc -us.map
#硬盘设置
ata0: enabled=1, ioaddr1=Ox1f0, ioaddr2=0x3f0, irq=14
#下面的是增加的 bochs gdb 的支持,这样 gdb 可以远程连接到此机器的 234 口调试了
#gdbstub : enabled=l, port=l234, text_base=O, data_base=O, bss_base=O
################### 配置文件结束 #####################

但是仅有一个配置文件还不够,所以我们需要运用bochs自带的功能生成一个虚拟的磁盘,他位于在你们bochs目录下bin目录里面
一下为对应参数所表达含义,这里你也可以通过使用help指令来查看

  • -fd   创建软盘
  • -hd   创建硬盘
  • -mode 创建硬盘类型
  • -size 硬盘大小
  • -q    静默模式
    所以咱们执行如下命令
    bin/bximage -hd -mode="flat" -size=60 -q hd60M.img

    当然我们也可以用如下方法

    此时注意我们还需要将画红线的那条参数加入我们之前写的bochsrc.disk配置文件中(联动起来惹
    然后我们再将用以下指令来启动咱们的裸机

    bin/bochs -f bochsrc.disk

    执行之后会发现有个错误

    此时显示他不是一个bootable disk,也就是说咱们没写boot,至于具体boot程序如何写,我将在下一篇继续解释

0x01 总结

此篇十分简单,还根本没开始实现os,所以十分顺畅,还提一嘴,这个项目我会持续在github上更新,源码什么的一股脑全放上面,有需要的大家可以去看看

传送门

免费评分

参与人数 22吾爱币 +27 热心值 +18 收起 理由
lightf + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
guanxin + 1 热心回复!
alphageek + 1 我很赞同!
bingshuir + 1 + 1 我很赞同!
云藏龍曦 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
CXseniorcolonel + 1 + 1 我很赞同!
刀口以后 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
W4nsvng + 1 我很赞同!
kil0 + 1 用心讨论,共获提升!
solidajun + 1 + 1 谢谢@Thanks!
tianzhiyimu + 1 谢谢@Thanks!
花生酱王子 + 1 + 1 用心讨论,共获提升!
willJ + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
heiyue003 + 1 + 1 我很赞同!
lcz180 + 1 + 1 谢谢@Thanks!
xzqsr + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
YZM23333 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
corleoneYellow + 1 + 1 我很赞同!
tuao + 2 + 1 用心讨论,共获提升!
luliucheng + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Mrain22 + 1 我很赞同!
高处寒风吹 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| peiwithhao 发表于 2022-12-26 16:55
这里声明一下哈,这里提一嘴github只是因为我希望有师傅可以跟我一起讨论下,并没有说借此平台搞宣传,我只是个刚考完研渴望写个os当复试项目的菜鸡
jffwoo 发表于 2023-1-14 12:16
好不容易configure没有报错了,但是make报错了,报错信息如下所示:
x.cc:37:10: fatal error: X11/Xlib.h: No such file or directory
   37 | #include <X11/Xlib.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:114: x.o] Error 1
这个是报x11的问题,configure的时候是否可以去掉with-x和with-x11的参数?
 楼主| peiwithhao 发表于 2022-12-26 15:05
andy833john 发表于 2022-12-26 15:03
@peiwithhao
你在你的私人托管github平台,还在这边推广广告啊。
这是不是要给广告费呢~~~

这是何意,我想的是这边代码不是很方便管理所以说放github上了,有兴趣的同学可以去看看,不知道有不能推广这一说

点评

@andy833john 这货github都打不开,似乎根本不知道github是什么吧,张嘴就说推广,可笑  发表于 2022-12-27 19:01
头像被屏蔽
andy833john 发表于 2022-12-26 15:03
提示: 该帖被管理员或版主屏蔽
哥吉拉 发表于 2022-12-26 15:23
楼主非常强大。前排膜拜支持!
YFxbxb888 发表于 2022-12-26 16:13
楼主非常厉害,过来膜拜一下
flyingdancex 发表于 2022-12-26 16:17
确定从0开始?围观一下
co1dlight 发表于 2022-12-26 16:19
已收听并star,期待更新!
ytfrdfiw 发表于 2022-12-26 16:21
感谢分享。
cbdgv 发表于 2022-12-26 16:23
牛B 谢谢分享 一起学习
yunlongzhuhuo 发表于 2022-12-26 16:32
andy833john 发表于 2022-12-26 15:03
@peiwithhao
你在你的私人托管github平台,还在这边推广广告啊。
这是不是要给广告费呢~~~

也不能把源码都放在帖子里啊,长到离谱
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 00:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表