|
本帖最后由 sizhou 于 2020-3-29 10:20 编辑
U盘启动最后是BIOS通过int 13H 读写数据,必须指定DL=00还是80确定软盘、硬盘。
BIOS考虑什么因素来软盘还是硬盘,比较复杂。不同BIOS厂家不同时段都不同。
- BIOS不会尝试引导任何超过512MB的USB设备–在系统POST期间,USB盘的LED甚至不会闪烁,因为从未发出读取请求!
- BIOS不会尝试引导任何超过1GB的USB设备。
- BIOS将XXX MB以下的任何USB设备视为USB-ZIP设备,而XXX MB以上的任何设备均视为USB-HDD
- BIOS会将任何USB设备视为USB-ZIP,并始终将其作为软盘设备进行引导
- BIOS会将任何USB设备视为USB-HDD,并始终将其作为硬盘设备启动
- BIOS将引导没有MBR或分区表的USB-FDD格式化设备,但不会引导USB-ZIP或USB-HDD设备
- BIOS将引导任何在 MBR中只有一个分区表条目的设备作为软盘设备,但是将引导具有两个分区表条目的设备作为USB-HDD设备。
- BIOS设置菜单可用于使BIOS始终根据用户选择将USB设备视为“可移动”设备(USB-ZIP)或“固定磁盘”设备(USB-HDD)。
- BIOS查看Volume Boot记录以确定设备的类型(例如,如果看到MSWIN4.1,则将其视为USB-ZIP设备)。
- 分区参数-如果分区的每个磁道具有32hd和16个扇区,则将其视为USB-ZIP,如果63个扇区则将其视为硬盘。
- 如果端圆柱为1023(最大),则将其视为硬盘。
其实不管BIOS认为U盘是 软盘还是硬盘,我们对U盘可以做一定的处理,让其适应BIOS启动要求。 结合网上学习的知识,U盘可以设置模拟USB Zip盘,就可以设置MBR ,同时兼容软盘、硬盘启动,没什么影响。
USB ZIP
此选项在驱动器的第一个扇区中创建一个主引导记录和分区表。写入驱动器的启动记录代码将适合作为软盘驱动器启动MS-DOS或FreeDOS。此外,将使用64hd \ 32sectors的驱动器几何形状(如果可能)。某些ZIP驱动器规范将分区表中的前三个条目定义为未使用,并使用了第四个分区表条目。
当BIOS从设备作为USB-ZIP设备引导时,它不会将第一个扇区MBR代码(LBA 0)加载到内存中-而是BIOS将卷启动记录代码直接加载到内存中,并通过读取来跳转到它分区表中的单个条目以查找分区的开始位置(因此,USB-ZIP驱动器只能包含一个分区条目)。然后BIOS映射USB驱动器为int 13H DL = 0调用 但它总是会加小号分区起始地址的任何访问。因此,一个BIOS INT 13h的DL = 0调用读取柱面0,磁头0 1扇区(LBA 0)将实际读取分区的第一个扇区。实扇区1(LBA地址0)根本无法访问。例如,假设USB-ZIP驱动器具有一个带有单个条目的分区表。分区表条目指示分区从扇区32开始,然后BIOS将扇区32加载到内存中并开始在其中执行代码。任何尝试读取扇区的尝试从该点开始通过软盘Int 13h DL = 0调用(或Extended Int 13h调用)CHS 0 \ 0 \ 1(LBA 0)实际上将读取扇区32。如果引导代码尝试读取CHS 0 \ 1 \ 1 (LBA 32),它将实际上读取位于CHS 0 \ 2 \ 1(LBA 64)的扇区,因为BIOS始终会将分区起始地址添加到任何访问中。这样,位于分区开头的启动代码与没有MBR或分区表的软盘上的启动代码相同。
一些BIOS不支持这种类型的引导,如果看到有效的分区表和MBR,它们可能总是将USB-ZIP设备引导为硬盘(即,映射USB设备以响应Int 13h DL = 80h调用)。USB-ZIP设备和USB-HDD设备之间的差异非常小,都具有主引导记录和有效的分区表,但是USB-ZIP设备应包含分区引导代码,该代码希望从软盘引导驱动器”(DL = 0),而USB-HDD设备应包含分区引导代码,该代码应从“硬盘驱动器”(DL = 80h)引导。许多现代的BIOS包含一个特殊的菜单选项来更改此行为。
怎么做Zip格式,下面就是方法,建议用1G以下的U盘,超过1G的盘是否可行,没有条件测试。大家可以帮忙测试下,以下操作会破坏U盘数据,请备份好数据。
虚拟机安装Ubuntu,
- 插入您的USB闪存盘
- 打开终端窗口,然后输入sudo su
- 键入apt-get install syslinux(如果您没有安装syslinux)
- 键入apt-get install mtools(如果尚未安装mtools)
- 键入fdisk -l列出可用磁盘(从列表中记下您的闪存驱动器)
- 键入mkdiskimage -4 / dev / sdx 0 64 32(用实际的闪存驱动器号替换x) 请结合上面显示的盘 确定U盘是sda /sdb/ sdc???
- 该过程完成(花了一段时间)后,键入fdisk -l并确认闪存驱动器的新几何形状“ 64磁头,32个扇区”
做好的U盘可以用Windows系统带的格式化随便格,但是用别的软件格式可能会破坏上面的设置64H 32S,
最后简单的用 BOOTICE 设置U盘MBR 为NT5.X或6.X,PBR设置为你用的PE 引导方式,为了兼容BIOS和uefi,建议U盘为fat16 fat32,分区ID是1C/1E,激活分区。
还忘记了说了U盘用单分驱,不用量产多分驱。盘也是单分区。 上面有些文字读的不通顺,是英文翻译过来的,将就看吧,
U盘本质是LBA设备,靠LBA定地址读写数据。U盘提供随意的CHS值,对BIOS启动是否有影响,值得思考?
转一些网上写的,可能不对
BIOS在从USB驱动器的第一个扇区加载数据(代码)并运行该代码之前,必须决定如何将该设备“映射”到所有引导代码使用的标准int 13h BIOS调用。如果BIOS确定USB设备是软盘设备,则BIOS将响应“软盘驱动器” int 13h请求(即DL = 00)。如果BIOS将设备视为硬盘类型,它将响应“硬盘” int 13h请求(DL = 80h)。如果BIOS将USB设备视为ZIP设备,它将以软盘(DL = 00)响应访问请求,但它将转换任何请求,以便对扇区1(LBA0)的请求将返回该设备的PBR,对扇区2的请求将在策略路由之后返回该扇区,依此类推。因此,对于任何实模式(DOS)操作系统,
没有标准的BIOS应该如何“决定”如何映射USB设备。不同的BIOS使用不同的决策树。有些甚至不理会,只是假设所有USB存储设备都是一种类型(例如HDD)。一些旧的BIOS假定所有USB设备的大小都超过1.44MB,则它们都是ZIP设备-否则为FDD。如果您使用Int13h Standard CHS调用,则某些仅执行ZIP转换/调整,而如果您调用Extended Int13h中断例程,则不转换扇区地址!
BIOS必须决定的另一件事是,当操作系统使用标准的Int 13h 02/03调用从UFD上的Cylinder 5,Head 1,Sector 1请求“读”或“写”时,该怎么做。UFD没有真正的头部或圆柱体!因此,BIOS必须将此CHS“地址”转换为逻辑块地址(LBA)。但是如何知道一个磁道中有多少个扇区(SPT)或一个圆柱体中有多少个磁道(HPC)?一种常见的方法是查看MBR分区表中的Ending Head和Sector值。由于(直到Vista)所有分区都在整个圆柱体的末尾结束,因此End Head值显示每个圆柱体有多少个磁头,End Sector值显示每个磁道有多少个扇区。然后,当操作系统要求提供CHS地址5 1 1时,BIOS可以使用这些值来计算LBA地址。其他BIOS仅假定63 SPT和255 HPC。这在现代BIOS中尤其如此,因为Vista和Win 7 Diskpart现在可以在任何起始地址和任何结束地址创建分区,并且不遵循旧的DOS / Win98 / XP“规则”,即在磁道的开头和结尾处开始分区在圆柱体的末端分隔。每个磁道的扇区数和每个磁头的磁头数称为“驱动器几何形状”,可能会导致很多问题。对于某些较旧的BIOS,默认最大值为每缸240个Heads,这是很常见的。在轨道的开始处的起始分区和在圆柱体的末端处的终止分区的数量。每个磁道的扇区数和每个磁头的磁头数称为“驱动器几何形状”,可能会导致很多问题。对于某些较旧的BIOS,默认最大值为每缸240个Heads,这是很常见的。在轨道的开始处的起始分区和在圆柱体的末端处的终止分区的数量。每个磁道的扇区数和每个磁头的磁头数称为“驱动器几何形状”,可能会导致很多问题。对于某些较旧的BIOS,默认最大值为每缸240个Heads,这是很常见的。
因为在IBM PC上首次引入int 13h磁盘调用时,软件工程师没有想到您的磁盘可能大于500MB(这太疯狂了!),所以他们设计了int 13h接口只能将其扩展到最大每磁道63个扇区中的1024个柱面乘以16磁头(磁盘驱动器怎么可能有16个以上的磁头?)。随着磁盘大小的增加和磁盘的智能化,必须重新定义int 13h“标准”。每次重新定义BIOS时,都必须对其进行更改,其中某些更改要好于其他更改!当磁盘驱动器的容量超过8GB时,必须开发Extended Int 13h接口,现在甚至还不足以处理超过2TiB的现代驱动器(尽管4TiB磁盘只是只要最后一个分区的开始低于2TiB限制!)。整个过程真是太惨了,以至于整个磁盘都无法启动!
英文好的 可以阅读下面链接https://www.win.tue.nl/~aeb/linux/Large-Disk-10.html
https://www.win.tue.nl/~aeb/linux/Large-Disk.html
https://www.win.tue.nl/~aeb/linux/zip/zip-1.html
https://www.pendrivelinux.com/bo ... p-on-older-systems/
https://www.rmprepusb.com/home/r ... he-Override-options
|
评分
-
查看全部评分
|