2. 配置

2.1. 键盘设置

Linux 提供了两种设置键盘的方法。在控制台,你可以使用 loadkeys 命令,而在 XFree86 环境下,你可以使用 xmodmap 命令。

2.1.1. 控制台

要使用比利时键盘的键位表,你可以使用loadkeys be2-latin1或者loadkeys be-latin1。 两者唯一的区别在于 be2-latin1 添加了对 twosuperior 和 threesuperior (keycode 41) 以及 grave (keycode 43) 的支持。

通常,loadkeys 命令会在启动时从位于以下目录中的脚本启动:/etc/rc.d。 不同的发行版处理方式不同。 大多数发行版都有一个简单的程序(例如 Red Hat 中的 kbdconfig,Debian 中的 install-keymap 或 SuSE 中的 yast)来更改这些脚本的行为。

2.1.2. XFree86

要在 XFree86 环境下正确设置键盘,你有更多选择。 通过运行 Xconfigurator(或类似的程序),将创建一个 XFree86 的配置文件(带有一些标准行为)。 该文件名为XF86Config-4或者XF86Config通常位于/etc/X11或者/etc

确保(并更改,否则)在键盘部分下给出了类似的内容。
	Section "Keyboard"
		Protocol        "Standard"
		XkbRules        "xfree86"
		XkbModel        "pc101"
		XkbLayout       "be"
	EndSection

如果你拥有“microsoft”键盘(或不太知名的 penguin 键盘;p),你可以通过将“pc101”更改为“pc104”来启用额外的 3 个键。(我在我的窗口管理器中使用额外的键作为 meta 键,这样一些快捷键就不会与我的窗口管理器的内部快捷键冲突)。

要在 XFree86 环境下使 AltGr 键工作,只需在键盘部分中添加:
	RightAlt        ModeShift

2.1.3. 组合键

有些人喜欢使用“组合”键来输入他们的特殊字符,例如
	Compose-' e    =>    �
	Compose-/ o    =>    �
	Compose-c ,    =>    �
	Compose-c o    =>    �
	Compose-s s    =>    �
对于 XFree86,解决方案是输入xmodmap -e "keycode xx = Multi_key"或者xmodmap -e "keysym yy = Multi_key"其中“xx”是键代码,而“yy”是你选择作为“组合”键的键的键符号。(使用 xev 获取这些值)

或者,你可以添加keycode xx = Multi_key到你的~/.xmodmaprc。 这样它就会自动发生。

对于控制台,你可以使用 loadkeys 执行类似的操作。echo "altgr keycode 52 = Compose" | loadkeys以使用 AltGr-/ 作为“组合”键。

2.2. 显示和应用程序

某些应用程序必须编译为 8 位清除才能与欧洲字符集良好配合。 其他应用程序则希望提前告知。

2.2.1. 在控制台中使用 ISO-8859-1 字体

你可以通过在控制台中键入以下内容来加载 ISO-8859-1 字体
	setfont lat1u-16.psf
	mapscrn trivial
	echo -ne '\033(K'

为了能够在控制台中使用 �、�、� 或 �,你可能需要将它们添加到你的~/.inputrc:
	set meta-flag on
	set convert-meta off
	set output-meta on
(如果要使所有用户的默认设置都如此,则必须为每个用户执行此操作,你可以将此文件添加到/etc/skel/或者你可以将这些行添加到/etc/inputrc并将以下内容添加到/etc/bashrc, export INPUTRC=/etc/inputrc)

Note注意!
 

