Také to umožňuje kexec, tedy spustit jiné jádro bez nutnosti restartu.
Todle je nesmysl - kdyz chci pres kexec spusit jine jadro, tak to jine jadro mohu prelozit s jinou load adresou tak aby nekolidovala se stavajicim jadrem. Relokovatelne jadro je potreba, kdyz chci pres kexec spoustet to stejne jadro, jako prave bezi.
Tak můžete to udělat, jak říkáte (CONFIG_PHYSICAL_START), ale musíte překládat jádro. Jednoduší je mít jádra relokovatelná a pak jde třeba aktualizovat (teda z jednoho jádra na jiné) přes kexec. Běžná distribuční jádra jsou totiž relokovatelná.
https://hostperl.com/kb/tutorials/kernel-upgrades-with-kexec-and-livepatch
Asi kazdy z nas vnima psany text jinak, ale ja kdyz ctu:
Proč je potřeba relokovatelné jádro? Umožňuje kexec, tedy spustit jiné jádro bez nutnosti restartu.
Tak to chapu tak, ze relokovatelne jadro je nutna podminka k tomu, abych mohl spustit z jednoho jadra jine, coz proste neni pravda, protoze k tomu staci, aby obe jadra mela neprekryvajici se adresy. Naopak relokovatelne jadro je podminka k tomu, abych z jadra mohl znovu spustit to same jadro, ktere prave bezi.
Tak umožňuje to podstatně jednodušeji, nebo ne?
V tom pripade v te vete melo byt "zjednodusuje" a ne "umoznuje".
Pro ty, co si nechtějí kompilovat svoje jádra, ani jiná možnost není.
Toto take neni pravda, napriklad pro scenar, kde se kexec pouziva pro spusteni dump/crash kernelu z normalniho kernelu je zahodno tuto cast pameti rezervovat pri bootu, aby sance, ze se neposkodi, byla co nejvetsi. Kernel pak uz muze byt predkompilovany s tou konkretni rezervovanou adresou.
Stejne tak pokud dodavam XIP kernel, je uz v dobe prekladu jasne, z jake adresy pobezi a jako distributor musim tak jako tak dodavat 2 jadra. Prakticky se to resi tak, ze se updatuje pasivni region, pak se spusti a pokud je vse OK, tak se flashne i ta druha kopie. Pokud ne, tak se udela fallback.
kexec je v jadre dele nez podpora pro relokovatelny kod a samozrejme se to v praxi pouziva i bez toho.