外部メディアなしでブートローダ(systemd-bootまたはGRUB)を再インストールしますか?

外部メディアなしでブートローダ(systemd-bootまたはGRUB)を再インストールしますか?

最近Lenovo Miix-700のBIOSをアップデートしましたが、すぐに後悔しました。 Windowsのアップデート後にWebカメラの問題が解決されることを望んでいましたが、予想どおりBIOSアップデートがEFIパーティションを上書きし、Webカメラが変更されていませんでした。ルートを変更して再インストールできるように、新しいArchブータブルUSBを作成しましたが、アップデートにより単一のUSBポートも破損しました(ハブエラー?)。今、私のデジタルライフ全体は私がアクセスできないパーティションにあります*。 Archフォーラムに質問したかったのですが、登録質問ではArchで1行のコードを実行できる必要があるのでここまでです。どんな提案がありますか?

*技術的には、Windowsのプログラムを使用してこれらのファイルにアクセスできますが、これらのファイルを使用するために必要なさまざまなプログラムにはアクセスできません。

編集:TelcoMが提案したとおりです。アーチに関連するものはありません。

C:\WINDOWS\system32>bcdedit /enum firmware

Firmware Boot Manager
---------------------
identifier              {fwbootmgr}
displayorder            {bootmgr}
                        {d7ec5199-eb30-11e9-bd4c-806e6f6e6963}
                        {d7ec519a-eb30-11e9-bd4c-806e6f6e6963}
                        {d7ec519b-eb30-11e9-bd4c-806e6f6e6963}
                        {d7ec519c-eb30-11e9-bd4c-806e6f6e6963}
                        {d7ec519d-eb30-11e9-bd4c-806e6f6e6963}
timeout                 0

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {current}
resumeobject            {86dba24d-a094-11e9-9adb-bd1dd03f5338}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec5196-eb30-11e9-bd4c-806e6f6e6963}
description             Setup

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec5197-eb30-11e9-bd4c-806e6f6e6963}
description             Boot Menu

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec5198-eb30-11e9-bd4c-806e6f6e6963}
description             Diagnostic Splash

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec5199-eb30-11e9-bd4c-806e6f6e6963}
description             ATA HDD: RTHMB128VBM4EWDL

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec519a-eb30-11e9-bd4c-806e6f6e6963}
description             USB FDD:

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec519b-eb30-11e9-bd4c-806e6f6e6963}
description             USB CD:

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec519c-eb30-11e9-bd4c-806e6f6e6963}
description             USB HDD:

Firmware Application (101fffff)
-------------------------------
identifier              {d7ec519d-eb30-11e9-bd4c-806e6f6e6963}
description             PCI LAN:

答え1

BIOSのアップデートにより、既存のEFI NVRAMブート変数が消去されたようです。 Windowsは、内蔵ファームウェアサポートまたは「自己修復」を介して回復しました。 Windowsはまた、UEFIブートローダを\EFI\BOOT\BOOTx64.efiESPパーティションに配置します。これは、ブートローディングプログラム用のディスクを明確に識別するNVRAMブート変数がない場合の代替UEFIブートローダです。 。これにより、WindowsはNVRAMブート変数が欠落していると検出された場合にロードして自動的に回復できます。

元のUEFI NVRAMコンテンツはBIOSアップデートで失われたため、システムのセキュアブートキーをカスタマイズした場合、これらの設定も工場出荷時のデフォルトに復元された可能性があります。 Archに再度アクセスし、元のSecure Bootキーのカスタマイズプロセスを再度実行してこれらのカスタマイズを復元できるようになるまで、セキュアブートを一時的に無効にする必要があります。

Arch では、Arch UEFI ブートを複数の方法で設定できるため、NVRAM ブート変数のリカバリが複雑になります。 EFISTUB、GRUB、またはrEFIndを使用できます。したがって、最初のステップはEFIシステムパーティションにアクセスし、実際にその中に何があるのか​​を調べることです。


Windowsでは、コマンドプロンプトを実行してEFIシステムパーティションにアクセスできます。管理者としてをクリックし、次のコマンドを実行します。

mountvol X: /S
X:
dir

これで、EFIシステムパーティションのルートディレクトリのリストが表示されます。 GUIにアクセスしたい場合は、start explorer標準のファイルエクスプローラウィンドウを管理者として実行できます。この特定のウィンドウを使用すると標準のUACプロンプトで保護されないため、このウィンドウを使用するときは非常に注意してください。

EFISTUBを使用してArchを起動する場合は、EFIシステムパーティションのルートディレクトリにvmlinuz.efiまたはinitramfsファイルがある可能性があります。正しいパス名をメモしてください。元々従ったインストール手順のバージョンによっては、サブディレクトリにある可能性があります。vmlinuz-linuzinitramfs-linux.img\EFI\Arch

GRUBやrEFIndなどのブートローダを使用している場合は、このディレクトリのサブディレクトリにあります\EFI。そこに行き、ディレクトリのリストを見てください(ファイルエクスプローラウィンドウを使用または再利用cd EFIdirMicrosoftという名前のディレクトリを少なくとも2つ表示する必要がありますboot。このMicrosoftディレクトリにはWindows UEFIブートローダが含まれており、bootNVRAMブート変数が失われた場合にブートに必要な部分のみが含まれています。

\EFI\ArchArchのインストール(GRUBを使用している場合)または(rEFIndを使用している場合)サブディレクトリがある場合があります\EFI\refind。そのディレクトリに移動して、実際のブートローダファイルの名前を確認してください。\EFI\Arch\grubx64.efiまたは\EFI\refind\refind_x64.efi

ESPでArchブートローダのパス名がわかったら、それにNVRAMブート変数を作成できます。 Windowsでは、次のコマンドを使用してこれを実行できますbcdedit

bcdedit /create /d "Arch Linux" {fwbootmgr}

このコマンドは、後続のコマンドに必要なGUID文字列を出力しますbcdedit{GUID}簡単に説明します。

bcdedit /set {GUID} device partition=X:
bcdedit /set {GUID} path <your bootloader pathname here>
bcdedit /set {fwbootmgr} default {GUID}

Windowsのバージョンによっては、この最後のコマンドはエラーを返すことがあります。この場合は、代替形式を使用してください。

bcdedit /set {fwbootmgr} displayorder {GUID} /addfirst

最後に、ESPへのアクセスを切断します。管理者として実行されているファイルエクスプローラウィンドウを起動した場合は、ウィンドウを閉じてコマンドプロンプトで次のコマンドを実行します。

c:
mountvol X: /D

システムをある種のLinux(カーネルがUEFIランタイムサービスを使用できるようにデフォルトのUEFIバージョン)から起動できる場合は、このefibootmgrコマンドを使用して非常に簡単なコマンドでNVRAM変数を再作成できます。

efibootmgr --create --disk /dev/sda --loader <your bootloader pathname here> --label "Arch Linux Bootloader" --verbose

--disk必要に応じて、ESPパーティションを含む物理ディスクと一致するようにこのオプションの値を調整します。

メモ:Linuxシェルはバックスラッシュを特殊なエスケープ文字として使用するため、ブートローダパス名のWindowsスタイルバックスラッシュをLinuxスタイルスラッシュに変換するか、ブートローダパス名を入力するときにバックスラッシュを変更してブートローダパス名をefibootmgr表示する必要があります。efibootmgrコマンドラインで次のようにします。

efibootmgr [...] --loader \\EFI\\Arch\\grubx64.efi [...]

EFISTUBを使用している場合efibootmgr、コマンドにはinitramfsファイル名を含むLinuxカーネルブートパラメーターを指定するための追加パラメーターが必要です。

efibootmgr --disk /dev/sdX --part Y --create --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw initrd=\initramfs-linux.img' --verbose

Windowsbcdeditコマンドを使用してこれらの追加パラメータを指定することも可能でも不可能でもかまいません。残念ながら、今はこれのWindows構文を見つけることができません。

関連情報