[linux-l] probleme beim resume auf ibm think pad

Frank Reker frank at reker.net
Di Nov 14 12:48:17 CET 2006


Am Tue 14. Nov 2006 09:39 +0000 schrieb Frank Reker:

>jetzt hab ich bloss noch ein problem. durch die chvt's lande ich nach
>dem resume immer auf tty1. ich wuerd aber gerne dort landen, von wo
>ich gestartet bin. dazu muesste ich am anfang den aktuellen foreground-vt
>herausfinden und speichern. weiss jemand wie man den herausbekommt?

hab mir jetzt ein mini c-prog geschrieben (actvt), was mir den actuellen
vt anzeigt. wen's interessiert, hier der code:

----- snip -----

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <linux/vt.h>
#include <sys/stat.h>
#include <fcntl.h>

int
main (argc, argv)
	int	argc;
	char	**argv;
{
	struct vt_stat	vtstat;
	int		fd;

	fd=open("/dev/tty0",O_RDWR);
	if(fd<0) {
		perror("open /dev/tty0 failed");
		exit (1);
	}
	if (ioctl(fd,VT_GETSTATE,&vtstat) < 0) {
		perror ("error ioctl on /dev/tty0");
		exit (1);
	}
	close (fd);
	printf ("%d\n", vtstat.v_active);
	return 0;
}

----- snap -----

damit sieht das suspend/resume script jetzt so aus:

----- snip -----

#!/bin/bash
# -*- Mode: shell-script -*-
# Copyright (C) 2005 by Frank Reker <frank at reker.net>
# Redistribution of this file is permitted under the terms of the GNU 
# Public License (GPL)
#
# resume: 99
# suspend: 99
#

. /etc/sysconfig/suspend

ARG=$1

test "$VGA_RESTORE" = yes || exit 0
test "$VIDEO_CARD" || exit 0

function suspend 
{
	# create dir if not exist
	mkdir -p /var/suspend
	# save tty
	actvt > /var/suspend/old-tty
	# must not be X
	chvt 1
	# save videobios
	cat /proc/bus/pci/"$VIDEO_CARD" > /var/suspend/videobios
	# save vbestate
	vbetool vbestate save > /var/suspend/vbestate
	return 0
}

function resume
{
	# restore videobios
	cat /var/suspend/videobios > /proc/bus/pci/"$VIDEO_CARD"
	# restore vbestate
	vbetool vbestate restore < /var/suspend/vbestate
	# refresh screen
	chvt 2
	usleep 100000
	chvt 1
	# lock screen
	if test "$VLOCK_ON_RESUME" = yes; then
		openvt -ws -- su $VLOCK_AS_USER -c "clear; vlock -a"
	fi
	usleep 100000
	oldvt="$(cat /var/suspend/old-tty)"
	test "$oldvt" && chvt $oldvt
	return 0
}

case $ARG in
	suspend)
		suspend
		;;
	resume)
		resume
		;;
esac

exit 0



#vim:ts=4

----- snap -----


durch das zusaetzliche einbauen von vlock, verhindere ich, dass 
irgendjemand den rechner aufweckt und direkt arbeiten kann, ohne ein
passwort einzugeben.



-- 
Don't worry be happy ...
Ciao Frank
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: nicht verfügbar
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20061114/ebf8c3c9/attachment.sig>


Mehr Informationen über die Mailingliste linux-l