NetBSD/hpcsh

NetBSD/hpcsh auf einem HP Jornada 680 installieren
1 HP Jornada 680/690
2 HP Jornada 720
3 NetBSD installieren
    3.1 Vorbereitung
        3.1.1 Partitionierung der Karte
        3.1.2 Eigentliche Installation
    3.2 Bootprozess
4 pkgsrc benutzen
5 weitere Links / (further links in english)





1 HP Jornada 680/690 (Index)

Foto 1, 400kB, Jornada aufgeklappt, Konsole
Foto 2, 300kB, Jornada komplett mit X11

Der HP Jornada ist ein sogenannter Handheld PC, d.h. er ist sehr klein (zusammengeklappt 195*90*35) verfügt über einen Touchscreen und eine Tastatur. Weiterhin bietet er einen Compact Flash Slot und einen PCMCIA Slot an und ist somit mit NetBSD betreibbar. Ein Handheld PC hat im Prinzip eigentlich nichts mit einem normalen i386 zu tun, sondern er benutzt einen ROM in dem eine Windows CE Version gespeichert ist und etwas RAM (beim 680 je 8MB). Ohne Festplatten und anderen Schnickschnack läuft ein Jornada gut und gerne 8 Stunden. Als CPU kommt eine Super Hitachi SH3 zum Einsatz.

2 HP Jornada 720 (Index)

Der Jornada 720 ist ein Nachfolgemodell des 680er und basiert auf der wesentlich leistungsfähigeren StrongARM CPU und verwendet mehr RAM und ROM. Ein Jornada 720 benötigt den NetBSD/hpcarm Port, der aber im Prinzip genauso wie hier installiert werden kann. Denoch besitze ich keinen 720, kann also dort auch nicht bei Detailfragen helfen.

3 NetBSD installieren (Index)

Da sich Windows CE in einem ROM befindet, lässt es sich logischerweise nicht löschen, kann daher aber als buntes BIOS benutzt werden. NetBSD muss dazu auf eine Compact Flash Karte kopiert werden und aus dem gestarteten WinCE heraus aufgerufen werden.

3.1 Vorbereitung (Index)

Man benötigt die Möglichkeit eine Compact Flash Karte unter NetBSD zu beschreiben, in der Regel reicht hierzu ein Cardreader, der Umass unterstützt (diese werden meist ohne Treiber unter Windows 2000/XP und MacOSX erkannt und teilweise auch explizit mit Linuxunterstützung verkauft) oder eine PCMCIA - CF Adapter, so man einen PCMCIA Slot hat. Die Karte sollte 512 MB groß sein um das komplette Basissystem zu installieren.


3.1.1 Partitionierung der Karte (Index)

Die Karte benötigt 2 Partitionen, eine mit MSDOS Dateisystem und eine für NetBSD. Eine weitere Unterteilung der NetBSD Partition (z.B. swap) ist auf diesem Gerät nicht wirklich sinnvoll.
Die MSDOS Partition ist notwendig um den Bootloader zu starten und den Kernel zu laden weiterhin für eventuell vorhandene Windows Daten, da beim NetBSD-Start der RAM komplett überschrieben wird und der HP wieder in den Urzustand versetzt wird (wie nach dem Entfernen beider Batterien). Prinzipiell reichen also 5MB für die FAT Partition und der Rest für die NetBSD Daten.
Um die Karte zu partitionieren, verwendet man disklabel(8) indem man es mit den Optionen -i -I und dem CF-Device aufruft. Das CF-Device ist das Gerät als das die CF Karte erkannt wurde und von der Hardware (Adapter/Slot) abhängig, mit meinem USB Cardreader wird die CF-Karte als /dev/sd1 erkannt und kann so angeprochen werden. Normalerweise zeigt die Konsole bzw. dmesg die Systemmeldungen bezgl. des Cardreaders an, hier ein Beispiel:
umass0 at uhub0 port 2 configuration 1 interface 0
umass0: Generic Mass Storage Device, rev 1.10/1.00, addr 2
umass0: using SCSI over Bulk-Only
scsibus0 at umass0: 2 targets, 4 luns per target
sd0 at scsibus0 target 0 lun 0: <Generic, USB SD Reader, 1.00> disk removable
sd0: drive offline
sd1 at scsibus0 target 0 lun 1: <Generic, USB CF Reader, 1.01> disk removable
sd1: fabricating a geometry
sd1: 488 MB, 488 cyl, 64 head, 32 sec, 512 bytes/sect x 1000944 sectors
sd2 at scsibus0 target 0 lun 2: <Generic, USB SM Reader, 1.02> disk removable
sd2: drive offline
sd3 at scsibus0 target 0 lun 3: <Generic, USB MS Reader, 1.03> disk removable
sd3: drive offline
Partitionierung der Karte im interaktiven Editor
root@AragornOfArathorn {6} disklabel -i -I /dev/sd1
disklabel: Invalid signature in mbr record 0
partition> P
4 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:   1000944         0     4.2BSD      0     0     0  # (Cyl.      0 -    488*)
 d:   1000944         0     unused      0     0        # (Cyl.      0 -    488*)
