Linux 提供了两种设置键盘的方法。在控制台,你可以使用 loadkeys 命令,而在 XFree86 环境下,你可以使用 xmodmap 命令。
要使用比利时键盘的键位表,你可以使用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)来更改这些脚本的行为。
要在 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 |
有些人喜欢使用“组合”键来输入他们的特殊字符,例如
Compose-' e => � Compose-/ o => � Compose-c , => � Compose-c o => � Compose-s s => � |
或者,你可以添加keycode xx = Multi_key到你的~/.xmodmaprc。 这样它就会自动发生。
对于控制台,你可以使用 loadkeys 执行类似的操作。echo "altgr keycode 52 = Compose" | loadkeys以使用 AltGr-/ 作为“组合”键。
某些应用程序必须编译为 8 位清除才能与欧洲字符集良好配合。 其他应用程序则希望提前告知。
你可以通过在控制台中键入以下内容来加载 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 |
![]() | 注意! |
---|---|
这仅对使用 readline 的程序有用(例如 bash) |
还要设置以下环境变量
LC_CTYPE=iso-8859-1 SYSFONT=lat1u-16.psf SYSTERM=linux |
由于欧洲不得不发明一个新的字符,欧元符号,因此出现了一个新的标准。 它被称为 ISO-8859-15(又名 Latin-9 或 Latin-0)。 要添加支持,你需要新的字体和新的键位图。 这如今已成为每个主要发行版的一部分,如果你使用的是较旧的发行版,则可能需要更新的 console-tools 软件包。
在 欧元字符支持迷你 HOWTO 中有更多信息
由于比利时位于中欧时区(又名 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)。
![]() | 注意! |
---|---|
不同的发行版有不同的路径,zoneinfo 可能位于/usr/share或类似位置... |
![]() | 另一个注意事项! |
---|---|
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 |
如果你的计算机可以访问互联网,你可以使用 NTP(网络时间协议)来保持系统时钟同步。 一种方法是通过从 cron 启动 ntpdate,方法是添加
05 0 * * * root /usr/sbin/ntpdate -s ntp.belnet.be > /dev/null 2>&1 |
没有太多程序支持区域设置,如果你想了解有关区域设置的更多信息,或者如何编写自己的程序来支持它,请查看:[在此处放置该死的网址;p]
请注意,区域设置会使解决问题变得更加困难,因为可以帮助你的人更少!! 当问题以技术英语出现时,你可能会理解,但如果它被翻译成一些晦涩的荷兰语,又会怎样呢?
要在具有区域设置支持的系统上为比利时的荷兰语区域设置启用支持,你只需设置以下环境变量
LANG=nl LANGUAGE=nl_BE |
对于瓦隆语区域设置支持,你可以在以下位置找到文件和信息:http://chanae.stben.be/linux/locales/walon/。 要使用它,请设置
LANG=wa LANGUAGE=wa_BE:fr_BE |
这些选项添加了对比利时字符集和代码页的支持。 如果你想要这些支持,请编译一个启用这些选项的内核。 它们仅适用于某些文件系统(基于 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 |
由 Dany Vanderroost 贡献<danyv@euronet.be>
要正确配置 PPP,你应该查看 PPP-HOWTO。 我将尝试简要解释一下,但是如果你有任何疑问或问题,请仔细阅读 HOWTO。
要配置你的调制解调器,你可以更改调制解调器的初始化字符串。 要了解有关调制解调器的更多信息,请查看 Ask Mr. Modem。
![]() | 如果你有 winmodem,你可能无法使其工作。 有关 winmodem 的更多信息,请访问:http://linmodems.org/。 工作正在进行中,但是 winmodem 不如真正的调制解调器好。 |
现在,你需要安装 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" |
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 |
![]() | 重要的是要强调,每个特殊字符,即每个不是 [a-ZA-Z0-9] 和 '_' 的字符,都应该通过在其前面加上“\”字符来转义。 因此,“e!b$l+”将变为“e\!b\$l\+”。 如果你遇到问题,请尝试一下! |
如果你的 ISP 需要 CHAP 或 PAP,你需要其中一个文件及其正确的用户名和密码
/etc/ppp/pap-secrets或者/etc/ppp/chap-secrets
#client server secret IP your_login * your_pass * |
要配置你的名称服务器,请更改/etc/resolv.conf。 如果拨号成功,但你无法连接到 URL:这可能是原因。
domain domain_of_your_isp nameserver your_primary_nameserver nameserver your_secondary_nameserver |
由 Christophe Lambin 贡献<clambin@skynet.be>
本节并非旨在成为 Linux ISDN 的权威指南。 有关该主题的更详细讨论,请参阅 Paul Slootman 的 ISDN4Linux HOWTO 和 ISDN4Linux-FAQ。
如果你使用的是 2.2 内核,建议获取 ISDN 代码的更新版本。 你可以从 CVS 在 ftp://ftp.suse.com/pub/isdn4linux/ 检索它。 有关更多信息,请查看:http://www.brisse.dk/site/linux/docs/isdn.htm
![]() | 如果你最近购买了 Eicon Diva 2.0 PCI(例如,通过 Belgacom),则很有可能你实际上拥有 Diva 2.01。在这种情况下,你必须获取 1999 年 7 月 1 日或之后的版本! |
一旦 ISDN 就位,你就可以启动驱动程序。 例如modprobe hisax type=11 protocol=2请参阅 Readme 以了解你的卡的正确参数和值。
接下来,你需要 ISDN4Linux 工具包。 你可以在以下位置检索工具包的最新版本:ftp://ftp.suse.com/pub/isdn4linux/
安装并配置工具后,编写一个脚本来配置接口,以用于 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 |
![]() | 请勿在此文件中指定 +pap 或 +chap。 这指定 ipppd 应用于传入客户端的身份验证。 如果你要使用它连接到你的 ISP,则 ipppd 将等待 ISP 使用指定的协议对其自身进行身份验证。 |
![]() | 重要的是要强调,每个特殊字符,即每个不是 [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 |
![]() | 注意! |
---|---|
这是为了处理关闭时路由的一些问题。 有人知道更干净的解决方案吗? |
如果你的 ISP 使用 PAP 或 CHAP,请创建一个文件/etc/ppp/pap-secrets或者/etc/ppp/chap-secrets。 其格式为
#client server secret IP your_login * your_pass * |
与 ISDN 并非真正相关,但是很多人都忘记了这一步(太渴望尝试他们在上面键入的所有内容? :-))。
无论如何,你需要通过创建文件来配置 DNS/etc/resolv.conf:
domain your_domain_of_your_isp nameserver your_primary_nameserver nameserver your_secondary_nameserver |
在你运行(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 |
最后,你可以编写一个小包装器来启动和停止 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.