Commit Graph

17 Commits

Author SHA1 Message Date
Isaac Hermida 6325cddb21 mount_digiparts: detect active block root by mounted device
Bootable SD cards may boot with root=/dev/mmcblkXpY instead of
root=PARTUUID=... In that case mount_digiparts.sh treated the system
as NAND/UBI and failed to mount the Digi partitions.
Resolve the active system from the block device mounted as "/" before
falling back to the existing UBI logic.

https://onedigi.atlassian.net/browse/DEL-9676

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2026-05-21 18:54:10 +02:00
Isaac Hermida 58577373ba mount: fix intermittent data partition automount
The udev mount script always queried the active system before mounting
any partition. On eMMC systems this lookup used /dev/disk/by-partlabel,
which is populated by udev itself and may still be incomplete and the
script exited for that partition.
Only resolve the active system for linux_a/linux_b, and read the eMMC
root partition name from sysfs instead of the udev-created by-partlabel
links.

https://onedigi.atlassian.net/browse/DEL-10131

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2026-05-13 19:23:19 +02:00
Isaac Hermida e2caf16da4 mount: use the ubi class to check for attached devices
Use the generic sys class to check if a mtd device is attached.
The virtual node may not be present in some kernel versions.

Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
2024-04-26 14:10:14 +02:00
Francisco Gil 01c5b1f329 mount: remove dependencies from fw_getenv in mount script
https://onedigi.atlassian.net/browse/DEL-8582

Signed-off-by: Francisco Gil <francisco.gilmartinez@digi.com>
2023-11-13 17:23:06 +01:00
Hector Palacios 8c0dc9af13 udev-extraconf: adapt mount rules and script for new ccmp1 partition table
The ccmp1 has two MTD partitions (UBI, UBI_2) with different system
volumes.
Previously, the fact of having two ubi devices was taken as proof of
being on a multi-MTD system (one that has one UBI volume per partition).
Instead, this commit reformulates the condition to having a partition of
the same name than the UBI volume.

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
2023-09-01 17:16:32 +02:00
David Escalona 1fe98681ac meta-digi-arm: udev: mount_digiparts: minor script syntax fix
Signed-off-by: David Escalona <david.escalona@digi.com>
2023-08-02 10:22:13 +02:00
David Escalona a84d011f16 meta-digi-arm: udev: mount_digiparts: fix script for R/O systems
When the system runs as read-only with '/etc' overlayfs enabled, '/sbin/init' is not a symlink
to 'systemd', but '/sbin/init.orig' is. This causes the script to wrongly think than 'systemd'
is not being used. The outcome is that partitions are not being automatically mounted in R/O
systems running in mmc with '/etc' overlayfs enabled, as the specific '/usr/bin/systemd-mount'
binary needs to be invoked in these cases.

The proposed fix performs a second check with '/sbin/init.orig' to determine whether systemd is
being used or not. While on it, add an early check to determine if the partition is already
mounted to exit the script.

Signed-off-by: David Escalona <david.escalona@digi.com>
2023-07-27 10:13:50 +02:00
Francisco Gil 02f7753918 udev: dualboot: include linux_a/b to partitions to be mounted as ro
Signed-off-by: Francisco Gil <francisco.gilmartinez@digi.com>
2023-06-07 16:36:54 +02:00
David Escalona bf88deb602 mount_digiparts.sh: add unit running check for systemd devices
For devices running 'systemd', the mount process is done through 'systemd-mount', which
spawns a system unit. Trying to mount the partition again throws an error stating that a
unit with the same name is already running. To avoid it, check if the unit is already
spawned before mounting the partition and, if so, just restart the unit.

Signed-off-by: David Escalona <david.escalona@digi.com>
2023-03-27 17:36:32 +02:00
Tatiana Leon 1d813fe460 cc6ul: mount_digiparts.sh: fix mount of 'update' partition
This commit fixes the issue in Jira
https://onedigi.atlassian.net/browse/DEL-7827 (and in GitHub
91bfa01a52#),
that is being manifest again in a CC6UL with 1GB although it may affect other
hardware.

Partitions are mounted:
   * For multi-MTD systems, when an MTD subsystem event is received.
   * For single-MTD systems, when a UBI subsystem event is received.

