How can semi-proprietary software be based on the Linux Kernel?

If I understand correctly, the Linux Kernel is GPL, which means that if anyone bases anything on it, they have to also license the entire derivative work under the GPL, making anyone free to modify and/or redistribute their derivative work.

For example, all Android releases are based on the LK. Does that not mean that the whole release and all it’s components have to be also released under the GPL?

For example, most Android releases ship with propritery components. Does that not violate the GPL? Doesn’t the whole derivative work need to be released under the GPL?

With Ubuntu, for example, you have to download MPEG codecs post-installation. I assume that this is because MPEG is proprietary, and that MPEG’s license is therefore incompatable with GPL, so they can’t be included in the same release?

How do Android releases get around this?

For example, all Android releases are based on the LK. Does that not mean that the whole release and all it's components have to be also released under the GPL?

No - The Linux kernel is licensed under version 2 of the GPL which requires that the kernel stays open, but authors of third-party software that runs on top of it are free to choose their own license.

GPL version 3 is more restrictive.

With Ubuntu, for example, you have to download MPEG codecs post-installation. I assume that this is because MPEG is proprietary, and that MPEG's license is therefore incompatable with GPL, so they can't be included in the same release?

How do Android releases get around this?

Google will no doubt have done a deal with the rights holders.

I see. That clears up a lot of confusion, thanks!