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

news2024/11/21 2:34:55

想学习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, cs
       mov ds, ax
       mov es, ax
       call DispStr                    ; 调用显示字符串例程
       jmp $              ; 无限循环
DispStr:
       mov ax, BootMessage
       mov bp, ax                    ; es:bp = 串地址
       mov cx, 16                    ; cx = 串长度
       mov ax, 01301h            ; ah = 13, al = 01h
       mov bx, 000Ch              ; 页号为0(bh = 0) 黑底红字 (bl = 0Ch,高亮)
       mov dl, 0
       int 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.coloradmin.cn/o/1105144.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学习笔记】RabbitMQ-6 消息的可靠性投递2

参考资料 RabbitMQ官方网站RabbitMQ官方文档噼咔噼咔-动力节点教程 文章目录 十一、队列Queue的消息属性11.1 具体属性11.2 自动删除11.2 自定义参数11.2.1 **Message TTL** 消息存活时间11.2.2 **Auto expire** 队列自动到期时间11.2.3 **Overflow behaviour** 溢出行为11.2.4…

编程基础-C++入门到入土知识手册

C基础知识 C 语言教程一 、简介 环境设置C11 新特性文本编辑器C 编译器 二、程序结构编译 & 执行 C 程序三、 基本语法C 的令牌&#xff08;Token&#xff09;1分号 ;2注释3标识符4关键字5 C 中的空格 四、数据类型整数类型浮点类型void 类型 C primer Plus黑马C语言简介C语…

创建node、vue、以及@vuecli 和 vue-cli 的区别

创建node、vue、以及vue/cli 和 vue-cli 的区别 创建vue的五种方法 参考 如何创建一个vue项目&#xff08;详细步骤&#xff09; 方法一&#xff1a;vue init webpack 项目名&#xff08;vue-cli2.x的初始化方式&#xff09; vue init webpack blog 创建项目(blog 是项目名…

Vuex:一个强大的状态管理模式

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

故障诊断实验台 | PT300mini微型振动故障实验台

很多同学因为实验数据而被困扰&#xff0c;目前数据来源有3方面&#xff0c;公开实验数据集、校企合作项目实际数据、自制实验台数据。 公开实验数据集被用烂了&#xff0c;容易被审稿人质疑&#xff1b; 校企合作项目实际数据缺少故障数据&#xff0c;数据需保密&#xff0c;…

抖音同城榜上榜策略

随着抖音的普及&#xff0c;越来越多的人开始使用抖音来展示自己的才华、记录生活或者做推广。但是&#xff0c;如何让自己的短视频在抖音同城榜上榜&#xff0c;成为本地热门话题呢&#xff1f;下面&#xff0c;我将分享一些实用的策略&#xff0c;帮助您实现这一目标。 抖音同…

.NET验收

验收通用模板&#xff1a; 1.该资料计划看几天&#xff1f; 实际看了几天&#xff1f; 计划7天&#xff0c;实际看了9天 2.多少天一篇总结&#xff1f;将总结列出来。 一周总结一篇。 博客地址:3.这个资料相较于之前资料共同的内容是什么&#xff1f; 不同的(需要强化学习)…

“数聚瑞安 · 创新未来”中国·瑞安第四届创新创业大赛角逐火热,初赛结果已公布!

“数聚瑞安 创新未来”中国瑞安第四届创新创业大赛得分排行榜上&#xff0c;各参赛队伍的分数不断被刷新。由中共瑞安市委、瑞安市人民政府主办&#xff0c;瑞安市科学技术局承办&#xff0c;华为&#xff08;浙南&#xff09;工业互联网创新中心、瑞安华数广电网络有限公司、…

分布式服务的链路跟踪 Sleuth Micrometer zipkin OpenTelemetry

由来 在分布式应用开发过程中&#xff0c;一个请求会调用多个应用&#xff0c;会有那种需要知道各个应用之间耗时的想法&#xff0c;这样可以知道一个调用的总时长以及各个组件之间的处理耗时&#xff0c;后面方便定位问题。 理论依据 起源于 google dapper 论文 https://re…

记录:移动设备软件开发(layout六大布局)

目录 前言layoutLinearLayout线性布局LinearLayout的常用属性Android&#xff1a;orientation属性Android&#xff1a;gravity属性 TableLayout表格布局TableLayout的常用属性collapsecolumns属性shrinkcolums属性stretchcoumns属性 RelativeLayout相对布局Absolute Layout绝对…