partition> a   
Filesystem type [?] [4.2BSD]: MSDOS
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]: 0
Partition size ('$' for all remaining) [488.742c, 1000944s, 488.742M]: 10M
 a:     20480         0      MSDOS                     # (Cyl.      0 -      9)
partition> b
Filesystem type [?] [unused]: ?
Supported file system types:
        4.1BSD          ccd             jfs             System V
        4.2BSD          Eighth Edition  Linux Ext2      unknown
        4.4LFS          FILECORE        MSDOS           unused
        ADOS            HFS             NTFS            Version 6
        Apple UFS       HPFS            RAID            Version 7
        boot            ISO9660         swap            vinum
Filesystem type [?] [unused]: 4.2BSD
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]: a
Partition size ('$' for all remaining) [0c, 0s, 0M]: $
 b:    980464     20480     4.2BSD      0     0     0  # (Cyl.     10 -    488*)
partition> P
4 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:     20480         0      MSDOS                     # (Cyl.      0 -      9)
 b:    980464     20480     4.2BSD      0     0     0  # (Cyl.     10 -    488*)
 d:   1000944         0     unused      0     0        # (Cyl.      0 -    488*)
partition> W
Label disk [n]? y
Label written
partition> Q
root@AragornOfArathorn {7} 
partition> ist der disklabel-prompt
P zeigt die Konfiguration der Partitionen an,
mit a und b kann man die gewünschten Partitionen konfigurieren, man wird nach Typ, Beginn und Größe gefragt
? zeigt eine kurze Onlinehilfe an, W schreibt die Konfiguration und Q beendet disklabel
Anschließend kann man mit newfs_msdos /dev/sd1a bzw. newfs /dev/sd1b die Partitionen mit dem Dateisystem beschreiben lassen und nun normal mounten.

3.1.2 Eigentliche Installation (Index)

Momentan bietet es sich an die Release Engineering Snapshots von ftp://releng.netbsd.org/pub/NetBSD-daily/ downzuloaden, den Kernel (hpcsh/binary/kernel/netbsd-GENERIC.gz) und hpcboot.exe auf die FAT-Partition zu kopieren und das Userland auf die NetBSD Partition. Die Binarysets (alles in binary/sets/) enthalten das eigentlich Userland (also die NetBSD Anwendungsprogramme wie /bin/ls oder /sbin//mount) und müssen auf der CF Karte ntpackt werden. Da die CF Karten in der Regel recht langsam sind, kann dies schon mal länger dauern (bei mir mit NetBSD 2.0 knapp 3 Stunden). Man kopiert nun die erwünschten Sets (man sollte bspw. die manpages weglassen, da dies viele kleine Dateien sind) auf die CF Karte und entpackt sie mit: for i in *;do;tar -xzpf $i;done (das -p veranlasst tar die Dateirechte anzupassen, vergisst man dies, kann man sich nicht einloggen, da die login-Dateien nicht root gehören).
Hat man die Daten auf die Karte kopiert, wechselt man in das /dev/ Verzeichnis des Karte und ruft ./MAKEDEV all auf, um die System- und Gerätedateien zu erstellen.
Außerdem sollte man zumindest die Grundkonfiguration (/etc/rc.conf und /etc/rc.local) am PC vornehmen, da der Jornada doch etwas fitzelig in der Handhabung ist. Hinweise zur Konfiguration finden sich im Shortguide


