MMU-less kernel?

13,948

Solution 1

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

Solution 2

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

Share:
13,948

Related videos on Youtube

pfulop
Author by

pfulop

Updated on September 18, 2022

Comments

  • pfulop
    pfulop over 1 year

    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
    pfulop about 9 years
    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
    pfulop about 9 years
    Will definitely check that out.
  • JohnnyFromBF
    JohnnyFromBF about 7 years
    That is not working anymore. The build process changes CONFIG_MMU=n to CONFIG_MMU=y and builds the kernel with MMU.
  • Gilles 'SO- stop being evil'
    Gilles 'SO- stop being evil' about 7 years
    @JohnnyFromBF I think that falls under “you may need to tweak the resulting configuration to make it internally consistent”.
  • Ciro Santilli Путлер Капут 六四事
    Ciro Santilli Путлер Капут 六四事 over 6 years
    I love the humor of those kernel hackers.