web-dev-qa-db-ja.com

復元されたLinuxOS(BIOS)をEFIブートに登録/変換する方法

まず、現在の設定について説明します。最近、2つのメインドライブをスクラブしてGUIDに変換しました。プライマリドライブ(私の場合はsdb)で、/ dev/sdb1にEFIブートパーティション(ESP)を作成しました。 mint17.1の新規インストールを行った他のパーティションがあり、EFI、次にGRUB2を介して起動するように設定されています。したがって、新しいインストールでは、ESPのefiブートローダーへの登録は問題ありません。

今、私がそのプロセスを明確に理解した場合にのみ!数時間後にUEFIを読んでも、手順の簡単な明確な図がまだありません。それを自分で手動で行う方法と、使用するのに最適なツールは何ですか? 「UEFI/Grub2:Story ofmyNightmare」のようなタイトルの投稿に触発されました。

だから質問:

2番目のドライブの最初のパーティション(sda1)で、このパスを開始する前にmint17(ubuntu14.04)インストールのコピーを復元しました。レガシーを起動するように設定されました。 EFI経由で起動するように変換し、ブートローダー(ESP with .efi)のフォルダー)に登録するにはどうすればよいですか?

別のパーティションにインストールが機能しているということは、USBスティックから起動しなくても、必要な変更を加えることができるということです。

これが私がやりたいことに対して見つけることができる最も役立つ投稿について私が思うことです

https://askubuntu.com/questions/510856/how-to-boot-load-the-kernel-using-efi-stub-efistub-loader

GRUB2 EFIを再インストールする方法は?

最善のヘルプはステップバイステップの手順です。これを行う方法の私の最も一般的な概念は、fstabを編集してefiパーティションをロードし、a(the)カーネルファイルをコピーし、chroot?を問題のパーティション(OS)にコピーしてgrub2を実行することです。それを実行するには、EFIフォルダーを使用しますか?私がどれほど失われているかを聞くのは楽しいでしょう。:)。

UEFIの起動についてはよく知っていますが、ツールを使用して操作する方法が「秘密」であるように思われるため、完全な回答はコミュニティにとって非常に役立ちます。確信が持てないのは私だけではありませんか?

次に、質問しているときに、EFIブートメニューのエントリ名をどのように変更しますか。 ESP)のEFIディレクトリでディレクトリ名を変更するのと同じくらい簡単だと思いましたが...いいえ。したがって、私が想定しているこれらの.efiファイルを操作するためのツールが必要です。 EFIメニューで使用される起動するOSの名前が含まれていますか?

ところで、Grubチェーンローダーとして使用するための小さなパーティション(1GB)を作成しました。それはより良い解決策ですか?マルチブート用のEFIは気にせず、必要に応じてメニューのrefindを既にロードしています。これを考えさせて、試してみたい場合に備えてパーティションを作成するようにした投稿があります。 http://devil-detail.blogspot.com/2013/07/install-grub2-on-gpt-disk-dedicated-partition.html

うん、悪魔は詳細にあります(それを助けてください)

1
DKebler

もう少し粘り強く取り組んだ後、BIOS-LegacyからEFI bbotingに移行するための実行可能なソリューションを段階的に考え出したので、今すぐ自分の質問に答えます。

これは、unbuntu(またはいくつかのフレーバー)の複数のコピーを起動する場合にのみ適用され、新しいドライブまたは再利用されたドライブで最初から始めており、マザーボードがかなり新しいことを前提としています(私のものは2014ヴィンテージです)。新規インストールではなく、現在のbios/mbrインストールを移動する場合は、qt-fsarchiverを使用してfsarchiverでパーティションイメージを作成することをお勧めします。これは、Linuxの現在のインストールがUEFI対応であることを前提としています。 ubunutu(およびフレーバー)の最新リリースはUEFI対応です。

ステップバイステップで、同じマシンにインストールされているプラ​​イマリOSのコピーをミラーリングしてテストし、すべて再検索からロードできるようになりました。

