Belgian HOWTO
Prev |  | Next

# 2. Configuration

## 2.1. Keyboard setup

Linux provides 2 ways to set up your keyboard. At the console you can use loadkeys and under XFree86 you can use xmodmap.

### 2.1.1. Console

To use the keytable for a Belgian keyboard you can use `loadkeys be2-latin1` or `loadkeys be-latin1`. The only difference between the two is that be2-latin1 adds support for twosuperior and threesuperior (keycode 41) and grave (keycode 43).

Usually loadkeys is started at boottime from the scripts located somewhere in `/etc/rc.d`. Different distributions handle it differently. Most distributions have a simple program (like kbdconfig in Red Hat, install-keymap in Debian or yast in SuSE) to change the behaviour of these scripts.

### 2.1.2. XFree86

To set your keyboard properly under XFree86 you've got more choices. By running Xconfigurator (or a similar program) a config-file for XFree86 is created (with some standard behaviour). This file is called `XF86Config-4` or `XF86Config` and is usually located in `/etc/X11` or `/etc`

Make sure (and change otherwise) that something similar to this is given under the Keyboard Section.

    	Section "Keyboard"
    		Protocol        "Standard"
    		XkbRules        "xfree86"
    		XkbModel        "pc101"
    		XkbLayout       "be"
    	EndSection

If you own a 'microsoft' keyboard (or the less-known penguin keyboards ;p) you can enable those extra 3 keys by changing the "pc101" into "pc104". (I use the extra keys as meta-keys in my windowmanager so some shortcuts don't conflict with the internal ones of my wm).

To get the AltGr key to work under XFree86 simply add in the Keyboard Section:

    	RightAlt        ModeShift

### 2.1.3. Compose key

Some people prefer to use a 'Compose'-key to enter their special characters, like:

    	Compose-' e    =>    é
    	Compose-/ o    =>    ø
    	Compose-c ,    =>    ç
    	Compose-c o    =>    ©
    	Compose-s s    =>    ß

For XFree86, the solution is to enter `xmodmap -e "keycode xx = Multi_key"` or `xmodmap -e "keysym yy = Multi_key"` where 'xx' is the keycode or 'yy' the keysym of the key you choose to be the 'Compose'-key. (use xev to get these values)

Alternatively you can add `keycode xx = Multi_key` to your `~/.xmodmaprc`. This way it happens automagically.

For the console, you could do something similar with loadkeys. `echo "altgr keycode 52 = Compose" | loadkeys` to use AltGr-/ as a 'Compose'-key.

## 2.2. Display and applications

Some applications have to be compiled as 8-bit clean to work well with the European characterset. Others like to be told in advance.

### 2.2.1. Using the ISO-8859-1 font in console

You can load the ISO-8859-1 font by typing the following in console:

    	setfont lat1u-16.psf
    	mapscrn trivial
    	echo -ne '\033(K'

To be able to use ë, è, é or ç in console, you might want to add these to your `~/.inputrc`:

    	set meta-flag on
    	set convert-meta off
    	set output-meta on

(This must be done for every user, if you want this to be default for all users you can either add this file to `/etc/skel/` or you could add these lines to `/etc/inputrc` and add the following to `/etc/bashrc`, `export INPUTRC=/etc/inputrc`)

| Note!
| This is only useful to programs that use readline (like bash)

Also set the following environment variables:

    	LC_CTYPE=iso-8859-1
    	SYSFONT=lat1u-16.psf
    	SYSTERM=linux

### 2.2.2. Support for the Euro symbol

Since Europe had to invent a new character, the Euro, there's a new standard. It's called ISO-8859-15 (aka Latin-9 or Latin-0). To add support you need both a new font and new keymaps. This is part of every major distribution nowadays, if you have an older distributions you probably need a newer console-tools package.

There's more information in the Euro Character Support mini HOWTO

## 2.3. Time zone

Since Belgium is located in the Central European Time zone (aka MET) which (in the winter) is equivalent to the Greenwhich Mean Time plus 1 (GMT+1), you can simply link `/usr/lib/zoneinfo/localtime/MET` to `/etc/localtime` symbolicly like: `ln -sf /usr/lib/zoneinfo/MET /etc/localtime` or `ln -sf /usr/lib/zoneinfo/Europe/Brussels /etc/localtime` This automagically sets Daylight Savings (which is GMT+2 in the summer).

| Note!
| Different distributions have different paths, zoneinfo can be located in `/usr/share` or such...

| Another note!
| Red Hat uses a tool called timeconfig, SuSE uses yast

To change the CMOS clock and then synchronize the system time with the CMOS clock, do something like this:

    	hwclock --set --date="Feb 25 03:38"
    	clock -u -s

If your clock is set to local time (which is discouraged but if you also run broken OS's, you must), you can do:

    	hwclock --set --date="Feb 25 04:38"
    	clock -s

[Noticed the 1 hour difference ? ;p]

If your computer has Internet-access you can use NTP (Network Time Protocol) to keep your system clock in sync. One way of doing this is by starting ntpdate from cron by adding

    	05 0 * * * root /usr/sbin/ntpdate -s ntp.belnet.be > /dev/null 2>&1

to your /etc/crontab. Check the ISP-information below to see if your ISP has a NTP-server available.

## 2.4. Locale support

Not much programs support locale yet, if you want to know more about locale or how to write your own programs to support it, check: [put the damn url here ;p]

Be aware that locale makes it harder to resolve problems as less people can help you !! You might understand a problem when it's in technical English, but what if it's translated in some obscure Dutch ?

### 2.4.1. Dutch

To enable support for the Dutch locale in Belgium on a system with locale support you just have to set the following environment variables:

    	LANG=nl
    	LANGUAGE=nl_BE

Try nl_BE.ISO_8859-1 if nl_BE does not work.

### 2.4.2. French

If you want French locale support in Belgium, set the following environment variabels:

    	LANG=fr
    	LANGUAGE=fr_BE

Try fr_BE.ISO_8859-1 if fr_BE does not work.

### 2.4.3. German

If you want instead German locale support in Belgium, set the following environment variabels:

    	LANG=de
    	LANGUAGE=de_BE

Try de_BE.ISO_8859-1 if de_BE does not work.

### 2.4.4. Walloon

For Walloon locale support you can find files and information at: http://chanae.stben.be/linux/locales/walon/. To use it set:

    	LANG=wa
    	LANGUAGE=wa_BE:fr_BE

Try wa_BE.ISO_8859-1 if wa_BE does not work.

## 2.5. Native language support and codepages

These options add support for the Belgian characterset and codepages. If you'd like to have these, compile a kernel with these options put on. They only apply to some filesystems (FAT-based, ISO9660, ...).

    	< > Codepage 850 (Europe)
    	< > NLS ISO 8859-1  (Latin 1; Western European Languages)
    	< > NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)

Located in Filesystems > Native Language Support

If your kernel is a modular kernel that came with your distribution (=you never compiled a kernel before), then you might want to type:

    	insmod nls_cp850
    	insmod nls_iso8859_1
    	insmod nls_iso8859_15

## 2.6. Ispell

Contributed by Dany Vanderroost `<danyv@euronet.be>`

### 2.6.1. Install and setup

Ispell is composed of different components: the main software and one or more dictionaries. The default dictionary is `/usr/lib/ispell/english.hash`. To override this default you have 2 options. Either you can set the `DICTIONARY`-variable or launch it with the "-d" option.

You can create custom dictionaries in your home-directory like `~/.ispell_english`.

### 2.6.2. Dutch

    	export DICTIONARY=nederlands

or

    	ispell -d nederlands file_name

### 2.6.3. French

    	export DICTIONARY=francais

or

    	ispell -d francais file_name

### 2.6.4. German

    	export DICTIONARY=deutsch

or

    	ispell -d deutsch file_name

### 2.6.5. Walloon

    	export DICTIONARY=walon

or

    	ispell -d walon file_name

### 2.6.6. Multilanguage spelling

By default Ispell will not work with multiple dictionaries but the solution is to work with the `~/.ispell_words` file.

If you don't want to make multi instance with Ispell, You can build `~/.ispell_words` with the words package by `cp /usr/dict/words ~/.ispell_words; chmod +w ~/.ispell_words`.

## 2.7. Setting up Internet

### 2.7.1. Dialing in with your modem (PPP)

To configure PPP correctly, you should check the PPP-HOWTO. I try to explain it briefly, but if you have any questions or problems, read the HOWTO very carefully.

#### 2.7.1.1. Configuring the modem

To configure your modem, you can alter the initstring of your modem. To learn more about your modem, check Ask Mr. Modem.

| If you have a winmodem you will probably not get it to work. More information about winmodems is at: http://linmodems.org/. Work is underway, but winmodems are not as good as real modems.

#### 2.7.1.2. Installing pppd

Now, you need to have the ppp-package installed (check this by typing `pppd --version`), make sure you have a recent one. Then you have to make sure you've got these files:

`/usr/local/bin/ppp`

    	#!/bin/sh

    	case $1 in
    		(on|start)
    			TELEPHONE='555-1212'        # The telephone number for the connection
    			ACCOUNT='your_login'        # The account name for logon (as in 'George Burns')
    				PASSWORD='your_pass'        # The password for this account (and 'Gracie Allen')
    			INITSTRING='AT&F&C1&D2Z'# Modem initstring
    			IPLOCAL=0.0.0.0             # Local IP address if known. Dynamic = 0.0.0.0
    			IPREMOTE=0.0.0.0            # Remote IP address if desired. Normally 0.0.0.0
    			DEVICE=/dev/ttyS1           # Serial Device com1=ttyS0, com2=ttyS1,...
    			SPEED=57600                 # 19200, 38400 or 57600 (don't try something different)
    			export TELEPHONE ACCOUNT PASSWORD INITSTRING
    			exec /usr/sbin/pppd $DEVICE $SPEED $IPLOCAL:$IPREMOTE \
    			user $ACCOUNT connect /etc/ppp/ppp-on-dialer
    			;;
    		(off|stop)
    			if [ -r /var/run/ppp0.pid ]; then
    				kill -INT `cat /var/run/ppp0.pid`
    				if [ ! "$?" = "0" ]; then
    					rm -f /var/run/ppp0.pid
    					echo "ERROR: Removed stale pid file"
    					exit 1
    				fi
    				exit 0
    			fi
    			echo "ERROR: PPP link is not active on ppp0"
    			exit 1
    			;;
    		(info|status)
    			/usr/sbin/pppstats
    			;;
    		(*)
    			echo "Usage: ppp on|off|info|start|stop|status";
    	esac

`/etc/ppp/ppp-on-dialer`

    	#!/bin/sh

    	exec /usr/sbin/chat -v                                        \
    		REPORT CONNECTION                                     \
    		REPORT CARRIER                                        \
    		TIMEOUT              10                               \
    		ABORT                '\nBUSY\r'                       \
    		ABORT                '\nNO ANSWER\r'                  \
    		ABORT                '\nNO CARRIER\r'                 \
    		ABORT                '\nNO DIALTONE\r'                \
    		ABORT                '\nRINGING\r\n\r\nRINGING\r'     \
    		ABORT                'Invalid Login'                  \
    		ABORT                'Login incorrect'                \
    		''                   "\r$INITSTRING\r"                \
    		'OK-+++\c-OK'        'ATH0'                           \
    		TIMEOUT              45                               \
    		OK                   "ATDT$TELEPHONE"                 \
    		CONNECT              '\d\c'                           \
    		ogin:--ogin:         "$ACCOUNT"                       \
    		ord:                 "$PASSWORD"

You can remove the `-v` once everything looks normal.

The pppd command uses `/etc/ppp/options` to list its options, change these options to whatever fits. These defaults normally work in most cases.

    	asyncmap 20a0000
    	crtscts
    	debug
    	default-mru
    	defaultroute
    	detach
    	escape 11,13,ff
    	hide-password
    	ipcp-accept-local
    	ipcp-accept-remote
    	lcp-echo-failure 4
    	lcp-echo-interval 400
    	lock
    	modem
    	mtu 1500
    	netmask 255.255.255.0
    	noipdefault
    	passive

    	#idle 300
    	#kdebug 0
    	#-vj

Once dialing in works like a charm, you can leave `debug` out.

| It is important to emphasize that every special character, thus every character that is not [a-ZA-Z0-9] and '_', should be escaped by preceding it with a '\'-character. Thus "e!b$l+" would become "e\!b\$l\+". Try it if you are having troubles !

#### 2.7.1.3. pap-secrets / chap-secrets

If your ISP requires CHAP or PAP, you need one of these files with their proper username and password:

`/etc/ppp/pap-secrets` or `/etc/ppp/chap-secrets`

    	#client         server  secret          IP
    	your_login      *       your_pass       *

#### 2.7.1.4. Network

To configure your nameservers, change `/etc/resolv.conf`. If dialing in is succesful, but you can't get it to connect to URL's: this is probably the cause.

    	domain domain_of_your_isp
    	nameserver your_primary_nameserver
    	nameserver your_secondary_nameserver

#### 2.7.1.5. File permissions

Before you can run a (shell)script, it must be set executable. Be sure that you set the permissions so that other users cannot see the passwords stored in the files. If you want other users to be able to dial in, you might want to consider using sudo. You might want to do the following:

    	chmod u+rw og-rwx -R /etc/ppp
    	chmod u+x /etc/ppp/ppp-on-dialer /usr/local/bin/ppp

#### 2.7.1.6. Dial + Hangup

Then if `/usr/local/bin` is in your `PATH`, you can easily dial in with `ppp on`, hangup with `ppp off` and to get some statistics, you do: `ppp status`.

### 2.7.2. Dialing in with your ISDN-modem

Contributed by Christophe Lambin `<clambin@skynet.be>`

This section does not aim to be a definitive guide on ISDN for Linux. For a more detailed discussion on the topic, see Paul Slootman's ISDN4Linux HOWTO and ISDN4Linux-FAQ.

#### 2.7.2.1. Updating the kernel

If you're using a 2.2 kernel, it's recommended to get an updated version of the ISDN code. You can retrieve it from CVS at ftp://ftp.suse.com/pub/isdn4linux/. For more information, check: http://www.brisse.dk/site/linux/docs/isdn.htm

| If you've recently purchased an Eicon Diva 2.0 PCI (eg, via Belgacom), there's a good chance you've actually got a Diva 2.01.In this case, you must get a version dated 1 July 1999 or later !

Once the ISDN is in place, you can start up the driver. Eg: `modprobe hisax type=11 protocol=2` Refer to the Readme's for the right parameters and values for your card.

#### 2.7.2.2. ISDN4Linux toolkit

Next, you'll need the ISDN4Linux toolkit. You can retrieve the latest version of the toolkit at: ftp://ftp.suse.com/pub/isdn4linux/

#### 2.7.2.3. Configuring the interface

With the tools installed and configured, write a script to configure the interface, to be used for the ISDN connection. As always in Linux, there's no one correct way of doing this. I've put these in a script

`/etc/rc.d/rc.isdn`:

    	#!/bin/sh

    	MSNREMOTE='555-1212'    # Phone number of ISP
    	MSNLOCAL='555-1313'     # my number, without 0, with areacode
    	ACCOUNT='george'        # The account for logon (as 'George Burns')
    	IPLOCAL=10.0.0.2        # my fixed IP (use 10.0.0.2 if no fixed)
    	IPREMOTE=0.0.0.0        # IP number of ISP
    	INTERFACE=ippp0
    	/sbin/modprobe hisax type=11 protocol=2
    	/sbin/isdnctrl verbose 3 system on
    	/sbin/isdnctrl addif $IF
    	/sbin/isdnctrl secure $IF on
    	/sbin/isdnctrl addphone $IF out $MSNREMOTE
    	/sbin/isdnctrl eaz $IF $MSNLOCAL
    	/sbin/isdnctrl huptimeout $IF 300
    	/sbin/isdnctrl l2_prot $IF hdlc
    	/sbin/isdnctrl l3_prot $IF trans
    	/sbin/isdnctrl encap $IF syncppp
    	/sbin/isdnctrl dialmode $IF auto
    	/sbin/ifconfig $IF $IPLOCAL pointopoint $IPREMOTE -arp -broadcast
    	/sbin/ipppd /dev/ippp0 user $ACCOUNT $IPLOCAL:$IPREMOTE

To start this at boot time, make it executable and append the following to `/etc/rc.d/rc.local`:

    	if [ -x /etc/rc.d/rc.isdn ]; then
    		. /etc/rc.d/rc.isdn
    	fi

The ipppd command gets its parameters passed through a file, `/etc/ppp/ioptions`:

    	-ac
    	-bsdcomp
    	debug
    	defaultroute
    	ipcp-accept-local
    	ipcp-accept-remote
    	mru 1524
    	mtu 1500
    	noipdefault
    	-pc
    	useifip
    	-vj
    	-vjccomp

    	#idle 360
    	#persistent

| Do NOT specify +pap or +chap in this file. This specifies the authentication that ipppd should use for an INCOMING client. If you were to use this to connect to your ISP, ipppd would wait for the ISP to authenticate itself using the specified protocol.

| It is important to emphasize that every special character, thus every character that is not [a-ZA-Z0-9] and '_' should be escaped by preceding it with a '\'-character. Thus 'e!b$l+' would become 'e\!b\$l\+'. Try it if you are having troubles !

Finally, create `/etc/ppp/ip-down.local` to handle the shutdown of the interface:

    	#!/bin/sh

    	/sbin/ifconfig $1 down
    	sleep 1
    	/sbin/ifconfig $1 10.0.0.2 pointopoint

| Note!
| This is to handle some problems with routes on shutdowns. Anyone know of a clean(er) solution ?

#### 2.7.2.4. pap-secrets / chap-secrets

If your ISP uses PAP or CHAP, create a file `/etc/ppp/pap-secrets` or `/etc/ppp/chap-secrets`. Its format is:

    	#client         server  secret          IP
    	your_login      *       your_pass       *

#### 2.7.2.5. Network

Not really related to ISDN, but a lot of people forget this step (too eager to try out all the stuff they typed in above ? :-)).