This commit avoids process UBI subsystem events in multi-MTD systems.
The automount rules filter UBI subsystem events to only process 'ubi0*' (the
only UBI device/volumes in a single-MTD) and then the executed script
'mount_digiparts.sh' checks for the existance of '/dev/ubi1' node to consider
the system multi-MTD instead of using 'singlemtdsys' U-Boot variable that only
exists on CC6UL.

Signed-off-by: Tatiana Leon <Tatiana.Leon@digi.com>
2022-11-18 14:41:17 +01:00
Tatiana Leon 883141830a mount_digiparts.sh: some script improvements
* Use 'MOUNT' variable instead of 'mount' command
* On the MTD subsystem event, stop looping once the UBI device number is found

Signed-off-by: Tatiana Leon <Tatiana.Leon@digi.com>
2022-11-18 14:41:17 +01:00
Arturo Buzarra 4d07069448 mount_digiparts.sh: add support to dualboot volumes on read-only mode
This commit allows to mount only the linux partition active in read-only mode.

https://onedigi.atlassian.net/browse/DEL-8193

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2022-11-17 17:48:34 +01:00
Arturo Buzarra 5be7db1f9f mount_digiparts.sh: fix support to UBI volumes on systemd
According to udev documentation running programs that access to mount/umount
filesystems is not allowed due to the default sandbox that is enforced on
systemd-udevd.service, so on systemd systems we must to use systemd-mount
binary instead of mount. Also systemd-mount does not support mount ubi devices
by volume name, so we need to use the absolute device path.

https://onedigi.atlassian.net/browse/DEL-8193

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
2022-11-17 17:48:34 +01:00
Hector Palacios e346958131 ccmp1: remove usage of $singlemtdsys variable
On the CCMP1 SOMs, we only consider a single system partition called UBI,
with many UBI volumes.
The variable 'singlemtdsys' allowed to change between this and
a system with multiple MTD partitions with one UBI volume each
(old approach on CC6UL).
This commit removes the variable and uses the logic as if it was set.

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
2022-10-25 16:57:02 +02:00
Gabriel Valcazar 600c3d7790 mount_digiparts.sh: run single MTD layout code path only when appropriate
This code path was added in the context of single MTD layout support for
ccimx6ul boards, but it was being executed in the default storage layout use
case as well. This could trigger a race condition in which one code path
deletes the mount point while the other one is still setting it up, causing
partitions to not be mounted automatically (specifically, the "update"
partition).

Since both code paths are mutually exclusive in our implementation, reflect
this by making sure that the single MTD layout path is executed only when said
layout is enabled in the U-Boot environment.

https://onedigi.atlassian.net/browse/DEL-7827

Signed-off-by: Gabriel Valcazar <gabriel.valcazar@digi.com>
(cherry picked from commit 9a7ea10a4dfb74651f865f125372604fe6840a10)
2022-04-06 10:51:30 +02:00
Hector Palacios 91bfa01a52 udev: automount UBI volumes named "linux" or "recovery"
Traditionally, platforms based on NAND, used one UBI volume
per MTD partition.
Now it's possible to use only one MTD partition containing many
UBI volumes.

Signed-off-by: Hector Palacios <hector.palacios@digi.com>

https://onedigi.atlassian.net/browse/DEL-7614
2021-09-09 17:38:44 +02:00
Hector Palacios 435e085690 udev-extraconf: update mount scripts to support systemd
The current scripts used the standard mount binary at /bin/mount
for mounting the partitions. Systemd however seems to have a monitor
that eventually umounts such partitions if not mounted by systemd's
specific command 'systemd-mount`.

For platforms using systemd, we need to use this binary together with
parameter --no-block so that partitions are mounted correctly during
the boot process.

This commit merges the two scripts for Digi-handled partitions into
just one:

	mount_bootparts.sh
                          \
                           +--> mount_digiparts.sh
                          /
        mount_partition.sh

The merged script:
 - checks if running with systemd, to use its binary.
 - checks if running with busybox, to not use the unsupported '-o'
   attribute.
 - checks if mounting the 'linux' partition, to mount it read-only.
 - checks for already-attached UBI devices, to avoid re-attaching.

This commit also combines the Digi-handled partitions (linux, update)
into the same udev rule, to simplify it, and breaks the rules lines
for readability.

Signed-off-by: Hector Palacios <hector.palacios@digi.com>

https://jira.digi.com/browse/DEL-6744
2019-09-13 10:54:58 +02:00