linux_privacy
· 1w
Режим работы в памяти уже отличается сильно от мобиан - не получится просто так засунуть скрипт в initramfs, чтобы ...
Более крутой подход к режиму несохранения - эфемерно зашифрованный dm-container вместо tmpfs. Это вообще не тратит ценную память телефона. Заранее установите sudo apt install e2fsprogs -y
#!/bin/bash
# заранее установите sudo apt install e2fsprogs -y
# === Конфигурация ===
UPPER_BASE="/mnt/overlay-persistent"
DMCRYPT_FILE="/var/lib/overlay-crypt.img"
DMCRYPT_SIZE_MB=10240
DMCRYPT_NAME="overlaycrypt"
STATE_FILE="/run/overlay-active"
TARGET_DIRS="/etc /var /home /root /usr /opt /userdata"
# === Проверка зависимостей ===
for cmd in cryptsetup losetup mkfs.ext4 mount umount; do
if ! command -v "$cmd" >/dev/null 2>&1; then
echo "ERROR: Missing $cmd"
exit 1
fi
done
# === Проверка, не активен ли уже ===
if [ -f "$STATE_FILE" ]; then
echo "Already active"
exit 0
fi
# === Создание sparse-файла ===
if [ ! -f "$DMCRYPT_FILE" ]; then
mkdir -p "$(dirname "$DMCRYPT_FILE")"
dd if=/dev/zero of="$DMCRYPT_FILE" bs=1M count=0 seek="$DMCRYPT_SIZE_MB" status=progress
fi
# === Loop-устройство ===
LOOP_DEV=$(losetup -f --show "$DMCRYPT_FILE")
echo "Loop device: $LOOP_DEV"
# === dm-crypt с случайным ключом ===
cryptsetup open --type plain --key-file /dev/urandom \
--cipher aes-xts-plain64 --key-size 512 \
--sector-size 4096 "$LOOP_DEV" "$DMCRYPT_NAME"
# === Форматирование ext4 ===
if ! blkid "/dev/mapper/$DMCRYPT_NAME" >/dev/null 2>&1; then
mkfs.ext4 -F -L "overlaycrypt" "/dev/mapper/$DMCRYPT_NAME"
fi
# === Монтирование контейнера ===
mkdir -p "$UPPER_BASE"
mount "/dev/mapper/$DMCRYPT_NAME" "$UPPER_BASE"
# === Overlay на каждую директорию ===
for dir in $TARGET_DIRS; do
name=$(echo "$dir" | tr '/' '-')
upper="$UPPER_BASE/$name-upper"
work="$UPPER_BASE/$name-work"
lower="$UPPER_BASE/$name-lower"
mkdir -p "$upper" "$work" "$lower"
mount --bind "$dir" "$lower"
mount --make-private "$lower"
mount -t overlay -o "lowerdir=$lower,upperdir=$upper,workdir=$work" overlay "$dir"
echo "Overlay active: $dir"
done
touch "$STATE_FILE"
echo "Overlay mode ON (dm-crypt ephemeral)"