overlayfs-etc-preinit.sh.in 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/bin/sh
  2. echo "PREINIT: Start"
  3. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  4. if {CREATE_MOUNT_DIRS}; then
  5. mount -o remount,rw /
  6. mkdir -p /proc
  7. mkdir -p /sys
  8. mkdir -p /run
  9. mkdir -p /var/run
  10. mkdir -p {OVERLAYFS_ETC_MOUNT_POINT}
  11. fi
  12. mount -t proc proc /proc
  13. mount -t sysfs sysfs /sys
  14. [ -z "$CONSOLE" ] && CONSOLE="/dev/console"
  15. BASE_OVERLAY_ETC_DIR={OVERLAYFS_ETC_MOUNT_POINT}/overlay-etc
  16. UPPER_DIR=$BASE_OVERLAY_ETC_DIR/upper
  17. WORK_DIR=$BASE_OVERLAY_ETC_DIR/work
  18. LOWER_DIR=$BASE_OVERLAY_ETC_DIR/lower
  19. if mount -n -t {OVERLAYFS_ETC_FSTYPE} \
  20. -o {OVERLAYFS_ETC_MOUNT_OPTIONS} \
  21. {OVERLAYFS_ETC_DEVICE} {OVERLAYFS_ETC_MOUNT_POINT}
  22. then
  23. mkdir -p $UPPER_DIR
  24. mkdir -p $WORK_DIR
  25. if {OVERLAYFS_ETC_EXPOSE_LOWER}; then
  26. mkdir -p $LOWER_DIR
  27. # provide read-only access to original /etc content
  28. mount -o bind,ro /etc $LOWER_DIR
  29. fi
  30. mount -n -t overlay \
  31. -o upperdir=$UPPER_DIR \
  32. -o lowerdir=/etc \
  33. -o workdir=$WORK_DIR \
  34. -o index=off,xino=off,redirect_dir=off,metacopy=off \
  35. $UPPER_DIR /etc || \
  36. echo "PREINIT: Mounting etc-overlay failed!"
  37. else
  38. echo "PREINIT: Mounting </data> failed!"
  39. fi
  40. umount /sys
  41. umount /proc
  42. echo "PREINIT: done; starting </sbin/init>"
  43. exec {SBIN_INIT_NAME}