CasperSecurity

Current Path : /usr/share/initramfs-tools/scripts/init-top/
Upload File :
Current File : //usr/share/initramfs-tools/scripts/init-top/framebuffer

#!/bin/sh

# shellcheck disable=SC2034
OPTION=FRAMEBUFFER
PREREQ="udev"
prereqs()
{
	echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
	prereqs
	exit 0
	;;
esac


# The options part of the kernel "video=" argument (i.e. everyting
# after "video=<fbdriver>:") has very inconsistent rules.
#
# Generally the following applies:
# 1) options are comma-separated
# 2) options can be in either of these three forms:
#    <arg>=<value>, <arg>:<value>, <boolean-arg>.
# 3) the "mode" option has the form <xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m]
#    and may or may not start with "mode="
#
# When the options are used with modules, they need to be space-separated
# and the following conversions are needed:
#	<arg>:<value> -> <arg>=<value>
#	<boolean-arg> -> <boolean-arg>=1
#	<modevalue>   -> mode=<modevalue>
parse_video_opts()
{
	local OPTS="$1"
	local IFS=","

	# Must be a line like video=<fbdriver>:<opt1>,[opt2]...
	if [ "${OPTS}" = "${OPTS%%:*}" ]; then
		return
	fi
	OPTS="${OPTS#*:}"
	for opt in ${OPTS}; do
		# Already in the "<arg>=<value>" form
		if [ "${opt}" != "${opt#*=}" ]; then
			echo -n "$opt "
		# In the "<arg>:<value>" form
		elif [ "${opt}" != "${opt#*:}" ]; then
			echo -n "${opt%:*}=${opt#*:} "
		# Presumably a modevalue without the "mode=" prefix
		elif [ "${opt}" != "${opt#[0-9]*x[0-9]}" ]; then
			echo -n "mode=$opt "
		# Presumably a boolean
		else
			echo -n "${opt}=1 "
		fi
	done
}

FB=""
OPTS=""

# shellcheck disable=SC2013
for x in $(cat /proc/cmdline); do
	case ${x} in
	vga=*)
		FB="vesafb";
		OPTS="";
		;;
	video=*)
		FB=${x#*=}
		FB="${FB%%:*}"
		OPTS="$(parse_video_opts "${x}")"
	esac
done

# Map command line name to module name
case ${FB} in
matroxfb)
	FB=matroxfb_base
	;;
esac

if [ -n "${FB}" ]; then
	# Some framebuffer devices need character devices :-/
	udevadm settle
	# shellcheck disable=SC2086
	MODPROBE_OPTIONS=-q modprobe ${FB} ${OPTS}
	# Wait for the framebuffer devices to be ready
	udevadm settle
else
	# If we have no graphics devices yet, wait for udev to settle
	[ -d /sys/class/graphics/fbcon ] && \
	[ -d /sys/class/graphics/fb0   ] && \
	[ -d /sys/class/drm/card0      ] || udevadm settle

	# If we still have no graphics device, fall back to vesafb like
	# we do in the post-initramfs case in
	# /etc/init/udev-fallback-graphics.conf.
	# There is a higher risk of racing the regular video driver init
	# than there is in the post-initramfs case, because this is earlier
	# in boot and the kernel has had less time to finish probing the
	# video drivers; and if we probe vesafb when we aren't meant to it
	# will cause problems later.  So just to be sure, add a sleep(1)
	# which seems to be enough time to let the drm interface get loaded.
	[ -d /sys/class/graphics/fbcon ] && \
	[ -d /sys/class/graphics/fb0   ] && \
	[ -d /sys/class/drm/card0      ] || sleep 1

	if    ! [ -d /sys/class/graphics/fbcon ] \
	   || ! [ -d /sys/class/graphics/fb0   ] \
	   || ! [ -d /sys/class/drm/card0      ]
	then
		modprobe -q vesafb 2>/dev/null
		udevadm settle
	fi
fi

# Force fb mode via /sys interface
# shellcheck disable=SC2013
for x in $(cat /proc/cmdline); do
	case ${x} in
	fbmode=*)
		MODE=${x#*=}
		echo "$MODE" > /sys/class/graphics/fb0/mode
		;;
	esac
done
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY