Skip to content

Commit 5d82831

Browse files
committed
armbian-update: Adjust kernel version verification
1 parent b04d761 commit 5d82831

File tree

1 file changed

+29
-26
lines changed

1 file changed

+29
-26
lines changed

build-armbian/armbian-files/common-files/usr/sbin/armbian-update

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#
2727
# init_var : Initialize all runtime variables and parse options
2828
# query_version : Query the latest kernel version from GitHub releases
29+
# verify_version : Check if the kernel version is already installed
2930
# search_kernel : Search for local or remote kernel packages
3031
# download_kernel : Download kernel package from GitHub releases
3132
# check_kernel : Verify kernel package integrity (.deb and .tar.gz)
@@ -313,14 +314,38 @@ query_version() {
313314
kernel_prefix="${1}"
314315
echo -e "${INFO} Querying the latest version for [ ${kernel_prefix} ]..."
315316

316-
# Using lookbehind (?<=...) to extract ONLY the patch number
317+
# Using lookbehind (?<=...) to extract ONLY the patch number, such as 6.1.164 -> 164
317318
latest_kernel="$(
318319
curl -fsSL ${kernel_api}/releases/expanded_assets/kernel_${KERNEL_TAGS} |
319320
grep -oP "(?<=${kernel_prefix}\.)[0-9]+(?=\.tar\.gz)" |
320321
sort -urV | head -n 1
321322
)"
322323
}
323324

325+
# Check whether the kernel version matching the system version has already been installed
326+
verify_version() {
327+
# Check if the kernel is already installed
328+
if [[ "${current_kernel}" == "${inputs_kernel}" ]]; then
329+
echo -e "${INFO} The current kernel [ ${current_kernel} ] is already up to date."
330+
echo -ne "${PROMPT} Do you want to force update? [y/n]: "
331+
read force_update
332+
case "${force_update,,}" in
333+
y*)
334+
echo -e "${INFO} Proceeding with force update..."
335+
[[ "${local_found}" == "yes" ]] && {
336+
[[ -f "sha256sums" ]] && mv -f sha256sums -t "${kernel_path}"
337+
mv -f *".${download_type}"* -t "${kernel_path}"
338+
[[ "${?}" -ne "0" ]] && error_msg "Failed to move local kernel files."
339+
}
340+
;;
341+
*)
342+
echo -e "${FINISH} Update cancelled by user."
343+
exit 0
344+
;;
345+
esac
346+
fi
347+
}
348+
324349
# Search for local or remote kernel packages
325350
search_kernel() {
326351
cd ${current_path}
@@ -357,10 +382,6 @@ search_kernel() {
357382
if [[ "${local_found}" == "yes" ]]; then
358383
echo -e "${INFO} Found local kernel packages. Version: [ ${inputs_kernel} ] Type: [ ${download_type} ]"
359384

360-
[[ -f "sha256sums" ]] && mv -f sha256sums -t "${kernel_path}"
361-
mv -f *".${download_type}"* -t "${kernel_path}"
362-
[[ "${?}" -ne "0" ]] && error_msg "Failed to move local kernel files."
363-
364385
else
365386
# Handle Online Query
366387
check_network
@@ -407,6 +428,9 @@ search_kernel() {
407428
echo -e "${INFO} Target online kernel: [ ${inputs_kernel} ]"
408429
fi
409430

431+
# Check whether the kernel version matching the system version has already been installed
432+
verify_version
433+
410434
sync && echo ""
411435
}
412436

@@ -463,12 +487,6 @@ check_kernel() {
463487
kernel_name="$(echo "${target_file}" | grep -oP '(?<=linux-image_).*?(?=\.deb)')"
464488
# Extract kernel signature: 6.1.164-1-ophub_arm64 -> ophub
465489
kernel_signature="$(echo "${kernel_name}" | sed -E 's/^.*-([^-_]+)_.*/\1/')"
466-
# Extract verify name: linux-image_6.1.164-1-ophub_arm64.deb -> 6.12.69-ophub
467-
verify_name="$(
468-
echo "${target_file}" |
469-
grep -oP '(?<=linux-image_).*?(?=_arm64\.deb)' |
470-
awk -F'-' '{print $1"-"$NF}'
471-
)"
472490

473491
# Set file list for verification
474492
check_list=(${kernel_deb_list[@]})
@@ -482,28 +500,13 @@ check_kernel() {
482500
kernel_name="$(echo "${target_file}" | grep -oP '(?<=boot-).*?(?=\.tar\.gz)')"
483501
# Extract kernel signature: 6.6.123-ophub -> ophub
484502
kernel_signature="${kernel_name#*-}"
485-
verify_name="${kernel_name}"
486503

487504
# Set file list for verification
488505
check_list=(${kernel_tar_list[@]})
489506
fi
490507

491508
echo -e "${INFO} Kernel name: [ ${kernel_name} ]"
492509

493-
# Check if the kernel is already installed
494-
if [[ "${kernel_uname}" == "${verify_name}" ]]; then
495-
echo -e "${INFO} The current kernel [ ${kernel_uname} ] is already up to date."
496-
echo -ne "${PROMPT} Do you want to force update? [y/n]: "
497-
read force_update
498-
case "${force_update,,}" in
499-
y*) echo -e "${INFO} Proceeding with force update..." ;;
500-
*)
501-
echo -e "${FINISH} Update cancelled by user."
502-
exit 0
503-
;;
504-
esac
505-
fi
506-
507510
# Identify Kernel Version
508511
kernel_base="$(echo ${kernel_name} | grep -oP '\d+\.\d+\.\d+')"
509512
[[ -z "${kernel_base}" ]] && error_msg "Failed to detect a valid kernel version."

0 commit comments

Comments
 (0)