diff mbox series

[meta-rockchip,1/4] rename root partition

Message ID 20240522230808.14409-1-twoerner@gmail.com
State New
Headers show
Series [meta-rockchip,1/4] rename root partition | expand

Commit Message

Trevor Woerner May 22, 2024, 11:08 p.m. UTC
Rename the root partition to "rootfsA" in the off-chance the user may someday
be interested in implementing some sort of whole-partition update mechanism.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
---
 conf/machine/include/rockchip-extlinux.inc | 2 +-
 wic/rockchip.wks                           | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Quentin Schulz May 23, 2024, 7:52 a.m. UTC | #1
Hi Trevor,

On 5/23/24 1:08 AM, Trevor Woerner via lists.yoctoproject.org wrote:
> Rename the root partition to "rootfsA" in the off-chance the user may someday
> be interested in implementing some sort of whole-partition update mechanism.
> 

But... wouldn't they need to write their own wks file for it anyway 
since they would need to add an additional partition?

Basically, I'm not sure we need to half-support those use-cases :)

Otherwise, looks good to me.

> Signed-off-by: Trevor Woerner <twoerner@gmail.com>
> ---
>   conf/machine/include/rockchip-extlinux.inc | 2 +-
>   wic/rockchip.wks                           | 2 +-
>   2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/conf/machine/include/rockchip-extlinux.inc b/conf/machine/include/rockchip-extlinux.inc
> index ca33f4c7f42a..ab46b76d33a1 100644
> --- a/conf/machine/include/rockchip-extlinux.inc
> +++ b/conf/machine/include/rockchip-extlinux.inc
> @@ -12,7 +12,7 @@
>   NONFITDT ?= "${@d.getVar('KERNEL_DEVICETREE').split('/')[1]}"
>   
>   UBOOT_EXTLINUX ?= "1"
> -UBOOT_EXTLINUX_ROOT ?= "root=PARTLABEL=root"
> +UBOOT_EXTLINUX_ROOT ?= "root=PARTLABEL=rootfsA"
>   UBOOT_EXTLINUX_FDTDIR ?= "${@bb.utils.contains('KERNEL_IMAGETYPE', 'fitImage', '', '/boot', d)}"
>   UBOOT_EXTLINUX_FDT ?= "${@bb.utils.contains('KERNEL_IMAGETYPE', 'fitImage', '', '${NONFITDT}', d)}"
>   UBOOT_EXTLINUX_CONSOLE ?= "earlycon console=tty1 console=${RK_CONSOLE_DEVICE},${RK_CONSOLE_BAUD}n8"
> diff --git a/wic/rockchip.wks b/wic/rockchip.wks
> index bc65f73b0cf3..e1d74d9983ab 100644
> --- a/wic/rockchip.wks
> +++ b/wic/rockchip.wks
> @@ -26,6 +26,6 @@ part uboot_env --offset 8128s  --fixed-size 32K   --fstype=none --part-name uboo
>   part reserved2 --offset 8192s  --fixed-size 4096K --fstype=none --part-name reserved2
>   part loader2   --offset 16384s --fixed-size 4096K --fstype=none --part-name loader2   --source rawcopy --sourceparams="file=u-boot.${UBOOT_SUFFIX}"
>   part atf       --offset 24576s --fixed-size 4096K --fstype=none --part-name atf
> -part /         --label root    --active           --fstype=ext4 --part-name root      --source rootfs
> +part /         --label rootfsA --active           --fstype=ext4 --part-name rootfsA   --source rootfs
>   
>   bootloader --ptable gpt
Trevor Woerner May 23, 2024, 8:29 p.m. UTC | #2
On Thu 2024-05-23 @ 09:52:21 AM, Quentin Schulz via lists.yoctoproject.org wrote:
> Hi Trevor,
> 
> On 5/23/24 1:08 AM, Trevor Woerner via lists.yoctoproject.org wrote:
> > Rename the root partition to "rootfsA" in the off-chance the user may someday
> > be interested in implementing some sort of whole-partition update mechanism.
> > 
> 
> But... wouldn't they need to write their own wks file for it anyway since
> they would need to add an additional partition?

Not necessarily. If you look at the example I give (patch 4/4) I'm not
touching the wic file at all; all the repartitioning is done via systemd's
`repart` mechanism. This has many advantages!

wic isn't "target device" aware, so if you flash it to a 16GB device versus a
32GB one, you have to design your wic to satisfy the smallest one otherwise
the bmaptool'ing/dd'ing will fail if your user uses a small device. If you
target a small device and your user uses a large device then they've wasted
space. You either have to hard-code the sizes in wic, which means you have to
make assumptions, or let wic do its "i'm going to take your filesystem and add
X%"

Secondly, if you add multiple copies of your root filesystem in your wic
layout, then when you bmaptool/dd your image, you're wasting time duplicating
the root filesystem a 2nd, 3rd, 4th... time, none of which you'll ever use. If
you have 2 exact copies of your root filesystem on your drive, you're never
going to reboot into the other partition as-is, you'll update the other
partition, then try booting into it. So adding additional root partitions via
wic increases the image size, increases the flashing time, and it's all
wasted.

So solving the multiple partition problem via wic isn't a great solution.

Using systemd+repart is perfect because it allows your image size to be as
small as possible (since it only has the one root partition in the image,
and it is the normal "size of partition + X%" size), but still have all the
additional partitions once you're up and running. The existing root partition
will be expanded, and additional ones added. And the user can specify their
sizes as a percentage of the total, so they're not needlessly small on larger
devices, or require a minimum size. There is a cost the first time you boot
while systemd does all the repartitioning, but that's only paid the one time.
In theory you could change your partitioning scheme by redefining the repart
configuration files, but it may be anyone's guess if any specific change might
actually work.