ステップバイステップ

  • Linuxのフレーバーを使用して永続的なUEFIUSBスティックを作成します(以下の注を参照)

  • そのスティックをUEFIとして起動します。これには、cmos設定を入力し、設定でUEFIが起動することを確認する必要があります。通常、USBがメーカー名でリストされているはずです。確実に行うために、従来の起動オプションをオフにすることをお勧めします。初めて起動すると、ほとんどのOSファイルがcasper-rwパーティションに移動し、ファイルシステムとしてマウントされます。そこに何かを置く前に、それを見つけるために/ mediaフォルダーを調べる必要があります。

  • 起動したスティックからGpartedを使用

    a。プライマリドライブとなるものに新しいGPTパーティションテーブルを作成します(ドライブをスクラブします!)

    b。次に、ESP用のパーティションを256 MB以上、フォーマットされたFat32で作成し、ESPというラベルを付けます。起動可能としてマークします(現在GPTドライブであるため、EFI起動可能としてマークされます)

  • REFIndをインストールします。 http://www.rodsbooks.com/refind/ 3つの方法(debパッケージ、スクリプト、または手動)があります。最新のbin.Zipアーカイブをダウンロードすることをお勧めします。それを解凍し、アーカイブされていないrefindディレクトリ内からインストールスクリプトを実行します。

Sudo ./install.sh

新しいESP/EFIパーティションを見つけてマウントします。 efibootmgrが正しく実行されていないと文句を言う場合は、おそらくインストールする必要があります。やった。次に、インストールスクリプトを再実行します。

Sudo apt-get install efibootmgr

最後に、ESP/EFIは引き続きboot/efiにマウントされ、zipアーカイブ内のrefindディレクトリ(同じ相対位置)にあるdrivers_x64ディレクトリ(私の場合は64ビットマシン)をコピーする必要があります。

  • スティックを取り外して、再起動してみてください。 Cmosに入り、refindが起動可能なUEFIデバイスの1つになったかどうかを確認します。スティックに次ぐ2位になりました。そうすれば、スティックが入っているときはスティックから起動し、そうでない場合はハードドライブESPで再検索します。

  • これで、作成したスティックのMintのように、(efi)osを別のパーティションにインストールできます。このインストールの/ bootディレクトリには、カスタマイズ可能なrefind_linux.confファイルが含まれている場合があります。名前を変更する(削除する)ことを選択します。必ずしも必要ではなく、設定を誤ると起動の問題が発生する可能性があります。 refindがそれらを取得してメニューで使用するため、クリアパーティションラベルを選択することをお勧めします。これにより、EFI/refindディレクトリにあるメインのrefind.confファイルをカスタマイズする必要がなくなります。私はこれらの行のコメントを外す/変更することだけを選択しました。 rEFIfindのすべてについては、Rodの優れたドキュメントを参照してください。

    • scan_delay 5
    • タイムアウト10
    • default_selection "パーティションラベル"

ノート:

USBスティックの作成

  • 4GBの最小スティックを使用する

  • Gpartedを使用してスティックにGPTテーブルを設定し、2 GBのパーティションを作成してfat32にフォーマットし、「boot」というラベルを付け、ブートフラグを設定します(EFIになります)

  • 残りのext4を「casper-rw」のラベルでパーティション分割/フォーマットします。

  • Efi対応のiso(linux mint 17.1を使用)と「boot」パーティションをマウントし、isoの内容をコピーします。

  • uSBスティックでboot/grub/grub.cfgを編集し、最初のブートスタンザを編集して、次のように「永続的」オプションを追加します。

linux /casper/vmlinuz file=/cdrom/preseed/linuxmint.seed boot=casper iso-scan/filename=${iso_path} quiet splash persistent --http://shallowsky.com/blog/linux/install/ubuntu-persistent-live-cd.html


あなたがそれをマウントしている間、私はおそらくこの投稿のURLと一緒にこのテキストをカットアンドペーストしてテキストファイルに貼り付け、そこにも保存します。


