i don't know where the Kernel which is used by Yocto is stored.
Файл конфигурации poky/meta/conf/machine/include/qemu.inc
содержит следующие строки
# Use a common kernel recipe for all QEMU machines
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
Это указывает Bitbake искать рецепты ядра по путиpoky/meta/recipes -kernel/linux/
Теперь на этом пути вы увидите два рецепта
По задумке bitbake будет использовать linux -yocto _4.4.bb , т.е. ядро 4.4 будет собрано для машины qemux86. Это потому, что bitbake разработан так, чтобы отдавать предпочтение самой высокой версии рецепта.
I've decide to change the Kernel which is used by Yocto (as a learning exercise)
В конфигурационный файл, который я указал в начале этого ответа, можно добавить еще одну строчку
PREFERRED_VERSION_linux-yocto = "4.1%"
Добавление этой строки заставит bitbake использовать poky/meta/recipes -kernel/linux/linux -yocto _4.1.bb рецепт, то есть ядро 4.1 для qemux86.
Не используйте {}
как часть текста скрипта sh -c
(проблема аналогична описанной в принятом ответе на Можно ли использовать `find -exec sh -c `безопасно?).
Вместо:
printf '%s\n' file* | xargs -n 3 sh -c './code output.txt "$@"; command2; command3' sh
Это будет работать, если имя файла не содержит символов новой строки. Если ваш xargs
имеет нестандартную -опцию -0
(, наиболее распространенная реализация имеет ), следующее также будет работать для имен файлов с символами новой строки:
printf '%s\0' file* | xargs -0 -n 3 sh -c './code output.txt "$@"; command2; command3' sh
"$@"
(кавычки важные)будут расширены до списка позиционных параметров внутри скрипта sh -c
. Это имена файлов, присвоенные сценарию xargs
. Кажущееся бесполезным sh
в самом конце будет помещено в $0
в скрипте sh -c
и использовано во всех сообщениях об ошибках, которые выдает эта оболочка (, она не является частью"$@"
).
В оболочке zsh
(, но не в, например. bash
или sh
),вместо этого вы могли бы сделать
for name1 name2 name3 in file*; do
./code output.txt $name1 $name2 $name3
command2
command3
done
Похожие: