{"id":7881,"date":"2026-10-02T17:30:00","date_gmt":"2026-10-02T16:30:00","guid":{"rendered":"https:\/\/www.blaess.fr\/christophe\/?p=7881"},"modified":"2026-10-02T17:30:19","modified_gmt":"2026-10-02T16:30:19","slug":"yocto-cooker-1-6-0","status":"publish","type":"post","link":"https:\/\/www.blaess.fr\/christophe\/2026\/10\/02\/yocto-cooker-1-6-0\/","title":{"rendered":"Yocto Cooker 1.6.0"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"alignright size-medium is-resized\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/10\/cooker-1.6.0-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"240\" height=\"300\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/10\/cooker-1.6.0-1-240x300.png\" alt=\"\" class=\"wp-image-7908\" style=\"width:150px;height:auto\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/10\/cooker-1.6.0-1-240x300.png 240w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/10\/cooker-1.6.0-1-819x1024.png 819w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/10\/cooker-1.6.0-1-768x960.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/10\/cooker-1.6.0-1-1229x1536.png 1229w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/10\/cooker-1.6.0-1-1638x2048.png 1638w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/10\/cooker-1.6.0-1.png 2000w\" sizes=\"auto, (max-width: 240px) 100vw, 240px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Nous venons de publier une nouvelle version de <strong>Yocto Cooker<\/strong> (1.6.0) sur <strong>PyPi<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pendant longtemps, Cooker partait du principe que le menu utilisait le <em>repository<\/em> <strong>Poky<\/strong>. Or,  ce d\u00e9p\u00f4t n&rsquo;est plus utilis\u00e9 pour les branches ult\u00e9rieures \u00e0 novembre 2025 (<em>Whinlatter<\/em>, <em><strong>Wrynose<\/strong><\/em> et la future <em>Blacksail<\/em>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il faut d\u00e9sormais s&rsquo;appuyer sur plusieurs d\u00e9p\u00f4ts pour faire un <em>build<\/em>.<\/p>\n\n\n\n<!--more-->\n\n\n\n<ul class=\"wp-block-list\">\n<li><code><strong>bitbake<\/strong><\/code>, le moteur de <em>Yocto Project<\/em> et ses outils associ\u00e9s sont charg\u00e9s explicitement depuis un d\u00e9p\u00f4t du projet <em>Open Embedded<\/em>.<\/li>\n\n\n\n<li><code><strong>meta\/<\/strong><\/code>, le <em>layer<\/em> central de la plupart des <em>builds<\/em> est inclus dans le repository OpenEmbedded-Core.<\/li>\n\n\n\n<li><code><strong>meta-poky\/<\/strong><\/code>, le layer qui fournit la <em>distro<\/em> <code>poky<\/code> est tr\u00e8s utile pour les phases initiales d&rsquo;un projet, m\u00eame si on le surcharge assez rapidement. Il est livr\u00e9 dans le <em>repository<\/em> Meta-Yocto.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Pendant un moment, Yocto Cooker adoptait le nouveau comportement avec des d\u00e9p\u00f4ts s\u00e9par\u00e9s si une ligne sp\u00e9cifique (<code>\"base-distribution\": \"NoPoky\"<\/code>) \u00e9tait pr\u00e9sente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cette ligne n&rsquo;est plus n\u00e9cessaire<\/strong>, Cooker analyse les <em>repositories<\/em> indiqu\u00e9s dans le menu pour adapter son  fonctionnement. Bien entendu, le choix explicite de la <code>base-distribution<\/code> reste disponible pour les cas particuliers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour montrer les deux possibilit\u00e9s, j\u2019ai pr\u00e9par\u00e9 deux menus pour une machine Qemu Arm. Ils sont disponibles dans les menus d&rsquo;exemple de Cooker.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Celui bas\u00e9 sur la version <strong>Scarthgap 5.0.20<\/strong> utilise le d\u00e9p\u00f4t Poky&nbsp;;<\/li>\n\n\n\n<li>Celui utilisant <strong>Wrynose 6.0.3<\/strong> r\u00e9cup\u00e8re s\u00e9par\u00e9ment BitBake et OpenEmbedded-Core.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Installation de Yocto Cooker<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019installation se fait avec <strong>Python 3.11<\/strong> ou plus r\u00e9cent. Cr\u00e9ons un environnement Python virtuel d\u00e9di\u00e9&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;~]$ <strong>python3  -m venv  cooker-env<\/strong>\n\n&#91;~]$  <strong>. cooker-env\/bin\/activate<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le plus simple reste l&#8217;emploi du module Python <code><strong>pip<\/strong><\/code> depuis le serveur <code>Pypi<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(cooker-env)&#91;~]$ <strong>python3  -m pip  install --upgrade  yocto-cooker<\/strong>\nCollecting yocto-cooker\n  Downloading yocto_cooker-1.6.0-py3-none-any.whl.metadata (17 kB)\n  &#91;...]\nSuccessfully installed attrs-26.1.0 jsonschema-4.26.0 jsonschema-specifications-2025.9.1 pyjson5-2.0.1 referencing-0.37.0 rpds-py-2026.6.3 typing-extensions-4.16.0 urllib3-2.8.0 yocto-cooker-1.6.0\n\n(cooker-env) &#91;~]$ <strong>cooker  --version<\/strong>\n# 1.6.0<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Builds avec et sans Poky<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">R\u00e9cup\u00e9ration des sources de Yocto Cooker<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les exemples de menus ne sont pas inclus dans le paquet pour  <code>pip<\/code>. Ils sont disponibles dans le d\u00e9p\u00f4t GitHub de Yocto Cooker, au <em>tag<\/em> 1.6.0. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(cooker-env) &#91;~]$ <strong>git  clone  <a href=\"https:\/\/github.com\/cpb-\/yocto-cooker\">https:\/\/github.com\/cpb-\/yocto-cooker<\/a><\/strong>\nCloning into 'yocto-cooker'...\nremote: Enumerating objects: 1157, done.\nremote: Counting objects: 100% (310\/310), done.\nremote: Compressing objects: 100% (129\/129), done.\nremote: Total 1157 (delta 235), reused 197 (delta 178), pack-reused 847 (from 2)\nReceiving objects: 100% (1157\/1157), 9.99 MiB | 30.64 MiB\/s, done.\nResolving deltas: 100% (638\/638), done.\n\n\n(cooker-env) &#91;~]$ <strong>cd yocto-cooker\/<\/strong>\n\n(cooker-env) &#91;yocto-cooker]$ <strong>git checkout  1.6.0<\/strong>\nNote: switching to '1.6.0'.\n&#91;...]\n(cooker-env) $ <strong>cd  ..<\/strong>\n\n(cooker-env) &#91;~]$ <strong>ls  yocto-cooker\/sample-menus\/<\/strong>\nbeagle-bone-black-scarthgap.json multiple-inheritances-test.json platform-specific-menu.json qemu-sample-menu-wrynose.json raspberrypi5-sample-menu-wrynose.json\nbeagle-bone-black-wrynose.json platform-general-menu.json qemu-sample-menu-scarthgap.json raspberrypi5-sample-menu-scarthgap.json riscv-menu-extrauser.json<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Build pour Scarthgap<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Commen\u00e7ons par une image produite avec la version la plus r\u00e9cente de la branche <strong>Scarthgap<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous voyons que le menu utilise le <em>repository<\/em> de Poky comme \u00ab\u00a0<em>starter pack<\/em>\u00a0\u00bb contenant tout ce qui lui faut pour compiler une image. J&rsquo;ai ajout\u00e9 dans la section <code>local.conf<\/code> une ligne <code><strong>\"IMAGE_FEATURES += 'empty-root-password'\"<\/strong><\/code> pour pouvoir me connecter avec l&rsquo;identit\u00e9 <code>root<\/code> sans saisirde mot de passe.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n\t\"notes\" : &#91;\n\t\t\"This is a simple menu for Qemu ARM emulation.              \",\n\t\t\"Please refer to the README file for instruction on how to  \",\n\t\t\"build the image.\"\n\t],\n\t\"sources\" : &#91;\n\t\t{\n\t\t\t\"url\": \"https:\/\/git.yoctoproject.org\/poky\",\n\t\t\t\"branch\": \"scarthgap\",\n\t\t\t\"rev\": \"yocto-5.0.20\"\n\t\t}\n\t],\n\t\"layers\" : &#91;\n\t\t\"poky\/meta\",\n\t\t\"poky\/meta-poky\",\n\t\t\"poky\/meta-yocto-bsp\"\n\t],\n\t\"builds\" : {\n\t\t\"qemuarm\": {\n\t\t\t\"target\" : \"core-image-base\",\n\t\t\t\"local.conf\": &#91;\n\t\t\t\t\"MACHINE = 'qemuarm' \"\n\t\t\t]\n\t\t}\n\t}\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le <em>build<\/em> prend un temps certain. De l&rsquo;ordre d&rsquo;une heure et demi sur un PC moyen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(cooker-env) &#91;~]$ <strong>cooker  cook  yocto-cooker\/sample-menus\/qemu-sample-menu-scarthgap.json <\/strong>\n# Update layers in project directory\n# Downloading source from  https:\/\/git.yoctoproject.org\/poky\n# Updating source \/home\/training\/layers\/poky... \n# Generating dirs for all build-configurations\n# Building qemuarm (core-image-base)\n &#91;...]\nNOTE: Executing Tasks\nNOTE: Tasks Summary: Attempted 5346 tasks of which 0 didn't need to be rerun and all succeeded.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pour tester notre image, on demande \u00e0 Cooker de nous initialiser un environnement de shell n\u00e9cessaire au d\u00e9marrage de Qemu. Nous en ressortirons ensuite.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(cooker-env) &#91;~]$ <strong>cooker  shell  qemuarm<\/strong>\n&#91;...]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nous pouvons lancer <code>runqemu<\/code> avec l&rsquo;option <code>nographic<\/code> pour conserver la console dans notre terminal&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>build-qemuarm]$ <strong>runqemu  nographic<\/strong>\nrunqemu - INFO - Running bitbake -e  ...\n &#91;...]\nrunqemu - INFO - Host uptime: 375765.62\n\n&#91;    0.000000] Booting Linux on physical CPU 0x0\n&#91;    0.000000] Linux version 6.6.147-yocto-standard (oe-user@oe-host) (arm-poky-linux-gnueabi-gcc (GCC) 13.4.0, GNU ld (GNU Binutils) 2.42.0.20240723) #1 SMP PREEMPT Fri Jul 31 18:20:18 UTC 2026\n&#91;    0.000000] CPU: ARMv7 Processor &#91;414fc0f0] revision 0 (ARMv7), cr=30c5387d\n&#91;    0.000000] CPU: div instructions available: patching division code\n&#91;...]\nINIT: Entering runlevel: 5\nConfiguring network interfaces... ip: RTNETLINK answers: File exists\nStarting system message bus: dbus.\nStarting rpcbind daemon...done.\nStarting bluetooth: bluetoothd.\nStarting syslogd\/klogd: done\n * Starting Avahi mDNS\/DNS-SD Daemon: avahi-daemon\n   ...done.\n\nPoky (Yocto Project Reference Distro) 5.0.20 qemuarm \/dev\/ttyAMA0\n\nqemuarm login: <strong>root<\/strong>\n\nWARNING: Poky is a reference Yocto Project distribution that should be used for\ntesting and development purposes only. It is recommended that you create your\nown distribution for production use.\n\nroot@qemuarm:~# <strong>uname  -a<\/strong>\nLinux qemuarm 6.6.147-yocto-standard #1 SMP PREEMPT Fri Jul 31 18:20:18 UTC 2026 armv7l GNU\/Linux\n\nroot@qemuarm:~# <em><strong>(CTRL-A  X)<\/strong><\/em>\nQEMU: Terminated\nrunqemu - INFO - Cleaning up\nrunqemu - INFO - Host uptime: 376026.78\n\n&#91;build-qemuarm]$ <strong>exit<\/strong>\nexit\n(cooker-env) &#91;~]$ \n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Build pour Wrynose<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le menu pour la branche Wrynose de Yocto ne charge plus le <em>repository<\/em> Poky, mais les trois indiqu\u00e9s plus haut. On s&rsquo;appuie toujours n\u00e9anmoins sur la <em>distro<\/em> <code>poky<\/code> pour d\u00e9buter.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n\t\"notes\" : &#91;\n\t\t\"This is a simple menu for Qemu ARM emulation.              \",\n\t\t\"Please refer to the README file for instruction on how to  \",\n\t\t\"build the image.\"\n\t],\n\t\"sources\" : &#91;\n\t\t{\n\t\t\t\"url\": \"https:\/\/git.openembedded.org\/bitbake\",\n\t\t\t\"rev\": \"yocto-6.0.3\"\n\t\t},\n\t\t{\n\t\t\t\"url\": \"https:\/\/git.openembedded.org\/openembedded-core\",\n\t\t\t\"branch\": \"wrynose\",\n\t\t\t\"rev\": \"yocto-6.0.3\"\n\t\t},\n\t\t{\n\t\t\t\"url\": \"https:\/\/git.yoctoproject.org\/meta-yocto\",\n\t\t\t\"branch\": \"wrynose\",\n\t\t\t\"rev\": \"yocto-6.0.3\"\n\t\t}\n\t],\n\t\"layers\" : &#91;\n\t\t\"openembedded-core\/meta\",\n\t\t\"meta-yocto\/meta-poky\"\n\t],\n\t\"builds\" : {\n\t\t\"qemuarm\": {\n\t\t\t\"target\" : \"core-image-base\",\n\n\t\t\t\"local.conf\": &#91;\n\t\t\t\t\"MACHINE = 'qemuarm' \",\n\t\t\t\t\"DISTRO  = 'poky'    \",\n\t\t\t\t\"IMAGE_FEATURES += 'empty-root-password' \"\n\t\t\t]\n\t\t}\n\t}\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">D\u00e8s le d\u00e9but du <em>build<\/em> on remarque que cette fois plusieurs <em>repositories<\/em> sont t\u00e9l\u00e9charg\u00e9s&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(cooker-env) &#91;~]$ <strong>cooker  cook  yocto-cooker\/sample-menus\/qemu-sample-menu-wrynose.json<\/strong> \n# Update layers in project directory\n# Downloading source from  https:\/\/git.openembedded.org\/bitbake\n# Updating source \/home\/training\/layers\/bitbake... \n# Downloading source from  https:\/\/git.openembedded.org\/openembedded-core\n# Updating source \/home\/training\/layers\/openembedded-core... \n# Downloading source from  https:\/\/git.yoctoproject.org\/meta-yocto\n# Updating source \/home\/training\/layers\/meta-yocto... \n# Generating dirs for all build-configurations\n# Building qemuarm (core-image-base)\n &#91;...]\nNOTE: Executing Tasks\nNOTE: Tasks Summary: Attempted 5873 tasks of which 0 didn't need to be rerun and all succeeded.\n(cooker-env) &#91;~]$ \n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Depuis la version <em>Wrynose<\/em> de <em>Yocto Project<\/em>, il est n\u00e9cessaire d&rsquo;ajouter l&rsquo;option <code><strong>snapshot<\/strong><\/code> de Qemu, car le <em>root filesystem<\/em> est compress\u00e9 et Qemu ne peut pas r\u00e9\u00e9crire dedans.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(cooker-env) &#91;~]$ <strong>cooker  shell  qemuarm<\/strong>\n &#91;...]\n&#91;~\/builds\/build-qemuarm]$ <strong>runqemu  nographic  snapshot<\/strong>\nrunqemu - INFO - Running bitbake -e  ...\n &#91;...]\nINIT: Entering runlevel: 5\nConfiguring network interfaces... ip: RTNETLINK answers: File exists\nStarting system message bus: dbus.\nStarting rpcbind daemon...done.\nStarting bluetooth: bluetoothd.\nStarting syslogd\/klogd: done\n * Starting Avahi mDNS\/DNS-SD Daemon: avahi-daemon\n   ...done.\n\nPoky (Yocto Project Reference Distro) 6.0.3 qemuarm \/dev\/ttyAMA0\n\nType 'root' to login with superuser privileges (no password will be asked).\n\nqemuarm login: <strong>root\n<\/strong>\nWARNING: Poky is a reference Yocto Project distribution that should be used for\ntesting and development purposes only. It is recommended that you create your\nown distribution for production use.\n\nroot@qemuarm:~# <strong>uname  -a<\/strong>\nLinux qemuarm 6.18.39-yocto-standard #1 SMP PREEMPT Wed Jul 22 16:47:54 UTC 2026 armv7l GNU\/Linux\nroot@qemuarm:~# \nroot@qemuarm:~# <strong><em>(CTRL-A  X)<\/em><\/strong>\nQEMU: Terminated\nrunqemu - INFO - Cleaning up\nrunqemu - INFO - Host uptime: 373936.20\n\nrunqemu - INFO - Removing \/home\/training\/builds\/build-qemuarm\/tmp\/deploy\/images\/qemuarm\/core-image-base-qemuarm.rootfs-20261002121851.ext4\n\ntraining@tr02:~\/builds\/build-qemuarm$ <strong>exit<\/strong>\nexit\n\n(cooker-env) &#91;~]$ \n\n\n\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Autres ajouts de Yocto 1.6.0<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Cette version apporte des corrections pour des cas particuliers, le saut sur une branche absente locallement par exemple. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yocto 1.6.0 ajoute \u00e9galement l\u2019option <code><strong>--immutable<\/strong><\/code> aux op\u00e9rations <code>cooker init<\/code> et <code>cooker cook<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Elle conserve une copie des menus utilis\u00e9s, afin qu\u2019une modification ult\u00e9rieure des fichiers d\u2019origine ne change pas la configuration au milieu d\u2019une s\u00e9quence de construction.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Cette version permet de passer sans actions particuli\u00e8res des branches ant\u00e9rieures de Yocto Project (comme Scarthgap, encore maintenue deux ans) aux branches actuelles comme Wrynose.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N&rsquo;h\u00e9sitez pas \u00e0 me contacter si vous avez des questions, des retours, ou l&rsquo;envie de contribuer au projet.<\/p>","protected":false},"excerpt":{"rendered":"<p>Nous venons de publier une nouvelle version de Yocto Cooker (1.6.0) sur PyPi. Pendant longtemps, Cooker partait du principe que le menu utilisait le repository Poky. Or, ce d&eacute;p&ocirc;t n&rsquo;est plus utilis&eacute; pour les branches ult&eacute;rieures &agrave; novembre 2025 (Whinlatter, Wrynose et la future Blacksail). Il faut d&eacute;sormais s&rsquo;appuyer sur plusieurs d&eacute;p&ocirc;ts pour faire un [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-7881","post","type-post","status-publish","format-standard","hentry","category-linux-2"],"_links":{"self":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/7881","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/comments?post=7881"}],"version-history":[{"count":18,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/7881\/revisions"}],"predecessor-version":[{"id":7909,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/7881\/revisions\/7909"}],"wp:attachment":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/media?parent=7881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/categories?post=7881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/tags?post=7881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}