Mintの苛立たしい点の1つは、ラップトップ上にない場合でもラップトップディスプレイが読み込まれるため、何も「表示」できないことです。これを修正するには、ターミナルを右クリックして開くか、cntrl-alt-tを使用します。次に、「cinnamon-settings」を実行してディスプレイ設定に移動し、ラップトップディスプレイをオフにして、プライマリディスプレイをデフォルトにします。


後で、USBが起動したら、qtfsarchiverもインストールして、GUIを使用してfsarchiverアーカイブを復元できるようにします。

Fsarchiverアーカイブをパーティションに復元する場合は、復元後に新しいuuidを要求し(gpartedで)、それに応じてfstabを編集し、/ bootディレクトリのrefind_linux.confを削除/修正する必要があります。


更新:不足している再検索メニューからの回復

私はクイックリストアを考え出しました(準備ができたらUSBフラッシュEFIブータブルスティックを使用するのが良いと仮定します)。

N.B. refind ppaを使用して最新の状態に保つことにした場合、更新するたびに構成が失われ、起動することがわかりました。したがって、以下の手順を実行する準備ができたら、手動でアップグレードすることをお勧めします。


失われたマザーボードのNVRAM設定を修正しました(ファームウェアは、起動可能な選択肢としてREFINDをリストしなくなりました)

<user> ==現在のログインユーザー

USBスティックで起動します。 (デスクトップ上に)リカバリディレクトリを作成し、その中にターミナルを開きます。

  1. efi(esp)パーティション(sdxx)を/ media // EFI/boot/efiにマウントし、efi/espパーティションのバックアップコピーを作成します

