Discussion:
[PATCH v5] arm: boards: phytec-som-am335x: Update boot scripts
Daniel Schultz
2017-06-20 15:42:22 UTC
Permalink
Expand the boot scripts with EMMC and add a default file source for
expansions.

Removed "rw" and "rootwait" bootargs from existing boot scripts.
Added "rootflags='data=journal'" bootarg to SD card boot script.

Signed-off-by: Daniel Schultz <***@phytec.de>
---
.../phytec-som-am335x/defaultenv-physom-am335x/boot/emmc | 5 +++++
.../phytec-som-am335x/defaultenv-physom-am335x/boot/mmc | 7 +++----
.../phytec-som-am335x/defaultenv-physom-am335x/boot/nand | 2 +-
.../phytec-som-am335x/defaultenv-physom-am335x/boot/spi | 2 +-
.../defaultenv-physom-am335x/init/bootsource | 16 ++++++++++++----
5 files changed, 22 insertions(+), 10 deletions(-)
create mode 100644 arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/emmc

diff --git a/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/emmc b/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/emmc
new file mode 100644
index 0000000..b1792a6
--- /dev/null
+++ b/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/emmc
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+global.bootm.image=/mnt/mmc1.0/linuximage
+global.bootm.oftree=/mnt/mmc1.0/oftree
+global.linux.bootargs.dyn.root="root=/dev/mmcblk1p2 rootflags='data=journal'"
diff --git a/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/mmc b/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/mmc
index 834669d..77a076d 100644
--- a/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/mmc
+++ b/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/mmc
@@ -1,6 +1,5 @@
#!/bin/sh

-global.bootm.image=/boot/linuximage
-global.bootm.oftree=/boot/oftree
-
-global.linux.bootargs.dyn.root="root=/dev/mmcblk0p2 rw rootwait"
+global.bootm.image=/mnt/mmc0.0/linuximage
+global.bootm.oftree=/mnt/mmc0.0/oftree
+global.linux.bootargs.dyn.root="root=/dev/mmcblk0p2 rootflags='data=journal'"
diff --git a/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/nand b/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/nand
index ece44b7..33f5f02 100644
--- a/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/nand
+++ b/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/nand
@@ -5,4 +5,4 @@
global.bootm.image="/dev/nand0.root.ubi.kernel"
global.bootm.oftree="/dev/nand0.root.ubi.oftree"

-global.linux.bootargs.dyn.root="root=ubi0:root ubi.mtd=root rw rootfstype=ubifs"
+global.linux.bootargs.dyn.root="root=ubi0:root ubi.mtd=root rootfstype=ubifs"
diff --git a/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/spi b/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/spi
index 71c5834..a321aa9 100644
--- a/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/spi
+++ b/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/boot/spi
@@ -4,4 +4,4 @@ global.bootm.image="/dev/m25p0.kernel"
global.bootm.oftree="/dev/m25p0.oftree"

# Use rootfs from NAND
-global.linux.bootargs.dyn.root="root=ubi0:root ubi.mtd=nand0.root rw rootfstype=ubifs"
+global.linux.bootargs.dyn.root="root=ubi0:root ubi.mtd=nand0.root rootfstype=ubifs"
diff --git a/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/init/bootsource b/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/init/bootsource
index 3f2ff4b..61a0879 100644
--- a/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/init/bootsource
+++ b/arch/arm/boards/phytec-som-am335x/defaultenv-physom-am335x/init/bootsource
@@ -4,12 +4,20 @@ if [ -n "$nv.boot.default" ]; then
exit
fi

