Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将OS文件(带有自定义引导程序)转换为可以刻录到CD或由USB引导的iso文件?

如何将OS文件(带有自定义引导程序)转换为可以刻录到CD或由USB引导的iso文件?
EN

Stack Overflow用户
提问于 2020-12-28 11:32:20
回答 1查看 953关注 0票数 1

我已经完成了我的简单操作系统,我想测试它在一个真正的硬件(PC),而不是bochs或qemu。我的操作系统有一个自定义引导程序和一个内核,我使用cat将它们连接到一个bin文件中。但是我花了几个小时找出一种将bin文件转换为可引导的iso文件的方法,但每次都失败了。根据OSDev.org的说法,我认为我需要使用genisoimage(mkisofs)来进行转换,但我不知道这个命令到底是如何工作的,我最终输出了一个iso文件,但这个文件不工作。(我想我使用了错误的命令,有人能给我解释一下吗?)

我尝试过的其他方法:

  1. 直接将bin文件刻录为CD。错误:缺少使用System.
  2. Convert和其他windows平台软件将bin文件操作到ISO的操作。错误:无法启动。即使在qemu也不行。

另外,什么是El-Torito??

EN

回答 1

Stack Overflow用户

发布于 2020-12-28 19:47:40

当CD被引导时,固件检查CD中的元数据中的“引导目录”。这是每种计算机都包含(最多)一个条目的条目列表;这样就可以创建一个用于80x86BIOS和80x86UEFI(以及PowerPC和Sparc和.)的CD。

对于80x86,有4种不同类型的条目:

  • UEFI.条目的其余部分告诉固件FAT文件系统映像的起始扇区和大小。UEFI根据将体系结构转换为文件名(例如,对于80x86,它可能需要文件\EFI\BOOT\BOOTX64.EFI).

),从FAT文件系统中找出它想要的文件

  • “无仿真,80x86 BIOS”。条目的其余部分告诉固件启动扇区和引导加载程序的大小。引导加载程序可以是任意大小的(最多可达639 KiB);BIOS告诉您的“设备编号”(在dl中)将用于CD驱动器本身,因此您可以使用它从同一个磁盘加载更多的东西。

  • “硬盘仿真,80x86 BIOS”。条目的其余部分告诉固件磁盘映像的起始扇区和大小。磁盘映像应该有一个带有BPB和分区/s的MBR,一个活动分区指向操作系统的引导加载程序在其分区开始时的位置。在这种情况下,BIOS将创建一个假的“设备0x80”(来自MBR中BPB中的信息),并将任何真正的硬盘驱动器的设备编号搞乱(例如,第一个将是“设备0x80”的硬盘驱动器将变成“设备0x81”,等等)。请注意,这是低效的,因为CD上的扇区为2048字节,但BIOS将模拟512字节扇区,因此每次您尝试读取512字节扇区时,BIOS实际上将读取2048字节,并将75%的数据抛出“错误”。这也是非常恼人的(试图挤压任何好的512个字节是不可能的)。它主要用于过时的垃圾(如MS)。

  • “软盘仿真,80x86 BIOS”。条目的其余部分告诉固件磁盘映像的起始扇区和大小。磁盘映像应该在第一个扇区有一个带有BPB的引导加载程序。在这种情况下,BIOS将创建一个假的“设备0x00”(来自MBR中BPB中的信息),并为任何真正的软盘驱动器乱搞设备编号。就像硬盘仿真一样,这是低效的,甚至更“烦人”(因为它也限制了操作系统的大小,而软盘的大小却远远不够),而且只适用于过时的垃圾。

