AzoftSpotlightOne working place becomes by 30% cheaper

One working place becomes by 30% cheaper

By Andrey Systerr on January 28, 2011

This article is devoted to implementation of "multiseat" with hardware acceleration on basis of Ubuntu 10.04 LTS. The example that I describe is already set in operation, the system is successfully working for about half a year in an office in Minsk, Byelorussia. The problems of implementation and realization are described by an usual student who works up as a system administrator.


I was working as a system administrator in a small office in Minsk when our company took a decision to renew the computer park. At that time I was faced with a problem. Modern computers have efficiency level that is much higher than office computers need.  Furthermore efficiency differences don't really influence the price. Cheep computers based on Atom cost practically same money like more efficient computers based on Amd and Intel processors (motherboard with Atom processor costs about $100-150, May 2010, Minsk, same price in October 2010).

The situation is quite analogical to that with hard drives. A disk for 40-80 Gb is completelly enough to do any office work. Though such disks are practically not available on the market. When I was writing this article there were following hard drives on sale: 160 Gb (38$), 250 Gb (39$), 320 Gb (40$), 500 Gb (41$), then price differences become more visible. The price for one gigabyte on a small-size hard drive is very high. The situation with the rest of components is similar.

I was stumbled upon a question how to use all this reasonably? A logical conclusion is — to make a system cheaper we can whether buy worse components (which will make the system not much cheaper), or we can cancel some components. Obligatory components on a working place are input device (key board, mouse, tablet etc) and output device (computer screen, projector etc). The rest of the system has nothing to do with user and we can get rid of it. Of course we can not throw out everything. Let’s take a look inside a computer case. Here we surely will see a mother board, video card (may be already on the mother board), processor (may be on the mother board) and memory. The rest of components is not so important. Optical disk drive isn’t in demand, that’s why most likely it will be absent.
Hard drive can be or not to be. If there is no hard drive all information will be downloaded from a server via network (implementation PXE+NFS). But I needed somewhat more.
Then I got an idea to attach two key boards to a computer, two mice and two screens and let them work independently. Such systems are called multiseat.
If you want to go further you can make a diskless multiseat-station. This option will be perfect for a couple of multiseat-stations with a server. I don’t take it into consideration in this article.

 Let’s take a look at multiseat. To switch on the required number of key-boards and mice we will use USB. Up-to-date it’s not a problem. To attach several screens we’ll need whether several ports on a video card or several video cards or we can combine these options.
After we set all this we should get the needed number of working places that can satisfy all users requests. Processor time and memory are shared between these users, it happens only very rare when all users will suddenly need the full system functionality.
At the first look the system becomes very profitable. Why didn’t you hear about such systems before? The answer is very easy – setting such systems is quite complicated.  And not each administrator (even a professional) will be able to combine all these components and let them work together.  


Implementation options

Let’s try to implement such system. Which operating system to choose? Multiseat can be built on basis of modern OS: Linux, Windows and probably some others.

Implementation on basis of Windows OS is in reality not efficient. First of all the license forbiddens to install Windows copy into such systems, you will need to buy two licenses, which kills many pluses at the very start, among the other costs reduce. Second, such system implementation is quite problematic, because you will need to write or to buy additional software. The price of that variant is close to buying two independent computers, or it’s even higher. It also has some advantages — you won’t need to think and to do much. Everything is ready – install software and get a result.
The second option is — multiseat based on Linux — it has many solutions. There are solutions without hardware acceleration (XGL, Xephyr, Xnest etc), and a solution with hardware acceleration (xorg). This article describes implementation of multiseat with hardware acceleration based on Ubuntu Linux 10.04 LTS.

The system is quite flexible and it can work with any number of screens. Theoretically each video card must have its own graphical X-server. Then each server runs graphical desktop enviroment (Gnome, KDE etc)… profit!) That’s why PC where multiseat-system will be based must possess required number of video cards. 

Actually Linux core overtakes all functions of hardware recourses distribution. Graphical cards use recourses of video cards and get processor time from Linux core.


Let’s go to praxis. As strange it may seem but it differs from the theory. In my case the system consisted of mother board ASUS M3A78-CM with a built-in video card ATI Radeon 3100. I bought an additional video card ATI Radeon 2600 and installed it in the single slot PCI Express 16x. It’s not a problem to install more video cards, it’s a problem to purchase PCI Express 1x video cards. But there are excellent solutions. Next step is: to make sure that two video cards work simultaneously. It’s presupposed that to this moment you’ve already installed Linux OS where there is a perfect console command lspci, that is shown for all pci-devices on your system. To limit devices by the presence of the word VGA you can make the following construction: lspci | grep VGA. In my case it looked like:

andrey@k211-multiseat:~$ lspci | grep VGA
01:05.0 VGA compatible controller: ATI Technologies Inc Radeon 3100 Graphics
02:00.0 VGA compatible controller: ATI Technologies Inc RV630 [Radeon HD 2600 Series]

Here we see our two video cards. Of course they appeared here not at once. I had to go to BIOS and to change setting twice. The result met all expectations.

Then I installed proprietary ATI driver. It was a blunder. But I realized it later. And I tell you about it also little bit later. 
Here is some more theory. Let’s see how the system loads itself. Much happens before display manager (GDM, KDM etc) has loaded  but it will stay behind this article. As soon as display manager has loaded it will ask you to insert the user name and a password (it can skip this question, depends on your settings). Then it loads Xorg-server and working environment that you’ve chosen. If you will be nice with it, it can load some Xorg-servers with different settings and for different users, and on demand, with different desktop managers. 

KDM Setting

Back to praxis again. Some display managers are very hard and you will have to patch them (GDM), the best one is KDM. By default this manager is installed in the system. Installing is fulfilled via a simple command in Consol: sudo apt-get install kdm. Admit it and wait. If everything is ok, KDM is installed. The file responsible for setting the manager is called kdmrc and it is located in /etc/kde4/kdm. It has many settings, but we need only a couple. In the section [General] change two parameters:


It means that KDM will load the servers 0 and 1, and it will not touch number 2 and 3. Then find the section [X-:0-Core] and change settings:

ServerArgsLocal= -br -nolisten tcp -layout seat1 -isolateDevice PCI:2:0:0 vt6

The first parameter  ServerAttempts=2, probably doesn’t influence anything, it appeared after long attempts to load the system.

The most important parameter —ServerArgsLocal= -br -nolisten tcp -layout seat1 -isolateDevice PCI:2:0:0 vt6. These are Xorg graphical server load arguments:
br — Instead of a grey ornament there will be a black background. It is little bit smarter.
-nolisten tcp — this option tells that you shouldn’t use tcp/ip for work, and that server is loaded local.
-layout seat1 tells which configuration from xorg.conf file should be used (later I tell about it more precise).
-isolateDevice PCI:2:0:0 — main option, it asks the server to use only one video card PCI:2:0:0.
vt6 shows that server has loaded on the sixth virtual terminal. 

The next option (AutoLoginEnable=true) contains an automatic login – User AutoLoginUser=alexandr. Don’t forget to change it to your user name !)

Then change the file:

ServerArgsLocal= -br -nolisten tcp -layout seat0 -sharevts -novtswitch -isolateDevice PCI:1:5:0 vt5

We know here practically all options. Pay attention to -layout seat0. It’s a different configuration from seat0 from the xorg.conf file. Two similar configurations can not appear there, otherwise nothing will work. The device also changed -isolateDevice PCI:1:5:0 and virtual terminal vt5. The -sharevts option lets two Servers work simultaneousely in one terminal, the -novtswitch forbiddens changing current terminal via Ctrl+Alt + n, where  n — number of current terminal. Additional information about x-server loading options is in Console (man xserver). Then there is a auto-login switch-in parameter  and user name (andrey).
Note: you should create two users. Use the ADDUSER command in Console. Desktop environment is also to find there. Switch off the auto-login option during the first startup to choose desktop environment manually.
There is one more important point. You probably already noticed that we use terminal number 5 and  6, and not 7, which is by default for xorg-server. If you press a combination Ctrl+c (quite useful combination) on the keyboard on the second working place, xorg on vt7 falls apart. It can be solved by a simple combining of xorg with vt7 at any other vt.
Setting xorg.conf

Let’s assign seat0 and seat1 now. We’ll need a file  /etc/X11/xorg.conf, may be you won’t have it but you can create it. Write the following lines into it:

Section "ServerLayout"
Identifier "seat0"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"

It means that we defined the seat0 profile by the Screen0 screen, the Mouse0 mouse and the Keyboard0 key board. The second profile is defined analogically:

Section "ServerLayout"
Identifier "seat1"
Screen 1 "Screen1" 0 0
InputDevice "Mouse1" "CorePointer"
InputDevice "Keyboard1" "CoreKeyboard"

