mo() { local root="${1}" if [ -z "${root}" ]; then log_error "No root" return 1 fi root="$(realpath "${root}")" if ! mkdir "overlay"; then log_error "Unable to make mount directory" return 2 fi { if ! cd "overlay"; then log_error "Unable to move into mount directory" return 3 fi local directory for directory in "lower" "upper" "work" "mount"; do if ! mkdir --parents "${directory}"; then log_error "Unable to move into: ${directory}" return 4 fi done local file="${root}/filesystem.squashfs" if ! mount "${file}" "lower"; then log_error "Unable to mount: ${file}" return 5 fi if ! mount \ -o "lowerdir=lower,upperdir=upper,workdir=work" \ -t "overlay" \ "overlay" "mount"; then log_error "Unable to mount: ${file}" return 6 fi } } uo() { cd "overlay" if umount "mount"; then rmdir "mount" rm --recursive "upper" "work" if umount "lower"; then rmdir "lower" fi fi cd .. rmdir "overlay" } mr() { local f for f in "dev" "dev/pts" "proc" "sys"; do mount --bind "/${f}" "overlay/mount/${f}" done } alias cr="\ chroot \ \"overlay/mount\" \ " alias cru="\ chroot \ --userspec \"1000:1000\" \ \"overlay/mount\" \ " ur() { local f for f in "sys" "proc" "dev/pts" "dev"; do umount --lazy "overlay/mount/${f}" done } mm() { mount --make-rslave --rbind "/deb" "overlay/mount/deb" } um() { umount --recursive "overlay/mount/deb" } ms() { local directory="${1}" local file local level="${2}" if [ -n "${directory}" ]; then if mkdir "${directory}"; then [ -n "${level}" ] || level="18" for file in "vmlinuz" "initrd.img"; do cp "overlay/mount/${file}" "${directory}" done mksquashfs \ "overlay/mount" "${directory}/filesystem.squashfs" \ -noappend \ -comp "zstd" -Xcompression-level "${level}" chown --recursive 1000:1000 "${directory}" fi fi }