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:
- Sempre baixando links de download de imagens do sistema
- menu de inicialização código (initscript)
-
Código do aplicativo de menu do AI Multiple OS , incluindo os scripts de controle,
native.sh
is especialmente interessante.