Installation-Notes on OpenSuSE 13.1 (Bottle)


There's strictly no warranty for the correctness of this text. You use any of the information provided here at your own risk. I can not be held responsible, if you damage your system by using any of the information provided her.


Contents:


1. Introduction

OpenSuSE 13.1 (nickname "Bottle") is one of SuSE's last Linux distributions for 32bit systems (probably 13.2 could have been the last). It was first released in November 2013.

I wrote these notes, when I first installed it. Recently my hard disk drive stopped working, so I had to install the distribution again (on a new hard disk drive).
I found my old text really useful. Without it, reinstallation would have taken much longer.


2. Installation of Nvidia-Driver for Graphics-Chip 7025

If you don't have a Nvidia-card, skip this part, as it will be boring for you.

Installation of the Nvidia-driver was necessary, because with the default driver 'nouveau', I couldn't get nice graphic-modes when playing videos with mplayer (Xvid-Extension).
The one-click-install on SuSE's page installed the wrong driver!
For this chip (GeForce 7025 / nForce 630a, 03d6, as shown by the "lspci"-command) the driver G02 from this repository is required. Actually, these files had do be downloaded:

nvidia-computeG02-304.131-39.1.i586.rpm
nvidia-gfxG02-kmp-desktop-304.131_k3.11.6_4-38.1.i586.rpm
x11-video-nvidiaG02-304.131-39.1.i586.rpm
x11-video-nvidiaG02-appdata.xml

Installation was then done as follows:

  1. Install the rpms as root with "rpm -i ...rpm". If it complains about dependencies, use the "--nodeps"-option.
     
  2. KMS (Kernel Mode Setting) has to be disabled:
    1. The option "NO_KMS_IN_INITRD" in "/etc/sysconfig/kernel" has to be set to "yes".
    2. After making a backup of "/etc/default/grub", edit this file. Add to the options in "GRUB_CMDLINE_LINUX_DEFAULT=" the words " nomodeset nouveau.modeset=0".
    3. Run "grub2-mkconfig -o /boot/grub2/grub.cfg". This writes the options to the boot-files.

  3. Then, the "nouveau"-driver has to be disabled:
    1. Edit "/etc/modprobe.d/50-blacklist.conf" and add the line "blacklist nouveau".
    2. Run "mkinitrd". This is also necessary to disable KMS (see above).

Then reboot. It shouldn't be necessary to mess with "/etc/X11/xorg.conf". When ready, run "nvidia-settings".


3. USB Keyboard and Mouse Sometimes Aren't Recognized at Startup

Sometimes, the attached USB keyboard and the USB mouse aren't recognized at boot-time. One way to deal with that, is to manually plug the USB devices out and then back in again. But this is annoying and in the long run harmful to the USB ports.

The reason for the misbehaviour may be, that the USB ports don't get enough power at startup, because a feature called "autosuspend" is enabled. If the result of the command

cat /sys/module/usbcore/parameters/autosuspend

is "2", it means, "autosuspend" is enabled. To disable it, make a backup of "/etc/default/grub", then edit this file.
Add to the line with the boot-options "GRUB_CMDLINE_LINUX_DEFAULT=" the words:

 usbcore.autosuspend=-1

Then run "grub2-mkconfig -o /boot/grub2/grub.cfg" to write the options to the boot-files.
After reboot, the result of the "cat"-command above should be "-1", which means, that "autosuspend" is disabled.

Actually, that still didn't solve the problem. Now I use a USB-hub with keyboard and mouse connected. I just connect the hub at runlevel 5, when the display manager's login screen is shown. That may work.


4. Booting in Text-Mode

When booting Linux, I like to see old-fashioned boot messages in a simple text-mode. To achieve that in OpenSuSE 13.1, I make a backup of "/etc/default/grub". Then I edit this file as root.

After that, I run "grub2-mkconfig -o /boot/grub2/grub.cfg" to recreate the boot-loader.

The grub2-menu to select the operating system to boot is then still shown and functional, but it's displayed in text-mode.


5. Disabling ipv6

