15

I would like to try compile mmu-less kernel. From what I found in configuration there is no option for such a thing. Is it possible to be done?

pfulop
  • 253

2 Answers2

22

You can compile a Linux kernel without MMU support on most processor architectures, including x86. However, because this is a rare configuration only for users who know what they are doing, the option is not included in the menu displayed by make menuconfig, make xconfig and the like, except on a few architectures for embedded devices where the lack of MMU is relatively common. You need to edit the .config file explicitly to change CONFIG_MMU=y to CONFIG_MMU=n. Alternatively, you can make the option appear in the menu by editing the file in arch/*/Kconfig corresponding to your architecture and replacing the stanza starting with CONFIG MMU by

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

Even if you make the option appear in the menus, you may need to tweak the resulting configuration to make it internally consistent. MMU-less x86 systems are highly unusual.

The easiest way to experiment with an MMU-less system would be to run a genuine MMU-less system in an emulator, using the Linux kernel configuration provided by the hardware vendor or with the emulator.

In case this wasn't clear, normal Linux systems need an MMU. The Linux kernel can be compiled for systems with no MMU, but this introduces restrictions that prevent a lot of programs from running. Start by reading No-MMU memory mapping support. I don't think you can use glibc without an MMU, µClibc is usually used instead. Documentation from the µClinux project may be relevant as well (µClinux was the original project for a MMU-less Linux, though nowadays support for MMU-less systems has been integrated into the main kernel tree so you don't need to use µClinux).

1

have a look at ELKS (embeddable linux kernel subset) or verison 1 of Minix

Jasen
  • 3,761