10 April 2025

UDOO Linux image

udooer@udoo:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="14.04.5 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.5 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
  • Partition 1 is not flagged as boot partition, not required but since we are here:
udooer@udoo:~$ sudo fdisk /dev/mmcblk0
[sudo] password for udooer:

Command (m for help): p

Disk /dev/mmcblk0: 8068 MB, 8068792320 bytes
4 heads, 16 sectors/track, 246240 cylinders, total 15759360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x816d2024

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048       67583       32768    e  W95 FAT16 (LBA)
/dev/mmcblk0p2           67584    15759359     7845888   83  Linux

Command (m for help):
Command (m for help): a
Partition number (1-4): 1

Command (m for help): p

Disk /dev/mmcblk0: 8068 MB, 8068792320 bytes
4 heads, 16 sectors/track, 246240 cylinders, total 15759360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x816d2024

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *        2048       67583       32768    e  W95 FAT16 (LBA)
/dev/mmcblk0p2           67584    15759359     7845888   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

U-Boot

Build recent U-Boot: tag: v2025.04 Check requirements, everything is explained in the build doc

git clone git@github.com:u-boot/u-boot.git
git branch -d v2025.04
ARCH=arm CROSS_COMPILE=arm-none-eabi- make distclean
ARCH=arm CROSS_COMPILE=arm-none-eabi- make udoo_defconfig
ARCH=arm CROSS_COMPILE=arm-none-eabi- make

From here:

  • Boot into Linux, add the new file as explained below, then flash the new u-boot
  • Otherwise, if you have flashed the new u-boot first, boot the old way into Linux to add the file for automatic boots later on.

Recent u-boot have a default boot process that will detect how to boot. Just add the following file on the boot partition (/boot/extlinux/extlinux.conf):

label Linux
    kernel /zImage
    append root=/dev/mmcblk0p2 rootwait rw console=ttymxc1,115200

Reset, it should boot fine.

Back up original u-boot if needed later, flash new one

sudo dd if=/dev/sda of=u-boot_backup.imx bs=1K skip=1 count=1024
sudo dd if=u-boot-with-spl.imx of=/dev/sda bs=1K seek=1

Boot the old way from u-boot prompt

setenv mmcpart 1
setenv image zImage
fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
bootz ${loadaddr} - ${fdt_addr}
U-Boot SPL 2025.04 (Apr 09 2025 - 11:37:17 +0200)
Trying to boot from MMC1


U-Boot 2025.04 (Apr 09 2025 - 11:37:17 +0200)

CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
Reset cause: POR
Model: Udoo i.MX6 Quad Board
Board: Udoo Quad
DRAM:  1 GiB
Core:  45 devices, 13 uclasses, devicetree: separate
MMC:   FSL_SDHC: 2
Loading Environment from MMC... Reading from MMC(2)... *** Warning - bad CRC, using default environment

In:    serial@21e8000
Out:   serial@21e8000
Err:   serial@21e8000
Net:   eth0: ethernet@2188000
Hit any key to stop autoboot:  0
=> setenv mmcpart 1
=> setenv image zImage
=> fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
4547288 bytes read in 213 ms (20.4 MiB/s)
=> bootz ${loadaddr} - ${fdt_addr}
Kernel image @ 0x12000000 [ 0x000000 - 0x4562d8 ]
## Flattened Device Tree blob at 18000000
   Booting using the fdt blob at 0x18000000
Working FDT set to 18000000
   Using Device Tree in place at 18000000, end 1800dfff
Working FDT set to 18000000

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
...