誤って削除した initrd イメージを復元するにはどうすればよいですか?

誤って削除した initrd イメージを復元するにはどうすればよいですか?

誤ってシステム上の initrd イメージを削除してしまいました。どうすれば復元できますか?

答え1

これは、ライブ CD から initrd.lz を抽出する方法 (通常はカスタム ライブ CD を作成する場合に使用される) という元の質問に対する回答です。

initrd.lzを作業ディレクトリにコピーします(~

cp /media/cdrom/initrd.lz ~

内容を抽出するディレクトリを作成します。私はinitrd、ディレクトリにcdを使用します。

mkdir ~/initrd
cd ~/initrd

抽出する

lzma -dc -S .lz ../initrd.lz | cpio -imvd --no-absolute-filenames

必要に応じて変更を加え、再パッケージ化します

cd ~/initrd
find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../cusotm.initrd.lz

新しいinitrdはホームディレクトリにあり、cusotm.initrd.lz

答え2

各カーネルの initrd イメージは、カーネルのインストール時にマシン上のモジュールとアプリケーションから構築されます。不足している initrd は、以下のコマンドを使用して簡単に構築できます。

update-initramfs -c -k <version>

(カーネルの適切なバージョンに置き換えることを忘れないでください。)

答え3

これは、コメントに投稿された OP の問題を解決するより良い方法です。

Ubuntu インストールでライブ CD から initrd を使用しようとしています。誤って削除してしまいました。 – Binoy Babu

initramfs を作成するには、まず代替カーネルを起動します (古いものでも問題ありません)。

そして実行する

sudo mkinitramfs 3.2.0-15-generic-pae -o /boot/initrd.img-3.2.0-15-generic-pae

pae カーネルがインストールされていないため、「3.2.0-15-generic-pae」が機能しない場合は、/lib/modules名前を取得するために次の内容を一覧表示します。

ls /lib/modules

古いカーネルがない場合は、ライブ CD を起動して以下を使用できますchroot

  1. まずルート パーティションをマウントします: mount -t ext4 /dev/sdX /mnt。正しいパーティション名を使用してこのコマンドを入力してください。 などのコマンドを使用してlsblk正しいblkidパーティションを見つけます。

  2. [オプション] 別のブート パーティションがある場合は、次のようにマウントします。mount -t ext4 /dev/sdY /mnt/boot

  3. 次に、コマンドに必要なすべての仮想ファイルシステムをバインドマウントしますmkinitramfs... mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys mount --bind /dev /dev/proc

  4. 次に、フォルダーに切り替えて/mntmkinitramfs上記のようにコマンドを実行します。

関連情報