Implement btrfs

This commit is contained in:
oddlama 2020-10-01 15:46:51 +02:00
parent fad5c06199
commit 19c030c4b2
No known key found for this signature in database
GPG Key ID: 88EA325D51D53908
3 changed files with 37 additions and 13 deletions

View File

@ -30,8 +30,9 @@ luks_getkeyfile() {
# Create default scheme (efi/boot, (optional swap), root) # Create default scheme (efi/boot, (optional swap), root)
# To disable swap, set swap=false # To disable swap, set swap=false
#EFI: create_default_disk_layout swap=8GiB /dev/sdX # To disable encryted root, set luks=false
#BIOS: create_default_disk_layout swap=8GiB type=bios /dev/sdX #EFI: create_default_disk_layout luks=true root_type=btrfs swap=8GiB /dev/sdX
#BIOS: create_default_disk_layout luks=true root_type=btrfs swap=8GiB type=bios /dev/sdX
create_default_disk_layout swap=8GiB /dev/sdX create_default_disk_layout swap=8GiB /dev/sdX
# Create default scheme from above on each given device, # Create default scheme from above on each given device,
@ -52,11 +53,12 @@ create_default_disk_layout swap=8GiB /dev/sdX
HOSTNAME="gentoo" HOSTNAME="gentoo"
# The timezone for the new system # The timezone for the new system
TIMEZONE="Europe/Berlin" TIMEZONE="Europe/London"
#TIMEZONE="Europe/Berlin"
# The default keymap for the system # The default keymap for the system
KEYMAP="de-latin1-nodeadkeys" KEYMAP="us"
#KEYMAP="us" #KEYMAP="de-latin1-nodeadkeys"
# A list of additional locales to generate. You should only # A list of additional locales to generate. You should only
# add locales here if you really need them and want to localize # add locales here if you really need them and want to localize
@ -85,7 +87,8 @@ GENTOO_MIRROR="https://mirror.eu.oneandone.net/linux/distributions/gentoo/gentoo
GENTOO_ARCH="amd64" GENTOO_ARCH="amd64"
# The stage3 tarball to install # The stage3 tarball to install
STAGE3_BASENAME="stage3-$GENTOO_ARCH-hardened+nomultilib" STAGE3_BASENAME="stage3-$GENTOO_ARCH-systemd"
#STAGE3_BASENAME="stage3-$GENTOO_ARCH-hardened+nomultilib"
#STAGE3_BASENAME="stage3-$GENTOO_ARCH-hardened-selinux+nomultilib" #STAGE3_BASENAME="stage3-$GENTOO_ARCH-hardened-selinux+nomultilib"

View File

@ -307,6 +307,15 @@ disk_format() {
|| die "Could not format device '$device' ($id)" || die "Could not format device '$device' ($id)"
fi fi
;; ;;
'btrfs')
if [[ -v "arguments[label]" ]]; then
mkfs.btrfs -q -L "$label" "$device" \
|| die "Could not format device '$device' ($id)"
else
mkfs.btrfs -q "$device" \
|| die "Could not format device '$device' ($id)"
fi
;;
*) die "Unknown filesystem type" ;; *) die "Unknown filesystem type" ;;
esac esac
} }

View File