A thoughtful reader already has a question: “What’s Screen1, Mouse1, Keyboard1, Screen0, Mouse0, Keyboard0?” These devices are defined in same file.

Section "InputDevice"
Identifier "Keyboard0"
Driver "evdev"
Option "Device" "/dev/input/by-path/platform-i8042-serio-0-event-kbd"
Option "XkbModel" "pc105"
Option "XkbRules" "xorg"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"

The evdev is responsible for input devices in modern Linux, it should be marked as a driver. One of the most complicated setting moments — to define identification for the key board you need.  All input devices are located in the folder /dev/input/, where they are duplicated into the by-path and by-id folder. If there are event0 event5 files for key board. You must choose one key board that you will like. To make a right choice is quite easy: type sudo cat /dev/input/eventX in Console, where Х — your keyboard number. When you press the key of this board the symbol must appear in Console. Each event is same with keyboard in  /dev/input/by-path/ and  /dev/input/ by-id/. Do as it will be more convenient for you. I have two different keyboards that’s why it’s is easier to orient by models, but if you have similar keyboards probably it will be easier to work with event.
«XkbModel» «pc105» option tells that we have a standard 105-keys keyboard.  Option «XkbLayout» «us,ru(winkeys)» adds two languages: us and ru (in my case).
Option «XkbOptions» «grp:alt_shift_toggle,grp_led:scroll» means that combination alt+shift changes the language, and when you have Russian scroll lock will burn.

It’s analogical with the second key board:

Section "InputDevice"
Identifier "Keyboard1"
Driver "evdev"
Option "Device" "/dev/input/by-id/usb-Chicony_USB_Keyboard-event-kbd"
Option "XkbModel" "pc105"
Option "XkbRules" "xorg"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"

About mice.

Section "InputDevice"
Identifier "Mouse0"
Driver "evdev"
Option Device" "/dev/input/by-id/usb-PIXART_USB_OPTICAL_MOUSE-event-mouse"
Option "GrabDevice" "on"
Option "Buttons" "12"

It’s similar with a keyboard but there is an Option «GrabDevice» «on», that captures all events from a device in multi-usage. And Option «Buttons» «12», that tells that our mouse will have 12 keys.

Now screens.

Section "Screen"
Identifier "Screen0"
Device "Device0"
DefaultDepth 24

Define s device, to which the screen is attached (Device0) and to play safe – color depth. Do the same with the second screen.

Section "Screen"
Identifier "Screen1"
Device "Device1"
DefaultDepth 24

Here are devices.

Section "Device"
Identifier "Device0"
Driver "radeon"
VendorName "ATI Technologies Inc"
BoardName "ATI 3100"
BusID "PCI:1:5:0"
Option "Int10" "off"

I draw your attention to «radeon» driver. It’s not a proprietary driver ATI (I can tell anything about  Nvidia cards but I thing there is everything via versa). BusID «PCI:1:5:0» — numbers for the video card, that we got through the lspci | grep VGA command. Option «Int10» «off» switches off video card initialization using BIOS interruption. This option is obligatory. Without it you won’t reach a success.

For the second video card:

Section "Device"
Identifier "Device1"
Driver "radeon"
VendorName "ATI Technologies Inc"
BoardName "ATI 2600"
BusID "PCI:2:0:0"
Option "Int10" "off"

Give server parameters in the xorg.conf file:

Section "ServerFlags"
Option "DefaultServerLayout" "seat0"
Option "AllowMouseOpenFail" "true"
Option "AutoAddDevices" "false"
Option "AllowEmptyInput" "false"

Let’s take all options into consideration:

«DefaultServerLayout» «seat0» — if something will happen to kdm and xorg will load without parameters, the server must know which configuration it should load.
«AllowMouseOpenFail» «true» — even if there is no mouse, the mouse is considered to be functional not to confuse the server.
«AutoAddDevices» «false» — forbiddens to add devices automatically – but only those written in the xorg.conf file. Otherwise if somebody will attach a mouse to a computer it will appear on all working places and will disturb the mouse defined for a certain working place.
«AllowEmptyInput» «false» — doesn’t add standard drivers for mouse and keyboard, if we forgotten to write mouse and keyboard in xorg.conf.

First startup

The first stage is over. Now you can restart the computer and if everything is ok, you will see KDM invitation to insert a login and a password. Log in, choose desktop environment and turn on auto-login in the /etc/kde4/kdm/kdmrc file and continue setting the system.  

