staging.inyokaproject.org

Multiseat

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels Archiv/Multiseat.

jo-master

Avatar von jo-master

Anmeldungsdatum:
17. Juli 2010

Beiträge: 95

ich dachte, ich finde etwas zeit und poste gleich die fertigen skripte. bin aber noch nicht fertig. deshalb erstmal die fehler:

  • on_pamexec_setgroup.sh: es wird nicht geprüft, ob die seat-gruppe existiert

  • unmounter-helper.sh: dieses skript läuft mit user-rechten und kann nicht auf die log-datei zugreifen / der übergebene mount-punkt kann sowohl /dev/* als auch /media/* sein

hier ein paar verbesserungsvorschläge, deren implementation ich hier in den nächsten paar tagen poste (ist schon fast fertig):

  • on_seat_usbhub.sh: zum mounten das device-label und nicht device-name verwenden / mount mit sync-option

  • mount soll auch für mehrere seats gleichzeitig möglich sein

  • logrotate für /var/log/multiseat.log

@fpaetzke: danke schonmal für deinen lösungsweg. da wäre ich nicht so schnell drauf gekommen.

fpaetzke

Anmeldungsdatum:
28. Februar 2012

Beiträge: Zähle...

ich würde vorschlagen, eine kürzere kdm konfiguration zu notieren. die 500+ zeilen sind doch etwas unübersichtlich. die wesentlichen parameter hab ich hier notiert: http://fpaetzke.de/ZweiUserEinPc.html

@jo-master: ich freu mich auf deine änderungen.

ich hab meine konfiguration auch automatisiert und arbeite grad an plug & play. ich werd das nachher mal bei github posten.

edit: https://github.com/fpaetzke/multiseat

jo-master

Avatar von jo-master

Anmeldungsdatum:
17. Juli 2010

Beiträge: 95

sorry, dass meine konfigs noch fehlen. ich war die letzten tage damit beschäfftig mein system zu retten. aber ein echtes ubuntu lässt sich auch vom blitzschlag nicht kleinkriegen. konfig folgt bald.

jo-master

Avatar von jo-master

Anmeldungsdatum:
17. Juli 2010

Beiträge: 95

den zugriff mehrerer seats auf den gleichen speicher musste ich nun verwerfen. (obwohl schon alles fertig ist ☹) ich habe nicht beachtet, dass die gruppeninformationen erst nach einem re-login zur verfügung stehen.

mein system sieht wie folgt aus:

  • systemlink: /etc/multiseat/unmounter.sh → /sbin/umount.multiseat-unmounter

  • für jeden seat einen mount- und umount-eintrag in /etc/polkit-1/localauthority/51-multiseat.d/

  • /etc/multiseat/unmounter.sh: (korrigiert: 07.05)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#! /bin/bash


if [ $# != 1 ]; then
    echo "Not Authorized!"
    exit
fi
if [ ${#DISPLAY} \< 2 ]; then
    echo "Not Authorized!"
    exit
fi


dev=$1 # /dev/sdX or /media/label
if [ ${dev:0:5} = "/dev/" ]; then
    mnt=$(mount | grep "$dev" | sed -e "s/.* on //" | sed -e "s/ type .*//")
else
    mnt=$(echo "$dev" | sed -e "s/\/$//")
    dev=$(mount | grep "$mnt" | sed -e "s/ on .*//")
fi
terminal_nr=${DISPLAY:1:1} # 0, 1, 2, 3 ...
group=$(stat -c %G $mnt) #seatX?


if [ ${group:0:7} != "ms-seat" ]; then
    echo "Not Authorized! It's your Device?"
    exit
fi
if [ ${group:7} != $(expr $terminal_nr + 1) ]; then
    echo "Not Authorized! It's your Device?"
    exit
fi


udisks --unmount $dev
  • /etc/udev/rules.d/99-multiseat-automount.rules:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# select device: only storage devices and sd-cards
KERNEL!="sd*[0-9]|mmcblk[0-9]p[0-9]", GOTO="multiseat_automounter_end"


# check if filesystem exists
ENV{ID_FS_TYPE}=="", GOTO="multiseat_automounter_end"


# ckeck partition label
# Get a label if present, otherwise specify one
ENV{ID_FS_LABEL_ENC}!="", ENV{MountLabel}="$env{ID_FS_LABEL_ENC}"
ENV{ID_FS_LABEL_ENC}=="", ENV{MountLabel}="%k"


# run multiseat-automounter and disable all udisk-based desktop automounters
ACTION=="add|change|remove",           \
ENV{UDISKS_PRESENTATION_NOPOLICY}="1", \
RUN+="/etc/multiseat/automounter.sh %k $env{MountLabel} $env{ACTION} $env{DEVPATH} $env{ID_FS_TYPE} $env{ID_FS_UUID}"


# end label
LABEL="multiseat_automounter_end"
  • /etc/multiseat/automounter.sh:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
#! /bin/bash


logfile=/var/log/multiseat.log
mountrules=/etc/multiseat/mount-rules
t="    "

device=$1  # kernel device: sdb1, sdc3, etc
label=$2   # partition label
action=$3  # add, remove
devpath=$4 # /devices/...
fstype=$5  # vfat, ntfs, etc
uuid=$6    # UUID of device

#devgroup="ms-mount-$device"


# ignore devices in fstab
if [ -n "$(grep ^/dev/$device\  /etc/fstab)" ]; then
    exit
elif [ -n "$(grep ^UUID=$uuid\  /etc/fstab)" ]; then
    exit
elif [ -n "$(grep ^LABEL=$label\  /etc/fstab)" ]; then
    exit
fi


# write log
echo "$(date) automounter.sh" >> $logfile
echo "$t Device: $device ($label)" >> $logfile
echo "$t Action: $action" >> $logfile
echo "$t FS Type: $fstype" >> $logfile
echo "$t Path: $devpath" >> $logfile
echo "$t UUID: $uuid" >> $logfile


if [ $action = "add" -o $action = "change" ]; then
    
    # ignore already mounted devices
    if [ -n "$(mount | grep ^/dev/$device\ )" ]; then
        exit
    fi
    
    
#    # prepare device group
#    groupdel "$devgroup"
#    groupadd -f "$devgroup"
#    gid=$(grep ^"$devgroup" /etc/group | cut -d: -f3)
    
    
    # set permission group
    gid=0
    for SEAT in $(cd "$mountrules"; ls)
    do
        group="ms-$SEAT"
        
        # check matches by path
        if [ -r "$mountrules/$SEAT/by-path" ]; then
            LINES=$(cat "$mountrules/$SEAT/by-path")
            for MATCHSTR in $LINES
            do
                if [[ "$devpath" == $MATCHSTR ]]; then
#                    seatmem=$(grep ^$group /etc/group | \
#                              cut -d: -f4 | tr "," " ")
#                    for newmem in $seatmem
#                    do
#                        usermod -a -G "$devgroup" "$newmem"
#                    done
#                    break
                    
                    gid=$(grep ^"$group" /etc/group | cut -d: -f3)
                    break 2
                fi
            done
        fi
        
    done
    
    
    # set mount options
    
    # global
    mount_options="relatime,sync,uhelper=multiseat-unmounter"
    
    # filesystem depended
    if [ "$fstype" = vfat -o "$fstype" = "ntfs" ]; then
        mount_options="$mount_options,uid=0,gid=$gid,umask=007"
    fi
    
    
    # mount
    mkdir /media/$label
    chown 0:$gid /media/$label
    chmod 770 /media/$label
    mount /dev/$device /media/$label -o "$mount_options"
    
elif [ $action = "remove" ]; then
    
    # umount
    umount /media/$label
    rmdir /media/$label
#    groupdel "$devgroup"
    
fi
  • regeln für die mount-zuordnung in: /etc/multiseat/mount-rules/

    • seat1

    • seat2

    • seatN.

      • by-path: (beispielsweise)

