Once upon a time on a Thinkpad A31p wolfgang.loeffler@unibas.ch This is the true story of a valiant hero, who sallied forth to do battle with GNU/Debian Linux on an IBM Thinkpad A31p. Please note that this is really nothing but an amusing story for your entertainment. Nothing else. Particularly, it is not to be mistaken for a manual or somesuch giving you instructions on how to install linux on your laptop. To put it in different words: Don’t even think about blaming me for your very own actions.
Contents iii Contents 1. Once upon a time on a Thinkpad A31p 1. 1. Hardware Information . . . . 1. 2. Unsolved Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 2. Preparation Work . . . . . . . . . 2. 1. Removing the Stickers . . . . . . . 2. 2. Backup of the Thinkpad Service Partion . . 2. 3. Tools for the Creation of the Hibernation File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
iv Contents 5. 9. PCMCIA-CS . . . . . . . . . 5. 10. Sub-Pixel Font-Rendering . . . . . 5. 11. Xprint — the X11 print system . . . . 5. 12. Mozilla . . . . . . . . . . . 5. 13. tpb (ThinkPad Buttons) . . . . . . 5. 14. Intel Fortran Compiler . . . . . . 5. 15. Linux WLAN . . . . . . . . . 5. 15. 1. Special Case: The USR-2410 PC Card 5. 16. Cisco VPN Client . . . . . . . . 5. 17. CD Recording as non-root User . . . . 5. 18. External Firewire Hard Disk . . . . . 6. Manual System Configuration . . . . . . 6.
1 Once upon a time on a Thinkpad A31p This is the true story of a valiant hero, who sallied forth to do battle with GNU/Debian Linux on an IBM Thinkpad A31p. Please note that this is really nothing but an amusing story for your entertainment. Nothing else. Particularly, it is not to be mistaken for a manual or somesuch giving you instructions on how to install linux on your laptop. To put it in different words: Don’t even think about blaming me for your very own actions. Think before you type.
2 1. Once upon a time on a Thinkpad A31p Video Chipset: ATI Mobility FireGL 7800 with 64MB DDR RAM and 4xAGP bus — ATI Radeon Mobility M6 compatible Audio Chipset: Intel 82801CAM (ICH3-M) with AC’97 codec — i801 compatible IDE Controller: Intel 82801CAM (ICH3-M) — PIIXn compatible Harddisk: IBM Travelstar 60GH ATA-5 with 60.
2 Preparation Work 2. 1. Removing the Stickers Once upon a time computers were delivered unadorned. Nowadays you will find any number of stupid stickers glued to the machine in prominent places, informing you about what kind of operating system the machine was originally designed for and what brand of processor it sports. Until a few years ago, these stickers were only mildly adhesive and could be removed without too much hassle. Not so with our new Thinkpad.
4 2. Preparation Work After having booted from the Debian installation CD-ROM and having selected our favourite language as well as keyboard layout, we launch a text console by pressing and then . First, we use cfdisk to save the original layout of the partitions. We probably need this information, if we would later like to recreate the service partition.
2. 3. Tools for the Creation of the Hibernation File 5 We will have to execute phdisk.exe after we have installed Linux. Therefore we also need some “microsoftish” operating system, which can boot our Thinkpad from the CR-ROM drive. For this purpose, we download the bootable Ripcord ISO-image from FreeDOS and put it on a CD-R.
6 2.
3 Installation of the Debian Base System 3. 1. Partitioning the Hard Disk One of the biggest questions while installing Linux is: How should we partion our hard disk? One one hand, the more separate (read-only) partitions we have, the better we can protect the system. On the other hand, more separate partitions mean that we have to estimate our needs beforehand, i.e. now. Making use of Logical Volume Management simplifies matters greatly, since LVM allows us to resize partitions later.
8 3. Installation of the Debian Base System due to geometric constraints of the drive. Lastly note: It may be a good idea to reserve a large enough partition for the preparation of CD-R images. To create the hibernation partition, we need to run phdisk.exe from a DOS partition.
3. 3. Configuration of the Keyboard /dev/hda4 hibernation 9 577MB 619.32MB Intended: 8MB 512MB 577MB rest 64MB rest Actual: 15.49MB 541.91MB 619.32MB A0 IBM Thinkpad Hibernation We use fdisk and repartition into: Fourth preliminary partition layout: Partition: /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 /dev/hda5 /dev/hda6 Purpose: /boot preliminary hibernation extended / LVM 69.68MB 58765.
10 3. Installation of the Debian Base System #> cp /usr/share/keymaps/i386/include/euro.inc.gz . #> mv uk.kmap.gz uk−mod.kmap.gz #> gunzip uk−mod.kmap.gz Then we modify uk-mod.kmap and set: Modification of /etc/console/uk-mod.kmap: keycode 29 = Compose keycode 58 = Control Finally we gzip things together again, update the symlink and load the new keymap: Installing the new keyboard layout: #> #> #> #> gzip uk−mod.kmap.gz mv boottime.kmap.gz boottime.kmap.gz.ORI ln −s uk−mod.kmap.gz boottime.kmap.
3. 5. Configuration of LVM 11 Kernel Config for LVM support: —— Multi−Device Support (RAID and LVM) —— yes Multiple devices driver support (RAID and LVM) yes Logical volume manager (LVM) support Compiling and installing the new kernel: #> #> #> #> #> #> #> #> cd /usr/src tar xjf kernel−source−2.4.18.tar.bz2 cd kernel−source−2.4.18 make menuconfig make−kpkg clean make−kpkg −rev Custom.1 kernel_image cd .. dpkg −i kernel−image_2.4.
12 3.
4 Configuration of the Custom Kernel 4. 1. Kernel Configuration Summary Everytime we buy a new laptop, we are amazed about the lack of useful documentation about the actual hardware configuration and its capabilities. IBM’s customer support website features an overwhelming amount of downloadable information — which turns out to be mostly irrelevant or dumbed down beyond any usefulness. Our current kernel configuration is based on many guesstimates. It seems to work, though.
14 4.
4. 2.
16 4. Configuration of the Custom Kernel Kernel configuration for VESA framebuffer: —— Console Drivers —— yes VGA text console yes Video mode selection support —— Frame−buffer support —— yes Support for frame buffer devices yes VESA VGA graphics console VESA Video Modes: Mode: 0x318 0x31b 0x374 LILO: vga=792 vga=795 vga=884 Graphics: 1024x 768 1280x1024 1600x1200 Text: 128x48 160x64 200x74 Video mode confguration in /etc/lilo.
4. 6. Hotplug (Modem, Ethernet, Scanner) mod 17 ATI Radeon At boot time, somebody or something tries to access DRI but does not how to do so. This produces the error message: DRI module error message: [date] [machine] modprobe: Can’t locate module−char−major−226 To help out, we create the file /etc/modutils/dri and update /etc/modules.conf. /etc/modules/dri: alias char−major−226 radeon # DRI Updating /etc/modules.conf: #> update−modules 4. 5.
18 4.
4. 9. Ethernet 19 /etc/alsa/modutils/0.
20 4. Configuration of the Custom Kernel If we want that the modular ethernet driver is loaded automagically, we have to create the file /etc/modutils/eth0 and then update /etc/modules.conf: /etc/modutils/eth0: alias eth0 eepro100 # kernel ethernet driver for EtherExpressPro/100 Updating /etc/modules.conf: #> update−modules 4. 9. 1. Intel PRO/100 Adapter Base Driver Intel offers an alternate driver for the PRO/100 ethernet controllers.
4. 13. SCSI (DVD/CD-RW, Scanner) 21 4. 11. Bluetooth Bluetooth is attached via the Intel 82801CAM (ICH3-M) USB controllers. This setup is supported by BlueZ, the Official Linux Bluetooth Protocol Stack. As we don’t have any bluetooth devices, we don’t configure Bluetooth. 4. 12. IDE (Disk) The IDE controller is an Intel 82801CAM (ICH3-M). The hard disk is an IBM Travelstar 60GH ATA-5 with 60.01GB capacity. The controller seems to be similar to the Intel PIIX4 chipset.
22 4. Configuration of the Custom Kernel Update of /etc/lilo.conf: image=/boot/vmlinuz label=linux read−only vga=792 append="hdc=ide−scsi" The DVD/CD-RW drive shows up as Host: scsi0 Channel: 00 Id: 00 Lun: 00 and as the first SCSI CD-ROM, i.e. /dev/scd0. For convenience, we install symlinks for /dev/cdrom, /dev/dvd and /dev/cdrw.
4. 16. Thinkpad Control Tools 23 /etc/modutils/lvm: alias alias alias block−major−8 block−major−33 block−major−34 off off off # SCSI disks # 3rd IDE controller # 4th IDE controller Updating /etc/modules.conf: #> update−modules Note: We have to be careful about the block-major-8 entry and should probably remove it, if we want to access IEEE1394 FireWire hard disks. 4. 15. APM (Suspend & Hibernate) Thanks to our acrobatics while partitioning the hard disk, everything works now out of the box.
24 4. Configuration of the Custom Kernel 4. 17. Thinkpad Buttons Another nice program is tpb (ThinkPad Buttons), which monitors volume, brightness and other settings by analysing the NVRAM. If we want to make use of this tool, we have to configure the kernel for NVRAM support.
5 Debian and other Software Packages 5. 1. Updating Debian Keeping our Debian system up to date is very simple. We only need to configure apt for network updates. To this end, we install the apt-spy package and run apt-spy to find the fastest Debian mirrors. Then we edit /etc/apt/ sources.list. Downloading and installing the latest Debian updates is then as simple as issuing the two commands apt-get update and apt-get upgrade. Debian Packages for Finding Fast Debian Mirrors: apt−spy /etc/apt.
26 5. Debian and other Software Packages 5. 2. Local Debian Tree The Debian distribution is currently organised along three releses: “stable” (a.k.a. “woody”), “testing” (a.k.a. “sarge”) and “unstable” (a.k.a. “sid”). Under normal circumstances and for most purposes we want to install packages from “woody” only, which corresponds to the default setup. As its label implies, “woody” is stable and does therewith not represent the bleeding edge of new development. In most cases, this does not matter.
5. 4. Debian Source Packages (Gendroolification ;-) 27 The Debian Packages web-page is a good starting point to find all the packages we need (and their dependencies). Debian Packages for gcc 3.2.1: gcc−3.2 gcc−3.2−base libgcc1 cpp−3.2 libc6 libc6−dev locales libdb1−compat binutils modutils (1:3.2.1−0pre3) (1:3.2.1−0pre3) (1:3.2.1−0pre3) (1:3.2.1−0pre3) (2.2.5−14.3) (2.2.5−14.3) (2.2.5−14.3) (2.1.3−7) (2.13.90.0.10−1) (2.4.19−3) Downloading and Installing gcc 3.2.
28 5. Debian and other Software Packages First we have to configure the system for this kind of “gendroolification”. To do so, we install some additional apt packages and pentium-builder: Debian Packages for Gendroolification: apt−show−source apt−show−versions pentium−builder We have written a small shell script to simplify the configuration of the gcc-wrapper builder-cc.
5. 6. Xi Graphics Accelerated-X Server 29 #> mv zlib1g*.deb ../binary−i386/local #> echo "zlib1g optional local" >> /usr/local/debian/override.local #> echo "zlib1g−dev optional local" >> /usr/local/debian/override.local #> rm −rf zlib* #> #> apt−get source libgdbmg1 #> apt−get build−dep libgdbmg1 #> cd gdbm−1.7.3 #> dpkg−buildpackage #> cd .. #> mv libgdbmg1*.deb ../binary−i386/local #> echo "libgdbmg1 optional local" >> /usr/local/debian/override.
30 5. Debian and other Software Packages #> make install #> modprobe xsvc modprobe barfs an informal message that loading this module will taint the kernel. This can be safely ignored. It just means that we should not bother the linux kernel developers, if and when things go wrong with the kernel after loading this module. Modprobe warning about XiG kernel module: Warning: loading /lib/modules/2.4.18/misc/xsvc.o will taint the kernel: no license More important is the output of the module itself.
5. 7. XFree86 4.2.1 Radeon Server 31 Removing the XiG server is also simple and easy: Removing the XiG Accelerated-X server: #> #> #> #> #> #> #> #> cd /usr/local/stow stow −D −−target=/usr XiG cd ../packages rm −rf XiG rm /etc/Xaccel.ini dpkg−divert −−remove /usr/X11R6/lib/libGL.so.1.2 dpkg−divert −−remove /usr/X11R6/lib/libGLU.so.1.3 ldconfig 5. 7. XFree86 4.2.1 Radeon Server Lo and behold! The XFree86 4.2.
32 5.
5. 8. Laptop-Net 33 Addition of Intel e100 driver to /etc/default/laptop-net: # MODULE_NAME="eepro100" MODULE_NAME="e100" Addition of Intel e100 driver to /usr/share/laptop-net/shared.
34 5.
5. 8. Laptop-Net 35 Now we go to the rc.d directories and create the new symlinks by hand. Creating the new startup/shutdown symlinks (example): #> #> #> #> #> cd /etc/laptop−net/profiles mkdir −p work/rc.d home/rc.d xxx−default/rc.d cd work/rc.d ln −s ../../../init.d/ssh S20ssh ln −s ../../../init.d/ssh K20ssh Now we have a problem with ifd, the daemon which watches the status of our ethernet adapter.
36 5. Debian and other Software Packages All in all, our installation of laptop-net is hideous and slow. But it works. 5. 9. PCMCIA-CS Although we don’t need to compile any kernel modules from the pcmcia-cs packge, we want to compile the corresponding tools. The reason herefore is simple: The pcmcia tools distributed in the binary package are not “trusting”, i.e. we can not change the pcmcia schemes as a normal user.
5. 10. Sub-Pixel Font-Rendering 37 5. 10. Sub-Pixel Font-Rendering Sub-Pixel Font-Rendering is a Good Thing™. It’s actually an old idea, whose time has finally come or will come really soon now on a LCD display near you. To triple the horizontal screen resolution for font rendering right now, we have to install XFree86 4.2.1 and then compile and install the new font configuration scheme fontconfig and update the X Render Extension together with libXft.
38 5. Debian and other Software Packages #> #> #> #> #> #> #> #> #> #> #> #> #> #> #> #> #> #> #> dpkg−divert −−remove /usr/include/X11/Xft/Xft.h rm /usr/X11R6/lib/libXrender.so rm /usr/X11R6/lib/libXrender.so.1.1 rm /usr/X11R6/lib/libXrender.a rm /usr/include/X11/extensions/Xrender.h rm /usr/include/X11/extensions/extutil.h rm /usr/include/X11/extensions/region.h rm /usr/include/X11/extensions/render.h rm /usr/include/X11/extensions/renderproto.h dpkg−divert −−remove /usr/X11R6/lib/libXrender.
5. 12. Mozilla #> #> #> #> #> 39 mv init.d/xprint laptop−net/init.d rmdir init.d cd /usr/local/stow ln −s ../packages/xprint . stow −v −−target=/ xprint The number in the name of the tar-ball will depend of the exact building date. To use the Xprint server, we have to add two variables to the environment: /etc/environment: # xprint server export XPSERVERLIST="‘/etc/laptop−net/init.
40 5. Debian and other Software Packages Mozilla Configuration File ˜/mozconfig: # sh # Build configuration script # # See http://www.mozilla.org/build/unix.html for build instructions. # # Options for ’configure’ (same as command−line options). ac_add_options −−prefix=/usr/local/packages/mozilla−1.
5. 13. tpb (ThinkPad Buttons) 41 fi if [ −x $MOZILLA_HOME/bin/mozilla ]; then exec $MOZILLA_HOME/bin/mozilla "$@" else echo "$MOZILLA_HOME/bin/mozilla not found." exit 1 fi exit 1 5. 13. tpb (ThinkPad Buttons) tpb is a clever program, which analyses the content of the NVRAM to monitor the volume and brightness settings, thinklight and many things more. It also lets us attach a shell command to the key. To write the information to blend the status informations into the screen tpb uses xosd.
42 5. Debian and other Software Packages #> #> #> #> #> mv tpb tpb.bin vi tpb cd /usr/local/stow ln −s ../packages/tpb−0.4.1 . stow −v tpb−0.4.1 /usr/local/packages/tpb-0.4.1/bin/tpb: #!/bin/sh /usr/local/bin/tpb.bin −−config=/usr/local/etc/tpbrc $@ & 5. 14. Intel Fortran Compiler Since we use our machine for scientific number crunching, we need a decent Fortran compiler. The combo f2c plus fort77 is way too slow and g77 had a few numerical problems last time we checked.
5. 15. Linux WLAN 43 LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH fi export LD_LIBRARY_PATH export −n IA32ROOT; unset IA32ROOT; if [ $# != 0 ] then exec −a "/usr/local/bin/ifc" /usr/local/bin/ifcbin "$@"; else exec −a "/usr/local/bin/ifc" /usr/local/bin/ifcbin; fi exit 5. 15. Linux WLAN Our router wants us to connect via DHCP.
44 5. Debian and other Software Packages #> depmod −a Edit of /usr/src/modules/linux-wlan-ng-0.1.15/debian/rules: # line 29: # export DH_OPTIONS=−p$(PACKAGE) −−mainpackage=$(PACKAGE) export DH_OPTIONS=−p$(PACKAGE) # line 105: # kdist_config: kdist_configure: Note: In later versions of the linux-wlan-ng package (e.g. version 0.2.0-9) the automagic installation of the kernel modules is completely f. . .ed up.
5. 15. 1. Special Case: The USR-2410 PC Card 45 Diverting /etc/pcmcia/wlan-ng: #> dpkg−divert −−rename /etc/pcmcia/wlan−ng New /etc/pcmcia/wlan-ng: #!/bin/sh exit The next problem is that the standard WLAN tools called by ifup don’t handle the WEP encryption for the linuxwlang-ng drivers correctly.
46 5. Debian and other Software Packages fi ;; *) SCHEME=‘cat $SCHEMEFILE | sed "s/−/ /" | awk ’{print $2}’‘ SCHEMES=‘grep iface /etc/network/interfaces | grep wlan0 | sed "s/−/ /" | awk ’{ printf "%s ", $3}’‘ echo "Usage: wlan0 [up|start|down|stop|restart|scheme [xyz]]" echo "where xyz is one of: $SCHEMES" echo "Current scheme is: $SCHEME" ;; esac This script includes the standard linux-wlan-ng configuration files in /etc/wlan. We set the SSID of our access point in /etc/wlan/wlan.conf: /etc/wlan/wlan.
5. 17. CD Recording as non-root User 47 5. 16. Cisco VPN Client There exists a piece of software called vpnclient, which lets us establish a secure, end-to-end encrypted tunnel to any Cisco central site remote access VPN product. This piece of software does even exist for Linux. Of course it does not work out of the box (at least not our version 3.7.2). After unpacking the tar-ball, we have a look at the file interceptor.c, more precisely at the function supported_device.
48 5. Debian and other Software Packages sion in /usr/local/bin will automagically executed, if a non-root user not in the group cdrom types cdrecord at the command prompt. /usr/local/bin/cdrecord: #!/bin/sh prog=‘basename $0‘ test "X$SUPERCMD" = "X$prog" || exec /usr/bin/super $prog ${1+"$@"} /usr/bin/cdrecord $@ The corresponding entry in /etc/super.tab reads: /etc/super.tab: cdrecord /usr/local/bin/cdrecord uid=root info="burn CD−R" \ 5. 18.
6 Manual System Configuration 6. 1. Environment We find it amazing how broken the default setup is. Depending on how we login, we end up with a completely different environment. The PATH variable, for example, is unnecessarily set (or modified) by init, login and almost every shell profile. It’s not too complicated to harmonise things a little bit. /etc/environment: # /etc/environment: default environment sourced by # − login sh/bash using ’.
50 6. Manual System Configuration /etc/profile: # /etc/profile: system−wide shell profile for # − interactive login bash # − all sh # source the default environment if [ −f /etc/environment ]; then . /etc/environment fi # find out, whether we are a BASH or interactive SH # BASH: source /etc/bash.bashrc # interactive SH: set prompt case $BASH in *bash*) if [ −f /etc/bash.bashrc ]; then . /etc/bash.
6. 1. Environment 51 if [ −f $HOME/.bashrc ]; then . $HOME/.bashrc fi ;; *) ;; esac $HOME/.bashrc: # $HOME/.
52 6. Manual System Configuration bindkey "\e[2˜" overwrite−mode # Ins bindkey "\e[3˜" delete−char # Delete bindkey "\e[4˜" end−of−line # End bindkey "\e[8˜" end−of−line # End rxvt if ( "$?TERM" == "linux" ) then set prompt = "%U%m%u:%B%/%b"$delim" " else set prompt = "%U%m%u:"$delim" " endif endif $HOME/.login: # $HOME/.login: local shell profile for # − login csh/tcsh # eval the local environment if ( −f $HOME/.environment && −x /usr/local/bin/readenv ) then eval ‘/usr/local/bin/readenv $HOME/.
6. 2. Network Profile Management 53 # start fvwm as window/session manager fvwm Note: Contrary to popular belief, the existence of the environment variable PS1 does not indicate an interactive shell. If the current shell is the non-interactive child of an interactive shell, it inherits PS1 from the parent shell. We have to test the shell flags for interactivity. Source of /usr/local/bin/readenv: /* readenv.
54 6.
6. 2. Network Profile Management 55 /usr/local/bin/eth0: #!/bin/sh prog=‘basename $0‘ test "X$SUPERCMD" = "X$prog" || exec /usr/bin/super $prog ${1+"$@"} PATH="/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin" ADDRESS="" INTERFACE=eth0 #INTERFACE=wlan0 SCHEMEFILE=/var/state/network/scheme.
56 6. Manual System Configuration if [ −r "$PATTERNS" ]; then for PATTERN in $(cat $PATTERNS); do case $ADDRESS in ($PATTERN) PROFILE_NEW=$PROFILE break 2 ;; esac done fi done echo −n "Switching to profile "$PROFILE_NEW": " # If the new and current profiles are the same, exit here [ "$PROFILE_NEW" != "$PROFILE_CUR" ] || exit 0 # Run the Stop−Scripts for the current profile cd $PROFILE_DIR/$PROFILE_CUR/rc.d for SCRIPT in $(echo "K[0−9][0−9]*"); do if [ −n "$SCRIPT" ]; then echo −n "." case "$SCRIPT" in (*.
6. 2. Network Profile Management 57 case "$SCRIPT" in (*.sh) /bin/sh ./$SCRIPT stop &> /dev/null ;; (*) ./$SCRIPT stop &> /dev/null ;; esac fi done # Copy all profile specific files for the new profile cd $PROFILE_DIR/$PROFILE_NEW/files.d tar cf − . | (cd /; tar xf −) # Run the Start−Scripts for the new profile cd $PROFILE_DIR/$PROFILE_NEW/rc.d for SCRIPT in $(echo S[0−9][0−9]*); do if [ −n "$SCRIPT" ]; then echo −n "." case "$SCRIPT" in (*.sh) /bin/sh ./$SCRIPT start &> /dev/null ;; (*) .
58 6. Manual System Configuration Diverting the boot scripts from init: #!/bin/sh mkdir /etc/network/init.d PACKAGES="dns−clean fetchmail ippl lprng ntp ntpdate ppp scandetd ssh xinetd" for p in $PACKAGES; do dpkg−divert −−rename −−divert /etc/network/init.d/$p /etc/init.d/$p update−rc.d $p remove done Now we go to the rc.d directories and create the new symlinks by hand. Creating the new startup/shutdown symlinks (example): #> #> #> #> #> cd /etc/network/profiles mkdir −p XXXX/rc.d YYYY/rc.d ZZZZ/rc.
6. 2.
60 6. Manual System Configuration # Load the current and new profile PROFILE_CUR=‘cat $VPN_STATE_FILE | awk ’{print $3}’‘ PROFILE_NEW=‘cat $PROFILE_STATE_FILE | awk ’{print $3}’‘ echo "PROFILE: " $PROFILE_NEW # If the new and current profiles are the same, exit here [ "$PROFILE_NEW" != "$PROFILE_CUR" ] || exit 0 # Run Stop−Scripts for the current profile cd $PROFILE_DIR/$PROFILE_CUR/rc.d for SCRIPT in $(echo K[0−9][0−9]*); do if [ −n "$SCRIPT" ]; then case "$SCRIPT" in (*.sh) /bin/sh .
6. 4. Installing the Cyberbit Unicode TrueType Fonts 61 these fonts turn out to be somewhat small when displayed at 133 dpi. Scaling bitmapped fonts is a big no-no, though. It’s therefore a good idea to install some natively scalable fonts, e.g. Type 1, Speedo and TrueType fonts.
62 6. Manual System Configuration Weight = Medium Width = Variable Shape = Serif Upright Foundry = bitstream Priority = 20 X−Foundry = bitstream X−Family = cyberbit X−Weight = medium X−Slant = r end Finally, we register the fonts with defoma. Registering the Cyberbit Fonts with defoma: #> defoma−font −v register−all /usr/local/share/fonts/truetype/localfont.hints 6. 5. Configuring the Syslog Daemon Debian’s default configuration of the syslog daemon is a mess.
6. 7. Extending a Logical Volume 63 6. 6. Three Finger Salute We want to be able to shutdown or reboot our machine from the text console by pressing and , respectively. Both can be configured in /etc/inittab, the former one directly, the latter one by using the kbdrequest feature and defining the key KeyboardSignal as in the kernel keymaps. /etc/console/linux-kbdrequest.inc: control alt keycode 110 = KeyboardSignal Modification of /etc/console/uk.