55_determine_extroot_sysupgrade 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/bin/sh
  2. # Copyright (C) 2010 Daniel Dickinson
  3. # This is free software, licensed under the GNU General Public License v2.
  4. # See /LICENSE for more information.
  5. check_set_md5sum() {
  6. local er_md5sum_file
  7. er_md5sum_file="${ER_OVERLAY_PREFIX}/.extroot.md5sum"
  8. local er_extroot_md5sum
  9. if [ -f $md5sum_file ]; then
  10. er_extroot_md5sum="$(cat $er_md5sum_file)"
  11. fi
  12. local er_overlay_file="/overlay/etc/extroot.md5sum"
  13. local er_extroot_overlay_md5sum
  14. if [ -f "$er_overlay_file" ]; then
  15. er_extroot_overlay_md5sum="$(cat $er_overlay_file)"
  16. fi
  17. if [ -z "$er_extroot_overlay_md5sum" ]; then
  18. cat $er_md5sum_file >$er_overlay_file
  19. elif [ "$er_extroot_overlay_md5sum" != "$er_extroot_md5sum" ]; then
  20. pi_extroot_mount_success="false"
  21. mkdir -p /tmp/overlay-disabled
  22. mount --move /overlay /tmp/overlay-disabled
  23. fi
  24. }
  25. set_jffs_md5sum() {
  26. # We do this anytime block-extroot exists, even on the first boot with
  27. # no extroot defined.
  28. local er_md5sum_file
  29. er_md5sum_file="${ER_OVERLAY_PREFIX}/.extroot.md5sum"
  30. local er_extroot_md5sum
  31. if [ -f $er_md5sum_file ]; then
  32. er_extroot_md5sum="$(cat $er_md5sum_file)"
  33. fi
  34. if [ -z "$er_extroot_md5sum" ]; then
  35. dd if=/dev/urandom count=32 bs=1k 2>/dev/null | md5sum | cut -f1 -d\ >$er_md5sum_file
  36. fi
  37. }
  38. determine_extroot_sysupgrade() {
  39. check_skip || set_jffs_md5sum
  40. check_skip || [ "$pi_extroot_mount_success" != "true" ] || {
  41. check_set_md5sum
  42. }
  43. }
  44. boot_hook_add preinit_mount_root determine_extroot_sysupgrade