ハードドライブのISOファイルからLinuxをRAMとして起動し、Linuxを再インストールします。

ハードドライブのISOファイルからLinuxをRAMとして起動し、Linuxを再インストールします。

以下の場合があります。

Ubuntu 14.04のインストールをバージョン22.04にアップグレードする必要があります。ハードドライブを再パーティション化し、以前の14.04インストールを完全に消去する必要があります。 Ubuntu 14.04はハードドライブでLVMを使用します。

Ubuntu 22.04 .isoファイルをRAMにロードしてから、RAMから.isoファイルを起動するようにGRUBを設定できますか? GRUBを変更してハードドライブ(Ubuntu 22.04を含む)から.isoファイルを起動できましたが、ハードドライブが使用中のため、再パーティションできません(「toram」オプションを使用してLinuxエントリをロードしたにもかかわらず)。 GRUB) 。

Ubuntu 22.04を使用してUSBスティックからシステムを起動すると、ハードドライブを再パーティションできます。ただし、ハードドライブからインストールし、USBスティックなしで新しくインストールする方法が必要です。遠隔地にコンピュータが数台あり、現場に行かずに再インストールできる必要があります。

答え1

そうではありません。 Grubがすることはカーネル/initrdをロードして引数を渡すだけです。その後、UbuntuはRAMに独自にロードされます。 Grubはこのプロセスにもはや関与しません。

toramUbuntuのkernel / initrdによって実装された関数です。他のライブ画像は、同様の機能に異なる名前を使用したり、まったく実装しないことがあります。

通常、この機能が機能するには十分なメモリが必要です。メモリが制限されているシステムでは、完全に失敗する可能性があります。イメージはRAMに完全に入る必要があり、実際にインストール操作を実行するのに十分なRAMが必要です。

toramコマンドラインからカーネルパラメータにあることを確認できます。

$ grep toram /proc/cmdline
… toram …

次の出力は、Ubuntu 22.04デスクトップamd64を使用して生成されました。

df起動後の出力toram(/dev/shmから/cdromへ):

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           972M  1.5M  971M   1% /run
/dev/shm        3.8G  3.6G  182M  96% /cdrom
/cow            4.8G   58M  4.7G   2% /
tmpfs           4.8G     0  4.8G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           4.8G     0  4.8G   0% /tmp
tmpfs           972M  128K  972M   1% /run/user/999

df無効の場合、出力toram(/dev/usbstick は /cdrom で、他はインストールされません):

$ df -h
Filesystem    1K-blocks    Used Available Use% Mounted on
tmpfs            995092    1496    993596   1% /run
/dev/usbstick   3737140 3737140         0 100% /cdrom
/cow            4975444   58760   4916684   2% /
tmpfs           4975444       0   4975444   0% /dev/shm
tmpfs              5120       0      5120   0% /run/lock
tmpfs           4975444       0   4975444   0% /tmp
tmpfs            995088     120    994968   1% /run/user/999

freeイネーブル後の出力toram(3.6Gi共有、4.9Gi使用可能):

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           9.5Gi       736Mi       4.4Gi       3.6Gi       4.4Gi       4.9Gi
Swap:             0B          0B          0B

free無効の場合、出力toram(81Mi共有、8.5Gi使用可能):

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           9.5Gi       727Mi       4.4Gi        81Mi       4.4Gi       8.5Gi
Swap:             0B          0B          0B

これはシステムによって異なるように見えるかもしれませんが、おおよその動作方法は次のとおりです。サーバーまたはネットワークブートイメージは、RAMの要件が異なる場合があります。

答え2

解決策が見つかりましたこここれがうまくいくかどうかテストしました。

簡単に言えば、手順は次のとおりです。

  1. 既存のUbuntu 22.04 ISOインストールファイルを一時的な場所に抽出します。
  2. ファイルをcasper/initrd一時的な場所に抽出します。
  3. ファイルに次の行を追加しますcasper/scripts/casper-bottom/05mountpoints(ファイルの最後の行の直前)。
if grep -q '^[^ ]* /isodevice ' /proc/mounts; then
    mkdir -p /root/isodevice
    mount -n -o move /isodevice /root/isodevice.
fi

(実際にif文をスキップし、mkdirおよびmountコマンドのみを追加しました)

  1. initrdファイルを再パッケージして元のファイルを置き換えます。
  2. ISO ファイルを再パッケージします。
  3. Grubが見つかるように変更されたISOファイルをハードドライブにコピーします。
  4. コンピュータを再起動し、toramgrubのオプションを使用してISOファイルを起動します。
  5. ターミナルウィンドウを開き、次のコマンドを入力します。
sudo losetup -d /dev/loop0
sudo umount /isodevice
  1. これで、同じハードドライブにハードドライブを再パーティション化し、Ubuntu 14.04の代わりにUbuntu 22.04をインストールできます(通常のアップグレード手順である16.04 - > 18.04 - > 20.04を実行しなくても機能しません)。

これらの手順がないと、Ubuntu 22.04は起動中のハードドライブを再分割することはできず、GPartedは使用中のファイルシステムがあると文句を言います。

関連情報