Strange booting problem
jd1008
jd1008 at gmail.com
Tue Jun 30 21:28:25 UTC 2015
I already explained to you
1. The disk is partitioned using fdisk.
2. I cleared the 446 bytes to nulls.
3. None of the partitions have a boot signature.
You comment "bug" is not a word for "something I don't understand" or
"something I don't like."
is so totally irrelevant to what I have already reported wrt the drive
at hand and the BIOS at hand.
Such comments are sounding more and more like coming from an a*al attitude!!
On 06/30/2015 03:21 PM, Gordon Messmer wrote:
> On 06/26/2015 07:35 PM, jd1008 wrote:
>> I have been googling and read wikis.
>> None of them really explain clearly
>> If
>> 1. a drive has no bootable partitions and
>> 2. the boot code in the 1st 446 bytes does not exist (all nulls)
>> then
>> how does bios decide it is not bootable, move on to the next in the
>> sequence?
>
> I didn't get a satisfactory answer from wikis, either, so I did an
> experiment. I loaded a bootable image on a flash drive and connected
> that to a virtual machine as a USB disk. I also added a bootable ISO
> to the VM. I configured the VM to boot from the USB drive first, then
> the ISO.
>
> The VM successfully booted from the flash drive. I backed up the MBR.
> # dd if=/dev/sdb bs=512 count=1 of=sdb.mbr
>
> Then I zeroed 446 byes of the flash drive.
> # dd if=/dev/zero bs=446 count=1 of=/dev/sdb
>
> The VM halted when trying to boot, so I restored the boot sector and
> wiped the boot signature.
> # dd if=sdb.mbr of=/dev/sdb
> # dd if=/dev/zero bs=2 count=1 seek=255 of=/dev/sdb
>
> With the boot signature wiped, the VM would boot from the ISO.
>
> Based on testing, we can conclude that at least SeaBIOS will treat a
> boot sector with all nul bytes as a valid boot sector and run it. It
> will skip a boot sector if the boot signature in that MBR is not present.
>
> Note that as I previously mentioned, the BIOS doesn't use the boot
> flag in the partition table. A "bootable" partition is ONLY relevant
> to DOS type boot loaders, which use it to identify the C: drive from
> which they will boot. It does not matter to BIOS whether a disk has
> any bootable partitions or not.
>
>> For bios to spend an eternity looking for the boot code on a
>> non-bootable
>> drive tells me it is a bug, even if implemented according to specs
>> (thus the
>> specs themselves would be at fault).
>
> It's not looking for boot code. It identifies a valid boot sector,
> where validity is determined by the presence of a boot signature, and
> runs that code.
>
> I'm not an expert on BIOS, but the extent to which I've read
> documentation is fairly clear and consistent. Execution begins at a
> specific memory location where BIOS is expected to reside. BIOS
> locates a boot device (possibly a hardware ROM, or a disk) and
> continues execution of that code. That code loads a kernel into
> memory and continues execution of that code. It's not described as a
> stack. Nothing indicates that control will return to the previous
> chunk of code if it finishes or does nothing.
>
> "bug" is not a word for "something I don't understand" or "something I
> don't like."
>
More information about the users
mailing list