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? Pro ty, co si nechtějí kompilovat svoje jádra, ani jiná možnost není.
9. 1. 2026, 23:18 editováno autorem komentáře
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.
Ano, kexec je v jádře od roku 2002 a realokovatelné jádro od 2007.
Tak jen snad jen kvůli velmi omezené paměti (embedded) mi dává smysl používat kexec, ale zároveň nepoužít realokovatelné jádro.
Nerozumím zprávičce.
Píše se z ní, že relokovatelné jádro je potřeba, aby fungoval kexec (jak cca. píše i diskuze výše), a aby šlo spustit na EFI. Oboje vím, že běžně funguje. Tak jaképak "včera navrhl kompilovat jádro jako PIE", v běžných distribucích už tak tedy dávno činí, ne? Co se tedy plánuje změnit? Default pro lidi, co si konfigurují jádro sami od nuly? Embedded systémy, kde se to tak zatím nedělá?
Tak PIE a realokovatelné jádro jsou různé věci. Nyní jsou všechna běžná distribuční jádra (možná kromě embedded) realokovatelná. Aby to bylo bezpečnější, je navíc navrženo, aby linker vytvořil PIE kód. To zatím není v žádném jádře, protože dřív to bylo zavrženo kvůli větší velikosti a menší rychlosti.
Realokovatelny nebo relokovatelny (presunutelny)? To jsou dve ruzna slova s ruznymi vyznamy jak v anglictine tak cestine. A vy odpovidate "realokovatelny" na dotaz s "relokovatelny"? Tak jsem trosku zmateny.