web-dev-qa-db-ja.com

Arch Linuxインストールでのgrub-mkconfigの問題:grub-mkconfigがlvmetadへの接続に失敗する

Windows 10でデュアルブートされたマシンにArchを再インストールするときに問題が発生しました。さまざまな無関係な理由により、古いArchインストールのすべてをバックアップして、最初からやり直すことにしました。私はUSBにArchライブメディアを持っているので、先に進んでそこから(UEFIで)ブートし、Linuxパーティションをフォーマットして、Archインストールガイドを読みました。

「bootoloaderのインストール」セクションに到達するまで、すべてが正常に機能しているように見えました。以前使用していた初心者向けガイドが(はるかに簡単な)インストールガイドのために削除されたため、ここで何をするか100%確信が持てませんでした。私のEFIパーティションにはすでに必要なすべての機能が含まれていることはわかっていますが、新しいインストールでは変更する必要があると考えました。 /boot/EFI/grub.efiスタブを削除し、/boot/grub//boot/grub.bakに名前変更しました。私はpacman -S grub os-proberを実行し、target=x86_64-efidirectory=/boot(私のefiパーティションのマウントポイント)を使用してArchインストールガイドからgrub-installコマンドを実行してから、grub-mkconfig -o /boot/grub/grub.cfgを実行しました。

これが私の悩みの始まりです。 grub-mkconfigコマンドを実行すると「failed to connect to lvmetad」エラーが発生し、フォールバックモードに戻っているとのことです。正しいディレクトリにgrub.cfgファイルを正常に生成しましたが、メニューエントリがありませんでした。起動しようとすると、grubコマンドラインしか得られません。 Archのライブメディアに戻ってArch-chrootをやり直し、/boot/grub.bakに移動し、そこからArch Linuxのメニューエントリセクションをコピーして、古いUUIDをfstabで現在報告されているUUIDに置き換えていることを確認します私のルートディレクトリ。これにより、再起動したときにgrubメニューが表示されましたが、Arch Linuxを選択すると/vmlinux couldn't be foundというエラーが発生しました。

ライブメディアでchrootに戻り、grub-configを再実行しました。メニューエントリはまだありません。同様の問題がある this スレッドが見つかりました。これは、grub-mkconfigヘルパースクリプトに既知の問題があると述べています。これは'14年のものなので、私の問題が同じである可能性は低いと思いましたが、私はそこでベストアンサーに従いました。提案は次のようにすることでした:

たった今同じ問題に遭遇し、別の回避策を見つけました。基本的には、ゲストがhosts/runディレクトリを使用できるようにする必要があります。

まず、ゲストがアクセスできる場所に/ runをマウントします。インストールパーティションが/ mntにマウントされていると仮定します

mkdir/mnt/hostrun mount --bind/run/mnt/hostrun次に、ゲストにchrootし、ホストの/ run/lvmをゲストの/ runにマウントします

Arch-chroot/mnt/bin/bash mkdir/run/lvm mount --bind/hostrun/lvm/run/lvm LVMエラーなしでgrub-mkconfigとgrub-installを実行できます。これにより、LVMを使用してインストールしている場合でも、コマンドの動作が向上します。

完了したら、chrootを終了する前に、必ず/ run/lvmをアンマウントしてください。

そうすることで、実際にfails to connect to lvmetadエラーはなくなりましたが、/dev/sdx not initialized in UDEVに置き換えられます。コマンドはまだmenuentriesのないgrub.cfgを生成します。

ラップトップの「起動中にハンマーf12」メニューからWindowsブートマネージャーを選択することで、Windowsに入ることができます。

3
Joseph Morgan

Arch-chrootでos-proberを使用しているため、vproblemが表示されます。私の事件を解決したのは:

  • 現在のgrub.cfgをバックアップします(まだバックアップしていない場合)。
  • Os-prober(pacman -R os-proberまたは無効にすることもできます
  • Grub-mkcondigを実行します
  • Archで再起動
  • イントールOSプローブ
  • Grub-mkconfigを再度実行します
0
Ezra Steinmetz

ここでも同じ問題。これは古い投稿ですが、誰かを助けるために回避策を投稿します。

自分と同じように、作業中のgrub.cfgファイルを含む完全なバックアップがありました。古いgrub.cfgファイルから必要なメニューエントリを抽出し、/ etc/grub.d/40_customに追加しました。次に、grub mkconfig -o /boot/grub/grub.cfgを再実行しました。今はすべて順調です。

os-proberは、優先度の低い便利なアイテムであり、本質的なものではありません。個人的には、それを機能させるために多くの時間を費やすことはしませんでした。それは個人的な選択です。この種の問題をトラブルシューティングするのが好きな人もいれば、私は彼らの努力に感謝しますが、実際の作業にはシステムが必要で、時間の制約があり、立ち上がって実行する必要がある人もいます。

最終的に、この問題はソフトウェアまたはドキュメントのいずれかによって修正されます。 40_customファイルのメニューエントリの設定方法について質問がある場合は、Web検索で多数の例を見つけることができます。

0
bhold