Eu não acho que isso seja possível.
Teoricamente, o que você vai querer fazer é:
- Mova o sistema para o nível de execução "único" usando
init 1
, em que, teoricamente, você só tem o init e o bash em execução. - Desmonte todas as partições, exceto /. Neste ponto, seu sistema pode parar de funcionar, dependendo se o / usr está na partição raiz.
- Monte a raiz do seu outro sistema em algum lugar.
- pivot_root para alterar a raiz para a nova partição.
- Informe ao init para iniciar o novo sistema executando
init 5
(ou 2 ou o que for apropriado).
O problema é que o pivot_root apenas altera a partição raiz para o processo atual, o que significa que ele não afetará o init e quando você informar ao init para iniciar o sistema, ele iniciará o antigo. Você precisaria de uma maneira de dizer ao init para fazer o pivot_root, o que não acho possível.
Ah, e não vamos entrar no que acontece quando seu outro sistema operacional usa um serviço init diferente (por exemplo, o Fedora usa o systemd enquanto o Ubuntu tem o upstart). Você precisaria substituir o processo init (pid 1) sob o kernel e isso é realmente desnecessário.