Nix хотел $ORIGIN прямо в ядре — получил замену загрузчика через eBPF (fzakaria.com)
$ORIGIN — это токен, который говорит загрузчику Linux искать зависимости относительно собственной папки; ld.so поддерживает его уже много лет. Nix хотел, чтобы то же самое умело ядро, — чтобы пакеты перестали жёстко зашивать пути /nix/store. В итоге получилась замена загрузчика через binfmt_misc и eBPF, переопределяющая только PT_INTERP, так что /proc/self/exe по-прежнему указывает на настоящий бинарник.
Быстро всплыла загвоздка: для этого нужны root-права, поскольку в непривилегированном пространстве имён это пока не работает. И один из комментаторов уже собрал похожий трюк в userspace вручную ещё до того, как это стало функцией ядра.
Войдите, чтобы сохранить