Python学习笔记——基本类型、函数、输入和输出

食用说明&#xff1a;本笔记适用于有一定编程基础的伙伴们。希望有助于各位&#xff01; 基础类型 常用的简单类型有str&#xff0c;float&#xff0c;int&#xff0c;bool等&#xff0c;常见的复杂数据类型有function&#xff0c;type&#xff0c;list&#xff0c;tuple&…

SAP_MMPV创建自动任务每月底自动开下月物料账

SAP_MMPV创建自动任务每月底自动开下月物料账 1、MMPV设置变式 输入事务代码MMPV进入物料开账界面&#xff0c;输入公司代码&#xff0c;注意开账月份与时间等都不输入&#xff0c;点击保存按钮&#xff0c;如下图。 输入变式名称、描述&#xff0c;将变式设置为“仅用于后台…

程序的编译(预处理操作)+链接

目录 前言&#xff1a; 1. 程序的翻译环境和执行环境&#xff1a; 2. 详解编译链接 翻译环境&#xff1a; 1.预处理&#xff1a;&#xff08;文本操作&#xff09; 2.编译&#xff1a; 3.汇编&#xff1a; 4.链接&#xff1a; 运行环境 预处理详解 &#xff1a; #defi…

Hash Join(PostgreSQL 14 Internals翻译版)

一阶段哈希连接&#xff08;One-Pass Hash Joins&#xff09; 散列连接使用预构建的散列表搜索匹配的行。下面是一个使用这种连接的计划的例子&#xff1a; 在第一阶段&#xff0c;哈希连接节点1调用哈希节点2&#xff0c;哈希节点2从其子节点提取整个内部行集&#xff0c;并将…

Python 面向对象初步

目录 1 面向对象和面向过程区别1.1 面向过程(Procedure Oriented)思维1.2 面向对象(Object Oriented)思维1.3 面向对象思考方式1.4 面向对象和面向过程的总结 2 对象的进化3 类的定义4 __init__构造方法和__new__方法5 实例属性和实例方法5.1 实例属性5.2 实例方法5.2.1 实例对…

【学术】知云文献及划词翻译软件(XTranslator)的安装及使用

文章目录 一、知云文献翻译1.1 知云文献翻译是什么1.2 知云文献翻译下载地址1.3 知云文献翻译安装1.4 知云文献翻译使用1.4.1 使用方法1.4.2 解除限制1.4.3 软件特点1.4.4 翻译PDF 1.5 Windows版使用文档1.6 解锁所有翻译引擎 二、知云划词翻译(Xtranslator)2.1 知云划词翻译(X…

C# Winform编程(5)菜单和菜单组件

菜单和菜单组件 添加菜单编辑菜单 添加菜单 将MenuStrip控件拖拽到Form窗体顶部添加菜单 编辑菜单 添加菜单项&#xff0c;编辑菜单属性等功能。 右键单击已添加的菜单项可以弹出右键菜单&#xff1a; 可以设置菜单图标&#xff0c;使能菜单&#xff0c;显示快捷键、转换菜…

提高三维模型数据的几何坐标精度需要采取方法浅析

提高三维模型数据的几何坐标精度需要采取方法浅析 要提高倾斜摄影三维模型数据的几何坐标精度&#xff0c;可以采取以下方法&#xff1a; 选择合适的倾斜角度&#xff1a;倾斜角度对于几何坐标精度具有重要影响。过小的倾斜角度可能导致图像中特征点不足以提供准确的位置信息&…

10数据库-基础

四、数据库 15、MySQL 数据库优化 SQL优化 mysql优化 一、避免不走索引的场景尽量避免在字段开头模糊查询&#xff0c;会导致数据库引擎放弃索引进行全表扫描。尽量避免使用not in&#xff0c;会导致引擎走全表扫描。尽量避免使用 or&#xff0c;会导致数据库引擎放弃索引进行…

[opencv]图像和特征点旋转

本来说这是很简单的一个内容&#xff0c;图像旋转只需要使用opencv中自带的旋转函数即可完成&#xff0c;但是最近在做特征点旋转的时候发现使用内置rotate函数给图像旋转90度&#xff0c;再用getRotationMatrix2D得出的旋转矩阵对特征点旋转&#xff0c;画出来的特征点位置全部…