Update install.sh

This commit is contained in:
Kroese 2024-06-14 00:25:34 +02:00 committed by GitHub
parent 9e7517dcbf
commit e6e13795f1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -9,46 +9,43 @@ detectType() {
[ ! -f "$file" ] && return 1 [ ! -f "$file" ] && return 1
[ ! -s "$file" ] && return 1 [ ! -s "$file" ] && return 1
case "${file,,}" in
*".iso" | *".img" | *".raw" | *".qcow2" )
BOOT="$file"
[ -n "${BOOT_MODE:-}" ] && return 0 ;;
* ) return 1 ;;
esac
# Automaticly detect UEFI-compatible images
case "${file,,}" in case "${file,,}" in
*".iso" ) *".iso" )
BOOT="$file"
[ -n "${BOOT_MODE:-}" ] && return 0
# Automaticly detect UEFI-compatible ISO's
dir=$(isoinfo -f -i "$file") dir=$(isoinfo -f -i "$file")
[ -z "$dir" ] && error "Failed to read ISO file, invalid format!" && BOOT="" && return 1 if [ -z "$dir" ]; then
BOOT=""
error "Failed to read ISO file, invalid format!" && return 1
fi
dir=$(echo "${dir^^}" | grep "^/EFI") dir=$(echo "${dir^^}" | grep "^/EFI")
[ -n "$dir" ] && BOOT_MODE="uefi" [ -n "$dir" ] && BOOT_MODE="uefi" ;;
;;
*".img" ) *".img" | *".raw" )
DISK_NAME=$(basename "$file")
DISK_NAME="${DISK_NAME%.*}"
[ -n "${BOOT_MODE:-}" ] && return 0
# Automaticly detect UEFI-compatible images
dir=$(sfdisk -l "$file") dir=$(sfdisk -l "$file")
[ -z "$dir" ] && error "Failed to read IMG file, invalid format!" && DISK_NAME="" && return 1 if [ -z "$dir" ]; then
BOOT=""
error "Failed to read disk image file, invalid format!" && return 1
fi
dir=$(echo "${dir^^}" | grep "EFI SYSTEM") dir=$(echo "${dir^^}" | grep "EFI SYSTEM")
[ -n "$dir" ] && BOOT_MODE="uefi" [ -n "$dir" ] && BOOT_MODE="uefi" ;;
;;
*".qcow2" ) *".qcow2" )
DISK_NAME=$(basename "$file")
DISK_NAME="${DISK_NAME%.*}"
[ -n "${BOOT_MODE:-}" ] && return 0
# TODO: Detect boot mode from partition table in image # TODO: Detect boot mode from partition table in image
BOOT_MODE="uefi" BOOT_MODE="uefi" ;;
;;
* )
return 1 ;;
esac esac
return 0 return 0
@ -105,12 +102,13 @@ convertImage() {
local source_fmt=$2 local source_fmt=$2
local dst_file=$3 local dst_file=$3
local dst_fmt=$4 local dst_fmt=$4
local dir base fs fa cur_size src_size space disk_param local dir base fs fa space
local cur_size src_size disk_param
[ -f "$dst_file" ] && error "Conversion failed, destination file $dst_file already exists?" && return 1 [ -f "$dst_file" ] && error "Conversion failed, destination file $dst_file already exists?" && return 1
[ ! -f "$source_file" ] && error "Conversion failed, source file $source_file does not exists?" && return 1 [ ! -f "$source_file" ] && error "Conversion failed, source file $source_file does not exists?" && return 1
if [[ "$source_fmt" == "raw" ]] && [[ "$dst_fmt" == "raw" ]]; then if [[ "${source_fmt,,}" == "${dst_fmt,,}" ]]; then
mv -f "$source_file" "$dst_file" mv -f "$source_file" "$dst_file"
return 0 return 0
fi fi
@ -181,7 +179,6 @@ convertImage() {
fi fi
html "Conversion completed..." html "Conversion completed..."
return 0 return 0
} }
@ -199,6 +196,7 @@ findFile() {
findFile "iso" && return 0 findFile "iso" && return 0
findFile "img" && return 0 findFile "img" && return 0
findFile "raw" && return 0
findFile "qcow2" && return 0 findFile "qcow2" && return 0
if [ -z "$BOOT" ] || [[ "$BOOT" == *"example.com/image.iso" ]]; then if [ -z "$BOOT" ] || [[ "$BOOT" == *"example.com/image.iso" ]]; then
@ -212,11 +210,11 @@ base=$(echo "$base" | sed -e 's/[^A-Za-z0-9._-]/_/g')
case "${base,,}" in case "${base,,}" in
*".iso" | *".img" | *".qcow2" ) *".iso" | *".img" | *".raw" | *".qcow2" )
detectType "$STORAGE/$base" && return 0 ;; detectType "$STORAGE/$base" && return 0 ;;
*".raw" | *".vdi" | *".vmdk" | *".vhd" | *".vhdx" ) *".vdi" | *".vmdk" | *".vhd" | *".vhdx" )
detectType "$STORAGE/${base%.*}.img" && return 0 detectType "$STORAGE/${base%.*}.img" && return 0
detectType "$STORAGE/${base%.*}.qcow2" && return 0 ;; detectType "$STORAGE/${base%.*}.qcow2" && return 0 ;;
@ -224,11 +222,12 @@ case "${base,,}" in
*".gz" | *".gzip" | *".xz" | *".7z" | *".zip" | *".rar" | *".lzma" | *".bz" | *".bz2" ) *".gz" | *".gzip" | *".xz" | *".7z" | *".zip" | *".rar" | *".lzma" | *".bz" | *".bz2" )
case "${base%.*}" in case "${base%.*}" in
*".iso" | *".img" | *".qcow2" )
*".iso" | *".img" | *".raw" | *".qcow2" )
detectType "$STORAGE/${base%.*}" && return 0 ;; detectType "$STORAGE/${base%.*}" && return 0 ;;
*".raw" | *".vdi" | *".vmdk" | *".vhd" | *".vhdx" ) *".vdi" | *".vmdk" | *".vhd" | *".vhdx" )
find="${base%.*}" find="${base%.*}"
@ -237,8 +236,7 @@ case "${base,,}" in
esac ;; esac ;;
* ) * ) error "Unknown file extension, type \".${base/*./}\" is not recognized!" && exit 33 ;;
error "Unknown file format, extension \".${base/*./}\" is not recognized!" && exit 33 ;;
esac esac
if ! downloadFile "$BOOT" "$base"; then if ! downloadFile "$BOOT" "$base"; then
@ -288,7 +286,7 @@ case "${base,,}" in
esac esac
case "${base,,}" in case "${base,,}" in
*".iso" | *".img" | *".qcow2" ) *".iso" | *".img" | *".raw" | *".qcow2" )
detectType "$STORAGE/$base" && return 0 detectType "$STORAGE/$base" && return 0
error "Cannot read file \"${base}\"" && exit 63 ;; error "Cannot read file \"${base}\"" && exit 63 ;;
esac esac
@ -299,13 +297,11 @@ target_fmt="${DISK_FMT:-}"
[[ "$target_fmt" != "raw" ]] && target_ext="qcow2" [[ "$target_fmt" != "raw" ]] && target_ext="qcow2"
case "${base,,}" in case "${base,,}" in
*".raw" ) source_fmt="raw" ;;
*".vdi" ) source_fmt="vdi" ;; *".vdi" ) source_fmt="vdi" ;;
*".vhd" ) source_fmt="vhd" ;; *".vhd" ) source_fmt="vpc" ;;
*".vhdx" ) source_fmt="vpc" ;;
*".vmdk" ) source_fmt="vmdk" ;; *".vmdk" ) source_fmt="vmdk" ;;
*".vhdx" ) source_fmt="vhdx" ;; * ) error "Unknown file extension, type \".${base/*./}\" is not recognized!" && exit 33 ;;
* )
error "Unknown file format, extension \".${base/*./}\" is not recognized!" && exit 33 ;;
esac esac
dst="$STORAGE/${base%.*}.$target_ext" dst="$STORAGE/${base%.*}.$target_ext"