diff mbox series

[v2,2/2] board: imx8mp: add boot.cmd for distro boot on iMX8MP

Message ID 20201218071927.17220-2-alice.guo@oss.nxp.com
State Accepted
Commit 10a394ba68967eff24ae4c25737d52e18a486f52
Delegated to: Stefano Babic
Headers show
Series [v2,1/2] imx8mp: configs: add support for distro boot commands | expand

Commit Message

Alice Guo (OSS) Dec. 18, 2020, 7:19 a.m. UTC
From: Alice Guo <alice.guo@nxp.com>

Distro Boot requires a U-Boot-specific script named boot.scr or
boot.scr.uimg which contains boot commands to boot the system. The
boot.cmd is such a file. Use mkimage to generate boot.scr or
boot.scr.uimg from boot.cmd, and the command is:
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Distro Boot Script" -d boot.cmd boot.scr.uimg

The boot.cmd file is an example script and can be modified based on
needs. bootargs is set in this script and root uses the default value
"/dev/mmcblk1p2 rootwait rw" which can be changed by overriding mmcroot.

Signed-off-by: Alice Guo <alice.guo@nxp.com>
---

Changes for v2:
 - none

 board/freescale/imx8mp_evk/boot.cmd | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
 create mode 100644 board/freescale/imx8mp_evk/boot.cmd

--
2.17.1

Comments

Fabio Estevam Dec. 18, 2020, 11:03 a.m. UTC | #1
Hi Alice,

On Fri, Dec 18, 2020 at 4:20 AM Alice Guo (OSS) <alice.guo@oss.nxp.com> wrote:

> +++ b/board/freescale/imx8mp_evk/boot.cmd
> @@ -0,0 +1,25 @@
> +setenv bootargs console=${console} root=${mmcroot};
> +
> +for boot_target in ${boot_targets};

This is not how distro boot support works.

boot.scr or extlinux.conf scripts should be provided by the distro
itself (Yocto, Buildroot, Debian, etc), and not from U-Boot.

Each distro has its own partitioning mechanism and may store the
kernel, dtb in different locations.
Alice Guo (OSS) Dec. 18, 2020, 11:10 a.m. UTC | #2
> -----Original Message-----
> From: Fabio Estevam <festevam@gmail.com>
> Sent: 2020年12月18日 19:03
> To: Alice Guo (OSS) <alice.guo@oss.nxp.com>
> Cc: Stefano Babic <sbabic@denx.de>; Peng Fan <peng.fan@nxp.com>;
> dl-uboot-imx <uboot-imx@nxp.com>; Ye Li <ye.li@nxp.com>; U-Boot-Denx
> <u-boot@lists.denx.de>; Alice Guo <alice.guo@nxp.com>; Otavio Salvador
> <otavio@ossystems.com.br>; andrey.zhizhikin@leica-geosystems.com
> Subject: [EXT] Re: [PATCH v2 2/2] board: imx8mp: add boot.cmd for distro boot
> on iMX8MP
> 
> Caution: EXT Email
> 
> Hi Alice,
> 
> On Fri, Dec 18, 2020 at 4:20 AM Alice Guo (OSS) <alice.guo@oss.nxp.com>
> wrote:
> 
> > +++ b/board/freescale/imx8mp_evk/boot.cmd
> > @@ -0,0 +1,25 @@
> > +setenv bootargs console=${console} root=${mmcroot};
> > +
> > +for boot_target in ${boot_targets};
> 
> This is not how distro boot support works.
> 
> boot.scr or extlinux.conf scripts should be provided by the distro itself (Yocto,
> Buildroot, Debian, etc), and not from U-Boot.
> 
> Each distro has its own partitioning mechanism and may store the kernel, dtb in
> different locations.

Hi,
Can you tell me where I can see more details about boot.scr? I didn't see that " boot.scr or extlinux.conf scripts should be provided by the distro itself".
Thank you.

Alice
Fabio Estevam Dec. 18, 2020, 11:43 a.m. UTC | #3
Hi Alice,

