On Wed, Apr 23, 2025 at 04:09:12PM +0200, Marco Felsch wrote: > This adds the support to automatically create a minimal GPT table. > > gpt-add: A script to add a minimal GPT table compatible to i.MX3/5/6/7 > devices. The initial GPT only contains a barebox-environment partition. > The script checks for the bootsource to decide the GPT location. > > gpt-rm: A script to remove the GPT header and the protective MBR. The > script checks for the bootsource to decide which GPT should be scrubbed. > > bbenv-gpt: An initscript which checks for a barebox-environment > partition if booted from MMC. If no parition was found the script > triggers the gpt-add script.
Can we have a command for this rather than a script? We might want to extend this functionality and it looks like the shell gets to its limits quite fast here. Sascha > > Signed-off-by: Marco Felsch <m.fel...@pengutronix.de> > --- > v2: > - new > > defaultenv/defaultenv-2-base/bin/gpt-add | 40 +++++++++++++++++++++ > defaultenv/defaultenv-2-base/bin/gpt-rm | 10 ++++++ > defaultenv/defaultenv-2-base/init/bbenv-gpt | 16 +++++++++ > 3 files changed, 66 insertions(+) > create mode 100644 defaultenv/defaultenv-2-base/bin/gpt-add > create mode 100644 defaultenv/defaultenv-2-base/bin/gpt-rm > create mode 100644 defaultenv/defaultenv-2-base/init/bbenv-gpt > > diff --git a/defaultenv/defaultenv-2-base/bin/gpt-add > b/defaultenv/defaultenv-2-base/bin/gpt-add > new file mode 100644 > index 000000000000..fa61b1929e20 > --- /dev/null > +++ b/defaultenv/defaultenv-2-base/bin/gpt-add > @@ -0,0 +1,40 @@ > +#!/bin/sh > + > +bootdev="/dev/${bootsource}${bootsource_instance}" > +yesno="" > + > +if [ ${bootsource} != "mmc" ]; then > + exit 0 > +fi > + > +# If successful, there is already a GPT or MBR header > +# TODO: Add hush redirect support to avoid user confusion > +if parted ${bootdev} print; then > + exit 0 > +fi > + > +readline "Create an initial GPT for barebox? [y|N]: " yesno > + > +# No per default > +if [ "${yesno}" == "" ]; then > + exit 0 > +elif [ "${yesno}" == "n" ]; then > + exit 0 > +fi > + > +# Check for other user input than 'y' > +if [ "${yesno}" != "y" ]; then > + echo "Unkown value, only 'y' and 'n' are supported" > + exit 1 > +fi > + > +# Make a default GPT table, with the GPT partition entrie array starting at > 2MiB > +# to have enough space for barebox at the beginning and to overcome legacy > +# platforms like i.MX3/5/6. > +parted ${bootdev} mklabel gpt 2MiB || gpt-rm > + > +# Add a barebox environment partition with the size of 1MiB which should be > +# enough for development. > +parted ${bootdev} mkpart barebox-environment bbenv 3MiB 4MiB || gpt-rm > + > +parted ${bootdev} refresh > diff --git a/defaultenv/defaultenv-2-base/bin/gpt-rm > b/defaultenv/defaultenv-2-base/bin/gpt-rm > new file mode 100644 > index 000000000000..e45c79395504 > --- /dev/null > +++ b/defaultenv/defaultenv-2-base/bin/gpt-rm > @@ -0,0 +1,10 @@ > +#!/bin/sh > + > +bootdev="/dev/${bootsource}${bootsource_instance}" > + > +if [ ${bootsource} != "mmc" ]; then > + exit 0 > +fi > + > +# Remove protective MBR and GPT from boot device > +memset -d ${bootdev} 0x100 0x0 0x300 > diff --git a/defaultenv/defaultenv-2-base/init/bbenv-gpt > b/defaultenv/defaultenv-2-base/init/bbenv-gpt > new file mode 100644 > index 000000000000..6756cac9885e > --- /dev/null > +++ b/defaultenv/defaultenv-2-base/init/bbenv-gpt > @@ -0,0 +1,16 @@ > +#!/bin/sh > + > +bbenvpart="/dev/${bootsource}${bootsource_instance}.barebox-environment" > + > +if [ ${bootsource} != "mmc" ]; then > + exit 0 > +fi > + > +# TODO: > +# Add command support to search for a given GPT PartUUID on a block device to > +# be partition name independent. > +if [ -e ${bbenvpart} ]; then > + exit 0 > +fi > + > +gpt-add > -- > 2.39.5 > > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |