grub2の再インストール

grub2の再インストール

CentOS 8をデュアルブートしたWindows 7を搭載した古いラップトップがあります。

初めて再起動すると、GRUBはLinux用のエントリのみを表示します。だから私は使用しましたブート回復ディスクしかし、今ではラップトップがWindowsで直接起動するので、何らかの方法でGRUBをインストールすることはできません。

ディスクパーティションは次のとおりです(Boot-Repair-Diskで確認)。

Partition  Boot  Start Sector    End Sector  # of Sectors  Id System

/dev/sda1               2,048     3,074,047     3,072,000  27 Hidden NTFS (Recovery Environment)
/dev/sda2    *      3,074,048   629,905,407   626,831,360   7 NTFS / exFAT / HPFS
/dev/sda3         629,905,408   632,002,559     2,097,152  83 Linux
/dev/sda4         632,002,560   976,773,119   344,770,560   5 Extended
/dev/sda5         632,004,608   975,978,495   343,973,888  8e Linux LVM

おおよそのサイズと用途は次のとおりです。

/dev/sda1     1.5 Gb     Windows recovery partition
/dev/sda2     300 Gb     Windows 7 partition
/dev/sda3       1 Gb     Linux /boot partition 
/dev/sda4     164 Gb     Extended partition containing /dev/sda5
/dev/sda5     4 Gb /swap, 130 Gb /, 30 Gb /home, all LVM and LUKS-encrypted

/dev/sda4Windowsでは、これをプライマリ(非拡張)パーティションとして扱うことに注意する必要があります。

これは Boot-Repair-Disk 出力の一部です。

Is there RAID on this computer? no
File descriptor 8 (/proc/17432/mountinfo) leaked on lvs invocation. Parent PID 19248: /bin/sh
Error: /dev/mapper/cl-00: unrecognised disk label
Error: /dev/mapper/cl-01: unrecognised disk label
Error: /dev/mapper/cl-02: unrecognised disk label
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
Error: Invalid partition table - recursive partition on /dev/sr0.
boot-repair is executed in live-session (Boot-Repair-Disk 64bit 1oct2017, zesty, Ubuntu, x86_64)
CPU op-mode(s):      32-bit, 64-bit
file=/cdrom/preseed/lubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash --
ls: cannot access '/home/usr/.config': No such file or directory
Set sda as corresponding disk of mapper/cl-00
Set sda as corresponding disk of mapper/cl-01
Set sda as corresponding disk of mapper/cl-02
mount: /mnt/boot-sav/mapper/cl-00: unknown filesystem type 'crypto_LUKS'.
mount /dev/mapper/cl-00 : Error code 32
mount -r /dev/mapper/cl-00 /mnt/boot-sav/mapper/cl-00
mount: /mnt/boot-sav/mapper/cl-00: unknown filesystem type 'crypto_LUKS'.
mount -r /dev/mapper/cl-00 : Error code 32
mount: /mnt/boot-sav/mapper/cl-01: unknown filesystem type 'crypto_LUKS'.
mount /dev/mapper/cl-01 : Error code 32
mount -r /dev/mapper/cl-01 /mnt/boot-sav/mapper/cl-01
mount: /mnt/boot-sav/mapper/cl-01: unknown filesystem type 'crypto_LUKS'.
mount -r /dev/mapper/cl-01 : Error code 32
mount: /mnt/boot-sav/mapper/cl-02: unknown filesystem type 'crypto_LUKS'.
mount /dev/mapper/cl-02 : Error code 32
mount -r /dev/mapper/cl-02 /mnt/boot-sav/mapper/cl-02
mount: /mnt/boot-sav/mapper/cl-02: unknown filesystem type 'crypto_LUKS'.
mount -r /dev/mapper/cl-02 : Error code 32

=================== os-prober:
/dev/sda1:Windows 7:Windows:chain
/dev/sda2:Windows 7:Windows1:chain