Sudo mount /dev/sdxx /media/<user>/EFI/boot/efi cp -R /media/<user>/EFI/boot/efi efi-copy-xx-xx-201x

  1. 最新のrefindbin.Zipがあるかどうかを確認してください。ダウンロードしない場合(sourceforgeから再検索ブートリカバリフォルダーに抽出

  2. CDを最新の再検索抽出ディレクトリに挿入してインストールします(.10より前のバージョンではinstall.shのみを使用します)

Sudo ./refind-install --root /media/<user>/EFI/boot/efi

Efibootmgrが正しく実行されていないと文句を言う場合は、おそらくインストールする必要があります。やった。次に、インストールスクリプトを再実行します。

Sudo apt-get install efibootmgr

それはそれであるはずです。 USBフラッシュスティックを取り外して再起動すると、再検索ブートメニューが元に戻ります。

1
DKebler

まず、いくつかの基本...

BIOSまたはEFIのいずれかで、コンピューターの起動に関係するプログラムには2つの重要なクラスがあります。

  • ブートマネージャー-このプログラムは、メニューを表示するか、ユーザーが起動するOSを選択できるようにします。
  • ブートローダー-このプログラムはOSカーネルをメモリにロードし、実行を開始します。

GRUBやBIOSで聞いたことがある他のほとんどのLinuxブートローダーを含む一部のプログラムは、実際には両方の機能を実行します。したがって、Linuxユーザーは言語的に少しずさんで、「ブートローダー」を使用する傾向があります。ただし、一部のEFIプログラムは一方の機能のみを実行し、もう一方の機能は実行しないため、区別を理解することはEFIにとって重要です。さらに、EFIは組み込みのブートマネージャーを提供します。残念ながら、EFI仕様はミュートされています。組み込みのブートマネージャが提供する必要のあるユーザーインターフェイスの種類の主題。その結果、一部のマシンではほとんど役に立たず、他のマシンでは扱いにくく、最高のマシンではほとんど耐えられません。

組み込みのEFIブートマネージャーは、EFI変数を編集することでOSから制御できます。 Linuxでは、このタスクはefibootmgrユーティリティによって処理されます。これは、典型的な最低限のLinuxコマンドラインツールです。そのため、あまりユーザーフレンドリーではありません。コンピュータを起動するときは、通常、Escキーまたはファンクションキーを押してブートマネージャにアクセスしますが、詳細はマシンごとに異なります。

ギアを少しシフトすると、GRUBはBIOSシステムとEFIシステムの両方でほぼ同じように機能するように設計されています。BIOSでは、GRUBはそれ自体の一部をにインストールしますハードディスクの最初のセクターであるマスターブートレコード(MBR)。BIOSはMBRでコードを実行するようにハードコードされているため、GRUBは、起動時にコンピューターを制御します。メニューをクリックし、カーネルをロードするか、ブートプロセスを別の場所に保存されている別のブートローダーにリダイレクトします。EFIでは、プロセスは少し異なります。GRUBはEFIのNVRAMに登録されます(インストール時にefibootmgr、コマンドを自分で入力しなかった場合でも)。EFIのブートマネージャーはGRUBを起動します。これにより、メニューが表示され、カーネルが起動されるか、別のブートローダーにリダイレクトされます。

BIOSとEFIのもう1つの重要な違いは、BIOSブートローダーの全体または一部がMBRおよびディスクの他の「非表示」部分に格納されることです。 EFIブートローダーとブートマネージャー(組み込みのブートマネージャーを除く)は、通常のファイルとしてESPに保存されます。これにより、EFIの管理が少し簡単になります。少なくとも理論的には、理解してしまえば。

さて、この理論はすべて邪魔にならないので、私はあなたの質問にもっと直接的に取り組むことができます:Linuxの大部分はブートモードを気にしないので、既存のBIOSモードインストールをEFIモードでブートするように変換するにはEFIブートローダーをインストールする必要がありますLinuxの場合。実際、そのようなプログラムはいくつかあります。あなたはそれらのうちの2つを直接的または間接的にほのめかしましたが、他にもあります:

  • GRUB 2-これはほとんどのディストリビューションのデフォルトであるため、通常、新規インストールで作業を開始するのは簡単です。 OTOH、それはかなり難解で、手動で作業するのは難しいです。 BIOSとEFIの両方で、ほぼどこからでもカーネルを読み取ることができます。
  • GRUB Legacy-このブートローダーはEFIで正式に動作しませんが、Fedoraはパッチが適用されたバージョンをリリースしました。この亜種はもう維持されていません。 GRUB 2のように、ほとんどのLinuxファイルシステムからカーネルをロードできます。
  • [〜#〜] elilo [〜#〜]-このブートローダーは、BIOS用のLILOブートローダーをモデルにしています。 LILOに慣れている場合は、簡単に構成できます。カーネルがESPに保存されている必要があります。それはもはや積極的に開発されていませんが、それでも仕事を成し遂げます。
  • [〜#〜] syslinux [〜#〜]-このブートローダーは、幅広いストロークでELILOに似ており、BIOSブートローダーに関連しています。同じ名前の。 ELILOと同様に、カーネルをESPに保存する必要があります。
  • EFIスタブローダー-Linuxカーネル自体にEFIブートローダーが含まれているため、EFIの組み込みブートマネージャーのみを使用してシステムを起動できます。カーネルが直接登録されています。したがって、この方法でEFIのブートマネージャーから直接カーネルを起動するには、カーネルをESP(または、少なくともFATパーティション、場合によってはMacのHFS +)に保存する必要があります。リンク先の投稿はそのような構成に関するものでしたが、そのような設定は一般的ではなく、柔軟性がないためお勧めしません。

これらのブートローダーに加えて、オプションの拡張に役立つ専用のEFIブートマネージャーがいくつかあります。

  • gummiboot-このプログラムは、Linuxカーネルを含む前述のブートローダーのいずれかを起動できる単純なテキストモードのブートマネージャーです。ただし、ブートプロセスは、それ自体のパーティションに格納されているプログラム(通常はESP)にのみリダイレクトできます。したがって、gummibootを使用してカーネルを直接(EFIスタブサポートを介して)起動するには、カーネルをESPに保存する必要があります。
  • rEFIt-このプログラムはMacで生まれ、そのプラットフォームで人気がありますが、rEFItは何年もの間放棄されています。ブートプロセスをEFIが読み取ることができる任意のパーティションにリダイレクトできます。rEFItには、EFIがext2/3fsまたはReiserFSボリュームを読み取ることができるようにするEFIドライバーがいくつか含まれています。異常なことに、rEFItは起動時にブートローダーをアクティブにスキャンするため、マルチブート環境に非常に適応します。ただし、rEFItはカーネルに、通常は正常に動作するために必要なカスタムオプションを渡すことができないため、Linuxカーネルの起動はあまり得意ではありません。
  • rEFInd-これは私自身のrEFItのフォークです。 ext4fs、Btrfs、NTFS、HFS +、およびISO-9660用のドライバーを追加します。また、Linuxカーネルにオプションを渡すことができます。したがって、rEFIndとEFIスタブローダーの組み合わせにより、カーネルの場所に関してGRUB)の柔軟性のほとんどが提供されます。rEFIndは、ブートオプションのrEFItのアクティブなスキャンも保持します。これにより、ヘアを大幅に削減できます。複数のLinuxディストリビューションがインストールされたシステムの保守に関与します。任意のディストリビューションに新しいカーネルをインストール(または削除)すると、rEFIndは次に起動したときに変更を取得します。

現在のセットアップが何であるかは私には少しわかりませんが、以前はBIOSモードで起動したものを含めて少なくとも2つのLinuxがインストールされているという印象を受けます。その場合は、rEFIndの使用を検討することをお勧めします。デフォルトのブートプログラムとしてインストールされている場合は、システムのカーネルをアクティブにスキャンし、起動のたびにメニューを作成します。カーネルを保持するファイルシステム用のEFIファイルシステムドライバーをインストールする必要がありますが、インストールスクリプトがこの詳細を処理してくれる場合があります。ディストリビューションごとに/boot/refind_linux.confという構成ファイルを作成する必要がある場合もあります。このファイルは静的ブートオプションを保持します。 (ただし、これは不要な場合もあります。パーティションのレイアウトとディストリビューション固有のニーズによって異なります。)Linuxでインストールスクリプトを使用してrEFIndをインストールすると、そのディストリビューションに対してrefind_linux.confが自動的に作成されますが、必要になる場合があります。他のディストリビューションと同等のものを作成します。 rEFIndのドキュメントには、 Linuxの起動に関するページ が含まれており、これらすべてを行うのに役立ちます。

REFIndを使用したくない場合は、1つのディストリビューションのGRUBを取得して、他のインストールのカーネルを取得できるはずです。GRUBを介して1つのディストリビューションを起動できる場合は、update-grub(Ubuntuまたは同様のディストリビューションの場合)またはgrub-mkconfig -o /boot/grub/grub.cfgがその役割を果たします(ただし、その出力パスを変更する必要がある場合があります。grub.cfgは一部のディストリビューションの別の場所に保存される場合があります)。この2番目のディストリビューションでカーネルを更新する場合は、最初のディストリビューションを起動してGRUB構成ファイルを再構築し、GRUBを認識できるようにする必要があります)新しいカーネル。別の方法は、GRUBを2回、ディストリビューションごとに1回インストールすることです。次に、EFIのブートマネージャーを使用して、起動するGRUBを選択し、または、各GRUBを他のエントリで構成します。

ご覧のとおり、多くのオプションがあります。このトピックの詳細については、Linux用のEFIブートローダーに関する my Webページを参照してください。

これはあなたが望んでいた段階的な手順ではないことを私は理解していますが、物事がどのように機能するかを理解することとあなた自身の正確な設定の知識を組み合わせることは、通常、どんな種類の「クックブック」手順よりもうまく機能します。そのため、プロセスに入る構成の詳細に依存します。

4
Rod Smith