Info om boot

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Info om boot

Inlägg 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
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...

Återgå till "Terminalforum"