On Fri, Aug 16, 2019 at 05:00:09AM +0300, Alexey Shabalin wrote: > пт, 16 авг. 2019 г. в 04:48, Dmitry V. Levin : > > > > On Fri, Aug 16, 2019 at 02:39:47AM +0300, Alexey Shabalin wrote: > > > пт, 9 авг. 2019 г. в 18:48, Igor Vlasenko : > > > > > > > > On Fri, Aug 09, 2019 at 05:23:59PM +0300, Sergey Bolshakov wrote: > > > > > Вовсе необязательно (обращаю внимание на flags): > > > > > > > > > > $ cat /proc/sys/fs/binfmt_misc/aarch64 > > > > > enabled > > > > > interpreter /usr/bin/qemu-aarch64.static > > > > > flags: F > > > > > offset 0 > > > > > magic 7f454c460201010000000000000000000200b700 > > > > > mask ffffffffffffff00fffffffffffffffffeffffff > > > > > > Я подготовил сборку qemu-user-static-binfmt с добавлением флага F. > > > Но у меня возникли сомнения: > > > > > > 1) Что именно делает этот флаг "F"? загружает этот бинарник в > > > пространство ядра? > > > > Нет, только открывает этот файл и помечает его таким образом, > > что при попытке записи в него возникает ошибка ETXTBSY. > > > > > когда он это делает, при регистрации или в момент > > > обращения к бинарному файлу другой архитектуры? > > > > При регистрации. > > > > > Дело в том, что в этом пакете находятся конфиги для всех возможных > > > архитектур, и мне бы не хотелось при загрузке компьютера принудительно > > > загружать в память все эти бинарники qemu-*static. > > > > Загрузка этих бинарников в память будет происходить не при регистрации, > > а каждый раз при запуске, как и без "F". Но файл, из которого будет > > производиться загрузка, не будет открываться каждый раз заново. > > В частности, при обновлении qemu без явной перерегистрации будут > > использоваться старые интерпретаторы, зарегистрированные ранее. > > > > > Зачастую компьютер разработчика используется и для повседневной работы > > > с Интернет, почтой и т.п. > > > > Неизвестно, что на самом деле опаснее, интернет с почтой в хост-системе > > или произвольный код в чруте. > > > > > 2) Насколько это безопасно? Понятно, что этот пакет нужен > > > разработчикам, работающим со сторонними архитектурами. Этот пакет не > > > входит в установку по-умолчанию, кто его устанавливает, тот знает > > > зачем. Хотелось бы удобства - установил, и работает везде, хоть в > > > системе, хоть в контейнере. НО не получит ли разработчик на aarch64 > > > сервере работающие вредоносные программы для x86_64? > > > > Получит. "F" даёт именно такой эффект - бинарники от других архитектур > > будут запускаться и в контейнерах, где нет qemu. Если зарегистрировать > > интерпретаторы для всех поддерживаемых архитектур с "F", то можно будет > > исполнять бинарники подо все эти архитектуры в контейнерах, где нет qemu. > > > > Вопрос, зачем может быть нужно регистрировать интерпретаторы для всех > > поддерживаемых архитектур сразу? > > Может и не зачем, но сейчас устроенно именно так, все static файлы в > одном пакете, все конфиги для регистрации в другом пакете, при > установке которого отрабатывает filetrigger и регистрирует все > архитектуры. Если сделать множество отдельных пакетов, на спек qemu > будет смотреть еще больнее. Можно открыть новые горизонты боли, заглянув, например, в http://git.altlinux.org/gears/g/..git?p=gcc-defaults.git;a=blob_plain;f=gcc-defaults.spec > Основной вопрос, добавлять ли еще флаг "F"? Я не вижу никакой пользы в том, чтобы регистрировать интерпретаторы для всех архитектур сразу, и тем более не вижу пользы в том, чтобы регистрировать всю эту массу ещё и с "F". Если же регистрировать интерпретаторы выборочно, то имеет смысл добавить "F". -- ldv