grub-installコマンドエラー(Gentooインストール)
- 評価
- クリップ 0
- VIEW 3,543
知恵をお貸しください。
現在ノートPCにGentoo(LUKS, LVM, UEFI, GRUB2)をインストールしており、grub-installコマンドでエラーが発生しております。
【追記】2017/01/15
Qiitaに(かなりテキトーですが)インストール手順を載せています。ご参考ください。
http://qiita.com/kentakozuka/items/e2a8943b972ab29e53c4
パーティションは以下の通りです。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
sda1 8:1 0 512M 0 part /boot/efi
sda2 8:2 0 238G 0 part
luksdisk 252:0 0 238G 0 crypt
vg1-lv--swap 252:1 0 8G 0 lvm [SWAP]
vg1-lv--arch--root 252:2 0 64G 0 lvm
vg1-lv--gentoo--root 252:3 0 64G 0 lvm /
コマンドは以下になります。
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=gentoo_grub --recheck
以下のエラーが発生します。
Installing for x86_64-efi platform.
File descriptor 3 (/dev/sda1) leaked on vgs invocation. Parent PID 890: grub-install
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
File descriptor 3 (/dev/sda1) leaked on vgs invocation. Parent PID 890: grub-install
File descriptor 4 (pipe:[3053255]) leaked on vgs invocation. Parent PID 890: grub-install
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
Volume group "luksdisk" not found
Cannot process volume group luksdisk
File descriptor 3 (/dev/sda1) leaked on vgs invocation. Parent PID 890: grub-install
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
File descriptor 3 (/dev/sda1) leaked on vgs invocation. Parent PID 890: grub-install
File descriptor 4 (pipe:[3053257]) leaked on vgs invocation. Parent PID 890: grub-install
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
Volume group "luksdisk" not found
Cannot process volume group luksdisk
grub-install: error: disk `lvm/vg1-lv--gentoo--root' not found.
ESPであるsda1をlvmetadがチェック(?)していることから、/etc/lvm/lvm.confに「volume_list = { "vg1" }」を追記し、再度同様のコマンドを打ったところ、エラーメッセージが減りました。
Installing for x86_64-efi platform.
File descriptor 3 (/dev/sda1) leaked on vgs invocation. Parent PID 833: grub-install
Parse error at byte 41545 (line 914): expected a value
Failed to load config file /etc/lvm/lvm.conf
File descriptor 3 (/dev/sda1) leaked on vgs invocation. Parent PID 833: grub-install
Parse error at byte 41545 (line 914): expected a value
Failed to load config file /etc/lvm/lvm.conf
grub-install: error: disk `lvm/vg1-lv--gentoo--root' not found.
このエラーの原因は何で、どのような解決方法がありますでしょうか。
よろしくお願いいたします。
【追記】2017/01/15
sharowさんの回答の通りやってみたところ、
(1). lvm.confに以下を追加する
devices {
...
filter = [ "r|/dev/sda1|" ]
...
}
エラーメッセージは変化しませんでした。
(2). grub-installコマンドに以下を追加
LVM_SUPPRESS_FD_WARNINGS=1
エラーメッセージが以下に変更されました。
Installing for x86_64-efi platform.
File descriptor 3 (/dev/sda1) leaked on vgs invocation. Parent PID 28737: grub-install
File descriptor 3 (/dev/sda1) leaked on vgs invocation. Parent PID 28737: grub-install
File descriptor 4 (pipe:[6185643]) leaked on vgs invocation. Parent PID 28737: grub-install
Volume group "luksdisk" not found
Cannot process volume group luksdisk
File descriptor 3 (/dev/sda1) leaked on vgs invocation. Parent PID 28737: grub-install
File descriptor 3 (/dev/sda1) leaked on vgs invocation. Parent PID 28737: grub-install
File descriptor 4 (pipe:[6185644]) leaked on vgs invocation. Parent PID 28737: grub-install
Volume group "luksdisk" not found
Cannot process volume group luksdisk
grub-install: error: disk `lvm/vg1-lv--gentoo--root' not found.
このメッセージは以下のサイトを参考にして、/etc/lvm/lvm.confを編集した際にでたメッセージと同様の結果となりました。
use_lvmetad = 0
https://wiki.archlinuxjp.org/index.php/%E6%97%A2%E5%AD%98%E3%81%AE_Linux_%E3%81%8B%E3%82%89%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB#lvmetad
このエラーメッセージをみると、cryptsetupで暗号化したsda2("luksdisk")がVolume groupとして認識されているように見えますがそれが原因なのでしょうか。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
LVM_SUPPRESS_FD_WARNINGS=1 grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=gentoo_grub --recheck
でどうでしょう。LVM_SUPPRESS_FD_WARNINGSはlvmのmanページの頭のほうにあります。
そういう情報があるっぽい、というだけで、なんでそうなっているのかはわかりません。
lvmがgrubもopen中のsda1をopenしてしまっているからだとすると、lvm.confに以下を追加することでも解消するかもしれません。これで解消するならこっちのほうが安全かもです。
devices {
...
filter = [ "r|/dev/sda1|" ]
...
}
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.09%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/01/15 15:01
ご確認いただけると幸いです。
2017/01/15 16:20
ところでいま気づいたのですが、grub-installのオプションは
Usage: grub-install [OPTION...] [OPTION] [INSTALL_DEVICE]
となっています。実行されたコマンドはデバイスを指定していないので、最後に/dev/sda などを指定するべきではないでしょうか。
LUKSを使っているのでGRUBとLVMは関係なく(暗号化されているので読めない)、カーネルパラメータにcryptdeviceと、もしかしたらlvm2のオプションを指定することになると思います。そこは既におさえているかと思いますが。
2017/01/15 16:39
参考URL:https://wiki.archlinuxjp.org/index.php/GRUB
現在、/etc/default/grubには以下のように変更を加えています。
-------------------
:
GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd cryptdevice=/dev/sda2:vg1"
:
GRUB_ENABLE_CRYPTODISK=y
-------------------
ご回答の意向に合っていますでしょうか?
2017/01/15 16:40
2017/01/15 17:02
ちょっと整理なのですが、この認識であっていますか?
LUKSデバイス名: luksdisk
LVMのvg名: vg1
上記の場合、cryptdevice=/dev/sda2:vg1 は誤りで、"cryptdevice=/dev/sda2:luksdisk" で、 続いて "dolvm root=/dev/mapper/vg1-lv--gentoo--root" がおそらく必要です。
上の話は後でよくて、要はLUKSのデバイス名とvgの名前がごっちゃになっていないでしょうか。GRUBやLVMが読み込む設定ファイルを見直してみてください。(GRUB2がカーネルパラメータまで検証しているのかはちょっとわかりませんが。)
2017/01/15 17:20
/etc/default/grubを以下に変更しました。
-------------------
:
GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd cryptdevice=/dev/sda2:luksdisk"
:
GRUB_ENABLE_CRYPTODISK=y
-------------------
しかし、エラーメッセージは変わらずでてしまっております。
ちなみに以下に変更しても同様の結果でした。
-------------------
:
GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd cryptdevice=/dev/sda2:luksdisk dolvm root=/dev/mapper/vg1-lv--gentoo--root"
:
GRUB_ENABLE_CRYPTODISK=y
-------------------
または
-------------------
:
GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd cryptdevice=/dev/sda2:luksdisk dolvm root=/dev/vg1/lv-gentoo-root"
:
GRUB_ENABLE_CRYPTODISK=y
-------------------
2017/01/15 17:52
filter = [ "r|/dev/sd.*|", "a|/dev/mapper/.*|" ]
か
global_filter = [ "r|/dev/sd.*|", "a|/dev/mapper/.*|" ]
はどうでしょう。
2017/01/15 18:05
ご提示いただいたものをlvm.confに記述しましたが、エラーメッセージは変化しませんでした。
試しにエラーになる文を記述すると読み込みエラーが発生しておりますので、lvm.confは確実に認識されてはいるみたいですが。。。
2017/01/15 18:38
最後まで気になって調べていたのは、sda1は/bootではなく/boot/efiで大丈夫なのかな、と。grub-installは/boot/grubにも書き込むっぽい情報があるけど、この場合には/boot/efi/grubになるのかな、とかですね。もし/boot/grubに書き込むのなら、そのデバイスに書き込める必要があり、それはlv-gentoo-root下なのでLVMが関わってきます(だからLVMエラーになってる、という推測)。本来は今回のような構成ではGRUB(というかブートローダー)はLVMのことは考えなくていい筈なんです。
・・のでもし GRUB_PRELOAD_MODULES=lvm を指定しているなら消してみてください。
当方はGRUB2からsystemd-bootに移行してしまったため、これ以上の助言は無理かもしれません。
2017/01/16 16:22
2017/01/21 22:39
その後、自分でも調査したところ、以下のページを参考にして解決致しました。
lvmとluksを使用するために、GRUBがdevice mapperをサポートする必要があったようです。
親切に対応していただきありがとうございました。
参考URL:
http://yuex.in/post/2016/12/gentoo-install-mbp-1.html