linux_privacy
· 2w
Droidian - более мобильный аналог Mobian.
https://droidian.org/
Если Mobian - это чистый дебиан на телефоне, то droidian - это дебиан с ...
Режим работы в памяти уже отличается сильно от мобиан - не получится просто так засунуть скрипт в initramfs, чтобы система, как в tails, запускалась в памяти при запуске. Поэтому будем пользоваться этим режимом в уже запущенной системе, создав переключатель, в котором надо будет просто ввести команду sudo overlay on. в скрипте в TARGET_DIRS можно указать либо весь корень, либо отдельные папки. Корень лучше не указывать, иначе swapfile не будет работать и напряг памяти увеличится. создайте скрипт в /usr/local/bin/overlay:
#!/bin/bash
# Toggle overlay mode for /etc and /var
UPPER_BASE="/mnt/overlay-persistent" # Change to tmpfs path for ephemeral
STATE_FILE="/run/overlay-active"
TARGET_DIRS="/etc /var /home /root /usr /opt"
toggle_on() {
[ -f "$STATE_FILE" ] && { echo "Already active"; exit 1; }
mkdir -p "$UPPER_BASE"
mount -t tmpfs -o size=50% tmpfs "$UPPER_BASE"
for dir in $TARGET_DIRS; do
local name=$(echo "$dir" | tr '/' '-')
local upper="$UPPER_BASE/$name-upper"
local work="$UPPER_BASE/$name-work"
local lower="$UPPER_BASE/$name-lower"
mkdir -p "$upper" "$work" "$lower"
# Bind-mount original to preserve access
mount --bind "$dir" "$lower"
mount --make-private "$lower"
# Mount overlay
mount -t overlay -o "lowerdir=$lower,upperdir=$upper,workdir=$work" overlay "$dir"
echo "Overlay active: $dir"
done
touch "$STATE_FILE"
echo "Overlay mode ON"
}
toggle_off() {
[ ! -f "$STATE_FILE" ] && { echo "Not active"; exit 1; }
for dir in $TARGET_DIRS; do
umount "$dir" 2>/dev/null || true
done
# Clean up bind mounts
for mnt in $(mount | grep "$UPPER_BASE" | awk '{print $3}' | tac); do
umount "$mnt" 2>/dev/null || true
done
rm -f "$STATE_FILE"
echo "Overlay mode OFF"
sync
reboot
}
show_status() {
if [ -f "$STATE_FILE" ]; then
echo "Overlay: ACTIVE"
echo "Upperdir location: $UPPER_BASE"
echo "Changes are stored on: $(df -T "$UPPER_BASE" | tail -1 | awk '{print $2}')"
else
echo "Overlay: INACTIVE"
fi
}
case "$1" in
on) toggle_on ;;
off) toggle_off ;;
status) show_status ;;
*) echo "Usage: $0 {on|off|status}" ;;
esac