-if [ $bootsource = mmc ]; then
- global.boot.default="mmc nand spi net"
+if [ -e /dev/mmc1.0 ]; then
+ nvmem="emmc"
+else
+ nvmem="nand"
+fi
+
+if [ $bootsource = mmc -a $bootsource_instance = 1 ]; then
+ global.boot.default="emmc mmc spi net"
+elif [ $bootsource = mmc -a $bootsource_instance = 0 ]; then
+ global.boot.default="mmc $nvmem spi net"
elif [ $bootsource = nand ]; then
global.boot.default="nand spi mmc net"
elif [ $bootsource = spi ]; then
- global.boot.default="spi nand mmc net"
+ global.boot.default="spi $nvmem mmc net"
elif [ $bootsource = net ]; then
- global.boot.default="net nand spi mmc"
+ global.boot.default="net $nvmem spi mmc"
fi
--
1.9.1
Sascha Hauer
2017-06-26 06:35:54 UTC
Permalink
Post by Daniel Schultz
Expand the boot scripts with EMMC and add a default file source for
expansions.
Removed "rw" and "rootwait" bootargs from existing boot scripts.
Why is "rootwait" removed? From my experience adding "rootwait" is
pretty essential when booting from mmc. Has that changed?
Post by Daniel Schultz
-if [ $bootsource = mmc ]; then
- global.boot.default="mmc nand spi net"
+if [ -e /dev/mmc1.0 ]; then
+ nvmem="emmc"
+else
+ nvmem="nand"
+fi
+
+if [ $bootsource = mmc -a $bootsource_instance = 1 ]; then
+ global.boot.default="emmc mmc spi net"
+elif [ $bootsource = mmc -a $bootsource_instance = 0 ]; then
+ global.boot.default="mmc $nvmem spi net"
elif [ $bootsource = nand ]; then
global.boot.default="nand spi mmc net"
elif [ $bootsource = spi ]; then
- global.boot.default="spi nand mmc net"
+ global.boot.default="spi $nvmem mmc net"
elif [ $bootsource = net ]; then
- global.boot.default="net nand spi mmc"
+ global.boot.default="net $nvmem spi mmc"
fi
Normally the desired behaviour is that the bootsource can be changed
persistently by setting nv.boot.default to the desired source. This
does not work when global.boot.default gets overwritten after the nvvars
have been read from the environment.

This behaviour is not changed with this patch, but I would welcome a
patch that changes this script to the desired behaviour. This could
be done by changing global.boot.default only when nv.boot.default is
empty.

Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
Daniel Schultz
2017-06-27 09:45:44 UTC
Permalink
Hi Sascha,
Post by Sascha Hauer
Post by Daniel Schultz
Expand the boot scripts with EMMC and add a default file source for
expansions.
Removed "rw" and "rootwait" bootargs from existing boot scripts.
Why is "rootwait" removed? From my experience adding "rootwait" is
pretty essential when booting from mmc. Has that changed?
Ah that's a good point! We add these commands in Yocto, but I forgot the
use case without Yocto. So I will add a nv/linux.bootargs.rootfs file
with "rootwait ro fsck.repair=yes" (fsck.repair is a systemd unit).
Post by Sascha Hauer
Post by Daniel Schultz
-if [ $bootsource = mmc ]; then
- global.boot.default="mmc nand spi net"
+if [ -e /dev/mmc1.0 ]; then
+ nvmem="emmc"
+else
+ nvmem="nand"
+fi
+
+if [ $bootsource = mmc -a $bootsource_instance = 1 ]; then
+ global.boot.default="emmc mmc spi net"
+elif [ $bootsource = mmc -a $bootsource_instance = 0 ]; then
+ global.boot.default="mmc $nvmem spi net"
elif [ $bootsource = nand ]; then
global.boot.default="nand spi mmc net"
elif [ $bootsource = spi ]; then
- global.boot.default="spi nand mmc net"
+ global.boot.default="spi $nvmem mmc net"
elif [ $bootsource = net ]; then
- global.boot.default="net nand spi mmc"
+ global.boot.default="net $nvmem spi mmc"
fi
Normally the desired behaviour is that the bootsource can be changed
persistently by setting nv.boot.default to the desired source. This
does not work when global.boot.default gets overwritten after the nvvars
have been read from the environment.
This behaviour is not changed with this patch, but I would welcome a
patch that changes this script to the desired behaviour. This could
be done by changing global.boot.default only when nv.boot.default is
empty.
This is already implemented by a test above these changes, isn't it?

snippet from init/bootsource:
1 #!/bin/sh

2

3 if [ -n "$nv.boot.default" ]; then

4 exit

5 fi

6

7 if [ -e /dev/mmc1.0 ]; then
...
Post by Sascha Hauer
Sascha
--
Mit freundlichen Grüßen,
With best regards,
Daniel Schultz
Sascha Hauer
2017-06-27 14:36:17 UTC
Permalink
Post by Daniel Schultz
Hi Sascha,
Post by Sascha Hauer
Normally the desired behaviour is that the bootsource can be changed
persistently by setting nv.boot.default to the desired source. This
does not work when global.boot.default gets overwritten after the nvvars
have been read from the environment.
This behaviour is not changed with this patch, but I would welcome a
patch that changes this script to the desired behaviour. This could
be done by changing global.boot.default only when nv.boot.default is
empty.
This is already implemented by a test above these changes, isn't it?
1 #!/bin/sh
2
3 if [ -n "$nv.boot.default" ]; then
4 exit
5 fi
Yes, right, that already does it. Sorry for the noise.

Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
Loading...