ipv6 is some internet-feature, that may work someday, but today, it just slows down your system.
It's not even that easy to disable, unless you know, where to do it: Make a backup of

/etc/default/grub

and then edit it (as root). Look for the line of your system-boot, for example:

GRUB_CMDLINE_LINUX_DEFAULT="..."

Add the option "ipv6.disable=1" to that line, so that it looks something like this:

GRUB_CMDLINE_LINUX_DEFAULT="... ipv6.disable=1"

Of course, there are lots of other options before that in that line (symbolized here by the three points).

If you're ready, do

grub2-mkconfig -o /boot/grub2/grub.cfg

That writes the options to the bootloader (GRUB2). After a reboot, ipv6 should be disabled.


6. Audio-Setup

Although the sound-chip was set-up with yast2, many audio-applications (as mplayer) post errors like

Can't open audio device /dev/dsp: No such file

Solution: Put the line "modprobe snd_pcm_oss" (as root) into "/etc/rc.d/boot.local".

If you want to use Youtube on Firefox (version 52 and above), you also have to install "pulseaudio".

As a system beeping noise, I often use "KDE_Beep_Beep.wav", which was part of "KDE 3". It can be found in "kde3base...rpm" of SuSE 10.0. Use Midnight Commander to browse that rpm. The file is down there at "/opt/kde3/share/sounds".

Use the command "/usr/sbin/alsactl store -f normal.state" to save the current mixer settings to a file "normal.state". And "/usr/sbin/alsactl restore -f normal.state" to reload them back from the file.


7. "Checkinstall" Needs a Patch

The version of "checkinstall", that comes with OpenSuSE 13.1, has a bug. It can't create rpms (it says something about not being able to create a directory down in /var/run/.... or so). Fortunately, I found a patch for the bash-script "/usr/sbin/checkinstall", that fixes the problem. It says:

With this patch for checkinstall-1.6.2-0.4.src.rpm;

--- checkinstall.in.orig        2015-05-02 12:34:24.894240253 +0900
+++ checkinstall.in     2015-05-02 12:36:52.561583541 +0900
@@ -2423,7 +2423,7 @@
 # Prepare directories to be included in the .spec file
 mv ${TMP_DIR}/newfiles ${TMP_DIR}/newfiles.tmp
 cat ${TMP_DIR}/newfiles.tmp | while read line; do
-   [ -d "${BUILD_DIR}/${line}" -o -L "${BUILD_DIR}/${line}" ] && echo -n "%dir " >> ${TMP_DIR}/newfiles
+   [ -d "${BUILD_DIR}/${line}" ] && echo -n "%dir " >> ${TMP_DIR}/newfiles
    echo "\"/${line}\"" >> ${TMP_DIR}/newfiles
 done

checkinstall works fine.

8. Devices mount below "/var/run/media/user"

I have no idea why, but devices now mount below "/var/run/media/user" instead of in "/media". That's stupid.
Put a symlink "media" on the deep directory into "/home/user", so you don't have to dig that deep:

ln -s /var/run/media/user /home/user/media

Or even better: Make an alias "cdmedia" by putting this line into "/etc/bash.bashrc.local":

alias cdmedia="cd /var/run/media/user;ls"

9. Ordinary users can't umount devices below "/var/run/media/user"

That's stupid too. On a Linux-forum, someone suggested the command "udisksctl". Here's a bash-script "/usr/local/bin/umountmedia", that umounts exactly one device below "/var/run/media/user". The command expects a "block-device". As far as I can see, CD/DVDs and USB-sticks are such block-devices.

#!/bin/bash

nr=$(ls -1 /var/run/media/user | wc -l)
if test "$nr" -ne "1"; then
    echo "Not exactly on device below /var/run/media/user. Aborting."
    exit 1;
fi

a=$(mount | grep /var/run/media/user)
mydev=$(echo "$a" | awk -F " " '{print $1}')
udisksctl unmount --block-device "$mydev"

And also "/usr/local/bin/eject" to eject CDs/DVDs as an ordinary user:

#!/bin/bash