multiseat3 One working place becomes by 30% cheaper

Loading graphical servers. The picture was made with bootchart program. See the full version here

Now I will tell you why you couldn’t use proprietary  ATI driver. Much as nice you were with this driver it doesn't really want to cooperate. And when you choose the isolateDevice option the following scenario is carired out: 

Loading the first Х-server (xorg1), that loads proprietary ATI driver (fglrx1).
fglrx1 — wow, video card, it suits me. I will work with it.
fglrx1 — wow, a second one. Perfect, I want it. It also suits me and I take it as well.
Xorg1 — ok, up to work.

Loading the second Х-server (xorg2), that loads proprietary ATI driver (fglrx2).
fglrx2 — er, where is the video card? Pardon me?
fglrx2 — ok, work without video card.
Xorg2 — er, what's up with the driver? where is it? 

An open driver will help you to avoid such situation. It perfectly recognizes loading option on a single device. 

Solved problems

Let’s continue setting the system. Even though everything works I'd like to draw your attention to some peculiarities that we didn't notice by the first check-up.  Could we suppose, when we just started the setting, that in such configuration users won't be able to restart and turn down computer. Why? Well here we have to deal with the ConsoleKit and PolicyKit. To put it short PolicyKit controlls the system policy. As we have no rights to turn down the system, PolicyKit should forbidden us to do this action.  ConsoleKit supplies the PolicyKit with information about who we are, the task of this subsystem is to track users, their sessions and the sets. There is a note in documentation: “True, hardware, multi-seat capabilities will be added in a later release“. If you don't want to wait for coming updates you can patch ConsoleKit, or you can spare it. Let's compare multi-seat with a usual session with one user. When one user enters a system he gets an active session. When two users enter the multiseat system at the same time two sessions are created, but ConsoleKit gets lost and marks them as inactive. You can view current sessions by typing in Console the command ck-list-sessions.

andrey@k211-multiseat:~$ ck-list-sessions
unix-user = '1000'
realname = 'andrey'
seat = 'Seat3'
session-type = ''
active = FALSE
x11-display = ':1'
x11-display-device = ''
display-device = ''
remote-host-name = ''
is-local = TRUE
on-since = '2010-10-25T14:14:04.812473Z'
login-session-id = ''
unix-user = '1001'
realname = 'alex'
seat = 'Seat4'
session-type = ''
active = FALSE
x11-display = ':0'
x11-display-device = ''
display-device = ''
remote-host-name = ''
is-local = TRUE
on-since = '2010-10-25T14:14:05.146443Z'
login-session-id = ''

I tried hard to make sessions active with ConsoleKit. Finally I decided to try it from the other side. PolicyKit doesn't allow us to switch off computer because an inactive user has no rights for that. We search for a file responsible for computer turn down policy, all policies are in the map  /usr/share/polkit-1/actions. The file responsible for turn down, restart etc. is called org.freedesktop.consolekit.policy. Open it. There is a usual xml-file. There are many events in the section. The first one is:

Stop the system
System policy prevents stopping the system

In the field action id set the action – turn down the system. Then enter a description that will be displayed when authorization for this action will become necessary. In the field "message" write down the message that a person who must be authorized will receive. Then there is a section that manages permissions for actions.  There are two fields: allow_inactive — a permission to do an action for inactive users (exactly what we need in our inactive session in ConsoleKet) and allow_active — for an active user. Documentation tells about one more field – allow_any. But when the system was created I didn’t know anything about it, probably the option appeared later. The following keys can be parameters:

no — forbidden action
yes — allow action
auth_self — ask for user password
auth_admin — ask for admin password
auth_self_keep — ask for user password and remember user password
auth_admin_keep — ask for admin password and remember admin password.

Now change the <allow_inactive>no</allow_inactive> option to <allow_inactive>yes</allow_inactive> and any user can turn down the computer but only on the assumption that we have one session at on the computer and not two. For the rest change the options to:

Stop the system when multiple users are logged in
System policy prevents stopping the system when other users are logged in
<message xml:lang="ru">Attention! The system is used by other user. Are you sure you want to turn it down?

It's exactly our case. When one user will try to turn down the computer he will be asked to log in. If there is one user in the system the window will not appear.

You will ask what is password for? Imagine the situation. Two people are working at  computer. The first one has finished his work and he is going to leave. He forgets that the second one is still working and turns down the computer which is very unpleasant for the second one, who wasn't ready to it. The note will save nerves of both users.

The rest of parameters is analogious. 

