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
325350search_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