Message ID | 20220117080616.10563-1-heiko.thiery@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | [1/2] board/kontron/pitx-imx8m: use extlinux instead of U-Boot boot script | expand |
On Mon, 17 Jan 2022 09:06:16 +0100 Heiko Thiery <heiko.thiery@gmail.com> wrote: > Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com> > --- > board/kontron/pitx-imx8m/boot.cmd | 8 -------- > board/kontron/pitx-imx8m/extlinux.conf | 4 ++++ > board/kontron/pitx-imx8m/genimage.cfg | 5 +++-- > board/kontron/pitx-imx8m/post-build.sh | 7 +++++-- > board/kontron/pitx-imx8m/post-image.sh | 2 +- > configs/kontron_pitx_imx8m_defconfig | 3 +-- > 6 files changed, 14 insertions(+), 15 deletions(-) > delete mode 100644 board/kontron/pitx-imx8m/boot.cmd > create mode 100644 board/kontron/pitx-imx8m/extlinux.conf I have applied, but I am a bit worried about things are going on with this switch to extlinux.conf. Indeed, we have: * Platforms where the UUID is hardcoded into genimage.cfg and extlinux.conf, such as board/beaglev/ * We have platforms where a "uuid" variable in filled in U-Boot before triggering the extlinux.conf logic, and therefore extlinux.conf uses root=PARTUUID=${uuid}. For example board/freescale/imx7dsdb/rootfs_overlay/boot/extlinux/extlinux.conf, board/orangepi/orangepi-zero/boot.cmd, board/solidrun/mx6cubox/rootfs_overlay/boot/extlinux/extlinux.conf, board/technexion/imx6ulpico/rootfs_overlay/boot/extlinux/extlinux.conf, and a few others. * We now have platforms (kontron/smarc-sal28 and kontron/pitx-imx8m) where a random UUID is generated in the post-build script, and used in genimage and extlinux.conf. I'm not sure where we want to go, and how much we want to enforce "best practices" that are common on all platforms, or just let each platform do its little business. Thomas
Hi Thomas, Am Sa., 22. Jan. 2022 um 15:11 Uhr schrieb Thomas Petazzoni <thomas.petazzoni@bootlin.com>: > > On Mon, 17 Jan 2022 09:06:16 +0100 > Heiko Thiery <heiko.thiery@gmail.com> wrote: > > > Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com> > > --- > > board/kontron/pitx-imx8m/boot.cmd | 8 -------- > > board/kontron/pitx-imx8m/extlinux.conf | 4 ++++ > > board/kontron/pitx-imx8m/genimage.cfg | 5 +++-- > > board/kontron/pitx-imx8m/post-build.sh | 7 +++++-- > > board/kontron/pitx-imx8m/post-image.sh | 2 +- > > configs/kontron_pitx_imx8m_defconfig | 3 +-- > > 6 files changed, 14 insertions(+), 15 deletions(-) > > delete mode 100644 board/kontron/pitx-imx8m/boot.cmd > > create mode 100644 board/kontron/pitx-imx8m/extlinux.conf > > I have applied, but I am a bit worried about things are going on with > this switch to extlinux.conf. I was not aware of the different approaches. > Indeed, we have: > > * Platforms where the UUID is hardcoded into genimage.cfg and > extlinux.conf, such as board/beaglev/ > > * We have platforms where a "uuid" variable in filled in U-Boot before > triggering the extlinux.conf logic, and therefore extlinux.conf uses > root=PARTUUID=${uuid}. For example > board/freescale/imx7dsdb/rootfs_overlay/boot/extlinux/extlinux.conf, > board/orangepi/orangepi-zero/boot.cmd, > board/solidrun/mx6cubox/rootfs_overlay/boot/extlinux/extlinux.conf, > board/technexion/imx6ulpico/rootfs_overlay/boot/extlinux/extlinux.conf, > and a few others. For the technexion board there is some logic in u-boot to setp and discover the uuid of the root partition. https://source.denx.de/u-boot/u-boot/-/blob/master/include/configs/pico-imx6ul.h#L90 > * We now have platforms (kontron/smarc-sal28 and kontron/pitx-imx8m) > where a random UUID is generated in the post-build script, and used > in genimage and extlinux.conf. With this approach it is independent if the image is installed on the SD card or the eMMC or what else. But here one pitfall is when the image is installed on more devices. > I'm not sure where we want to go, and how much we want to enforce "best > practices" that are common on all platforms, or just let each platform > do its little business.
Hi Thomas, On 22/01/22 15:11, Thomas Petazzoni wrote: > On Mon, 17 Jan 2022 09:06:16 +0100 > Heiko Thiery <heiko.thiery@gmail.com> wrote: > >> Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com> >> --- >> board/kontron/pitx-imx8m/boot.cmd | 8 -------- >> board/kontron/pitx-imx8m/extlinux.conf | 4 ++++ >> board/kontron/pitx-imx8m/genimage.cfg | 5 +++-- >> board/kontron/pitx-imx8m/post-build.sh | 7 +++++-- >> board/kontron/pitx-imx8m/post-image.sh | 2 +- >> configs/kontron_pitx_imx8m_defconfig | 3 +-- >> 6 files changed, 14 insertions(+), 15 deletions(-) >> delete mode 100644 board/kontron/pitx-imx8m/boot.cmd >> create mode 100644 board/kontron/pitx-imx8m/extlinux.conf > > I have applied, but I am a bit worried about things are going on with > this switch to extlinux.conf. > > Indeed, we have: > > * Platforms where the UUID is hardcoded into genimage.cfg and > extlinux.conf, such as board/beaglev/ > > * We have platforms where a "uuid" variable in filled in U-Boot before > triggering the extlinux.conf logic, and therefore extlinux.conf uses > root=PARTUUID=${uuid}. For example > board/freescale/imx7dsdb/rootfs_overlay/boot/extlinux/extlinux.conf, > board/orangepi/orangepi-zero/boot.cmd, > board/solidrun/mx6cubox/rootfs_overlay/boot/extlinux/extlinux.conf, > board/technexion/imx6ulpico/rootfs_overlay/boot/extlinux/extlinux.conf, > and a few others. > > * We now have platforms (kontron/smarc-sal28 and kontron/pitx-imx8m) > where a random UUID is generated in the post-build script, and used > in genimage and extlinux.conf. > > I'm not sure where we want to go, and how much we want to enforce "best > practices" that are common on all platforms, or just let each platform > do its little business. IMHO the worst drawback I see while using extlinux.conf VS boot.scr is the missing checksum. Especially on embedded systems we deeply treat. Not having such checksum can make system booting without a parameter on linux command line for example, only because 1 ASCII has been corrupted. I prefer the system to not boot at all in general instead of having it "working" while hiding some potential problem. What do you and All think about this? Best regards
Hi All, 24.01.2022 01:01, Giulio Benetti: > IMHO the worst drawback I see while using extlinux.conf VS boot.scr is > the missing checksum. Especially on embedded systems we deeply treat. > Not having such checksum can make system booting without a parameter on > linux command line for example, only because 1 ASCII has been corrupted. > I prefer the system to not boot at all in general instead of having it > "working" while hiding some potential problem. > > What do you and All think about this? IMHO extlinux.conf is more debugging friendly. Boot.scr requires the following command: mkimage -C none -A arm -T script -d boot.cmd boot.scr The mkimage utility (BR2_PACKAGE_HOST_UBOOT_TOOLS) is not on the board, you need to transfer the converted file over the network. Or reconnect the microSD card.
> Il giorno 24 gen 2022, alle ore 06:43, Sergey Kuzminov <kuzminov.sergey81@gmail.com> ha scritto: > > Hi All, > > 24.01.2022 01:01, Giulio Benetti: >> IMHO the worst drawback I see while using extlinux.conf VS boot.scr is the missing checksum. Especially on embedded systems we deeply treat. >> Not having such checksum can make system booting without a parameter on linux command line for example, only because 1 ASCII has been corrupted. >> I prefer the system to not boot at all in general instead of having it "working" while hiding some potential problem. >> What do you and All think about this? > > IMHO extlinux.conf is more debugging friendly. > > Boot.scr requires the following command: > mkimage -C none -A arm -T script -d boot.cmd boot.scr > > The mkimage utility (BR2_PACKAGE_HOST_UBOOT_TOOLS) is not on the board, you need to transfer the converted file over the network. Or reconnect the microSD card. I agree with this too. I’ve found myself many times blaming because I couldn’t simply modify boot.scr on target and reboot. But I find it still dangerous. Another thing that I don’t find possible to do with extlinux.conf is using uboot scripting possibility that enables you to do lot or things, like fdt-overlay expand and apply, show a bmp instead of having a static splashscreen and so on. I don’t think this is achievable with extlinux.conf These are only my thoughts but I still don’t have a solution honestly. In particular to uniform boards. Best regards Giulio
On 22/01/2022 15:11, Thomas Petazzoni wrote: > On Mon, 17 Jan 2022 09:06:16 +0100 > Heiko Thiery <heiko.thiery@gmail.com> wrote: > >> Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com> >> --- >> board/kontron/pitx-imx8m/boot.cmd | 8 -------- >> board/kontron/pitx-imx8m/extlinux.conf | 4 ++++ >> board/kontron/pitx-imx8m/genimage.cfg | 5 +++-- >> board/kontron/pitx-imx8m/post-build.sh | 7 +++++-- >> board/kontron/pitx-imx8m/post-image.sh | 2 +- >> configs/kontron_pitx_imx8m_defconfig | 3 +-- >> 6 files changed, 14 insertions(+), 15 deletions(-) >> delete mode 100644 board/kontron/pitx-imx8m/boot.cmd >> create mode 100644 board/kontron/pitx-imx8m/extlinux.conf > > I have applied, but I am a bit worried about things are going on with > this switch to extlinux.conf. > > Indeed, we have: > > * Platforms where the UUID is hardcoded into genimage.cfg and > extlinux.conf, such as board/beaglev/ > > * We have platforms where a "uuid" variable in filled in U-Boot before > triggering the extlinux.conf logic, and therefore extlinux.conf uses > root=PARTUUID=${uuid}. For example > board/freescale/imx7dsdb/rootfs_overlay/boot/extlinux/extlinux.conf, > board/orangepi/orangepi-zero/boot.cmd, > board/solidrun/mx6cubox/rootfs_overlay/boot/extlinux/extlinux.conf, > board/technexion/imx6ulpico/rootfs_overlay/boot/extlinux/extlinux.conf, > and a few others. > > * We now have platforms (kontron/smarc-sal28 and kontron/pitx-imx8m) > where a random UUID is generated in the post-build script, and used > in genimage and extlinux.conf. > > I'm not sure where we want to go, and how much we want to enforce "best > practices" that are common on all platforms, or just let each platform > do its little business. It's like the preference we have for extlinux.conf in an ext4 filesystem: we prefer it over FAT, but it's not a really hard requirement, and we're definitely not going to update existing defconfigs unless an actual developer with the board tests them. Between all of those options, I think the randomly generated UUID is probably the best one. Well, actually, the automatic filling in by U-Boot is the best one but not all boards support that I guess. Regards, Arnout
diff --git a/board/kontron/pitx-imx8m/boot.cmd b/board/kontron/pitx-imx8m/boot.cmd deleted file mode 100644 index 4d89235392..0000000000 --- a/board/kontron/pitx-imx8m/boot.cmd +++ /dev/null @@ -1,8 +0,0 @@ -echo "Root File Sytem on MMC${devnum}" -setenv rootfs /dev/mmcblk${devnum}p1 -setenv bootargs root=${rootfs} rootwait rw ${extrabootargs} - -load ${devtype} ${devnum} ${kernel_addr_r} boot/Image -load ${devtype} ${devnum} ${fdt_addr_r} boot/imx8mq-kontron-pitx-imx8m.dtb - -booti ${kernel_addr_r} - ${fdt_addr_r} diff --git a/board/kontron/pitx-imx8m/extlinux.conf b/board/kontron/pitx-imx8m/extlinux.conf new file mode 100644 index 0000000000..2911acec59 --- /dev/null +++ b/board/kontron/pitx-imx8m/extlinux.conf @@ -0,0 +1,4 @@ +label buildroot + kernel /boot/Image + devicetree /boot/freescale/imx8mq-kontron-pitx-imx8m.dtb + append root=PARTUUID=%PARTUUID% rootwait rw diff --git a/board/kontron/pitx-imx8m/genimage.cfg b/board/kontron/pitx-imx8m/genimage.cfg index c78ef0f910..4a0aa117fb 100644 --- a/board/kontron/pitx-imx8m/genimage.cfg +++ b/board/kontron/pitx-imx8m/genimage.cfg @@ -1,5 +1,6 @@ image sdcard.img { hdimage { + partition-table-type = "gpt" } partition imx-boot { @@ -9,8 +10,8 @@ image sdcard.img { } partition rootfs { - partition-type = 0x83 - image = "rootfs.ext4" offset = 8M + image = "rootfs.ext4" + partition-uuid = %PARTUUID% } } diff --git a/board/kontron/pitx-imx8m/post-build.sh b/board/kontron/pitx-imx8m/post-build.sh index 4574221fe5..bf8861f6a9 100755 --- a/board/kontron/pitx-imx8m/post-build.sh +++ b/board/kontron/pitx-imx8m/post-build.sh @@ -1,4 +1,7 @@ #!/bin/sh +BOARD_DIR="$(dirname $0)" +PARTUUID="$($HOST_DIR/bin/uuidgen)" -mkdir -p $TARGET_DIR/boot/ -cp $BINARIES_DIR/boot.scr $TARGET_DIR/boot/boot.scr +install -d "$TARGET_DIR/boot/extlinux/" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/genimage.cfg" > "$BINARIES_DIR/genimage.cfg" diff --git a/board/kontron/pitx-imx8m/post-image.sh b/board/kontron/pitx-imx8m/post-image.sh index 564211c829..3452fd4501 100755 --- a/board/kontron/pitx-imx8m/post-image.sh +++ b/board/kontron/pitx-imx8m/post-image.sh @@ -1,3 +1,3 @@ #!/bin/sh -support/scripts/genimage.sh -c $(dirname $0)/genimage.cfg +support/scripts/genimage.sh -c ${BINARIES_DIR}/genimage.cfg diff --git a/configs/kontron_pitx_imx8m_defconfig b/configs/kontron_pitx_imx8m_defconfig index 4053e1e398..458083160b 100644 --- a/configs/kontron_pitx_imx8m_defconfig +++ b/configs/kontron_pitx_imx8m_defconfig @@ -15,6 +15,7 @@ BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.13" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mq-kontron-pitx-imx8m" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y @@ -50,5 +51,3 @@ BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_IMX_MKIMAGE=y BR2_PACKAGE_HOST_UBOOT_TOOLS=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y -BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y -BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/kontron/pitx-imx8m/boot.cmd"
Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com> --- board/kontron/pitx-imx8m/boot.cmd | 8 -------- board/kontron/pitx-imx8m/extlinux.conf | 4 ++++ board/kontron/pitx-imx8m/genimage.cfg | 5 +++-- board/kontron/pitx-imx8m/post-build.sh | 7 +++++-- board/kontron/pitx-imx8m/post-image.sh | 2 +- configs/kontron_pitx_imx8m_defconfig | 3 +-- 6 files changed, 14 insertions(+), 15 deletions(-) delete mode 100644 board/kontron/pitx-imx8m/boot.cmd create mode 100644 board/kontron/pitx-imx8m/extlinux.conf