处理CD的最佳方法是编写两个新的引导加载程序(一个用于“无仿真,80x86 BIOS”,另一个用于UEFI);然后使用您喜欢的任何工具在CD上创建适当的结构(例如,genisoimage带有-no-emul-boot选项,用于"no,80x86BIOS“引导加载程序,另一个用于UEFI似乎不存在的其他选项!)。

请注意,编写自己的实用程序“更聪明”是很容易的。您可能希望创建一个FAT文件系统(用于UEFI)和一个ISO9660文件系统(用于操作系统的其他文件-- help/docs、驱动程序等),但是大多数工具都不会为您创建FAT文件系统,而且两个文件系统(FAT和ISO9660)中的文件都可以使用相同的扇区(这样,相同的文件出现在两个文件系统中而不需要花费两倍的磁盘空间)。这样的东西可能只需要你花一周的时间自己写(而且你会学到很多关于CD和ISO9660的东西,反正你最终也会学到的)。相关文档(用于从CD、ISO9660文件系统、FAT文件系统和UEFI启动)都很容易在网上获得。

,什么是El?

El是“可引导CD-ROM规范”的另一个名称,它描述了CD上使其可引导所需的结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65483051

复制
相关文章
GHO文件转iso文件能启动安装
言:目前网上流传的gho转iso教程都是用ultraiso替换gho文件的方法,但是这种方法经过实际使用存在两个缺陷,
全栈程序员站长
2022/09/14
4.1K0
GHO文件转iso文件能启动安装
生成initramfs_windows引导文件
在制作Initramfs文件系统之前,我先简单介绍下linux各文件系统。linux支持多种文件系统类型,包括ext2,ext3,vfat,jffs,
全栈程序员站长
2022/09/22
8220
硬盘直接引导启动Manjaro Linux iso
其中isofile改为 某个非系统盘里的iso文件路径。 使得grub2生效:
斯武丶风晴
2019/07/02
7.7K0
Ubuntu2Go制作使用和资料说明(LinuxtoGo)
起源:windowstogo或win2go,便携式windows操作系统。邮件、私信、留言等经常收到此类消息,统一回复制作流程。
zhangrelay
2019/01/23
3.9K0
通过汇编实现引导程序
通电后,主板上BIOS或者UEFI,会加电自检(检查硬件有没错误),加载bootloader(执行程序)到内存 bootloader被写死在磁盘上第一个扇区,启动后被加载到内存的一个固定的位置。BIOS去这个位置执行第一条指令。
lovelife110
2021/01/14
1.2K0
通过汇编实现引导程序
Clover 引导器.配置助手[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127932.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/25
1.4K0
Archlinux基本安装
访问下载页面,根据您想要的启动方式,获取 ISO 文件或网络启动映像,以及相应的GnuPG签名。
vivi
2021/12/09
2K0
微信小程序源码,「添加到我的小程序」提示,带有详细引导步骤,支持自定义导航栏。
warning注意:通过 npm 安装,可能会遇到在开发者工具报错 “渲染层网络层错误” 。可忽略。在真机上可以正常运行。
用户5997198
2022/03/28
4.4K1
微信小程序源码,「添加到我的小程序」提示,带有详细引导步骤,支持自定义导航栏。
苹果来了,送苹果了
大家圣诞节快乐,我没有苹果,也没有苹果手机,更没有苹果电脑,但我有黑苹果,今天呢,趁着节日,送大家一款黑苹果技术,将苹果系统装到自己的电脑上。
公众号guangcity
2019/09/20
1.7K0
苹果来了,送苹果了
【杂货】制作checkra1n启动盘思路
2) 将你的系统备份制成一个live cd/dvd其名叫 custom.iso 的ISO文件.
zby1101
2020/08/05
1.8K0
【杂货】制作checkra1n启动盘思路
U盘克隆/复制/对拷/拷贝工具,不妨试试这款:WinImage
近期有个需求,要从一个U盘对拷出一个完全一样的U盘内容,带一些隐藏文件及系统引导功能。并且U盘的容量有如下两种情况:
崔文远TroyCui
2021/12/27
5.2K0
U盘克隆/复制/对拷/拷贝工具,不妨试试这款:WinImage
转 | Linux大文件(比如ISO)的拆分、合并、校验
大文件在实际应用传输过程中往往经历拆分、合并的过程。文件在多次传输后有可能会损坏,在使用前可以进行完整性校验。
create17
2019/03/12
4.3K0
Golang源码分析 | 程序引导过程
可以看到程序的Entry point为 0x45cd80, 对应分段的地址范围,可以算出来程序0x45cd80在.text段。添加断点,可以看到 Entry point: 0x45cd80 对应的内容
windealli
2023/10/13
2490
Golang源码分析 | 程序引导过程
使用uboot引导应用程序
uboot默认是支持执行应用程序的,就像引导内核一样,我们也可以自己写一个应用程序,让uboot启动时引导。
嵌入式与Linux那些事
2022/12/01
9080
使用uboot引导应用程序
如何在USB驱动器中安装CentOS 7
您有没有想过在USB笔式驱动器中安装CentOS 7的便携式实例? 您可能不知道它,但您可以轻松地将CentOS 7安装在USB驱动器中,就像将其安装在物理硬盘驱动器或虚拟环境中一样。
子润先生
2021/06/16
5.7K0
微信小程序--自定义新用户引导页面
效果展示 Demo代码 wxml <view class='page-cont' wx:if="{{isTiptrue}}"> <view class='top'> <image src=
海轰Pro
2021/04/12
1.3K0
微信小程序--自定义新用户引导页面
如何将Pandas数据转换为Excel文件
将数据导出到Excel文件通常是任何用户阅读和解释一组数据的最优先和最方便的方式。通过使用Pandas库,可以用Python代码将你的网络搜刮或其他收集的数据导出到Excel文件中,而且步骤非常简单。
玖柒的小窝
2021/11/01
7.9K0
点击加载更多

相似问题

从磁盘/cd/usb引导

24

如何将引导加载程序放入CD

21

将引导程序和内核转换为iso?

34

将OS文件转换为ISO文件(MikeOS)

11

使用自定义引导加载程序创建可引导的ISO映像

26
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档