Как Yocto генерирует эти файлы /etc/limits

Я работал над созданием настроенного образа ядра с использованием системы сборки Yocto. Теперь я хотел изменить файл /etc/limits/ перед тем, как начать сборку, но когда я пытаюсь найти этот файл «ограничения», не смог найти никаких ограничений имени файла и узнайте, что этот файл создается после сборки.

Я ожидал найти этот файл (до сборки) где-нибудь в метакаталоге, точно так же, как файл с именем «профиль» находится в каталоге poky.

Теперь мой вопрос заключается в том, как система сборки yocto генерирует этот файл /etc/limits, где я могу найти этот файл перед сборкой.


person Amit Singh Tomar    schedule 14.08.2013    source источник
comment
Может ли кто-нибудь перенаправить этот вопрос в нужное место, если он не здесь.   -  person Amit Singh Tomar    schedule 14.08.2013


Ответы (1)


Я проверил обе ветки Дэнни (Yocto 1.3) и ветку Дилана (Yocto 1.4), и в обеих этих версиях файл /etc/limits генерируется теневым пакетом. Поэтому я не уверен, почему вы говорите, что файл создается после сборки. В общем, когда мне нужно узнать, откуда взялся файл, я ищу сгенерированные бинарные пакеты. В вашем случае, после создания основной базы изображений, я выполнил этот быстрый поиск:

$ cd tmp/deploy/rpm
$ find . -name '*.rpm' | while read A; do $RPM -qpl $A | grep etc/limits; \
if [ $? -eq 0 ]; then echo $A; fi; done
/etc/limits
./armv7a_vfp_neon/shadow-4.1.4.3-r13.armv7a_vfp_neon.rpm

Это говорит мне о том, что файл лимитов исходит из теневого пакета. Когда bitbake выполняет задачу do_install() для этого пакета, собственный Makefile пакета устанавливает этот файл из шаблона, содержащегося в теневом пакете.

Есть два простых способа изменить содержимое этого файла в корневой файловой системе. Правильный способ — добавить слой с вашими пользовательскими изменениями: создайте bbappend для теневого пакета, добавьте свой собственный файл ограничений, используя SRC_URI = «file://limits», и добавьте метод do_install_append() для установки вашего настроенного файла после собственный метод установки пакета. Есть много примеров использования этой техники в poky.

Другой метод заключается в использовании команды постобработки.

ROOTFS_POSTPROCESS_COMMAND += "use_my_limits_file; "

где use_my_limits_file — это просто функция оболочки bash, которая устанавливает ваш пользовательский файл ограничений. См. insserv.bbclass poky для примера структуры использования ROOTFS_POSTPROCESS_COMMAND.

Надеюсь это поможет. Удачного взлома!

person challinan    schedule 15.08.2013