Anyway, you need to configure the DNS, by creating a file `/etc/resolv.conf`:

    	domain your_domain_of_your_isp
    	nameserver your_primary_nameserver
    	nameserver your_secondary_nameserver

#### 2.7.2.6. File permissions

Before you can run a (shell)script, it must be set executable. Be sure that you set the permissions so that other users cannot see the passwords stored in the files. If you want other users to be able to dial in, you might want to consider using sudo. You might want to do the following:

    	chmod u+rw og-rwx -r /etc/ppp
    	chmod u+x /etc/rc.d/rc.isdn /etc/ppp/ip.down-local /usr/local/bin/isdn

#### 2.7.2.7. Dial + Hangup

Finally, you can write a little wrapper to start and stop the ISDN connection. I've put this as /usr/local/bin/isdn:

    	#!/bin/bash

    	case $1 in
    		(on|start)
    			/sbin/isdnctrl dial ippp0
    			;;
    		(off|stop)
    			/sbin/isdnctrl hangup ippp0
    			;;
    		(info|status)
    			/sbin/isdnctrl list ippp0
    			;;
    		(*)
    			echo "Usage: isdn on|off|info|start|stop|status"
    	esac

Then if `/usr/local/bin` is in your `PATH`, you can easily dial in with `isdn on` and hangup with `isdn off`.

Prev | Home | Next
Introduction |  | Belgian ISP information