《ORANGE’S:一个操作系统的实现》读书笔记(三十八)尾声(三)

news2024/10/2 8:37:43

这篇文章是尾声的第三部分,也是《ORANGE’S:一个操作系统的实现》读书笔记的最后一篇文章,本篇文章记录如何将我们开发的OS安装到真实的计算机(建议在虚拟机中进行)。

将OS安装到真实的计算机

其实安装到真实的硬盘和安装到硬盘映像操作起来是差不多的,因为在Linux下面硬盘也是文件。下面我们就具体来操作一下。

准备工作

  • 一台计算机,我这里使用的是虚拟机VirtualBox。做之前最好做一个快照,这样如果出现了问题可以快速恢复。
  • 一张软盘。这里可以直接使用我们的软盘映像 fd.img。

我们的安装过程将分三部分:

  1. 安装Linux(包含为硬盘分区)。
  2. 在Linux中编译我们的源代码。
  3. 将我们的操作系统安装到某个分区。

安装 Linux

安装Linux这里就不再进行说明了,发行版很多,选择一个你喜欢的就可以,不过在安装的时候选择尽量少的组件,只要能保证可以正常编译我们的源代码就可以了。我这里选择的是Ubuntu,这是一个比较流行的发行版。

这里需要说明的一点是,虚拟机中的硬盘需要挂载在IDE下,因为我们的程序只识别该硬盘接口。

编译源代码

编译的过程和之前一样,这里就不再进行说明。需要注意的只有一点,就是首先查看一下分区情况,确认安装的分区是哪个,并且更改 boot/include/load.inc中的ROOT_BASE。

下面是正式的安装过程了,再次强调,一定要小心谨慎,不要破坏了重要的数据。

  • 用 dd 将 hdboot.bin 写入 sda5 的引导扇区。
sudo dd if=boot/hdboot.bin of=/dev/sda5 bs=1 count=446 conv=notrunc
sudo dd if=boot/hdboot.bin of=/dev/sda5 seek=510 skip=510 bs=1 count=2 conv=notrunc
  • 将hdldr.bin和kernel.bin打包如cmd.tar。
tar vcf inst.tar hdldr.bin kernel.bin
  • 将inst.tar用dd命令写入硬盘。
sudo dd if=inst.tar of=/dev/sda5 seek=`echo "obase=10;ibase=16;(\`egrep -e '^ROOT_BASE' boot/include/load.inc | sed -e 's/.*0x//g' | sed -e 's/^M//g'\`+\`egrep -e '#define[[:space:]]*INSTALL_START_SECT' include/config.h | sed -e 's/.*0x//g' | sed -e 's/^M//g'\`)*200" | bc` bs=1 count=`ls -l inst.tar | awk -F " " '{print $5}'` conv=notrunc
  • 在安装Ubuntu时,grub已经安装上了,只不过是grub2,和书上使用的已经不一样了,也可以使用上一篇文章的命令安装GRUB Legacy。我们可以修改/boot/grub/menu.lst,加入如下几行:
title    Orange'S
rootnoverify (hd0,4)
boot

这样启动时就不必输入命令了,直接选择Orange’S一行即可。

好了,安装完毕,开始启动。先从软盘启动,之后重启,就可以从硬盘启动了,待出现grub画面时,选择Orange’S,回车,系统就启动起来了。

这里需要说明一下,本篇文章记录的内容主要是将书上的内容记录下来了,因为我在虚拟机中操作并没有成功,不知道是不是时间原因书中的有些代码和现在的Linux操作系统无法配合,从网上也没有找到具体的操作方法,所以就先把它记录下来,希望可以和大家一起探讨。

欢迎关注我的公众号

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

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

相关文章

Linux--文件链接

目录 1.建立软连接 2.建立硬链接 3.什么是软链接 Linux中软链接的应用场景 4.什么是硬链接 5.文件与目录的硬链接数 6.软链接与硬链接的区别 用户无法对目录建立硬链接,可以建立软连接。 在Linux中文件的链接有两种:1.软连接 2.硬链接 1.建立软…

3656A/B/D矢量网络分析仪

3656A/B/D矢量网络分析仪 3656A/B/D矢量网络分析仪适用于无线通信、有线电视、教育及汽车电子等领域,可用于对滤波器、放大器、天线、电缆、有线电视分接头等射频元件的性能测量。该产品采用WINDOWS操作系统;具有误差校准功能、时域功能、夹具仿真器功能;具有对数幅…

【Linux】Linux进度条小程序(包含色块实现)

我们再将Linux常用工具与命令都学会了之后, 设计进度条这个小程序可以比较好的帮助我们进行一定程度练习与巩固 目录 预备知识:回车换行:缓冲区: 进度条:准备工作:主题思路:代码实现&#xff1a…

理想架构的Doherty功率放大器理论与仿真

Doherty理论—理想架构的Doherty功率放大器理论与仿真 参考: 三路Doherty设计 01 射频基础知识–基础概念 ADS仿真工程文件链接:理想架构的Doherty功率放大器理论与仿真 目录 Doherty理论---理想架构的Doherty功率放大器理论与仿真0、Doherty架构的作用…

