Damus
linux_privacy · 2w
Droidian - более мобильный аналог Mobian. https://droidian.org/ Если Mobian - это чистый дебиан на телефоне, то droidian - это дебиан с ...
linux_privacy profile picture
Режим работы в памяти уже отличается сильно от мобиан - не получится просто так засунуть скрипт в 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
1
linux_privacy · 1w
Более крутой подход к режиму несохранения - эфемерно зашифрованный dm-container вместо tmpfs. Это вообще не тратит ценную память телефона. Заранее установите sudo apt install e2fsprog...