Sida 1 av 1

Info om boot

Postat: 25 feb 2021, 18:03
av Osprey
Om det är någon som vill få information om booten, så har jag hackat ihop ett litet script. Det visar ungefär hur booten går till och vilka parametrar som gäller...

Kod: Markera allt

#! /bin/bash
#
function getdisk {
	SPEC=$(echo $1 | sed 's=/dev/==g')
	DISKS=$(ls -l /sys/block | tail -n +2 | grep -v virtual | awk '{ print $9 }')
	for DISK in $DISKS; do
      		OUT=$(ls -l /sys/block/$DISK/* | grep $SPEC)
		if [[ ! -z $OUT ]]; then
			DNAM=$(ls -l /sys/block/$DISK/* | grep $SPEC | awk -F : '{ print $1 }' | rev | awk -F / '{ print $2 }' | rev | sort -u | sed '/^$/d')
			echo $DNAM
			break
		fi
	done
	return
}
#
function textblock {
	SPC="$1"
	CMD="$2"
	IFS='
'
	OUT=$(eval $CMD)
	for LINE in $OUT; do
		echo $SPC$LINE
	done
}
#
SPACE="        "
BOOT=$([ -d /sys/firmware/efi ] && echo UEFI || echo BIOS)
#
OSTYPE=$(uname -s)
#
ROOTUUID=$(cat /proc/cmdline | awk -F UUID= '{ print $2 }' | awk '{ print $1 }')
if [[ ! -z $ROOTUUID ]]; then
	ROOTPART=$(ls -l /dev/disk/by-uuid/ | grep $ROOTUUID | awk -F "->" '{ print $2 }' | xargs | sed 's-../..-/dev-g')
	ROOTFS=$(blkid -o value -s TYPE $ROOTPART)
	ROOTDISK=/dev/$(getdisk $ROOTPART)
	ROOTINFO=$(echo $(echo -n "<empty>"; dd if=$ROOTDISK bs=512 count=1 skip=1 2> /dev/null | cut -b -8) | sed 's/<empty>//g')
else
	ROOTPART=$(cat /proc/cmdline | awk -F union= '{ print $2 }' | awk '{ print $1 }')
	ROOTFS="-"
	ROOTDISK="-"
	ROOTINFO="-"
fi
#
echo
echo "OS:$SPACE      $OSTYPE"
echo "Boot:$SPACE    $BOOT"
echo "Rootdisk:$SPACE$ROOTDISK"
echo "Rootpart:$SPACE$ROOTPART    /"
echo "RootFS:$SPACE    $ROOTFS"
echo "Info:$SPACE      $ROOTINFO"
if [[ ! -z $ROOTUUID ]]; then
	textblock "$SPACE           " "gdisk -l $ROOTDISK | tail -n +3 | head -n 5"
fi
if [[ $BOOT == "UEFI" ]]; then
	EFIPART=$(mount | grep /boot/efi | awk '{ print $1 }')
	if [[ ! -z $EFIPART ]]; then
		EFIDIR=$(mount | grep $EFIPART | awk '{ print $3 }')
		EFIFS=$(blkid -o value -s TYPE $EFIPART)
		EFIDISK=/dev/$(getdisk $EFIPART)
		#echo "EFIINFO=S(dd if=$EFIDISK bs=512 count=1 skip=1 2> /dev/null | cut -b -8 2> /dev/null )"
		#EFIINFO=$(tr -d '\0' dd if=$EFIDISK bs=512 count=1 skip=1 2> /dev/null | cut -b -8) 2> /dev/null
		EFIINFO=$(echo $(echo -n "<empty>"; dd if=$EFIDISK bs=512 count=1 skip=1 2> /dev/null | cut -b -8) | sed 's/<empty>//g')
		if [[ $EFIDISK != $ROOTDISK ]]; then
			INFO="(other)"
		else
			INFO="(same)"
		fi
		echo "EFIdisk:$SPACE $EFIDISK       $INFO"
		echo "EFIpart:$SPACE $EFIPART     $EFIDIR"
		echo "EFIFS:$SPACE     $EFIFS"
		if [[ $EFIDISK != $ROOTDISK ]]; then
			echo "Info:$SPACE      $EFIINFO     $COMP"
			textblock "$SPACE           " "gdisk -l $EFIDISK | tail -n +3 | head -n 5"
		fi
	fi
fi
NAME=$(uname -s)
MACHINE=$(uname -m)
RUNNING_KRNL=$(uname -r)
RUNNING_INITRD="/boot/initrd.img-$RUNNING_KRNL"
NEWEST_KRNL=$(ls -l /boot/vmlinuz | awk '{ print $11 }' | sed 's/vmlinuz-//g')
echo "Kernel:$SPACE  $RUNNING_KRNL"
if [[ -r $RUNNING_INITRD ]]; then
	UPDATED=$(ls /boot/initr* --time-style=+%Y-%m-%d_%H:%M -l | tail -1 | awk '{ print $6 }')
	echo "Updated:$SPACE $UPDATED"
fi
if [[ $RUNNING_KRNL != $NEWEST_KRNL ]]; then
	echo -e "\033[1m\033[31m=>A newer kernel exists, consider rebooting !!!!!\033[0m"
	echo "New krnl:$SPACE$NEWEST_KRNL"
fi
echo
exit