srm_fw
nicht?Dies bedeutet auch, dass man jedes System, selbst mit Grafikhardware die von NetBSD nicht unterstützt wird, booten kann. Und tatsächlich konzentriert sich das NetBSD/alpha Team auf allgemeine Server und X Clients und nicht darauf X Server auf Desktops laufen zu lassen, so dass die serielle Konsole manchmal die einzige Möglichkeit ist eine Alpha zu booten. Auf einigen älteren Systemen ist die Grafikhardware komplett undokumentiert, so dass eine serielle Konsole hier den Tag retten kann.
Auf fast allen Alphasystemen schaltet die SRM Konsole automatisch in den Konsolenmodus, wenn keine Tastatur angeschlossen ist. An einigen Modellen der 3000er Serie gibt es einen Schalter auf der Rückseite des Gehäuses, der den Konsolenmodus einstellt. Ich glaube, dass es eine entsprechende nicht-temporäre SRM Variable gibt, aber es ist wahrscheinlich besser diese nicht zu setzen, da man im Falle eines Fehlers die Tastatur nicht mehr benutzen kann.
Die meisten Alphas haben COM-Anschlüsse, wie PCs, so dass es sehr offensichtlich ist wie man einen anderen Rechner anschließt und ihn mit tip(1) oder einem anderen Programm als Terminal verwenden kann.
Wenn Sie Pech haben und an Ihrer Alpha der technisch gute, aber extrem inkompatible, DEC MMJ Stecker sitzt, müssen Sie sich ein MMJ Adapter besorgen oder selber machen. Um selber ein Adapter zu machen, lesen Sie die NetBSD Hardware Documentation - Misc Seite und durchsuchen Sie Tommy's Pinout Collection, nach MMJ. Dort erhalten Sie Informationen zur DEC MMJ Belegung und zum DB9, den PCs und Workstations für gewöhnlich nutzen. Um ein Adapter zu bauen, schneiden Sie an einem gewöhnlichen seriellen Kabel einen Stecker ab und passen Sie die Adern an einen MMJ Stecker wie folgt an:
Wenn Sie nicht sicher sind was TX+ und was RX+ ist, Sie aber ein
Voltmeter oder eine LED zur Verfügung haben, können Sie TX+ bestimmen, da es
die höhere Spannung führt und somit die LED zum leuchten bringt.
Ich bin mir nicht sicher ob TX- und RX- wie in der Pinout Collection
beschrieben, verbunden werden sollten. Wenn Wie keine Signalerdung anschließen, werden
Sie trotzdem Strom durch die Schutzerdung bekommen, was eigentlich funktioniert, wenn das
Terminal oder der Terminalemulator einen Stromkreis mit der 3000 teilt und sie nahe
beisammen stehen.
Eine andere Möglichkeit wäre es, den DEC MMJ an einen Mac oder eine SUN anzuschließen,
die ebenfalls eine andere serielle Schnittstelle haben.
Weiterführende Informationen finden Sie in NetBSD Serial Port Primer.
um nur einige zu nennen.
Dies beinhaltet noch nicht die CPU-abhängigen Aktionen
Und auch hier ist die Liste länger ...
Also im Grunde bietet der PALcode eine gute abstrahierte Schnittstelle zu den Eigenheiten der Hardware - das Betriebssystem auf der blanken Hardware laufen zu lassen wäre die reinste Qual.
Beachten Sie, dass die SRM Konsole nicht unbedingt benötigt wird. NetBSD/alpha läuft aber nur auf einer Plattform ohne SRM Konsole, einem parallelen Multicomputer namens Avalon A12. Dies ist keine DEC Maschine und sie hat keine DEC Konsolensoftware. Die installierte Konsolensoftware bietet aber den OSF/1 PALcode und ist kompatibel zur Alpha Konsolenarchitektur (genau wie die SRM Konsole). Die AlphaBIOS Konsolensoftware ist ARC-kompatibel (ARC ist ursprünglich eine Konsole für MIPS Systeme und nicht für Alphas)
Wenn jemand eine freie Konsolensoftware schreiben möchte, sollte er aufmerksam der Konsolenbeschreibung im Green Book und Red Book folgen, denn die Konsolenarchitekur ist nicht schlecht designed.
Genauer gesagt sind die Konsolensoftware und der PALcode eigenständige Einheiten. Wenn NetBSD den PALcode aufruft, ruft es eben nicht die Konsole auf. Es gibt einen PALcode Standardbefehl namens "swppal" welcher es ermöglicht ein anderes PALcode Image zu laden (der NetBSD/alpha Bootlader tut dies, SRM kommt standardmäßig im OpenVMS PALcode vor).
Der PALcode wird also buchstäblich ständig aufgerufen. Nehmen Sie einen NetBSD Kernel, lassen Sie ihn durch objdump --disassemble laufen und per grep nach dem "call_pal" Befehl suchen.
bishop:thorpej 53$ pwd /sys/arch/alpha/compile/GENERIC bishop:thorpej 54$ objdump --disassemble netbsd | grep -c call_pal 4807 bishop:thorpej 55$Einige dieser Befehle kommen an Schlüsselpositionen vor, z. B. bei Systemaufrufen, Interrupts oder Speicherfehlern, des Weiteren nutzt die C Bibliothek diese Funktion.
Der NT PALcode ist sehr gut im Green Book und wahrscheinlich noch besser im Red Book beschrieben. Es ist nicht aussichtslos über NetBSD/arcalpha nachzudenken, der NT PALcode hat aber ein paar Tücken:
Ross Harvey war kurz davor einige der schweren Fehler zu bereinigen, aber er bekam den echten SRM PALcode für das Projekt an dem er arbeitete, so dass er die Fehler nicht bereinigte. Es ist wahrscheinlich erfolgreicher HP/Compaq darauf zu drängen, die aktuellen SRM PALcode Quellen freizugeben, als den MILO PALcode zu reparieren, besonders da Linux ebenfalls auf SRM PALcode für moderne Systeme zurückgreift.
Besitzer von älteren Alpha Testboards oder älteren AlphaPC Motherboards sollten das Alpha EBSDK and Firmware Update Kit (Teilenummer QR-21B02-03) bestellen. Dieses kann direkt bei DEC für $75 + S&H bezogen werden.
show config
kann ihnen die Möglichkeiten anzeigen. Um beispielsweise von Diskette zu booten übergeben Sie:
set bootdef_dev dva0
.
Beispiele:
srm_fw
nicht?
(zurück)
Lesen Sie daher unbedingt die Upgradeanleitung die auf der tru64-unix-managers Mailingliste gepostet wurde.
foo.c:91: cast from pointer to integer of different size. (Umwandlung vom Zeiger zum Integer hat unterschiedliche Größe)Eine Alpha ist eine 64 bittige Maschine, anders als ein Pentium oder Mac, welche beide 32 bittig sind. Viele Programmierer setzen voraus das z. B. Zeiger 32 bittig sind, deshalb erzeugen diese Programme Unmengen von Fehlermeldungen. Allgemein kann man sagen das diese Fehlermeldungen ignoriert werden können, da NetBSD diese Probleme in der Regel automatisch löst (aber *nicht* für Kernelcode!). Sollte das Programm trotzdem schwere Fehler zeigen müssen Sie den Code von 32 Bit / 64 Bit Fehlern bereinigen.
foo.c:192: initializer element for `foo' is not computable at load timewird ausgegeben und der Kompilerlauf bricht ab. Der fragliche Code ist meistens: int foo=(int)"string";
Dies liegt meistens daran, das "foo" 32 bittig ist und die Adresse von "string" 64 bittig. Also wird der Compiler angewiesen die niederwertigen Bits der Adresse zu speichern, was im ELF Format nicht vorgesehen ist. Manchmal hilft es den int auf long zu setzen oder char * zu benutzen.
/usr/local/lib/gcc-lib/alpha-unknown-netbsd1.3/2.7.2.2/cpp
lagen. Seit NetBSD 1.3.2 wird die toolchain in den gängigen Pfad installiert, so dass von dieser Seite keine Probleme mehr herrühren sollten. Wenn Sie Probleme mit der Toolchain haben und keine NetBSD Version größer 1.3.2 laufen haben, sollten sie unbedingt upgraden.
/* * hw.S * * cc hw.S * ./a.out */ #include <machine/asm.h> #include <sys/syscall.h> .text .globl main main: ldgp gp,0(pv) ldi a0, 1 lda a1, hwstring ldi a2, hwlen ldi v0, SYS_write call_pal 0x83 addq zero, zero, a0 ldi v0, SYS_exit call_pal 0x83 1: br 1b hwstring: .ascii "Hello, world\n" hwlen = . - hwstring
/* * Completely standalone assembly Hello, world demo. Has the magic * NetBSD .note section which tells our ELF from generic ELF. * * hwsa.S * * cc -c hw.S * ld hw.o * ./a.out */ #include <machine/asm.h> #include <sys/syscall.h> .set noat .set noreorder .section ".note.netbsd.ident", "a" .long 2f-1f .long 4f-3f .long 1 1: .asciz "NetBSD" 2: .p2align 2 3: .long 199905 4: .p2align 2 .text .globl __start __start: ldgp gp,0(pv) ldi a0, 1 lda a1, hwstring ldi a2, hwlen ldi v0, SYS_write call_pal 0x83 addq zero, zero, a0 ldi v0, SYS_exit call_pal 0x83 1: br 1b hwstring: .ascii "Hello, world\n" hwlen = . - hwstring
Sowohl das Communicator als auch das Navigator Paket laufen zwar schneller als Mozilla, welches jedoch eine höhere Funktionsvielfalt bietet. Erstere benötigen zusätzlich auch OSF1/Digital UNIX/Tru64 Bibliotheken in /emul/osf1.
Bus | Treiber | Karte | Produktcode | Speicher | Max. Auflösung | Farbtiefe |
---|---|---|---|---|---|---|
PCI | tga | ZLXp-E1 | PBXGA-AA | 2 | 1280x1024 | 8 |
PCI | tga | ZLXp-E2 | PBXGA-BA | 8 | 1280x1024 | 32 |
PCI | tga | ZLXp-E3 | PBXGA-CA | 16 | 1280x1024 | 32 |
PCI | tga | PowerStorm 3d30 | PBXGB-AA | 2 | 1280x1024 | 8 |
PCI | tga | PowerStorm 4d20 | PBXGB-BA | 16 | 1600x1200 | 32 |
Dies betrifft allerdings nur den X Server, X Programme laufen hervorragend.
> fatal user trap: > > trap entry = 0x2 (memory management fault) > a0 = 0xffffffffc8000004 > a1 = 0x1 > a2 = 0x1 > pc = 0x1200205b0 > ra = 0x12001a8d4 > curproc = 0xfffffe0000229c00 > pid = 22188, comm = makeDies bedeutet das auf dem System ein DEBUG Kernel läuft und ein Programm oder Benutzer hat einen Coredump bekommen. NetBSD/alpha gibt in diesem Falle die Fehlermeldungen auf der Konsole aus, um damit Entwickler bei der Fehlersuche zu unterstützen. Eine große Menge von PC Programmen hat interne LP64 Fehler, die nur auf einer 64 bittigen Architektur zum Tragen kommen. (Nun ja, manchmal sogar wenn sie für irgendeine Architektur kompiliert werden, aber das ist eine andere Geschichte.)
Sie können diese Fehler ignorieren (es sei denn Sie wollen sie bereinigen). Wenn es in einem Teilprogramm von NetBSD auftritt sollten Sie uns Informieren.
Wenn Ihre Maschine während des Checks abstürzt oder stecken bleibt, hat dies wahrscheinlich nichts mit diesem Problem zu tun.
Wir haben nur den Code für einige Serversysteme in NetBSD 1.4, da DEC die Codes nicht dokumentiert hat und wir mittels verschiedener Headerdateien und verfügbaren Quellcodes einige rekonstruieren konnten.
Ein '660
' Vektor bedeutet meistens `ECC Speicherfehler'.
Ein guter Anteil der Machinechecks wird durch defekte Hardware hervorgerufen. Diese FAQ ist zu kurz um hier weiter auf diese Problematik einzugehen. Das beste ist wahrscheinlich wenn Sie den machine check kopieren und an die freundlichen Leute auf port-alpha@NetBSD.org schicken.
Der NetBSD Kernel repariert diese Probleme während der Laufzeit, obwohl es die Anwendung verlangsamen kann. Jeden nichtlinearen Zugriff zu reparieren erzeugt:
Mit sysctl(8) kann die Reaktion eingestellt werden:
Die Standardreaktion ist:
sysctl -w machdep.unaligned_print=1 sysctl -w machdep.unaligned_fix=1 sysctl -w machdep.unaligned_sigbus=0Ein nichtlinearer Zugriff im Kernel wird immer einen Absturz hervorrufen.
Wenn Sie ein Digital UNIX 3.x (früher DEC OSF/1) System als NFS Server mit NetBSD root-Partitionen einsetzen wollen, bekommen Sie Probleme. Digital UNIX 3.x kommt nicht mit den NetBSD Partitionen klar, wahrscheinlich hat Digital beim Übergang von 16 bittigen zu 32 bittigen Device Nodes Laufzeitcode in den Kernel eingefügt. Unglücklicherweise werden diese Partitionen aber von einem plattenlosen NetBSD System nicht korrekt erkannt. Das einzige Gegenmittel ist ein patchen des Digital UNIX Kernels im Binärformat oder in den Quellen, so dass die meisten Nutzer wohl stattdessen auf Digital UNIX als NFS Server verzichten sollten. Gerüchteweise soll Digital UNIX 4.x dieses Problem nicht mehr haben.
Auf NetBSD Versionen kleiner als 1.4 ist es notwendig installboot(8) aufzurufen um die Anzahl der Blöcke von /boot in die erste Phase des Bootstraps einzutragen und den betreffenden Bootstrap an den Beginn der Festplatte zu installieren. Dies muss wiederholt werden, wenn die zweite Phase des Bootstraps oder des Dateisystems upgedated oder zurückgesichert wird.
Ab NetBSD 1.4 a gibt es ein anderes Primäres Bootstrapprogramm für jedes unterschiedliches root-fähiges Dateisystem, welches /boot automatisch lokalisiert und installiert.
sd1 als Beispiel:
# mounten des Dateisystems mount /dev/sd1a /mnt # Installation des Bootstrapprogramms cd /usr/mdec cp boot /mnt sync sync ./installboot /mnt/boot /usr/mdec/bootxx /dev/rsd1c
# mounten des Dateisystems mount /dev/sd1a /mnt # Installation des Bootstrapprogramms cd /usr/mdec cp boot /mnt ./installboot /dev/rsd1c bootxx_ffs
Dieses Beispiel (selbst wenn es an die entsprechenden Pfad- und Plattenbezeichnungen angepasst wird) funktioniert nicht unbedingt in allen Situation. Sie sollten aufmerksam die installboot(8) man Page lesen um mehr Details über eine entsprechende Konfiguration zu erhalten.
Zusätzlich zu Festplatten funktioniert dieses Prozedere auch mit SCSI Wechselmedien (wie ZIP und JAZ Disketten) so sie denn BSD Disklabels enthalten.
Für diejenigen, die eine bootbare NetBSD/Alpha CD aus dem
cdhdtape
Image unter einem MS Windows System erstellen wollen, sei hier ein
Weg beschrieben.
Besorgen Sie sich die freie "Nero" Demo von
AHEAD Software und
starten Sie das Programm. Gehen sie nach Datei/Image brennen
, wählen Sie
die cdhdtape
Datei aus.
Setzen Sie die Optionen folgendermaßen:
Imagetyp: data mode 1 Blockgröße: 2048 Image Header (bytes): 0 Image Trailer (bytes): 0und lassen Sie "Raw Data", "Scrambled" und "Swapped" unausgewählt.
Ich habe von der CD, gleich nach dem "NetBSD/Alpha 1.4 Primary Boot +" ein paar "dka400.4.0.6.0 is not ready" Fehlermeldungen erhalten, der Bootvorgang hat aber wie gewünscht funktioniert (auf einem AlphaServer 400 4/166).
Alpha Firmware Updates gibt es unter: http://ftp.digital.com/pub/DEC/Alpha/firmware/.
pid prog CALL [-10] pid prog PSIG SIGSYS SIG_DFL pid prog NAMI "prog.core"versucht das Programm ein Mach Systemaufruf abzusetzen. Die Datei /sys/compat/osf1/README.mach-traps beschreibt das Problem.
Im Großen und Ganzen machen Programme die gegen libpthreads.so oder libpthread.so gelinkt sind Mach Systemaufrufe. Glücklicherweise sind das nicht besonders viele Programme, Acroread ist bisher das einzig produktive.
Es gibt einen Bericht, dass solch ein Dateisystem mit zu vielen Datein als leer angezeigt wurde.
Was immer Sie auch ausprobieren, nehmen Sie unbedingt unwichtige Daten und lassen Sie uns wissen wenn Sie neue Erkenntnisse gewinnen.
|
|