Eu gostaria de tentar configurar um computador para que ele tenha várias instalações Linux, tudo no mesmo sistema de arquivos. Por exemplo, o filesytem teria 3 pastas: /Ubuntu_Precise
, /Ubuntu_Oneiric
, e /Ubuntu_Natty
.
(Eu sei que você pode fazer isso com BTRFS e subvolumes, mas eu gostaria de usar EXT4 para velocidade).
Certa vez, configurei várias instalações de diferentes distribuições usando BTRFS e, ao fazê-lo funcionar, sei que o Grub se sai bem ao inicializar a imagem vmlinuz e initrd a partir de caminhos 'fora do padrão'. Mas quando eu estava fazendo o BTRFS, havia o rootflags=subvol=@<subvolume_name>
que dizia ao kernel para montar esse subvolume como / no sistema de arquivos. Existe algum argumento de que você poderia passar o kernel que o faria ligar a montagem de uma subpasta em uma partição como / e depois inicializar?
Para as outras partes, acho que estou bem perto. Eu sei como especificar uma montagem de ligação /etc/fstab
. Além disso, a partir de quando configuro meu sistema com várias instalações linux nos subvolumes BTRFS, estou acostumado a instalar uma distribuição em uma VM e depois migrá-la usando o rsync, por isso não estou muito preocupado com o que precisaria fazer para obter a configuração correta, estou apenas tentando descobrir qual seria a configuração correta. Depois que eu souber disso, devo poder fazer a migração para as subpastas e editar arquivos com bastante facilidade.
Eu já sei sobre virtualização e partições, mas não é isso que estou procurando. O computador de destino não tem energia suficiente para executar a virtualização e as partições não compartilham espaço livre. Eu estou procurando configurar um sistema que dual / triple / quad / etc inicialize distribuições linux, mas que o faça com um sistema de arquivos, para que não haja nenhum caso de "Eu tenho espaço livre, mas está na partição errada!"
Se alguém tiver sugestões de como editar minha pergunta ou seu título para ficar mais claro, sou todo ouvidos.
fonte
Respostas:
Resposta curta - existe, até onde eu sei, nenhuma solução pronta para atender às suas necessidades específicas. Você precisará ajustar cada initramfs de cada distribuição para suportar suas necessidades específicas.
Resposta longa - sim, é possível. Atualmente, a maioria das distribuições Linux usa um initramfs que será carregado na memória pelo gerenciador de inicialização e depois descompactado pelo kernel. Lá será executado o
/sbin/init
responsável pela configuração do espaço inicial do usuário (executando o udev, carregando módulos, iniciando o plymouth, solicitando uma senha criptografada, configurando a rede para montagens de rede, ... o nome dele). Como você pode executar seus próprios scripts e avaliar os parâmetros de inicialização personalizados.Exemplo para Debian
Se você estiver usando o Debian (deve ser o mesmo com o Ubuntu), poderá colocar um script no
/etc/initramfs-tools/scripts/init-bottom/
qual será executado antes do início do init. Para mais informações sobre o script, os diferentes diretórios e o layout dão uma olhada no man initramfs-tools . Você precisará ajustarrootmnt
e adicionar o diretório de destino.Exemplo de script (não testado) que deve ser instalado como
/etc/initramfs-tools/scripts/local-bottom/00-myroot
ou/usr/share/initramfs-tools/scripts/init-top/00-myroot
:A idéia é ajustar o
rootmnt
que é usado noinit
script initramfs para iniciar / executar o init real. Como o dispositivo raiz já está montado noinit-bootom
estágio, você pode simplesmente ajustar / alterar o diretório de destino.Para usar este script, basta adicionar um novo parâmetro de inicialização, copie o script, torne-o executável, regenere seu initramfs e adicione um parâmetro de inicialização para sua distribuição Linux, por exemplo
rootdir=/Ubuntu_Precise
.fonte
mount /dev/rootdevice /mountpoint
depois que o sistema está em execuçãoAqui estão duas maneiras que funcionam no ubuntu biion (e possivelmente em outro lugar). Eu não tenho representante suficiente para comentar, mas biônico: / usr / share / initramfs-tools / init procura em / etc / fstab / usr logo após chamar o mountroot e antes de chamar os scripts * -bottom, adicionando um init- O script inferior (como sugerido em outra resposta aqui) é "tarde demais". em vez disso, recomendo:
fonte
A inicialização de linux diferente sem mexer com a tabela de partição é interessante para propósitos diferentes. Uma solução alternativa para um sistema de arquivos compartilhado é usar volumes de loop, aqui as poucas mudanças necessárias supondo que você tenha um arquivo / volume / debian loop no sistema de arquivos / dev / sdb1 (Estou usando o atual GNU / Debian sid / unstable para os sistemas operacionais principal e de loop).
Os argumentos definidos no grub como linha de comando linux são definidos como env pelo initrd / init, portanto:
loop permite montar o volume sobre "a si próprio", o fluxo de script padrão
mount /dev/sdb1 /root
é o caso de apenas remontarmos o / dev / sdb1 como rw se fosse ro, sempre anexar amount -o loop /root/debian /root
.Também é necessário pré-carregar algum módulo no initram (então não se esqueça de executar o update-initramfs)
Não sei quanto o uso do loop influencia no desempenho ou desperdiça recursos, estou me perguntando se a montagem ext4 sobre ext4 dobrará as probabilidades de uma falha no sistema de arquivos, mas acho que algum ajuste poderia ser feito. Talvez haja uma maneira melhor de usar loop, menos hackish, se houver, por favor me avise porque não encontrei.
fonte
Esta não é uma resposta, mas quero esclarecer um pouco sobre a resposta e os comentários de Ulrich (não posso comentar acima).
A solução que Ulrich propõe "pode" funcionar (ainda não testada), mas você obterá um sistema de arquivos não remontável . Como solução alternativa (IMHO feio), você pode montar o fs como rw antes de executar o chroot ( como sugerido aqui ), mas tenha cuidado com os scripts init quebrados. Eu acho que essa solução alternativa tem mais efeitos colaterais (como fs quebrados tentando remontar ro e falhar).
Estou usando o kernel 3.2 com ext4 e montando um dev já montado dentro do chroot ainda dá EBUSY como psusi comentou.
fonte