=================== blkid:
/dev/sda1: LABEL="System" UUID="FC30DADA30DA9B4A" TYPE="ntfs" PARTUUID="e7d2fa64-01"
/dev/sda2: LABEL="Main disk" UUID="E6C200E1C200B837" TYPE="ntfs" PARTUUID="e7d2fa64-02"
/dev/sda3: UUID="b43f57d3-c143-47b0-ad99-a5b12a0416be" TYPE="ext4" PARTUUID="e7d2fa64-03"
/dev/sr0: UUID="2017-10-29-00-56-18-00" LABEL="Boot-Repair-Disk 64bit" TYPE="iso9660" PTUUID="6b8b4567" PTTYPE="dos"
/dev/loop0: TYPE="squashfs"
/dev/sda5: UUID="sWZAY3-8hDE-wcdv-rEsu-pTcr-9lPV-QEfxlo" TYPE="LVM2_member" PARTUUID="e7d2fa64-05"
/dev/zram0: UUID="462ef96d-8ed3-405e-92c4-043654187abd" TYPE="swap"
/dev/zram1: UUID="df6b8b51-4029-4d37-86ec-d70532265f9b" TYPE="swap"
/dev/zram2: UUID="9d842b41-46c1-4ed3-aefb-447d99a6321f" TYPE="swap"
/dev/zram3: UUID="65d9a196-c801-4e87-9283-314b665108d6" TYPE="swap"
/dev/zram4: UUID="b2cb39b0-9fe1-4485-b044-7d408527117f" TYPE="swap"
/dev/zram5: UUID="f6b1cecd-603e-40a3-8eb3-2bc1ddaca8c1" TYPE="swap"
/dev/zram6: UUID="2fc865d0-0b3b-4d11-bb8d-c272a21e5c39" TYPE="swap"
/dev/zram7: UUID="5be79bcf-4b46-4d62-81b2-952b79e0ecda" TYPE="swap"
/dev/mapper/cl-00: UUID="6eac3a8f-7854-40c7-ae94-c1d288a60698" TYPE="crypto_LUKS"
/dev/mapper/cl-01: UUID="d0e378ae-9140-4335-94e6-2d73a3cb7bd1" TYPE="crypto_LUKS"
/dev/mapper/cl-02: UUID="00e698ad-ac0b-4e27-9bc7-bdcb524ce4ba" TYPE="crypto_LUKS"  

1 disks with OS, 2 OS : 0 Linux, 0 MacOS, 2 Windows, 0 unknown type OS.

GRUBを再インストールする前に、LUKS LVMパーティションの復号化が必要ですか?


編集:コメントの質問に答えるには:

出力fdisk -l /dev/sda

Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Seagate ST950056
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe7d2fa64

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1            2048   3074047   3072000   1.5G 27 Hidden NTFS WinRE
/dev/sda2  *      3074048 629905407 626831360 298.9G  7 HPFS/NTFS/exFAT
/dev/sda3       629905408 632002559   2097152     1G 83 Linux
/dev/sda4       632002560 976773119 344770560 164.4G  5 Extended
/dev/sda5       632004608 975978495 343973888   164G 8e Linux LVM
  • CentOS 8では、デフォルトのGRUBであるGRUB2を使用します。

  • LVM パーティションは CentOS インストーラによって直接作成されます。

  • 10年近くのラップトップはUEFIではなくBIOSを使用します。

  • インストーラはGRUBをどこに置くか尋ねず、自動的に尋ねました。

ベストアンサー1

Boot-Repair-Diskがパーティションテーブルエラーを報告する理由、またはWindowsがこれが/dev/sda4プライマリパーティションであると考える理由を説明できません。 fdiskの出力は、MBRパーティションテーブルにエラーがなく、まだ読み取ることができることを報告します/dev/sda5

したがって、私たちがすべきことは次のとおりです。

  • 最初のgrub2インストールへのアクセスの復元(または新しいgrub2インストール)
  • Windowsの起動に必要なchainloadコマンドの設定地虫から

grub2の再インストール

Grub2はMBRの次のセクタ(2048セクタより前)にインストールされます。ディスクのgrub2には、/boot/grubハードコーディングされたディレクトリアドレスがあります。残念ながら、内容は/boot/grubすべてLVMにあります。LUKSでエンコード。それには以下が必要です:

  • LVMディスクの内部を読み込みます。これは lvm.mod モジュールを通して行われます。
  • LUKS ディスクの復号化。これはluks.modモジュールを介して行われます。

これら2つのモジュールは内部にもあります/boot/grub。これはCatch-22の状況を引き起こし、鍵は車の中にあります。

解決策は、一部のモジュールを固定ディスクセクタに書き込み、起動時にロードすることです。次に、LUKSパスワードを要求し、ディレクトリの復号化、/boot/grubより多くのモジュールをロードし、最後にロードする必要がある/boot/grub/grub.cfg他のモジュールが何であるかを調べるためにロードし、ユーザーにオペレーティングシステムの選択リストを提供します。

ただし、ディスクに書き込む必要があるモジュールは内部モジュールです/usr/lib/grub/i386-pc/lvm.mod。はい、grubは複数のアーキテクチャで使用できます。また、それをインストールしたシステムでも暗号化されます。

したがって、唯一の解決策は次のとおりです。

  1. 一部のライブISOで起動します(現在のすべてのgrubファイルを含む/usr/lib)。
  2. すべての(暗号化とシステム)ディスクを正しい場所にマウントします。
  3. chrootディスクの「実際の」システムに切り替えるために使用されます。
  4. grub-installGrubをディスクに再配置するために使用されます。

CentOSを救出する方法のガイドは次のとおりです。あなたは従う必要があります。単純化されたが、残念ながら、LVM-LUKS暗号化パーティションを復号化する部分は、別の反転を追加します。

これが完了し、システムがgrubを介してCentOSから起動したら、grub.cfgファイルにいくつかのエントリを追加する必要があります(Windowsがgrub-installを介して自動的に検出されなかった場合)。このページのアイテムの使用

関連:

おすすめ記事