Я проверил обе ветки Дэнни (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