Complete beginner question: why do I have to pass an extra kernel binary when running e.g. a Debian image on an emulated Raspberry Pi? So far all the documentations state that the image files are the equivalent of a mass storage device, so if not the bootloader but at least a kernel should be present in them, no? If Qemu simulates a CPU, shouldn't this somehow even require a start from the very beginning, i.e. from the Reset Vector?
Older versions of QEMU did not emulate the Raspberry Pi but a "Versatile PB" board.
Therefore a custom "Versatile" kernel is running inside QEMU , the userland of Raspberry Pi images works somewhat fine on top of it (YMMV) - as the whole point of the Linux kernel is to provide this very abstraction.