Here is how it works:
The software (in our example: the Linux kernel) is developed and compiled;
A hash (i.e., a digital signature) of the binary is computed and "integrated"
into the hardware (no way to modify it);
The hardware only execute the binary if its hash matches the one in the
hardware.
The manufacturer can perfectly comply with the terms of the GPLv2, in
particular, let the user access the source code and modify it... but the
modified software will refuse to run on the device she bought. The GNU GPLv3
legally prohibits that practical blockage.