From 21c885cd88aed706f4aee8c3a14bd75a1411f2fb Mon Sep 17 00:00:00 2001 From: Igor Pecovnik Date: Fri, 29 Nov 2024 17:19:26 +0100 Subject: [PATCH] Add ZFS filesystem module --- tools/include/images/SY018.png | Bin 0 -> 50477 bytes tools/json/config.system.json | 20 ++++++++ tools/modules/runtime/config.runtime.sh | 3 ++ tools/modules/system/install_zfs.sh | 59 ++++++++++++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 tools/include/images/SY018.png create mode 100644 tools/modules/system/install_zfs.sh diff --git a/tools/include/images/SY018.png b/tools/include/images/SY018.png new file mode 100644 index 0000000000000000000000000000000000000000..32fd3e21ecf71c3be26e2e67ff09a67c62fe4362 GIT binary patch literal 50477 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 ?SC-bb1&R`Z}T~QyYTe#$){h!w56*N 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 literal 0 HcmV?d00001 diff --git a/tools/json/config.system.json b/tools/json/config.system.json index d8d21825..eeb5305b 100644 --- a/tools/json/config.system.json +++ b/tools/json/config.system.json @@ -332,6 +332,26 @@ "status": "Stable", "author": "@viraniac @igorpecovnik", "condition": "[ -d /boot/dtb/ ]" + }, + { + "id": "SY018", + "description": "ZFS filesystem - enable support", + "command": [ + "module_zfs install" + ], + "status": "Stable", + "author": "@armbian", + "condition": "! module_zfs status && linux-version compare ${KERNELID} le $(module_zfs kernel_max)" + }, + { + "id": "SY019", + "description": "ZFS filesystem - remove support", + "command": [ + "module_zfs remove" + ], + "status": "Stable", + "author": "@armbian", + "condition": "module_zfs status" } ] } diff --git a/tools/modules/runtime/config.runtime.sh b/tools/modules/runtime/config.runtime.sh index 77d72fc3..9b6e1920 100644 --- a/tools/modules/runtime/config.runtime.sh +++ b/tools/modules/runtime/config.runtime.sh @@ -97,6 +97,9 @@ update_sub_submenu_data "Software" "Media" "SW24" "https://localhost:$emby_media plex_media_port="$(lsof -i -P -n | grep TCP | grep LISTEN | grep 'plex' | awk -F: '{print $2}' | awk '{print $1}' | head -n 1)" update_sub_submenu_data "Software" "Media" "SW22" "https://localhost:$plex_media_port" +# ZSH show version in the menu +update_submenu_data "System" "SY019" "$(module_zfs zfs_version)" + update_sub_submenu_data "Software" "Containers" "CON006" "http://$LOCALIPADD:${module_options["module_portainer,port"]}" update_sub_submenu_data "Software" "HomeAutomation" "HA004" "http://$LOCALIPADD:${module_options["module_haos,port"]}" diff --git a/tools/modules/system/install_zfs.sh b/tools/modules/system/install_zfs.sh new file mode 100644 index 00000000..f374132c --- /dev/null +++ b/tools/modules/system/install_zfs.sh @@ -0,0 +1,59 @@ +module_options+=( + ["module_zfs,author"]="@armbian" + ["module_zfs,feature"]="module_zfs" + ["module_zfs,desc"]="Install zfs filesystem support" + ["module_zfs,example"]="install remove status kernel_max zfs_version help" + ["module_zfs,port"]="" + ["module_zfs,status"]="Active" + ["module_zfs,arch"]="" +) +# +# Mmodule_zfs +# +function module_zfs () { + local title="zfs" + local condition=$(which "$title" 2>/dev/null) + + local commands + IFS=' ' read -r -a commands <<< "${module_options["module_zfs,example"]}" + + # determine if our kernel is not too recent + local zfs_dkms=$(LC_ALL=C apt-cache policy zfs-dkms | grep Candidate | xargs | cut -d" " -f2 | cut -c-5) + local kernel_max=$(wget -qO- https://github.com/openzfs/zfs/raw/refs/tags/zfs-${zfs_dkms}/META | grep Maximum | cut -d" " -f2) + + case "$1" in + "${commands[0]}") + module_headers install + apt_install_wrapper apt-get -y install zfsutils-linux zfs-dkms || exit 1 + ;; + "${commands[1]}") + module_headers remove + apt_install_wrapper apt-get -y autopurge zfsutils-linux zfs-dkms || exit 1 + ;; + "${commands[2]}") + if check_if_installed zfsutils-linux; then + return 0 + else + return 1 + fi + ;; + "${commands[3]}") + echo "${kernel_max}" + ;; + "${commands[4]}") + echo "v${zfs_dkms}" + ;; + "${commands[5]}") + echo -e "\nUsage: ${module_options["module_zfs,feature"]} " + echo -e "Commands: ${module_options["module_zfs,example"]}" + echo "Available commands:" + echo -e "\tinstall\t- Install $title." + echo -e "\tstatus\t- Installation status $title." + echo -e "\tremove\t- Remove $title." + echo + ;; + *) + ${module_options["module_zfs,feature"]} ${commands[3]} + ;; + esac +}