HowTo Linux auf einem Acer Travelmate 290LMi
Vor geraumer Zeit habe ich ein Acer Travelmate 290LMi erstanden. Auf dem Gerät war Windows XP Professional vorinstalliert, was natürlich kein brauchbarer Zustand war. Daher sollte flugs ein Linux darauf zum Laufen kommen.
Hardware
Im Notebook ist ein Intel Centrino Prozessor mit 1.3GHz installiert und in die 512MB RAM hängt sich die Grafikkarte 82852/855GM von Intel mit 64MB mit ein. Die kann neben dem Display auch noch einen externen Monitor bedienen. Es ist eine Festplatte mit bescheidenen 30GB eingebaut. Die 100MBit/s-Netzwerkkarte ist von Realtek, der Wireless-LAN-Adapter sowie die Soundkarte von Intel. Sonstige Schmankerl sind der FireWire-Adapter und der herausnehmbare DVD-Brenner. Eingebautes Modem und Infrarot-Interface, sind für mich wenig nützlich, PCMCIA halte ich bei Notebook auch für selbstverständlich. Die Ausgabe von lspci (überspringen):
root@harbard [~] # lspci -v 0000:00:00.0 Host bridge: Intel Corp. 82852/855GM Host Bridge (rev 02) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, fast devsel, latency 0 Memory at <unassigned> (32-bit, prefetchable) Capabilities: [40] #09 [a105] 0000:00:00.1 System peripheral: Intel Corp. 855GM/GME GMCH Memory I/O Control Registers (rev 02) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, fast devsel, latency 0 0000:00:00.3 System peripheral: Intel Corp. 855GM/GME GMCH Configuration Process Registers (rev 02) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, fast devsel, latency 0 0000:00:02.0 VGA compatible controller: Intel Corp. 82852/855GM Integrated Graphics Device (rev 02) (prog-if 00 [VGA]) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, fast devsel, latency 0, IRQ 11 Memory at b0000000 (32-bit, prefetchable) [size=128M] Memory at f0000000 (32-bit, non-prefetchable) [size=512K] I/O ports at e000 [size=8] Capabilities: [d0] Power Management version 1 0000:00:02.1 Display controller: Intel Corp. 82852/855GM Integrated Graphics Device (rev 02) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: fast devsel Memory at 20000000 (32-bit, prefetchable) [disabled] [size=128M] Memory at 1f000000 (32-bit, non-prefetchable) [disabled] [size=512K] Capabilities: [d0] Power Management version 1 0000:00:1d.0 USB Controller: Intel Corp. 82801DB (ICH4) USB UHCI #1 (rev 03) (prog-if 00 [UHCI]) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, medium devsel, latency 0, IRQ 11 I/O ports at 1200 [size=32] 0000:00:1d.1 USB Controller: Intel Corp. 82801DB (ICH4) USB UHCI #2 (rev 03) (prog-if 00 [UHCI]) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, medium devsel, latency 0, IRQ 10 I/O ports at 1600 [size=32] 0000:00:1d.2 USB Controller: Intel Corp. 82801DB (ICH4) USB UHCI #3 (rev 03) (prog-if 00 [UHCI]) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, medium devsel, latency 0, IRQ 10 I/O ports at 1700 [size=32] 0000:00:1d.7 USB Controller: Intel Corp. 82801DB (ICH4) USB2 EHCI Controller (rev 03) (prog-if 20 [EHCI]) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, medium devsel, latency 0, IRQ 10 Memory at f0080000 (32-bit, non-prefetchable) [size=1K] Capabilities: [50] Power Management version 2 Capabilities: [58] #0a [2080] 0000:00:1e.0 PCI bridge: Intel Corp. 82801BAM/CAM PCI Bridge (rev 83) (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0 Bus: primary=00, secondary=01, subordinate=01, sec-latency=32 I/O behind bridge: 0000c000-0000dfff Memory behind bridge: e0000000-efffffff Prefetchable memory behind bridge: a0000000-afffffff 0000:00:1f.0 ISA bridge: Intel Corp. 82801DBM LPC Interface Controller (rev 03) Flags: bus master, medium devsel, latency 0 0000:00:1f.1 IDE interface: Intel Corp. 82801DBM (ICH4) Ultra ATA Storage Controller (rev 03) (prog-if 8a [Master SecP PriP]) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, medium devsel, latency 0, IRQ 10 I/O ports at <unassigned> I/O ports at <unassigned> I/O ports at <unassigned> I/O ports at <unassigned> I/O ports at 1100 [size=16] Memory at 1f080000 (32-bit, non-prefetchable) [size=1K] 0000:00:1f.3 SMBus: Intel Corp. 82801DB/DBM (ICH4) SMBus Controller (rev 03) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: medium devsel, IRQ 5 I/O ports at 1400 [size=32] 0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801DB (ICH4) AC'97 Audio Controller (rev 03) Subsystem: Acer Incorporated [ALI]: Unknown device 0021 Flags: bus master, medium devsel, latency 0, IRQ 5 I/O ports at e100 [size=256] I/O ports at e200 [size=64] Memory at f0080400 (32-bit, non-prefetchable) [size=512] Memory at f0080600 (32-bit, non-prefetchable) [size=256] Capabilities: [50] Power Management version 2 0000:00:1f.6 Modem: Intel Corp. 82801DB (ICH4) AC'97 Modem Controller (rev 03) (prog-if 00 [Generic]) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, medium devsel, latency 0, IRQ 5 I/O ports at e300 [size=256] I/O ports at e400 [size=128] Capabilities: [50] Power Management version 2 0000:01:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 80) (prog-if 10 [OHCI]) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, stepping, medium devsel, latency 128, IRQ 11 Memory at e0001800 (32-bit, non-prefetchable) [size=2K] I/O ports at c100 [size=128] Capabilities: [50] Power Management version 2 0000:01:01.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, medium devsel, latency 128, IRQ 11 I/O ports at c000 [size=256] Memory at e0001000 (32-bit, non-prefetchable) [size=256] Capabilities: [50] Power Management version 2 0000:01:02.0 Network controller: Intel Corp. PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04) Subsystem: Intel Corp. MIM2000/Centrino Flags: bus master, medium devsel, latency 128, IRQ 11 Memory at e0000000 (32-bit, non-prefetchable) [size=4K] Capabilities: [dc] Power Management version 2 0000:01:04.0 CardBus bridge: ENE Technology Inc CB1410 Cardbus Controller (rev 01) Subsystem: Acer Incorporated [ALI]: Unknown device 003d Flags: bus master, medium devsel, latency 168, IRQ 11 Memory at 1f081000 (32-bit, non-prefetchable) [size=4K] Bus: primary=01, secondary=02, subordinate=05, sec-latency=176 Memory window 0: 1f400000-1f7ff000 (prefetchable) Memory window 1: 1f800000-1fbff000 I/O window 0: 00004000-000040ff I/O window 1: 00004400-000044ff 16-bit legacy interface ports at 0001
Software
Auf den 30GB ist Windows XP, in meinem Fall Professional, vorinstalliert,
glücklicherweise (für mich) auf FAT32, so dass parted die partition gut
schrumpfen kann. XP habe ich aufgehoben, für den Fall, dass ich mal zocken will (was
erstaunlich selten vorkommt, ich ringe jeden Tag mit dem Gedanken, es entgültig zu
entfernen). Außerdem war noch Norton Antivirus dabei.
Mein Vorschlag, das Notebook zukünftig auch mit einer vorinstallierten Linux-Distribution auszuliefern, habe ich an Acer gesandt.
Kernel
Die Wahl fiel zu Anfang auf einen vanilla 2.4.20. Die .config (überspringen):
root@harbard [~] # grep '^[^#$]' /boot/config-2.4.22-2003-301 CONFIG_X86=y CONFIG_UID16=y CONFIG_EXPERIMENTAL=y CONFIG_MODULES=y CONFIG_MODVERSIONS=y CONFIG_KMOD=y CONFIG_MPENTIUMIII=y CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INVLPG=y CONFIG_X86_CMPXCHG=y CONFIG_X86_XADD=y CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_X86_L1_CACHE_SHIFT=5 CONFIG_X86_HAS_TSC=y CONFIG_X86_GOOD_APIC=y CONFIG_X86_PGE=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_F00F_WORKS_OK=y CONFIG_X86_MCE=y CONFIG_NOHIGHMEM=y CONFIG_MTRR=y CONFIG_SMP=y CONFIG_X86_TSC=y CONFIG_HAVE_DEC_LOCK=y CONFIG_NET=y CONFIG_X86_IO_APIC=y CONFIG_X86_LOCAL_APIC=y CONFIG_PCI=y CONFIG_PCI_GOANY=y CONFIG_PCI_BIOS=y CONFIG_PCI_DIRECT=y CONFIG_PCI_NAMES=y CONFIG_HOTPLUG=y CONFIG_PCMCIA=y CONFIG_CARDBUS=y CONFIG_SYSVIPC=y CONFIG_SYSCTL=y CONFIG_KCORE_ELF=y CONFIG_BINFMT_AOUT=y CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=y CONFIG_PM=y CONFIG_ACPI=y CONFIG_ACPI_BOOT=y CONFIG_ACPI_BUS=y CONFIG_ACPI_INTERPRETER=y CONFIG_ACPI_EC=y CONFIG_ACPI_POWER=y CONFIG_ACPI_PCI=y CONFIG_ACPI_SLEEP=y CONFIG_ACPI_SYSTEM=y CONFIG_ACPI_AC=y CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y CONFIG_ACPI_FAN=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_THERMAL=y CONFIG_BLK_DEV_FD=y CONFIG_BLK_DEV_LOOP=m CONFIG_PACKET=y CONFIG_UNIX=y CONFIG_INET=y CONFIG_IPV6=y CONFIG_IDE=y CONFIG_BLK_DEV_IDE=y CONFIG_BLK_DEV_IDEDISK=y CONFIG_IDEDISK_MULTI_MODE=y CONFIG_BLK_DEV_IDECD=y CONFIG_BLK_DEV_IDEPCI=y CONFIG_IDEPCI_SHARE_IRQ=y CONFIG_BLK_DEV_IDEDMA_PCI=y CONFIG_IDEDMA_PCI_AUTO=y CONFIG_BLK_DEV_IDEDMA=y CONFIG_IDEDMA_AUTO=y CONFIG_BLK_DEV_IDE_MODES=y CONFIG_SCSI=m CONFIG_IEEE1394=m CONFIG_IEEE1394_OHCI1394=m CONFIG_IEEE1394_RAWIO=m CONFIG_NETDEVICES=y CONFIG_DUMMY=m CONFIG_NET_ETHERNET=y CONFIG_NET_PCI=y CONFIG_8139TOO=y CONFIG_INPUT=y CONFIG_INPUT_KEYBDEV=y CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_SERIAL=y CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTY_COUNT=256 CONFIG_MOUSE=y CONFIG_PSMOUSE=y CONFIG_INTEL_RNG=m CONFIG_RTC=y CONFIG_AGP=m CONFIG_AGP_INTEL=y CONFIG_AGP_I810=y CONFIG_DRM=y CONFIG_DRM_NEW=y CONFIG_DRM_I810=m CONFIG_DRM_I810_XFREE_41=y CONFIG_REISERFS_FS=y CONFIG_FAT_FS=m CONFIG_VFAT_FS=m CONFIG_TMPFS=y CONFIG_RAMFS=y CONFIG_ISO9660_FS=y CONFIG_JOLIET=y CONFIG_NTFS_FS=m CONFIG_PROC_FS=y CONFIG_DEVFS_FS=y CONFIG_DEVFS_MOUNT=y CONFIG_DEVPTS_FS=y CONFIG_EXT2_FS=y CONFIG_NFS_FS=m CONFIG_NFS_V3=y CONFIG_SUNRPC=m CONFIG_LOCKD=m CONFIG_LOCKD_V4=y CONFIG_MSDOS_PARTITION=y CONFIG_NLS=y CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_CODEPAGE_850=y CONFIG_VGA_CONSOLE=y CONFIG_VIDEO_SELECT=y CONFIG_FB=y CONFIG_DUMMY_CONSOLE=y CONFIG_FB_VESA=y CONFIG_VIDEO_SELECT=y CONFIG_FBCON_CFB8=y CONFIG_FBCON_CFB16=y CONFIG_FBCON_CFB24=y CONFIG_FBCON_CFB32=y CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y CONFIG_SOUND=y CONFIG_SOUND_ICH=y CONFIG_USB=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_UHCI_ALT=y CONFIG_USB_OHCI=y CONFIG_USB_STORAGE=m CONFIG_USB_STORAGE_FREECOM=y CONFIG_USB_STORAGE_ISD200=y CONFIG_USB_STORAGE_DPCM=y CONFIG_USB_STORAGE_SDDR09=y CONFIG_USB_STORAGE_SDDR55=y CONFIG_USB_HID=y CONFIG_USB_HIDINPUT=y CONFIG_USB_HIDDEV=y
Die von mir aktuell verwendete .config unterscheidet sich kaum davon, daher
nur ein diff (überspringen):
6a7,8 > CONFIG_LOLAT=y > CONFIG_LOLAT_SYSCTL=y 15a18 > CONFIG_X86_ALIGNMENT_16=y 22a26 > CONFIG_1GB=y 24a29,30 > CONFIG_PREEMPT=y > CONFIG_NR_CPUS=2 62a69 > CONFIG_NETFILTER=y 64a72,76 > CONFIG_IP_NF_IPTABLES=m > CONFIG_IP_NF_MANGLE=m > CONFIG_IP_NF_TARGET_TOS=m > CONFIG_IP_NF_TARGET_MARK=m > CONFIG_IP_NF_TARGET_LOG=m 75a88 > CONFIG_BLK_DEV_PIIX=m 77d89 < CONFIG_BLK_DEV_IDE_MODES=y 78a91,92 > CONFIG_BLK_DEV_SD=m > CONFIG_SD_EXTRA_DEVS=40 80a95,96 > CONFIG_IEEE1394_SBP2=m > CONFIG_IEEE1394_DV1394=m 81a98 > CONFIG_IEEE1394_OUI_DB=y 86a104,105 > CONFIG_NET_RADIO=y > CONFIG_NET_WIRELESS=y 107a127 > CONFIG_DRM_I830=m 109a130 > CONFIG_MSDOS_FS=m 113c134 < CONFIG_ISO9660_FS=y --- > CONFIG_ISO9660_FS=m 135c156 < CONFIG_FB_VESA=y --- > CONFIG_FB_LOGO_TUX=y 136a158 > CONFIG_FB_INTEL=y 139d160 < CONFIG_FBCON_CFB24=y 143,148c164,170 < CONFIG_SOUND=y < CONFIG_SOUND_ICH=y < CONFIG_USB=y < CONFIG_USB_EHCI_HCD=y < CONFIG_USB_UHCI_ALT=y < CONFIG_USB_OHCI=y --- > CONFIG_SOUND=m > CONFIG_SOUND_ICH=m > CONFIG_USB=m > CONFIG_USB_DEVICEFS=y > CONFIG_USB_EHCI_HCD=m > CONFIG_USB_UHCI_ALT=m > CONFIG_USB_OHCI=m 155c177 < CONFIG_USB_HID=y --- > CONFIG_USB_HID=m 157a180,182 > CONFIG_LOG_BUF_SHIFT=0 > CONFIG_CRYPTO=y > CONFIG_FW_LOADER=m
Bemerkenswert ist hier lediglich CONFIG_BLK_DEV_PIIX=m,
wodurch hdparm den DMA-Modus für die Festplatte aktivieren kann; sehr
positiv. CONFIG_FB_INTEL ermöglicht die Verwendung des framebuffers mit
dem speziellen Treiber für Intel, der CONFIG_FB_VESA tut es auch, ist
aber etwas langsamer (nicht wesentlich); das Anhängen von vga=792 an die
Kernel-Zeile in /etc/grub/grub.conf aktiviert ihn.
XFree86/Xorg
Mit XFree 4.3 kommt ein Treiber i810 für die Grafikkarte mit, der zur 82852/855GM kompatibel ist. Die Ausgabe auf dem Display arbeitet damit. Meine Versuche, an einem externen Monitor eine andere Ausgabe, als auf dem Display, und so Xinerama zu erhalten, sind leider bislang gescheitert. Knappes Statement von Intel: "Geht nicht, kann Linux nicht." Ohne Display kann der Controller immerhin 1600x1200 auf den Monitor schicken.
Die 3D-Beschleunigung war am Anfang ziemlich träge. Im Zuge von updates hat sich das (unbemerkt) gebessert: inzwischen läuft Armagetron auch bei höchster Grafikqualität flüssig. Inzwischen habe ich auf Xorg umgestellt und dadurch keinen Nachteil bemerkt.
Eingebautes Touchpad und am USB angeschlossene Maus (bzw. in meinem Fall: Trackball)
können auch gleichzeitig betrieben werden, allerdings wird dies nicht durch
Hardware
emuliert, wie bei einigen anderen Notebooks, sondern muss konfiguriert werden. Die
/etc/X11/xorg.conf (überspringen):
Section "ServerLayout" Identifier "XFree86 Configured" Screen 0 "Monitor Screen" 0 0 InputDevice "Keyboard0" "CoreKeyboard" InputDevice "TouchPad" "CorePointer" InputDevice "TrackBall" "AlwaysCore" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbLayout" "de" Option "XkbVariant" "nodeadkeys" Option "XkbModel" "pc105" EndSection Section "InputDevice" Identifier "TouchPad" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/misc/psaux" EndSection Section "InputDevice" Identifier "TrackBall" Driver "mouse" # Option "Protocol" "auto" Option "Protocol" "ExplorerPS/2" Option "Buttons" "7" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5" EndSection Section "Monitor" DisplaySize 305 230 # mm Identifier "TFT" VendorName "PHL" ModelName "700b" Option "DPMS" EndSection Section "Monitor" DisplaySize 400 295 # mm Identifier "Monitor" VendorName "PHL" ModelName "700b" Option "DPMS" EndSection Section "Device" Identifier "VGA Controller" Driver "i810" VendorName "Intel Corp." BoardName "852GM/852GME/855GM/855GME Chipset Graphics Controller" BusID "PCI:0:2:0" EndSection Section "Device" Identifier "Display Controller" Driver "i810" VendorName "Intel Corp." BoardName "852GM/852GME/855GM/855GME Chipset Graphics Controller" BusID "PCI:0:2:1" EndSection Section "Screen" Identifier "Monitor Screen" Device "VGA Controller" Monitor "Monitor" DefaultDepth 24 SubSection "Display" Depth 16 Modes "1600x1200" "1280x1024" "1280x960" "1152x864" "1024x768" EndSubSection SubSection "Display" Depth 24 Modes "1600x1200" "1280x1024" "1280x960" "1152x864" "1024x768" EndSubSection EndSection Section "Screen" Identifier "TFT Screen" Device "Display Controller" Monitor "TFT" DefaultDepth 24 SubSection "Display" Depth 16 Modes "1024x768" EndSubSection SubSection "Display" Depth 24 Modes "1024x768" EndSubSection EndSection Section "Module" Load "glx" Load "dri" EndSection Section "DRI" Mode 0666 EndSection
Sound
Der Kernel unterstützt die Soundkarte nativ dem CONFIG_SOUND_ICH,
besser ist aber allemal die ALSA-Unterstützung. Das ALSA-sound-mini-HOWTO hilft dabei,
dieses mit Berücksichtigung der Dokumentation
für die intel8x0 anzuwenden sollte unproblematisch sein. Der relevante Teil
von /etc/modules.conf:
alias char-major-116 snd alias char-major-14 soundcore alias snd-card-0 snd-intel8x0 alias sound-slot-0 snd-card-0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss alias /dev/mixer snd-mixer-oss alias /dev/dsp snd-pcm-oss alias /dev/midi snd-seq-oss options snd cards_limit=1
ACPI
Im Gegensatz zu APM, bei welchem die Steuerung von Stromsparfunktion und Co., unabhängig vom Betriebssystem, komplett dem BIOS obliegt, wird diese mit ACPI in die Hände des selbigen gelegt. Das macht es zwar wesentlich flexibler, in der Konfiguration aber auch etwas komplizierter.
Nochmal der relevante Teil aus der .config, um ACPI zu aktivieren:
root@harbard [~] # grep ACPI /boot/config-2.4.22-2003-301 # CONFIG_HOTPLUG_PCI_ACPI is not set # ACPI Support CONFIG_ACPI=y # CONFIG_ACPI_HT_ONLY is not set CONFIG_ACPI_BOOT=y CONFIG_ACPI_BUS=y CONFIG_ACPI_INTERPRETER=y CONFIG_ACPI_EC=y CONFIG_ACPI_POWER=y CONFIG_ACPI_PCI=y CONFIG_ACPI_SLEEP=y CONFIG_ACPI_SYSTEM=y CONFIG_ACPI_AC=y CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y CONFIG_ACPI_FAN=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_THERMAL=y # CONFIG_ACPI_ASUS is not set # CONFIG_ACPI_TOSHIBA is not set # CONFIG_ACPI_DEBUG is not set # CONFIG_ACPI_RELAXED_AML is not set
Damit wird die Taktfrequenz stufenlos zwischen ca. 12MHz und 1300MHz geregelt (Messung mit x86info).
Events des
kernels können mit dem acpid
abgefangen werden. Dieser wird in /etc/acpi/ konfiguriert. In diesem
Verzeichnis wird mit der Datei events festgelegt, auf welche events der
daemon mit was reagieren soll. Events haben eine group und eine action, die als string
durch Leerzeichen getrennt an den acpid übergeben werden. In einer Zeile wird jeweils
mit event= festgelegt, auf welches event reagiert werden soll, mit
action= mit welcher Aktion. So wird z. B. mit
event=button power.*
festgelegt, dass beim Drücken des Powerknopfes der Rechner runtergefahren wird. Da
das recht unflexibel ist, überlässt man die genaue Entscheidung einem
shellscript. Mit
action=/sbin/init 0event=.*
werden alle events an dieses script übergeben. Das Metazeichen
action=/etc/acpi/acpi_handler.sh %e%e wird
dabei durch den vollständigen string, den der Kernel gesandt hat, ersetzt. Ein gutes
Grundgerüst für dieses script kommt mit dem acpid mit. Interessant ist dabei noch das
event button lid, welches das Schließen des Deckels signalisiert. Weitere
können ggf. /usr/src/linux/include/acpi/acpi_drivers.h entnommen
werden.
Eine andere Schnittstelle zum ACPI-Interface des kernels
wird durch /proc/acpi/* gegeben. Darin finden sich allerlei nützliche
Informationen über den Zustand des Notebooks: wie voll ist der Akku noch, ist das
Netzteil gerade angeschlossen, etc. (Wer dazu eine Liste hat, bitte per mail an
mich.) Die meisten der dortigen Dateien funktionieren lesend und schreibend. So
kann mit einem read() auf /proc/acpi/processor/CPU0/performance
festgestellt werden, mit welcher maximalen Taktfrequenz der Rechner gerade betrieben
wird. Mit einem write() auf die gleiche Datei kann diese manuell festgelegt werden, was
den eigentlich sowieso schon selten betriebenen Lüfter gänzlich zum Schweigen
bringen kann.
Ein anderes interessantes file ist /proc/acpi/sleep: damit kann man
feststellen, welche states der Kernel unterstützt (mehr oder weniger) bzw.
definieren, in welchen Zustand der Rechner gebracht werden soll. Mögliche
Zustände sind auf der Linux-ACPI-Seite
aufgelistet. Ganz trivial kann also ein root@harbard [~] # echo 1 >/proc/acpi/sleep den Rechner in den
stopgrant-mode, eine light Version von suspend-to-RAM, schalten. Da ich noch einige
Dienste runterfahren will, bevor ich das tue, wird das hier von einem shellscript
erledigt:
#!/bin/sh /etc/init.d/chronyd stop /sbin/hwclock --systohc echo 1 >/proc/acpi/sleep /sbin/hwclock --hctosys /etc/init.d/chronyd start
Das wird mit sudo dem unprivelegiertem Nutzer zur Verfügung
gestellt.
Echter suspend-to-RAM oder gar suspend-to-disk ist mir bislang noch nicht gelungen.
Für uspend-to-disk in der Theorie wird 4 nach /proc/acpi/sleep
geschrieben und der Kernel lagert den gesamten Speicher in die swap-Partition. Beim
erneuten Booten muss mit dem Kernel-Parameter resume= gesagt werden, von
welcher Partition er den Zustand neu laden soll (Kommentare
willkommen).
Beim Testen mit /proc/acpi/sleep ist etwas Vorsicht geboten: in gewissen
Zuständen schaltet der Rechner einfach ab. Vor dem Spielen also unbedingt alle
Partitionen unmounten bzw. readonly remounten. Weiter Informationen finden sich im ACPI-HowTo.
WLAN
Besonders wichtig war mir natürlich die Funktion des WLAN-Adapters.
Sämtliche Versuche mit dem ndiswrapper liefen ins Leere.
Glücklicherweise gab es irgendwann ipw2100. Die Installation ist
trivial, evtl. müssen hostap zzgl. includes installiert werden. Mit
modprobe kann das LKM geladen
werden: root@harbard [~]
# modprobe ipw2100 if_name="wlan%d" Das Metazeichen
%d im Interface-Namen wird durch die nächste freie Nummer ersetzt.
Der Treiber sucht sich automatisch das erste Netz und meldet dessen ESSID im
/var/log/messages, ggf. kann mit iwconfig ein anderes Netz
gewählt werden. Zu vom Treiber unterstützen Verschlüsselungen kann ich
keine Aussage machen.
Offene Fragen
- Geht evtl. inzwischen Xinerama? Das wäre mir wirklich wichtig.
- Kann dieses Notebook CDs/DVDs auch unter Linux brennen? Ich kann die CDs, die ich bislang gebrannt habe, an einer Hand abzählen. Ist nicht mein Medium.
hotplugdlädt ipw2100 automatisch. Wie kann dabei ein LKM-Parameter angegeben werden?- Nahtloses Umschalten zwischen Ethernet und WLAN: alles eine Frage des routings.
- Ich kann nicht mal sagen, ob das PCMCIA-Interface funktioniert, ich hab es noch nie getestet, geschweige denn verwendet.
- Selbiges gilt für die Infrarot-Schnittstelle. Was macht man damit überhaupt? Ich hab ein Handy, das hat auch so ein Teil. Können die irgendwas miteinander?
- FireWire: abgesehen von einem kurzen Versuch mit einer externen Festplatte habe ich diese Schnittstelle auch noch nie betrieben.
- Wer um alles in der Welt braucht Modems?
Für die sachdienliche Beantwortung einer dieser Fragen wird eine hohe (noch näher zu definierende) Belohnung gezahlt. Sendet mir Hinweise.