問題の本質
実際、テスト対象: ソニーVAIO SV-E14A1S1R ( 仕様 )
買収の少し前に、Xubuntu以外のディストリビューションを試してみたいという要望があり、Debianでの選択が決まりました。 インターネットに問題がある場合、追加のリポジトリ(8 DVD)がダウンロードされました。
ラップトップ、ディスク、起動します...そして、最初の問題が発生します。BIOS設定でEFIから従来の「レガシーBIOS」へのブートオプションが表示されるまで、インストールメニューは表示されず、Windowsはすぐにロードされました。
ただし、インストールが完了すると、「オペレーティングシステムが見つかりません」というメッセージが表示されました(ドライブからディストリビューションディスクを削除せず、「最初のブートディスクから起動」を選択すると、システムは起動しますが、ドライブを取得したいのは誰ですか?)、およびEFI、前と同様に、ウィンドウリーフのみがロードされました。
解決策
さまざまなパラメーターを使用したインストールと再インストールのサイクルが何度か失敗した後、ENTのトピックの1つで、EFIが有効になっている仮想マシンでGRUBを収集することで部分的に解決されたテーマ作成者は、同様の問題に遭遇しました(仮想マシンなしでも実行できる可能性があります) Debianに行きますが、私はチェックしませんでした)。
すでにハードドライブにEFIパーティションがあるとします。次が必要です。
- 実際には、64ビットLinuxディストリビューションとEFIを搭載したマシン(VirtualBoxから実行しているUbuntuを使用しました)
- GRUB2のソース( これらを取りましたが、以下のバージョンでは、ブートローダーを使用するつもりはありませんでした)
- make 、 gcc 、 bisonおよびflex
GRUB EFIイメージの配置
- まず、ソースを取得します。
$ wget ftp://alpha.gnu.org/gnu/grub/grub-1.99~rc2.tar.gz $ tar -xvf grub-1.99~rc2.tar.gz $ cd ./grub-1.99~rc2
- ブートローダーのコンパイル:
$ ./configure --with-platform=efi --target=x86_64 $ make
その後、ディレクトリは次のようになります
- EFIイメージを作成します。
$ cd ./grub-core $ ../grub-mkimage -d . -o bootx64.efi -O x86_64-efi -p /efi/grub `find *.mod | xargs | sed -e 's/.mod//g'`
最初のコマンドはGRUBモジュールがあるディレクトリに移動し、2番目のコマンドはイメージを収集し、ディレクトリ内のすべてのモジュールに接続します。
- ファイルをターゲットコンピューターのEFIパーティションに移動します(Nはパーティションのシリアル番号です)
# mount /dev/sdaN /mnt # mv < bootx64.efi> /mnt/EFI/Boot/bootx64.efi
- イメージを組み立てるときに指定されたディレクトリ(この場合/ efi / grub)では、モジュールファイル(* .mod)、構成ファイル(grub.cfg)、フォント(unicode.pf2)、および必要に応じて言語ファイルと背景イメージを移動します
ほとんどの場合、インストール中に生成されたgrub.cfgは機能しません((hd0、gptN)のようなメインディスクの兆候がある可能性は低いです)、ディスクからUUIDを取り出してテンプレートから新しいUUIDを書き込む方が簡単です。 記事の最後に、grub.cfgからの抜粋があります。これは、それを理解するのに役立ちます。
何か問題が発生した場合は、EFIパーティションからgrub.cfgを削除できます。GRUBはそのシェルを起動し、そこからOSをロードして問題の原因を見つけることができます。
すべて順調であれば、先に進みましょう!
ファイナルタッチ:Windows 7をブートメニューに追加する
複雑なことは何もありません-WindowsディスクのUUIDとMicrosoft bootmgfw.efiからブートローダーへのパスを知る必要があるだけです(/ EFI / Microsoft / Boot /ディレクトリにありました)
そして、Linuxをロードするためのメニュー項目と同様に、Windowsをロードするための対応する項目を作成します。
menuentry "Windows 7" { search --fs-uuid --no-floppy --set=root 48EC-30CC set root='(hd0,gpt3)' chainloader ($root)/efi/microsoft/boot/bootmgfw.efi boot }
おわりに
EFIを搭載したコンピューターがますます増えているため、この投稿は誰かに役立つと信じています。RuNetにはほとんど情報が見つかりませんでした。
以下に、grub.cfgからの抜粋と、この問題をほとんど解決できなかった資料へのリンクを示します。
パーツgrub.cfg
set root='(hd0,gpt3)' set locale_dir=/EFI/Boot/grub/locale set lang=en insmod gettext loadfont ($root)/EFI/grub/unicode.pf2 set timeout=10 set default=0 set gfxmode=640x480 set gfxpayload=keep terminal_output gfxterm insmod part_gpt insmod png background_image -m normal ($root)/EFI/grub/spacefun-grub.png set color_normal=light-gray/black set color_highlight=white/black insmod part_gpt insmod ext2 search --no-floppy --fs-uuid --set=root 510c2ef3-0412-4d42-ba6b-15d1f680e150 menuentry 'Debian GNU/Linux, with Linux 3.5.3' --class debian --class gnu-linux --class gnu --class os { insmod part_gpt insmod ext2 set root='(hd0,gpt7)' search --no-floppy --fs-uuid --set=root 510c2ef3-0412-4d42-ba6b-15d1f680e150 echo 'Loading Linux 3.5.3 ...' linux /boot/vmlinuz-3.5.3 root=UUID=510c2ef3-0412-4d42-ba6b-15d1f680e150 ro quiet echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-3.5.3 }
耳鼻咽喉科に関するトピック
grub-efiビルド記事セクション
UPD:コメントと「よりシンプルなオプション」に感謝します! まだある場合は、恥ずかしがらずに書いてください。おそらく、私の問題に直面していて、そのような赤い目をしたくない人たちの生活を楽にします。