Restart the system
System policy prevents restarting the system

Restart the system when multiple users are logged in
System policy prevents restarting the system when other users are logged in
<message xml:lang="ru">Attention! The system is used by other user. Are you sure you want to turn it down?

Flash drivers

One more interesting situation happens when we use USB flash drive. We attach the USB and two Gnome copies (in my case) start fighting for who will accept it. There will be only one winner; the second one will display an error. Furthermore the first one mounts the USB giving rights only to its user and closes the access for the second one. It’s quite an unpleasant situation that can kill the whole idea of multiseat. We should solve it.

A variant that came to my mind as the first one was to come down to hardware and to mount the USB to Gnome. I had to read manuals and to consult Google. And I found an answer — UDEV. UDEV is devices manager that overtakes device support starting from when the devices appeared in the system up to the moment of exploitation. The same thing is responsible for the way back — device secure output from the system.

But each flash drive has its own peculiarities. It must be mounted and dismounted. The flash drive is mounted when you attach the USB, to dismount it user must give a command manually (right mouse click → to dismount flash drive securely).  If there is a note about the device in the  /etc/fstab file any user can dismount the device, otherewise only administrator can do that. Our plan is: when attaching the flash drive write down the mounting parameter /etc/fstab, call mount, get the drive. When pressing Secure device output call unmount.

UDEV setting

All UDEV rules are in the  /etc/udev/rules.d folder. The rules start working in alphabetic order. Rules’ names are not important. I created the file 40-usbmount.rules containing:

ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/mkdir -p /media/%k"
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/sed -i '/\/dev\/%k.*/d' /etc/fstab"
ACTION=="add", KERNEL=="sd[b-z][0-9]", RUN+="/bin/sed -i '$a\/dev/%k /media/%k auto rw,noauto,noexec,nodev,noatime,users,iocharset=utf8,uid=1000,gid=100,umask=0, 0 0' /etc/fstab"
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mount /dev/%k"
ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/umount -l /dev/%k"
ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/rmdir /media/%k"
ACTION=="remove", KERNEL=="sd[b-z][0-9]", RUN+="/bin/sed -i '/\/dev\/%k.*/d' /etc/fstab"

Let’s take a look at it. The first 4 strings start working after the device is added (ACTION==«add»), that means USB (KERNEL==«sd[b-z][0-9]»). Then the RUN+=«command» is started. The == sign means Condition. When == is true the string is fulfilled when == is false the string is skipped. I have one hard drive in the system – sda. Disks in Linux are marked as sd[X][Y], where X means disk’s sequence (a – the first, b — the second etc), Y — number of disk section. That’s why I have KERNEL==«sd[b-z][0-9]». If you have two hard drives you should change the string to KERNEL==«sd[с-z][0-9]».
Last three commands are for removing the device, secure or not  (ACTION==«remove»).

Let’s take a look at commands that follow after the RUN+= operator. In this operator there are applications that are being used and that must run in case when all previous conditions are true. There is a small nuance: you should give in the full ways to the runtime file.
The  /bin/mkdir -p /media/%k command creates a folder for following disk mounting. %k — the UDEV variable that means the name of the device that  initiated this rule response. When you attach a USB in my case it will be sdb1. And by this command response the  /media/sdb1 folder should be created. The folder should be created in /media, there is such rule in Ubuntu.

The nest command is /bin/sed -i '/\/dev\/%k.*/d' /etc/fstab. There is a small problem with it. This command deletes all mentionings about the device in the /etc/fstab memory. Though if by occasion we would turn down computer with USB  inside, in future we would have some problems with flash cards mounting. This string helps to avoid them. How does it work? The command /bin/sed is started with the key –I that means that the computer should edit the file stated in the command ending (/etc/fstab in our case). The middle part of the command '/\/dev\/%k.*/d' — is a regualre expression that means that we search for all mentionings of /dev/sdb.* (in our example) and if such string is found it is deleted.

The command /bin/sed -i '$a\/dev/%k /media/%k auto rw,noauto,noexec,nodev,noatime,users,iocharset=utf8,uid=1000,gid=100,umask=0, 0 0' /etc/fstab makes a new entry in the string ($a) in the /etc/fstab file. In our case this string  is   /dev/sdb1 /media/sdb1 auto rw,noauto,noexec,nodev,noatime,users,iocharset=utf8,uid=1000,gid=100,umask=0, 0 0

