マイコンピュータに複数のスタンドアロンLinuxがインストールされ、適切なLinuxで再起動します。完全な再起動なしで1つから別のものに切り替えることができるかどうか疑問に思います。たとえば、fstabをコピーし、新しくマウントされたパーティションを一覧表示しますmount -a
。
明らかにカーネルは変更されませんが、大丈夫です。作業パーティションのみを変更したいです。私はこれが可能であれば何も実行せずにコマンドラインで実行する必要があることは明らかであると思います。それとも、アイデアは最初から効果がなく、純粋な狂気でしたか?
その理由は、通常、別の「実験的」インストールからラジカルな変更(例:Debianの「amd64」カーネルに移動)を試みるからです。再起動して起動することをお勧めしますが、完全に再起動せずにそのインストールに直接移動できれば良いでしょう。これを単にルートパーティションを動的に変更すると考えるかもしれませんが、これは単に不可能かもしれません。
はい、以下で学んだように可能です。カーネル自体を交換する必要がない場合は、「chroot」を使用してください。完全な再起動をシミュレートするには、「kexec」を使用します。
ベストアンサー1
これは不可能だと思います。
理論的にあなたがしたいことは次のとおりです。
- を使用すると、システムは「シングル」実行レベルに移動します
init 1
。ここでは理論的にはinitとbashだけを実行します。 - / を除くすべてのパーティションをアンマウントします。 / usrがルートパーティションにあるかどうかによって、この時点でシステムの動作が停止することがあります。
- 他のオペレーティングシステムのルートディレクトリをどこかにインストールします。
- ivot_root はルートを新しいパーティションに変更します。
init 5
initに実行(または2または適切なエントリ)を介して新しいシステムを起動するように指示します。
問題は、ivot_rootが現在のプロセスのルートパーティションのみを変更することです。つまり、initには影響を与えず、initにシステムを起動するように指示すると、古いシステムが起動します。 initにivot_rootを実行するように指示する方法が必要です。私の考えでは不可能だと思います。
ああ、そして他のオペレーティングシステムが他のinitサービスを使用しているときに何が起こるのか話しません(たとえば、Fedoraはsystemdを使用し、Ubuntuはupstartを使用します)。カーネルの下のinitプロセス(pid 1)を置き換える必要がありますが、これは実際には不可能です。