0172-执行内核文件

news/2024/9/20 21:25:18/文章来源:https://www.cnblogs.com/jiangbo4444/p/18299663

环境

  • Time 2022-11-11
  • WSL-Ubuntu 22.04
  • QEMU 6.2.0
  • NASM 2.15.05

前言

说明

参考:https://os.phil-opp.com/multiboot-kernel/

目标

将编写好的内核可执行文件,制作成 ISO 镜像,然后从 QEMU 启动。

建立文件目录

isofiles
└── boot├── grub│   └── grub.cfg└── kernel.bin

grub.cfg

set timeout=0
set default=0menuentry "my os" {multiboot2 /boot/kernel.binboot
}

制作 ISO

安装依赖:apt-get install grub-pc-bin grub-common xorriso

制作镜像

root@jiangbo12490:~/git/game# grub-mkrescue -o os.iso isofiles
xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.Drive current: -outdev 'stdio:os.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data,  233g free
Added to ISO image: directory '/'='/tmp/grub.or37ho'
xorriso : UPDATE :     294 files added in 1 seconds
Added to ISO image: directory '/'='/root/git/game/isofiles'
xorriso : UPDATE :     298 files added in 1 seconds
xorriso : NOTE : Copying to System Area: 512 bytes from file '/usr/lib/grub/i386-pc/boot_hybrid.img'
ISO image produced: 2475 sectors
Written to medium : 2475 sectors at LBA 0
Writing to 'stdio:os.iso' completed successfully.

启动命令

qemu-system-x86_64 -cdrom os.iso -curses

打印OK

总结

创建了一个内核可执行程序 kernel.bin,并且制作成 ISO 镜像,在 QEMU 中运行。

附录

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

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

相关文章

TDA4VM-SK配置与应用杂谈

TDA4VM-SK配置与应用杂谈硬件信息:SK-TDA4VM 用户指南处理器SDK Linux边缘AI文档配置文档:SK-TDA4VM处理器SDK Linux文档-getting_started,详细说明了如何配置,下面是简要步骤:物料准备: SK板,microUSB串口线,USB camera,HDMI/DP显示器,≥16GB的内存卡,网线和局域网…

(技术贴)英雄无敌1——永久记住所学魔法——手把手教你怎么修改

喜欢英雄无敌1的朋友都知道,在1中英雄学习魔法只是记忆了该魔法的使用次数,一旦次数使用完,该魔法就会从魔法书中消失!而要想再次使用该魔法,就得去具有该魔法的魔法公会再次学习一次,自然这很不符合魔法学习的实际情况。我这里将其修改为,学过的魔法永远记住!但是学过…

连接mysql时提示is not allowed to connect不允许连接

1. 进入mysql服务器,mysql -u root -p 登录myql服务,SELECT user, host FROM mysql.user;看到root只允许localhost本机连接 2. 执行use mysql; update user set host = % where user = root; 再次查看user表,root允许所有ip连接 3.刷新缓存FLUSH PRIVILEGES; 以上仅供参考…

LCA 补充

LCA 之前学废了,回来补。 倍增版 首先是最常见的倍增版子,思路好理解,按倍增记录 \(father\),然后同时往上跳。 注意最后跳到的是那个 \(x \ne y\) 的,也就是 \(lca\) 的儿子,所以最后要返回父亲。 #include<bits/stdc++.h> using namespace std; const int N = 5e…

读人工智能全传11人工智能会出什么错

读人工智能全传11人工智能会出什么错1. 人工智能会出什么错 1.1. 一些报道是公正合理的,不过坦白地说,大部分报道都愚蠢得无可救药 1.2. 一些报道颇有知识性和引导性,而大部分则是杞人忧天式的恐吓 1.3. 滑稽的报道迎合了大众对人工智能的“终结者式恐惧” 1.3.1. 我们创造出…

dotnet 理解 X11 的 24 位或 32 位色深窗口

本文记录在 X11 里面的窗口与颜色的位色深关系本文属于学习 CPF 框架博客,感谢小红帽的 CPF 框架。更多关于 CPF 框架,请参阅 https://gitee.com/csharpui/CPF 本文这里的 24 色或 32 色表示的是用多少个 bit 表示一个像素的颜色。比如常见的 24 色就是 RGB 三个颜色分量,一…

【C++】const与constexpr

const 用于声明该变量是一个常量。 可以用来声明成员函数,表示该函数不会改变成员变量。 const修饰指针的场景稍微复杂点,可以通过循环的方式记忆:constexpr constexpr 它是在 C++ 11 被引进的,它的字面意思是 constant expression,常量表达式。它可以作用在变量和函数上。…

ubuntu搭建docker harbor实录

一、搭建前提 一台2C2G ubuntu 18.04.6版本主机 配置好网络、ntp,关闭ufw二、搭建步骤 1、安装docker engine、docker-compose等 设置 Docker 的存储库# Add Dockers official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 …

【攻防技术系列+漏洞复现】Fastjson①前置知识 -- fastjson怎么用?

主题任务 在IDEA中新建一个maven项目,并引入fastjson依赖工具 IntelliJ IDEA 2020.3 JDK 11一、前置知识 1.1 fastjson怎么用? fastjson是啥百度就有,看了之后不熟悉的人还是会一脸懵逼,我们可以通过以下这个demo来快速学会使用fastjson。 我们分为以下几个步骤来进行: (…

24暑期第七次训练C组

目录ABCDEFGHIJ A 生活大爆炸版石头剪刀布 纯模拟,保证AB之间能对应就行。 给出较朴素做法。 bool caiquan(int,int);int main(void) {int n,x,y,ans1 = 0,ans2 = 0,stp;cin >> n >> x >> y;vector<int> a(x);vector<int> b(y);for(auto &i…

4-电子商务物理与供应链管理

4.1 电子商务与物流 4.1.1 物流及物流标准化 1.物流的概念 根据我国国家标准在GB/T18345—2006《物流术语》中的表述,物流(Logistics):“物品从供应地向接受地的实体流动过程。根据实际需要,将运输、储存、配送、包装、装卸搬运、流通加工、信息管理等基本功能实施有机结合…

比赛获奖的武林秘籍:06 5分钟速通比赛路演答辩,国奖选手的血泪经验!

本文主要介绍了大学生电子计算机类比赛和创新创业类比赛常见雷点、要点和精髓,并对路演的定义和基本概念进行了说明,结合自身经历对路演答辩常见技巧和评委问题进行了总结。比赛获奖的武林秘籍:06 5 分钟速通比赛路演答辩,国奖选手的血泪经验! 摘要 本文主要介绍了大学生电…