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. Вопрос, зачем может быть нужно регистрировать интерпретаторы для всех поддерживаемых архитектур сразу? -- ldv