[HTC Wildfire S] no.human.being:
Not by S-OFFing, but by bundling a proprietary (non-GPL) bootloader with a GPL operating system. This is not allowed. HTC is basically creating one contiguous product called "Firmware for WFS". This one contains components that are licensed under GPL (e. g. an Android kernel, which "inherited" the GPL license from the Linux kernel it is based upon) as well as components that are not licensed under GPL (e. g. the HBOOT).

Now the GPL is what you call a "viral license". What it means is that when you combine GPLed code with "other code" (e. g. custom code you wrote), the entire resulting product

must

be GPL licensed as well, otherwise you violate copyright law. So basically everything that "touches" GPL code either becomes illegal or GPL-licensed itself, causing the license to spread like an infection until, at some point in time, all the code that exists has somehow "touched" GPLed code and is thus GPL licensed itself.

Of course this is intentional. The GPL was designed this way in order to "take over the world". It will spread to more and more software products until, at some point in time, this license will become inevitable. On its way, it will gradually "destroy" all other (proprietary) software license models, after all that's the ultimate goal of the FSF.

I'm sure they have noticed, but they may have reason not to sue Google or handset manufacturers. You know Google's web browser Chrome, right? You also know Mozilla Firefox, right? The two are competitors and Google is evil and spyware and Firefox is the good and open and free software thing right?

No, they're not competitors! It's just "pseudo competition". Google actually has an extremely big financial investment in the Mozilla Foundation and plays a key role in most of their economic decisions. ;)

In order to compile a kernel, you need a cross compilation toolchain and you'll need the GNU Autotools, so yes, you most likely need Linux to do it. Do build a kernel you grab the sources. They are usually in a tarball (*.tar archive, it's like *.zip just that tar is tailored for and much more common on Unix than zip :D ) that you need to extract.

Then you fire up a shell, "cd" into the directory where your kernel sources were extracted and do.

make ARCH=arm menuconfig

This enables you to configure the kernel. There's lots of stuff that you can do here. For most things I only have a very rough idea of what they're actually doing, but there's really a lot that can be customized and optimized. :D

The most important thing to configure is the cross compiler prefix. When building with CodeSourcery toolchain, put the value "arm-none-linux-gnueabi-" here. Then you have to configure the right processor (ours is "MSM 7227", however, most "vanilla" Linux kernels only support "MSM 7201" and "MSM 7230", then go for the lower as the 7227 is downwards- but not neccessarily upwards-compatible, Android kernels should have explicit support for 7227 though). Also on an embedded system you usually want to disable loadable module support. When you've finished configuring the kernel, exit and save the configuration when asked, then put the toolchain into your $PATH.

Then you can build the kernel using the following command.

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

Usually this will result in compile errors that you have to look up on the net how to fix. You might have to change something in the kernel source or you might have to adjust your configuration. :D

Once the compile gets through without errors, you find the kernel binary in "/arch/arm/boot/zImage" relative to your kernel directory.

Finally you have to get the "mkbootimg" utility and package the kernel and initrd together into a bootable image. The syntax is as follows.

./mkbootimg --kernel /path/to/your/kernel/zImage --ramdisk /path/to/your/initrd -o boot.img

This will create an image file with the name "boot.img". You can boot it by booting your phone into Fastboot mode, then doing "fastboot boot boot.img". This assumes that the Fastboot utility is in your $PATH.

No I haven't. I don't even have the tools to open the torx screws, let alone do I know how to operate OpenOCD (that's the software for the JTAG thing). I could try contacting the embedded devs at our university, but they seem to be extremely busy most of the time. :D

No I won't provide a dump. Logically it will contain all the information that you have on your phone. Even if I'd only dump the Radio section, you'd still all get my IMEI and device serial number and CID and everything on your device.

The Radio also has "correction values" for the tranmitter's output to compensate for variations in the electronic components used, so that the transmitter output is always the same. So when you'd flash my Radio, you'd get my correction values and then some of your phones might send much weaker signal than they're allowed to, easily losing GSM coverage, while others might blast out much more than they're allowed and fry your brain when you hold it to your ear. :D

The Radio firmware is designed for the exact device it's running on and no other.