The L4Re version I am using is r-2025-W48.
Initially, I attempted to boot using the initramfs-based method. In this
approach, I converted the uImage into a raw bin image, because loading the
uImage directly resulted in a Bad kernel image error, likely due to the
default uImage header handling. After flashing the converted binary to the
SD card, the system booted but consistently got stuck during early boot.
Even when different load addresses are specified in U-Boot, the kernel is
always relocated to a fixed address (0x9008). This address overlaps
with a reserved memory region (e.g., vpu_boot@a000), leading to a
region overlap error and reboot. I'm attracting the log (Initramfs.txt).
After this, I switched to the SD card hardware passthrough method.
Following the i.MX documentation, I prepared the SD card as follows:
Partition 1: FAT partition containing bootstrap.uimage and the i.MX95
device tree
Partition 2: Root filesystem
As suggested, I updated the configuration (.cfg) file by following the
tutorial, and this resolved the console misconfiguration issue.
The system now boots correctly, and I am able to see the console output.
For reference, I am attaching the boot logs(Boot_partition_2.txt)
Although the system boots successfully, the SD card root partition is not
being detected or mounted.
While following the documented steps to enable SD card access, the boot
process ends with a “no device found” error for the SD card.
After further debugging, I noticed that for i.MX95, there is
nohw_devices.iofile
available in the following repository:
[https://github.com/kernkonzept/io/tree/master/io/configs]
Because of this, it is unclear how the SD/MMC hardware should be described
for i.MX95, and the block device does not appear during boot.
For reference, I am attaching the boot logs(Boot_partition_3.txt)
Is there an official hw_devices.io configuration available for i.MX95? or
without the hw_device.io also we can mount the sd card?
Any guidance or example configuration would be very helpful for mounting
the rootfs.
u-boot=> setenv fdt_high 0x
u-boot=> fatload mmc 1:1 0x9000 bootstrap.bin
422484208 bytes read in 4410 ms (91.4 MiB/s)
u-boot=> fatload mmc 1:1 0xB000 imx95-19x19-verdin.dtb
97421 bytes read in 4 ms (23.2 MiB/s)
u-boot=> booti 0x9000 - 0xB000
Image lacks image_size field, assuming 16MiB
Moving Image from 0x9000 to 0x9008, end=9108
## Flattened Device Tree blob at b000
Booting using the fdt blob at 0xb000
Working FDT set to b000
Using Device Tree in place at b000, end b001ac8c
Working FDT set to b000
Starting kernel ...
L4 Bootstrapper
Compiled with: GCC (12.2.1 20221205)
Bootstrap build info: 2026-01-13 09:06:14 IST+0530
L4Image creation info: 2026-01-13 21:02:22 IST+0530
L4Image sequence info: #90
RAM: 9000 - : 1.7 GiB
RAM: 0001 - 00047fff: 14.0 GiB
Total RAM: 15.7 GiB
New region for list regions: [ 9255a000, a9368f0a] { 366.0 MiB} Boot
Module
overlaps with:[ a000, a00f] {1024.0 KiB} Arch
vpu_boot@a000
Regions of list 'regions'
[ 8800, 88007fff] { 32.0 KiB} Arch vdev0vring0@8800
[ 88008000, 8800] { 32.0 KiB} Arch vdev0vring1@88008000
[ 8801, 88017fff] { 32.0 KiB} Arch vdev1vring0@8801
[ 88018000, 8801] { 32.0 KiB} Arch vdev1vring1@88018000
[ 8802, 8811] {1024.0 KiB} Arch vdevbuffer@8802
[ 8822, 88220fff] { 4.0 KiB} Arch rsc-table@8822
[ 8c00, 8dbf] { 28.0 MiB} Arch optee_core@8c00
[ 8dc0, 8dff] { 4.0 MiB} Arch optee_shm@8dc0
[ 9008, 9009610f] { 88.2 KiB} Boot bootstrap
[ 90098200, 90098969] { 1.8 KiB} Boot modinfo
[ 90099000, 9016b4c7] { 841.1 KiB} Boot Module
[ 9016c000, 90172a77] { 26.6 KiB} Boot Module
[ 90173000, 901aae07] { 223.5 KiB} Boot Module
[ 901ab000, 901d346f] { 161.1 KiB} Boot Module
[ 901d4000, 9026da0f] { 614.5 KiB} Boot Module
[ 9026e000, 903a036f] { 1.1 MiB} Boot Module
[ 903a1000, 903a1313] { 0.7 KiB} Boot Module
[ 903a2000, 925599ff] { 33.7 MiB} Boot Module
[ a000, a00f] {1024.0 KiB} Arch vpu_boot@a000
[ b000, b0017fff] { 96.0 KiB} Root dtb
region overlap
Key press reboots...
#Module List
modaddr 0x0110
default-kernel fiasco -serial_esc
default-bootstrap bootstrap
entry imx95-yocto
roottask moe rom/imx95-yocto.cfg
module l4re
module ned
module uvmm
module imx95-yocto.cfg
module[fname=linux]
/home/admin1/Downloads/images/imx95-19x19-verdin/linux-kernel.bin
module[fname=ramdisk.cpio.gz]
/home/admin1/Downloads/images/imx95-19x19-verdin/yocto-ramdisk.cpio.gz
module[fname=guest.dtb] dtb/virt-arm_virt-64.dtb
##cfg file
-- vim:set ft=lua:
local L4 = require("L4");
local l = L4.default_loader;
-- Memory allocatio