fs_make_btrfs() { local device="${1}" local label="${2}" local uuid="${3}" if [ -b "${device}" ]; then set -- \ --force \ --checksum "sha256" if [ -n "${label}" ]; then set -- "${@}" \ --label "${label}" fi if [ -n "${uuid}" ]; then set -- "${@}" \ --uuid "${uuid}" fi mkfs.btrfs "${@}" "${device}" fi } fs_make_btrfs_swap() { local path="${1}" local size="${2}" local uuid="${3}" if [ -n "${path}" ]; then set -- filesystem mkswapfile if [ -n "${size}" ]; then set -- "${@}" \ --size "${size}" fi if [ -n "${uuid}" ]; then set -- "${@}" \ --uuid "${uuid}" fi btrfs "${@}" "${path}" fi } fs_make_fat() { local device="${1}" local name="${2}" local volid="${3}" if [ -b "${device}" ]; then set -- \ -F 32 \ -S 4096 if [ -n "${name}" ]; then set -- "${@}" \ -n "${name}" fi if [ -n "${volid}" ]; then set -- "${@}" \ -i "${volid}" fi mkfs.fat "${@}" "${device}" fi } fs_raid_create() { if [ -n "${4}" ]; then local name="${1}" local uuid="${2}" shift 2 mdadm \ --create "/dev/md/${name}" \ --level 0 \ --metadata 1 \ --name "md:${name}" \ --raid-devices ${#} \ --uuid "${uuid}" \ "${@}" fi } fs_wipe() { local device="${1}" local buffer="${2}" local count="${3}" if [ -b "${device}" ]; then set -- \ status="progress" \ if="/dev/zero" \ of="${device}" if [ -n "${buffer}" ]; then set -- "${@}" \ bs="${buffer}" fi if [ -n "${count}" ]; then set -- "${@}" \ count="${count}" fi dd "${@}" fi } luks_format() { local passphrase="${1}" local device="${2}" local label="${3}" local uuid="${4}" if [ -b "${device}" ]; then set -- \ --batch-mode \ --cipher "aes-xts-plain64" \ --hash "sha512" \ --iter-time 4096 \ --key-size 512 \ --pbkdf "argon2id" \ --type "luks2" \ --use-random \ --verbose if [ -n "${label}" ]; then set -- "${@}" --label "${label}" fi if [ -n "${uuid}" ]; then set -- "${@}" --uuid "${uuid}" fi echo "${passphrase}" | cryptsetup "${@}" luksFormat "${device}" fi }