Kernel sem MMU?

6

Eu gostaria de tentar compilar o kernel mmu-less. Pelo que encontrei na configuração, não há opção para tal coisa. É possível ser feito?

    
por backman 15.03.2015 / 22:56

2 respostas

10

Você pode compilar um kernel Linux sem suporte ao MMU na maioria das arquiteturas de processador, incluindo o x86. No entanto, como essa é uma configuração rara apenas para usuários que sabem o que estão fazendo, a opção não está incluída no menu exibido por make menuconfig , make xconfig e semelhantes, exceto em algumas arquiteturas para dispositivos incorporados em que a falta de MMU é relativamente comum. Você precisa editar o arquivo .config explicitamente para alterar CONFIG_MMU=y para CONFIG_MMU=n . Como alternativa, você pode fazer a opção aparecer no menu editando o arquivo em arch/*/Kconfig correspondente à sua arquitetura e substituindo a sub-rotina começando com CONFIG MMU por

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

Mesmo se você fizer a opção aparecer nos menus, talvez seja necessário ajustar a configuração resultante para torná-la consistente internamente. Sistemas x86 sem MMU são muito incomuns.

A maneira mais fácil de experimentar com um sistema sem MMU deve ser executar um sistema genuíno sem MMU em um emulador, usando a configuração do kernel do Linux fornecida pelo fornecedor do hardware ou com o emulador.

Caso isso não esteja claro, os sistemas Linux normais precisam de uma MMU. O kernel do Linux pode ser compilado para sistemas sem MMU, mas isso introduz restrições que impedem a execução de muitos programas. Comece lendo o suporte para mapeamento de memória No-MMU . Eu não acho que você pode usar glibc sem um MMU, µClibc é normalmente usado em seu lugar. A documentação do projeto µClinux também pode ser relevante (µClinux foi o projeto original para um Linux sem MMU, embora atualmente o suporte para MMU- menos sistemas foram integrados na árvore principal do kernel, assim você não precisa usar o µClinux).

    
por 15.03.2015 / 23:37
2

dê uma olhada no ELKS (subconjunto de kernel do linux embutido) ou na versão 1 do Minix

    
por 15.03.2015 / 23:12