【linux 0.11 学习记录】一、环境配置,用Bochs输出hello world

想学习linux,又不知道从哪里下手,体系太大,哪块内容都很多,无奈下选择了linux0.11作为入口,本系列将是学习笔记,希望能坚持下去吧

环境配置

  • 这里使用win10+bochs2.7

安装bochs

  • 官网:https://bochs.sourceforge.io,需要使用oldlinux提供的bochs linux0.11编译环境的话就安装2.1版本,这里安装了2.7(不兼容)
  • 安装目录新建个环境变量BXSHARE,并且也把该目录添加到环境变量Path中,文件定位和命令行工具用
    在这里插入图片描述

编译环境

安装nasm

  • 官网:https://nasm.us
  • 安装目录添加到环境变量Path中,到此可以做些汇编实验了

安装cygwin64

  • 官网:https://www.cygwin.com
  • 选择从互联网安装,下载站点随意,找到makegcc工具,安装后把bin目录添加到环境变量,这里均选择了最新版本
  • 因为能编译gcc的原版本太低了,好像是1.4,也有用3.4的,冒出来个大胆的想法,看是否能够移植到最新的gcc11上来(可能不行,但肯定也能学到不少东西),,,
  • 也有现成的boch编译环境可以用,需要安装boch2.1版本(和2.7不兼容),这里oldlinux.org下载链接提供一个bochs2.1的搭建好的linu0.11环境,也包含安装包,安装bochs后把其他文件都拷贝到安装目录就可以用了。里面已经移植了gcc1.4,里面也提供了linux0.11源码,做少量改动就可以编译,使用参考博文链接, 做的工作基本是把/linux/Makefile、/linux/fs/Makefile、/linux/lib/Makefile、/linux/kernel/Makefile、/linux/kernel/math/Makefile、/linux/kernel/blk_drv/Makefile、/linux/kernel/chr_drv/Makefile中的mstring-insns字段删除,并把/usr/local/bin中的ar改名为gar

其他资源

  • https://ftp.gnu.org/gnu/gcc/,gnu软件镜像站,可以找到老版本gcc
  • https://gitee.com/flythecoder/linux0.11, gitee上一个linux0.11源码仓库,配套<<linux内核0.11完全注释V3.0>>

hello world程序

  • 在自己的工作目录新建软盘
bximage

在这里插入图片描述

  • 在自己的工作目录新建一个boot.asm文件
org 07C00h                   ; 告诉编译器程序加载到07C00处mov ax, csmov ds, axmov es, axcall DispStr                    ; 调用显示字符串例程jmp $              ; 无限循环
DispStr:mov ax, BootMessagemov bp, ax                    ; es:bp = 串地址mov cx, 16                    ; cx = 串长度mov ax, 01301h            ; ah = 13, al = 01hmov bx, 000Ch              ; 页号为0(bh = 0) 黑底红字 (bl = 0Ch,高亮)mov dl, 0int 10h                          ; 10h号中断ret
BootMessage:  db "Hello,OS world!"
times 510-($-$$)   db   0            ; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55
  • 编译
nasm boot.asm -o boot.bin
  • 写入软盘镜像,dd命令用于数据拷贝,if指定输入文件,of指定输出文件,bs指定每次速去和写入的数据块大小,count指定需要拷贝的数据块数量,conv=notrunc表示在写入输出文件时不覆盖(不截断)原有其他数据,即只覆盖写入的部分
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc

在这里插入图片描述
打开a.img可以看到boot.bin被写入了最前面
在这里插入图片描述

  • 编写bochs配置文件test.bxrc,这里用到了上面配置的环境变量$BXSHARE
# how much memorythe emulated machine will have  
megs: 32  # filename of ROMimages  
romimage:file=$BXSHARE/BIOS-bochs-latest
vgaromimage:file=$BXSHARE/VGABIOS-lgpl-latest# what disk imageswill be used  
floppya:1_44=a.img, status=inserted  # choose the bootdisk.  
boot: floppy  # where do we sendlog messages?  
log: bochsout.txt  # disable themouse  
mouse: enabled=0  # enable keymapping, using Us layout as default  
keyboard:keymap=$BXSHARE/keymaps/x11-pc-us.map
  • 启动bochs
    在这里插入图片描述
    可以看到hello world已经输出
    在这里插入图片描述

