treewide: replace /sys/devices/virtual/ubi by /sys/class/ubi
[openwrt/staging/aparcar.git] / target / linux / bcm4908 / base-files / lib / preinit / 75_rootfs_prepare
1 # SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
2
3 . /lib/functions/bcm4908.sh
4
5 rootfs_create() {
6 local blocks
7
8 blocks=$(cat /sys/class/ubi/ubi0/avail_eraseblocks)
9 [ -z "$blocks" ] && {
10 echo "Failed to read amount of available erase blocks" >&2
11 return
12 }
13
14 # Use 80% of remaining flash size for "rootfs_data"
15 ubimkvol /dev/ubi0 -n 20 -N rootfs_data --lebs $((blocks / 100 * 80))
16 mknod -m 0600 /dev/ubi0_20 c 252 21
17
18 bcm4908_verify_rootfs_data ubi0_20
19 }
20
21 rootfs_prepare() {
22 # Do nothing on CFE devices
23 ubinfo /dev/ubi0 -N metadata1 > /dev/null 2>&1 || return
24
25 # Find UBI volume device (e.g. ubi0_123)
26 local ubivol="$(grep rootfs_data /sys/class/ubi/ubi*/name | sed -n 's/.*\(ubi\d*_\d*\).*/\1/p')"
27 if [ -n "$ubivol" ]; then
28 bcm4908_verify_rootfs_data $ubivol
29 else
30 echo "Creating \"rootfs_data\" UBI volume"
31 rootfs_create
32 fi
33 }
34
35 boot_hook_add preinit_main rootfs_prepare