Compare commits

...

3 Commits

View File

@ -172,8 +172,10 @@ case "$operation_system" in
;; ;;
esac esac
info "Verifying image..."
info "Verifying checksum..."
if [ -z "$image_checksum" ]; then if [ -z "$image_checksum" ]; then
for ext in sha1 sha512; do for ext in sha1 sha512 md5; do
sha_download_url="$download_url.$ext" sha_download_url="$download_url.$ext"
info "Image Checksum is not defined. Try to download image signature from $sha_download_url." info "Image Checksum is not defined. Try to download image signature from $sha_download_url."
if wget -q --method=HEAD "$sha_download_url"; then if wget -q --method=HEAD "$sha_download_url"; then
@ -186,7 +188,6 @@ if [ -z "$image_checksum" ]; then
done done
fi fi
info "Verifying image..."
if [[ -v image_checksum ]] if [[ -v image_checksum ]]
then then
(info "Checking md5 checksum..." && echo "$image_checksum $image_path"| md5sum -c -) || (info "Checking md5 checksum..." && echo "$image_checksum $image_path"| md5sum -c -) ||
@ -197,6 +198,45 @@ if [[ -v image_checksum ]]
warning "Verification is not possible. No checksum is defined." warning "Verification is not possible. No checksum is defined."
fi fi
info "Verifying signature..."
signature_download_url="$download_url.sig"
info "Try to download image signature from $signature_download_url."
if wget -q --method=HEAD "$signature_download_url"; then
signature_name="${image_name}.sig"
signature_path="${image_folder}${signature_name}"
info "Download the signature file"
if wget -q -O "$signature_path" "$signature_download_url"; then
info "Extract the key ID from the signature file"
key_id=$(gpg --status-fd 1 --verify "$signature_path" "$image_path" 2>&1 | grep 'NO_PUBKEY' | awk '{print $NF}')
if [ -n "$key_id" ]; then
info "Check if the key is already in the keyring"
if gpg --list-keys "$key_id" > /dev/null 2>&1; then
info "Key $key_id already in keyring."
else
info "Import the public key"
gpg --keyserver keyserver.ubuntu.com --recv-keys "$key_id"
fi
info "Verify the signature again after importing the key"
if gpg --verify "$signature_path" "$image_path"; then
info "Signature verification succeeded."
else
warning "Signature verification failed."
fi
else
warning "No public key found in the signature file."
fi
else
warning "Failed to download the signature file."
fi
else
warning "No signature found under $signature_download_url."
fi
make_mount_folders make_mount_folders
set_partition_paths set_partition_paths
@ -221,23 +261,36 @@ if [ "$transfer_image" = "y" ]
info "Starting image transfer..." info "Starting image transfer..."
if [ "$distribution" = "arch" ] if [ "$distribution" = "arch" ]
then then
# Default size of the boot partition
default_boot_size="+300M"
# Prompt to adjust the boot partition size
question "What size should the boot partition be? (Default: $default_boot_size):" && read -r boot_size
boot_size=${boot_size:-$default_boot_size}
# Use the provided size or the default size
info "The boot partition will be set to $boot_size."
# Partitioning with the specified size
info "Creating partitions..." && info "Creating partitions..." &&
( echo "o" #Type o. This will clear out any partitions on the drive. (
echo "p" #Type p to list partitions. There should be no partitions left echo "o" # Type o. This will clear out any partitions on the drive.
echo "n" #Type n, echo "p" # Type p to list partitions. There should be no partitions left
echo "p" #then p for primary, echo "n" # Type n,
echo "1" #1 for the first partition on the drive, echo "p" # then p for primary,
echo "" #Default start sector echo "1" # 1 for the first partition on the drive,
echo "+300M" #then type +300M for the last sector. echo "" # Default start sector
echo "t" #Type t, echo "$boot_size" # Size of the boot partition
echo "c" #then c to set the first partition to type W95 FAT32 (LBA). echo "t" # Type t,
echo "n" #Type n, echo "c" # then c to set the first partition to type W95 FAT32 (LBA).
echo "p" #then p for primary, echo "n" # Type n,
echo "2" #2 for the second partition on the drive, echo "p" # then p for primary,
echo "" #Default start sector echo "2" # 2 for the second partition on the drive,
echo "" #Default end sector echo "" # Default start sector
echo "w" #Write the partition table and exit by typing w. echo "" # Default end sector
)| fdisk "$device_path" || error echo "w" # Write the partition table and exit by typing w.
) | fdisk "$device_path" || error
info "Format boot partition..." && info "Format boot partition..." &&
mkfs.vfat "$boot_partition_path" || error mkfs.vfat "$boot_partition_path" || error