Boot time of imx6ull

Hello,
I am trying to reduce the boot time of the imx6ull module. I have read and watched a few guides but I can’t make the boot fast enough. First of all I tried to reduce kernel size (5.27 to 4.04 MB) but the boot takes even longer (cca 3 s with logs enabled). Then I tried to make some changes in u-boot (disabling logs mostly) but this did not help either. So I thing I need to optimize rootfs and systemd, but is it possible to make boot on imx6ull less than 10 seconds?

We are developing a quite simple application which collects positions from GPS module and distributes them over LTE. The application itself is written in Java but I only need to reduce boot time (no need for Java VM). We also use some systemd services like resolv or networkd.

I attach output from grabserial for more info. grabserial log

If anyone could help me, I would be grateful.

Best regards,
Tomas

Hi, thanks for your answer.

The given link I saw and it helped me in the beginning but the boot time is not sufficient for us.

We are in that state of the project when my boss doesn’t want to change the entire distribution. Do you think that Tezi could be a good start? We have everything working as we need just the boot time is a problem for us.

Unfortunately, we can’t use Torizon because it’s not available for imx6ull yet.

Thanks for the opinion.

Best,

Tomas

It looks like there is only “experimental” release of Torizon for that module. Noted that it may never be fully supported, but if it’s easy enough to test, I’d at least try installing it to measure boot time. It may be available in the Tezi installer?

For the most minimal system, you are probably faced with the same choice we made: poky-tiny, and add what stuff you need. This isn’t that hard to evaluate, provided you are already familiar with OpenEmbedded. The basic setup is here:
The Yocto Project's Reference Distribution “Poky” on Toradex Hardware. I think I just changed the local.conf to

MACHINE ?=
DISTRO ?= “poky-tiny”

Then you can “bitbake core-image-minimal”. If the result image is small, you can embed and build it into your kernel as initramfs. That shouldn’t take too long to evaluate. I’ve kept all our own stuff in our own layer, which is generally a good idea. If that looks like a better option, just create your own layer and see if you can estimate how long it will be to add back in the kernel drivers, mdev hooks, and system services etc. Your app layer would stay the same I’d think.

I’ll give it a try. Thank you for your suggestions

There’s a good article on this here:

For starters, you could try passing the kernel boot option “quiet”, which should help a bit. Have you tried out the new Torizon distro yet? It’s available for that module. Not sure on the boot time, but it’s probably better than full blown Linux image. Or something like the toradex-tezi distro might be a good starting place, as it boots quite fast.

I am on a different platform, and we started at the bottom-up with poky-tiny, busybox and mdev and added only what we need. With minimal file system (500k), plus kernel of a few MB, we boot the whole thing into RamDisk in well under 10s.

If you want to take the other approach and strip out what you don’t need in your existing image, I think that may be a lot of work. (see the boot optimization link above)