On Fri, Dec 18, 2020 at 8:10 AM Alice Guo (OSS) <alice.guo@oss.nxp.com> wrote:

> Can you tell me where I can see more details about boot.scr? I didn't see that " boot.scr or extlinux.conf scripts should be provided by the distro itself".

I suppose you want to test it using Yocto, so take a look at
wandboard.conf as reference:

https://github.com/Freescale/meta-freescale-3rdparty/blob/master/conf/machine/wandboard.conf

UBOOT_EXTLINUX = "1"
UBOOT_EXTLINUX_ROOT = "root=PARTUUID=${uuid}"
UBOOT_EXTLINUX_CONSOLE = "console=${console},${baudrate}"

Yocto will then generate and place a extlinux.conf file in the rootfs.

Please make sure you align with the NXP Yocto folks and test booting
via distro boot.
Dennis Gilmore Dec. 19, 2020, 5:03 a.m. UTC | #4
boot.scr is only in distro boot because prior to standardising in
extlinux.conf or grub vie efi, distros provided boot.scr files that
were tailored for each board with  detailed staps and memory locations
to load the kernel, dtb, and initramfs. the scripts were wrapped by
mkimage and at this point I would consider it to be a legacy thing
that possibly should be considered for deprecation. grub, extlinux, or
boot.scr should all be provided by the distro. u-boot just nees to
load whats provided.

Dennis

On Fri, Dec 18, 2020 at 5:11 AM Alice Guo (OSS) <alice.guo@oss.nxp.com> wrote:
>
>
>
> > -----Original Message-----
> > From: Fabio Estevam <festevam@gmail.com>
> > Sent: 2020年12月18日 19:03
> > To: Alice Guo (OSS) <alice.guo@oss.nxp.com>
> > Cc: Stefano Babic <sbabic@denx.de>; Peng Fan <peng.fan@nxp.com>;
> > dl-uboot-imx <uboot-imx@nxp.com>; Ye Li <ye.li@nxp.com>; U-Boot-Denx
> > <u-boot@lists.denx.de>; Alice Guo <alice.guo@nxp.com>; Otavio Salvador
> > <otavio@ossystems.com.br>; andrey.zhizhikin@leica-geosystems.com
> > Subject: [EXT] Re: [PATCH v2 2/2] board: imx8mp: add boot.cmd for distro boot
> > on iMX8MP
> >
> > Caution: EXT Email
> >
> > Hi Alice,
> >
> > On Fri, Dec 18, 2020 at 4:20 AM Alice Guo (OSS) <alice.guo@oss.nxp.com>
> > wrote:
> >
> > > +++ b/board/freescale/imx8mp_evk/boot.cmd
> > > @@ -0,0 +1,25 @@
> > > +setenv bootargs console=${console} root=${mmcroot};
> > > +
> > > +for boot_target in ${boot_targets};
> >
> > This is not how distro boot support works.
> >
> > boot.scr or extlinux.conf scripts should be provided by the distro itself (Yocto,
> > Buildroot, Debian, etc), and not from U-Boot.
> >
> > Each distro has its own partitioning mechanism and may store the kernel, dtb in
> > different locations.
>
> Hi,
> Can you tell me where I can see more details about boot.scr? I didn't see that " boot.scr or extlinux.conf scripts should be provided by the distro itself".
> Thank you.
>
> Alice
Stefano Babic Jan. 23, 2021, 3:50 p.m. UTC | #5
> From: Alice Guo <alice.guo@nxp.com>
> Distro Boot requires a U-Boot-specific script named boot.scr or
> boot.scr.uimg which contains boot commands to boot the system. The
> boot.cmd is such a file. Use mkimage to generate boot.scr or
> boot.scr.uimg from boot.cmd, and the command is:
> mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Distro Boot Script" -d boot.cmd boot.scr.uimg
> The boot.cmd file is an example script and can be modified based on
> needs. bootargs is set in this script and root uses the default value
> "/dev/mmcblk1p2 rootwait rw" which can be changed by overriding mmcroot.
> Signed-off-by: Alice Guo <alice.guo@nxp.com>
Applied to u-boot-imx, master, thanks !

