In short, there are two concepts of addresses, LMA (Linear Memory Address) and VMA (Virtual Memory Address). To elegantly declare the boot header of the kernel, we need to put it to a specific location.
However, to prevent manual copy during the execution, we then need to ensure LMA is same as the VMA..