[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