fs/btrfs,overlay
This commit is contained in:
parent
dbc7b21465
commit
d420342387
2 changed files with 0 additions and 0 deletions
75
sh/fs/btrfs.sh
Normal file
75
sh/fs/btrfs.sh
Normal file
|
@ -0,0 +1,75 @@
|
|||
# functions to handle btrfs volumes
|
||||
|
||||
#= bfdf
|
||||
rwx_btrfs_filesystem_d_f() {
|
||||
btrfs \
|
||||
filesystem \
|
||||
df \
|
||||
"${@}"
|
||||
}
|
||||
|
||||
#= bfdu
|
||||
rwx_btrfs_filesystem_d_u() {
|
||||
btrfs \
|
||||
filesystem \
|
||||
du \
|
||||
--summarize \
|
||||
"${@}"
|
||||
}
|
||||
|
||||
#= bfu
|
||||
rwx_btrfs_filesystem_usage() {
|
||||
btrfs \
|
||||
filesystem \
|
||||
usage \
|
||||
"${@}"
|
||||
}
|
||||
|
||||
#= bpg
|
||||
rwx_btrfs_property_get() {
|
||||
btrfs \
|
||||
property \
|
||||
get \
|
||||
"${@}"
|
||||
}
|
||||
|
||||
#= bsc
|
||||
rwx_btrfs_subvolume_create() {
|
||||
btrfs \
|
||||
subvolume \
|
||||
create \
|
||||
"${@}"
|
||||
}
|
||||
|
||||
#= bsd
|
||||
rwx_btrfs_subvolume_delete() {
|
||||
btrfs \
|
||||
subvolume \
|
||||
delete \
|
||||
"${@}"
|
||||
}
|
||||
|
||||
#= bsl
|
||||
rwx_btrfs_subvolume_list() {
|
||||
if [ -n "${1}" ]; then
|
||||
btrfs subvolume list "${1}" |
|
||||
cut --delimiter " " --fields 9 |
|
||||
sort
|
||||
fi
|
||||
}
|
||||
|
||||
#= bss
|
||||
rwx_btrfs_subvolume_snapshot() {
|
||||
btrfs \
|
||||
subvolume \
|
||||
snapshot \
|
||||
"${@}"
|
||||
}
|
||||
|
||||
#= bssr
|
||||
rwx_btrfs_subvolume_snapshot_r() {
|
||||
btrfs \
|
||||
subvolume \
|
||||
snapshot -r \
|
||||
"${@}"
|
||||
}
|
156
sh/fs/overlay.sh
Normal file
156
sh/fs/overlay.sh
Normal file
|
@ -0,0 +1,156 @@
|
|||
# overlay functions to manipulate squashfs manually
|
||||
|
||||
#= obm
|
||||
rwx_overlay_bind_mount() {
|
||||
local directory
|
||||
for directory in "dev" "dev/pts" "proc" "sys"; do
|
||||
if ! mount --bind "/${directory}" "overlay/mount/${directory}"; then
|
||||
rwx_log_error "Unable to bind mount directory: ${directory}"
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
#= obu
|
||||
rwx_overlay_bind_unmount() {
|
||||
local directory
|
||||
for directory in "sys" "proc" "dev/pts" "dev"; do
|
||||
if ! umount --lazy "overlay/mount/${directory}"; then
|
||||
rwx_log_error "Unable to bind unmount directory: ${directory}"
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
#= ocr
|
||||
rwx_overlay_command_root() {
|
||||
chroot \
|
||||
"overlay/mount" "${@}"
|
||||
}
|
||||
|
||||
#= ocu
|
||||
rwx_overlay_command_user() {
|
||||
chroot \
|
||||
--userspec "1000:1000" \
|
||||
"overlay/mount" "${@}"
|
||||
}
|
||||
|
||||
#= omm
|
||||
rwx_overlay_mirror_mount() {
|
||||
mount \
|
||||
--make-rslave \
|
||||
--rbind "/deb" "overlay/mount/deb"
|
||||
}
|
||||
|
||||
#= omu
|
||||
rwx_overlay_mirror_unmount() {
|
||||
umount \
|
||||
--recursive \
|
||||
"overlay/mount/deb"
|
||||
}
|
||||
|
||||
#= orm
|
||||
#| mount
|
||||
rwx_overlay_root_mount() {
|
||||
local root="${1}"
|
||||
if [ -z "${root}" ]; then
|
||||
rwx_log_error "No root target directory"
|
||||
return 1
|
||||
fi
|
||||
root="$(realpath "${root}")"
|
||||
if ! mkdir "overlay"; then
|
||||
rwx_log_error "Unable to make overlay directory"
|
||||
return 2
|
||||
fi
|
||||
(
|
||||
if ! cd "overlay"; then
|
||||
rwx_log_error "Unable to move into overlay directory"
|
||||
return 3
|
||||
fi
|
||||
local directory
|
||||
for directory in "lower" "upper" "work" "mount"; do
|
||||
if ! mkdir --parents "${directory}"; then
|
||||
rwx_log_error "Unable to make directory: ${directory}"
|
||||
return 4
|
||||
fi
|
||||
done
|
||||
local file="${root}/filesystem.squashfs"
|
||||
if ! mount "${file}" "lower"; then
|
||||
rwx_log_error "Unable to lower mount: ${file}"
|
||||
return 5
|
||||
fi
|
||||
if ! mount \
|
||||
-o "lowerdir=lower,upperdir=upper,workdir=work" \
|
||||
-t "overlay" \
|
||||
"overlay" "mount"; then
|
||||
rwx_log_error "Unable to overlay mount"
|
||||
return 6
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
#= ors
|
||||
#| mkdir
|
||||
#| cp
|
||||
#| mksquashfs
|
||||
#| chown
|
||||
rwx_overlay_root_squash() {
|
||||
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
|
||||
}
|
||||
|
||||
#= oru
|
||||
#| umount
|
||||
#| rmdir
|
||||
#| rm
|
||||
#| umount
|
||||
#| rmdir
|
||||
rwx_overlay_root_unmount() {
|
||||
(
|
||||
if ! cd "overlay"; then
|
||||
rwx_log_error "Unable to move into overlay directory"
|
||||
return 1
|
||||
fi
|
||||
if ! umount "mount"; then
|
||||
rwx_log_error "Unable to unmount mount directory"
|
||||
return 2
|
||||
fi
|
||||
if ! rmdir "mount"; then
|
||||
rwx_log_error "Unable to remove mount directory"
|
||||
return 3
|
||||
fi
|
||||
local directory
|
||||
for directory in "upper" "work"; do
|
||||
if ! rm --force --recursive "${directory}"; then
|
||||
rwx_log_error "Unable to remove directory: ${directory}"
|
||||
return 4
|
||||
fi
|
||||
done
|
||||
if ! umount "lower"; then
|
||||
rwx_log_error "Unable to unmount lower directory"
|
||||
return 5
|
||||
fi
|
||||
if ! rmdir "lower"; then
|
||||
rwx_log_error "Unable to remove lower directory"
|
||||
return 6
|
||||
fi
|
||||
)
|
||||
if ! rmdir "overlay"; then
|
||||
rwx_log_error "Unable to remove overlay directory"
|
||||
return 7
|
||||
fi
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue