xref: /freebsd-13.1/libexec/rc/rc.d/syscons (revision 98b04ac3)
10696600cSBjoern A. Zeeb#!/bin/sh -
20696600cSBjoern A. Zeeb#
30696600cSBjoern A. Zeeb# Copyright (c) 2000  The FreeBSD Project
40696600cSBjoern A. Zeeb# All rights reserved.
50696600cSBjoern A. Zeeb#
60696600cSBjoern A. Zeeb# Redistribution and use in source and binary forms, with or without
70696600cSBjoern A. Zeeb# modification, are permitted provided that the following conditions
80696600cSBjoern A. Zeeb# are met:
90696600cSBjoern A. Zeeb# 1. Redistributions of source code must retain the above copyright
100696600cSBjoern A. Zeeb#    notice, this list of conditions and the following disclaimer.
110696600cSBjoern A. Zeeb# 2. Redistributions in binary form must reproduce the above copyright
120696600cSBjoern A. Zeeb#    notice, this list of conditions and the following disclaimer in the
130696600cSBjoern A. Zeeb#    documentation and/or other materials provided with the distribution.
140696600cSBjoern A. Zeeb#
150696600cSBjoern A. Zeeb# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
160696600cSBjoern A. Zeeb# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
170696600cSBjoern A. Zeeb# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
180696600cSBjoern A. Zeeb# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
190696600cSBjoern A. Zeeb# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
200696600cSBjoern A. Zeeb# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
210696600cSBjoern A. Zeeb# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
220696600cSBjoern A. Zeeb# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
230696600cSBjoern A. Zeeb# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
240696600cSBjoern A. Zeeb# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
250696600cSBjoern A. Zeeb# SUCH DAMAGE.
260696600cSBjoern A. Zeeb#
270696600cSBjoern A. Zeeb# $FreeBSD$
280696600cSBjoern A. Zeeb#
290696600cSBjoern A. Zeeb
300696600cSBjoern A. Zeeb# PROVIDE: syscons
310696600cSBjoern A. Zeeb# REQUIRE: LOGIN
320696600cSBjoern A. Zeeb# KEYWORD: nojail
330696600cSBjoern A. Zeeb
340696600cSBjoern A. Zeeb. /etc/rc.subr
350696600cSBjoern A. Zeeb
360696600cSBjoern A. Zeebname="syscons"
370696600cSBjoern A. Zeebdesc="Configure the system console"
380696600cSBjoern A. Zeebextra_commands="setkeyboard"
390696600cSBjoern A. Zeebsetkeyboard_cmd="syscons_setkeyboard"
400696600cSBjoern A. Zeebstart_precmd="syscons_precmd"
410696600cSBjoern A. Zeebstart_cmd="syscons_start"
420696600cSBjoern A. Zeebstop_cmd=":"
430696600cSBjoern A. Zeeb
440696600cSBjoern A. Zeeb# stdin must be redirected because it might be for a serial console
450696600cSBjoern A. Zeeb#
460696600cSBjoern A. Zeebkbddev=/dev/ttyv0
470696600cSBjoern A. Zeebviddev=/dev/ttyv0
480696600cSBjoern A. Zeeb
490696600cSBjoern A. Zeeb_sc_config=
500696600cSBjoern A. Zeeb_sc_console=
510696600cSBjoern A. Zeeb_sc_initdone=
520696600cSBjoern A. Zeeb_sc_keymap_msg=
530696600cSBjoern A. Zeebsc_init()
540696600cSBjoern A. Zeeb{
550696600cSBjoern A. Zeeb	if [ -z "${_sc_initdone}" ]; then
560696600cSBjoern A. Zeeb		if [ -z "${_sc_console}" ]; then
570696600cSBjoern A. Zeeb			if [ x`sysctl -n kern.vty` = x"vt" ]; then
580696600cSBjoern A. Zeeb				_sc_console="vt"
590696600cSBjoern A. Zeeb			else
600696600cSBjoern A. Zeeb				_sc_console="syscons"
610696600cSBjoern A. Zeeb			fi
620696600cSBjoern A. Zeeb			_sc_config="${_sc_console}"
630696600cSBjoern A. Zeeb		fi
640696600cSBjoern A. Zeeb		echo -n "Configuring ${_sc_config}:"
650696600cSBjoern A. Zeeb		_sc_initdone=yes
660696600cSBjoern A. Zeeb	fi
670696600cSBjoern A. Zeeb}
680696600cSBjoern A. Zeeb
690696600cSBjoern A. Zeeb# syscons to vt migration helper
700696600cSBjoern A. Zeeblookup_keymap_for_vt()
710696600cSBjoern A. Zeeb{
720696600cSBjoern A. Zeeb	keymap=`basename $1 .kbd`
730696600cSBjoern A. Zeeb	case $keymap in
740696600cSBjoern A. Zeebhy.armscii-8)			echo am;;
750696600cSBjoern A. Zeebbe.iso.acc)			echo be.acc;;
760696600cSBjoern A. Zeebbe.iso)				echo be;;
770696600cSBjoern A. Zeebbg.bds.ctrlcaps)		echo bg.bds;;
780696600cSBjoern A. Zeebbg.phonetic.ctrlcaps)		echo bg.phonetic;;
790696600cSBjoern A. Zeebbr275.iso.acc)			echo br;;
800696600cSBjoern A. Zeebbr275.*)			echo br.noacc;;
810696600cSBjoern A. Zeebby.*)				echo by;;
820696600cSBjoern A. Zeebfr_CA.iso.acc)			echo ca-fr;;
830696600cSBjoern A. Zeebswissgerman.macbook.acc)	echo ch.macbook.acc;;
840696600cSBjoern A. Zeebswissgerman.iso.acc)		echo ch.acc;;
850696600cSBjoern A. Zeebswissgerman.*)			echo ch;;
860696600cSBjoern A. Zeebswissfrench.iso.acc)		echo ch-fr.acc;;
870696600cSBjoern A. Zeebswissfrench.*)			echo ch-fr;;
880696600cSBjoern A. Zeebce.iso2)			echo centraleuropean.qwerty;;
890696600cSBjoern A. Zeebcolemak.iso15.acc)		echo colemak.acc;;
900696600cSBjoern A. Zeebcs.*|cz.*)			echo cz;;
910696600cSBjoern A. Zeebgerman.iso.acc)			echo de.acc;;
920696600cSBjoern A. Zeebgerman.*)			echo de;;
930696600cSBjoern A. Zeebdanish.iso.acc)			echo dk.acc;;
940696600cSBjoern A. Zeebdanish.iso.macbook)		echo dk.macbook;;
950696600cSBjoern A. Zeebdanish.*)			echo dk;;
960696600cSBjoern A. Zeebestonian.*)			echo ee;;
970696600cSBjoern A. Zeebspanish.dvorak)			echo es.dvorak;;
980696600cSBjoern A. Zeebspanish.iso*.acc)		echo es.acc;;
990696600cSBjoern A. Zeebspanish.iso)			echo es;;
1000696600cSBjoern A. Zeebfinnish.*)			echo fi;;
1010696600cSBjoern A. Zeebfr.macbook.acc)			echo fr.macbook;;
1020696600cSBjoern A. Zeebfr.iso.acc)			echo fr.acc;;
1030696600cSBjoern A. Zeebfr.iso)				echo fr;;
1040696600cSBjoern A. Zeebel.iso07)			echo gr;;
1050696600cSBjoern A. Zeebgr.us101.acc)			echo gr.101.acc;;
1060696600cSBjoern A. Zeebhr.iso)				echo hr;;
1070696600cSBjoern A. Zeebhu.iso2.101keys)		echo hu.101;;
1080696600cSBjoern A. Zeebhu.iso2.102keys)		echo hu.102;;
1090696600cSBjoern A. Zeebiw.iso8)			echo il;;
1100696600cSBjoern A. Zeebicelandic.iso.acc)		echo is.acc;;
1110696600cSBjoern A. Zeebicelandic.iso)			echo is;;
1120696600cSBjoern A. Zeebit.iso)				echo it;;
1130696600cSBjoern A. Zeebjp.106x)			echo jp.capsctrl;;
1140696600cSBjoern A. Zeebjp.106)				echo jp;;
1150696600cSBjoern A. Zeebkk.pt154.io)			echo kz.io;;
1160696600cSBjoern A. Zeebkk.pt154.kst)			echo kz.kst;;
1170696600cSBjoern A. Zeeblatinamerican.iso.acc)		echo latinamerican.acc;;
1180696600cSBjoern A. Zeeblt.iso4)			echo lt;;
1190696600cSBjoern A. Zeebnorwegian.iso)			echo no;;
1200696600cSBjoern A. Zeebnorwegian.dvorak)		echo no.dvorak;;
1210696600cSBjoern A. Zeebdutch.iso.acc)			echo nl;;
1220696600cSBjoern A. Zeebeee_nordic)			echo nordic.asus-eee;;
1230696600cSBjoern A. Zeebpl_PL.dvorak)			echo pl.dvorak;;
1240696600cSBjoern A. Zeebpl_PL.ISO8859-2)		echo pl;;
1250696600cSBjoern A. Zeebpt.iso.acc)			echo pt.acc;;
1260696600cSBjoern A. Zeebpt.iso)				echo pt;;
1270696600cSBjoern A. Zeebru.koi8-r.shift)		echo ru.shift;;
1280696600cSBjoern A. Zeebru.koi8-r.win)			echo ru.win;;
1290696600cSBjoern A. Zeebru.*)				echo ru;;
1300696600cSBjoern A. Zeebswedish.*)			echo se;;
1310696600cSBjoern A. Zeebsi.iso)				echo si;;
1320696600cSBjoern A. Zeebsk.iso2)			echo sk;;
1330696600cSBjoern A. Zeebtr.iso9.q)			echo tr;;
1340696600cSBjoern A. Zeebua.koi8-u.shift.alt)		echo ua.shift.alt;;
1350696600cSBjoern A. Zeebua.*)				echo ua;;
1360696600cSBjoern A. Zeebuk.*-ctrl)			echo uk.capsctrl;;
1370696600cSBjoern A. Zeebuk.dvorak)			echo uk.dvorak;;
1380696600cSBjoern A. Zeebuk.*)				echo uk;;
1390696600cSBjoern A. Zeebus.iso.acc)			echo us.acc;;
1400696600cSBjoern A. Zeebus.pc-ctrl)			echo us.ctrl;;
1410696600cSBjoern A. Zeebus.iso)				echo us;;
1420696600cSBjoern A. Zeeb	esac
1430696600cSBjoern A. Zeeb}
1440696600cSBjoern A. Zeeb
1450696600cSBjoern A. Zeebkbdcontrol_load_keymap()
1460696600cSBjoern A. Zeeb{
1470696600cSBjoern A. Zeeb	errmsg=`kbdcontrol < ${kbddev} -l ${keymap} 2>&1`
1480696600cSBjoern A. Zeeb	if [ -n "${errmsg}" -a "${_sc_console}" = "vt" ]; then
1490696600cSBjoern A. Zeeb		_sc_keymap_msg="${errmsg}"
1500696600cSBjoern A. Zeeb		keymap_vt=`lookup_keymap_for_vt ${keymap}`
1510696600cSBjoern A. Zeeb		if [ -n "${keymap_vt}" ]; then
1520696600cSBjoern A. Zeeb			errmsg=`kbdcontrol < ${kbddev} -l ${keymap_vt} 2>&1`
1530696600cSBjoern A. Zeeb			if [ -z "${errmsg}" ]; then
1540696600cSBjoern A. Zeeb				_sc_keymap_msg="New keymap: In /etc/rc.conf replace 'keymap=${keymap}' by 'keymap=${keymap_vt}'"
1550696600cSBjoern A. Zeeb			fi
1560696600cSBjoern A. Zeeb		else
1570696600cSBjoern A. Zeeb			_sc_keymap_msg="No replacement found for keymap '${keymap}'.
1580696600cSBjoern A. ZeebYou may try to convert your keymap file using 'convert-keymap.pl', which is
1590696600cSBjoern A. Zeebpart of the system sources and located in /usr/src/tools/tools/vt/keymaps/"
1600696600cSBjoern A. Zeeb		fi
1610696600cSBjoern A. Zeeb	fi
1620696600cSBjoern A. Zeeb}
1630696600cSBjoern A. Zeeb
1640696600cSBjoern A. Zeeb# helper
1650696600cSBjoern A. Zeebsyscons_configure_keyboard()
1660696600cSBjoern A. Zeeb{
1670696600cSBjoern A. Zeeb	# keymap
1680696600cSBjoern A. Zeeb	#
1690696600cSBjoern A. Zeeb	case ${keymap} in
1700696600cSBjoern A. Zeeb	NO | '')
1710696600cSBjoern A. Zeeb		;;
1720696600cSBjoern A. Zeeb	*)
1730696600cSBjoern A. Zeeb		sc_init
1740696600cSBjoern A. Zeeb		echo -n ' keymap';	kbdcontrol_load_keymap
1750696600cSBjoern A. Zeeb		;;
1760696600cSBjoern A. Zeeb	esac
1770696600cSBjoern A. Zeeb
1780696600cSBjoern A. Zeeb	# keyrate
1790696600cSBjoern A. Zeeb	#
1800696600cSBjoern A. Zeeb	case ${keyrate} in
1810696600cSBjoern A. Zeeb	[Nn][Oo] | '')
1820696600cSBjoern A. Zeeb		;;
1830696600cSBjoern A. Zeeb	*)
1840696600cSBjoern A. Zeeb		sc_init
1850696600cSBjoern A. Zeeb		echo -n ' keyrate';	kbdcontrol < ${kbddev} -r ${keyrate}
1860696600cSBjoern A. Zeeb		;;
1870696600cSBjoern A. Zeeb	esac
1880696600cSBjoern A. Zeeb
1890696600cSBjoern A. Zeeb	# keybell
1900696600cSBjoern A. Zeeb	#
1910696600cSBjoern A. Zeeb	case ${keybell} in
1920696600cSBjoern A. Zeeb	[Nn][Oo] | '')
1930696600cSBjoern A. Zeeb		;;
1940696600cSBjoern A. Zeeb	*)
1950696600cSBjoern A. Zeeb		sc_init
1960696600cSBjoern A. Zeeb		echo -n ' keybell';	kbdcontrol < ${kbddev} -b ${keybell}
1970696600cSBjoern A. Zeeb		;;
1980696600cSBjoern A. Zeeb	esac
1990696600cSBjoern A. Zeeb
2000696600cSBjoern A. Zeeb	# change function keys
2010696600cSBjoern A. Zeeb	#
2020696600cSBjoern A. Zeeb	case ${keychange} in
2030696600cSBjoern A. Zeeb	[Nn][Oo] | '')
2040696600cSBjoern A. Zeeb		;;
2050696600cSBjoern A. Zeeb	*)
2060696600cSBjoern A. Zeeb		sc_init
2070696600cSBjoern A. Zeeb		echo -n ' keychange'
2080696600cSBjoern A. Zeeb		set -- ${keychange}
2090696600cSBjoern A. Zeeb		while [ $# -gt 0 ]; do
2100696600cSBjoern A. Zeeb			kbdcontrol <${kbddev} -f "$1" "$2"
2110696600cSBjoern A. Zeeb			shift; shift
2120696600cSBjoern A. Zeeb		done
2130696600cSBjoern A. Zeeb		;;
2140696600cSBjoern A. Zeeb	esac
2150696600cSBjoern A. Zeeb
2160696600cSBjoern A. Zeeb	# set this keyboard mode for all virtual terminals
2170696600cSBjoern A. Zeeb	#
2180696600cSBjoern A. Zeeb	if [ -n "${allscreens_kbdflags}" ]; then
2190696600cSBjoern A. Zeeb		sc_init
2200696600cSBjoern A. Zeeb		echo -n ' allscreens_kbd'
2210696600cSBjoern A. Zeeb		for ttyv in /dev/ttyv*; do
2220696600cSBjoern A. Zeeb			kbdcontrol ${allscreens_kbdflags} < ${ttyv} > ${ttyv} 2>&1
2230696600cSBjoern A. Zeeb		done
2240696600cSBjoern A. Zeeb	fi
2250696600cSBjoern A. Zeeb}
2260696600cSBjoern A. Zeeb
2270696600cSBjoern A. Zeebsyscons_setkeyboard()
2280696600cSBjoern A. Zeeb{
2290696600cSBjoern A. Zeeb	kbd=$1
2300696600cSBjoern A. Zeeb
2310696600cSBjoern A. Zeeb	if [ -z "${kbd}" ]; then
2320696600cSBjoern A. Zeeb		return 1
2330696600cSBjoern A. Zeeb	fi
2340696600cSBjoern A. Zeeb
2350696600cSBjoern A. Zeeb	# Check if the kbdmux(4) is the current active keyboard
2360696600cSBjoern A. Zeeb	kbdcontrol -i < ${kbddev} | grep kbdmux > /dev/null 2>&1
2370696600cSBjoern A. Zeeb	if [ $? -ne 0 ]; then
2380696600cSBjoern A. Zeeb		kbdcontrol -k ${kbd} < ${kbddev} > /dev/null 2>&1
2390696600cSBjoern A. Zeeb	fi
2400696600cSBjoern A. Zeeb
2410696600cSBjoern A. Zeeb	_sc_config="keyboard"
2420696600cSBjoern A. Zeeb	syscons_configure_keyboard
2430696600cSBjoern A. Zeeb
2440696600cSBjoern A. Zeeb	# Terminate keyboard configuration line and reset global variables.
2450696600cSBjoern A. Zeeb	#
2460696600cSBjoern A. Zeeb	if [ -n "${_sc_initdone}" ]; then
2470696600cSBjoern A. Zeeb		echo '.'
2480696600cSBjoern A. Zeeb		_sc_config="${_sc_console}"
2490696600cSBjoern A. Zeeb		_sc_initdone=
2500696600cSBjoern A. Zeeb	fi
2510696600cSBjoern A. Zeeb}
2520696600cSBjoern A. Zeeb
2530696600cSBjoern A. Zeebsyscons_precmd()
2540696600cSBjoern A. Zeeb{
2550696600cSBjoern A. Zeeb	if [ ! -c $kbddev ]
2560696600cSBjoern A. Zeeb	then
2570696600cSBjoern A. Zeeb		return 1
2580696600cSBjoern A. Zeeb	fi
2590696600cSBjoern A. Zeeb	return 0
2600696600cSBjoern A. Zeeb}
2610696600cSBjoern A. Zeeb
2620696600cSBjoern A. Zeebsyscons_start()
2630696600cSBjoern A. Zeeb{
2640696600cSBjoern A. Zeeb	# keyboard
2650696600cSBjoern A. Zeeb	#
2660696600cSBjoern A. Zeeb	if [ -n "${keyboard}" ]; then
2670696600cSBjoern A. Zeeb		syscons_setkeyboard ${keyboard}
2680696600cSBjoern A. Zeeb	fi
2690696600cSBjoern A. Zeeb
2700696600cSBjoern A. Zeeb	syscons_configure_keyboard
2710696600cSBjoern A. Zeeb
2720696600cSBjoern A. Zeeb	# cursor type
2730696600cSBjoern A. Zeeb	#
2740696600cSBjoern A. Zeeb	case ${cursor} in
2750696600cSBjoern A. Zeeb	[Nn][Oo] | '')
2760696600cSBjoern A. Zeeb		;;
2770696600cSBjoern A. Zeeb	*)
2780696600cSBjoern A. Zeeb		sc_init
2790696600cSBjoern A. Zeeb		echo -n ' cursor';	vidcontrol < ${viddev} -c ${cursor}
2800696600cSBjoern A. Zeeb		;;
2810696600cSBjoern A. Zeeb	esac
2820696600cSBjoern A. Zeeb
2830696600cSBjoern A. Zeeb	# screen mapping
2840696600cSBjoern A. Zeeb	#
2850696600cSBjoern A. Zeeb	case ${scrnmap} in
2860696600cSBjoern A. Zeeb	[Nn][Oo] | '')
2870696600cSBjoern A. Zeeb		;;
2880696600cSBjoern A. Zeeb	*)
2890696600cSBjoern A. Zeeb		sc_init
2900696600cSBjoern A. Zeeb		echo -n ' scrnmap';	vidcontrol < ${viddev} -l ${scrnmap}
2910696600cSBjoern A. Zeeb		;;
2920696600cSBjoern A. Zeeb	esac
2930696600cSBjoern A. Zeeb
2940696600cSBjoern A. Zeeb	# font 8x16
2950696600cSBjoern A. Zeeb	#
2960696600cSBjoern A. Zeeb	case ${font8x16} in
2970696600cSBjoern A. Zeeb	[Nn][Oo] | '')
2980696600cSBjoern A. Zeeb		;;
2990696600cSBjoern A. Zeeb	*)
3000696600cSBjoern A. Zeeb		sc_init
3010696600cSBjoern A. Zeeb		echo -n ' font8x16';	vidcontrol < ${viddev} -f 8x16 ${font8x16}
3020696600cSBjoern A. Zeeb		;;
3030696600cSBjoern A. Zeeb	esac
3040696600cSBjoern A. Zeeb
3050696600cSBjoern A. Zeeb	# font 8x14
3060696600cSBjoern A. Zeeb	#
3070696600cSBjoern A. Zeeb	case ${font8x14} in
3080696600cSBjoern A. Zeeb	[Nn][Oo] | '')
3090696600cSBjoern A. Zeeb		;;
3100696600cSBjoern A. Zeeb	*)
3110696600cSBjoern A. Zeeb		sc_init
3120696600cSBjoern A. Zeeb		echo -n ' font8x14';	vidcontrol < ${viddev} -f 8x14 ${font8x14}
3130696600cSBjoern A. Zeeb		;;
3140696600cSBjoern A. Zeeb	esac
3150696600cSBjoern A. Zeeb
3160696600cSBjoern A. Zeeb	# font 8x8
3170696600cSBjoern A. Zeeb	#
3180696600cSBjoern A. Zeeb	case ${font8x8} in
3190696600cSBjoern A. Zeeb	[Nn][Oo] | '')
3200696600cSBjoern A. Zeeb		;;
3210696600cSBjoern A. Zeeb	*)
3220696600cSBjoern A. Zeeb		sc_init
3230696600cSBjoern A. Zeeb		echo -n ' font8x8';	vidcontrol < ${viddev} -f 8x8 ${font8x8}
3240696600cSBjoern A. Zeeb		;;
3250696600cSBjoern A. Zeeb	esac
3260696600cSBjoern A. Zeeb
3270696600cSBjoern A. Zeeb	# blank time
3280696600cSBjoern A. Zeeb	#
3290696600cSBjoern A. Zeeb	case ${blanktime} in
3300696600cSBjoern A. Zeeb	[Nn][Oo] | '')
3310696600cSBjoern A. Zeeb		;;
3320696600cSBjoern A. Zeeb	*)
3330696600cSBjoern A. Zeeb		sc_init
3340696600cSBjoern A. Zeeb		echo -n ' blanktime';	vidcontrol < ${viddev} -t ${blanktime}
3350696600cSBjoern A. Zeeb		;;
3360696600cSBjoern A. Zeeb	esac
3370696600cSBjoern A. Zeeb
3380696600cSBjoern A. Zeeb	# screen saver
3390696600cSBjoern A. Zeeb	#
3400696600cSBjoern A. Zeeb	case ${saver} in
3410696600cSBjoern A. Zeeb	[Nn][Oo] | '')
3420696600cSBjoern A. Zeeb		;;
3430696600cSBjoern A. Zeeb	*)
3440696600cSBjoern A. Zeeb		sc_init
3450696600cSBjoern A. Zeeb		echo -n ' screensaver'
3460696600cSBjoern A. Zeeb		for i in `kldstat | awk '$5 ~ "_saver\.ko$" { print $5 }'`; do
3470696600cSBjoern A. Zeeb			kldunload ${i}
3480696600cSBjoern A. Zeeb		done
349*b11974c2SChris Rees		load_kld -e _saver ${saver}_saver
3500696600cSBjoern A. Zeeb		;;
3510696600cSBjoern A. Zeeb	esac
3520696600cSBjoern A. Zeeb
3530696600cSBjoern A. Zeeb	# set this mode for all virtual screens
3540696600cSBjoern A. Zeeb	#
3550696600cSBjoern A. Zeeb	if [ -n "${allscreens_flags}" ]; then
3560696600cSBjoern A. Zeeb		sc_init
3570696600cSBjoern A. Zeeb		echo -n ' allscreens'
3580696600cSBjoern A. Zeeb		for ttyv in /dev/ttyv*; do
3590696600cSBjoern A. Zeeb			vidcontrol ${allscreens_flags} < ${ttyv} > ${ttyv} 2>&1
3600696600cSBjoern A. Zeeb		done
3610696600cSBjoern A. Zeeb	fi
3620696600cSBjoern A. Zeeb
3630696600cSBjoern A. Zeeb	[ -n "${_sc_initdone}" ] && echo '.'
3640696600cSBjoern A. Zeeb	if [ -n "${_sc_keymap_msg}" ]; then
3650696600cSBjoern A. Zeeb		echo
3660696600cSBjoern A. Zeeb		echo "WARNING:"
3670696600cSBjoern A. Zeeb		echo "${_sc_keymap_msg}."
3680696600cSBjoern A. Zeeb		echo
3690696600cSBjoern A. Zeeb	fi
3700696600cSBjoern A. Zeeb}
3710696600cSBjoern A. Zeeb
3720696600cSBjoern A. Zeebload_rc_config $name
3730696600cSBjoern A. Zeebrun_rc_command $*
3740696600cSBjoern A. Zeeb
375