I admit that I'm a Linux fan since 1994. So this section is kinda propaganda.
Often people ask me why I use Linux as the only operating system on all my computers and how this is practical for
my daily work. Here are the reasons:
- Windows XP was a nice operating system (however, Vista is not) for office work or gaming. It's for
people that use their computer as typewriter or game console. Similarily MAC users expect a clean GUI fewer knobs as a
washing machine. But I am a power user doing much of my work with efficient shell commands. I want my computer back.
- I don't want to pay for every little piece of software. And I do not want to scan the Internet to find a freeware
solution (often from dubious sources). With (for example) Debian-based Linux I find nearly 20,000 free software packages
in the repositories (also the source code).
- I avoid buying Apple products. In short:
- They make people think that they invented something new.
- They created a religion for fetishists. Ever watched an
unpacking ceremony?
- I really don't like (companies that file)
trivial patents.
- Should we really admire Apple's marketing strategy?
(Generally marketing is necessary even for evolutionary reasons but in the strict sense it is immoral
because it is based ony lies, exaggeration, concealment, and finally manipulation. Certainly, it is part of our nature
but should we really admire it?) Finally they make people buy illusions or 'lifestyle'.
There is a really interesting (German) book on this topic:
Das Kultbuch, a very clever essay about modern 'culture
capitalism' (amazon).
- The new iPod Nano cryptographically exclude non-Apple management applications. What an impertinence!
- I want to develop software. With LINUX you have lots of tools, compilers, libraries under various unrestrictive licenses.
Under commercial operating systems most development environments and libraries requires you to pay fees to the
developer.
- I want to support open standards. Can you open any MS Word document you created 10 years ago?
- I don't want to support companies that aim to monopolize Internet or Multi-Media technologies.
- I want to support the Open Source movement. I like the philosophy behind Wikipedia. Consequently I
prefer community-based software (and hardware) development.
Actually there are lots of more advantages (speed, platform portability, old hardware reuse, network and hacker
tools) but let's stop the propaganda here.
I use Linux since April 1994 (SuSE 4.x on those days), then tried out Redhat, DLD, and others until I got stuck with
Debian for many years. Recently I switched to
Ubuntu because it is the best 'plug and play' Linux I found and has Debian as core.
I still use Debian for some servers in parallel.
Below you find my personal notes on several Ubuntu-related issues. For troubleshooting I recommend to consult the
Ubuntu Forums and the official
User Documentation. If you prefer short explanations you might find the
list below useful. Of course most of these notes might be valid for other LINUXes.
- Interesting Shell Commands
- Here are some practical commands which are not so widely known (maybe):
- whereis <cmd> quickly finds binary, source, manpage for a given command. Example: whereis xterm
- man -k <keyword> shows a list of all manpages containing the keyword
- Quick TFTP server
- Using the netwox tool (the 'network swiss army knife') you can easily start a TFTP server on demand:
# netwox 167 --rootdir "/home/herbert/tftp"
- Jed must-have
- My favorite editor is jed, a very small and fast Emacs-clone.
Unfortunately with the standard Ubuntu setup it does not show line or column numbers and also the line wrap is too short.
You can simply adjust this by creating a .jedrc file with the following content:
LINENUMBERS = 2;
WRAP = 120;
- Postscript Printing
-
To print more than one page on a single sheet of paper, use
$psnup -2 input.ps output.ps
For M$-Powerpoint presentations:
$psnup -4 -pa4 -H20cm -W30cm -d present.ps present2.ps
- Recording Internet Radio
- Either use kmplayer or mimms such as:
mimms mms://stream4.orf.at/oe1-wort
- Setting the clock
- It is highly recommended to configure UTC (Universal Time Coordinated = 'Greenwich') as system time
(the hardware clock) while the UNIX operating system (here: Linux) adjusts for the time zone. Using the
date command you can specify either local or UTC. Here is an example using the local time:
date -s 5/22/07 # First set the date (initialized to 00:00:00)
date -s 11:42:00 # Or simply 11:42 without seconds
- /etc/fstab
- Ubuntu Edgy (and most other modern distros) no longer uses filepaths for partition entries, instead
the UUID is used, which makes the configuration more robust in case additional SCSI disks are inserted.
The UUID of a partition can be obtained via blkid (short, disks only) or lshal (more info).
For example, on my laptop fstab looks like:
UUID=6693f472-f7df-4c57-b4db-b74b2e41de22 / ext3 defaults,errors=remount-ro 0 1
UUID=98e42079-522d-4d9c-8c24-87077ef42800 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
2. field: mountpoint or "none" for swap
3. field: type (ext3, ...)
4. field: mount options
5. field: used by dump, may be omitted
6. field: determines sequence for fsck check during reboot, may be omitted
- convert
-
Convert belongs actually to the ImageMagick suite and can be regarded as
'Photoshop on the command line' because you can do nearly anything with images.
Here is a nice example I found recently on linuxjournal.com:
convert -size 800x120 xc:white -font Times-Roman -pointsize 100 \
-fill gray -annotate +20+80 'Linux is cool!' -fill black \
-annotate +23+83 'Linux is cool!' -trim +repage logo.png
This creates a nice logo on the fly...
-
- Suspend/Hibernate Issues
-
Hint: Examine /etc/default/acpi-support
The Backup Problem is one of the oldest problems of man.
Basically you want to synchronize some directories between multiple
machines, but you want to modify files on any device you like. Sure
you do not want to struggle with Windows-based (SMB) file sharing,
which is slow (also updates unchanged files) and sometimes the backup
fails because of various strange reasons (and you need to repeat the
whole process...). Furthermore the backup
process should be activated on demand and should run quickly.
I tried out several solutions, but I found that generally all pretty GUI-based
solutions are clumsy, error-prone, complicated and sometimes unstable.
Then I tried out rsync. Many people already told me about rsync
in positive ways but I always had some reservations. I thought rsync
is just another mighty but complicated command line tool.
But rsync is exactly what you need. I'll give you a
practical example how to get a quick setup which I think is appropriate in
many situations. Everything I explain works on Ubuntu/Debian machines but
should be similar on other Linuxes.
First (for example) identify a central server, say 'zeus'. Assume
that your user/group name is 'homer'. Install the rsync package and
then:
Note: In the configuration example above we created two 'modules' (i. e.
pre-defined locations on the rsyncd server).
Now use rsync. Rsync supports different transport options.
The remote-shell transport is used whenever the source or destination
path contains a single colon (:) separator after a host specification.
I do not use that.
I rather contact the rsync server directly. This is achieved when
the source or destination path contains a double colon (::) separator after a host
specification (alternatively, when an rsync:// URL is specified).
The general syntax is: rsync [OPTION] SRC DEST. Examples:
marge@laptop:~$ rsync -avz Desktop/dev zeus::desktop # only sync 'dev'
marge@laptop:~$ rsync -avz Desktop zeus::desktop # sync whole Desktop
marge@laptop:~$ rsync -avzu zeus::desktop/results Desktop # sync from zeus
If neither the source or destination path specify a remote host, the copy
occurs locally, that is you can even use rsync to synchronize
local disks for example. I do this very often to backup directories on my external
USB-based harddisk. For example:
marge@laptop:~$ rsync -avz Desktop/documents /media/mydisk
The most important rsync options are:
-a, --archive archive mode; same as -rlptgoD (no -H)
-v, --verbose increase verbosity
-u, --update skip files that are newer on the receiver
--delete delete files that don’t exist on sender
--force This option tells rsync to delete a non-empty
directory when it is to be replaced by a non-directory.
-b, --backup With this option, preexisting destination files are
renamed as each file is transferred or deleted.
-C, --cvs-exclude This is a useful shorthand for excluding a broad range
of files that you often don’t want to transfer between
systems. It uses the same algorithm that CVS uses to
determine if a file should be ignored.
The exclude list is initialized to:
RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state
.nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig
*.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/
Note that rsync support
much more options, I really recommend
to read the man page at least once in order to find the most appropriate
options for your need. For example I personally most always use the
options 'avuz', that is only newer files are updated. To make things
simple, I made an alias for this options (alias rsyncsafe='rsync -azuv'),
so I only use the pseudocommand 'rsyncsafe' for most of my backups.
NOTE: The trailing slash in a path means 'the files in that
directory' but not the directory itself. So be careful.
While I use rsync to synchronize data between my computers, I use sitecopy to mirror my local
website directory to my remote web space. Only differences are transmitted and it supports FTP, WebDAV, or HTTP as
transport protocol.
Here is a short description to get it started:
-
Create a configuration directory and -file:
mkdir -m 700 .sitecopy
touch .sitecopyrc
chmod 600 .sitecopyrc # This config file is NOT in the directory .sitecopy
-
Edit .sitecopyrc and specify your website(s) such as:
site perihel
server www.perihel.at
remote ~/www.perihel.at/
local ~/Desktop/PERIHEL/current/
username XXXXXXX
password YYYYYYY
safe
#protocol webdav
symlinks ignore #maintain
exclude *~
exclude tmp
exclude cgi-bin
-
Only when the remote site is "empty" let sitecopy learn what is the "empty" state:
sitecopy --init perihel # make sitecopy think there are NO files \
on the remote server
You do this only once. If you have already some files on the remote web space then you better do the following:
-
Sometimes (e. g. when the timestamp of the remote files have been modified) sitecopy must learn about all remote
changes using the fetch option:
sitecopy --fetch perihel # or short option: -f
...this only makes a local file list (it does not download anything)
-
Synchronize the remote web space with the local files - this is the most important and usually only step:
sitecopy --update perihel # or short option: -u
-
Other interesting options: -l or -ll produces a list of differences, -o shows the progress.
Converts filenames from one encoding to another. I needed this when I copied mp3-files from Windows to my Linux disks.
Short description:
convmv -f latin1 -t utf-8 -r \
--exec "echo #1 should be renamed to #2" path/to/files
-f ... from
-t ... to
-r ... recurse through directories
--qfrom , --qto
be more quiet about the "from" or "to" of a rename (if it screws up
your terminal e. g.). This will in fact do nothing else than replace
any non-ASCII character (bytewise) with ? and any control character
with * on printout, this does not affect rename operation itself.
--list
list all available encodings.
A practical example when converting German Windows filenames (code page 850) to Linux (using UTF-8):
convmv -f cp850 -t utf-8
One big advantage of Linux is that you do not need to care about DVD regional codes, encryptions, etc.
If you install the packages libdvdcss and w32codecs then you can easily access all DVDs (and also rip
them). Needless to say: Don't steal movies! Hollywood and their actors are getting poorer and poorer! Have mercy!
For Ubuntu you could add the Medibuntu repository to install these files.
Here are some interesting programs and a short description:
- Rippers
-
- dvd::rip very good, supports copy on disk first, lots of options, a bit buggy (need newer release)
- acidrip simple, other codecs such as x264 and lacv (fastest way). Requires mplayer and mencoder.
- thoggen very simple and convenient - currently only strange (but good!) codecs (ogg/theora) supported
but this should change soon
- Codecs
-
- xviD Open Source, some DVD Players do not support fast forward and backward.
- Divx4 means OpenDivX and is also an Open Source Variant but AFAIK DivX 3 and DivX 5 are much
better regarding quality and speed. Therefore don't use this codec anymore.
- x264 reportedly the best codec regarding quality (according professional comparisons). I also noticed that
I got the smallest file sizes while keeping same quality. Most DVD players do not support it.
- lacv this is the default codec for acidrip, not supported by some DVD players, but it is quite fast.
Transcode is an utility to encode raw video/audio streams.
You may want to study the transcode Wiki.
[Update Sept09]: I highly recommend VirtualBox 3.0 which I use now for
several weeks. It is much better regarding performance, memory footprint,
standby/continuation speed, and seemless integration into the Linux desktop.
If you still need MS-DOS don't struggle with dual-boot configurations
anymore. Simply get vmware (server or workstation, NOT the player) and
create your own virtual Windows images.
Fortunately vmware-server is now availably for free and there
is even an Ubuntu package for it, for example for 'feisty' add the
following line to your repository list (/etc/apt/sources.list):
deb http://archive.canonical.com/ubuntu feisty-commercial main
and install vmware-server. First get a valid serial number from
www.vmware.com (for free).
That's all.
Alternatively, if you want to compile your own fresh vmware, do the
following:
- download vmware-server (download the tar.gz archive)
- Install the packages build-essential, linux-headers-arch, and
xinetd
- Ensure to remove older vmware installations! (rm -rf
/etc/vmware)
- Untar the vmware-server.tar.gz and cd to vmware-server-distrib/
and run the script ./vmware-install.pl
When vmware-server has been installed successfully then create your
image:
- Start vmware-server (should be in the 'System' menu)
and choose "Create a new virtual machine"
- Reserve 4-10 Gbyte for Windows 2000 or Windows XP (you cannot change that
later!)
- Choose "Allocate all disk space now" when you are asked for the size of the
'harddisk' of the VM. This option consumes a few GB more on the real harddisk
but runs faster. The other option "Split disk into 2 GB files" is
ideal when the VM should be stored on a set of DVDs.
- There are three networking options. Normally you want that any
guest operating system should also be able to access the network.
Therefore choose the bridged option. Then the guest system will
receive its own IP address within the same network as your host
system.
- Install the guest-OS via clicking on the previously created VM
under 'Devices' and 'CD ROM'
- When the guest operating system has started, install the
'vmware-tools' (from the vmware menu) which supports a smooth switchover
of keyboard and mouse between guest and host system.
Virtualization - VirtualBox
Another (more) free solution is
VirtualBox
which also supports all MS-DOS variants (even Vista) very well.
Note that there is an open source and a (more advanced) closed
source variant. The main advantage is that you get the feature of a
'shared folder' for free, while, when using VMWARE, only the
non-free workstation version supports this.
Update [Sept09]: I use VirtualBox 3.0 for some times now on my Kubuntu 8.04-laptop
and to my opinion it is much better than VMWare solutions. The performance and
memory consumption is superior, and the really rocking feature is CTRL-L which
integrates (virtual) MSDOS on the Linux desktop in a seamless way.