参考1:https://www.cnblogs.com/oasisyang/archive/2021/09/30/15358137.html,bochs一个hello world示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/161666.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

langchain主要模块(三):Chain

原文&#xff1a;langchain主要模块(三)&#xff1a;Chain_江小皮不皮的博客-CSDN博客 langchain2之Chain langchain 1.概念2.主要模块 模型输入/输出 (Model I/O)数据连接 (Data connection)链式组装 (Chains)代理 (Agents)内存 (Memory)回调 (Callbacks)3.链 • LLMChain&am…

中文编程语言开发工具开发的软件案例:定制开发扫码识别位置程序适用于车间物品摆放管理

中文编程语言开发工具开发的软件案例&#xff1a;定制开发扫码识别位置程序适用于车间物品摆放管理 中文编程语言开发工具开发的软件案例&#xff1a;定制开发扫码识别位置程序适用于车间物品摆放管理&#xff0c; 中文编程系统化教程&#xff0c;不需英语基础。学习链接 htt…

网站如何应对网络流量攻击

网络安全问题中&#xff0c;受到流量攻击是一种常见挑战。以下是一系列的专业建议&#xff0c;帮助您预防和减轻这类攻击&#xff0c;从而确保您的网站和数据的安全。 使用 Web 应用程序防火墙 (WAF) Web 应用程序防火墙是一项专门的安全工具&#xff0c;能够检测和拦截恶意流…

最新GMS地下水数值模拟教程

详情点击公众号链接&#xff1a;最新GMS地下水数值模拟教程 前言 GMS三维地质结构建模 GMS地下水流数值模拟 GMS溶质运移数值模拟与反应性溶质运移模 目标 1.GMS的建模数据的收集、数据预处理以及格式等&#xff1b; 2.GMS的建模流程&#xff0c;包括三维地质结构建模、直接…

【Flutter】第一篇基础:站在一名web前端开发者的角度看代框架

Flutter Flutter 是一个跨平台的 UI 工具集&#xff0c;它的设计初衷&#xff0c;就是允许在各种操作系统上复用同样的代码&#xff0c;例如 iOS 和 Android&#xff0c;同时让应用程序可以直接与底层平台服务进行交互。如此设计是为了让开发者能够在不同的平台上&#xff0c;…

Mistral AI发布一个拥有 73 亿参数模型Mistral 7B

导读法国人工智能初创公司 Mistral AI 宣布推出其首款大语言模型 Mistral 7B 是一个&#xff0c;号称是迄今为止同规模产品中最强大的语言模型&#xff1b;在 Apache-2.0 许可下开源&#xff0c;可完全免费使用&#xff0c;不受任何限制。 Mistral AI 是一个成立仅六个月的初创…

“第四十二天”

这个&#xff0c;之前用的b去存储a的总和和排名&#xff0c;后来在比较的过程中&#xff0c;只改变的b的值&#xff0c;却没有改变a的值&#xff0c;但在比较语文成绩的时候用的还是a&#xff0c;这个时候a和b同样是第i个对应的可能不是同一个对象了 &#xff0c;因为上面b的值…

12-网络篇-通信过程中的网络表

1.ARP表 主机1和主机2在同一个局域网内&#xff0c;通过之前的章节&#xff0c;我们知道在通信过程中&#xff0c;除了要知道对方的IP地址以外&#xff0c;我们还要知道对方的硬件地址&#xff0c;也就是Mac地址。而ARP协议就是为了解决此种问题。 ARP协议的用途是为了从网络层…

vector+算法sort与list+sort的效率比较,容易写错的地方原因探析

我写的代码&#xff1a; #include <iostream> using namespace std; #include <vector> #include <list> #include <algorithm> int main() {const int N 10000000;vector<int> v;list<int> l;for (int i 0; i < N; i){v.push_back(…

AcWing 5180. 正方形泳池