if [ $EUID != 0 ]; then
    /usr/local/bin/umountmedia
fi

/usr/bin/eject


10. Getting "at" started

The "at"-command works like an alarm-clock. You can schedule commands to be executed lateron. Besides the "at"-command, there's also the system-wide "cron"-daemon.
In OpenSuSE 13.1, "at" is not activated by default. To do so, go to the runlevel-editor in yast2 (as root) and click on "at" to enable the "at"-daemon at startup.
Make sure, the ordinary user is in the group "at". Use the user-administration of yast2 for that.
Set the rights for the directories "/var/spool/atjobs" and "/var/spool/atspool", so that the users of the group "at" have write-permission there.
Maybe you need to reboot. After that, "at" should work.

at now +5 min

should execute the command, specified on the following command-line, in 5 minutes.


11. mpg123 needed for shufflemp3.pl

To use my script "shufflemp3.pl", I compiled mpg321. But it didn't cooperate well with my Perl-script. mpg123 from Packman, worked better (well, actually).


12. Prevent Devices or Partitions from being mounted automatically

Set the option "noauto" in lines in "/etc/fstab" to prevent devices or partitions (like "/windows/C" for example) from being mounted automatically.
Set the option "users" to enable members of group "users" (i.e. you) to mount and umount certain devices.


13. Make Midnight Commander remember its Last Directory on Exit

I wanted Midnight Commander (mc) to remember its last directory on exit. So I put the line

alias n=". /usr/share/mc/mc-wrapper.sh"

into "/etc/bash.bashrc.local". I want to use mc's option "-b" (black and white, not blue) too, I put that directly into the "mc-wrapper.sh"-file.


14. Slow start of Midnight Commander and Firefox when offline

When offline, it takes maybe 30 seconds until Midnight Commander (mc) or Firefox start, and there isn't any error-message.
Go to yast2 as root and set the hostname (a host-alias besides "localhost") to the computer's name, shown in "yast2/network/network-settings" (or by the "hostname"-command).
The host-name is then written to the file "/etc/hosts". This seems to fix the problem.

Another command to set the would be "hostnamectl set-hostname [NAME]", by the way.


15. Update and fix LXDM

LXDM is the display manager of LXDE. Among other things, it's responsible for the LXDE-login-screen. Unfortunately, the version, that comes with OpenSuSE 13.1 (lxdm-0.4.1) has a bug: When you log out of the X-server to log in as another user, the screen freezes.
This also has something to do with the systemd-boot-system.
An update of LXDM to lxdm-0.5.3 (from an update-repository for the distribution) seems to fix the problem.


16. Set the Screen-Resolution Automatically at LXDE-Startup

The screen-resolution of the X-server can be set automatically when running LXDM at startup.
Adding the line

Option         "metamodes" "1280x720+0+0"

to "/etc/X11/xorg.conf" in the section "Screen" (respectively to "/etc/X11/xorg.conf.d/50-screen.conf") did the trick.

Other approaches, that weren't that successful: Editing "/etc/lxdm/lxdm.conf" as root, and addding the line "display-setup-script=xrandr --output default --mode 1280x720". Creating a file "/home/user/.config/autostart/lxrandr-autostart.desktop" with the content:

[Desktop Entry]
Type=Application
Name=LXRandR autostart
Comment=Start xrandr with settings done in LXRandR
Exec=xrandr --output default --mode 1280x720
OnlyShowIn=LXDE

To get the blue LXDM-default wallpaper, open "System/LXDE Control Center" from the start menu, go to "LXDM Settings" (becoming root) and set "background" to "Standard".


17. Font-Size-Adjustment throughout the System

a. Main-Font, Fonts of Title-Bars in LXDE

Using LXDE, the application to set the main font-size of applications is (or should be)

lxappearance

You can also set the size of the fonts of title-bars of applications there.
"lxappearance" modifies the file ".gtkrc-2.0" in your home-directory.

Somehow, the settings of lxappearance can be overwritten by the settings in

/etc/xdg/lxsession/LXDE/desktop.conf

though (which is probably a bug).

For gtk-3-applications, also check

