Benutzer-Werkzeuge

Webseiten-Werkzeuge


run_kernel_info.sh

Grafisches Dialogscript für den KDE Desktop (kdialog) zur Anzeige von Kernelinformationen. In einer Messagebox werden der neueste verfügbare Kernel, der aktuelllaufende Kernel, alle installierten Kernel und Details zu den lokal installierten Kernelversionen angezeigt.

Desweiteren wird der verfügbare und freie Speicherplatz im Root-Filesystem und einem evtl. vorhandenen Dateisystem /boot angezeigt. Diese Information ist wichtig, da ein zusätzlicher Kernel nur installiert werden kann wenn in diesen Dateisystemen genügend freier Platz vorhanden ist.

Screenshots

Kernel Info


Scriptlisting

run_kernel_info.sh
#!/bin/bash
#
# Version: 20210707
#
#######################
#  Variablenbelegung
#######################
#
DPKG_INFODIR="/var/lib/dpkg/info"
SEARCHSTR="Modifiziert:"
BOOTDIR="/boot"
FILE_DETAIL="/home/$USER/tmp/kernel_info_detail.txt"
 
################
#  Funktionen
################
#
get_all_major_kernelversion()
{
	# Alle Majorversionen im Standard-Repository ermitteln
	KERNEL_MAJOR_VERS_ALL=$(apt-cache search linux-image-'[0-9]'\.*\.0-.*-generic | awk -F"-" '{printf("%s\n",$3)}' | sort -V | uniq | cut -d "." -f1-2 | awk -F"." '{printf("%s   ",$1"."$2)}')
}
 
get_installed_kernel()
{
	# Alle lokal installierten Kernel ermitteln
	KERNEL_INSTALLED=$(dpkg -l | egrep linux-image-[0-9] | awk -F'-' '{printf("%s%s%s ", $3,"-",$4)}')
}
 
get_latest_kernel()
{
	# Neuesten installierbaren Kernel ermitteln
	#KERNEL_LATEST=$(apt-cache search linux-image-[0-9].*-generic.* | awk -F"-" '{print $3"-"$4}' | sort -V | tail -1)
	KERNEL_LATEST=$(for I in $(apt-cache search linux-image-'[0-9]'\.*\.0-.*-generic | awk -F"-" '{printf("%s\n",$3)}' | sort -V | uniq); do apt-cache search linux-image-$I-.*-generic | awk -F"-" '{print $3"-"$4}' | sort -V | tail -1  | awk '{printf("%s   ",$0)}'; done)
}
 
get_running_kernel()
{
	# Version des laufenden Kernel ermitteln
	KERNEL_RUNNING=$(uname -r | awk -F"-" '{print $1"-"$2}')
}
 
create_all_installed_kernel()
{
	# Installationsdatum der Kernel ermitteln (und Array erstellen)
	for ROW in $(ls -1 $DPKG_INFODIR/linux-image-[0-9]*-generic.list)
		do
		INSTALL_TIME_ORIG=$(stat $ROW | egrep ^$SEARCHSTR | cut -d" " -f2)
		INSTALL_TIME_NEW=$(date -d "$INSTALL_TIME_ORIG" '+%Y%m%d')
		INSTALL_TIME_DE=$(date -d "$INSTALL_TIME_ORIG" '+%d-%b-%Y')
		BASENAME=$(basename $ROW)
		TMP1=$(echo ${BASENAME:12})
		SHORTNAME_INSTKERNEL=$(echo ${TMP1/.list/})
		ARRAY_INSTKERNEL[$INDEX_INSTKERNEL]=$SHORTNAME_INSTKERNEL"#"$INSTALL_TIME_ORIG"#"$INSTALL_TIME_DE"#"$INSTALL_TIME_NEW
		INDEX_INSTKERNEL=$[INDEX_INSTKERNEL+1]
	done 
 
	# Verfügbarkeitsdatum der Kernel ermitteln (an Array als weitere Spalte hinzufügen)
	ROW=0
	INDEX_INSTKERNEL=0
	for ROW in $(ls -1 $BOOTDIR/vmlinuz-*-*)
		do
		AVALIABLE_TIME_ORIG=$(stat $ROW | egrep ^$SEARCHSTR | cut -d" " -f2)
		AVALIABLE_TIME_DE=$(date -d "$AVALIABLE_TIME_ORIG" '+%d-%b-%Y')
		ARRAY_INSTKERNEL[$INDEX_INSTKERNEL]=${ARRAY_INSTKERNEL[$INDEX_INSTKERNEL]}"#"$AVALIABLE_TIME_DE
		INDEX_INSTKERNEL=$[INDEX_INSTKERNEL+1]
	done 
}
 
get_all_installed_kernel()
{
	# Ausgabe des Arrays mit Deatilinfos zu den installierten Kerneln in Datei schreiben
	for ROW in ${ARRAY_INSTKERNEL[@]}
		do
      echo $ROW
	done | sort -t"#" -n -k4 | awk -F"#" '{printf("%s%-25s %-20s %-20s\n", "linux-image-",$1,$3,$5)}' > $FILE_DETAIL
}
 
del_log()
{
	# Aufräumen
	if [ -e "$FILE_DETAIL" ]
		then
		rm $FILE_DETAIL
	fi
}
 
get_available_size()
{
	# Freien Speicherplatz im Root-FS ermitteln
	FREE_SIZE_ROOT=$(df --output=size,avail --block-size=MB  / | tail -1 | awk '{print "Freier Speicherplatz im Root Dateisystem "$2" von "$1}')
 
	# Überprüfen ob /boot ein eigenes Dateisystem ist und ggf. freien Speicherplatz ermitteln
	AVAILABLE_BOOT_FS=$(df --output=target| egrep ^/boot)
 
	if [ "$AVAILABLE_BOOT_FS" ]
		then
		FREE_SIZE_BOOT=$(df --output=target,size,avail --block-size=MB /boot | tail -1 | awk '{print "Freier Speicherplatz im /boot Dateisystem "$3" von "$2}')
	fi
}
 
##################
#  Hauptprogramm
##################
#
get_all_major_kernelversion
create_all_installed_kernel
get_all_installed_kernel
get_installed_kernel
get_latest_kernel
get_running_kernel
get_available_size
 
# Dialogbox anzeigen
kdialog --title "Kernel Info" --msgbox "$(echo "\n")Informationen zu den Kernelversionen im System und Repository$(echo "\n\n")Aktuell verfügbare Major-Kernelversionen im Repo$(echo "\n")$KERNEL_MAJOR_VERS_ALL$(echo "\n\n")Neuester verfügbarer Kernel je Majorversion$(echo "\n")$KERNEL_LATEST $(echo "\n\n")Aktuell laufende Kernelversion$(echo "\n")$KERNEL_RUNNING $(echo "\n\n")$(echo "Alle installierten Kernelversionen"; for ROW in $(echo $KERNEL_INSTALLED); do echo $ROW; done) $(echo "\n\n")Installationsdetails zu den Kernelversionen$(echo "\n")$(echo "Kernelpaketname                             Installiert am        Verfügbar seit")$(echo "\n")$(cat $FILE_DETAIL)$(echo "\n\n")$FREE_SIZE_ROOT$(echo "\n")$FREE_SIZE_BOOT$(echo "\n")"
 
del_log
#EOF
run_kernel_info.sh.txt · Zuletzt geändert: 2021/08/31 11:33 von dwadmin