They also failed to mention MS continually works (legally and illegally) to make it hard or impossible for Linux to work with hardware.
For example, this is a quote from some smart Linux user complaining about ASUS laptops.
Quote:
...because Asus, in their "wisdom," use Microsoft's ASL compiler when preparing the BIOS. This is a PoS that doesn't quite comply with the ACPI specification everyone else, including the free OSen, uses and leaves you with a broken DSDT on anything other than Windows. You can, on any reasonable operating system, disassemble the DSDT and recompile it with Intel's compiler to give you a DSDT, loadable at boot-time (or, if you're feeling really brave, grafted into the BIOS image), that works. It's rather complicated as MS's little offering quietly accepts syntax that Intel's doesn't. I'm not sure if this is the case with the Eee range as I don't own one, but it's certainly the case with desktop boards. For example:
# acpidump -dt ./acpi.asl
acpidump: RSDT entry 3 (sig OEMB) is corrupt
Whoops. Looks like I'm SOL and JWF if I want to disassemble and try to fix this PoS with a corrupt root system description table. Let's try anyway:
# iasl ./acpi.asl
[...many errors]
./acpi.asl 5189: Scope Name (G0T3, Package (0x07)
Error 4094 - ^ syntax error
Maximum error count (200) exceeded
ASL Input: ./acpi.asl - 9627 lines, 331801 bytes, 1519 keywords
Compilation complete. 201 Errors, 2 Warnings, 0 Remarks, 9 Optimizations
Suffice to say that the corrupt table is probably the cause of most of these errors and, even if I were to go through the code and try to fix the syntax errors, I very much doubt it would compile with bits missing.
The results? See for yourself:
acpi0: <033109 on motherboard
acpi0: [ITHREAD]
acpi0: Power Button (fixed)
acpi0: reservation of fee00000, 1000 (3) failed
acpi0: reservation of ffb80000, 80000 (3) failed
acpi0: reservation of fec10000, 20 (3) failed
acpi0: reservation of 0, a0000 (3) failed
acpi0: reservation of 100000, cff00000 (3) failed
ACPI HPET table warning: Sequence is non-zero (2)
Oh, and just in case anyone thinks I'm blowing smoke about them using MS's asl compiler, here's the XSDT:
XSDT: Length=76, Revision=1, Checksum=31,
OEMID=033109, OEM Table ID=OEMXSDT, OEM Revision=0x20090331,
Creator ID=MSFT, Creator Revision=0x97
Entries={ 0xcffb0290, 0xcffb0390, 0xcffb0400, 0xcffbe040, 0xcffb94e0 }
Creator ID MSFT. Says it all.
This is an Asus M3A78 Pro. So, Asus, either you're conspiring with MS to shut out alternative OSen or you're incompetent. Which one is it?"