/home/user/.config/gtk-3.0/settings.ini

b. Fonts inside a Panel

To set the size of fonts in the panel, edit

/home/user/.config/lxpanel/LXDE/panels/panel

To set the dimensions of the panel itself, right-click on it.

c. Fonts of Desktop-Icons

To set the size of fonts referring to the desktop-icons, right-click on the desktop.

d. Firefox

Firefox should get its main font-size for the menues from lxappearance.
If that's not sufficient, you can edit the file:

/home/user/.mozilla/firefox/[usercode].default/chrome/userChrome.css

and put this code inside it:

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

* {
  font-size: 14pt !important;
  font-family: DejaVu Sans !important;
}

The font-size of firefox' contents can be edited inside firefox in:

Edit/Preferences/Content/Fonts

Notice the "adavanced"-button.

Firefox also has a general zoom-function (which wasn't that useful for me though). If you want to try it, point firefox to "about:config", and search for "pix" there. Now you should see the option "layout.css.devPixelsPerPx", which should be "-1.0" (no idea, why it's negative). Setting it to "1.5" will zoom firefox.
Of course, you can zoom content with "Ctrl++" and "Ctrl+-" in firefox.

e. Fonts in xterm

In the terminal, I use the very good font "Terminus", found in "terminus-bitmap-fonts...noarch.rpm". To open the terminal quickly, I defined a keyboard-shortcut "Alt+d" in the file

/home/user/.config/openbox/lxde-rc.xml

The code inside the XML is:

....
    <keybind key="A-d">
      <action name="Execute">
        <command>xterm +sb -font '-*-terminus-*-*-*-*-28-*-*-*-*-*-*-*' -fg white -bg black</command>
      </action>
    </keybind>
....

Check possible sizes with "xfontsel". 32 seems to be the maximum-size of the Terminus-font at the moment. If that's still too small, you'll have to reduce the screen-resolution in general.

f. Fonts of KDE-applications

Most of the fonts, KDE-applications (like dolphin) use, can be configured with "systemsettings" (part of the package "kdebase4-workspace").

For unknown reason, it seems, the main font of KDE can't be configured there though. Use the program

qtconfig

instead (which is part of the package "libqt4-x11"). There isn't an "Ok"- or "Apply"-button. Use "File/Save" from the menu instead. The program doesn't even tell, where it saves the settings. The file probably is "/home/user/.config/Trolltech.conf".


18. Defining Keyboard-Shortcuts for Opening Applications and Maximizing Windows in LXDE

The file to edit for defining keyboard-shortcuts in LXDE is

/home/user/.config/openbox/lxde-rc.xml

Before you start editing it, make a backup of the original file, as it's in XML, and even if only a single letter in it isn't correct, the whole data is rejected.

Ok, now for the editing: Inside the file, look for a section called

<keyboard>

Notice there are several subsections beginning with "<keybind>" and ending with "</keybind>".

I wanted the following:

So I edited the "<keyboard>"-section, so that it looked like this:

  <keyboard>
    <keybind key="A-x">
      <action name="ToggleMaximizeFull"/>
    </keybind>
    <keybind key="A-e">
      <action name="Execute">
        <command>/usr/bin/firefox</command>
      </action>
    </keybind>
    <keybind key="A-d">
      <action name="Execute">
        <command>xterm +sb -font '-*-terminus-*-*-*-*-24-*-*-*-*-*-*-*' -fg white -bg black</command>
      </action>
    </keybind>
    <keybind key="A-m">
      <action name="Execute">
        <command>thunderbird</command>
      </action>
    </keybind>
  ....
  </keyboard>

Note: "Mod5-" instead of "A-" seems to bind the "AltGr" key instead of the "Alt" key.


19. Defining Keyboard-Shortcut for Deleting the Following Word in bash

bash itself comes with some useful keyboard-shortcuts in the terminal, for example:

I always want "Alt+w" for "Delete next word forward", but it seems, that's missing.
But you can define it yourself. I got what I wanted by adding the following lines to "/etc/bash.bashrc.local":

