PC-Bau · 21 min read · Jan 11, 2026
EIN PC ENGINES WRAP SYSTEM FÜR ALLGEMEINE NUTZUNG BAUEN
KEYWORDS: PC ENGINES WRAP WRAP BOARD WRAP PLATTFORM LINUX DEBIAN SBC SOC LINUX AUF WRAP NIEDRIGSTROM KLEINER STILLER SERVER
Autor: Nathan L. Cutler
Datum: 18. Juni 2006
Haftungsausschluss
Dieses Dokument wird in der Hoffnung bereitgestellt, dass es für jemanden nützlich sein könnte. Wenn Sie jedoch die in diesem Dokument beschriebenen Verfahren befolgen, tun Sie dies AUF EIGENES RISIKO. Der Autor gibt keine Garantie dafür, dass die Befolgung der hierin enthaltenen Anweisungen zum gewünschten Ergebnis führt. Der Autor übernimmt keine Verantwortung für alles, was jemandem passiert, der dieses Dokument liest oder anderweitig verwendet.
Hintergrund
Ich habe Linux mehr oder weniger als Benutzer seit über zehn Jahren verwendet. In den letzten Jahren habe ich nicht wirklich viel damit gemacht. Im Mai 2006 erzählte mir mein Freund Chip Coldwell (http://frank.harvard.edu/~coldwell) von einem ARM-basierten Einplatinencomputer (SBC), den er erworben hatte und in ein Anrufbeantworter verwandelte. Er machte coole Dinge damit, wie das Aktivieren von DMA-Übertragungen im seriellen Treiber des Kernels. Ich hatte den Begriff “eingebettetes Computing” schon einmal gehört, aber bis dahin hatte ich nicht realisiert, was es bedeutete. Als ich die Bilder von Chips SBC (basierend auf einem Atmel “System-on-a-Chip” (SoC) Chip (Wortspiel beabsichtigt)) sah und im Internet las, dass Leute Linux auf diesen winzigen, abgespeckten Computern laufen lassen, war ich von der Idee fasziniert, ein Linux-System zu haben, das weniger als 10W Strom verbraucht, ohne drehende Lüfter und Festplatten. Schließlich bekam ich ein System zum Laufen, das keine drehenden Lüfter hatte, aber ich musste nachgeben und eine drehende Festplatte dafür besorgen.
Ich verbrachte etwa eine Woche damit, verschiedene Optionen zu betrachten, aber es lief im Grunde auf drei hinaus:
- die WRAP-Plattform von den in der Schweiz ansässigen PC Engines (http://www.pcengines.ch)
- ein VIA EPIA-Board (Mini-ITX-Formfaktor) basierend auf dem C3 Eden-Chip
- die Wiederbelebung eines alten Pentium 90-Boards (mit einem passiven Kühlkörper), Installation eines USB-Adapters und Betrieb mit einem Flash-Laufwerk anstelle einer Festplatte
Diese sind in der Reihenfolge aufgeführt, in der ich sie in Betracht zog. Zunächst war ich begeistert von der WRAP, begann aber bald zu befürchten, dass sie für meine Bedürfnisse unterdimensioniert sein würde, da ich davon träumte, sie zum Abspielen von MP3s und zum Ausführen von X und ähnlichem zu verwenden, und die WRAP keine Audio- oder VGA-Funktionalität hat und keine Möglichkeit, diese hinzuzufügen. Also wurde ich auf die EPIA-Boards von VIA aufmerksam, von denen eines einen integrierten DC-DC-Wandler hat und von einem “Wandstecker” betrieben werden kann. Wiederum, nach ein paar Tagen Recherche war ich bereit, Komponenten zu kaufen und ein System zu bauen. Aber dann schlug meine Frau vor, es könnte besser sein, zu warten, bevor ich eine solche Investition tätige, und ich bekam kalte Füße und begann, die ultra-niedrigpreisige Alternative (dritte in der obigen Liste) in Betracht zu ziehen. Dafür müsste ich jedoch eines der neuen lüfterlosen Schaltnetzteile und einen USB-Adapter kaufen, was erhebliche Kosten hinzufügt, und ich wusste, dass ein solches System viel mehr Strom verbrauchen würde als die WRAP oder das VIA EPIA.
Später wurde mir klar, dass Flash-Speicherkarten und Flash-Laufwerke wirklich nicht geeignet sind, um ein allgemeines System zu betreiben. Sie können gut für Router und andere eingebettete Anwendungen sein, die mit einem schreibgeschützten Laufwerk + einem kleinen Ramdisk (RAM-Disk) auskommen, aber für Ihre alltäglichen Linux-Computing-Bedürfnisse müssen Sie wirklich eine drehende Festplatte haben. Glücklicherweise gibt es jetzt erschwingliche Microdrives, die direkt in den CF-Slot der WRAP passen, der sowohl Typ I als auch Typ II CF-Karten akzeptiert.
Ich wage den Sprung
Ich entschied mich schließlich für die WRAP, aus folgenden Gründen:
- Niedrigster Stromverbrauch der 3 Optionen, bei weitem
- Extreme Miniaturisierung - macht es cooler
- Unterstützung kleiner Unternehmen - das Board wurde von einem Typen in der Schweiz entworfen, nicht von einem Konzern
- Es kann modifiziert werden, um USB zu unterstützen, sodass ich Drucker und das CDMA-Modem anschließen kann.
- Es hat mehr Speicher (128MB) als das alte Pentium 90-Board, für das es schwierig wäre, Speichermodule zu finden
- Ich könnte ohne die Audio- und Video-Funktionalitäten leben, da ich immer A/V-Dinge auf meinem regulären Linux-Rechner machen kann
Also kaufte ich das WRAP-Board. Da ich möchte und brauche, dass mein System USB-Funktionalität hat, war ich angenehm überrascht zu hören, dass sie einen Dual-USB-Adapter dafür vorrätig hatten, also bekam ich das auch. Mehr dazu, wie ich die USB-Option hinzufügte, später. Ich kaufte auch einen Compact Flash-IDE-Adapter, der (angeblich) es ermöglicht, eine CF-Karte in eine reguläre IDE-Schnittstelle zu stecken und sie wie eine Festplatte aussehen zu lassen.
Nachdem ich nach Hause kam, stellte ich fest, dass zwei kritische Komponenten noch fehlten: (1) eine CF-Karte für das Root-Dateisystem und (2) ein NULL-Modemkabel, ohne das ich die Bootmeldungen nicht sehen könnte. Für die Stromversorgung entschied ich mich, ein “Universal” AC/DC-Netzteil zu verwenden, das ich im Lager hatte. Ich holte es heraus, fand einen Stecker, der zum Board passte, und testete die Ausgabe mit meinem Multimeter. Es war genau bei 12V, und ich nehme an, dass die 6VA, die es produziert, ausreichen werden, um das WRAP-Board mit Strom zu versorgen.
Das NULL-Modemkabel, das Sie benötigen, hat an beiden Enden 9-polige weibliche Anschlüsse. Da das WRAP-Board keine VGA-Funktionalität hat, ist der einzige Weg, um ins BIOS-Setup zu gelangen und die Bootmeldungen zu sehen, über den seriellen Port (daher das NULL-Modemkabel), indem man einen Terminalemulator auf einem zweiten Computer verwendet.
CF-Karte oder Microdrive?
Zunächst hatte ich die falsche Vorstellung, dass ich das Root-Dateisystem auf einer 512MB CF-Karte haben und den Rest meiner Daten auf einem 1GB-Flash-Laufwerk haben würde, das über USB 1.1 angeschlossen ist (die WRAP unterstützt kein USB 2.0). Glücklicherweise kaufte ich das Flash-Laufwerk nicht, obwohl ich die CF-Karte kaufte - trotzdem war es günstig (weniger als 400 CZK) und ich kann eine Voyage-Linux-Installation darauf behalten, falls ich jemals beschließe, die WRAP als dedizierten Router zu verwenden.
Nachdem ich versucht hatte, ein Debian-System auf der CF-Karte zu installieren und gescheitert war, als es darum ging, es schreibgeschützt mit nur bestimmten geschäftskritischen Dateien und Verzeichnissen auf einem tmpfs (RAM-Disk)-Dateisystem zum Laufen zu bringen, gab ich auf und installierte Voyage Linux 0.2. Das war relativ schmerzlos, und es war schön zu sehen, wie mein kleines WRAP-Board bootete und mir eine Linux-Eingabeaufforderung gab, aber allmählich dämmerte es mir, dass ich wirklich eine Festplatte haben muss, weil ich das System täglich nutzen möchte und das Root-Dateisystem ständig schreibbar sein muss. Nach einigen Recherchen kam ich auf drei verschiedene Optionen, um eine HDD an die WRAP anzuschließen:
- Baue meinen eigenen CF-zu-IDE-Adapter (d.h. einen, der es mir ermöglicht, ein IDE-Laufwerk in den CF-Slot des WRAP-Boards zu stecken)
- Kaufe ein NASD (Network Attached Storage Device), flashe die Firmware darauf, um es mit Linux zum Laufen zu bringen, exportiere NFS-Freigaben an die WRAP
- Kaufe ein Microdrive und stecke es in den CF-Slot der WRAP
Ich schrieb sie in der Reihenfolge auf, in der sie mir in den Sinn kamen. Die erste Option war für mich die interessanteste, da ich dachte, ich habe drei oder vier 3,5”-Laufwerke herumliegen, ich könnte eines davon verwenden. So unglaublich es auch scheinen mag, es gibt jedoch keinen sofort verfügbaren Adapter, der einen CF-Slot in einen IDE-Port umwandelt, obwohl der CF-Slot im “True IDE”-Modus arbeitet. Teil des Problems ist die Spannung - das WRAP-Board liefert nur 3,3V an den CF, während ein IDE-Laufwerk 5V benötigt. Das macht es mehr zu einem Hardware-Hacking-Projekt, das das Löten von 44 Drähten erfordert. Es wäre schwierig mit dem Standard-IDE-Anschluss, aber mit dem CF-Anschluss, der viel kleiner ist, wäre es fast unmöglich.
Gestern hatte ich keine Ahnung, dass es so etwas wie ein NAS gibt. Ich fand heraus, dass es existiert, weil ich dachte, vielleicht gibt es einen Adapter, um ein IDE-Laufwerk an einen RJ45-Ethernet-Port anzuschließen. Ich dachte, da ich eine zusätzliche LAN-Schnittstelle habe, die ich nicht benutze, könnte ich die HDD daran anschließen. Sicher genug fand ich eine Menge kleiner Kästchen, die Festplatten enthalten - man steckt sie einfach in sein LAN und los geht’s. Das Problem ist, dass diese Kästchen deutlich teurer sind als ein 3,5”-HDD, da sie SBCs (Single-Board-Computer) enthalten. Aber ich sagte mir, ein SBC ist das, was ich hier zu bauen versuche - es macht nicht viel Sinn, zwei davon zu haben. Trotzdem war ich versucht, einen Linksys LSLU2 Network Storage Link zu kaufen, weil ich herausfand, dass es eine aktive Community von Enthusiasten gibt, die daran arbeiten, ihn zu hacken. Sie haben sogar mehrere verschiedene Versionen neuer Firmware dafür, sodass man die Firmware vollständig neu flashen und es in eine Linux-Box verwandeln kann. Diese Lösung schien interessant, aber ich musste zugeben, dass es eine Ablenkung war.
Aus meiner Korrespondenz mit Pascal Dornier, dem Designer des WRAP-Boards, erfuhr ich, dass man einfach ein Microdrive in die WRAP stecken kann und dass es funktionieren wird. Ich hatte diese Möglichkeit nicht in Betracht gezogen, weil (1) ich nur eine vage Vorstellung davon hatte, was ein “Microdrive” ist, und (2) ich dachte, es würde zu viel Strom für die Stromversorgung des WRAP-Boards benötigen und (3) ich dachte, die WRAP akzeptiert nur CF-Typ-I-Karten. Es stellte sich heraus, dass das Microdrive eine ideale Lösung ist - Pascal war sich sicher, dass es funktionieren würde, also ging ich los und kaufte eines. Mit diesem Hindernis überwunden, war der Weg, mein kleines WRAP-Board in eine allgemeine Linux-Box zu verwandeln, frei.
Laut den technischen Spezifikationen verbraucht das IBM/Hitachi 4GB Microdrive 395mA bei 3.3V beim Schreiben, was 1.3 Watt entspricht.
Einrichten des Root-Dateisystems
Da ich am Wochenende Zeit hatte, stöberte ich im Internet und fand ein HOWTO (eigentlich einen Blogeintrag) von Jan Willem (http://www.lextreme.nl) zur Installation eines regulären Debian-Systems auf dem WRAP-Board. Dies sprach mich an, da die Alternativen, wie Voyage Linux, während sie die WRAP ausdrücklich unterstützen, für drahtlose Routing-Anwendungen ausgelegt sind und das Root-Dateisystem von einer CF-Karte betrieben wird. Ich suchte nach einer allgemeineren Lösung, und einfaches Debian schien ideal zu sein. Die Installation ist unkompliziert. Sie benötigen einen CF-zu-IDE-Adapter, um das Microdrive an einen Computer anzuschließen, der bereits Linux ausführt und eine Internetverbindung oder eine Debian-Installations-CD hat. Im Wesentlichen läuft es auf die folgenden grundlegenden Schritte hinaus, die nur eine leicht modifizierte Version von Jan Willems Verfahren sind:
- Verwenden Sie fdisk, um zwei Partitionen auf dem Microdrive zu erstellen, Swap und Root
- Formatieren Sie das Microdrive mit mkfs.ext3 (ich werde ein journaling-Dateisystem verwenden) und mkswap
- Mounten Sie das Microdrive, sagen wir, unter /mnt
- Verwenden Sie debootstrap, um ein minimales Debian-System in /mnt herunterzuladen und zu installieren
- Installieren Sie den 2.6.15-Kernel von Voyage Linux 0.2, richten Sie die Module ein
- führen Sie lilo -r /mnt aus, um den lilo-Bootloader zu installieren
- Verschieben Sie das Microdrive zur WRAP
- Booten Sie die WRAP
Dies ist nur eine verallgemeinerte Liste der Schritte. Die Details folgen.
fdisk
Nachdem ich meine CF-zu-IDE-Karte in den IDE1-Port meines Linux-Rechners gesteckt, das Microdrive in den CF-Slot eingesetzt und den Linux-Rechner eingeschaltet hatte, sieht dmesg das Microdrive als /dev/hdc:
hdc: HMS360404D5CF00, CFA DISK drive
...
hdc: max request size: 128KiB
hdc: 7999488 sectors (4095 MB) w/128KiB Cache, CHS=7936/16/63, UDMA(33)
hdc: cache flushes supported
hdc: hdc1Also führe ich “fdisk /dev/hdc” als root aus. Das Microdrive kommt vorformatiert mit einem FAT32-Dateisystem.
Disk /dev/hdc: 4095 MB, 4095737856 bytes
128 heads, 63 sectors/track, 992 cylinders
Units = cylinders of 8064 * 512 = 4128768 bytes
Device Boot Start End Blocks Id System
/dev/hdc1 * 1 992 3999712+ b W95 FAT32Somit ist der erste Schritt, dieses Baby tief zu begraben und eine Swap-Partition und eine Root-Partition an ihrer Stelle zu erstellen.
Disk /dev/hdc: 4095 MB, 4095737856 bytes
128 heads, 63 sectors/track, 992 cylinders
Units = cylinders of 8064 * 512 = 4128768 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 32 128992+ 82 Linux swap / Solaris
/dev/hda2 33 992 3870720 83 LinuxWie Sie sehen können, habe ich die Swap-Partition am Anfang der Festplatte platziert. Ich könnte wahrscheinlich ohne Swap auskommen, aber was soll’s? 128MB sind nur etwa 3% der Festplatte. Bei einem Ein-Platten-System sollte die Swap-Partition “in der Mitte” der Festplatte sein, aber da ich das schon einmal gemacht habe, würde ich lieber alle meine Daten in einem einzigen Dateisystem haben, als sie auf zwei zu verteilen.
Partitionen initialisieren und mounten
Wie auch immer, die nächsten Befehle dienen dazu, die neuen Partitionen zu initialisieren:
mkswap /dev/hdc1
mkfs.ext3 /dev/hdc2Diese beiden gingen ohne Probleme, also mountete ich /dev/hdc2 als /mnt:
mount -t ext3 /dev/hdc2 /mntMinimales Debian-System mit debootstrap installieren
Dann kam mir der Gedanke, dass entweder (1) ext3-Unterstützung in den Kernel kompiliert werden muss, oder (2) ich initramfs verwenden muss, um das ext3-Modul beim Booten zu laden. Dies könnte ein Problem mit dem Voyage-Linux-Kernel darstellen, der vom monolithischen Typ ist, wenn er ext3 nicht kompiliert hat. Aber ein kurzer Blick auf “voyage-0.2/boot/config-2.6.15-486-voyage” beruhigte mich. ext3 ist vorhanden. Ich kann fortfahren.
debootstrap sid /mnt ftp://ftp.cz.debian.org/debian/Ich wollte “sid” installieren, das neuer ist, aber es schlug an dem Punkt fehl, an dem es versuchte, den “base-config”-Abschnitt herunterzuladen. Aus irgendeinem Grund enthält die sid-Paketliste “base-config”, aber das sid-Repository enthält dieses Paket nicht. Später erfuhr ich jedoch, dass ich, um sid auf einem sarge-System wie meinem zu installieren, die sid-Version von debootstrap aktualisieren muss, was tatsächlich viel Sinn macht. Nachdem ich das getan hatte, funktionierte es ohne einen Fehler.
Was als Nächstes?
In meinem vorherigen Versuch, Debian auf der WRAP zum Laufen zu bringen (unter Verwendung einer CF-Karte), chrootete ich sofort zu /mnt an diesem Punkt und versuchte, das System zu konfigurieren, während die CF-Karte noch in meiner Installationsmaschine war. Das funktionierte nicht so gut, insbesondere als es darum ging, “base-config” auszuführen. Das Problem waren die Locales - im chroot-Gefängnis sah base-config keine Locale-Unterstützung, aber es konnte meine Locale-Umgebungsvariablen sehen. Also gab es viele Warnungen. Um dies zu vermeiden, werde ich auf die anfängliche Konfiguration verzichten und gleich mit der Installation des Kernels und dem Ausführen von lilo fortfahren.
Installation des Voyage Linux 2.6.15 Kernels
Nach einem schwachen Versuch, ein Kernel-Paket für die WRAP zu kompilieren, gab ich auf und lud Voyage Linux 0.2 herunter, das einen vorcompilierten Kernel enthält, der gepatcht wurde, um gut mit der WRAP zu funktionieren. Ein nettes Merkmal dieses Kernels (neben der kompilierten ext3-Unterstützung, wie oben erwähnt) ist, dass er buchstäblich alles als Module enthält. Sie müssen also nicht neu kompilieren - wenn Sie eine Kernel-Funktion aktivieren müssen, fügen Sie einfach den Namen des Moduls zu /etc/modules hinzu.
Zuerst entpackte ich das voyage-0.2-Tarball und begann, darin herumzustöbern. Ich führte die folgenden Befehle aus, um den Voyage-Kernel auf mein CF-Root-Dateisystem zu bringen:
cd voyage-0.2
cp -a boot/* /mnt/boot
cp -a lib/modules/* /mnt/lib/modulesGrundlegende Einrichtung (Vor-Start)
Kernel-Module
Die erste Konfigurationsdatei, die ich bearbeitete, war /etc/modules. Hier ist die /etc/modules, die vom Installationsskript der Voyage-Linux-Distribution für das WRAP-Board erstellt wurde, abzüglich der WLAN-Treiber, die in diesem Dokument nicht behandelt werden:
# LAN-Schnittstellen
natsemi
# Watchdog-Timer im Geode `SC1100` Prozessor enthalten
# Kommentieren Sie die folgende Zeile aus, wenn Sie den Watchdog-Daemon ausführen
# wd1100 sysctl_wd_graceful=0 sysctl_wd_timeout=30
# Hardware-Temperaturüberwachung
lm77
# National Semiconductor SCx200 ACCESS.bus (benötigt für Temperaturmessung)
scx200_acb base=0x820,0
Eine weitere Sache, die mir einfiel, war “depmod”, aber dann stellte ich fest, dass die modules.dep-Datei bereits in /mnt/lib/modules/2.6.15-486-voyage vorhanden ist, also ist das nicht nötig.
/etc/inittab
Die nächste Konfigurationsdatei, die bearbeitet werden muss, ist /etc/inittab. DAS IST ENTSCHEIDEND, ANDERNFALLS BEKOMMEN SIE KEINE SERIELLE KONSOLE. Aus offensichtlichen Gründen geht die Standard-Debian-Installation davon aus, dass Sie eine Tastatur und VGA als Ihre Linux-Konsole haben. Aber die WRAP benötigt eine serielle Konsole. Das bedeutet, wir bearbeiten /etc/inittab, um die virtuellen Konsolen zu entfernen und eine serielle Konsole zu aktivieren. Das ist sehr einfach, aber Sie müssen vorsichtig mit der Baudrate sein - wenn sie nicht mit dem übereinstimmt, was das WRAP-BIOS erwartet, sehen Sie beim Booten nichts im Terminalemulator. Um herauszufinden, was das WRAP eingestellt hat, drücken Sie die “s”-Taste, während das WRAP seinen ersten Speichertest durchführt. Dies bringt Sie ins BIOS-Menü, wo Sie 9600, 38400 oder sogar höhere Baudraten einstellen können. Ich entschied mich für 38400. Hier ist die vollständige /etc/inittab-Datei:
# /etc/inittab: init(8) Konfiguration.
# $Id: index.html,v 1.2 2006/06/19 08:52:38 livingston Exp $
# Die Standard-Runlevel.
id:2:initdefault:
# Boot-Zeit-Systemkonfiguration/-initialisierungsskript.
# Dies wird zuerst ausgeführt, es sei denn, Sie booten im Notfall (-b) Modus.
si::sysinit:/etc/init.d/rcS
# Was im Einzelbenutzermodus zu tun ist.
~~:S:wait:/sbin/sulogin
# /etc/init.d führt die S- und K-Skripte beim Wechseln
# des Runlevels aus.
#
# Runlevel 0 ist Halt.
# Runlevel 1 ist Einzelbenutzer.
# Runlevels 2-5 sind Mehrbenutzer.
# Runlevel 6 ist Neustart.
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normalerweise nicht erreicht, aber Fallthrough im Notfall.
z6:6:respawn:/sbin/sulogin
# Was zu tun ist, wenn der Strom ausfällt/wiederhergestellt wird.
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop
# Serielle Konsole für WRAP
T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100Die letzte Zeile führt getty am seriellen Port aus, sodass man sich als root anmelden kann.
/etc/fstab
Hier gehen wir mit der KISS-Strategie (Keep It Simple, Stupid). Da wir ein Microdrive haben, können wir auf die Idee verzichten, die Anzahl der Schreibvorgänge im Root-Dateisystem zu minimieren.
# WRAP mit Microdrive
/dev/hda1 swap swap defaults, 1 1
/dev/hda2 / ext3 defaults, 0 0
proc /proc proc defaults/etc/apt/sources.list
Diese Datei wird von “apt-get” verwendet, um Repositories von deb-Paketen zu finden. Wir benötigen zu diesem Zeitpunkt nur einen Eintrag:
deb http://ftp.debian.cz/debian/ sid mainSobald wir diese Datei im /mnt-Baum erstellt haben, chrooten wir und installieren zusätzliche Pakete. Einige, wie “less”, sind Annehmlichkeiten, aber andere, wie “lilo”, sind kritisch und Sie können die WRAP ohne sie nicht booten.
chroot /mnt /bin/bash
mount /proc
apt-get update
apt-get install watchdog # geht mit wd1100-Modul
apt-get install less
apt-get install lilo # KRITISCH! DAS IST EIN MUSS!
apt-get install udev # KRITISCH! DAS IST EIN MUSS!
apt-get install [Ihr Lieblingspaket, auf das Sie nicht verzichten können]Beachten Sie, dass, soweit ich weiß, grub nicht mit der WRAP funktioniert und Sie LILO verwenden müssen. Ich wiederhole nur, was ich anderswo gelesen habe, und spreche nicht aus Erfahrung.
/etc/lilo.conf
Der nächste Schritt ist die Installation von lilo (habe ich es wirklich so weit geschafft?!). Hier ist, wie ich es gemacht habe. Nachdem ich herumgehackt und RTFM gemacht habe, kam ich auf Folgendes für die Konfigurationsdatei:
boot = /dev/hdc # Microdrive wird auf meinem System als /dev/hdc angezeigt
disk = /dev/hdc # Microdrive
bios = 0x80 # WRAPs BIOS sieht dies als Primary Master
#compact
lba32 # setze LBA im WRAP BIOS-Setup - aber ich habe es auch mit CHS ausprobiert und es funktioniert auch
install=text
map=/boot/map
vga=normal
delay=1
timeout=50
prompt
serial=0,38400n8 # Keine Möglichkeit, Duplex einzustellen, also bekomme ich eine Verdopplung jedes Zeichens beim Booten. Seufz.
default=Linux
image=/vmlinuz
# initrd=/initrd.img # Voyage Linux verwendet kein initramfs (Gott sei Dank!)
root=/dev/hda2 # So wird das Microdrive auf der WRAP erscheinen
label=Linux
append="console=ttyS0,38400n8 reboot=bios"
read-only
# restricted
# alias=1Wenn Sie “sid” verwenden, gibt es ein Problem: das chroot in “sid” funktioniert anders als das in sarge. In der chroot-Umgebung gibt es kein “/dev/hda” oder “/dev/hdc”. Wenn Sie “df” ausführen, erhalten Sie dies:
Filesystem 1K-blocks Used Available Use% Mounted on
sysfs 3809936 220184 3396216 7% /sysWas das Microdrive ist, aber nicht als “/dev/hdc”. Wenn ich in das /dev-Verzeichnis schaue, sehe ich, dass es nur eine minimale Menge an Gerätedateien gibt, die /dev/hdc nicht enthalten. Daher produziert “lilo -t” einen Fehler, dass es /dev/hdc nicht finden kann. Außerdem muss der Symlink “vmlinuz” im Root-Verzeichnis erstellt werden. Der Workaround, den ich mir dafür ausgedacht habe, ist Folgendes, vorausgesetzt, wir sind bereits in /mnt gechrootet:
cd /
ln -si boot/vmlinuz-2.6.15-486-voyage vmlinuz
cd dev
./MAKEDEV hda
./MAKEDEV hdc
lilo -tAuf meinem System war dies genug, um durch lilo -t ohne Fehler zu kommen.
Als Nächstes tat ich:
lilo -v # ging ohne Fehler
umount /proc # ich weiß nicht, ob das notwendig ist
exit # chroot verlassen
umount /dev/hdc2 # Microdrive aushängen
shutdown -h nowDer Moment der Wahrheit
Alles, was bleibt, ist, das Microdrive in das WRAP-Board zu stecken und es einzuschalten. Wenn Sie jedoch sehen möchten, wie es bootet (und ich bin mir sicher, dass Sie das möchten), müssen Sie den seriellen Port des WRAP-Boards mit einem anderen Computer über ein DB9(weiblich)-zu-DB9(weiblich) NULL-Modemkabel (auch bekannt als Laplink-Kabel) verbinden.
Diese können immer noch gekauft werden, obwohl sie normalerweise ein Sonderbestellartikel sind. Sobald Sie das NULL-Modemkabel an beiden Enden angeschlossen haben, führen Sie ein Terminalemulator-Programm wie (unter Winblows) TuTTY (das ist VIEL besser als Hyperterminal) oder (unter Linux) minicom aus. Die richtigen Einstellungen sind:
baud rate: 38400 (oder was auch immer das WRAP-Board konfiguriert ist)
data bits: 8
parity: none
stop bits: 1
flow control: XON/XOFFDas ist der Moment, auf den wir gewartet haben! In meinem Fall bootete es sofort und belohnte mich mit einer Anmeldemaske:
Debian GNU/Linux testing/unstable wrap ttyS0
wrap login:Beim ersten Mal gibt es kein Root-Passwort, also sollten Sie einfach durch Eingabe von “root” eine Root-Eingabeaufforderung erhalten.
Konfiguration (Nach dem Booten)
Nachdem ich die WRAP vom Microdrive gebootet habe, ist das nur der Anfang. Es gibt noch viele Konfigurationen zu erledigen.
Watchdog-Daemon
Es gibt ein paar Dinge, die man hier beachten sollte. Erstens, wenn Sie die wd1100-Zeile in /etc/modules einfügen, müssen Sie den Watchdog-Daemon ausführen, andernfalls wird das wd1100-Modul Ihr System nach spätestens 30 Sekunden neu starten! Seien Sie also vorsichtig, wenn Sie das wd1100-Kernelmodul aktivieren.
Wenn Sie es aktivieren (mit den oben angegebenen Parametern), müssen Sie nur “apt-get install watchdog” ausführen, während das Microdrive noch in der Installationsmaschine ist (bevor Sie die WRAP booten), und es wird kein Problem geben. Der Watchdog-Daemon ist so eingerichtet, dass er alle 10 Sekunden automatisch auf /dev/watchdog schreibt, während das wd1100-Modul nur neu startet, wenn auf /dev/watchdog in 30 Sekunden oder mehr nicht geschrieben wurde. Also sind Sie auf der sicheren Seite. Sie können “interval” in /etc/watchdog.conf auf 15 Sekunden einstellen, wenn Sie möchten.
Eine weitere Sache, die zu beachten ist, ist, zu welchem Zeitpunkt während des Starts der Watchdog-Daemon gestartet wird. Auf meinem System ist es das allerletzte, was gestartet wird. Das bedeutet, wenn ein anderes Startobjekt verzögert oder zeitlich begrenzt ist, würde das wd1100-Modul laufen, aber der Watchdog-Daemon würde nicht rechtzeitig gestartet werden, um zu verhindern, dass das System neu gestartet wird. Daher habe ich auf meinem System den Start des Watchdogs auf einen früheren Punkt im Bootprozess verschoben. Ich wollte sicherstellen, dass er vor ntpdate gestartet wird, das anfällig für Verzögerungen ist, da es sich mit einem Internetserver verbindet, um die aktuelle Zeit zu erhalten.
Netzwerk
Die Konfiguration des Netzwerks liegt außerhalb des Rahmens dieses Dokuments. Das Minimum, das Sie benötigen, ist, eine feste IP-Schnittstelle in /etc/network/interfaces und Zeiger auf Nameserver in /etc/resolv.conf einzurichten. Es ist auch gut, /etc/hostname und /etc/hosts einzurichten (wenn Sie andere Maschinen mit fester IP in Ihrem Netzwerk haben, können Sie deren IP-Adressen in /etc/hosts einfügen und die Adressen auf menschenlesbare Namen wie “daisy” oder “patty” abbilden).
Telnet/ssh
Wenn Sie Hyperterminal verwenden, um mit der WRAP zu kommunizieren, werden Sie sich bald wünschen, PuTTY stattdessen zu verwenden. Damit das funktioniert, müssen Sie entweder telnet einrichten (obligatorische Sicherheitswarnung: telnet ist nicht sicher - Passwörter werden nicht verschlüsselt, theoretisch könnte jemand Ihr Passwort abfangen, indem er den telnet-Port abhört) oder ssh. Ich benötigte eine schnelle und schmutzige Lösung, also machte ich telnet. Zuerst fügen Sie die folgende Zeile zu /etc/inetd.conf hinzu:
#:STANDARD: Dies sind Standarddienste.
telnet stream tcp nowait telnetd.telnetd /usr/sbin/tcpd /usr/sbin/in.telnetdDann installieren Sie das telnetd-Paket mit “apt-get install telnetd” und bringen den inetd-Superserver zum Laufen (“/etc/init.d/openbsd-inetd start” in Debian “sid”). Die Einrichtung von ssh in sid ist arguably sogar einfacher. Alles, was Sie tun müssen, ist:
apt-get install openssh-serverEs nimmt 2 MB Speicherplatz ein, aber wenn es auch nur die geringste Chance gibt, dass jemand von außen eine Verbindung zum telnet-Port Ihres Rechners herstellen könnte, nun, ich überlasse es Ihnen, zu entscheiden, was besser ist.
Bevor Sie jedoch telnet oder ssh verwenden können, müssen Sie ein Benutzerkonto über “adduser” einrichten. Es ist auch eine gute Idee, ein Root-Passwort über “passwd” festzulegen.
Von hier aus ist es nur eine Frage, PuTTY zu starten und entweder telnet oder SSH auszuwählen. Offensichtlich müssen Sie die WRAP von Ihrem Winblows-Rechner aus sehen können. Wenn Sie TCP/IP aktiviert haben und die WRAP und der Winblows-Rechner im selben Subnetz sind (ich verwende 192.168.0.0/24, die WRAP ist 192.168.0.7 und der Winblows-Rechner ist 192.168.0.5 - all dies sind feste IP-Adressen, DHCP wird nicht verwendet), geben Sie einfach die IP-Adresse der WRAP ein und es sollte funktionieren.
exim4
Verwenden Sie den Befehl “dpkg-reconfigure exim4-config”, um es einzurichten.
ntpdate
Da die WRAP keine Batterie hat, verlieren Sie Ihre Zeiteinstellung jedes Mal, wenn Sie neu starten. Um sicherzustellen, dass die WRAP weiß, wie spät es ist, und vorausgesetzt, Sie haben eine “always-on”-Internetverbindung, können Sie einfach das ntpdate-Paket installieren. Dies wird automatisch einen Zeitserver konsultieren und Ihre Systemuhr beim Booten einstellen.
NFS-Client
Früh hatte ich die Notwendigkeit, auf die Dateien meines Linux-Rechners von der WRAP zuzugreifen. Der Linux-Rechner läuft mit NFS-Kernel-Server Version 2. Um die WRAP darauf zugreifen zu lassen, tat ich Folgendes:
apt-get install portmap
apt-get install nfs-commonAuf der SERVER-Seite richtete ich eine /etc/exports-Datei wie folgt ein:
/home/livingston wrap(rw)(wrap ist in /etc/hosts so eingerichtet, dass es auf die WRAP-Box zeigt)
Auf der WRAP tat ich dies:
mount -o nfsvers=2,rw f216:/home/livingston /mnt(f216 ist der Server.) Für detailliertere Informationen siehe das NFS-HOWTO.
Neat WRAP Tricks
Um die aktuelle Systemtemperatur zu erfahren:
cat /sys/bus/i2c/devices/0-0048/temp1_input(multiplikation des Ergebnisses mit 1000, um Grad Celsius zu erhalten). Hier ist ein kleines Bash-Skript, das benutzerfreundlichere Ausgaben liefert (benötigt “bc”, also führen Sie zuerst “apt-get install bc” aus):
#!/bin/sh
t=`cat /sys/bus/i2c/devices/0-0048/temp1_input`
t2=`echo scale=1",$t/1000|bc -l`
echo "Systemtemperatur: "$t2" Grad Celsius"
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.