Ard Biesheuvel včera navrhl kompilovat jádro jako PIE (Position Independent Executable) pro relokovatelné (relocatable) jádro. Výhodou je lepší bezpečnost a možnost lepšího KASLR (Kernel address space layout randomization). Nevýhody PIE jsou o něco větší velikost a pomalejší běh. Proto bylo v minulosti PIE zamítnuto. Například u Pythonu je binárka s PIE v průměru asi o 6 % pomalejší.
Ještě malá odbočka, proč je potřeba relokovatelné jádro, tedy jádro, které může startovat z libovolné adresy v paměti. Může to být jedna z podmínek dané architektury, například EFI. Také to umožňuje kexec, tedy spustit jiné jádro bez nutnosti restartu. Používá to například Odroid Petitboot. Relokovatelné jádro je asi o 10 % větší, ale po startu se tato paměť navíc uvolní.
Při překladu jádra jako PIE bez GOT (Global Offset Table) Ard zjistil, že jádro se zvětší jen o 0,2 % (clang) nebo 0,5 % (gcc) a snížení výkonu při testu hackbench vůbec nezaznamenal. Tak uvidíme, jestli se myšlenka jádra kompilovaného jako PIE prosadí. Zatím je proti Peter Arvin.
(zdroj: phoronix)