13

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?

2 Answers 2

21

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).

4
  • Thank you, This provided information I needed. Altought I wanted to use it on x86_64 emulator it seems it's not even possible to compile. It was anyway experiment for prt of my thesis.
    – pfulop
    Mar 17, 2015 at 15:28
  • That is not working anymore. The build process changes CONFIG_MMU=n to CONFIG_MMU=y and builds the kernel with MMU. Apr 13, 2017 at 13:15
  • 2
    @JohnnyFromBF I think that falls under “you may need to tweak the resulting configuration to make it internally consistent”. Apr 13, 2017 at 13:26
  • 1
    I love the humor of those kernel hackers. Aug 27, 2017 at 8:16
1

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

1
  • Will definitely check that out.
    – pfulop
    Mar 17, 2015 at 15:29

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .