Home Linux Community Community Blogs

Community Blogs

The beginning

Hello everyone!

Let me introduce myself. My name is Matt, and I enjoy learning and having fun. I will use this blog to tell everyone about my first-hand experiences with Linux as an end-user. I will try to be in-depth and informative at all times, also I would very much appreciate any comments you have. :) 


Feel free to contact me at anytime about anything via any method in my profile.




Hello Everyone!

Hey Everyone! I'm Thomas. Uhh...yeah read my about me section if you want to know more about me haha.

Remote Desktop Support

     Being a Linux fan and of course spreading the Linux love, I end up switching people from other os's to Linux. The problem with this has always been remote support--Other os's have a remote support solution.  It is not easy telling a new person using Linux how to open port 22 on their "Linksys" firewall, or to have them tell me what their external ip is.  After tons of frustration I decided their had to be a better way.  Enter open source: with a little python and xvnc, Linux users can rejoice with easy remote desktop support. This is by no means the "end all be all solution", in fact the code needs some work. So use with caution and enjoy.*some assembly required.

I built this package and all it's dependencies on Ubuntu 6.06. If you would like to have support for older versions of Linux you will need to build the packages on older distros like Debian Sarge to accommodate the library differences. Here is a partial list of software you should have installed:

Make two new directories on your desktop (or wherever you like) to hold the packages you build, call one helpdesk_server/ and the other helpdesk/. You are going to need two packages to build and distribute with your application, this will make it easy for portability. The first is x11vnc, x11vnc allows you to view remotely and interact with real X displays. It will work with any vnc viewer you choose. Go ahead and download the source, at this time the stable version is x11vnc-0.9.2.tar.gz.(check resources for address) and untar it. For older Linux support I would recommend using x11vnc-0.8.3.
Enter the directory from the command line and type:

After the build is finished, go into the x11vnc subdirectory and copy x11vnc binary to the helpdesk/ directory.
The next package you need to download is stunnel. Stunnel is a program that allows you to encrypt TCP connections inside SSL on a computer that does not have SSL installed. The current version is stunnel-4.20.tar.gz, download it, untar it. Enter the stunnel directory and from the command line type:

After that is finished, change directory's into the stunnel src/ subdirectory. Copy the stunnel binary to the helpdesk_server/ and helpdesk/ directory's that you created on your desktop.

