Added option to create persistent fs inside LUKS container.
Had to change to #!/bin/bash to parse interactive user input for the encryption passphrase.
The _freeloop=$freeloop part is kind of bad style, but I kept it for now to keep changes minimal.
outputfile=persistence.dat
print_usage() {
outputfile=persistence.dat
print_usage() {
- echo 'Usage: CreatePersistentImg.sh [ -s size ] [ -t fstype ] [ -l LABEL ] [ -c CFG ]'
+ echo 'Usage: sudo ./CreatePersistentImg.sh [ -s size ] [ -t fstype ] [ -l LABEL ] [ -c CFG ] [ -e ]'
echo ' OPTION: (optional)'
echo ' -s size in MB, default is 1024'
echo ' -t filesystem type, default is ext4 ext2/ext3/ext4/xfs are supported now'
echo ' -l label, default is casper-rw'
echo ' -c configfile name inside the persistence file. File content is "/ union"'
echo ' -o outputfile name, default is persistence.dat'
echo ' OPTION: (optional)'
echo ' -s size in MB, default is 1024'
echo ' -t filesystem type, default is ext4 ext2/ext3/ext4/xfs are supported now'
echo ' -l label, default is casper-rw'
echo ' -c configfile name inside the persistence file. File content is "/ union"'
echo ' -o outputfile name, default is persistence.dat'
+ echo ' -e enable encryption, disabled by default (only few distros support this)'
elif [ "$1" = "-o" ]; then
shift
outputfile=$1
elif [ "$1" = "-o" ]; then
shift
outputfile=$1
+ elif [ "$1" = "-e" ]; then
+ read -s -p "Encryption passphrase: " passphrase
+ echo
elif [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
print_usage
exit 0
elif [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
print_usage
exit 0
losetup $freeloop "$outputfile"
losetup $freeloop "$outputfile"
+if [ ! -z "$passphrase" ]; then
+ printf "$passphrase" | cryptsetup -q --verbose luksFormat $freeloop -
+ printf "$passphrase" | cryptsetup -q --verbose luksOpen $freeloop persist_decrypted -
+ _freeloop=$freeloop
+ freeloop="/dev/mapper/persist_decrypted"
+fi
+
mkfs -t $fstype $fsopt -L $label $freeloop
sync
mkfs -t $fstype $fsopt -L $label $freeloop
sync
rm -rf ./persist_tmp_mnt
fi
rm -rf ./persist_tmp_mnt
fi
+if [ ! -z "$passphrase" ]; then
+ cryptsetup luksClose $freeloop
+ freeloop=$_freeloop
+fi
+