[yocto] Can't boot to initramfs

Moritz Porst moritz.porst at gmx.de
Mon Jul 1 07:33:42 PDT 2019


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.porst at 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.porst at 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 at yoctoproject.org
>>> https://lists.yoctoproject.org/listinfo/yocto
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20190701/b898c612/attachment.html>


More information about the yocto mailing list