这仅对使用 readline 的程序有用(例如 bash

还要设置以下环境变量
	LC_CTYPE=iso-8859-1
	SYSFONT=lat1u-16.psf
	SYSTERM=linux

2.2.2. 支持欧元符号

由于欧洲不得不发明一个新的字符,欧元符号,因此出现了一个新的标准。 它被称为 ISO-8859-15(又名 Latin-9 或 Latin-0)。 要添加支持,你需要新的字体和新的键位图。 这如今已成为每个主要发行版的一部分,如果你使用的是较旧的发行版,则可能需要更新的 console-tools 软件包。

欧元字符支持迷你 HOWTO 中有更多信息

2.3. 时区

由于比利时位于中欧时区(又名 MET),它(在冬季)相当于格林威治标准时间加 1 (GMT+1),你可以简单地链接/usr/lib/zoneinfo/localtime/MET/etc/localtime,象征性地像这样ln -sf /usr/lib/zoneinfo/MET /etc/localtime或者ln -sf /usr/lib/zoneinfo/Europe/Brussels /etc/localtime这会自动设置夏令时(夏季为 GMT+2)。

Note注意!
 

不同的发行版有不同的路径,zoneinfo 可能位于/usr/share或类似位置...

Note另一个注意事项!
 

Red Hat 使用一个名为 timeconfig 的工具,SuSE 使用 yast

要更改 CMOS 时钟,然后将系统时间与 CMOS 时钟同步,请执行以下操作
	hwclock --set --date="Feb 25 03:38"
	clock -u -s
如果你的时钟设置为本地时间(不建议这样做,但如果你也运行损坏的操作系统,则必须这样做),你可以执行
	hwclock --set --date="Feb 25 04:38"
	clock -s
[注意到 1 小时的时差了吗? ;p]

如果你的计算机可以访问互联网,你可以使用 NTP(网络时间协议)来保持系统时钟同步。 一种方法是通过从 cron 启动 ntpdate,方法是添加
	05 0 * * * root /usr/sbin/ntpdate -s ntp.belnet.be > /dev/null 2>&1
到你的 /etc/crontab 中。 查看下面的 ISP 信息,以查看你的 ISP 是否有可用的 NTP 服务器。

2.4. 区域设置支持

没有太多程序支持区域设置,如果你想了解有关区域设置的更多信息,或者如何编写自己的程序来支持它,请查看:[在此处放置该死的网址;p]

请注意,区域设置会使解决问题变得更加困难,因为可以帮助你的人更少!! 当问题以技术英语出现时,你可能会理解,但如果它被翻译成一些晦涩的荷兰语,又会怎样呢?

2.4.1. 荷兰语

要在具有区域设置支持的系统上为比利时的荷兰语区域设置启用支持,你只需设置以下环境变量
	LANG=nl
	LANGUAGE=nl_BE
如果 nl_BE 不起作用,请尝试 nl_BE.ISO_8859-1。

2.4.2. 法语

如果你想要比利时的法语区域设置支持,请设置以下环境变量
	LANG=fr
	LANGUAGE=fr_BE
如果 fr_BE 不起作用,请尝试 fr_BE.ISO_8859-1。

2.4.3. 德语

如果你想要比利时的德语区域设置支持,请设置以下环境变量
	LANG=de
	LANGUAGE=de_BE
如果 de_BE 不起作用,请尝试 de_BE.ISO_8859-1。

2.4.4. 瓦隆语

对于瓦隆语区域设置支持,你可以在以下位置找到文件和信息:http://chanae.stben.be/linux/locales/walon/。 要使用它,请设置
	LANG=wa
	LANGUAGE=wa_BE:fr_BE
如果 wa_BE 不起作用,请尝试 wa_BE.ISO_8859-1。

2.5. 本地语言支持和代码页

这些选项添加了对比利时字符集和代码页的支持。 如果你想要这些支持,请编译一个启用这些选项的内核。 它们仅适用于某些文件系统(基于 FAT 的文件系统、ISO9660 等)。
	< > Codepage 850 (Europe) 
	< > NLS ISO 8859-1  (Latin 1; Western European Languages)  
	< > NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)
位于文件系统 > 本地语言支持

如果你的内核是发行版附带的模块化内核(=你以前从未编译过内核),那么你可能需要键入
	insmod nls_cp850
	insmod nls_iso8859_1
	insmod nls_iso8859_15

2.6. Ispell

由 Dany Vanderroost 贡献

2.6.1. 安装和设置

Ispell 由不同的组件组成:主软件和一个或多个字典。 默认字典是/usr/lib/ispell/english.hash。 要覆盖此默认值,你有 2 个选项。 你可以设置DICTIONARY变量或使用“-d”选项启动它。

你可以在你的主目录中创建自定义字典,例如~/.ispell_english.

2.6.2. 荷兰语

	export DICTIONARY=nederlands
或者
	ispell -d nederlands file_name

2.6.3. 法语

	export DICTIONARY=francais
或者
	ispell -d francais file_name

2.6.4. 德语

	export DICTIONARY=deutsch
或者
	ispell -d deutsch file_name

2.6.5. 瓦隆语

	export DICTIONARY=walon
或者
	ispell -d walon file_name

2.6.6. 多语言拼写

默认情况下,Ispell 不会使用多个字典,但解决方案是使用~/.ispell_words文件。

如果你不想使用 Ispell 的多实例,你可以通过以下方式构建~/.ispell_words使用 words 包:cp /usr/dict/words ~/.ispell_words; chmod +w ~/.ispell_words.

2.7. 设置互联网

2.7.1. 使用调制解调器拨号 (PPP)

要正确配置 PPP,你应该查看 PPP-HOWTO。 我将尝试简要解释一下,但是如果你有任何疑问或问题,请仔细阅读 HOWTO。

2.7.1.1. 配置调制解调器

要配置你的调制解调器,你可以更改调制解调器的初始化字符串。 要了解有关调制解调器的更多信息,请查看 Ask Mr. Modem

Warning

如果你有 winmodem,你可能无法使其工作。 有关 winmodem 的更多信息,请访问:http://linmodems.org/。 工作正在进行中,但是 winmodem 不如真正的调制解调器好。

2.7.1.2. 安装 pppd

现在,你需要安装 ppp 软件包(通过键入以下命令检查这一点pppd --version),确保你有一个最新的软件包。 然后你必须确保你拥有这些文件

/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"
你可以删除-v一旦一切看起来正常。

pppd 命令使用/etc/ppp/options列出其选项,将这些选项更改为任何适合的选项。 这些默认值通常在大多数情况下都有效。
	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
一旦拨号像魅力一样工作,你可以删除debug

Warning