You now need to make a server SSL cert and key. When an SSL client connects to an SSL server, the server presents a certificate which is proof that machine is who it claims to be. Create the cert from the command line:(NOTE: "\" denotes one line)

openssl req -new -newkey rsa:1024 -days 365 \
-nodes -x509 -keyout helpdesk.pem \
-out helpdesk.pem

Answer all the questions, or choose all the defaults, and it will create the ssl cert in the current directory. Please make sure helpdesk.pem is only readable by root. Copy the newly created helpdesk.pem to the helpdesk_server/ directory and the helpdesk/ directory.

You need to create two config files for stunnel, one for the server and one for the client. The one for the server should look like this:

foreground = yes
cert = /wherever/helpdesk_server/helpdesk.pem

accept = 5501
connect = localhost:5500

Save it and name the file stunnel.cfg, copy it into the helpdesk_server/ directory.
Now make the client side stunnel config file:

foreground = yes
pid =
client = yes
debug = 6
CAfile = /wherever/helpdesk.pem
# verify = 2

accept = localhost:5500
connect = your-server-ip:5501

Save this file and name it stunnel.conf, copy it to the helpdesk/ directory.
Lets take inventory of the two directory's. The helpdesk_server/ directory should have these files in it.

helpdesk server

stunnel #binary executable
stunnel.cfg #the stunnel server config file
helpdesk.pem #the ssl cert key

The helpdesk/ directory should contain these file:heldesk
stunnel #binary executable
x11vnc #binary executable
stunnel.conf #the stunnel client config file
helpdesk.pem #the ssl cert key

Now that you have two directories filled with your files, you must now create the ui(user interface) for the client side. I chose to do this in python and wxWidgets. You can create it in any language you like, and make it look anyway you want, but for the purpose of this article, I made a simple ui with wxglade. Fire up wxglade and make a simple ui . After you have the way you want it, generate the code and save it as If you have never used wxGlade, there are plenty of tutorials to assist you; just do a little googling. Now you have the python file you need to edit it and add some events to the buttons.


The Code:


import wx
import commands
import os
import time
import subprocess
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
wx.EVT_CLOSE(self, self.OnClose)
self.label_1 = wx.StaticText(self, -1, "HelpDesk")
self.button_1 = wx.Button(self, -1, "Connect")
self.button_2 = wx.Button(self, -1, "Exit")
self.frame_1_statusbar = self.CreateStatusBar(1, 0)

# end wxGlade
# Button events
###add this line##################################
self.Bind(wx.EVT_BUTTON,self.OnConn,self.button_1 )
###add this line##################################
self.Bind(wx.EVT_BUTTON,self.OnExit,self.button_2 )
####add this function###############################
def OnConn(self,event): #connect function#
#get your home directory and join app
#directory to the end of that
homedir = os.environ.get('HOME')
appdir = os.path.join(homedir, 'helpdesk')
self.homedir = appdir
#start stunnel
child1 = subprocess.Popen(["./stunnel", \
"stunnel.conf"], cwd=self.homedir)
self.Child1 = child1

#now connect to x11vnc server through ssl tunnel
child2 = subprocess.Popen(["./x11vnc", \
"--connect","localhost:5500"], cwd=self.homedir)
self.Child2 = child2
#check to see if stunnel is running
if os.path.exists("/proc/%d" % \
and os.path.exists("/proc/%d" %
self.frame_1_statusbar.SetStatusText \
("Remote Connected")
dlg = wx.MessageBox("There was an error \
with the connection,either x11vnc or stunnel \
did not start. Please let the technician \
know.","SSL Not Connected", style=wx.OK)
###add this function###########################
def OnExit(self,event): #exit function#
d = wx.MessageBox("Do you want to Disconnect?",\
"Disconnect", style = wx.YES_NO)
if d == wx.YES:
###add this function##########################
def OnClose(self,event): #window close event#
#extra precaution to make sure all gets cleaned up
os.system("%s/bin/x11vnc -R stop"% self.homedir)
os.system("killall stunnel stunnel.conf")

def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.label_1.SetFont(wx.Font(14, wx.DEFAULT, \
wx.NORMAL, wx.BOLD, 0, ""))
# statusbar fields
frame_1_statusbar_fields = [""]
for i in range(len(frame_1_statusbar_fields)):
self.frame_1_statusbar.SetStatusText \
(frame_1_statusbar_fields[i], i)
# end wxGlade

def __do_layout(self):
# begin wxGlade: MyFrame.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.BoxSizer(wx.VERTICAL)
sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
sizer_2.Add(self.label_1, 0, \
sizer_2.Add((20, 30), 0, wx.ADJUST_MINSIZE, 0)
sizer_3.Add(self.button_1, 0, \
sizer_3.Add((20, 20), 0, wx.ADJUST_MINSIZE, 0)
sizer_3.Add(self.button_2, 0, \
sizer_2.Add(sizer_3, 1, wx.EXPAND, 0)
sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
# end wxGlade

# end of class MyFrame

class MyApp(wx.App):
def OnInit(self):
frame_1 = MyFrame(None, -1, "")
return 1

# end of class MyApp

if __name__ == "__main__":
app = MyApp(0)

##End Code


There is a lot to go over in this code, but due to the nature of the article I will only touch on a couple of highlights. Make sure you add the lines and functions that are commented in the code. The biggest part of this code is calling the executables you just created. As you can see, you used the subprocess module to spawn these processes. This allows you to connect to their input/output error pipes and obtain their return codes. The subprocess calls the executables in a specific directory, /home/$user/helpdesk. The client application must be installed in their home directory for this to work properly. You will use a installer to accomplish this, but I will get to this later.
Now that your python script is all finished, let's copy it to the helpdesk/ directory. Then you are going to add a shortcut icon to the application for the client. You may pick anything you like, just make sure it is somewhat reasonable in size. Move the shortcut icon into the helpdesk/ directory. While you are still in the helpdesk/ directory, make sure all files are executable. You now have all the key ingredients, so on to the installer.

I chose to use InstallJammer as the install method. InstallJammer is a multi-platform GUI installer designed to be completely cross-platform and function on most all versions of UNIX and Windows. You can use deb or rpm to install your newly created application, but I like the familiar look of InstallJammer for new Linux users. Download InstallJammer-1.2.13b4-Linux-x86-Install (this is the current release as of this writing). You will have to make sure it is executable, double click InstallJammer-1.2.13b4-Linux-x86-Install and follow the install instructions.installjammer

Now that InstallJammer is installed, you must create a new project. InstallJammer comes with a new project wizard.

install wizard

When you get to step 3 ,


make sure you use in Unix Application executable entry. You need to point the installer to the desktop shortcut icon. Under "Install User Interface" there is a section called "Install Panes and Actions" and click on it. There is a expandable section called "Action Groups" in the right view pane. Click on the plus sign and expand it. Now you will have a few other expandable sections. Expand "Finish Actions", goto "Install Desktop Shortcut". Insert the name of the icon you chose in the Icon Path entry [insert icon_entry.png].
Save your work and rebuild the application. Go ahead and test your install; a wizard should pop up to install helpdesk. When the wizard finishes, you should have the icon you chose on your desktop. Double click the icon and make sure the application loads. If nothing happens, check the permissions on the files. Also try launching the application from the command line to view any possible errors. If it loads fine from the command line but not the desktop shortcut, check to see if the /home/you/Desktop/helpdesk.desktop file is pointing to /home/you/helpdesk/ Ok, now you have a working install package ready to distribute to your clients. The executable binary is located under /home/you/InstallJammerProjects/helpdesk/output. Copy the file to a ftp or web server for easy download.

There is but one more thing to do, that is test it. We are going to call our test subjects client and server. You will have the test client install the newly created install package. After that is finished go into the helpdesk_server/ directory. At the command line you will type:
./stunnel stunnel.cfg &
Then type:
xvncviewer -listen
Now the server has started stunnel and is listening for any reverse vnc connections. You can now tell the client user to double click the shortcut on their desktop, and then push the connect button on the application. On the server side you will see a lot of output start scrolling down in the terminal, this is from x11vnc. A Xvnc window will pop up with the client's desktop in it and now you have full control over the client's computer. You can now give them full support while in the comfort of your own home. When you are done, you can close the connection by clicking on the exit on the helpdesk application on the clients desktop. This will ensure that there is not any stunnel or x11vnc processes left running.

Possible Problems:
If the clients machine has desktop wallpaper that has extravagant images, you can add some options to x11vnc to boost performance. One is to set the desktop wallpaper of the client to a solid color. X11vnc has the -solid [color] option that will speed up performance. The [color] flag is optional, the default color it will use if none is given is cyan4. You can read more of these option at x11vnc's website. If for some reason there is no connection, try looking in the output of x11vnc on the server side terminal for any clues. Check the ip address you entered in the stunnel.conf file and make sure you have the ports correct for stunnel to make a connection. Also, make sure your client is not blocking outgoing ports; I spent a lot of wasted time before checking that they had custom outgoing firewall rules blocking everything. If you run into a problem just drop me an email and I will do my best to help you.

I hope that this brief(kind of)  solution will make your job easier when lending your expertise to the newly converted. If you run into any problems, please drop me an email.

Good luck



Have a look at

 Our website have change ! Have a look at it !


Yes, that's the truth ! Ubuntu Vietnam Community have created a new website. We need your attention. Have a look at our site and join us. You're all welcome !


Open source and the exciting future of computing

                      ¬†¬† ¬†First of all, I just want to make an update: since the OpenSuse 11.1 update, my wifi is finally running flawlessly, so at the moment the only piece of hardware that I have not got working is the integrated fingerprint reader, which I actually have no use for...


Anyway. The reason of this post is wider than my own Linux adventures. I have during my first year as a linux user (and some serious “distro hopping” in the beginning) converted 2-3 people to Linux. This should be slightly more than the average since the growth of Linux on the desktop is somewhere between 30 and 100% per year (although from a rather low usage, currently about 1% - although this is very hard to guesstimate). With the future integration of Wine into mainline distributions in a seamless manner, the transition from Windows to Linux will be quite painless for most users who do not have to give up their gaming and legacy applications, and my bet is that when this happens, the rate of linux growth on the desktop will increase significantly.

This made me thinking – why do I care whether Linux on the desktop grows and how popular it becomes? The most popular distributions like Fedora, Mandriva, Ubuntu and OpenSuse are already so good so that they fulfill all my needs – why should I care if others are using them?


I am no “GNU/Linux” and “free as in freedom” fanatic when it comes to software (and my choice of OpenSuse as my distro of choice sort of indicates that I am not) – so my reasons are not political. In fact, I have only offered help in switching to Linux to people that have expressed discontent with their current Windows. I might also have become a bit “smug” and pointed out the advantages of Linux compared to Windows whenever computers are discussed – but I try to avoid the “holier than thou” attitude which I find rather embarrassing among the linux fanboys that litter a lot of computer-related forums. I believe that the behaviour of those fanboys is one of the biggest reasons for current Windows users to “hate” Linux. Another might be that they feel challenged by the fact that they believe Linux to be difficult, and it is never nice to feel “less smart” than others (however, I believe that Linux users on average are smarter than other computer users – but this does not say anything about a given individual among users or non-users, just that those who are smarter (or believe themselves to be smarter) have a greater tendency to dare to give it a try than others). So what is then the real reason why I would like to see open source software and in particular open source operating systems (not only Linux, but also *BSD variants, OpenSolaris, MINIX, HURD etc) to succeed?


One could be that with a growing user base, hardware manufacturers will be encouraged to write appropriate drivers for their hardware (where hopefully the wider adoption of the smolt project will give some leverage) and a richer choice of software will be available. So this is probably the reason... the standard selfish one. Another less obvious one could be the very interesting opportunities given with open source software. Our standard concept of an “operating system” as a complete package of various components ranging from a graphical user interface (GUI) to the technical internals such as the kernel (which, in fact, is the only part of the operating system that really is Linux in this case but more about that further down) is much more flexible in an open source world. Open source components can be “mixed and matched” in various ways, which is one reason why there are so many different distributions of Linux. One Linux desktop can look completely different from another because of its GUI (mostly Gnome or KDE) and the way they use to install different programs (so called package management) can be quite different. Open source gives the opportunity for several competing solutions to exist side-by-side. Classical debates such as the one between monolithic versus micro-kernels can compete based on their technical merits since new solutions can make use of a pre-existing ecosystem of software that can be ported – and also paravirtualization solutions like L4Linux (the OpenSuse repositories actually have L4linux in them, but not completely so I could not experiment with it) and compromises such as the modular architecture of the Linux kernel moves the debate forward. In a similar way, the re-ignited PC vs mainframe debate triggered by all the buzz about cloud computing might be resolved by virtualization solutions or something completely new that we never thought of before. In most cases, the Linux kernel runs under the GNU user land and the operating system should indeed be called GNU/Linux, but due to general laziness (I am guilty as charged!), the word Linux has become synonym to GNU/Linux. This might however change soon when other alternative non-GNU operating systems running on top of the Linux kernel (in order to make use of its great number of device drivers, its portability and other cutting-edge capabilities), such as the Anubis-OS and Glendix. In particular Glendix looks promising – where an experimental “post UNIX” OS designed for parallel computing might become useful in some super computers. I do not think that this Plan9/Linux will replace GNU/Linux on the desktop in the near future, but it might be run on Blue Gene to avoid its current performance hit from running a pure Plan9 under virtualization and it might be that we in a near future will see GNU/Linux competing with Plan9/Linux for the most prominent positions in the super computer league and other contexts, which might eventually spill over on the desktop (given that someone finds it worth wile to port an appealing user interface like KDE to the Plan9 analog of the X window system and all other apps that currently require GNU parts). In the long run, the generation of alternative Linux variants could actually be beneficial for the whole “Linux” versus “GNU/Linux” debate, where I in principle agree that the GNU part is a significant part of the current OS but in practice see little use in pointing that out. When diversity at this level is present (just like it is now in kernel space, where debian GNU/BSD, GNU/Hurd, GNU/OpenSolaris are already present) actually highlights the GNU part and creates a need to clearly state that this particular OS run GNU and not Plan9 or whatever...


Another advantage is that open source promotes new innovations – the wheel does not have to be re-invented every time and focus can be made on improvements and new implementations. For Linux, this is obvious since it has been ported to the greatest range of hardware and is one of the most proliferative operating systems ever – running everything from the worlds most powerful supercomputers to low-powered embeded devices and mobile phones such as Moblin and Android. Linux is already dominant in the world of super computers and has a strong position in servers and other computer areas – with the obvious exception of the desktop. In many ways the desktop is the “final battle” and the one most visible to the wider public. This does not mean that I believe Linux to be the be all end all OS, but I think that it has enabled innovation and establishment of a mature, portable and dynamic software ecosystem (if we had had to wait for hurd to be finished before we got a GNU operating system, we would still be waiting...) that can be used by future brilliant operating systems that we do not know of today. This is truly the bright and exciting future of computers – and one that I am happy to take part in, even if my small contribution only amounts to converting a few willing into using Linux on their desktops.


Using SSHFS to remote mount a Windows System.

Try hard as we might, it's impossible to get away from the OS from Redmond.  All too often we need to be able to get a file off or onto a Windows system in a secure manor.  Samba won't work over the Internet, NFS isn't an option either over the internet.  Linux to the rescue, along with some FOSS for Windows. 

FUSE or File sytem in USEr space, allows Linux to create file systems of multiple kinds that can be mounted and manipulated by an unpriviledged user, meaning no root privileges are needed at any time.  SSHFS or SSH File System, is the type of file system we will use. Other Windows connectable file systems exist but since we are going over the open Internet and we want data integrity, and security I've chosen SSHFS for this.  I've tested it on win2k XP and 2003 server so far without a problem.

Step one: go to and grab the binary installation file for Windows. (Currently i386 version only) Install this on the Windows system you wish to mount from a remote location.  The process on how to install an application on Windows and create Users is an exercise I'll leave to the reader.  However to someone who is familiar at all with SSH running the install and answering it's questions should be straight forward.  NOTE: If you have cygwin installed you should install the SSH server with cygwins package manager as it will be less likely to cause a conflict. At this point, from your Linux box ssh into the windows box and make sure it all works.  Once it does.  You are done with the windows work.

 Step two:  If you are running RHEL/CentOS 5.x  the modules you need will already be installed in the running kernel, and the packages will be available in the normal repository.  RHEL/CentOS 4.x will require that you use either DAG's repository or do the normal configure/make/make install routine.  I highly recommend DAG's work as it's always rock solid, and his packages are correctly integrated into RH/CentOS system so as to not cause future conflicts.  Ubuntu and Deb (sarge and Lenny) both have FUSE available in the apt repository and the dependency will be brought in when you install SSHFS.  

Step three:  Install SSHFS With RHEL/CentOS you will need DAG's repository setup.  Then just yum install fuse-sshfs, or Ubuntu/Debian do apt-get sshfs.  All dependency's will be pulled.  The following should be taken care of before you begin.  Edit /etc/group (I use vigr) and add all users who you want to be able to use SSHFS into the group fuse.  Once this is done we are ready to test things out.

Now we get to mount our remote windows system.  Create a dir in your home directory to mount the remote system and then prepare to do a simple test run. 

 usage: sshfs [user@]host:[dir] mountpoint [options] 

 Is the proper format for running the command, and remember that if you skip the [user@] portion, just as in Linux it will assume that your current logged in user is the username to use on your remote server as well.  

 #> sshfs myname@mywinbox: /myhome/mountpoint  

This will grab the user home or C: (depending on System) mount it locally and give you access to read/write these files as if they were locally held.  Also at the same time any user on the Windows box will also be able to read/write the same file (no file locking is provided. ) so it's best to co-ordinate with the user on the other end if needed.  

At this point the movement of files will be at the same speed as a normal ssh, man sshfs can be read and used to fine tune the sshfs mount the most important from my viewpoint is the ability to set the UID and GID of the files so that the correct user has access to them.  Again since this isn't a comprehensive tutorial, I'll leave it to the reader to learn from the man page. 


Latest software experiments.

Am trying a new software called product snapshot in virtuemart. It allows you to embed the picture of a product within your Joomla article.

U.S. Army upgrades PCs to ... Windows Vista?

A first news, what I read today, about ...

I thinked, what U.S is use on yours PC - Linux,MS and other systems. But it.s

not that.

Read more... Comment (0)

Star Wars anthem & pc speaker

 Imperial march through the speaker (using beep utility):
Read more... Comment (1)

Der Windowsuser auf


Ich bin hier wohl ein blinder Passagier, ich logge mich per Windows in meinem Linux Account ein. Das hat wohl den Grund, dass es sehr mühsam ist, mit Programmen wie "Adobe AfterEffects" die man für die Schule benötigt arbeiten zu wollen und nebenbei seinem Hobby, und zwar "Die tollen Errungenschaften der Linuxcommunity erforschen" nachzugehen versucht.

Nunja, irgendwie stellt sich nach der Erläuterung  für mich die Frage, ist die Linuxcommunity jetzt bemüht ein OS bzw eine Distribution an freien Programmen zu schaffen mit denen der Normalo-Heimanwender auch mehr als im Internet surfen, Emails checken, Officeanwenudungen bedienen und Minigames spielen kann?

Okey, das hört sich jetzt bestimmt etwas zünisch an. Aber im ernst, es gibt haufenweise Projekte wo es um die Bedienung des OS  geht (KDE, Gnome und alle Miniprogramme die mit den Oberflächen harmonisieren, haufenweise Kommandozeilentools)  außerdem gibt es Serversoftware, Musikplayer, Videoplayer, Minigames, Editoren, etc ... aber ... Was macht der Standard-PC-Freizeituser wirklich?

Mal checken wieviel linuxkompatible Software für bestimmte Bereiche vorhanden ist:


Es gibt Open Office und auchein paar andere Softwarepaket. Open Office halte ich aber bereits für vollkommen ausreichend und kann für mich zb MS Office vollkommen ersetzen.

Musik hören

 Okey, da gibts einige Softwarepakete.
Amarok zb. Für Gnome gibts auch haufenweise(Rhythmbox) .
Auch die organisation der eigenen Musikdatenbank kommt mit gewissen Tagging-programmen nicht zu kurz.

Videos ansehen

Da gibts auch keine probleme


NEWB's adventure's in Linux From Scratch

  Back again,

     I find myself at a point now where there are many ways of doing things with the command line, it's a bit daunting to say the least. Study, study, study, remember that Auther of the book said read any manuals three times before you'll understand it. If it takes you more than three times there's something else you should be reading first.

  I'm finding myself taking side trips as I journey down my path to LFS install. I was at my local pub the other night and my friend was looking for a security system for his business so he could keep an eye on the place when he's at home. Enter "Zoneminder" downloaded the "bluecherry livecd " and have a few old pc's around so ...... ummm

  Now I must say I help a lot of my Windows friends with installs and hardware issues on their machines. So I get asked alot of questions.. Another friend cornered me at his house and asked about a media extender... I told him give me a few days.. Enter serve windows media player format and linksys has an inexpensive extender with dvd player for less than 150 bucks. My point is... I'm addicted to Linux :) I don't even have to really know what I'm doing seems like everytime I think of something I'd like to do with computers all I have to do is "Google + Linux" and someone's already done it or is currently developing it :)

  Note: I haven't been able to get a ton of reading done , with my main computer broken and my friends needing my help with their computers ... you know how it goes :)

Page 121 of 150

Upcoming Linux Foundation Courses

  1. LFD211 Introduction to Linux for Developers
    09 Feb » 10 Feb - Virtual
  2. LFD411 Embedded Linux Development
    09 Feb » 13 Feb - Mississauga - ON
  3. LFD312 Developing Applications For Linux
    16 Feb » 20 Feb - Atlanta - GA

View All Upcoming Courses

Who we are ?

The Linux Foundation is a non-profit consortium dedicated to the growth of Linux.

More About the foundation...

Frequent Questions

Join / Linux Training / Board