According to our script the next command is /bin/mount /dev/%k. Everything is easy here. Device mounting command /dev/sdb1 (for my case) with parameters like in the /etc/fstab file. These are the parameters that I promised to tell you about later. Later I will do that ) But on this step you already can work with the flash drive.

The last three strings will work when you finished with the flash and want to remove the USB. The  /bin/umount -l /dev/%k command dismounts the USB.

The l-key means «lazy» dismounting. It’s a quite dangerous option. It actually ignores all files, but it doesn’t ask a user about anything. Though it gives a guaranty that the file system integrity will be kept.

/bin/rmdir /media/%k deletes the folder where the flash drive was mounted.

/bin/sed -i '/\/dev\/%k.*/d' /etc/fstab deletes the entery about the flash in the fstab folder. We’ve already analyzed how it works.

This method is not perfect. E.g. it doesn’t understand USB CD-ROM. May be there is anything else. But the problem can be easily solved when adding to the string KERNEL==«sd[b-z][0-9]».
You can get more information about UDEV in Linux Help. Just type in Console: man udev.

It’s a high time to examine the string that we added to the /etc/fstab file.
An entry in the fstab file is a construction in form “what — where — file system — mounting parameters – flag for dump — flag for checking”.
It will look like /dev/sdb1 /media/sdb1 auto rw,noauto,noexec,nodev,noatime,users,iocharset=utf8,uid=1000,gid=100,umask=0, 0 0

/dev/sdb1—the device that we want to dismount. /media/sdb1—path where we want to mount the device. 

Then there is a file system type. Auto means that the files system type will be chosen automatically. It’s quite convenient because even in the Windows world there are at least two flash file systems: fat and ntfs. 

For mounting parameters I used the Wikipedia article. 

Or you can get some useful information with the help of man fstab and man mount commands in Console.

After we sorted out the mounting parameters we should inform the UDEV about it, otherwise how should it know about these changes. Type the udevadm control —reload-rules command in Console. Now you can insert a flash and check the results of work.

Usage experience in my office

Probably the most interesting part. There are two users at this computer. A man and a woman. Both of them are of the age over 50. Computer is for them something like a noisy box that keeps office documents and some office games. They used Windows XP before. And they had no problems with changing to another system. I spent about one hour altogether for consulting these people– that’s the whole time for 2 weeks.  Most of the questions rouse within the first week. The man has already found out how to install his favorite card games on his computer with any assistance and he even prepared the pleasure for the lady when he installed some games for her. Though till now he doesn’t really understand how to install a program in Windows. So the system can be called user-friendly. Usual server (a non-stop working computer) is used in the internal network. A link to it was successfully created in the menu Places, and everybody uses it from there. The lady wanted to have the Consultant+ program on her computer. The program was successfully started via wine. 

It appeared, most of the problems were simply psychological – people are afraid of anything new. Nobody wants to learn anything but this is probably the problem of most people in the world. Here you most likely can only force or motivate. People must be trained in new technologies. It’s very sad when bosses do not understand it. People are confused when there is no anti-virus program in the system. They couldn’t really trust me that there is no necessity in this software. That’s one of the biggest psychological problems. Users used to anti-virus feel discomfort when they don’t have it.  It’s unusual to share the computer with somebody and users are afraid that their important office documents will be deleted. At the same time the users are not afraid to throw all their important information in the rubbish hip, server, where everybody can delete their files. It was very hard to explain them that they have different desktops and one can not delete files in the home directory on another one. But it seems they didn’t believe me again. They always have their own opinion in such questions. 

I didn’t notice any technical problems. Though of course if anything will go wrong only few people will be able to repair it. That’s why such systems are not recommended if you don’t have a good system administrator, who knows much about Linux. On the other hand if you set everything and deprive users from all rights the system works like a clock. After half a year of usage there were no technical problems caused by users. And in principle they couldn’t appear.

What is the most valuable in this system is sparing money both for components and electricity. If you make a calculation going from that the office computer works around 9 hours during the day (8 working hours plus lunch), electricity saving is evident. As to the components price, a computer case with a keyboard and a mouse costs 407$ in my case, screen — 162$, the full price of a working place makes 569$. The second screen (162$), keyboard (8$), mouse (7$) and video card (48$) cost 225$ altogether, which makes 40% from the price of the first working place. If we calculate the price of one working place it is 397$. It’s really good for a good computer. One working place becomes by 30% cheaper.


You can contact Andrey Systerr, the author of this post at systerr at gmail dot com


Enhanced by Zemanta