75_rootfs_prepare 901 B

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