GAZ / WZ  vom 14.05.2005

Hardware Abstraction Layer

zurück
..

Der Begriff »HAL« mag einigen noch in Erinnerung haften geblieben sein,
sicher im Zusammenhang mit HAL 9000 und Space Odyssey.
Wenn der Begriff schon mit Computern in Verbindung gebracht wird,
dann darf er auch bei den Betriebssystemen der Klasse NT »New Technology«
verwendet werden. 
Tatsächlich ist dem so, seit NT3.50 wird dieser verwendet.
Allerdings weist Microsoft dem Kürzel HAL die Bezeichnung 
»Hardware Abstraction Layer« zu, eine recht schöne Erläuterung dazu ist
über www.Wikipedia.org [2] zu erfahren. Die in der letzten Kolumne angesprochenen Powermanagement Funktionen (APM, ACPI) residieren 
zum Teil in dieser als »Dynamic Linked Library» konzipierten HAL.
Nicht erst seit Windows XP ist es möglich, andere Versionen dieser 
»Hal.dll« sicher zu installieren, um Multiprozessor- und ACPI-Unterstützung zu ermöglichen oder zu entfernen.
Es gibt Anwendungen die mit mehreren CPU's, ob nun virtuell (HT) oder 
physikalisch vorhanden, ihre Probleme haben können. Möglicherweise sind gerade die Leser davon betroffen, die einen Spieleserver betreiben und diesen eventuell im Internet bereitstellen.
Kaum jemand installiert sich ein zweites Windows auf die Festplatte um diese 
Probleme auszutesten oder mit derartigen Anwendungen dennoch arbeiten zu können.
Da die Pflege einer zweiten Installation immer auch Zeit und erheblichen 
Aufwand bedeutet, lebt man eher mit Merkwürdigkeiten, anstatt diese mal 
kurz und auch recht gefahrlos zu testen.


Schlüssel zu dieser Problemlösung ist die »hal.dll» unter Windows 2000 und höher, sowie kleine Ergänzungen in der normalerweise versteckten Datei »Boot.ini«.
Wird bei einem Computer im BIOS erst nach der Installation von Windows
ACPI aktiviert oder deaktiviert, führt dies dazu dass Windows nicht 
mehr starten will. Es ist allerdings möglich, die HAL.DLL zu ersetzen. Die 
Versionen für die verschiedenen Konfigurationen liegen gepackt auf der 
XP-Installations-CD oder im Verzeichnis des Servicepacks auf der Festplatte. Dies sind:
- Hal.dll - Standard-PC, ohne APIC
- Halapic.dll - Standard-PC mit APIC 
- halmps.dll - Standard-PC mit mehreren CPUs oder Hyperthreading
- halacpi.dll - ACPI-PC ohne APIC
- halaacpi.dll - ACPI-PC mit APIC - Uniprozessor
- halmacpi.dll - ACPI-PC mit mehreren CPUs oder Hyperthreading
Die dazugehörigen ntoskrnl.exe-Versionen sind:
- ntoskrnl.exe - ein Prozessor
- ntkrnmp.exe - mehrere Prozessoren
Man kann eine andere HAL verwenden, indem man einen Starteintrag in der boot.ini dupliziert und noch die Parameter
/HAL=halacpi.dll /KERNEL=ntoskrnl.exe
je nach Konfiguration anhängt. 

Die manipulierte / erweiterte Boot.ini lädt auf Wunsch eine andere HAL

So stellt man sicher, dass der Rechner  auch nach einer ACPI- oder Prozessorumstellung noch willig startet.

Statt ACPI wird ein Standard-PC gestartet, nach der obligatorischen
Hardwareerkennung selbstverständlich. Ein gravierender Eingriff ins System,
der aber funktioniert. Dennoch, eine Sicherung vorher ist nicht falsch.

Zu beachten ist unbedingt, Windows lädt ohne Angabe eine HAL.DLL, die im System32 Verzeichnis liegt, neben der ntoskrnl.exe, die ebenfalls von dort geladen wird. Vor Kopieraktionen ist zuerst der aktuelle Stand zu überprüfen.
Am Besten ist es die im System vorliegende Datei HAL.DLL sowie die ntoskrnl.exe mit denen auf der CD oder dem Servicepackverzeichnis über die Angabe der Größe zu vergleichen. Eventuell umbenennen der neu zu verwendeten Datei wie im Bild [Boot.ini] gezeigt hilft Konflikte zu vermeiden. 
Selbst die im zweiten Bild sehr radikale Umstellung eines neuen Computers zurück auf einen technischen Steinzeit-PC funktioniert. 
Eine Gewährleistung für derartige Aktionen wird natürlich nicht übernommen.
Für Windows Vista gelten die gleichen Regeln, auch wenn der Heise Verlag (c't) hier anderer Ansicht ist.


Weiterführende Links HAL-Optionen [1], HAL- Erläuterung [2]
[1] http://support.microsoft.com/kb/309283/de
[2] http://en.wikipedia.org/wiki/Hardware_abstraction_layer

Michael Bormann