MMU-weniger Kernel?

10

Ich möchte versuchen, einen Kernel ohne MMU zu kompilieren. Nach dem, was ich in der Konfiguration gefunden habe, gibt es für so etwas keine Option. Ist das möglich?

pfulop
quelle

Antworten:

13

Sie können einen Linux-Kernel ohne MMU-Unterstützung auf den meisten Prozessorarchitekturen, einschließlich x86, kompilieren. Da dies jedoch eine seltene Konfiguration nur für die Nutzer , die wissen , was sie tun, wird die Option nicht im Menü enthalten angezeigt durch make menuconfig, make xconfigund dergleichen, außer auf einigen Architekturen für Embedded - Geräte , bei denen der Mangel an MMU ist relativ häufig. Sie müssen die bearbeitende .configDatei explizit auf Änderung CONFIG_MMU=yzu CONFIG_MMU=n. Alternativ können Sie die Option im Menü anzeigen lassen, indem Sie die Datei arch/*/Kconfigentsprechend Ihrer Architektur bearbeiten und die Zeilengruppe beginnend mit CONFIG MMUby ersetzen

config MMU
        bool "MMU support"
        default y
        ---help---
          Say yes. If you say no, most programs won't run.

Selbst wenn Sie die Option in den Menüs anzeigen lassen, müssen Sie möglicherweise die resultierende Konfiguration anpassen, um sie intern konsistent zu machen. MMU-freie x86-Systeme sind höchst ungewöhnlich.

Der einfachste Weg, mit einem System ohne MMU zu experimentieren, besteht darin, ein echtes System ohne MMU in einem Emulator auszuführen, wobei die vom Hardwarehersteller oder vom Emulator bereitgestellte Linux-Kernelkonfiguration verwendet wird.

Falls dies nicht klar war, benötigen normale Linux-Systeme eine MMU. Der Linux-Kernel kann für Systeme ohne MMU kompiliert werden. Dies führt jedoch zu Einschränkungen, die verhindern, dass viele Programme ausgeführt werden. Beginnen Sie mit dem Lesen der Unterstützung für No-MMU-Speicherzuordnungen . Ich glaube nicht, dass Sie glibc ohne MMU verwenden können. Stattdessen wird normalerweise µClibc verwendet. Die Dokumentation aus dem µClinux-Projekt kann ebenfalls relevant sein (µClinux war das ursprüngliche Projekt für ein Linux ohne MMU, obwohl heutzutage die Unterstützung für Systeme ohne MMU in den Hauptkernbaum integriert wurde, sodass Sie µClinux nicht verwenden müssen).

Gilles 'SO - hör auf böse zu sein'
quelle
Vielen Dank, dies lieferte Informationen, die ich brauchte. Obwohl ich es auf dem x86_64-Emulator verwenden wollte, scheint es nicht einmal möglich zu sein, es zu kompilieren. Es war sowieso ein Experiment für den Teil meiner Arbeit.
Pfulop
Das funktioniert nicht mehr. Der Erstellungsprozess ändert sich CONFIG_MMU=nin CONFIG_MMU=yden Kernel und erstellt ihn mit MMU.
JohnnyFromBF
@JohnnyFromBF Ich denke, das fällt unter "Möglicherweise müssen Sie die resultierende Konfiguration anpassen, um sie intern konsistent zu machen".
Gilles 'SO - hör auf böse zu sein'
1
Ich liebe den Humor dieser Kernel-Hacker.
Ciro Santilli 27 病毒 审查 六四 事件 27
2

Schauen Sie sich ELKS (Embeddable Linux Kernel Subset) oder Version 1 von Minix an

Jasen
quelle
Werde das auf jeden Fall überprüfen.
Pfulop