Ubuntu Boot跳转到Loader踩坑

 最近在研究自制操作系统,看了田宇的《一个64位操作系统的设计与实现》 。书写的很好,我的踩坑也很多!

当我写到Loader加载程序检测跳转时一直没法成功加载Loader

以下是我的一些踩坑,可供参考

一、厂商名称

因为打算参考在此基础上写一些东西,我便改了作者的最初的名字’MINEboot’,超过了8位。后来发现FAT12文件系统引导扇区结构长度是固定的,不能改变。

所以即便自己取名时也要取成8位,不够的用空格代替

同样,像后面的文件系统类型,8位,要写成‘FAT12 ’,空格不能少

二、挂载命令

书上的挂载命令是

mount ../bochs-2.6.8/boot.img /media/ -t vfat -o loop

因为权限问题,我使用sudo,但是还是没法使用,会报错

image-20230901133025731

首先要自创/media/文件,可能还需要root权限

我还分了一个img区,即/media/img

sudo mkdir /media/img

还是同样报错

我上网查询,发现另一个命令

sudo mount -o loop ./bochs-2.6.8/boot.img /media/img

这样就可以挂载不报错了,大家可以试试这个,作者用的centos 6 ,不知道是不是这个原因

-t vfat 系统可以自己识别就可以不写了,自动识别可能正确性会更高一点,保险一些

然后总的命令就是

sudo mount -o loop ./bochs-2.6.8/boot.img /media/img
sudo cp loader.bin  /media/img
sudo sync
sudo umount /media/img

然后就成功运行了

48Y6NWIK{`X5EU{1D`FU2TK

彩蛋

因为这个东西困扰了我很久,顺便补充一些

1、更改boot.asm文件后记得重新生成bin文件

不然还是原来的

生成命令

nasm boot.asm -o boot.bin

2、boot.img格式化

挂载出错的时候,我出现过loader.bin已经在boot.img中了。这个时候重新dd写入还是会有些问题。删除img重新生成又会导致会新出现/dev/loop。所以格式化很好用

sudo mkfs.ext4 boot.img

ok,这就是跳转踩坑了

最近在学自制操作系统,会不定期更新笔记,很详细,很适合初学小白。希望大家多多支持哦~

Enid1107/MicroHex64: Reading Notes on "Design and Implementation of a 64-bit Operating System" and Optimization and Improvement Based on it (github.com)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值