@ -188,7 +188,7 @@ create_luks() {
# Named arguments: # Named arguments:
# id: Id of the device / partition created earlier # id: Id of the device / partition created earlier
# type: One of (bios, efi, swap, ext4) # type: One of (bios, efi, swap, ext4, btrfs)
# label: The label for the formatted disk # label: The label for the formatted disk
format() { format() {
local known_arguments=('+id' '+type' '?label') local known_arguments=('+id' '+type' '?label')
@ -196,7 +196,7 @@ format() {
declare -A arguments; parse_arguments "$@" declare -A arguments; parse_arguments "$@"
verify_existing_id id verify_existing_id id
verify_option type bios efi swap ext4 verify_option type bios efi swap ext4 btrfs
DISK_ACTIONS+=("action=format" "$@" ";") DISK_ACTIONS+=("action=format" "$@" ";")
} }
@ -214,6 +214,8 @@ expand_ids() {
# Parameters: # Parameters:
# swap=<size> create a swap partition with given size, or no swap if set to false # swap=<size> create a swap partition with given size, or no swap if set to false
# type=[efi|bios] defaults to efi. Selects the boot type. # type=[efi|bios] defaults to efi. Selects the boot type.
# luks=[true|false] encrypt root partition
# root_fs=[ext4|btrfs] root fs
create_default_disk_layout() { create_default_disk_layout() {
local known_arguments=('+swap' '?type') local known_arguments=('+swap' '?type')
local extra_arguments=() local extra_arguments=()
@ -224,6 +226,8 @@ create_default_disk_layout() {
local device="${extra_arguments[0]}" local device="${extra_arguments[0]}"
local size_swap="${arguments[swap]}" local size_swap="${arguments[swap]}"
local type="${arguments[type]}" local type="${arguments[type]}"
local use_luks="${arguments[luks]}"
local root_fs="${arguments[root_fs]}"
local efi=true local efi=true
case "$type" in case "$type" in
'bios') efi=false type=bios ;; 'bios') efi=false type=bios ;;
@ -237,10 +241,16 @@ create_default_disk_layout() {
create_partition new_id=part_swap id=gpt size="$size_swap" type=swap create_partition new_id=part_swap id=gpt size="$size_swap" type=swap
create_partition new_id=part_root id=gpt size=remaining type=linux create_partition new_id=part_root id=gpt size=remaining type=linux
local root_id="part_root"
if [[ "$use_luks" == "true" ]]; then
create_luks new_id=part_luks_root name="root" id=part_root
root_id="part_luks_root"
fi
format id="part_$type" type="$type" label="$type" format id="part_$type" type="$type" label="$type"
[[ $size_swap != "false" ]] && \ [[ $size_swap != "false" ]] && \
format id=part_swap type=swap label=swap format id=part_swap type=swap label=swap
format id=part_root type=ext4 label=root format id="$root_id" type="$root_fs" label=root
if [[ $type == "efi" ]]; then if [[ $type == "efi" ]]; then
DISK_ID_EFI="part_$type" DISK_ID_EFI="part_$type"
@ -248,7 +258,7 @@ create_default_disk_layout() {
DISK_ID_BIOS="part_$type" DISK_ID_BIOS="part_$type"
fi fi
DISK_ID_SWAP=part_swap DISK_ID_SWAP=part_swap
DISK_ID_ROOT=part_root DISK_ID_ROOT="$root_id"
} }
# Example 2: Multiple disks, with raid 0 and luks # Example 2: Multiple disks, with raid 0 and luks
@ -258,6 +268,7 @@ create_default_disk_layout() {
# Parameters: # Parameters:
# swap=<size> create a swap partition with given size, or no swap if set to false # swap=<size> create a swap partition with given size, or no swap if set to false
# type=[efi|bios] defaults to efi. Selects the boot type. # type=[efi|bios] defaults to efi. Selects the boot type.
# root_fs=[ext4|btrfs] root fs
create_raid0_luks_layout() { create_raid0_luks_layout() {
local known_arguments=('+swap' '?type') local known_arguments=('+swap' '?type')
local extra_arguments=() local extra_arguments=()
@ -267,6 +278,7 @@ create_raid0_luks_layout() {
|| die_trace 1 "Expected at least one positional argument (the devices)" || die_trace 1 "Expected at least one positional argument (the devices)"
local size_swap="${arguments[swap]}" local size_swap="${arguments[swap]}"
local type="${arguments[type]}" local type="${arguments[type]}"
local root_fs="${arguments[root_fs]}"
local efi=true local efi=true
case "$type" in case "$type" in
'bios') efi=false type=bios ;; 'bios') efi=false type=bios ;;
@ -290,7 +302,7 @@ create_raid0_luks_layout() {
format id="part_${type}_dev0" type="$type" label="$type" format id="part_${type}_dev0" type="$type" label="$type"
[[ $size_swap != "false" ]] && \ [[ $size_swap != "false" ]] && \
format id=part_raid_swap type=swap label=swap format id=part_raid_swap type=swap label=swap
format id=part_luks_root type=ext4 label=root format id=part_luks_root type="$root_fs" label=root
if [[ $type == "efi" ]]; then if [[ $type == "efi" ]]; then
DISK_ID_EFI="part_${type}_dev0" DISK_ID_EFI="part_${type}_dev0"