組み込みLinuxデバイスへのリモートアクセス(SSH)のみが可能で、オペレーティングシステムを新しいバージョンにアップグレードすることが目標であるとします。デバイスには1つのパーティションしかありませんが、50%以上は使用されず、デバイスで使用できるRAMは約256 MBです。何をしますか?私の考えでは、解決策はtempfsとivot_rootを含むことができます。
これを行う方法についての漠然としたアイデアは次のとおりです。
- 新しいrootfs構造をデバイスのディレクトリにアップロードします。
- 一時ファイルシステムをRAMにマウントし、必要なシステムリソースをコピーして、rootfsの処理中にシステムの実行を維持します。
- ivot_root、chroot、またはその両方を使用してrootをtempfsに変更します。確かではありません。
- アップロードしたディレクトリからrootfs構造をコピーして、以前のディレクトリを置き換えます。
- 新しいバージョンのオペレーティングシステムで再起動
私の考えでは、これが実際に動作するには単純すぎるようです。私の計画の抜け穴を指摘し、私が何を見逃しているのか教えてもらえますか?それとも正しく行う方法をよりよく案内してもらえますか?このようなことをした経験がある人はいますか?
ベストアンサー1
chrootは現在のプロセスのルートのみを変更するので、残りのパーティションを変更するとシステムがシャットダウンする可能性が高くなります(したがって現在のプロセスも終了します)。
ivot_rootも同様です。
Hub_root はルートファイルシステムを移動します。現在のプロセスput_oldディレクトリに移動し、new_rootを新しいルートファイルシステムにします。
Raspberry Piのルートファイルシステムを更新する必要がある場合は、USBドライブをここに接続してそこから起動します。一時ファイルシステムはうまく機能し、SDカードを取り外さなくても「実際の」ルートファイルシステムを変更できます。 (ラズベリーパイはアクセスしにくいですが、USBスティックを接続できます。)
RAMディスクで「起動」する適切な方法は考えられません。内部にシステムの最終起動は依然としてメディアで行われます。常にCDを挿入する必要があるすべてのLinux Live CDを考えてみてください。最大システムの内容はすでにRAMにあります。
ファイルシステムを再分割できる場合は、2番目のパーティションに「新しい」OSをインストールし、そのOSをアクティブおよび起動可能としてマークできます。
- 2番目のパーティションのファイルシステムを再パーティション化します(新しいオペレーティングシステム用)。
- 新しいパーティションをアクティブで起動可能としてマーク
- 新しいパーティションフォーマット
- 2番目のパーティションに新しいオペレーティングシステム(または一時オペレーティングシステム)をインストールします。
- 新しい(2番目の)パーティションから起動するには、ブートローダ(grub、LILO ...)を更新してください。
- 再起動
- 最初のパーティションの内容の削除
- 最初のパーティションに新しいオペレーティングシステムをインストールします。
- 最初のパーティションから起動するには、ブートローダ(grub、LILO ...)を更新してください。
- 再起動
- 2番目のパーティションの内容を削除する
- 2番目のパーティションの削除
- 最初のパーティションのサイズをフルサイズに調整
実行中のサイズ変更は難しいですが、このウェブサイトこれが可能かもしれないと主張します。 (2007年に!)これを行うには2 GBのRAMが必要だと主張します。