1 |
Richard Yao posted on Wed, 20 Jun 2012 18:16:23 -0400 as excerpted: |
2 |
|
3 |
> 3. How does getting a x86 system to boot differ from getting a MIPS |
4 |
> system or ARM system to boot? Does it only work because the vendors made |
5 |
> it work or is x86 fundamentally harder? |
6 |
|
7 |
I can answer this one. x86 is harder at the bootloader stage, but in |
8 |
turn easier, or perhaps simply different, at the kernel and kernel device |
9 |
interface level. |
10 |
|
11 |
Consider, most MIPS and ARM systems ship with a specific set of basic |
12 |
devices, configured to use specific IO addresses, IRQs, etc, and that's |
13 |
it, at least to get up and running (USB devices, etc, may be able to be |
14 |
plugged in, but they're not normally needed for boot). If you've been |
15 |
keeping up with the kernel (say via LWN, etc), this has been one of the |
16 |
big deals with the ARM tree recently, as until now each "board" had its |
17 |
own hard-coded kernel config directly in the tree, and it was getting |
18 |
unmanageable. They're switching to "device tree", etc, allowing the boot |
19 |
loader to feed the kernel a file with this information at boot time, thus |
20 |
allowing a whole bunch of different boards to boot off the same shipped |
21 |
kernel, while at the same time getting the explosion of individual board |
22 |
files out of the kernel tree. This is a BIG deal on ARM and similar |
23 |
embedded archs, but doesn't affect x86 (either 32-bit or 64-bit) at all. |
24 |
|
25 |
Meanwhile, on x86, the system must be prepared for end-user switch-out of |
26 |
pretty much everything. memory, storage (consider floppy, hard drive, |
27 |
optical disk either direct or el-torito, USB stick, etc, all bootable and |
28 |
all end-user changable!), even quantity and speed of CPUs, and the |
29 |
firmware BIOS (or replacement) must cope with that and be able to boot |
30 |
off it. Even back in the 386 era when everything was jumper-configured, |
31 |
users could still change pretty much everything out, other than the mobo |
32 |
itself. Now days, it's even MORE complex, as most of these devices can |
33 |
be configured in dozens or hundreds of mode combinations via "plug-n- |
34 |
pray", and they often don't /have/ a default -- they **MUST** be so |
35 |
configured in ordered to be operable for the intended use. Sure, the |
36 |
BIOS CAN leave some of it for the kernel to do, but other bits, not so |
37 |
much, as otherwise, how does the kernel even get loaded -- the BIOS must |
38 |
pick one of the many boot options, configure it (as well as the CPU and |
39 |
the system between storage and the CPU, storage chipset, memory, etc) at |
40 |
least well enough to read in the boot loader and/or kernel. None of |
41 |
that's necessary on ARM, etc, because (pretty much) everything there's a |
42 |
totally arbitrary-as-shipped config, nothing to dynamically negotiate and |
43 |
get working before the kernel or secondary bootloader (after the BIOS) |
44 |
can even work! |
45 |
|
46 |
-- |
47 |
Duncan - List replies preferred. No HTML msgs. |
48 |
"Every nonfree program has a lord, a master -- |
49 |
and if you use the program, he is your master." Richard Stallman |