> Basically, I'm not sure we need to half-support those use-cases :)

The one and only root partition could be named anything... rootfsA is as good
a name as any ;-)

> Otherwise, looks good to me.
> 
> > Signed-off-by: Trevor Woerner <twoerner@gmail.com>
> > ---
> >   conf/machine/include/rockchip-extlinux.inc | 2 +-
> >   wic/rockchip.wks                           | 2 +-
> >   2 files changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/conf/machine/include/rockchip-extlinux.inc b/conf/machine/include/rockchip-extlinux.inc
> > index ca33f4c7f42a..ab46b76d33a1 100644
> > --- a/conf/machine/include/rockchip-extlinux.inc
> > +++ b/conf/machine/include/rockchip-extlinux.inc
> > @@ -12,7 +12,7 @@
> >   NONFITDT ?= "${@d.getVar('KERNEL_DEVICETREE').split('/')[1]}"
> >   UBOOT_EXTLINUX ?= "1"
> > -UBOOT_EXTLINUX_ROOT ?= "root=PARTLABEL=root"
> > +UBOOT_EXTLINUX_ROOT ?= "root=PARTLABEL=rootfsA"
> >   UBOOT_EXTLINUX_FDTDIR ?= "${@bb.utils.contains('KERNEL_IMAGETYPE', 'fitImage', '', '/boot', d)}"
> >   UBOOT_EXTLINUX_FDT ?= "${@bb.utils.contains('KERNEL_IMAGETYPE', 'fitImage', '', '${NONFITDT}', d)}"
> >   UBOOT_EXTLINUX_CONSOLE ?= "earlycon console=tty1 console=${RK_CONSOLE_DEVICE},${RK_CONSOLE_BAUD}n8"
> > diff --git a/wic/rockchip.wks b/wic/rockchip.wks
> > index bc65f73b0cf3..e1d74d9983ab 100644
> > --- a/wic/rockchip.wks
> > +++ b/wic/rockchip.wks
> > @@ -26,6 +26,6 @@ part uboot_env --offset 8128s  --fixed-size 32K   --fstype=none --part-name uboo
> >   part reserved2 --offset 8192s  --fixed-size 4096K --fstype=none --part-name reserved2
> >   part loader2   --offset 16384s --fixed-size 4096K --fstype=none --part-name loader2   --source rawcopy --sourceparams="file=u-boot.${UBOOT_SUFFIX}"
> >   part atf       --offset 24576s --fixed-size 4096K --fstype=none --part-name atf
> > -part /         --label root    --active           --fstype=ext4 --part-name root      --source rootfs
> > +part /         --label rootfsA --active           --fstype=ext4 --part-name rootfsA   --source rootfs
> >   bootloader --ptable gpt
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#172): https://lists.yoctoproject.org/g/yocto-patches/message/172
> Mute This Topic: https://lists.yoctoproject.org/mt/106253213/900817
> Group Owner: yocto-patches+owner@lists.yoctoproject.org
> Unsubscribe: https://lists.yoctoproject.org/g/yocto-patches/leave/13168745/900817/63955952/xyzzy [twoerner@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
> 
>
diff mbox series

Patch

diff --git a/conf/machine/include/rockchip-extlinux.inc b/conf/machine/include/rockchip-extlinux.inc
index ca33f4c7f42a..ab46b76d33a1 100644
--- a/conf/machine/include/rockchip-extlinux.inc
+++ b/conf/machine/include/rockchip-extlinux.inc
@@ -12,7 +12,7 @@ 
 NONFITDT ?= "${@d.getVar('KERNEL_DEVICETREE').split('/')[1]}"
 
 UBOOT_EXTLINUX ?= "1"
-UBOOT_EXTLINUX_ROOT ?= "root=PARTLABEL=root"
+UBOOT_EXTLINUX_ROOT ?= "root=PARTLABEL=rootfsA"
 UBOOT_EXTLINUX_FDTDIR ?= "${@bb.utils.contains('KERNEL_IMAGETYPE', 'fitImage', '', '/boot', d)}"
 UBOOT_EXTLINUX_FDT ?= "${@bb.utils.contains('KERNEL_IMAGETYPE', 'fitImage', '', '${NONFITDT}', d)}"
 UBOOT_EXTLINUX_CONSOLE ?= "earlycon console=tty1 console=${RK_CONSOLE_DEVICE},${RK_CONSOLE_BAUD}n8"
diff --git a/wic/rockchip.wks b/wic/rockchip.wks
index bc65f73b0cf3..e1d74d9983ab 100644
--- a/wic/rockchip.wks
+++ b/wic/rockchip.wks
@@ -26,6 +26,6 @@  part uboot_env --offset 8128s  --fixed-size 32K   --fstype=none --part-name uboo
 part reserved2 --offset 8192s  --fixed-size 4096K --fstype=none --part-name reserved2
 part loader2   --offset 16384s --fixed-size 4096K --fstype=none --part-name loader2   --source rawcopy --sourceparams="file=u-boot.${UBOOT_SUFFIX}"
 part atf       --offset 24576s --fixed-size 4096K --fstype=none --part-name atf
-part /         --label root    --active           --fstype=ext4 --part-name root      --source rootfs
+part /         --label rootfsA --active           --fstype=ext4 --part-name rootfsA   --source rootfs
 
 bootloader --ptable gpt