bind -r '\ew'
bind '"\ew": kill-word'

The first command unbinds whatever was bound to "Alt+w". The next one sets the binding I wanted.
"bind -l" shows, what commands would be possible. With "read" and typing something, you get the keycode you need for the "bind"-command. If ^[ is shown in "read", it has to be translated to \e for the "bind"-command.


20. Disabling Weird Variable-Expansion on Commandline of bash

This next one's a bit difficult to explain, if you never encountered it: Let's say, you want to copy something to "$HOME/mydir". So you start typing

cp $HOME/

then you press "TAB" and want bash to expand $HOME to "/home/user" automatically, so that you can add "mydir" afterwards. But bash now shows something like this:

cp \$HOME/

and you can't go on. This was the default-behaviour in OpenSuSE 12.1 (not in 10.0 and below though). Fortunately it got corrected again. To get useful behaviour of bash in OpenSuSE 13.1, you have to add the line

shopt -s direxpand

to "/etc/bash.bashrc.local".


21. Execute Commands Automatically at LXDE-Startup

To execute commands automatically at LXDE-startup, a socalled ".desktop"-file can be put into the directory:

/home/user/.config/autostart

Its content could look for example like this:

[Desktop Entry]
Type=Application
Name=Some name here
Comment=Doing this and that at LXDE-startup
Exec=yourcommand -option1 -option2
OnlyShowIn=LXDE

Shorter and simpler commands can be put into the file:

/home/def/.config/lxsession/LXDE/autostart


22. Switching JavaScript on and off quickly in Firefox

Firefox 65.0.2 (32 bit) is a rather good version for OpenSuSE 13.1.

The Firefox-AddOn "JavaScript Switcher (by Suraj Jain)" places a small icon on the right side of the navigation bar, with which JavaScript can be switched on and off with a single click.
A similar AddOn was formerly called "QuickJS 1.1".


23. Make Firefox Respect the System's Menu-Colors

Some versions of Firefox seem to neglect the system's menu-colors. That is, when the menu-font is black, and you select an item, there's no background-color to the selected item, and the foreground-color is white, so you can't see anything.

Somehow, Firefox overwrites the system's color-settings with its own ones.
To make it respect the system-colors, edit the file:

/home/user/.mozilla/firefox/[usercode].default/chrome/userChrome.css

and append to it:

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
menu, menuitem { 
  -moz-appearance: none !important;
}

(The "@namespace"-line needs to be inside the file only once.)
After you restart Firefox, the menu and its items are very tight, but at least the problem with the colors is solved.


24. Keep Firefox From Displaying Annoying Update Messages

Recent versions of Firefox keep on displaying annoying messages about newer Firefox versions being available, while there even isn't an option any more to prevent Firefox from searching for updates at all.

To switch off updates still (in for example Firefox 92.0), become 'root' and go to "/usr/lib/firefox" (where Firefox is installed).
Create a directory called "distribution" there.
Enter it and create a file "policies.json" with the following content:

{ 
    "policies": {
        "DisableAppUpdate": true
    } 
}

Restart Firefox. That finally disables automatic updates. Notice, that in "about:preferences", you get messages

The browser is managed by your organisation.

and

Updates have been deactivated by your system-administrator.

(or something similar) now.

Another method, to just stop the messages, was: Go to "about:config" and set "app.update.doorhanger" to "false". But that may be deprecated.


25. Install Flash-Player-Plugin into Firefox

Get "libflashplayer.so" from Adobe. It needs to be copied into the directory "/home/user/.mozilla/plugins", which has to be created first. Then, firefox recognizes it without further installation. Otherwise, it doesn't recognise it at all.


26. Disabling pdf.JS in Firefox

I don't like pdfs (of maybe unknown size) opening inside a browser. I want to download them and view them with kpdf and such.
So,in Firefox 44, I needed to disable the "pdf.JS"-stuff. I just had to go to

about:config

and set the option "pdfjs.disabled" to "true".


27. Configuring a Few Things in Thunderbird

In KDE3, there was the great email-program "kmail". Unfortunately, it got totally messed up in KDE4. Shame on the developers. So, today Mozilla Thunderbird's the better alternative.
Some useful options for configuration are a bit hidden though:

Recently, I couldn't zoom text in or out with "Ctrl++"/"Ctrl+-" inside the "compose message"-window. It worked again, when I disabled the option "zoom only text" in "View/Zoom" in the compose-window's menus.
It seems, this option toggles, if images are zoomed too.


28. Setting the Size of the Menu-Font in LibreOffice

In LibreOffice, in "Extras/Options/LibreOffice/View", there's an option "Use system-font for the GUI". That should be checked. Then, the packages

libreoffice-kde4...rpm
libreoffice-gnome...rpm

should be installed, especially the second one. Otherwise, LibreOffice can't make use of the Gtk-system-font. The font (type and size) has to be set in "systemsettings", the KDE-config-tool, which is part of

kdebase4-workspace

Make sure, the package

kde-gtk-config

is installed. Then, and only then, there's a page for gtk-options in "systemsettings/Appearance of Applications/GTK". That's where you set the menu-font for LibreOffice.

After that, you can fine-tune the appearance in "LibreOffice/Extras/Options/LibreOffice/View". You can scale the GUI a little there.


29. Speeding up LibreOffice

To speed up LibreOffice, you can set some options in "Extras/Options/LibreOffice/Memory":

Think about the quickstart-option (if it's on that page too). It loads parts of LibreOffice at system-boot. I'm not sure, if I want that. Maybe not.


30. Setting the Font Sizes of KDE3-Programs

Although OpenSuSE 13.1 mainly uses KDE4, it is also possible to install and run KDE3-programs with it such as "kpdf".

To set the font sizes of the KDE3-applications (without using the old "kcontrol"), sections like these can be added to the file "/home/user/.kde/share/config/kdeglobals":

[General]
XftAntialias=true
XftHintStyle=hintmedium
XftSubPixel=none
desktopFont=Sans Serif,18,-1,5,50,0,0,0,0,0
fixed=Monospace,18,-1,5,50,0,0,0,0,0
font=Sans Serif,18,-1,5,50,0,0,0,0,0
menuFont=Sans Serif,18,-1,5,50,0,0,0,0,0
smallestReadableFont=Sans Serif,8,-1,5,50,0,0,0,0,0
toolBarFont=Sans Serif,18,-1,5,50,0,0,0,0,0

[WM]
activeFont=Sans Serif,12,-1,5,50,0,0,0,0,0

31. Using Encrypted Containers

Similar to older versions of SuSE Linux, it is possible to create a "data safe", a password secured container file for sensible data. To set up such a container on OpenSuSE 13.1, you'd do the following as root. At first, it is a bit difficult to understand how this is done, so I explain each command one by one:

  1. Load the kernel module "cryptoloop":
    modprobe cryptoloop

  2. Create the directory, where you will manage your files later:
    mkdir -p /home/user/safe

  3. Create the container file "/home/user/cryptfile" by writing 200MB of useless data to it. (This can take a while):
    dd if=/dev/urandom of=/home/user/cryptfile bs=1024 count=200000

  4. Connect a loop device to the container file:
    losetup /dev/loop0 /home/user/cryptfile

  5. Create an encryption mapper device file called "/dev/mapper/secret_img" and connect it to the loop device file. (At this point you are asked for the password to use for the data safe. Be careful to enter it without misspelling):
    cryptsetup --hash sha512 --cipher twofish-cbc-plain --key-size 256 create secret_img /dev/loop0

  6. Create a standard Linux ext3-filesystem on the container file, by writing the filesystem to the device files, that are connected to the container file. That is, the mapper file and the loop file:
    mke2fs -j /dev/mapper/secret_img

  7. When the filesystem is written, mount the container file (again through the connected device files) to the safe directory:
    mount /dev/mapper/secret_img /home/user/safe

If you want to use such a volume later, you have to take some of the steps above again. But you can just put them into a script this time. To mount the data safe:

#!/bin/bash
modprobe cryptoloop
losetup /dev/loop0 /home/user/cryptfile
cryptsetup --hash sha512 --cipher twofish-cbc-plain --key-size 256 create secret_img /dev/loop0
mount /dev/mapper/secret_img /home/user/safe

And to umount it again:

#!/bin/bash
umount /home/user/safe
cryptsetup close /dev/mapper/secret_img
losetup -d /dev/loop0

As this can only be done as root, you'd have to setup sudo for ordinary users accordingly.


32. m - Play Multimedia-Files

When I want to play a multimedia-file in a directory from the terminal, I don't want to have to think about which player to use and which command to enter for that specific file. That's why I wrote the small script "m", which I copied to "/usr/local/bin".
I can throw the names of lots of files at it, and there's a good chance, it plays them for me, if they're media-files.
First, it tries to identify the file by its suffix (like ".flv" for example), then by comparing the result of a check with the file-command.
Here's my Perl-version of the script:

#!/usr/bin/perl
use warnings;
use strict;
# m - Play multimedia-file(s)
sub play {
    print "Playing '$_[1]'.\n";
    system("$_[0] \"$_[1]\"");
}
if (! @ARGV) {
    print "\nNope.\n\n";
    exit 1;
}
my $mpl   = "mplayer -af volnorm";
my $mplfs = "mplayer -fs -af volnorm";
my $m321  = "mpg321 -q";
my %sufs = ("flv"      => "ffplay -x 1024 -y 768",
            "flv.part" => "ffplay -x 1024 -y 768",
            "ogg"      => "ogg123");
my %checks = ("WAVE"    => "aplay -q",
              "MP3"     => $m321, 
              "layer"   => $m321,
              "AVI"     => $mplfs,
              "Microsoft ASF"         => $mplfs,
              "Apple QuickTime movie" => $mplfs,
              "tracker" => "modplugplay",
              "SID"     => "sidplay2",
              "MIDI"    => "timidity 1>/dev/null");
foreach my $i (@ARGV) {
    if (! -f $i) {
        print "'$i' not suitable (non-existent or directory).\n";
        next;
    }
    my $nextfile = 0;
    foreach my $u (keys(%sufs)) {
        if ($i =~ /\Q$u\E$/) {
            play($sufs{$u}, $i);
            $nextfile = 1;
            last;
        }
    }
    if ($nextfile) { next; }
    my $fstr = `file $i`;
    foreach my $u (keys(%checks)) {
        if ($fstr =~ /\Q$u\E/) {
            play($checks{$u}, $i);
            $nextfile = 1;
            last;
        }
    }
    if ($nextfile) { next; }
    # Special cases:
    if($fstr =~ /MPEG/) {
        play($mplfs, $i);
        next;
    }
    if($fstr =~ /data/ && $i =~ /sid$/) {
        play("sidplay2", $i);
        next;
    }
    print "Format of '$i' not recognized.\n";
}

I got some results with "m *" in a directory for example.


33. Contents of Certain Configuration Files After Modification

"/etc/rc.d/boot.local":

modprobe snd_pcm_oss
modprobe cryptoloop
modprobe db9_new dev=1,9

"/etc/bash.bashrc.local":

shopt -s direxpand
bind -r '\ed'
bind -r '\ew'
bind '"\ew": kill-word'
HM="/home/user"
alias am="alsamixer"
alias mozilla="/usr/bin/firefox"

"/etc/default/grub":

GRUB_DISTRIBUTOR="openSUSE 13.1"
GRUB_DEFAULT=saved
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=8
GRUB_CMDLINE_LINUX_DEFAULT=" resume=/dev/disk/by-id/ata-....... ipv6.disable=1 showopts nomodeset nouveau.modeset=0"
GRUB_CMDLINE_LINUX_RECOVERY="showopts apm=off noresume nosmp maxcpus=0 edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe"
GRUB_CMDLINE_LINUX=""
GRUB_GFXMODE=text
GRUB_DISABLE_OS_PROBER=false
GRUB_THEME=
GRUB_BACKGROUND=

The hard disk drive (" resume=/dev/disk/by-id/...") has to be defined properly. When ready, the boot-loader can be recreated with "grub2-mkconfig -o /boot/grub2/grub.cfg". But be careful: If there are wrong settings, the system won't boot any more.


34. Patching the db9-Kernel-Module for the Second Parallel-Port-Joystick

The db9-kernel-module is a Linux-driver for a weird joystick-interface for a parallel-port. With it, you can connect a digital joystick, used for ancient homecomputers like Amiga 500, Atari 800 XL or Sinclair ZX Spectrum, to a parallel-port of a PC (although many modern PCs don't even have a parallel-port any more).

Some of these interfaces enable you to connect two digital joysticks to one parallel-port (like the Amiga, C64 or Atari 800 XL usually had two joystick-ports, so there were games for two players at once). The following text describes how to fix a bug in the db9-kernel-module to make two joysticks work.

Get db9.c from "/usr/src/linux-3.11.6-4/drivers/input/joystick/db9.c", it's part of "kernel-source...rpm".

After the line

input_sync(dev);

add the line

input_sync(dev2);

Call the new file db9_new.c, copy it somewhere, put a "Makefile" there, which looks like this:

obj-m := db9_new.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
	$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

Build as root with "make", copy "db9_new.ko" to "/lib/modules/3.11.6-4-desktop/kernel/drivers/input/joystick/". Then execute

depmod

Insert db9_new instead of db9:

modprobe db9_new dev=1,9

See the documentation for details on the values for "dev=".


35. Emulator Configurations

1. fuse (ZX Spectrum): "/home/user/.fuserc":

<graphicsfilter>paltv3x</graphicsfilter>"


2. fs-uae (Amiga):

/home/user/.config/fs-uae
/home/user/.config/fs-uae-launcher

File "base-dir", containing the name of the "FS-UAE"-directory.

There is a protection mechanism, when writing to disk images. If you want to write to disk images, the option

writable_floppy_images = 1

has to be set in the individual configuration.


3. mame (Arcade): "/etc/mame/mame.ini":

video              soft
keepaspect         1

The last one ("keepaspect 1") is rather important.

In mame, you can set the sound volume using the "^"-key (the key above the tabulator-key).


4. vice (C64): "/home/user/.config/vice/sdl-vicerc":

AspectRatio="1,000000"
JoyPort1Device=1
JoyPort2Device=1
JoyDevice1=4
JoyDevice2=4

That's for my Atari-db9-type joysticks (connected to parallel port).

Use

x64 -VICIIfull disk.d64

to run in fullscreen-mode. See this page for more options.

When using vice, there are two key-combinations to be aware of:

  1. Alt+w: Changes to "warp mode" and back. Essential for reducing C64 virtual floppy loading times.

  2. Alt+j: Switches the two joystick ports of the virtual C64. Use this, if a game expects your joystick to be on the other port.

Inside the emulation, there are some C64-specific key-combinations:

When compiling vice from source, don't worry about "./configure" stating, that there isn't support for "Linux joysticks" or "USB-joysticks": Joystick-support is handled by the SDL-library.


36. Used Software-Repositories

Here are the software-repositories (yast2/Software/Software-Repositories) I used for OpenSuSE 13.1. Some of them may have been closed in the meantime:

http://download.opensuse.org/distribution/13.1/repo/oss/
http://download.opensuse.org/distribution/13.1/repo/non-oss/
http://download.opensuse.org/source/distribution/13.1/repo/oss/
http://download.opensuse.org/debug/distribution/13.1/repo/oss/
http://download.opensuse.org/debug/update/13.1/
http://download.opensuse.org/debug/update/13.1-non-oss/
http://download.opensuse.org/update/13.1/
http://download.opensuse.org/update/13.1-non-oss/
http://download.opensuse.org/repositories/X11:/lxde/openSUSE_13.1/
http://download.opensuse.org/repositories/KDE:/KDE3/openSUSE_13.1/
http://download.nvidia.com/opensuse/13.1/
http://download.videolan.org/pub/SuSE/13.1/
http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_13.1/


Email: hlubenow2 {at-symbol} gmx.net
Back