重要的是要强调,每个特殊字符,即每个不是 [a-ZA-Z0-9] 和 '_' 的字符,都应该通过在其前面加上“\”字符来转义。 因此,“e!b$l+”将变为“e\!b\$l\+”。 如果你遇到问题,请尝试一下!

2.7.1.3. pap-secrets / chap-secrets

如果你的 ISP 需要 CHAP 或 PAP,你需要其中一个文件及其正确的用户名和密码

/etc/ppp/pap-secrets或者/etc/ppp/chap-secrets
	#client         server  secret          IP      
	your_login      *       your_pass       *

2.7.1.4. 网络

要配置你的名称服务器,请更改/etc/resolv.conf。 如果拨号成功,但你无法连接到 URL:这可能是原因。
	domain domain_of_your_isp
	nameserver your_primary_nameserver
	nameserver your_secondary_nameserver

2.7.1.5. 文件权限

在你运行(shell)脚本之前,必须将其设置为可执行。 确保你设置了权限,以便其他用户无法看到存储在文件中的密码。 如果你希望其他用户能够拨号,你可能需要考虑使用 sudo。 你可能需要执行以下操作
	chmod u+rw og-rwx -R /etc/ppp
	chmod u+x /etc/ppp/ppp-on-dialer /usr/local/bin/ppp

2.7.1.6. 拨号 + 挂断

然后如果/usr/local/bin在你的PATH中,你可以轻松地拨号,使用ppp on,挂断,使用ppp off,要获取一些统计信息,你可以执行ppp status.

2.7.2. 使用 ISDN 调制解调器拨号

由 Christophe Lambin 贡献

本节并非旨在成为 Linux ISDN 的权威指南。 有关该主题的更详细讨论,请参阅 Paul Slootman 的 ISDN4Linux HOWTOISDN4Linux-FAQ

2.7.2.1. 更新内核

如果你使用的是 2.2 内核,建议获取 ISDN 代码的更新版本。 你可以从 CVSftp://ftp.suse.com/pub/isdn4linux/ 检索它。 有关更多信息,请查看:http://www.brisse.dk/site/linux/docs/isdn.htm

Warning

如果你最近购买了 Eicon Diva 2.0 PCI(例如,通过 Belgacom),则很有可能你实际上拥有 Diva 2.01。在这种情况下,你必须获取 1999 年 7 月 1 日或之后的版本!

一旦 ISDN 就位,你就可以启动驱动程序。 例如modprobe hisax type=11 protocol=2请参阅 Readme 以了解你的卡的正确参数和值。

2.7.2.2. ISDN4Linux 工具包

接下来,你需要 ISDN4Linux 工具包。 你可以在以下位置检索工具包的最新版本:ftp://ftp.suse.com/pub/isdn4linux/

2.7.2.3. 配置接口

安装并配置工具后,编写一个脚本来配置接口,以用于 ISDN 连接。 与 Linux 中的情况一样,没有一种正确的方法可以做到这一点。 我已将这些放在脚本中

/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

要在启动时启动它,请使其可执行并将以下内容附加到/etc/rc.d/rc.local:
	if [ -x /etc/rc.d/rc.isdn ]; then
		. /etc/rc.d/rc.isdn
	fi

ipppd 命令通过文件传递其参数,/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

Warning

请勿在此文件中指定 +pap 或 +chap。 这指定 ipppd 应用于传入客户端的身份验证。 如果你要使用它连接到你的 ISP,则 ipppd 将等待 ISP 使用指定的协议对其自身进行身份验证。

Warning

重要的是要强调,每个特殊字符,即每个不是 [a-ZA-Z0-9] 和 '_' 的字符,都应通过在其前面加上“\”字符来转义。 因此,“e!b$l+”将变为“e\!b\$l\+”。 如果你遇到问题,请尝试一下!

最后,创建/etc/ppp/ip-down.local以处理接口的关闭
	#!/bin/sh

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

Note注意!
 

这是为了处理关闭时路由的一些问题。 有人知道更干净的解决方案吗?

2.7.2.4. pap-secrets / chap-secrets

如果你的 ISP 使用 PAP 或 CHAP,请创建一个文件/etc/ppp/pap-secrets或者/etc/ppp/chap-secrets。 其格式为
	#client         server  secret          IP      
	your_login      *       your_pass       *

2.7.2.5. 网络

ISDN 并非真正相关,但是很多人都忘记了这一步(太渴望尝试他们在上面键入的所有内容? :-))。

无论如何,你需要通过创建文件来配置 DNS/etc/resolv.conf:
	domain your_domain_of_your_isp
	nameserver your_primary_nameserver
	nameserver your_secondary_nameserver

2.7.2.6. 文件权限

在你运行(shell)脚本之前,必须将其设置为可执行。 确保你设置了权限,以便其他用户无法看到存储在文件中的密码。 如果你希望其他用户能够拨号,你可能需要考虑使用 sudo。 你可能需要执行以下操作
	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. 拨号 + 挂断

最后,你可以编写一个小包装器来启动和停止 ISDN 连接。 我已将其作为 /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

然后如果/usr/local/bin在你的PATH中,你可以轻松地拨号,使用isdn on,挂断,使用isdn off.