/devices/pci0000:00/0000:00:16.2/usb3/3-3/3-3.4/3-3.4:1.0/*
/devices/pci0000:00/0000:00:16.2/usb3/3-3/3-3.4/3-3.4:1.0/host14/target14:0:0/14:0:0:0/block/sdc/sdc1
  • /etc/pam.d/gdm:

...
session optional        pam_exec.so /etc/multiseat/pamexec.sh
  • /etc/multiseat/pamexec.sh:

1
2
3
4
#! /bin/bash

# parse args and run scripts
run-parts /etc/multiseat/pamexec-scripts
  • /etc/multiseat/pamexec-scripts/01_seat_group:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#! /bin/bash

logfile=/var/log/multiseat.log
t="    "


group="ms-seat$(expr ${PAM_TTY:1:1} + 1)"


# write log
echo "$(date) pamexec-scripts: 01_seat_group" >> $logfile
echo "$t Terminal: $PAM_TTY" >> $logfile
echo "$t User:     $PAM_USER" >> $logfile
echo "$t Action:   $PAM_TYPE" >> $logfile
echo "$t Group:    $group"    >> $logfile


if [ $PAM_TYPE = "open_session" ]; then
    
    # remove all user from group
    groupdel "$group"
    
    #add $PAM_USER to seat group
    groupadd -f "$group"
    usermod -a -G "$group" "$PAM_USER"
    
elif [ $PAM_TYPE = "close_session" ]; then
    
    # remove all users from seat group
    groupdel "$group"
    
fi
  • /etc/multiseat/pamexec-scripts/02_pulse-access_group:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#! /bin/bash

logfile=/var/log/multiseat.log
t="    "


# write log
echo "$(date) pamexec-scripts: 02_pulse-access_group" >> $logfile
echo "$t User:     $PAM_USER" >> $logfile
echo "$t Action:   $PAM_TYPE" >> $logfile


if [ $PAM_TYPE = "open_session" ]; then
    
    #add $PAM_USER to pulse-access group
    usermod -a -G pulse-access "$PAM_USER"
    
elif [ $PAM_TYPE = "close_session" ]; then
    
    # remove $PAM_USER from pulse-access group
    groups_left=$(id -nG $PAM_USER | \
                  sed -e "s/pulse-access//" -e "s/  / /g" -e "s/ /,/g")
    usermod -G "$groups_left" "$PAM_USER"
    
fi
  • /etc/logrotate.d/multiseat:

/var/log/multseat.log {
	monthly
	rotate 12
	size 10MB
	compress
	delaycompress
	missingok
	notifempty
	create 644 root root
}

ich denke mit so einem generischen system kommt man dem ziel eines multiseat-pakets (zb.: seatadd, seatsel, usw) einen schritt näher. es fehlt aber noch einiges an entwicklung beim automounter, um möglichst viele speichergeräte zu erkennen. solche eine struktur, wie in mount-rules schlage ich auch für eingabegeräte vor. dadurch lässt sich das ganze deutlich besser konfigurieren ohne gleich ganze udev-regeln schreiben zu müssen. diese müssen nur einmal generisch formuliert werden.

jo-master

Avatar von jo-master

Anmeldungsdatum:
17. Juli 2010

Beiträge: 95

ich habe noch einen bug gefunden, den ich nicht erklären kann:

  • die mittels pam eingetragene gruppe »ms-seatX« wird in der aktuellen session nicht erkannt (test mit kommando: »id«)

  • wird der pc runtergefahren wird vom gdm kein »close_session« ereignis mehr ausgelöst und der benutzer bleibt in der gruppe erhalten. (deshalb habe ich das problem bisher auch nicht bemerkt.)

hat jemand eine idee?

fpaetzke

Anmeldungsdatum:
28. Februar 2012

Beiträge: 16

jo-master schrieb:

  • die mittels pam eingetragene gruppe »ms-seatX« wird in der aktuellen session nicht erkannt (test mit kommando: »id«)

über pam_group oder pam_exec gesetzt?

  • wird der pc runtergefahren wird vom gdm kein »close_session« ereignis mehr ausgelöst und der benutzer bleibt in der gruppe erhalten. (deshalb habe ich das problem bisher auch nicht bemerkt.)

is das der standard gdm oder der ms-branch? ansonsten solltest du auch beim login die ms-gruppen leeren. allein schon wenn sich jemand nicht ausloggt und der rechner rebootet wird ist die gruppe dann nicht leer.

jo-master

Avatar von jo-master

Anmeldungsdatum:
17. Juli 2010

Beiträge: 95

  • es ist der ms-branch des gdm

  • pam_exec

  • die gruppen werden bereits beim login geleert

da über gruppen-rechte kein gemeinsamer zugriff auf usb-speicher realisierbar ist, kann man als lösung für solche probleme auch den user der entsprechenden seat-gruppe als eigentümer des mount-punktes setzten. dann ist es nicht wichtig, ob in der aktuellen gnome-, kde-, usw.-session die gruppeninformation übernommen wurde. durchschaut habe ich das problem jedoch noch nicht.

jo-master

Avatar von jo-master

Anmeldungsdatum:
17. Juli 2010

Beiträge: 95

z.b. automounter.sh:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
#! /bin/bash


logfile=/var/log/multiseat.log
mountrules=/etc/multiseat/mount-rules
t="    "

device=$1  # kernel device: sdb1, sdc3, etc
label=$2   # partition label
action=$3  # add, remove
devpath=$4 # /devices/...
fstype=$5  # vfat, ntfs, etc
uuid=$6    # UUID of device

#devgroup="ms-mount-$device"


# ignore devices in fstab
if [ -n "$(grep ^/dev/$device\  /etc/fstab)" ]; then
    exit
elif [ -n "$(grep ^UUID=$uuid\  /etc/fstab)" ]; then
    exit
elif [ -n "$(grep ^LABEL=$label\  /etc/fstab)" ]; then
    exit
fi


# write log
echo "$(date) automounter.sh" >> $logfile
echo "$t Device: $device ($label)" >> $logfile
echo "$t Action: $action" >> $logfile
echo "$t FS Type: $fstype" >> $logfile
echo "$t Path: $devpath" >> $logfile
echo "$t UUID: $uuid" >> $logfile


if [ $action = "add" -o $action = "change" ]; then
    
    # ignore already mounted devices
    if [ -n "$(mount | grep ^/dev/$device\ )" ]; then
        exit
    fi
    
    
#    # prepare device group
#    groupdel "$devgroup"
#    groupadd -f "$devgroup"
#    gid=$(grep ^"$devgroup" /etc/group | cut -d: -f3)
    
    
    # set permission group
    gid=0
    uid=0
    for SEAT in $(cd "$mountrules"; ls)
    do
        group="ms-$SEAT"
        
        # check matches by path
        if [ -r "$mountrules/$SEAT/by-path" ]; then
            LINES=$(cat "$mountrules/$SEAT/by-path")
            for MATCHSTR in $LINES
            do
                if [[ "$devpath" == $MATCHSTR ]]; then
#                    seatmem=$(grep ^$group /etc/group | \
#                              cut -d: -f4 | tr "," " ")
#                    for newmem in $seatmem
#                    do
#                        usermod -a -G "$devgroup" "$newmem"
#                    done
#                    break
                    
                    gid=$(grep ^"$group" /etc/group | cut -d: -f3)
                    username=$(grep ^"$group" /etc/group | \
                               cut -d: -f4 | cut -d, -f1)
                    uid=$(id -u $username)
                    break 2
                fi
            done
        fi
        
    done
    
    
    # set mount options
    
    # global
    mount_options="relatime,sync,uhelper=multiseat-unmounter"
    
    # filesystem depended
    if [ "$fstype" = vfat -o "$fstype" = "ntfs" ]; then
        mount_options="$mount_options,uid=$uid,gid=$gid,umask=007"
    fi
    
    
    # mount
    mkdir /media/$label
    chown $uid:$gid /media/$label
    chmod 770 /media/$label
    mount /dev/$device /media/$label -o "$mount_options"
    
elif [ $action = "remove" ]; then
    
    # umount
    umount /media/$label
    rmdir /media/$label
#    groupdel "$devgroup"
    
fi

jo-master

Avatar von jo-master

Anmeldungsdatum:
17. Juli 2010

Beiträge: 95

um die konfiguration einfacher zu gestallten habe ich udev und die input/mount-konfiguration getrennt. dazu habe ich ein weiteres script eingeführt:

getseat.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#! /bin/bash


# declaration
pathprefix=/etc/multiseat/seat-rules
seat=0


# parse arguments
devicetype=$1   # mount, input
devpath=$2      # /devices/...


# set path
rulespath="$pathprefix/$devicetype"


# get default
if [ -r "$rulespath/default" ]; then
    defaultval=$(cat "$rulespath/default" | sed -n 1p)
    if [ ${defaultval:0:4} = "seat" ]; then
        seat=${defaultval:4}
    fi
fi


# check rules and use first matching one
for SEATDIR in $(cd "$rulespath"; ls | grep -i ^"seat")
do
    
    # check matches by path
    if [ -r "$rulespath/$SEATDIR/by-path" ]; then
        LINES=$(cat "$rulespath/$SEATDIR/by-path")
        for MATCHSTR in $LINES
        do
            if [[ "$devpath" == $MATCHSTR ]]; then
                seat=${SEATDIR:4}
                break 2
            fi
        done
    fi
    
done


# return result
echo "$seat"

dazu gehörig folgende ordnerstruktur in /etc/multiseat/:

  • seat-rules

    • mount

      • seat1

        • by-path

      • seat2

        • by-path

      • default

    • input

      • seat1

        • by-path

      • seat2

        • by-path

      • default

das mount und udev-input-skript wurden wie folgt angepasst:

99-multiseat-input.rules

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# select device: input
SUBSYSTEM!="input", GOTO="multiseat_input_end"


# assign to seat
PROGRAM="/etc/multiseat/getseat.sh input $env{DEVPATH}", ENV{ID_INPUT.tags}="ms-seat%c"


# end label
LABEL="multiseat_input_end"

automounter.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#! /bin/bash


logfile=/var/log/multiseat.log
getseat="/etc/multiseat/getseat.sh"
t="    "

device=$1  # kernel device: sdb1, sdc3, etc
label=$2   # partition label
action=$3  # add, remove
devpath=$4 # /devices/...
fstype=$5  # vfat, ntfs, etc
uuid=$6    # UUID of device


# ignore devices in fstab
if [ -n "$(grep ^/dev/$device\  /etc/fstab)" ]; then
    exit
elif [ -n "$(grep ^UUID=$uuid\  /etc/fstab)" ]; then
    exit
elif [ -n "$(grep ^LABEL=$label\  /etc/fstab)" ]; then
    exit
fi


# write log
echo "$(date) automounter.sh" >> $logfile
echo "$t Device: $device ($label)" >> $logfile
echo "$t Action: $action" >> $logfile
echo "$t FS Type: $fstype" >> $logfile
echo "$t Path: $devpath" >> $logfile
echo "$t UUID: $uuid" >> $logfile


if [ $action = "add" -o $action = "change" ]; then
    
    # ignore already mounted devices
    if [ -n "$(mount | grep ^/dev/$device\ )" ]; then
        exit
    fi
    
    
    # set owner and group of mount point
    gid=0
    uid=0
    seat=$($getseat "mount" "$devpath")
    
    group="ms-seat$seat"
    if [ -n "$(grep ^"$group" /etc/group)" ]; then
        gid=$(grep ^"$group" /etc/group | cut -d: -f3)
        username=$(grep ^"$group" /etc/group | cut -d: -f4 | cut -d, -f1)
        if [ -n "$username" ]; then
            uid=$(id -u $username)
        fi
    fi
    
    
    # set mount options
    
    # global
    mount_options="relatime,sync,uhelper=multiseat-unmounter"
    
    # filesystem depended
    if [ "$fstype" = vfat -o "$fstype" = "ntfs" ]; then
        mount_options="$mount_options,uid=$uid,gid=$gid,umask=007"
    fi
    
    
    # mount
    mkdir /media/$label
    chown $uid:$gid /media/$label
    chmod 770 /media/$label
    mount /dev/$device /media/$label -o "$mount_options"
    
elif [ $action = "remove" ]; then
    
    # umount
    umount /media/$label
    rmdir /media/$label
    
fi

die erweiterung, dass seats auch nach anderen kriterien als den gerätepfad zugeorndet werden, ist auch recht einfach zu implementieren.

jo-master

Avatar von jo-master

Anmeldungsdatum:
17. Juli 2010

Beiträge: 95

kann jemand folgenden bug bestätigen?

das mounten von usb speichern mit spezifischen benutzerrechten via uid und gid führt zu extrem langsamen zugriffzeiten (weniger als 1/10 der normalen geschwindigkeit). folgendes system kam zum einsatz:

  • ubuntu 11.04

  • unity3d

  • filemanager: nautilus

  • externer speicher (500gb) mit ntfs

JackyOH

Anmeldungsdatum:
24. März 2007

Beiträge: Zähle...

Hi,

hat jemand auch Probleme mit dem neuen nvidia 302/304 Treiber? Ich habe zwei Seats und bisher hat alles einwandfrei funktioniert. Beim neuen Treiber stürzt der erste X-Server ab, wenn der zweite aktiviert wird. Kann das noch jemand bestätigen?

Im Arch-Forum habe ich übrigens ähnliches gefunden https://bbs.archlinux.org/viewtopic.php?pid=1137805, leider ohne Lösung. ☹

JackyOH

Anmeldungsdatum:
24. März 2007

Beiträge: 80

so gerade eben hab sah ich im arch forum die lösung. man muss nur eine zeile eintragen. anders als im forum beschrieben funktionierte das bei mir nur, wenn ich das bei beiden konfig-dateien eingetragen habe.

1
2
3
4
5
Section "Device"
...
Option         "ProbeAllGpus"          "false"
...
EndSection

jo-master

Avatar von jo-master

Anmeldungsdatum:
17. Juli 2010

Beiträge: 95

hab die fertifgstellung auf 01.01.2013 gesetzt. über weihnachten habe ich zeit den multiseat-kram am ubuntu 12.10 durchzugehen und ein paar skripte zu beenden.

march Team-Icon

(Themenstarter)
Avatar von march

Anmeldungsdatum:
12. Juni 2005

Beiträge: 17329

Danke für das Feedback. ☺

MPW

Anmeldungsdatum:
4. Januar 2009

Beiträge: 3729

jo-master schrieb:

hab die fertifgstellung auf 01.01.2013 gesetzt. über weihnachten habe ich zeit den multiseat-kram am ubuntu 12.10 durchzugehen und ein paar skripte zu beenden.

Hat sich von 12.04 auf 12.10 eigentlich was geändert bzgl. Multi Seat? Ich überlege meinen Desktop PC, der Multi Seat nutzt, upzudaten?