Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
lima-vm
GitHub Repository: lima-vm/lima
Path: blob/master/pkg/cidata/cidata.TEMPLATE.d/boot/05-lima-disks.sh
2678 views
1
#!/bin/bash
2
3
# SPDX-FileCopyrightText: Copyright The Lima Authors
4
# SPDX-License-Identifier: Apache-2.0
5
6
set -eux -o pipefail
7
8
test "$LIMA_CIDATA_DISKS" -gt 0 || exit 0
9
10
get_disk_var() {
11
diskvarname="LIMA_CIDATA_DISK_${1}_${2}"
12
eval echo \$"$diskvarname"
13
}
14
15
for i in $(seq 0 $((LIMA_CIDATA_DISKS - 1))); do
16
DISK_NAME="$(get_disk_var "$i" "NAME")"
17
DEVICE_NAME="$(get_disk_var "$i" "DEVICE")"
18
FORMAT_DISK="$(get_disk_var "$i" "FORMAT")"
19
FORMAT_FSTYPE="$(get_disk_var "$i" "FSTYPE")"
20
FORMAT_FSARGS="$(get_disk_var "$i" "FSARGS")"
21
22
test -n "$FORMAT_DISK" || FORMAT_DISK=true
23
test -n "$FORMAT_FSTYPE" || FORMAT_FSTYPE=ext4
24
25
# first time setup
26
if [[ ! -b "/dev/disk/by-label/lima-${DISK_NAME}" ]]; then
27
if $FORMAT_DISK; then
28
if [ "$FORMAT_FSTYPE" == "swap" ]; then
29
echo 'type=swap' | sfdisk --label gpt "/dev/${DEVICE_NAME}"
30
# shellcheck disable=SC2086
31
mkswap $FORMAT_FSARGS -L "lima-${DISK_NAME}" "/dev/${DEVICE_NAME}1"
32
else
33
echo 'type=linux' | sfdisk --label gpt "/dev/${DEVICE_NAME}"
34
# shellcheck disable=SC2086
35
mkfs.$FORMAT_FSTYPE $FORMAT_FSARGS -L "lima-${DISK_NAME}" "/dev/${DEVICE_NAME}1"
36
fi
37
fi
38
fi
39
40
if [ "$FORMAT_FSTYPE" == "swap" ]; then
41
swapon "/dev/${DEVICE_NAME}1"
42
else
43
mkdir -p "/mnt/lima-${DISK_NAME}"
44
mount -t "$FORMAT_FSTYPE" "/dev/${DEVICE_NAME}1" "/mnt/lima-${DISK_NAME}"
45
fi
46
if command -v growpart >/dev/null 2>&1 && command -v resize2fs >/dev/null 2>&1; then
47
growpart "/dev/${DEVICE_NAME}" 1 || true
48
# Only resize when filesystem is in a healthy state
49
if command -v "fsck.$FORMAT_FSTYPE" -f -p "/dev/disk/by-label/lima-${DISK_NAME}"; then
50
if [[ $FORMAT_FSTYPE == "ext2" || $FORMAT_FSTYPE == "ext3" || $FORMAT_FSTYPE == "ext4" ]]; then
51
resize2fs "/dev/disk/by-label/lima-${DISK_NAME}" || true
52
elif [ "$FORMAT_FSTYPE" == "xfs" ]; then
53
xfs_growfs "/dev/disk/by-label/lima-${DISK_NAME}" || true
54
else
55
echo >&2 "WARNING: unknown fs '$FORMAT_FSTYPE'. FS will not be grew up automatically"
56
fi
57
fi
58
fi
59
done
60
61