Best regards,
Stefano Babic
Dennis Gilmore Feb. 10, 2021, 7:27 p.m. UTC | #6
Hi Stefano,

I really do not think that this patch should have been merged. It is
not the preferred way to boot distros and is left in for legacy
support only.  We probably should make it as such.

Dennis

On Sat, Jan 23, 2021 at 9:53 AM <sbabic@denx.de> wrote:
>
> > From: Alice Guo <alice.guo@nxp.com>
> > Distro Boot requires a U-Boot-specific script named boot.scr or
> > boot.scr.uimg which contains boot commands to boot the system. The
> > boot.cmd is such a file. Use mkimage to generate boot.scr or
> > boot.scr.uimg from boot.cmd, and the command is:
> > mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Distro Boot Script" -d boot.cmd boot.scr.uimg
> > The boot.cmd file is an example script and can be modified based on
> > needs. bootargs is set in this script and root uses the default value
> > "/dev/mmcblk1p2 rootwait rw" which can be changed by overriding mmcroot.
> > Signed-off-by: Alice Guo <alice.guo@nxp.com>
> Applied to u-boot-imx, master, thanks !
>
> Best regards,
> Stefano Babic
>
> --
> =====================================================================
> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic@denx.de
> =====================================================================
Fabio Estevam Feb. 10, 2021, 7:36 p.m. UTC | #7
On Wed, Feb 10, 2021 at 4:28 PM Dennis Gilmore
<dgilmore@fedoraproject.org> wrote:
>
> Hi Stefano,
>
> I really do not think that this patch should have been merged. It is
> not the preferred way to boot distros and is left in for legacy
> support only.  We probably should make it as such.

Yes, I agree with Dennis. We both provided feedback to Alice that this
is not the preferred way to deal with boot distro.

Thanks
Stefano Babic Feb. 10, 2021, 8:06 p.m. UTC | #8
Hi everybody,

On 10.02.21 20:36, Fabio Estevam wrote:
> On Wed, Feb 10, 2021 at 4:28 PM Dennis Gilmore
> <dgilmore@fedoraproject.org> wrote:
>>
>> Hi Stefano,
>>
>> I really do not think that this patch should have been merged. It is
>> not the preferred way to boot distros and is left in for legacy
>> support only.  We probably should make it as such.
> 

Well, patch is already merged and to get back a post for a revert or a 
follow up patch is needed.


> Yes, I agree with Dennis. We both provided feedback to Alice that this
> is not the preferred way to deal with boot distro.

I tend to let freedom to the board maintainers how they want / need to 
setup the linked environment, because this does not affect common i.MX 
code - so Fabio and Peng (the board maintainers) decide here.

Regards,
Stefano
diff mbox series

Patch

diff --git a/board/freescale/imx8mp_evk/boot.cmd b/board/freescale/imx8mp_evk/boot.cmd
new file mode 100644
index 0000000000..10bcced774
--- /dev/null
+++ b/board/freescale/imx8mp_evk/boot.cmd
@@ -0,0 +1,25 @@ 
+setenv bootargs console=${console} root=${mmcroot};
+
+for boot_target in ${boot_targets};
+do
+        if test "${boot_target}" = "mmc1" ; then
+                if fatload mmc 1:${mmcpart} ${kernel_addr_r} ${image}; then
+                        if fatload mmc 1:${mmcpart} ${fdt_addr} ${fdt_file}; then
+                                echo Load image and .dtb from SD card(mmc1);
+                                booti ${kernel_addr_r} - ${fdt_addr};
+                                exit;
+                        fi
+                fi
+        fi
+
+        if test "${boot_target}" = "mmc2" ; then
+                if fatload mmc 2:${mmcpart} ${kernel_addr_r} ${image}; then
+                        if fatload mmc 2:${mmcpart} ${fdt_addr} ${fdt_file}; then
+                                echo Load image and .dtb from eMMC(mmc2);
+                                booti ${kernel_addr_r} - ${fdt_addr};
+                                exit;
+                        fi
+                fi
+        fi
+
+done