3.2 Bootprozess (Index)

Der Jornada bootet nicht wie ein herkömmlicher Rechner, sondern läd seinen letzten abgespeicherten Zustand. Sobald man ihn einschaltet wird man von der debilen Windows Fratze angegrinst. Am einfachsten bootet man NetBSD über den Windows Explorer Shortcut ([Windows-Taste] + [E]). Öffnet der Explorer, kann man sich mit den Pfeiltasten und Enter in die Speicherkarte hangeln und hpcboot.exe aufrufen. Glücklicherweise speichert hpcboot.exe die Einstellungen in einer Textdatei ab, so das diese nicht jedesmal neu eingegeben werden müssen. Einzustellen sind hier der Pfad zum Kernel (hier netbsd-GENERIC.gz) sowie das Tastaturlayout und weitere kleine Systemeigenschaften. Nachdem man [boot] angetippt hat, startet der NetBSD Bootprozess und überschreibt den RAM. Ist NetBSD gestartet, kann man es wie gewohnt benutzen und bspw. mit einer 802.11 PCMCIA Karte WLANs scannen oder mit vim LaTeX Dateien bearbeiten.

4 pkgsrc benutzen (Index)

Da NetBSD und pkgsrc äußerst portabel sind (ich meine dies nicht im Sinne wie einige System ihre Pseudportabilität herausposaunen) bietet es sich natürlich an, pkgsrc auf dem Jornada zu benutzen. Die einfachste Möglichkeit ist es das pkgsrc-Repository per NFS zu importieren (Niemand möchte 78.000 Dateien auf einer CF Karte entpacken). Um NFS einzurichten, verweise ich auf den Shortguide: http://www.lindloff.com/netbsd/netbsd-net.html#AEN2457. Ist pkgsrc auf dem Jornada eingemountet, benötigen wir ersteinmal etwas swap-space. Dies geht am einfachsten indem wir mit
dd if=/dev/zero of=/swap bs=1m count=16
chmod 600 /swap
echo "/swap none swap sw" >> /etc/fstab
swapctl -l
"no swap devices configured"
swapctl -A
"adding /swap as swap device at priority 0"
eine Datei als swapspace konfigurieren. Es ist auch möglich diese Datei per NFS zu importieren, allerdings hat dann ein Zusammenbruch des Netzes i.d.R. tödliche Konsequenzen. Haben wir nun swap und NFS am laufen, können wir pkgsrc wie gewohnt verwenden und Binärpakete kompilieren.

5 weitere Links / (further links in english) (Index)

NetBSD/hpcsh
supported systems
Palmtop NetBSD, english OnLAMP Article about NetBSD on Jornada 720, but fits 680 too
NetBSD/hpcsh for HP Jornada 680 and 690 (english, UWE is the main developer of NetBSD/hpcsh)
ornada 680/690 - Hardware - Einzelteile - ein 680 komplett zerlegt
technical details
NetBSD/hpcarm für Jornada 720er
O'Reilly ONLamp article by M.L. Lucas, covering NetBSD on a HP Jornada 728 (english), might fit 680 installation as well.






net-tex.de, Index
$Id: netbsdhpcsh.html,v 1.27 2014/08/21 09:24:04 stefan Exp $ 
Autor: Stefan Schumacher, stefan@net-tex.de, PGP-Key 0xB3FBAE33
für net-tex.de/cryptomancer.de

Bitte beachten Sie, das die Seite inhaltlich seit Ende 2007 nicht mehr gepflegt wird!
Aktuellere Informationen erhalten Sie auf Kaishakunin.com