原题链接&#xff1a;5180. 正方形泳池 - AcWing题库 说实话题解和视频题解都不太好&#xff0c;有点过于复杂了&#xff0c;那就不得不记录一下我看视频题解衍生出的另一个较为简单的思路了。 根据答案形态出发&#xff0c;枚举所有这种形态找出最大值。 可以发现最大的泳池要…

Ubuntu18.04安装gdal3.4

一.依赖关系 所以&#xff0c;安装顺序&#xff1a;SQLite -> Proj -> Gdal

【AFL学习笔记(一)】简单的使用AFL进行漏洞挖掘测试

首先声明一点&#xff0c;ALF都是在Linux系统上运行 本文使用的是Ubuntu 20.4 版本进行演示 Step 1 下载afl-2.52b 官网地址afl2.52b 直接下载地址直接下载地址 下载完成之后在Ubuntu系统上进行解压&#xff1a; tar -afl-2.52b.tgzStep 2 创建测试用例 ①&#xff1a;创…

20 个有代码的 Python 脚本可使您的工作自动化

阿卜杜勒汉南哈桑 说明 在本文中&#xff0c;我们将探讨 20 个 Python 脚本及其代码&#xff0c;它们可以帮助您自动执行各种任务并提高工作效率。无论您是开发人员、数据分析师&#xff0c;还是只是希望简化工作流程的人&#xff0c;这些脚本都能满足您的需求。 目录 1. 简…

【软考-中级】系统集成项目管理工程师-配置管理历年案例

持续更新。。。。。。。。。。。。。。。 目录 2023 上 试题三(20分)2016 下 试题三(17分) 2023 上 试题三(20分) 某公司有自己的质量管理体系&#xff0c;其中配置管理程序已运行多年&#xff0c;由项目经理牵头组建变更控制委员会(CCB)&#xff0c;在创建配置管理环境后&…

数据库 MySql快速导入外部数据库流程

适用于新安装MySql本地没有数据情况 外部MySql数据库文件 任务管理器停用Mysql进程 将外部文件替换本地默认文件即可 重启电脑导入完成。

前端设计模式应应用场景

前端设计模式应应用场景 创建型模式(Creational Patterns)工厂模式单例模式原型模式 行为型模式(Behavioral Patterns)策略模式观察者模式/发布订阅模式迭代器模式状态模式 结构型模式(Structural Patterns)装饰器模式代理模式 创建型模式(Creational Patterns) 处理对象的创建…

填充颜色游戏

无语死了这题。 题目描述 小明最近迷上下面一款游戏。游戏开始时&#xff0c; 系统将随机生成一个 N N 的 正方形棋盘&#xff0c; 棋盘的每个格子都由六种颜色中的一种绘制。在每个步骤中&#xff0c; 玩家选择一种颜色&#xff0c; 并将与左上角连接的所有网格更改为该特…

树控件的使用

目录 1、修改树控件的基础属性&#xff1a; 2、准备图标 &#xff1a; &#xff08;1&#xff09;、ico后缀的图片放入当前文件路径的rc中 &#xff08;2&#xff09;、在Icon中添加资源&#xff0c;导入图片 &#xff08;3&#xff09;、准备HICON图标 &#xff08;4&am…

音频处理到雷达系统:滤波组的多领域应用 | 百能云芯

在电子元器件和电路设计领域&#xff0c;滤波组&#xff08;Filter Bank&#xff09;是一个关键概念&#xff0c;它用于处理和过滤信号&#xff0c;以满足各种应用的需求。云芯将带您深入研究滤波组在元器件中的应用&#xff0c;包括其工作原理、不同类型以及在通信、音频处理和…

qt 读取txt文本内容时,中文乱码

项目场景&#xff1a; 项目中&#xff0c;需要在TF卡中做类似txt阅读器的功能&#xff0c;因为app是在嵌入式系统下运行的&#xff0c;发现当读取txt的文本格式为ANSI时&#xff0c;中文的显示是乱码&#xff0c;故记录下解决方法 问题解决 中文乱码问题还是涉及到编码问题&…