First, there are truly ancient PC BIOSes (like the one on my 12 year
old motherboard). And then there's the BIOS interface on more modern
motherboards.
On the old ones, the boot order in the BIOS makes reference to "C:"
in the actual BIOS. I don't understand the significance of that, except
that on my old system, it appeared to limit my choices. The BIOS in that
case, rotated through a set of "canned" boot configurations. I use
to twiddle that adjustment, until something booted, and did not investigate
further. I think I may have even used a boot manager, such as "Boot Magic",
so I could hop from one drive to another, with that BIOS interface limitation.
*******
Modern motherboards have two dimensions of boot order. Device type,
and then priority within a specific device type.
floppy
CD
hard drive (sub-menu HDD3, HDD1, HDD2 perhaps)
network
So one level of menu setting, chooses the basic order. The order I
demonstrated there, puts the removable media first, and if the removable
media slots are empty, then the system goes to hard drives. If my
hard drive died a horrible death, then I'd find the system with a
"PXE" message and a spinning cursor, as the computer searches the
network for some kind of "bootp" or equivalent storage device.
In my example, if HDD3 is present, the BIOS loads the boot code contained in
sector 0. If the boot code in sector 0 chooses to look for an
"Active" partition, where the boot flag is set to x80, then the boot
code can then vector to a particular partition. If the boot code
was installed by Linux, further stages of booting can identify
the boot partition, without an active flag (so an active flag doesn't
absolutely have to be present - it's an "ecosystem" thing). GRUB has
multiple stages for things like that, and partitions can even be recognized
by GUID before booting starts (so Linux can find what it needs to boot,
with fewer limitations - the boot loader searches until it finds the
GUID it wants). Using GUID for identification is a PITA, when
it comes to cloning or fooling around, and I'm not really a fan of stuff
like that. (Clone gets new GUID, boot is screwed, can't find tool to
change GUID, hit head on keyboard, etc. Get bruise on forehead.)
Since sector 0 is key to these kinds of decisions (the first 440 bytes
of code hide in there), if you wanted to understand what was going on,
that would be one place to look. But the other observation I might make,
is that you could be failing in some BIOS setting, and getting the BIOS
to "look" at the disk you want.
Also, on a modern motherboard, go into the BIOS and start by disabling
the "full screen logo" function. After saving the new setting and exiting,
you'll be able to look at the BIOS text display. In the BIOS text display,
at the bottom of the screen, it will mention certain function keys,
as being recognized in the BIOS. For example, on my Asus motherboard,
it might be <Del> to enter the BIOS, and <F8> to have the popup boot
menu appear. On my Asrock, it might be <F2> to enter the BIOS, and
<F11> for the popup boot menu.
The popup boot menu, on modern systems from the last five years or so,
allows the user to make a "temporary" boot disk selection. For example,
I have two disks on my computer, and if I'm too lazy to enter the BIOS
and make a "permanent" boot disk selection, I can use the popup boot
menu F key, and it presents a menu of storage devices. It's up to me
to know they're ready to boot. (For example, my DVD drive is listed,
but the BIOS doesn't check for media. This is actually a good thing,
since sometimes I wait until the popup boot menu is presented, before
putting media in the tray. The popup boot menu is also "storage safe",
so sometimes I unplug USB keys right after that menu appears.) If I
select a device which is *not* ready for booting, then the BIOS might
just head off in the woods and grab a disk I wasn't expecting. But if
I keep my head on my shoulders, the popup boot is very useful. Since I
may reconfigure drives quite regularly, I can never be sure what the
BIOS contains for it's "permanent" boot selection, and bypassing it
with the popup is great. The value selected in the popup, is not
recorded or saved for later.
(Example of a popup boot menu, drawn by the BIOS, in reaction to appropriate F key)
http://docs.oracle.com/cd/E19127-01/ultra27.ws/820-6772/images/7-2-Boot-Device-Network-Menu.gif
When the BIOS starts in text mode (you've disabled full screen logo),
the text may stay there for as little as one second. My laptop does
that, and it's ultra-annoying. You can press the "Pause" key,
timing it very, very carefully, to snag the BIOS before the
text goes away. This will allow you to carefully read the screen,
and determine whether you want F8 or F11 or some other choice.
Since the world doesn't like standards, then the choice is going
to vary all over the place. And if your motherboard is an older
one, you'll be "entering" the BIOS and making a "permanent" choice
instead (because there is no popup feature). And if your motherboard
is 12 years old, it's going to take you 30 minutes, to figure out
what the nomenclature in there means with respect to your drives.
When I see the BIOS refer to "C:", I assume it means "some hard drive".
The manual of course, doesn't say a word on the subject of that menu
choice
*******
If you wanted to read the contents of sector 0 on the hard drive,
get a copy of "dd" port.
http://www.chrysocome.net/dd
For example, in command prompt...
dd if=\\?\Device\Harddisk1\Partition0 of=C:\downloads\mbrdisk1.bin bs=512 count=1
If I ran diskmgmt.msc, and listed my disks, the first disk is Harddisk0, the
second disk is Harddisk1. If you can't identify the disks by their size, you
can use diskmgmt.msc from Start, to refresh your memory as to which is which.
"dd" accepts raw disk references (such as the "input file" specification in
my example). I used a filename storage option for the "output file" specification,
so my single sector gets stored in a file.
Then, I'd need a hex editor, to open "mbrdisk1.bin" and make sense of its
contents. The first 440 bytes would be boot code, then there are four
entries for the four primary partitions, and the signature bytes AA55
at the end.
The "dd" command also supports "seek" and "skip" options. With those
options, I can ask "dd" to go to the end of a 1TB disk, and snip out
an 8MB chunk, so I can look at, say, RAID metadata, or dynamic disk
information placed there by Windows. Using carefully constructed "dd"
commands, it's possible to make a horrible "disk editor" from the thing.
(I've done that before, snipping small sections out of a disk while
looking for stuff.)
Since "dd" can also write to disks, it can make repairs, or it can ruin
things. Be very careful while using it. I once made a copy/paste error
(copy buffer had wrong line of stuff in it), and erased the first
gigabyte of a disk using it. I'm now a bit more careful, when
flinging commands around in the command prompt window.
In Windows 7, if you wanted to run "dd", chances are you need to go
to Start, type "cmd" in the search box, and when the "cmd" entry appears,
right click on it and select "Run as Administrator". That "elevates"
the command prompt, and allows commands like "dd" to run.
"dd" isn't perfect, because Windows won't allow you to do just
about anything. (Using "dd" in Linux, and running as Admin, you can
erase anything you want.) The Windows port of "dd", won't allow overwriting
C: for example. If you find the details for a particular partition
are not listed in "dd --list", it means Windows isn't going to
let you mess around anyway. But with some care, you can achieve
a great many things, with the usage of that program. So now all
you need, is a hex editor.
With regard to partition naming, "Partition0" references the
entire raw disk. "Partition1" means start at what the partition
table indicates, is the starting sector of the first partition.
That's why, my hard drive with four primary partitions, will list
Partition0, Partition1, ... Partition4 as available options.
The first one, treats the entire disk as a raw device, and that
is necessary to get at sector 0.
*******
If you want to look at the four primary partition table entries, you
can use PTEDIT32 from PowerQuest. Since Partition Magic is no longer
a commercial product, they offer that utility for download. As in "dd",
you must "Run as Administrator" when using PTEDIT32.exe.
ftp://ftp.symantec.com/public/english_us_canada/tools/pq/utilities/PTEDIT32.zip
PTEDIT32 doesn't show you the 440 bytes of boot code in Sector 0. It
instead, interprets the 64 bytes right after that. And tells you
which partition has the boot flag set, which matters to the
Windows boot loader. In Windows 7, if you don't "Run as Administrator"
on this tool, you'll get "Error 5". But no English explaining it's
a permissions problem
http://www.goodells.net/dellrestore/files/dell-tbl.gif
Have fun (and don't break anything
),
Paul