Hi Moritz, I could not find zImage-initramfs:
$ grep zImage tempfile ARCH_DEFAULT_KERNELIMAGETYPE="bzImage" KERNEL_IMAGETYPE="bzImage" KERNEL_IMAGETYPES="bzImage" QB_DEFAULT_KERNEL="bzImage" $ grep zImage-initramfs tempfile $ grep INITRAMFS_IMAGE_BUNDLE tempfile # $INITRAMFS_IMAGE_BUNDLE INITRAMFS_IMAGE_BUNDLE="1" $ grep INITRAMFS_FSTYPES tempfile INITRAMFS_FSTYPES="cpio.gz" I added PACKAGE_INSTALL += "initramfs-module-debug" and I added "core-image-minimal-initramfs.bbappend" coppied from yours: $ cat core-image-minimal-initramfs.bbappend PACKAGE_INSTALL += "\ busybox \ base-files \ base-passwd \ bash \ util-linux-lsblk \ vim \ " But I still have troubles to add INITRAMFS_IMAGE = "core-image-minimal-initramfs" or to run core-image-minimal-initramfs, both had errors: $ MACHINE="solar" DISTRO="solar" bitbake core-image-minimal-initramfs ERROR: Nothing PROVIDES 'core-image-minimal-initramfs' core-image-minimal-initramfs was skipped: incompatible with host arm-oe-linux-gnueabi (not in COMPATIBLE_HOST) $ MACHINE="solar" DISTRO="solar" bitbake solar-image ERROR: Nothing PROVIDES 'core-image-minimal-initramfs' core-image-minimal-initramfs was skipped: incompatible with host arm-oe-linux-gnueabi (not in COMPATIBLE_HOST) ERROR: Required build target 'solar-image' has no buildable providers. Missing or unbuildable dependency chain was: ['solar-image', 'virtual/kernel', 'core-image-minimal-initramfs'] Sorry, still learning Yocto, what I could be missing? > BOOT_IMAGE=/bzImage root=PARTUUID=71d1d94a-83e8-4895-98eb-35309f58119f break=premount quiet rootwait rootwait rootfstype=ext4 console=ttyS0,115200 console=tty0 Which did you add kernel boot command for bootargs, bootcmd, etc as above? I could not find BOOT_IMAGE (I use meta-freescale) Thank you very much. - jupiter On 7/12/19, Moritz Porst <moritz.po...@gmx.de> wrote: > Forgot to CC Jupiter and the most important thing: > > PACKAGE_INSTALL += "initramfs-module-debug" (To my understanding this > enables the rescue shell) > > On 12.07.19 08:22, Moritz Porst wrote: >> Hey, >> >> The only thing I can add to what I already said is my >> "core-image-minimal-initramfs.bbappend": >> PACKAGE_INSTALL += "\ >> busybox \ >> base-files \ >> base-passwd \ >> bash \ >> util-linux-lsblk \ >> vim \ >> " >> Jupiter, are you able to produce your zImage-initramfs now ? If not >> further do the following: >> >> bitbake <your-image> -e > tempfile >> [wait until done, then search] >> grep <appropriate search word> tempfile >> >> where <appropriate search word> may be e.g.: zImage, zImage-initramfs, >> INITRAMFS_IMAGE, INITRAMFS_IMAGE_BUNDLE >> Especially check that all variables you set are not overwritten >> somewhere else >> >> Best regards >> Moritz >> >> On 12.07.19 06:36, Zoran Stojsavljevic wrote: >>> Moritz, >>> >>> Thank you very much for this reply. It makes it very clear... What is >>> the current State of Affairs for the topic. >>> >>> Let us see if there will be the improvement to this topic. I'll >>> document this on one of my private GitHubs. And archive this email. >>> >>> Zoran >>> _______ >>> >>> On Thu, Jul 11, 2019 at 12:39 PM Moritz Porst <moritz.po...@gmx.de> >>> wrote: >>>> Hello Zoran, Jupiter and list >>>> >>>> The configuration you sent seems to be correct. >>>> >>>> As I already said initramfs seems overly complicated in yocto. the most >>>> important thing to note is that 2 kernel images are created, one is >>>> called bzImage (in my case) an the other bzImage-initramfs. However >>>> only >>>> the bzImage is written into the rootfs so you have to exchange them >>>> manually. (in /boot/bzImage). I did not find a way of including the >>>> bundled kernel right away. >>>> >>>> What you can do is to build core-image-minimal-initramfs and delete the >>>> symbolic link "bzImage", then recreate it and let it point to >>>> bzImage-initramfs. However this is rather a hack than a solution. >>>> >>>> An other mistake I made was to use IMAGE_INSTALL_append which is >>>> ignored. Use PACKAGE_INSTALL_append. >>>> >>>> Also I found that "break" does not work as a kernel parameter. Use >>>> "shell" oder "debug-shell" instead. If you want to try to boot into >>>> initramfs you can remove all parameters to the booting line so you >>>> either end up in a kernel panic (initramfs doesn't work) or in the >>>> rescue shell (initramfs works). >>>> >>>> In the end I actually managed to get a working shell, but I often ended >>>> up in initramfs telling me "dropping to shell..." but then freezing. >>>> >>>> I don't have access to my files right now but I can tell you more on my >>>> setup tomorrow. In case the solution is not included above. >>>> >>>> Best regards >>>> Moritz >>>> >>>> On 11/07/2019 09:24, Zoran Stojsavljevic wrote: >>>>> Hello Moritz, >>>>> >>>>> I need here some help from you. I'll try to reconstruct the parts of >>>>> the local.conf you are using, so I (and Jupiter) can understand what >>>>> should we do to also bundle kernel image with initramfs, to end up in >>>>> Dracut/rescue shell. >>>>> >>>>> Here is what I anticipate after reading several YOCTO @ threads: >>>>> >>>>> IMAGE_FSTYPES_append = " cpio.gz" >>>>> INITRAMFS_IMAGE = "core-image-minimal-initramfs" >>>>> INITRAMFS_IMAGE_BUNDLE = "1" >>>>> # debug: adds debug boot parameters like 'shell' and 'debug', see >>>>> # meta/recipes-core/initrdscripts/initramfs-framework/debug for >>>>> details >>>>> # Could be removed in more minimal product image >>>>> PACKAGE_INSTALL += "initramfs-module-debug" >>>>> >>>>> Could you, please, review these lines and fix, if something is not >>>>> correct? >>>>> >>>>> I what I understood, this does the magic, but you could not stop in >>>>> initramfs shell? Still, this problem is not solved? >>>>> >>>>>> I was following this site: https://wiki.debian.org/InitramfsDebug >>>>>> Rescue shell (also known as initramfs shell) >>>>>> Read man initramfs-tools to learn about the break=something kernel >>>>>> parameter (where valid arguments for something are: top, modules, >>>>>> premount, mount, mountroot, bottom, init), which starts a debug >>>>>> shell. >>>>>> You can try, for example, break=premount. You can edit >>>>>> /boot/grub/grub.cfg >>>>>> to add this to the end of the kernel line, or you can do it >>>>>> interactively >>>>>> from the grub boot menu: "e" to edit, and "b" to boot once you've >>>>>> edited >>>>>> the kernel line. >>>>> Now, as my understanding is, you solved this problem actually adding >>>>> to grub.cfg in command kernel line break=premount, and was able to >>>>> stop in rescue shell?! Am I correct here? >>>>> >>>>> Thank you, >>>>> Zoran >>>>> _______ >>>>> >>>>> >>>>> On Mon, Jul 1, 2019 at 4:33 PM Moritz Porst <moritz.po...@gmx.de> >>>>> wrote: >>>>>> Hello, >>>>>> I think I found the issue. ( see below ) >>>>>> >>>>>> On 01.07.19 15:57, Zoran Stojsavljevic wrote: >>>>>> >>>>>> Hello Moritz, >>>>>> >>>>>> Too hot here, in Belgrade... Where I am resting for the Time being >>>>>> (actually, this message given to my invisible spying security >>>>>> "angels" >>>>>> on this list)... :-) Projected +38C degrees today. Too hot for this >>>>>> too old Siberian untouchable bobcat! >>>>>> >>>>>> Luckily it's a rather cold day in germany, thanks that you still >>>>>> take the time to answer ! >>>>>> >>>>>> I started from the core-image-minimal to have a small image and >>>>>> extended it with the features I need, which is e.g. a graphical >>>>>> system. >>>>>> The console=[...] part in the kernel command line is probably a >>>>>> remnant but my image boots into the GUI. Is this a problem ? >>>>>> >>>>>> Nope, it is not. If you need to do it correctly, you should use >>>>>> bitbake -k core-image-sato build command (my best educated guess). >>>>>> Then, I do not feel comfortable seeing in your kernel command line >>>>>> serial interface, do you agree? >>>>>> >>>>>> Yes that is true. >>>>>> >>>>>> YOCTO maintainers, any additional >>>>>> advices? >>>>>> >>>>>> My bootloader is currently grub, the EFI is AM. >>>>>> >>>>>> Nope. Eeeeeeeeek. Wrong. Currently, your boot-loader is UEFI AMI. >>>>>> Your >>>>>> OS (Linux probably, U name it) boot-loader is GRUB2. Let us keep it >>>>>> contained, sane and sober. >>>>>> >>>>>> Sorry but I can't find this info in the EFI. >>>>>> >>>>>> Could you, please try the following command being root: dmesg | grep >>>>>> MCU. or grep mcu, or grep CPUID or grep cpuid?? Please, post results >>>>>> to this list (to me). >>>>>> >>>>>> No luck unfortunately (used grep -i) >>>>>> >>>>>> Could you, also, send to YOCTO list/me attached file: >>>>>> /boot/microcode.cpio so I can somehow (?) inspect it? ;-) >>>>>> >>>>>> I send it to you directly, so I don't spam the list with a large >>>>>> attachment. >>>>>> >>>>>> 2GB, single channel. >>>>>> >>>>>> All Cool. E3825 by HW/silicon design could/does NOT support multiple >>>>>> memory channels. ONLY single... But even YOCTO primes (INTEL ones >>>>>> from >>>>>> this list) are not gonna tell this to you. Not 'cause they are nasty. >>>>>> They are NOT aware/they are ignorant (with the purpose)! ;-)) >>>>>> >>>>>> No, the boot does not stop. Even if I do issue "break=premount" I >>>>>> end up in my graphical interface with the rootfs mounted. This is the >>>>>> last message in the log: EXT4-fs (sdb2): re-mounted. Opts: (null) >>>>>> The rootfs partition is always 2, so either /dev/sda2 or /dev/sdb2 >>>>>> (when booting from stick) >>>>>> >>>>>> Yes, from https://pastebin.com/ya7iCtq7, so it is remounted rw, not >>>>>> read only. So, it seems that you have passed dracut phase. and >>>>>> mounted >>>>>> SD or flash rootfs. So, initramfs is NOT your true problem, is it??? >>>>>> >>>>>> The thing is that the boot works but I want an initramfs that can >>>>>> be used for updating (in case the rootfs is broken). However I >>>>>> need to be able to intercept the boot process there because >>>>>> otherwise I can't deploy an update mechanism, that's what I was >>>>>> trying. >>>>>> >>>>>> Zoran >>>>>> _______ >>>>>> >>>>>> >>>>>> No, the boot does not stop. Even if I do issue "break=premount" I >>>>>> end up >>>>>> in my graphical interface with the rootfs mounted. This is the >>>>>> last message >>>>>> in the log: EXT4-fs (sdb2): re-mounted. Opts: (null) The rootfs >>>>>> partition is >>>>>> always 2, so either /dev/sda2 or /dev/sdb2 (when booting from stick) >>>>>> >>>>>> >>>>>> So for the issue... >>>>>> I expected yocto to put the bundled bzImage onto my rootfs. This >>>>>> was not the case. My image directory contains 2x bzImage, one >>>>>> bundled and one unbundled. Apparently yocto puts the >un<bundled >>>>>> image onto my /boot partition and uses it for boot. So of course I >>>>>> couldn't access initramfs in this case. Now I get to the initramfs >>>>>> statement "dropping to shell" if I intentionally boot with wrong >>>>>> rootfs. >>>>>> Still I don't get the interactive shell. >>>>>> On the github ostroproject site I found this: >>>>>> >>>>>> # debug: adds debug boot parameters like 'shell' and 'debug', see >>>>>> # meta/recipes-core/initrdscripts/initramfs-framework/debug for >>>>>> details >>>>>> # Could be removed in more minimal product image. >>>>>> PACKAGE_INSTALL += "initramfs-module-debug" >>>>>> >>>>>> including the module-debug still does not enable me to get an >>>>>> interactive shell. >>>>>> I was following this site: https://wiki.debian.org/InitramfsDebug >>>>>> I am aware that yocto is no debian but I expected that kernel >>>>>> parameters (like 'break') would be independent of the distribution. >>>>>> >>>>>> Lastly I do not really need the interactive shell, it is enough if >>>>>> I can deploy a custom init script in the initramfs. Still I think >>>>>> that getting an initramfs shell should be as simple as stating the >>>>>> name of the initramfs image and setting the "INITRAMFS_DO_BUNDLE" >>>>>> variable. >>>>>> >>>>>> Best regards >>>>>> Moritz >>>>>> >>>>>> >>>>>> On Mon, Jul 1, 2019 at 11:20 AM Moritz Porst <moritz.po...@gmx.de> >>>>>> wrote: >>>>>> >>>>>> Hello Zoran, >>>>>> thanks for your answer >>>>>> >>>>>> On 28.06.19 14:26, Zoran Stojsavljevic wrote: >>>>>> >>>>>> INITRAMFS_IMAGE = "core-image-minimal-initramfs" >>>>>> INITRAMFS_IMAGE_BUNDLE = "1" >>>>>> >>>>>> ... >>>>>> >>>>>> You can find the /var/log/dmesg here: https://pastebin.com/ya7iCtq7I >>>>>> >>>>>> Some hints... >>>>>> >>>>>> [1] Kernel command line: BOOT_IMAGE=/bzImage >>>>>> root=PARTUUID=71d1d94a-83e8-4895-98eb-35309f58119f >>>>>> break=premount quiet rootwait rootwait rootfstype=ext4 >>>>>> console=ttyS0,115200 console=tty0 >>>>>> >>>>>> input: Video Bus as >>>>>> /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input7 >>>>>> fbcon: inteldrmfb (fb0) is primary device >>>>>> Console: switching to colour frame buffer device 128x48 >>>>>> i915 0000:00:02.0: fb0: inteldrmfb frame buffer device >>>>>> snd_hda_intel 0000:00:1b.0: bound 0000:00:02.0 (ops >>>>>> i915_audio_component_bind_ops [i915]) >>>>>> >>>>>> Hmmmmm... You are using console and serial, but full i915 GFX >>>>>> kernel driver is still included in the build??? >>>>>> >>>>>> I started from the core-image-minimal to have a small image and >>>>>> extended it with the features I need, which is e.g. a graphical >>>>>> system. The console=[...] part in the kernel command line is >>>>>> probably a remnant but my image boots into the GUI. Is this a >>>>>> problem ? >>>>>> >>>>>> >>>>>> [2] efi: EFI v2.31 by American Megatrends >>>>>> >>>>>> Using AMI BIOS as boot loader FW... OK?! Am I correct? >>>>>> >>>>>> My bootloader is currently grub, the EFI is AM. >>>>>> >>>>>> >>>>>> [3] smpboot: CPU0: Intel(R) Atom(TM) CPU E3825 @ 1.33GHz >>>>>> (family: 0x6, model: 0x37, stepping: 0x9) >>>>>> >>>>>> This is CPUID ID 0x30679, which uses MCU... Which MicroCodeUnit? >>>>>> M0130679xxx (info from AMI BIOS)? >>>>>> >>>>>> Sorry but I can't find this info in the EFI >>>>>> >>>>>> >>>>>> [4] Using INTEL ATOM BYT E3825 dual core (sans Hyper-threading), >>>>>> implies that you are using >>>>>> 4GB (e820 messages) as single channel (one memory module DDR3 as >>>>>> 4GB)! Am I correct (important)? >>>>>> >>>>>> 2GB, single channel. >>>>>> >>>>>> >>>>>> [5] Dracut phase?! >>>>>> >>>>>> To my understanding the initramfs should be embedded in >>>>>> /boot/bzImage. >>>>>> However since I use an intel platform I also have a >>>>>> /boot/microcode.cpio >>>>>> which gets loaded via "initrd /microcode.cpio". Removing this line in >>>>>> grub does not enable me to get an initramfs prompt either (again, >>>>>> using >>>>>> break as option). >>>>>> >>>>>> You are obviously stopping in boot phase called dracut. Please, >>>>>> try to mount by hand >>>>>> /dev/sda(whatever)... You should use fdisk -l command, or do ls >>>>>> -al /dev | grep sda to >>>>>> dig out which partition you need to mount to /tmp dir to see >>>>>> rootfstype=ext4 (HDD/SSD) >>>>>> >>>>>> No, the boot does not stop. Even if I do issue "break=premount" I >>>>>> end up in my graphical interface with the rootfs mounted. This is >>>>>> the last message in the log: >>>>>> EXT4-fs (sdb2): re-mounted. Opts: (null) >>>>>> The rootfs partition is always 2, so either /dev/sda2 or /dev/sdb2 >>>>>> (when booting from stick) >>>>>> >>>>>> _______ >>>>>> >>>>>> Just thinking loud... .. . >>>>>> >>>>>> Hope this helps (has very little to do with YOCTO build system, >>>>>> BTW) . ;-) >>>>>> >>>>>> Zoran >>>>>> _______ >>>>>> >>>>>> >>>>>> On Fri, Jun 28, 2019 at 11:22 AM Moritz Porst >>>>>> <moritz.po...@gmx.de> wrote: >>>>>> >>>>>> Hello, >>>>>> I currently try to deploy a single rootfs update mechanism for my >>>>>> embedded device. I can't boot to initramfs using either "break" or >>>>>> "break=premount" (without quotes...). I tried this in systemd-boot >>>>>> and >>>>>> grub-efi (always efi boot) but the boot process just continues >>>>>> normally. >>>>>> If I insert at the same point e.g. "quiet" this argument is >>>>>> recognised. >>>>>> I boot the .wic image with a separate boot partition from a USB >>>>>> stick. >>>>>> in local.conf I have set: >>>>>> INITRAMFS_IMAGE = "core-image-minimal-initramfs" >>>>>> INITRAMFS_IMAGE_BUNDLE = "1" >>>>>> >>>>>> In order to reduce complexity I now use the standard >>>>>> core-image-minimal-initramfs without .bbappend. I can confirm (from >>>>>> seeing the task) that bitbake bundled the kernel with the initramfs. >>>>>> >>>>>> You can find the /var/log/dmesg here: https://pastebin.com/ya7iCtq7 >>>>>> >>>>>> To my understanding the initramfs should be embedded in >>>>>> /boot/bzImage. >>>>>> However since I use an intel platform I also have a >>>>>> /boot/microcode.cpio >>>>>> which gets loaded via "initrd /microcode.cpio". Removing this line in >>>>>> grub does not enable me to get an initramfs prompt either (again, >>>>>> using >>>>>> break as option). >>>>>> >>>>>> Did I forget some configuration or do I have to put the break >>>>>> statement >>>>>> at a very specific position within the "linux ..." boot command ? >>>>>> Do you >>>>>> know which bitbake variables to check ? (both set in local.conf do >>>>>> not >>>>>> get overwritten, already checked this). I got the thud branch checked >>>>>> out in all my meta-layers except for meta-qt which is currently on >>>>>> master branch. >>>>>> >>>>>> Help is much appreciated ! >>>>>> >>>>>> Best regards >>>>>> Moritz >>>>>> >>>>>> -- >>>>>> _______________________________________________ >>>>>> yocto mailing list >>>>>> yocto@yoctoproject.org >>>>>> https://lists.yoctoproject.org/listinfo/yocto > -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto