質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Linux

    4365questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Gentoo Linux

    2questions

    Gentooは、Linuxディストリビューションの1つです。 GTK+で作られてファイルマネージャです。

grub-installコマンドエラー(Gentooインストール)

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,769

kentakozuka

score 9

知恵をお貸しください。
現在ノート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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

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|" ]
    ...
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/15 15:01

    ご回答ありがとうございます。【追記】でご提示いただいた対応策について書き足しました。
    ご確認いただけると幸いです。

    キャンセル

  • 2017/01/15 16:20

    ふむむ。たしかにluksdiskを見てしまっているような気がしますね。

    ところでいま気づいたのですが、grub-installのオプションは
    Usage: grub-install [OPTION...] [OPTION] [INSTALL_DEVICE]
    となっています。実行されたコマンドはデバイスを指定していないので、最後に/dev/sda などを指定するべきではないでしょうか。

    LUKSを使っているのでGRUBとLVMは関係なく(暗号化されているので読めない)、カーネルパラメータにcryptdeviceと、もしかしたらlvm2のオプションを指定することになると思います。そこは既におさえているかと思いますが。

    キャンセル

  • 2017/01/15 16:39

    grub-installコマンドの最後にデバイスを指定していないのは、UEFI用の対応です(BIOSのようにブートセクタがないため、らしいです。)
    参考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

    ( filter = [ "r|/dev/sda1|" ] はハズレなので削除しておいてください )

    キャンセル

  • 2017/01/15 17:02

    ああ! そうでした、UEFIはFAT32(/boot/..)でいいんでしたね。

    ちょっと整理なのですが、この認識であっていますか?

    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ですいません。
    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

    まったくの当てずっぽうですが、sda2 のパーティションタイプを 8e (LVM)ではなく、83 とかに変更するとどうなるでしょうか?

    キャンセル

  • 2017/01/21 22:39

    回答ありがとうございます。
    その後、自分でも調査したところ、以下のページを参考にして解決致しました。
    lvmとluksを使用するために、GRUBがdevice mapperをサポートする必要があったようです。
    親切に対応していただきありがとうございました。

    参考URL:
    http://yuex.in/post/2016/12/gentoo-install-mbp-1.html

    キャンセル

同じタグがついた質問を見る

  • Linux

    4365questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Gentoo Linux

    2questions

    Gentooは、Linuxディストリビューションの1つです。 GTK+で作られてファイルマネージャです。