web-dev-qa-db-ja.com

誤って削除された/ bootパーティション

これはばかげているように聞こえ、重複がたくさんあるように見えるかもしれませんが、私はほぼ3日を費やして、見ないで解決策を探しました。私の/ bootパーティション(すべてのvmlinuzおよびinitrdファイルと一緒に)、それで私はライブメディアからの標準的な回復方法を試しました(私のシステムがLVMパーティションとEFIモードでインストールされたのでいくつかの変更があります):

mkdir /mnt/fedsys
mount /dev/Fedora/root /mnt/fedsys
mount /dev/sda2 /mnt/fedsys/boot
mkdir /mnt/fedsys/boot/efi (I had to create a new efi dir since it was lost)
mount /dev/sda1 /mnt/fedsys/boot/efi
mount --bind /proc/ /mnt/fedsys/proc
mount --bind /sys/ /mnt/fedsys/sys
mount --bind /dev/ /mnt/fedsys/dev
chroot /mnt/fedsys

ここまでは問題なく動作し、grub.cfgファイルを再生成してみました。

grub2-mkconfig -o /boot/efi/EFI/Fedora/grub.cfg

ただし、次のメッセージで失敗します。

WARNING: Failed to connect to lvmetad. Falling back to device scanning.
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
device-mapper: reload ioctl on osprober-linux-sdd1 failed: Invalid argument
Command failed
done

次に、エラーを無視して、grubのインストールに進みます。

grub2-install /dev/sda

そして、それは次の出力を与えます:

Installing for x86_64-efi platform.
EFI variables are not supported on this system.
EFI variables are not supported on this system.
Installation finished. No error reported.

そして、再起動すると、grubプロンプトが表示されます。さて、問題はvmlinuzもinitrdもどこにでもあるという事実にあると思います(もちろん、/ dev/sda2を削除したため)が、それらを再構築するか、システムを起動する方法を見つけることができません。

私に何ができる?ライブメディアからこれらのファイルを再構築する方法はありますか?私が救出しようとしているシステムは、EFIモードとLVMでFedora 2564ビットを実行していました。

1
arielnmz

同様の問題が発生し、誤ってブートパーティションを削除してしまいました。 @Marekによる回答は、場合によっては非常に役立つことがわかりました。参考までに、使用したコマンドを記述します(@Marekの回答は一般的だったため、いくつかのコマンドをオンラインで検索する必要がありました)

私はFedora30PCを持っています。ブートパーティションは/dev/sda3にあり、ルートパーティションはFedora-rootという名前のLVLMにあります。 rootアカウントですべてのコマンドを実行しました。

  1. Fedoraライブメディアから(USBドライブから)起動しました

  2. ルートパーティションをマウントします

    mount /dev/mapper/Fedora-root /mnt
    
  3. ブートパーティションをマウントします
    mount /dev/sda3 /mnt/boot
    
  4. カーネルをライブパーティションから目的のブートパーティションにコピーします
    cp /boot/vmlinuz-$(uname -r) /mnt/boot/
    
  5. システムパーティションのマウント
    mount --bind /dev /mnt/dev
    mount --bind /sys /mnt/sys
    mount --bind /proc /mnt/proc
    
  6. Rootを/mnt に変更します。
    chroot /mnt
    
  7. initramfs を生成します
    dracut /boot/initramfs-$(uname -r).img $(uname -r) -v
    
  8. Grubを再インストールし、再構成します
    grub2-mkconfig -o /boot/grub2/grub.cfg
    

なんらかの理由で、initramfsの生成が非常に遅く、システムで終了できませんでした(ステップ6)。ただし、ファイルシステムをchrootしなかった場合、コマンドは正常に機能しました。そのため、3からの手順をスキップしました。また、ルートシステムを指すようにdracut構成を変更する必要がありました。

したがって、新しい手順は次のとおりです。

  1. dracut構成のルートの場所をポイントします
    echo "root=/dev/mapper/Fedora/root" > /etc/dracut.conf.d/kernel.conf
    
  2. kernelを再インストールし、initramfs [.____を生成します。]
    dracut /dev/sda/initramfs-$(uname -r).img $(uname -r) -v
    
  3. 次に、上記の手順3〜6を実行したので、grub構成を再構築できます(この手順は不要な場合があります。慎重すぎました)
    mount /dev/mapper/Fedora-root /mnt`  
    mount /dev/sda3 /mnt/boot
    cp /boot/vmlinuz-$(uname -r) /mnt/boot/
    mount --bind /dev /mnt/dev
    mount --bind /sys /mnt/sys
    mount --bind /proc /mnt/proc
    chroot /mnt
    
  4. Grubを再インストールし、再構成します
    grub2-install /dev/sda
    grub2-mkconfig -o /boot/grub2/grub.cfg
    

NVIDIA所有者への注意
NVIDIA GPUを使用しており、インシデントの前に独自のドライバーをインストールしていました。
ライブメディアから復元されたカーネルは、Nouveauドライバーを使用していました(Fedoraのデフォルトドライバーであるため)。復元されたカーネルも最新バージョンではありませんでした。その後、GUIインターフェイスを使用してkernelを更新すると、NVIDIA独自のドライバーが使用されました。

2
Hany Nagaty

これは、システムの修正を試みることができる一般的な方法です。パッケージ名はディストリビューションによって異なる場合があるため、詳細をグーグルで検索する必要がある場合があります。

  1. ライブメディアを起動する
  2. Hddルートパーティションをどこかにマウントします(たとえば、/mnt)。
  3. このルート内にシステムに必要なすべてのパーティションをマウントします-あなたの/bootとあなたが持っているかもしれない他のもの。
  4. -o bindフォルダー/dev/proc、および/sysを使用して、ライブメディアルートから/mntのhddルートにマウントします。
  5. これで、/mntに安全にchrootできます。それはあなたに完全に機能するシステムを与えるはずです。
  6. Grubパッケージを再インストールし、mkinitramfsを実行するか、Linuxカーネルも再インストールします。
  7. Grub構成を生成し、grubをMBRにインストールします(使用している場合)。これで、必要なものがすべて揃っているはずです。
  8. Chrootを終了してライブメディアに戻し、すべて逆の順序でアンマウントします。
  9. 元のシステムで再起動してみてください。

編集: chrootすることにより、ローカルの書き込み可能なディスクインストールの環境に入ります。すでに実行中のプロセスとカーネルを除いて、すべてのライブラリと実行可能ファイルがこの環境から使用されるため、インストールされているパッケージマネージャーとパッケージデータベースを使用できます。 /dev/proc、および/sysのマウントは、ハードウェアへのアクセスとプロセスの制御を可能にするために必要です。/bootで新しいLinuxイメージを生成するために必要になります。 grubを適切に構成し、ネットワークにアクセスしてパッケージをダウンロードします。 Chrootingは、別のディストリビューションのライブメディアを使用する必要がある場合に特に便利です。

Grubの再インストールに関しては-パッケージ名はディストリビューション間で異なる可能性がありますが、grub *を再インストールしても害はありません。パッケージをインストールするだけでは不十分な場合があることを忘れないでください。構成をセットアップした後、grub-installを実行する必要がある場合もあります。

2
Marek Rost

最初にブート修復ディスクを試してみることをお勧めします。MBRの問題のほとんどが修復されます。この記事も役立つかもしれません。 https://www.linux.com/learn/how-rescue-non-booting -grub-2-Linux

0
wizards069