Como esta comutação do sistema operacional é feita?

1

* que é demonstrado alternar entre vários sistemas operacionais em execução no beagleboard . Também há poucas informações em seu wiki aqui .

Gostaria de saber que tecnologia eles estão usando para isso ...

Assemelha-se a algum tipo de virtualização, mas provavelmente não é devido ao baixo desempenho da CPU usada. Apenas um sistema parece estar funcionando ao mesmo tempo. Todos os sistemas operacionais são baseados em linux, então ele pode utilizar o mesmo kernel em execução e algum tipo de comutação de espaço de usuário.

*) Atenção: a fonte está no idioma francês-inglês

    
por mykhal 29.08.2011 / 17:38

2 respostas

0

OK, finalmente eu tive que cavar isso sozinho ...

A "tecnologia de virtualização" usada é apenas chroot .

O sistema pode ser escolhido no menu durante a inicialização. Cada um tem sua própria imagem squashfs de somente leitura (incluindo a imagem e os módulos do kernel, todos são da mesma versão) e sobreposição de aufs de leitura e gravação no diretório separado no disco.

Apenas um dos sistemas, no entanto, o SO principal - AI OS ( Alwaysinnovating OS , derivado da distribuição Ångström ), tem o capacidade de lançar / alternar para outro. Isso pode ser feito a partir do menu " AI Multiple OS ", que é um aplicativo Qt simples, apenas uma interface que inicia vários scripts de shell. Inspecionando-os revela que iniciar outro sistema é apenas a preparação do diretório chroot do sistema, montando sua imagem suqashfs e o diretório aufs lá, vinculando ( mount --bind ) os diretórios do sistema necessários (como /dev , /proc , ..) e chrooting isto. Por exemplo, o sistema Ubuntu é iniciado criando sua estrutura chroot, colando um script de inicialização nele (que contém o lançamento de serviços como dbus , hal , ... e rodando Xsession ). Então, outro servidor X11 é lançado com um número de exibição específico ( :2 neste caso) é lançado com xinit . Finalmente, é chrooted com o script de inicialização mencionado.

Assim, os sistemas lançados a partir do AI OS principal são apenas seus ambientes chroot executados no topo do AI OS - é diferente de quando ele estava sendo executado sozinho, selecionado durante a inicialização.

Agora, alternar entre os sistemas em execução (por aplicativo de menu multios no AI OS ou usando o botão de hardware onboard) é apenas alternar entre os terminais virtuais X11 dos sistemas (encontrado processando ps avx output) com chvt . Parar o sistema é apenas matar todos os processos chroot correspondentes (todos os processos do sistema básico, cujo /proc/$PID/root está correspondendo ao diretório chroot do sistema "virtual").

.. espero ter acertado, eu não estava de fato rodando o sistema, apenas inspecionando a imagem e alguma fonte.

alguns links de referência:

por 01.09.2011 / 23:39
2

A menção de limitações de RAM, dificultando a execução de 3 sistemas operacionais por vez, indica que eles estão todos carregados na RAM. Nós também temos esta frase: "Até agora, não é possível usar a GPU do seu beagleboard para AIOS e Android quando eles estão rodando ao mesmo tempo. Ao iniciar o Android a partir do AIOS, nós realmente precisamos descarregar os módulos do kernel 3D que o Android pode usá-los em tempo integral. "

Portanto, minha suspeita é de que o SO Beagleboard que o dispositivo está executando atua como um hipervisor bare-metal, virtualizando os sistemas operacionais convidados. Especificamente, o sistema operacional convidado é executado em um modo chamado paravirtualização . No caso do PV, o hipervisor não está realmente virtualizando o hardware do computador. Em vez disso, o sistema operacional convidado executa um kernel que foi construído para interagir diretamente com o hypervisor, em vez de interagir com o hardware como de costume.

Um exemplo de tal sistema é o Xen Hypervisor , um projeto de código aberto que (iirc) realmente desenvolveu a paravirtualização. Como o Xen é um 'hypervisor bare-metal', ele age como um SO em si, pois é inicializado diretamente (em vez de ser executado dentro de outro sistema operacional). Um sistema operacional Linux pode ser construído com um kernel domU ou guest kernel que executa I / O com Xen em vez de diretamente com hardware. O sistema operacional funciona muito bem porque o kernel faz tudo que um kernel deve fazer, mas como não há hardware virtualizado, isso não é virtualização em um sentido estrito. Como o Xen não precisa perder tempo fingindo ser uma placa-mãe (e todas as coisas em uma e associadas a uma), há muito menos sobrecarga do que em um ambiente totalmente virtualizado (portanto, há muito menos impacto no desempenho). / p>

Como o kernel precisa ser construído para funcionar em tal ambiente, o sistema operacional convidado é geralmente baseado em Linux. É possível fazer outro sistema operacional, porém, apenas mais difícil. Por exemplo, um conjunto completo de drivers foi desenvolvido para executar o Windows no Xen PV.

Para amarrar isso de volta, porque o Xen é muito popular e o FOSS, eu não ficaria surpreso se o sistema Beagleboard for baseado diretamente no Xen ou nos componentes do Xen.

    
por 29.08.2011 / 18:06