Open CASCADE学习|圆柱螺旋线绘制原理探究

1、圆柱螺旋线绘制原理 在OCC中,圆柱面的参数方程为: 设P为(x0,y0,z0),则 xx0r*cos(u) yy0r*sin(u) zz0v 但u、v之间有关系时,此方程表达为圆柱螺旋线,u、v之间为线性关系时是等螺距螺旋线&#xff0…

unity 装饰器模式(实例详解)

文章目录 简介1. **组件装饰器(Component Decorators)**:2. **游戏对象特效装饰器(GameObject Effects Decorator)**:3. **输入处理装饰器(Input Handling Decorators)**:4. **性能优化装饰器(P…

蓝牙----蓝牙协议栈Host层

蓝牙协议栈----Host层 蓝牙物理层基本信息链路层的状态机进入连接态的步骤主动扫描与被动扫描链路层通信模式 蓝牙地址蓝牙设备地址蓝牙标识地址蓝牙接入地址 蓝牙广播信道管理蓝牙数据信道跳频 蓝牙协议栈Host层包括PHY、LL、HCL层,注重关注PHY物理层和LL链路层。 …

微服务入门篇:Eureka注册中心(作用,搭建Eureka客户端和服务端)

目录 1.提供者与消费者2.Eureka的作用3.搭建EurekaServer1.配置服务端2.配置客户端3.复制实例操作4.服务拉取 1.提供者与消费者 ①服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务) ②服务消费者:一次业务中,调用其它微…

嵌入式学习-C++-Day3

嵌入式学习-CDay3 一、思维导图 二、作业 1.设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函数、析构函数和拷贝构造函数。 #inclu…

UBUNTU中NGINX的负载均衡和环境搭建

1.准备三台ubuntu版本的虚拟机 2.开始安装,下载,解压,以及编译nginx所需的环境依赖 这里需要注意我们创建了一个新的目录 /home/nginx,所以在编译中记得更改 然后再编译过程中我们会发现提示无法编译,原因是缺少c语言的插件&…

Java 字符串 06 练习-字符串拼接、反转、金额转换(黑马)

代码: //import java.util.Scanner; public class practice{public static void main(String[] args) {int arr [] {1,2,3,4};String str arrToString(arr);System.out.println(str);}public static String arrToString(int [] arr){if(arrnull){return "&q…

让B端管理软件既美观又实用的解决方案来了

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 让B端管理软件既美观又实用的解决方案来了 在当今数字化时代,B端管理软件已…

每日一题——LeetCode2859.计算K置位下标对应元素的和

方法一 枚举法: 通过不断地将目标数值与 1 进行按位与操作,并根据结果判断最低位是否为 1,从而统计其中包含的 1 的个数。 如果1的个数等于K就加上该值。 var sumIndicesWithKSetBits function(nums, k) {function countOnes(num) {let cou…

谷歌企业开发者如何申请邓白氏码?

邓白氏编码是具有唯一性的9位数标识符,由 Dun & Bradstreet 分配给各组织,用于验 证商家,一个公司可免费申请一个。没有邓白氏编码,则不能注册单位开发者账号。 申请和接收邓白氏码是无需支付任何费用的,全程免费…

09.Elasticsearch应用(九)

Elasticsearch应用(九) 1.搜索结果处理包括什么 排序分页高亮返回指定字段 2.排序 介绍 Elasticsearch支持对搜索结果排序,默认是根据相关度算分来排序 支持排序的字段 keyword数值地理坐标日期类型 排序语法 GET /[索引名称]/_sear…

MVC架构模式与三层架构

提示:博客中的图片来源于动力节点在B站的视频讲解。 MVC架构模式与三层架构 一、三层架构二、MVC(model view controller)1.MVC 框架的工作流程(1)JSP Servlet javabean实现MVC。(2)SSM&#…

力扣1035. 不相交的线

动态规划 思路: 思路同 力扣1143. 最长公共子序列假设 dp[i][j] 为 nums1 长度 i 和 nums2 长度 j 能够组成不想交线的个数;可知 dp[0][j] 0(nums1 长度为 0 不能组成线);同理 dp[i][j] 0;转移方程&…

python就业如何?和C++相比该选择哪个更好?

python就业如何?和C相比该选择哪个更好? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家&#xff…

202410读书笔记|《半小时漫画青春期》——成为自己世界的星星,这才是最要紧的事儿

202410读书笔记|《半小时漫画青春期:心理篇》——成为自己世界的星星,这才是最要紧的事儿 一、一到考试就焦虑,怎么办?二、以前情绪挺淡定,现在咋动不动就爆发?三、追星那么开心,为啥还要我小心…

CHS_07.2.2.4_3+调度算法:多级队列调度算法

CHS_07.2.2.4_3调度算法:多级队列调度算法 多级对列调度算法 接下来 多级对列调度算法 看一个图你就明白了 如果一个系统采用多级对列调度算法 那么 这个系统会按照进程的类型设置多个对列 并且给不同的对列设置不同的优先级 举个例子 分为系统进程 交互式进程以…