Weihnachten 2003.
Mein lange gehegter Wunsch wird wahr.
Ein echtes Subnotebook ist in erschwinglichen Preisregionen angekommen.
Der Preis rechtfertigt endlich den Gebrauchswert des Gerätes für mich.
Bei ebay ersteigere ich einen Toshiba Libretto CT50 für 150€.
Es war von Anfang an klar, dass ein LinuX auf dem Notebook installiert wird.
Es sollte klein und schnell sein und so fiel meine Wahl auf eine slackware 8.1.
Ich hatte vor vielen Jahren mal mit einer Slackware 3.0 (Kernel 1.2.13) begonnen, mich mit Linux zu beschäftigen und war von Anfang an begeistert.
Später habe ich mich dann auch mit verschiedenen SuSE-Versionen auseinandergesetzt, aber neben den vielen Vorteilen dieser Distribution hat sie, meiner Meinung nach ,auch den entscheidenden Nachteil, Windows nachbilden zu wollen ( ich hoffe, ich tue den SuSE-Fans nicht zu sehr unrecht).
Es ist sehr aufgeblasen, langsam und sehr ressourcenfressend.
Es kann nicht sein, dass man auf ein System minutenlang warten muss bis es nun endlich gebootet hat, selbst wenn es über einen potenten Prozessor verfügt.
Also, das Notebook sollte also auf jeden Fall die sechs virtuelen Terminals und ein X unterstützen.
Weiterhin sollen Netzwerk, Sound und IRDA funktionieren.
Der Rechner sollte so viel Performance bieten, dass auch MP3-Dateien abgespielt werden können.
Zur schnellen Verfügbarkeit muss APM vollständig unterstützt werden.
Hier nun meine Erfahrungen:
Der Libretto
Der Libretto von Toshiba ist ein handliches kleines Gerät mit den Abmessungen 208mmx114mmx32mm und einer Masse von unter 900g inclusive Akku. Man hat es also mit einem Gerät zu tun, dass nur wenig größer als eine Videocassette ist. Also kein riesiges flaches Ufo, sondern ein kompaktes, kleines Gerät, dass man wirklich fast überall hin mitnehmen kann. Mit der Tastatur kann man recht gut umgehen, wenn man nicht gerade Kartoffelsortierer ist und das Display ist zwar sehr klein, besticht jedoch durch seine Schärfe. Leider reicht die Helligkeit bei direkter Sonneneinstrahlung nicht aus, aber das ist wohl auch ein Kompromiss an den Stromverbrauch. Wirklich gewöhnungsbedürftig ist der absolut unergonomische Mousepoint. Da ich früher schon mit einem Toshiba T2100 zu tun hatte, waren mir die Mousestickspielereien schon bekannt. Aber mal ehrlich, so richtig gibt es neben einer richtigen Mouse keine sinnvolle Alternative. Touchpads spielen bei Feuchtigkeit verrückt, Trackballs verschmutzen schnell ..... usw.usf. Mit der richtigen Grifftechnik (siehe Bild) ist jedoch ein recht zielgenaues Arbeiten möglich. Ich bediene den Mousepoint mit dem Daumen und die Tasten auf der Rückseite des Displays mit dem 3.und 4.Finger. Dabei klemme ich das Display zwischen dem Zeigefinger und dem 3.Finger ein. Die Arbeiten mit dem Mousepoint ist sehr gewöhnungsbedürftig und ungenau, Linkshänder sind ganz angeschmiert.Die Akkulaufzeit ist ein weiteres Thema. Mit dem Standardakku (10,8V; 1200mAh) läuft der Libretto 1½ Stunden. Ich habe mir deshalb noch einen 2600mAh Akku zugelegt, um die Laufzeit zu verdoppeln. Vom Libretto gibt es unterschiedliche Modelle mit unterschiedlicher Ausstattung. Hier nun mein Libretto CT50.
Die HardwareDer Libretto 50CT besitzt folgende Harwareaustattung:
Über einen Portreplikator sind noch verschiedene Schnittstellen verfügbar (LPT, COM, VGA, ...). Ein Diskettenlaufwerk konnte ich nicht testen, da es nicht zum Ersteigerungspaket gehörte. Ich habe auch nicht vor, eines zu erwerben, denn wozu benötigt man Diskettenlaufwerke ;-) ?
Die InstallationDie Installations- und Konfigurationsanleitung hier schreckt vielleicht viele ab. Es hält sich immer noch hartnäckig das Gerücht, Linux sei kompliziert und kryptisch. Viele der Linux-Distributionen (z.B. eben die SuSE) machen es dem Endnutzer heutzutage leicht. Oft sieht die Installation so aus, CDs rein, warten, fertig, geht. Die Installationsroutienen sind sehr komfortabel und grafisch gestaltet. Die Erkennung der Hardware erfolgt weitgehend automatisch. Beim Libretto ist das Problem, einen Rechner von gestern mit der Software von heute laufen zu lassen. Da muß Hand an die Einstellungen gelegt werden, um das System entsprechend zu tunen. Viel Ballast kann abgeworfen werden um Performance zu gewinnen. Der Rechner muss nicht krampfhaft nach PCI, oder USB-Hardware suchen und entsprechende Software installiert werden, denn der Rechner besitzt eben solche Hardware nicht. Er ist relativ abgeschlossen und ein Wechsel von Modulen findet nur am PCMCIA-Port statt. Wenn man dem Rechnung trägt, kann man auch mit diesem Pentium 75 noch ganz passabel arbeiten. Zur Installation selbst habe ich die einfachste Möglichkeit gewählt. Ich habe die Festplatte ausgebaut und sie mit einem Adapter in einen Desktop-PC eingesetzt. Die Demontage ist sehr einfach. Am Libretto müssen dazu zwei Schrauben gelöst werden und hinter einem Deckel ist dann die Festplatte entnehmbar.
Bei der Partitionierung ist darauf zu achten, dass das BIOS die letzten 32MB der Festplatte zur Speicherung des RAM benötigt. Dazu kommt noch 1MB für den Videospeicher und etwas Platz für Systemdaten. Hier darf auf keinen Fall ein LinuX-Filesystem angelegt werden, da dieses durch das BIOS unweigerlich überschrieben wird und eine Neuinstallation nach sich zieht. Dieses durfte ich im Selbstversuch testen und es war frustrierend.
Partitionierung der Festplatte
So sieht die Ausgabe von fdisk für die Festplatte nun aus:
| root@libretto:/root> fdisk /dev/hda | ||||||
| Disk /dev/hda: 64 heads, 63 sectors, 788 cylinders | ||||||
| Units = cylinders of 4032 * 512 bytes | ||||||
| Device Boot | Start | End | Blocks | Id | System | Hinweise |
| /dev/hda1 | 1 | 11 | 22144+ | 83 | Linux | Wird das Bootverzeichnis /boot |
| /dev/hda2 | 12 | 44 | 66528 | 82 | Linux swap | Der SWAP-Bereich 64MB |
| /dev/hda3 | 45 | 770 | 1463616 | 83 | Linux | Das wird root / |
| /dev/hda4 | 771 | 788 | 36288 | 6 | FAT16 | BIOS-Bereich für die RAM-Speicherung |
Folgende Pakete habe ich von der Slackware 8.1 -CD installiert:
| ImageMagick-5.4.6/ | LPRng-3.8.12/ | a2ps-4.13b/ |
| abisuite/ | abiword-1.0.2/ | adjtimex-1.13/ |
| apache-1.3.26/ | apmd-3.0.2/ | apsfilter-7.2.2/ |
| audiofile-0.2.3/ | autoconf-2.53/ | automake-1.5/ |
| bash-2.05a/ | biff+comsat-0.17/ | bin86-0.16.3/ |
| binutils-2.12.90.0.9/ | bison-1.35/ | bpe-1.4/ |
| bsd-finger-0.17/ | byacc-1.9/ | bzip2-1.0.2/ |
| cpio-2.4.2.91/ | ctags-5.2.3/ | cvs-1.11.2/ |
| db-3.1.17/ | db.1.85/ | db2-2.4.14/ |
| dcron-2.3.3/ | devfsd-v1.3.25/ | dhcp-3.0pl1/ |
| dhcpcd-1.3.22-pl1/ | dialog-0.9b-0519/ | diffutils-2.8.1/ |
| dosfstools-2.8/ | e2fsprogs-1.27/ | eject-2.0.12/ |
| elvis-2.1_4/ | esound-0.2.27/ | fdutils-5.4/ |
| fetchmail-5.9.11/ | file-3.37/ | fileutils-4.1/ |
| flex-2.5.4a/ | freetype-1.3.1/ | gawk-3.1.1/ |
| gcc-2.95.3/ | gdb-5.2/ | gdbm-1.8.0/ |
| gdk-pixbuf-0.17.0/ | genpower-1.0.1/ | gettext-0.11.2/ |
| ghostscript-7.05/ | gimp-print-4.2.1/ | glib-1.2.10/ |
| glibc-2.2.5/ | gnuchess-4.0.pl80/ | gnuplot-3.7.2/ |
| gpm-1.19.6/ | grep-2.5/ | groff-1.17.2/ |
| gtk+-1.2.10/ | gv-3.5.8/ | hpijs-1.1/ |
| icmpinfo-1.11/ | indent-2.2.8/ | inetd-1.79s/ |
| iptables-1.2.6a/ | isapnptools-1.26/ | ispell-3.2.06/ |
| jed-B0.99-15/ | jfsutils-1.0.18/ | joe-2.9.7/ |
| kbd-1.06/ | ksh93-20011031/ | less-374/ |
| lesstif-0.93.34/ | lftp-2.5.4/ | libao-0.8.2/ |
| libgr-2.0.13/ | libjpeg-6b/ | libmpeg-1.3.1/ |
| libogg-1.0rc3/ | libpcap-0.7.1/ | libpng-1.2.1/ |
| libtiff-3.5.7/ | libtool-1.4.2/ | libungif-4.1.0b1/ |
| libvorbis-1.0rc3/ | libxml-1.8.17/ | libxml2-2.4.22/ |
| lilo-22.2/ | links-0.97/ | logrotate-3.6.3/ |
| lrzsz-0.12.21/ | lsof-4.63/ | lynx-2.8.4/ |
| m4-1.4/ | mad-0.14.2b/ | make-3.79.1/ |
| man-1.5j/ | mc-4.5.55/ | minicom-2.00.0/ |
| mm-1.1.3/ | mod_ssl-2.8.9-1.3.26/ | modutils-2.4.16/ |
| mtools-3.9.8/ | nc-1.10/ | ncftp-3.1.3/ |
| ncurses-5.2/ | net-tools-1.60/ | netkit-base-0.17/ |
| netkit-bootparamd-0.17/ | netkit-ftp-0.17/ | netkit-ntalk-0.17/ |
| netkit-routed-0.17/ | netkit-rsh-0.17/ | netkit-rusers-0.17/ |
| netkit-rwall-0.17/ | netkit-rwho-0.17/ | netkit-telnet-0.17/ |
| netkit-timed-0.17/ | netpipes-4.2-export/ | netwatch-0.9g/ |
| netwrite-0.17/ | nfs-utils-0.3.3/ | nmap-2.54BETA34/ |
| nss_db-2.2/ | ntp-4.1.1a/ | openssh-3.2.3p1/ |
| openssl-0.9.6d/ | patch-2.5.4/ | pcmcia-cs-3.1.33/ |
| pcnfsd.93.02.16/ | perl-5.6.1/ | php-4.2.1/ |
| pidentd-3.0.12/ | pine4.44/ | pmake-2.1.35/ |
| popa3d-0.5.1/ | portmap-4.0/ | ppp-2.4.1/ |
| pppsetup/ | procinfo-18/ | procmail-3.15.2/ |
| procps-2.0.7/ | proftpd-1.2.5/ | psmisc-20.2/ |
| psutils-1.17/ | quota-3.06/ | raidtools-0.90/ |
| rexima-1.2/ | rpm-4.0.2/ | rxvt-2.6.4/ |
| samba-2.2.4/ | screen-3.9.11/ | sed-3.02/ |
| seejpeg-1.10/ | sendmail-8.12.4/ | sh-utils-2.0/ |
| shadow-4.0.3/ | sharutils-4.2.1/ | slocate-2.6/ |
| smartsuite-2.1/ | sox-12.17.3/ | splitvt-1.6.5/ |
| strace-4.4/ | sysklogd-1.4.1/ | syslinux-1.67/ |
| sysvinit-2.84/ | tar-1.13.25/ | tcp_wrappers_7.6/ |
| tcpdump-3.7.1/ | tcsh-6.11/ | termcap-1.2.3/ |
| texinfo-4.2/ | textutils-2.0/ | tftp-hpa-0.29/ |
| traceroute-1.4a12/ | tree-1.4b2/ | umsdos-progs-1.13/ |
| unzip-5.50/ | updated-2.11/ | util-linux-2.11r/ |
| vim-6.1/ | vorbis-tools-1.0rc3/ | wget-1.8.2/ |
| which-2.13/ | whois-4.5.21/ | wireless-tools-24/ |
| xboard-4.0.7/ | xfce-3.8.16/ | xfractint-20.2.03/ |
| xfsprogs-2.0.3/ | xgames-0.2/ | xmms-1.2.7/ |
| xpaint-2.6.2/ | xpdf-1.01/ | xscreensaver-4.05/ |
| xv-3.10a/ | xxgdb-1.12/ | yp-tools-2.7/ |
| ypbind-3.3/ | ypbind-mt-1.12/ | ypmake-0.11/ |
| ypserv-2.4/ | ytalk-3.1.1/ | zip-2.3/ |
| ziptool-1.3/ | zsh-4.0.4/ |
Einige der Pakete habe ich nur auf Verdacht und zum Test installiert, sie können später wieder entfernt werden. Das ganze läuft mit einem Kernel 2.4.18. Neben den Paketen, die für den Betrieb von LinuX generell notwendig sind, sind auf jeden Fall noch pcmcia-cs-3.1.33 (Verwaltung der PCMCIA-Karten), apmd-3.0.2 (Batterieüberwachung, Suspendmodus), esound-0.2.27 (Sounddaemon) und xfce-3.8.16 (Windowmanager, sehr komfortabel, schnell und klein) notwendig
Der SystemstartZuerst möchte ich den Systemstart der Slackware kurz umreißen. Ich bin der Meinung, dass man diesen Vorgang kennen sollte, wenn man seinen Rechner beherrschen will. Viele Installationsoberflächen nehmen einem diese Arbeit zwar ab, aber man lernt dann auch die Potenzen dieses Systems nicht kennen. Mit diesem Wissen ist man jedoch in der Lage, sein System nahezu vollständig frei zu gestalten.
Der Rechner startet, ähnlich wie bei anderen Betriebssystemen auch, durch den Aufruf eines Bootmanagers. Ich verwende den LILO 22.2 der slackware-Distribution. Da nur ein LinuX installiert ist, habe ich auf Menüschnickschnack bewußt verzichtet und starte sofort den LinuX-Kernel. Als letzte Aktion ruft dieser den init-Daemonen auf, der als erster Prozess alles weitere übernimmt. Von hier aus wird nun das weitere Startverhalten des Systems über Shellscripte gesteuert. In der Datei /etc/inittab sind dazu die einzelnen Scripte für den Systemstart eingetragen. Ich benutze den Default-Runlevel 3, dh. Multiuserbetrieb ohne X-Window (grafische Oberfläche), da ich dieses selten benötige und bei Bedarf von Hand starte. Die Shellscripte sind alle Textdateien, die von Hand geändert werden können. Dazu sind nur Kenntnisse in der Shell-Programmierung notwendig. Die Shell ist ein Kommandointerpreter, vergleichbar mit der COMMAND.COM unter DOS/Windows. Der Funktionsumfang ist jedoch beträchtlich größer und man hat verschiedene Shells zur Auswahl ( sh, bash, tsh, zsh ....) Eine recht gute on-board Hilfe findet man unter LinuX immer in den man-Pages, die durch das Kommando man Kommandoname aufgerufen werden können. Eine kurze Übersicht zu den Shell-Kommandos erhält man also durch den Aufruf man sh oder man bash.
Ich möchte nun die Einträge in der Datei /etc/inittab kurz erläutern. Jede einzelne Zeile legt dabei eine Systemreaktion fest. Die Einträge in einer Zeile sind durch Doppelpunkte voneinander getrennt. Der erste Eintrag ist eine eindeutige Kennung (im Prinzip frei wählbar, 2-4 Zeichen, siehe man inittab). Danach folgt die Angabe der Runlevel, in denen die Aktion ausgelöst werden soll, gefolgt vom Namen der Aktion. Der letzte Eintrag ist der Verweis auf das Script, das ausgeführt werden soll. Diese Scripte befinden sich der Übersicht halber alle im Verzeichnis /etc/rc.d/ .
Festlegung des Runlevels 3
Das Script /etc/rc.d/rc.S wird für die Initialisierung des Systems beim booten aufgerufen
Startscript für den Singleuser-Betrieb (Runlevel 1)
Startscript für den Multiuser-Betrieb (Runlevel 2345)
Verhalten bei CTRL-ALT-DEL, hier Herunterfahren des Systems. Das Kommando shutdown löst das Herunterfahren aus.
Script, das das Herunterfahren bis zum Anhalten des Systems steuert (Runlevel 0).
Script, das das Herunterfahren mit anschließendem Neustart steuert (Runlevel 6).
Start einer Konsole tty1. Von dieser Zeile sind mehrere enthalten, um mehrere Text-Konsolen (Rechnerzugänge) zu erhalten. Diese Konsolen sind jeweile mit den Tastenkombinationen ALT-F1, ALT-F2, ALT-F3 ... erreichbar. Aus der grafischen Oberfläche gelagt man über CTRL-ALT-F1 ... dort hin.
Startscript für den Runlevel 4, Multiuserbetrieb mit grafischer Oberfläche.
Es befinden sich noch weitere Zeilen in dieser Datei, mit denen z.B. Modemzugänge oder serielle Terminals eingerichtet werden können oder Reaktionen auf die Signale einer USV festgelegt werden und und und.
Der init-Daemon wird also beim Systemboot die Scripte /etc/rc.d/rc.S und /etc/rc.d/rc.M ausführen, und die Konsolen einrichten und der User erhält eine Login-Meldung, mit der Aufforderung, seinen Benutzernamen und das Passwort einzugeben. Das System ist bereit.
Das Script /etc/rc.d/rc.S übernimmt grundlegende Initialisierungsaufgaben, wie z.B.
Damit ist eine grundlegende Funktionalität des Systems gegeben. Mit dem Script /etc/rc.d/rc.M werden nun spezielle Komponenten aktiviert. Dabei werden meist weitere Scripte, vergleichbar mit Unterprogrammen, aufgerufen, die jeweils für bestimmte funktionale Einheiten verantwortlich sind. So habe ich z.B. das Script /etc/rc.d/rc.sound geschrieben, das die Aufgabe hat, den Sounddaemonen zu starten oder zu stoppen. Das geschieht über einen zusätzlichen Parameter, der dem Script mitgegeben wird.
Start des Sounddaemonen mit /etc/rc.d/rc.sound START
Stoppen des Sounddaemonen mit /etc/rc.d/rc.sound STOP
Im Script /etc/rc.d/rc.M wird nun getestet, ob es ein ausführbares Script /etc/rc.d/rc.sound existiert, und wenn ja, wird es mit dem Parameter START aufgerufen. Im Script /etc/rc.d/rc.M sieht der entsprechende Abschnitt so aus:
# Starte Sound if [ -x /etc/rc.d/rc.sound ]; then /etc/rc.d/rc.sound start fi
Die Zeilen mit vorangestelltem Doppelkreuz # sind Kommentare. Diese Vorgehensweise hat den Vorteil, dass die Komponenten auch nachträglich über diese Scripte abgeschaltet oder aktiviert werden können und die Scripte übersichtlich bleiben. Besonders interessant ist das gerade für die Fehlersuche und Konfiguration. Nach dem Konfigurieren wird die Komponente (z.B. der Sound) gestartet und wenn noch nicht alles zur Zufriedenheit funktioniert wieder gestoppt. Nach der Veränderung der Konfiguration kann die Komponente wieder gestartet werden. Wenn man nicht zu großen Unsinn angestellt hat, muß der Rechner nur selten komplett neu gestartet werden. Für alle Komponenten (PCMCIA, IRDA, SOUND, NETZWERK usw.) werden nun solche Scripte angelegt. Viele von ihnen sind nach der Installation schon vorhanden und man kann sie seinen Wünschen anpassen. Leider bringen die Standardscripte der slackware kein START/STOPP Verhalten mit, das muß man sich selbst einbauen.
| slackware Startstruktur | |||||
| LILO | Bootmanager | ||||
![]() |
|||||
| Kernel | |||||
![]() | |||||
| init | ![]() |
/etc/rc.d/rc.S | ![]() |
fsck | Dateisystemcheck |
![]() |
swapon | SWAP-Partition aktivieren | |||
![]() |
mount | Dateisysteme mounten (einbinden) | |||
![]() |
rm | temporäre Dateien löschen | |||
![]() |
hwclock | Systemuhr stellen | |||
![]() |
/etc/rc.d/rc.module | Kernelmodule laden | |||
![]() |
/etc/rc.d/rc.serial | serielle Schnittstellen initialisieren | |||
![]() |
/etc/rc.d/rc.M | ![]() |
hostname | Rechnername festlegen | |
![]() |
/etc/rc.d/rc.pcmcia start | PCMCIA starten | |||
![]() |
/etc/rc.inet2 | Netzwerk und Server starten | |||
![]() |
syslog | Systemlogger starten | |||
![]() |
/etc/rc.d/rc.lpd start | Drucksystem starten | |||
![]() |
/etc/rc.d/rc.sendmail start | Sendmail starten | |||
![]() |
/etc/rc.d/apmd | APM starten | |||
![]() |
/etc/rc.d/sound start | Sound starten | |||
![]() |
/sbin/agetty Konsolenstart |
![]() |
login | User-Login | |
Die KonfigurationIn diesem Startscript werden die Module für die zusätzliche Hardware geladen. Früher musste sämtliche Software für die Hardwarekomponenten in den Kernel einkompiliert werden. Wollte man sämtliche Hardware einbinden, hätte man bei der heutigen Vielfalt wohl ein riesiges Problem, zumal sich im eigenen Rechner nur ein kleiner Teil der verfügbaren Komponenten befindet. Deshalb beschritt man mit dem Kernel ab den 2. Versionen die Strategie, nachträglich Programmteile nachzuladen um neue Hardware zu unterstützen. Bei meinem System beschränkt sich die neue Hardware ja nun auf ein paar PCMCIA-Karten und die entsprechenden Module werden vom PCMCIA-Kontroller verwaltet. Damit ist die Datei /etc/rc.modules recht übersichtlich. Hier muss jetzt nur die Hardware eingebunden werden, die der Kernel noch nicht kennt (viele Module werden nach wie vor in den Kernel kompiliert, da das System sonst schwerlich booten würde).
#!/bin/sh # rc.modules 07.03.20004# ### Update module dependencies ### # If /usr is mounted and we have 'find', we can try to take a shortcut: RELEASE=`uname -r` if [ -e /lib/modules/$RELEASE/modules.dep -a /lib/modules/$RELEASE/modules.dep -nt /etc/modules.conf ]; then NEWMODS="`/usr/bin/find /lib/modules/$RELEASE -type f -newer /lib/modules/$RELEASE/modules.dep`" # Only rebuild dependencies if new module(s) are found: if [ ! "" = "$NEWMODS" ]; then echo "New kernel modules have been found in /lib/modules/$RELEASE/:" echo "$NEWMODS" echo "Updating module dependencies for Linux $RELEASE:" /sbin/depmod -a else echo "Module dependencies up to date (no new kernel modules found)." fi else # we don't have find, or there is no existing modules.dep, or it is out of date. echo "Updating module dependencies for Linux $RELEASE:" /sbin/depmod -A fi #### toshiba support #### /sbin/modprobe toshiba #### irda #### #/sbin/modprobe irport io=0x2f8 irq=3 #### PC parallel port support ### #/sbin/modprobe parport_pc io=0x378 irq=7 #### Parallel printer support ### #/sbin/modprobe lp
In dieser Datei wird der Rechner zuerst angewiesen, nach neu installierten Modulen nachzuschauen und sie bekannt zu machen. Danach kommt die eigentliche Aktivierung und auch da ist nicht viel zu sehen. Ich habe das toshiba-Support Modul geladen, obwohl ich mir über dessen Sinn noch nicht so richtig im klaren bin. Alle anderen Zeilen starten Mit einem Kommentarzeichen und sind nicht aktiv. Den Druckerport nutze ich nicht, da ich über das Netzwerk drucke und IRDA teste ich erst noch, wenn ich Zeit habe. Alle anderen notwendigen Module (sound, apm, netzwerkkarte) werden erst in den Startscripten für diese Komponenten aktiviert.
Da nicht klar ist, ob der Rechner beim Hochfahren eine Netzwerkkarte, Modemkarte oä. besitzt, werden diese nicht durch Startscripte beim Hochfahren initialisiert. Das habe ich vollständig an den PCMCIA-Kartenkontroller übertragen. Für die Ethernetkarte sieht das so aus. Im Verzeichnis /etc/rc.d/ befindet sich die Datei rc.network_eth0. Sie übernimmt mit start,stop,restart,status die Steuerung des Ethernetdevices. Hier die Quellen des Scripts: /etc/rc.d/rc.network_eth0
#! /bin/sh
# /etc/rc.d/rc.network_eth0
#
# Version:0.1
# frank@schlaefendorf.de
# Editiere die Angaben
DEVICE=eth0
IPADDR="192.168.0.9" # feste IP hier eintragen
NETMASK="255.255.255.0" # netzmaske hier eintragen
USE_DHCP=yes # soll der dhcp-client genutzt werden?
#DHCP_HOSTNAME=`/bin/hostname`
GATEWAY="" # gateway bei fester IP
dhcp_start(){
/sbin/ifconfig $DEVICE down
/sbin/dhcpcd -k $DEVICE 2>&1 > /dev/null
sleep 2
echo "Konfiguration von $DEVICE ueber DHCP..."
# Add the -h option to the DHCP hostname:
if [ ! "$DHCP_HOSTNAME" = "" ]; then
DHCP_HOSTNAME="-h $DHCP_HOSTNAME"
fi
/sbin/dhcpcd -t 10 ${DHCP_HOSTNAME} -d $DEVICE
if [ $? -ne 0 ]; then
echo "Es ist kein DHCP-Server erreichbar, statische IP $IPADDR wird konfiguriert "
staticip_start
fi
}
staticip_start(){
# set up IP statically:
# Determine broadcast and network addresses from the IP address and netmask:
BROADCAST=`/bin/ipmask $NETMASK $IPADDR | cut -f 1 -d ' '`
NETWORK=`/bin/ipmask $NETMASK $IPADDR | cut -f 2 -d ' '`
# Set up the ethernet card:
echo "Konfiguriere $DEVICE:"
echo "ifconfig $DEVICE ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}"
/sbin/ifconfig $DEVICE down 2>&1 > /dev/null
/sbin/ifconfig $DEVICE ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}
# ist ein fehler aufgetreten
if [ ! $? = 0 ]; then
echo "$DEVICE wurde nicht konfiguriert."
echo "Das kann folgende Ursachen haben:"
echo "1. Der Kernel unterstützt die Netzwerkkarte nicht, oder die"
echo " Hardware der Karte wurde falsch konfiguriert."
echo "2. Der Rechner besitzt keine Netzwerkkarte."
echo "3. Die Netzwerkkarte ist defekt...."
fi
}
if [ -z "`ifconfig $DEVICE 2>&1 | grep 'Device not found'`" ]; then
case $1 in
"start")
if [ "$USE_DHCP" = "yes" ]; then
dhcp_start
else
staticip_start
fi
;;
"stop")
/sbin/ifconfig $DEVICE down
if [ "$USE_DHCP" = "yes" ]; then
/sbin/dhcpcd -k $DEVICE 2>&1 > /dev/null
fi
;;
"restart")
$0 stop && $0 start
;;
"status"|"check")
/sbin/ifconfig $DEVICE
;;
"suspend")
# leer, da meine netzwerkkarte im suspend alles vergessen hat
;;
"resume")
#leer
;;
*)
echo "Benutze /etc/rc.network_eth0 start|stop|restart|status|"
;;
esac
# Setze den gateway:
if [ ! "$GATEWAY" = "127.0.0.1" -a ! "$GATEWAY" = "" ]; then
/sbin/route add default gw ${GATEWAY} metric 1
fi
exit 0
else
echo " $DEVICE existiert nicht "
exit 1
fi
# End of /etc/rc.d/rc.network_eth0
Dieses Script wird nun vom PCMCIA-Kontroller aufgerufen. Dies geschieht über die Scripte im Verzeichnis /etc/pcmcia. Dort befindet sich nun für jeden Kartentyp eine Skript, dass der PCMCIA-Kartenkontroller immer dann aufruft, wenn ein Ereignis in Bezug auf diese Karte stattfindet. Für die PCMCIA-Netzwerkkarte ist das Script /etc/pcmcia/network zuständig. Es wird durch den PCMCIA-Kontroller mit zwei Parametern aufgerufen.
Je nachdem welches Ereignis stattfindet, wird das Netzwerk-Device mit dem Script /etc/rc.d/rc.network_eth0 initialisiert oder entfernt. Damit braucht man die Karte nur einschieben und der Rest geht von selbst. Zuerst wird automatisch nach einem DHCP-Server gesucht und wenn das keinen Erfolg hat, wird eine feste IP benutzt.
Hier die Quellen des Scripts: /etc/rc.d/rc.network_eth0
#! /bin/sh
#
# Initialize or shutdown a PCMCIA ethernet adapter
#
#
ACTION=$1
DEVICE=$2
case $ACTION in
'start')
logger -i "PCMCIA-INIT START"
/etc/rc.d/rc.network_$DEVICE start
;;
'stop')
logger -i "PCMCIA-INIT STOPP"
/etc/rc.d/rc.network_$DEVICE stop
;;
'check')
logger -i "PCMCIA-INIT CHECK"
/etc/rc.d/rc.network_$DEVICE status
;;
'cksum')
logger -i "PCMCIA-INIT CKSUM"
if [ $WIRELESS = 1 ] ; then exit 1 ; fi
chk_simple "$NEW_SCHEME,$SOCKET,$INSTANCE,$HWADDR" || exit 1
;;
'restart')
logger -i "PCMCIA-INIT RESTART"
/etc/rc.d/rc.network_$DEVICE restart
;;
'suspend')
logger -i "PCMCIA-INIT SUSPEND"
/etc/rc.d/rc.network_$DEVICE suspend
;;
'resume')
logger -i "PCMCIA-INIT RESUME"
/etc/rc.d/rc.network_$DEVICE resume
;;
*)
logger -i "PCMCIA-INIT HELP"
/etc/rc.d/rc.network_$DEVICE help
;;
esac
exit 0
Der APM-Daemon wird ebenfalls über ein Startscript /etc/rc.d/rc.apmd gestartet und gestoppt. Beim Start wird das Kernel-Modul geladen und der apm-daemon gestartet. Hier der Quelltext.
#!/bin/sh
case $1 in
start)
if [ -x /usr/sbin/apmd ] ; then
/sbin/modprobe apm debug=4
if cat /proc/apm 1> /dev/null 2> /dev/null ; then
echo "APM wird gestartet!"
/usr/sbin/apmd -w 13 -W -p 10 -P /etc/apmd_proxy
else
echo "Achtung! Der Kernel unterstützt kein APM!"
fi
else
echo "Der apmd-Daemon ist nicht installiert!"
fi
;;
stop)
killall apmd
/sbin/rmmod apm
;;
restart)
$0 stop && $0 start
;;
esac
Das APM funktioniert leider noch nicht ganz so, wie ich es mir gedacht hatte und wie es die man-Pages beschreiben. Von der Sache her funktioniert das APM-Proxy-Script ähnlich den PCMCIA-Scripten. Immer wenn der APM-Daemon ein Ereignis wahrnimmt, wird das Proxy-Script /etc/apmd_proxy mit folgenden Parametern aufgerufen:
| Scriptaufruf mit Parameternamen | Ereignis |
| apmd_proxy start | Der APM-Daemon wurde gestartet |
| apmd_proxy stop | Der APM-Daemon wurde gestoppt |
| apmd_proxy suspend system | Der APM-Dystem ruft den Suspend-Modus auf |
| apmd_proxy suspend critical | Das APM-System ruft den critical-Suspend-Modus auf |
| apmd_proxy standby system | Das APM-System ruft den Standby-Modus auf |
| apmd_proxy suspend user | Der User hat den Suspend-Modus aufgerufen |
| apmd_proxy standby user | Der User hat den Standby-Modus aufgerufen |
| apmd_proxy resume suspend | Das System kehrt aus dem Suspend-Modus zurück |
| apmd_proxy resume standby | Das System kehrt aus dem Standby-Modus zurück |
| apmd_proxy resume critical | Das System kehrt aus dem critical-Suspend-Modus zurück |
| apmd_proxy change battery | Das APM system meldet "low battery" |
| apmd_proxy change power | Das APM system meldet "AC/battery change" |
| apmd_proxy change time | APM system ported need for time update |
| apmd_proxy change capability | Das APM system meldet eine Änderung der Konfiguration |
Mit dem Proxy-Script kann man nun recht flexibel auf die einzelnen Ereignisse reagieren. So kann man bei leerer Batterie das System kontrolliert herunterfahren oder in den Suspend-Modus schicken oder schnell noch ein sync an die Pkatten schicken, um Datenverluste zu verhindern. Leider ist es mir noch nicht gelungen, den Ladezustand einzustellen, ab dem ein "low battery"-Ereignis ausgelöst wird. Diese Meldung kommt vom BIOS und wird bei einem Ladezustand unter 50% ausgelöst. Deshalb habe ich diese Option abgeschaltet. Hier habe ich mir anders beholfen, doch dazu später. Wie man sieht, befinden sich in dem Proxy-Script die unterschiedlichsten Verzweigungen und die entsprechenden Reaktionen.
#!/bin/sh
# pcmcia karten bei suspend & standby ejecten
APMD_PCMCIA_EJECT_ON_SUSPEND="yes"
# soll das system in den suspend gehen, auch wenn der pc aus einem netzteil
# betrieben wird?
APMD_SUSPEND_ON_AC="no"
# soll vor suspend vom X auf eine textconsole gewechselt werden, damit das
# X stabil gesichert wird (nur waehlen, wenn nötig)
APMD_LEAVE_X_BEFORE_SUSPEND=no
# nach wievielen minuten soll der pc nach der warnung "batterie low"
# herunter gefahren werden
APMD_BATTERY_LOW_SHUTDOWN=2
# RESUME Optionen
# soll die hardwareuhr bei resume neu gelesen werden ?
APMD_SET_CLOCK_ON_RESUME=yes
#
# RETURN VALUE:
# 0 - nominal return; suspend and standby events are accepted
# 1 - reject a suspend or standby (MUST HAVE APM DRIVER 1.10 OR HIGHER)
#
# benoetigte kommandos
CARDCTL=/sbin/cardctl
CHVT=/usr/bin/chvt
ONACPOWER=/usr/bin/on_ac_power
HDPARM=/sbin/hdparm
CLOCK=/sbin/clock
SHUTDOWN=/sbin/shutdown
LOGGER="/usr/bin/logger -i -t apmd_proxy "
# logger -i "apmd_proxy durchlauf $1 $2 "
case "$1" in
# ------------------------------- START ----------------------------
# startroutine
"start")
$LOGGER "START"
# Adjust disk performance like everytime when power changes
$0 change power
;;
# --------------------------- STANDBY -------------------------------
"standby")
$LOGGER "STANDBY"
if [ "$APMD_LEAVE_X_BEFORE_STANDBY" = yes ] ; then
$CHVT 1
sleep 1
fi
# if [ "$APMD_PCMCIA_EJECT_ON_SUSPEND" = yes ] ; then # im standby funktioniert pcmcia bei
# $CARDCTL eject # mir weiter, deshalb abgeschaltet
# fi
;;
# --------------------------- SUSPEND -------------------------------
"suspend")
sync
if [ "$APMD_PCMCIA_EJECT_ON_SUSPEND" = yes ] ; then
$CARDCTL eject
fi
if [ "$APMD_LEAVE_X_BEFORE_SUSPEND" = yes ] ; then
$CHVT 1
sleep 1
fi
sync
$LOGGER "SUSPEND von $2 "
case $2 in
"system")
# if [ "$APMD_SUSPEND_ON_AC" = no ]; then
# $ONACPOWER -q && exit 1 # Reject
# fi
;;
"user" )
# logger -i "Und tschuess .....!"
# nohup $SHUTDOWN -h +1 &
# $ONACPOWER -q
# exit 1
;;
"critical" )
sync # up kritischer zustand, schnell ein sync
shutdown -h now # und sofort abwaerts
;;
esac
;;
# ------------------------------- RESUME ---------------------------
# X herstellen pcmcia initialisieren, uhr stellen
"resume")
$LOGGER "RESUME from $2"
case $2 in
suspend)
if [ "$APMD_SET_CLOCK_ON_RESUME" = "yes" ] ; then
$CLOCK -s $GMT
fi
if [ "$APMD_PCMCIA_EJECT_ON_SUSPEND" = yes ] ; then
sleep 1
$CARDCTL insert
fi
# return to X
if [ "$APMD_LEAVE_X_BEFORE_STANDBY" = yes ] ; then
$CHVT 7
fi
;;
standby)
# nix
;;
esac
;;
# ------------------------------- STOP -----------------------------
# Called when apmd is terminated.
"stop")
$LOGGER STOP
;;
# ------------------------ CHANGE in STATUS ------------------------
"change")
$LOGGER "CHANGE $2"
case $2 in
"power")
# # Set disk performance depending to the state of powersupply
# if [ "$APMD_ADJUST_DISK_PERF" = yes ] ; then
# if command_available $ONACPOWER $HDPARM ; then
# if $ONACPOWER -q ; then
# $HDPARM -q -S "$APMD_AC_DISK_TIMEOUT" /dev/hda
# echo $APMD_AC_FILL_LEVEL 500 64 256 500 \
# `expr $APMD_AC_DATA_TIMEOUT \* 100` \
# `expr $APMD_AC_METADATA_TIMEOUT \* 100` \
# 1884 2 > /proc/sys/vm/bdflush
# else
# $HDPARM -q -S "$APMD_BATTERY_DISK_TIMEOUT" /dev/hda
# echo $APMD_BATTERY_FILL_LEVEL 500 64 256 500 \
# `expr $APMD_BATTERY_DATA_TIMEOUT \* 100` \
# `expr $APMD_BATTERY_METADATA_TIMEOUT \* 100` \
# 1884 2 > /proc/sys/vm/bdflush
# fi
# fi
# fi
#-old # Cancel a running shutdown if on AC power in time
#-old if [ "$APMD_BATTERY_LOW_SHUTDOWN" -gt 0 \
#-old -a -e /var/run/shutdown.pid ] ; then
#-old if command_available $ONACPOWER $SHUTDOWN ; then
#-old $ONACPOWER -q && $SHUTDOWN -c
#-old fi
#-old fi
# Cancel a running shutdown if on AC power in time
if [ "$APMD_BATTERY_LOW_SHUTDOWN" -gt 0 \
-a -e /var/run/shutdown.pid ] ; then
if command_available $ONACPOWER $SHUTDOWN ; then
$ONACPOWER -q && $SHUTDOWN -c
if [ -e /var/run/shutdown.pid ]; then
echo "Warning: Shutdown still running!"
else
echo "AC Power back! Shutdown canceled!"
fi | wall
fi &
fi
;;
"battery")
$LOGGER "BATTERIE LOW"
# battery is at "low" level (BIOS defines -- e.g. as 5%)
# if [ "$APMD_BATTERY_LOW_SHUTDOWN" -gt 0 ] ; then
# $SHUTDOWN -h +$APMD_BATTERY_LOW_SHUTDOWN &
# fi
;;
"capability")
# e.g. added new hardware (not battery!)
;;
esac
;;
esac
exit 0
Leider war der apm-daemon durch die Rueckgabewerte 0 und 1 nicht dazu zu bewegen, einen apm-event nicht auszufuehren. deshalb habe ich diese herausgelassen. Außerdem habe ich den shutdown beim Ereignis "change battery" (geringe Batterieladung) abgeschaltet, da ich bisher keine Möglichkeit gefunden habe, die Schwelle für diese Meldung von 50% zumindest auf 10% herabzusetzen. Einen Rechner schon bei 50%iger Entladung der Batterie herunterzufahren ist wohl mehr als schwachsinnig. Bis eine Lösung gefunden ist, habe ich ein eigenständiges Script mit der Batterieüberwachung beauftragt. Es wird alle 3 Minuten vom cron-daemonen aufgerufen und ermittelt aus der Ausgabe von /proc/apm den Ladezustand der Batterie. Sollte dieser zu gering sein, wird das System mit einem shutdown kontrolliert herunter gefahren.
#!/bin/sh
# /usr/local/sbin/battery_test
# LOGGER=echo
LOGGER="/usr/bin/logger -i -t battery_test "
SHUTDOWN=/sbin/shutdown
if [ -f /proc/apm ]; then
# /usr/bin/on_ac_power ist bei apmd dabei und gibt den ladezustand aus /proc/apm zurueck
VALUE="`/usr/bin/on_ac_power`"
if [ ! -z $VALUE ]; then
if [ $VALUE -le 10 ]; then
$LOGGER "Batteriezustand kritisch"
if [ ! -e /var/run/shutdown.pid ]; then
$LOGGER "shutdown ausgeloest"
for i in 0 1 2 3
do
# piepton ausgewen
echo -e "\007"
sleep 1
done
$SHUTDOWN -h +2 &
fi
else
$LOGGER "Batterie $VALUE% OK"
fi
else
$LOGGER "Netzteil an"
fi
fi
Vielleicht hat ja jemand einen guten Tipp, wie man diese Aufgabe wieder in apmd integrieren kann. Diese Lösung funktioniert zwar, doch sie macht mich nicht so richtig glücklich.
Die Soundinstallation besteht aus zwei Schritten. Zuerst müssen die Kernelmodule für den Soundchip geladen werden. Dies geschieht durch das Programm /sbin/modprobe. Die Daten für die IO-Adresse, und die IRQ und DMA-Einstellung müssen dem BIOS entnommen werden. Nach dem Laden der Module ist das Device /dev/dsp zur Ausgabe von Sounds verfügbar. Damit mehrere Töne zugleich abgespielt werden können, habe ich den esd-Sounddaemon installiert. Dieser wird mit der Datei /etc/rc.d/rc.sound gestartet. Beim stoppen wird zuerst der esd-Sounddaemon gestoppt und danach werden die entsprechenden Module wieder entladen. Ich starte den esd mit den Optionen -r 22050 für den Samplebetrieb mit 22,05kHz und mit -b für den 8-Bit-Betrieb. Diesen habe ich aus Performancegründen gewählt. Der Klangunterschied zwischen 16-Bit und 8-Bit Betrieb ist unerheblich und rechtfertigt auf einem System mit 75MHz den zusätzlichen Resourcenverbrauch in keiner Weise. Die Soundausabe erfolgt über /usr/bin/esdplay Zu IRDA gibt es noch keine befriedigende Ergebnisse. Es ist nach dem Laden der Module möglich, einen anderen PC zu kontaktieren. Leider ist ist es mir noch nicht gelungen, ein Netzwerkdevice zu definieren und einzubinden. Naja, aber ich arbeite daran.
Insgesamt verlief die Installation problemlos. Die Hardware wurde weitgehend automatisch vom Kernel erkannt. Die Klangqualität ist gut, außer über den eingebauten Lautsprecher. Dieser realisiert doch eher dem Klangumfang eines Mittelwellenradios. Die Performance und Stabilität des Systems ist höher als erwartet. Ich habe den Rechner erst wenige Male neu hochfahren müssen (Kernelkompilierung, ebenfalls auf diesem libretto!!), ansonsten klappe ich nach der Arbeit das Display zu und der Rechner geht erst in Standby und danach (5Minuten) in den Suspend to Disk und legt sich schlafen. Nach dem Aufklappen des Displays wird der Systemzustand von der Platte zurückgeladen und man kann an der Stelle weitermachen, an der man aufgehört hat. Da ich die PCMCIA-Karten nicht in den Suspend schicke, sondern mit EJECT abmelde und beim Resume mit INSERT neu initialisiere, wird sofort die neue Umgebung (DHCP) gescannt und der Rechner in ein evtl. vorhandenes Netzwerk eingebunden. Das System läuft auch im X relativ flüssig. Das Abspielen von MP3-Files mit xmms ist kein Problem. Kein Aussetzen und keine Ruckler in der Musik. Bei 96kByte/s ist die Systemlast von xmms ungefähr 30%, bei 128kByte/s liegt sie bei 55%. Selbst mozilla ließ sich nach einer Startzeit von sagenhaften 2 Minuten auf dem System starten und war recht gut bedienbar. Wesentlich sportlicher läuft der dillo-Browser. Er ist für den Libretto wie geschaffen. Dieser Browser ist vollgrafisch, sehr klein (<400kByte) und sehr schnell (ist in 4Sekunden betriebsbereit!!!!!). Leider unterstützt er Frames noch nicht (sollen demnächst implementiert werden) und hat mit animierten GIF-Bildern Probleme. Besonders hervorzuheben ist der integrierte HTML-Error-Scanner, der die HTML-Fehler innerhalb der dargestellten Seite auflistet. Damit ist dieser Browser auch für den Test selbst erstellter Webseiten sehr zu empfehlen.
SOUND
#!/bin/sh
case $1 in
start)
if [ -x /usr/bin/esd ]; then
/sbin/modprobe ad1848 irq=5 io=0x530 dma=1 dma2=0 isapnp=0
/sbin/modprobe opl3sa2
/usr/bin/esd -b -r 22050 &
# /usr/bin/esd -b -r 44100 &
fi
;;
stop)
killall esd
sleep 1
/sbin/rmmod opl3sa2
/sbin/rmmod ad1848
/sbin/rmmod mpu401
/sbin/rmmod sound
/sbin/rmmod soundcore
;;
restart)
$0 stop && $0 start
;;
esac
IRDA
Fazit
![]() XDM-Login |
![]() XFce Windowmanager |
![]() XMMS läuft bestens |
![]() Mozilla quält sich |
![]() DILLO spurtet |
|
| Ein paar Bildschirmfotos | |
Hauptsächlich nutze ich den Libretto für die Administration von Linux-Servern über ssh, Netzwerkanalyse tcpdump..., das Schreiben von perl-Scripten mit nedit und die Präsentation mathematischer Sachverhalte mit gnuplot und apache.
Als Pluspunkte dieses Rechners sehe ich, er ist klein, leicht, kompakt und PC-kompatibel. Gravierende Nachteile sind die zu schwache Hintergrundbeleuchtung des Displays, der katastrophale Mousepoint und der mangelhafte Lautsprecher(Piepser).
Für Verbesserungsvorschläge und Tipps bin ich jederzeit dankbar. Bitte schicken Sie mir eine kurze Nachricht.
Der TodTja der Tod meines Librettos kam über Nacht.
Passiert ist das Ganze bei der Installation einer WLAN-Karte im Libretto.
Dazu habe ich verschiedene WLAN Karten bei ebay ersteigert und meine Experimente begonnen.
Neue Karten gibt es nicht mehr, da in den Libretto nur 16-bit PCMCIA-Karten für 5V passen.
Also bleiben die gebrauchten 11Mbit Karten übrig.
Die erste Karte war eine nagelneue ELSA AirLancer MC-2.
Dafür gibt es ein geeignetes Modul wlan24.
Funktioniert auch recht gut, aber die Karte unterstützt nur 2Mbit/s und bietet keinerlei Verschlüsselung, nützte mir also wenig.
Die zweite war eine WLAN Karte GL2411V1-A von WISECOM, die vom orinoco_cs Modul unterstützt wird.
Das System verhielt sich mit dieser Karte sehr eigenartig. Die Karte wurde nach dem Einstecken erkannt, die Module wurden geladen und die Karte fing an zu blinken.
Eine DHCP-Anfrage an meinen Server ging raus und kam auch dort an.
Die Antwort erreichte die WLAN-Karte wohl nicht mehr, denn sie hat sich jedesmal aus unerklärlichen Gründen einfach abgeschaltet.
Nach mehreren Versuchen mit unterschiedlichen Optionen für die einzelnen PCMCIA-Module hatte ich ca 1 Minute Kontakt und konnte auch eine Webseite holen.
Dann das alte Lied, völlige Abschaltung der WLAN-Karte. Danach war es immer ein Glücksspiel, die Karte zu entfernen.
Manchmal ging das Entfernen der Karte aus dem PCMCIA-Schacht gut und oftmals verhielt sich das System danach sehr instabil oder stürzte komplett ab.
Mehrmals war das Dateisystem so stark beschädigt, dass ich die Platte ausbauen und mein vorher angelegtes Image aufspielen musste.
Bei allen diesen Experimenten war mir aufgefallen, dass sowohl die ELSA Karte als auch die von WISECOM selbst bei nur kurzer Betriebszeit aussergewöhnlich warm wurden.
Ich vermutete ein Hardwareproblem auf dem PCMCIA-Slot. Entweder ein Buskonflikt oder ein Problem in der Stromversorgung.
Ich baute deshalb die Festplatte und die Funkkarte in einen anderen Laptop ein und alles lief tadellos.
Nun wollte ich die PCMCIA-Schnittstelle des Librettos genauer untersuchen und baute die Festplatte wieder ein, doch der Libretto sagte keinen Mucks mehr.
Da ich das Gerät wegen des PCMCIA-Slots sowieso öffnen wollte, nahm ich es gleich komplett auseinander.
Zu meiner Bestürzung musste ich feststellen, dass die Schutzfolie auf der Hauptplatine durch den häufigen Wechsel der Festplatte aufgerissen war und etliche darunterliegende Durchkontaktierungen unwiederbringlich zerstört waren.
Das kommt dadurch Zustande, dass die Festplatten im Libretto quasi auf dem Kopf hängend in den sehr engen Laufwerksschacht eingebaut werden.
Auf der Leiterplattenseite der Festplatten stehen einige recht scharfkantige Gehäuseteile und Schraubenköpfe hervor, die die Schutzfolie nach und nach immer mehr zerstört haben.
Mein Libretto war nach über einem Jahr treuen Diensten hin. Er lief im normalen Betrieb sehr stabil und ohne Probleme. Ich habe den Rechner in diesem einen Jahr nur zweimal herunterfahren müssen, denn ich hatte einen neuen Kernel kompiliert.
Ansonsten habe ich ihn einfach nur zugeklappt und weggelegt und wenn ich ihn brauchte wieder geöffnet und die Arbeit ging weiter.
Ein Spitzenteil eben.
Mir bleibt nun nur, mich nach einem neuen Gerät umzuschauen, natürlich ein Libretto!!!!
|
Sollte jemand seine Rechte durch eine Veröffentlichung auf dieser oder einer anderen meiner Seiten verletzt sehen, bitte ich um sofortige Kontaktaufnahme.
Ich werde die entsprechenden Inhalte umgehend entfernen.
Somit sind sowohl ein anwaltlicher Rat als auch eine kostenpflichtige Abmahnung nicht erforderlich!
Weiterhin weise ich darauf hin, dass der Inhalt verlinkter Seiten nicht in meiner redaktionellen Verantwortung liegt. |
www.schlaefendorf.de 2011