zurück zum Artikel

64-Bit-ARM-Support in Linux-Kernel integriert

Thorsten Leemhuis

Linux 3.7 wird die AArch64-Architektur unterstützen und ermöglicht den Bau eines Kernel-Images, das auf mehreren ARM-Plattformen startet. Neu ist auch Unterstützung fürs Intels Sicherheitsfunktion SMAP.

ARMv8 bringt den AArch64-Ausführungsmodus.

(Bild: ARM)

Knapp 18 Stunden nach der Veröffentlichung von Linux 3.6 [1] hat Linus Torvalds die ersten Änderungen für die Version 3.7 in den Hauptentwicklungszweig [2] des Linux-Kernels integriert. Unter ihnen ist die Unterstützung [3] für die 64-Bit-ARM-Architektur [4] (u. a. 1 [5], 2 [6], 3 [7], 4 [8]), die ARM-Mitarbeiter Catalin Marinas kurz zuvor zur Aufnahme eingereicht hatte [9].

Der Architektur-Code für die offiziell [10] AArch64 genannte Architektur ist jetzt im Verzeichnis arch/arm64/ der Kernel-Quellen gelandet, wie es einige Kernel-Entwickler bei der ersten Vorstellung des Codes gefordert hatten [11]. Bei der Abfrage mit einem Programm wie Uname meldet der Kernel aber weiter das sperrige [12] "aarch64", das auch andere Software zur Unterstützung der 64-Bit-ARM-Architektur nutzen wird; darunter die Binutils, die AArch64 seit Version 2.23.51.0.2 [13] unterstützen, oder die noch vorbereiteten [14] AArch64-Erweiterungen für die GCC [15]. Die 64-Bit-taugliche ARM-Variante wurde im Herbst 2011 mit dem ARMv8-Befehlssatz angekündigt [16]; Applied Micro Circuits Corporation (AMCC) hat mittlerweile erste Musterchips und versprochen [17], noch in diesem Jahre Produkte mit 64-Bit-ARM-Kernen fertig zu stellen.

In den Hauptentwicklungszweig von Linux ist zudem noch eine Patch-Sammlung [18] eingezogen, durch die sich ein Kernel-Image bauen lässt, das auf verschiedenen 32-Bit-ARM-Plattformen bootet. Bislang soll solch ein Image auf den Plattformen Highbank, Vexpress, Mvebu, Socfpga und Picoxcell laufen; bei späteren Kernel-Versionen soll Code weiterer Plattformen konvertiert werden, damit das Kernel-Image auf möglichst vielen Plattformen läuft, wie es in der X86-PC-Welt normal ist. Hintergründe zu diesem Vorhaben liefert ein LWN.net-Artikel [19] und die Videoaufzeichnung eines Vortrags [20] von Linaro-Entwickler Arnd Bergmann ab Zeitcode 26:15.

In den rund 30 Stunden seit der Freigabe von Linux 3.6 [21] hat Linus Torvalds bereits rund 3601 Änderungen eingepflegt; pro Kernel-Version sind es normalerweise zirka acht- bis elftausend. Laut dem Programm Diffstat modifizieren die Änderungen 4.180 Dateien und fügen dabei 220.804 Codezeilen ein und entfernen 141.317 – verschobener Code geht in beide Werte ein. Darunter waren Änderungen [22] (u. a. 1 [23], 2 [24]), durch die der Kernel bei x86-Prozessoren nun die für Intels Haswell-Prozessoren geplante [25] Sicherheitsfunktion SMAP (Supervisor Mode Access Prevention) nutzen kann. Sie soll Userland-Code vor ungewollten Änderungen durch den Kernel schützen, die Angreifer teilweise zur Rechteausweitung nutzen; Details liefert ein Beitrag [26] im Grsecurity-Forum sowie Intels Architecture Instruction Set Extensions Programming Reference [27] ab Seite 408. (thl [28])


URL dieses Artikels:
https://www.heise.de/-1721478

Links in diesem Artikel:
[1] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-6-1714142.html
[2] http://www.heise.de/glossar/entry/Hauptentwicklungslinie-397933.html
[3] http://lwn.net/Articles/506148/
[4] https://www.heise.de/news/ARM-blaest-zum-Angriff-auf-64-Bit-Server-1368660.html
[5] http://git.kernel.org/linus/8c2c3df31e3b87cb5348e48776c366ebd1dc5a7a
[6] http://git.kernel.org/linus/38074229de4774597ea09315ae78a550cada5ba6
[7] http://git.kernel.org/linus/3dd681d944f6d861f12ee03aff17a14342963330
[8] http://git.kernel.org/linus/9703d9d7f77ce129621f7d80a844822e2daa7008
[9] http://thread.gmane.org/gmane.linux.kernel/1367774
[10] http://infocenter.arm.com/help/topic/com.arm.doc.aeg0014e/ABCDEFGH.html#BABJBIJF
[11] https://www.heise.de/news/64-Bit-ARM-Unterstuetzung-fuer-Linux-AArch64-1634303.html
[12] https://www.youtube.com/watch?v=GEcvSq4SDkc&t=0m30s
[13] http://article.gmane.org/gmane.comp.lib.glibc.alpha/25023/
[14] http://gcc.gnu.org/viewcvs/branches/ARM/
[15] http://gcc.gnu.org/ml/gcc-patches/2012-05/msg01694.html
[16] https://www.heise.de/blog/Prozessorgefluester-1370336.html
[17] https://www.heise.de/news/Hot-Chips-ARM-Server-noch-in-diesem-Jahr-1679069.html
[18] http://thread.gmane.org/gmane.linux.kernel/1368173/focus%3D1368179
[19] http://lwn.net/Articles/496400/
[20] http://linuxplumbers.ubicast.tv/videos/news-from-the-arm-architecture/
[21] https://www.heise.de/hintergrund/Die-Neuerungen-von-Linux-3-6-1714142.html
[22] http://article.gmane.org/gmane.linux.kernel/1367870
[23] http://git.kernel.org/linus/52b6179ac87d33c2eeaff5292786a10fe98cff64
[24] http://git.kernel.org/linus/51ae4a2d775e1ee456282d7c60e49693d0a8555d
[25] https://www.heise.de/news/IDF-Spekulationen-um-10-Watt-Mobilprozessoren-1703949.html
[26] http://forums.grsecurity.net/viewtopic.php?f=7&t=3046
[27] http://software.intel.com/sites/default/files/319433-014.pdf
[28] mailto:thl@ct.de