翻訳しなさい

Translate to EnglishÜbersetzen Sie zum Deutsch/GermanΜεταφράστε στα ελληνικά/GreekПереведите к русскому/RussianOversetter til Norsk/NorwegianÖversätta till Svensk/Swedishहिन्दी अनुवाद करने के लिए/Hindi
Tradueix al català/CatalanTulkot uz latviešu/LatvianPreložiť do slovenčiny/SlovakVertaal aan het Nederlands/Dutchترجمة الى العربية/ArabicTraduzca al Español/SpanishTraduisez au Français/French
Traduca ad Italiano/ItalianTraduza ao Português/Portuguese日本語に翻訳しなさい /Japanese한국어에게 번역하십시오/Korean中文翻译/Chinese Simplified中文翻译/Chinese TraditionalПереклад на українську/Ukrainian
オペレーティングシステムの概念のイメージ
Linuxの穀粒の開発(第3版)のイメージ
XSLT 2.0およびXPath 2.0のプログラマーの手引き(プログラマーへのプログラマー)のイメージ
現代オペレーティングシステム(第3版)のイメージ

GRUB2 EFIサポート

ほとんどのGNU/Linuxの配分は Linuxの穀粒を 追い出すのにGNUの地虫(壮大な統一されたブート・ローダ)を利用する。 地虫はエリッヒBoleynによって想像され、 最初に開発された。 それは1999年にGNUのプロジェクトの部分にならなかったが、決して公式に解放された。 最後の開発のスナップショットは2005年に解放されたv0.97だった。 それは決して公式に解放されなかったその事実にもかかわらず、何百万のコンピュータで世界的に使用される。

v0.97 codebaseは地虫の遺産として今知られている。 それはメンテナンスモードにまだ推定上あるが、苦境はここ数年間に起こらなかった。 その結果、赤い帽子のような売り手は地虫の遺産の彼らの自身の枝を維持する。 現在ソフト帽のプロジェクトは7つか8つのパッチがEFIサポートの付加に関連しているv0.97解放に25のパッチを加える。 地虫の遺産の他のフォークはIA32および X64 プラットホームのSolarisを追い出すのにOracleが使用するブート・ローダを含んでいる。

多くの年前に地虫の開発者は完全な書直しが要求されたことを決定した。 目的は台本を書く言語、国際化および局在化のためのサポートがある地虫のより強く、携帯用強力な版を作ることだった。 地虫の次世代を調査するために日本の情報技術の昇進代理店によって 資金を供給された 研究計画だった地虫2は蛹から得られる。

しばらくの間、私は TianoCore EFIの貝およびさまざまなEFIの実用性での実験ソフト帽12そして実験をを動かす 私の ずっとX64システムのEFIブーティング1である。 EFIの貝および私へのシステムブーツはさまざまなソフト帽の穀粒に追い出すのにそれからソフト帽の地虫の遺産のEFI可能にされた版を使用する。

最近私は私がGRUB2ブート・ローダで利用できる新しい 設備で実験 できるのは地虫2の源(現在v1.98)の最新バージョンをダウンロードし、GRUB2をX64 EFIのイメージ として 造り、に地虫の遺産のブート・ローダに平行して特別に取付けることにしたからである(EFIのシステム分割)。

GRUB2のEFI版を造ることは問題ではなかった。 いつものように、最初の条件は造りを形成することである。 私が選ぶコンフィギュレーションオプションのコピーはここにある:

 $ ./configure --with-platform=efi --enable-grub-fstest=no
--enable-grub-mkfont=no --disable-nls --enable-efiemu=no


見るIによって不具にされるEFIの模範化、NLSサポートおよびさまざまなデバッグユーティリティをことができるように(fstestおよびmkfont。) 造りのほとんどが指定されるところであるメイクファイルは../conf/x86_64-efi.mkを含んでいる。 デフォルトのメイクファイルにルビーの依存が あるが、 これは容易に働く。 ヘッダー../include/grub/i18nにまたマイナーな間違いがある。 苦境は#ifから#ifdefへENABLE_NLSの監視の構文法を変えることである。

首尾よく走った後、を使用してgrub.efiのイメージを発生させなければならない掘り返すmkimage実用性を作りなさい

$ ./grub-mkimage -d . -o grub.efi boot linux part_gpt  \
   fat ext2 normal sh configfile lspci ls reboot datetime
   loadenv search lvm help quit


GRUB2は非常にモジュラーブート・ローダである。 あなたがイメージにを使用して必要とするどのモジュールを掘り返すか、またはGRUB2貝からそれらに荷を積むことができる含むことができる。 ブーツモジュールは必須である、LinuxモジュールはLinuxのイメージのための積込み機、助けモジュールの表示助け情報であり、やめられるを除く残りのモジュールは、エリッヒBoleyn命令要約ページ 説明される。

造られたモジュールのリストはここにある:

acpi.mod          efi_gop.mod          gcry_whirlpool.mod  mmap.mod             scsi.mod
affs.mod          efi_uga.mod          gettext.mod         msdospart.mod        search_fs_file.mod
afs_be.mod        elf.mod              gfxmenu.mod         multiboot2.mod       search_fs_uuid.mod
afs.mod           ext2.mod             gfxterm.mod         multiboot.mod        search_label.mod
appleldr.mod      extcmd.mod           gptsync.mod         normal.mod           search.mod
ata.mod           fat.mod              gzio.mod            ntfscomp.mod         setjmp.mod
at_keyboard.mod   fixvideo.mod         halt.mod            ntfs.mod             setpci.mod
befs_be.mod       font.mod             handler.mod         part_acorn.mod       sfs.mod
befs.mod          fshelp.mod           hashsum.mod         part_amiga.mod       sh.mod
bitmap.mod        functional_test.mod  help.mod            part_apple.mod       sleep.mod
bitmap_scale.mod  gcry_arcfour.mod     hexdump.mod         part_gpt.mod         tar.mod
blocklist.mod     gcry_blowfish.mod    hfs.mod             part_msdos.mod       terminal.mod
boot.mod          gcry_camellia.mod    hfsplus.mod         part_sun.mod         terminfo.mod
bufio.mod         gcry_cast5.mod       iso9660.mod         parttool.mod         test.mod
cat.mod           gcry_crc.mod         jfs.mod             password.mod         tga.mod
chain.mod         gcry_des.mod         jpeg.mod            password_pbkdf2.mod  trig.mod
charset.mod       gcry_md4.mod         keystatus.mod       pbkdf2.mod           true.mod
cmp.mod           gcry_md5.mod         linux.mod           pci.mod              udf.mod
configfile.mod    gcry_rfc2268.mod     loadbios.mod        png.mod              ufs1.mod
cpio.mod          gcry_rijndael.mod    loadenv.mod         probe.mod            ufs2.mod
cpuid.mod         gcry_rmd160.mod      loopback.mod        quit.mod             vga_text.mod
crc.mod           gcry_seed.mod        ls.mod              raid5rec.mod         video_fb.mod
crypto.mod        gcry_serpent.mod     lspci.mod           raid6rec.mod         video.mod
datehook.mod      gcry_sha1.mod        lvm.mod             raid.mod             videotest.mod
date.mod          gcry_sha256.mod      mdraid.mod          read.mod             xfs.mod
datetime.mod      gcry_sha512.mod      memrw.mod           reboot.mod           xnu.mod
dm_nv.mod         gcry_tiger.mod       minicmd.mod         reiserfs.mod         xnu_uuid.mod
echo.mod          gcry_twofish.mod     minix.mod           relocator.mod


grub.efiのイメージを造って後私はの家にそれを特別に動かし、grub.cfgと呼ばれなければならない非常に基本的なGRUB2コンフィギュレーション・ファイルを作成した。 私の最初のgrub.cfgのコピーはここにある

#  FPM 3/18/10 manual edit
timeout=10
default=0
set color_normal=yellow/blue
set color_highlight=blue/yellow

menuentry "Fedora 12" {
   root=(hd0,2)
   linux /vmlinuz-2.6.32.9-70.fc12.x86_64 ro root=/dev/mapper/vg_ultra-lv_root  LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet nolapic
   initrd /initramfs-2.6.32.9-70.fc12.x86_64.img
}


連はわずかに別様に言い表わされ、地虫の遺産のコンフィギュレーション・ファイルから直接コピーすることができない。 それらはしかしかなり近く、必須の変更の説明は必要なべきではない。 命令穀粒がLinuxによって取って代わられたことに注目しなさい。 GRUB2仕切り数が1 0時で始まらないが、ドライブがまだ0時で始まることにまた注目しなさい。 従って最初のドライブの第2仕切りはGRUB2のしかし(hd0,1)地虫の遺産のhd (0,2)である。

私がEFIブーツのソフト帽12にそれを使用して実験にGRUB2に転換したときに、私はすぐに私がプリマスの主題を見たまで私が入力キーに当ったときに時間がからの3分にに約10第2から行ったことに気づいた。 EFI関係したコードが多数のサブディレクトリーにあるGRUB2 codebaseがかなりより大きく、複雑であるので私にこの遅れの原因を見つけ出すために間より地虫の遺産のcodebaseかかり。

いくつかのフライイングの後で、私はディスクキャッシュのサイズに最終的に問題を見つけ出した。 原始ファイル../kern/disk.cget_disk_readの貯蔵のアルゴリズムを()見なさい。 私はおそらくディスクキャッシュを全体でとばしたかもしれなかったがそれを穀粒およびinitrdのイメージファイルを読む数秒以内に8つのセクターから減った8192のセクター時期に隠し場所のサイズを増加することを見つけた。 ../include/grub/disk.hで作るべき変更はここにある。

/* The size of a disk cache in sector units.  */
#ifdef GRUB_MACHINE_EFI
#define GRUB_DISK_CACHE_SIZE    8192
#define GRUB_DISK_CACHE_BITS     13
#else
#define GRUB_DISK_CACHE_SIZE    8
#define GRUB_DISK_CACHE_BITS    3
#endif


共通のソースファイルのEFI特定のコードを守るのに私が監視GRUB_MACHINE_EFIを使用したことに注目しなさい。

GRUB2の1つの有用な特徴は再起動、モジュールを停止させる。 再起動これらのモジュールを使用できるまたはあなたのシステムを停止させるためにまたはあなたにメニュー選択を加えるのにGRUB2コマンド・ラインからのこれらの命令を実施しなさい。 例えば。 再起動メニュー選択はここにある。

menuentry "Reboot" {
   reboot
}


現在、命令はGRUB2からやめ、EFIの貝に戻って利用できない。 non-EFIのプラットホームのためにこれは有用な選択ではないが、EFI基づかせていたプラットホームに大きい柔軟性を提供する。 従って私はそのような命令を開発することにし、再起動命令のために私の型板としてソースコードを使用した。 誰でもがそのようなGRUB2命令を作成したいと思えば関連した細部はここにある。

次のソースコードを含んでいるあなたの造りの木の../commandsのサブディレクトリーでquit.cと示されるファイルを作成しなさい:

/*  quit.c - command to return to EFI shell */
/*
 *  GRUB  --  GRand Unified Bootloader
 *  Copyright (C) 2005,2007,2008  Free Software Foundation, Inc.
 *
 *  GRUB is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  GRUB is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <grub/dl.h>
#include <grub/command.h>
#include <grub/misc.h>
#include <grub/i18n.h>
#include <grub/term.h>
#include <grub/efi/efi.h>
#include <grub/efi/api.h>
#include <grub/efi/console.h>

static grub_err_t
grub_cmd_quit (grub_command_t cmd __attribute__ ((unused)),
                 int argc __attribute__ ((unused)),
                 char **args __attribute__ ((unused)))
{

    grub_efi_simple_text_output_interface_t *o;
    static grub_uint8_t efi_console_stdcolor =
           GRUB_EFI_TEXT_ATTR (GRUB_EFI_YELLOW,
           GRUB_EFI_BACKGROUND_BLACK);

    o = grub_efi_system_table->con_out;
    efi_call_2 (o->set_attributes, o, efi_console_stdcolor);
    efi_call_1 (o->clear_screen, o);

    grub_exit ();
    return 0;
}

static grub_command_t cmd;

GRUB_MOD_INIT(quit)
{
    cmd = grub_register_command ("quit", grub_cmd_quit,
                      0, N_("Return to EFI shell."));
}

GRUB_MOD_FINI(quit)
{
    grub_unregister_command (cmd);
}


このファイルの内容はベテランプログラマーに自ら明らかなべきである。 2つのefi_callsはスクリーンのテキストモードの前景および背景の色およびゆとり置くために適切なEFIの議定書呼出しをスクリーン実施する。

次にEFI特定のメイクファイルである次をする../conf/x86_64-efi.mkに指令を加えなさい:

# For quit.mod.
quit_mod_SOURCES = commands/quit.c

clean-module-quit.mod.1:
        rm -f quit.mod mod-quit.o mod-quit.c pre-quit.o quit_mod-commands_quit.o und-quit.lst

CLEAN_MODULE_TARGETS += clean-module-quit.mod.1

clean-module-quit.mod-symbol.1:
        rm -f def-quit.lst

CLEAN_MODULE_TARGETS += clean-module-quit.mod-symbol.1
DEFSYMFILES += def-quit.lst
mostlyclean-module-quit.mod.1:
        rm -f quit_mod-commands_quit.d

MOSTLYCLEAN_MODULE_TARGETS += mostlyclean-module-quit.mod.1
UNDSYMFILES += und-quit.lst

ifneq ($(TARGET_APPLE_CC),1)
quit.mod: pre-quit.o mod-quit.o $(TARGET_OBJ2ELF)
        -rm -f $@
        $(TARGET_CC) $(quit_mod_LDFLAGS) $(TARGET_LDFLAGS) -Wl,-r,-d -o $@ pre-quit.o mod-quit.o
        if test ! -z "$(TARGET_OBJ2ELF)"; then ./$(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi
        $(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -K _grub_mod_init -K _grub_mod_fini -R .note -R .comment $@
else
quit.mod: pre-quit.o mod-quit.o $(TARGET_OBJ2ELF)
        -rm -f $@
        -rm -f $@.bin
        $(TARGET_CC) $(quit_mod_LDFLAGS) $(TARGET_LDFLAGS) -Wl,-r,-d -o $@.bin pre-quit.o mod-quit.o
        $(OBJCONV) -f$(TARGET_MODULE_FORMAT) -nr:_grub_mod_init:grub_mod_init -nr:_grub_mod_fini:grub_mod_fini -wd1106 -nu -nd $@.bin $@
        -rm -f $@.bin
endif

pre-quit.o: $(quit_mod_DEPENDENCIES) quit_mod-commands_quit.o
        -rm -f $@
        $(TARGET_CC) $(quit_mod_LDFLAGS) $(TARGET_LDFLAGS) -Wl,-r,-d -o $@ quit_mod-commands_quit.o

mod-quit.o: mod-quit.c
        $(TARGET_CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) $(quit_mod_CFLAGS) -c -o $@ $<

mod-quit.c: $(builddir)/moddep.lst $(srcdir)/genmodsrc.sh
        sh $(srcdir)/genmodsrc.sh 'quit' $< > $@ || (rm -f $@; exit 1)

ifneq ($(TARGET_APPLE_CC),1)
def-quit.lst: pre-quit.o
        $(NM) -g --defined-only -P -p $< | sed 's/^\([^ ]*\).*/\1 quit/' > $@
else
def-quit.lst: pre-quit.o
        $(NM) -g -P -p $< | grep -E '^[a-zA-Z0-9_]* [TDS]'  | sed 's/^\([^ ]*\).*/\1 quit/' > $@
endif

und-quit.lst: pre-quit.o
        echo 'quit' > $@
        $(NM) -u -P -p $< | cut -f1 -d' ' >> $@

quit_mod-commands_quit.o: commands/quit.c $(commands/quit.c_DEPENDENCIES)
        $(TARGET_CC) -Icommands -I$(srcdir)/commands $(TARGET_CPPFLAGS)  $(TARGET_CFLAGS) $(quit_mod_CFLAGS) -MD -c -o $@ $<
-include quit_mod-commands_quit.d

clean-module-quit_mod-commands_quit-extra.1:
        rm -f cmd-quit_mod-commands_quit.lst fs-quit_mod-commands_quit.lst partmap-quit_mod-commands_quit.lst handler-quit_mod-commands_quit.lst parttool-quit_mod-commands_quit.lst video-quit_mod-commands_quit.lst terminal-quit_mod-commands_quit.lst

CLEAN_MODULE_TARGETS += clean-module-quit_mod-commands_quit-extra.1

COMMANDFILES += cmd-quit_mod-commands_quit.lst
FSFILES += fs-quit_mod-commands_quit.lst
PARTTOOLFILES += parttool-quit_mod-commands_quit.lst
PARTMAPFILES += partmap-quit_mod-commands_quit.lst
HANDLERFILES += handler-quit_mod-commands_quit.lst
TERMINALFILES += terminal-quit_mod-commands_quit.lst
VIDEOFILES += video-quit_mod-commands_quit.lst

cmd-quit_mod-commands_quit.lst: commands/quit.c $(commands/quit.c_DEPENDENCIES) gencmdlist.sh
        set -e;           $(TARGET_CC) -Icommands -I$(srcdir)/commands $(TARGET_CPPFLAGS)  $(TARGET_CFLAGS) $(quit_mod_CFLAGS) -E $<      | sh $(srcdir)/gencmdlist.sh quit > $@ || (rm -f $@; exit 1)

fs-quit_mod-commands_quit.lst: commands/quit.c $(commands/quit.c_DEPENDENCIES) genfslist.sh
        set -e;           $(TARGET_CC) -Icommands -I$(srcdir)/commands $(TARGET_CPPFLAGS)  $(TARGET_CFLAGS) $(quit_mod_CFLAGS) -E $<      | sh $(srcdir)/genfslist.sh quit > $@ || (rm -f $@; exit 1)

parttool-quit_mod-commands_quit.lst: commands/quit.c $(commands/quit.c_DEPENDENCIES) genparttoollist.sh
        set -e;           $(TARGET_CC) -Icommands -I$(srcdir)/commands $(TARGET_CPPFLAGS)  $(TARGET_CFLAGS) $(quit_mod_CFLAGS) -E $<      | sh $(srcdir)/genparttoollist.sh quit > $@ || (rm -f $@; exit 1)

partmap-quit_mod-commands_quit.lst: commands/quit.c $(commands/quit.c_DEPENDENCIES) genpartmaplist.sh
        set -e;           $(TARGET_CC) -Icommands -I$(srcdir)/commands $(TARGET_CPPFLAGS)  $(TARGET_CFLAGS) $(quit_mod_CFLAGS) -E $<      | sh $(srcdir)/genpartmaplist.sh quit > $@ || (rm -f $@; exit 1)

handler-quit_mod-commands_quit.lst: commands/quit.c $(commands/quit.c_DEPENDENCIES) genhandlerlist.sh
        set -e;           $(TARGET_CC) -Icommands -I$(srcdir)/commands $(TARGET_CPPFLAGS)  $(TARGET_CFLAGS) $(quit_mod_CFLAGS) -E $<      | sh $(srcdir)/genhandlerlist.sh quit > $@ || (rm -f $@; exit 1)

terminal-quit_mod-commands_quit.lst: commands/quit.c $(commands/quit.c_DEPENDENCIES) genterminallist.sh
        set -e;           $(TARGET_CC) -Icommands -I$(srcdir)/commands $(TARGET_CPPFLAGS)  $(TARGET_CFLAGS) $(quit_mod_CFLAGS) -E $<      | sh $(srcdir)/genterminallist.sh quit > $@ || (rm -f $@; exit 1)

video-quit_mod-commands_quit.lst: commands/quit.c $(commands/quit.c_DEPENDENCIES) genvideolist.sh
        set -e;           $(TARGET_CC) -Icommands -I$(srcdir)/commands $(TARGET_CPPFLAGS)  $(TARGET_CFLAGS) $(quit_mod_CFLAGS) -E $<      | sh $(srcdir)/genvideolist.sh quit > $@ || (rm -f $@; exit 1)

quit_mod_CFLAGS = $(COMMON_CFLAGS)
quit_mod_LDFLAGS = $(COMMON_LDFLAGS)


あなたのGRUB2造りの木の根から実施によってquit.modを造れる作るquit.modを今べきである。 それからあなたのgrub.efiのイメージにやめられたモジュールを組み込むために掘り返すmkimage実用性を使用しなさい。 の新しく設立されたgrub.efiのイメージを特別に置いた後、grub.cfgでGRUB2貝からのまたは連によるやめられた命令を使用べきである。

現在のLinuxの積込み機はデフォルトにスクリーンのテキストモードの前景および背景色を再調節しない。 EFIの貝のためにこれらは黄色およびそれぞれ黒い。 その代りGRUB2前景および背景色は積込み機モジュールによってoutputtedテキストに広がる。 diffsはこの問題を訂正し、地虫の遺産によってoutputtedそれらに類似した報知的なメッセージを加える積込み機ファイル../loader/i386/efi/linux.cにここにある。

37a38,41
> #include <grub/efi/console.h>
> #include <grub/i386/vga_common.h>
>
>
240a245,247
>   grub_printf("Trying to allocate %u pages for VMLINUZ\n",
>                 (unsigned) prot_mode_pages);
>
608a616,622
>   /* set color colors to EFI default */
>   grub_efi_simple_text_output_interface_t *o;
>   static grub_uint8_t efi_console_standard_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_YELLOW, GRUB_EFI_BACKGROUND_BLACK);
>
>   o = grub_efi_system_table->con_out;
>   efi_call_2 (o->set_attributes, o, efi_console_standard_color);
>
809c823,824
<   grub_printf ("   [Linux-bzImage, setup=0x%x, size=0x%x]\n",
---
>
>   grub_printf ("[Linux-EFI, setup=0x%x, size=0x%x]\n",


私に作動中GRUB2があったらフルスクリーンの背景を支える方法を私は見ることにした。 これは地虫の遺産に主要な限定がある区域の1つである。 それは最大16色の背景だけをおよび640×480の最高の決断支える。

GRUB2の背景のためにサポートをテストするためには、lはソフト帽12の背景を撮り、TGAのフォーマットに 飾りひも を使用して変えた。 なぜTGAか。 特定の理由無し。 私は容易に使用されたJPEGまたはPNGのフォーマットとしてちょうど持つことができる。 私はGRUB2サブディレクトリーにこのイメージを特別に置いた。

次に私は時グラフィックモードで特性を表示するための適したグリフ(壷)ファイルを得る必要があった。 GRUB2はPFF2 ビットマップ 壷を使用する。 私の自身のPFF2ファイルの作成の悩みに行ってよりもむしろ、私はDebian grub-common_1.98のパッケージからフォントファイルunicode.pf2を単に得た。

最後に、下記に示されているように、私は荷を積み、適切なモジュールに形成し、背景を表示するためにgrub.cfgを変更した。

#
# FPM 3/19/10
#
timeout=20
default=0
if loadfont /efi/grub2/unicode.pf2
then
   set gfxmode="1024x768x32"
   set gfxpayload=keep
   insmod gfxterm
   insmod efi_gop
   terminal_output gfxterm
   terminal gfxterm
fi
use_bg=true
backgound_image /efi/grub2/fedora.tga

set color_normal=yellow/blue
set color_highlight=blue/yellow

menuentry "Fedora 12" {
   root=(hd0,2)
   linux /vmlinuz-2.6.32.9-70.fc12.x86_64 ro root=/dev/mapper/vg_ultra-lv_root  LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet nolapic
   initrd /initramfs-2.6.32.9-70.fc12.x86_64.img
}

menuentry "Reboot" {
   reboot
}

menuentry "Exit to EFI Shell" {
   quit
}


GRUB2が基礎的な台本を書く言語を支えることに気づく。 ここに私はフォントファイル/efi/grud2/unicode.pf2がgfxtermの前に荷を積まれ、efi_gopがモジュール荷を積まれ、形成されることテストする。 私がシステムを再起動し、EFIの貝からのGRUB2を実施したときに、指定ソフト帽のbackgoundのイメージはボーダーなしで全スクリーンをカバーし、特性は正しく表示された。

GRUB2は現時点でEFIブーティングのソフト帽12のための可能なオプションであるか。 デフォルトの小さいディスクキャッシュによって引き起こされる負荷遅れを最小にすることを変更すれば、はい。 私好むGRUB2をか。 はい。 実際には私は提供する付加的な機能性および柔軟性を愛する。 質問を更に広げて、GRUB2はゴールデンアワーの使用の準備ができて、GRUB2にソフト帽近い将来に転換するべきであるか。 GNU/LinuxのUbuntu、GentooおよびDebianの配分は確かにそう考え、最新リリースはデフォルトのブート・ローダとしてそれを利用する。 両方の質問への私の答えはおそらくNo.である。 私は個人的にGRUB2は仕事がEFIブーティングのためのプロダクトを-特に堅くするように要求することを考える。 他の理由は正確な、最新完全なエンドユーザードキュメンテーションおよびに複雑なプロダクトの欠乏を含んでいる。 に複雑なプロダクトによって、私は多数モジュールおよび他のファイルを意味する。 モジュールの多数は、例えばminix.mod、IA32かX64プラットホームのソフト帽のユーザーに無益、ソフト帽RPMの一部として配られるべきではない。

ソフト帽12のために利用できるGRUB2 RPMがある。 但しそれはソフト帽のユーザーにあらゆる使用であるかどうかすべての利用できるloadableモジュールをに関係なく含んでいる。 より悪いまだ、それは/usr/lib/grub2/i386-pc/の下にすべてのモジュールを取付ける。 なぜ/usr/lib/grub2の下にちょうどそれら置かれなくてか。 余分i386PCはどんな価値を加えるか。 私はx86-64プラットホームにある; 私は私がi386PCと呼ばれる登録簿で必要とするモジュールを見つけると期待しない。 はい、私はGRUB2 boatloaderが32ビットモジュールを常に使用するが、こと事実がサブディレクトリーの名前で埋め込まれる必要はないことを理解する。 さらに、2つの重要なファイルはRPMのすなわちフォントファイルunicode.pf2およびascii.pf2から行方不明である。 これらのファイルなしで、背景は可能ではない。

ソフト帽はGRUB2を長期で使用することに転換するべきであるか。 確かに。 loadableモジュール、台本を書くおよび局在化サポートのような余分特徴は率直に非常に強制的である。
 

GRUB2 EFIサポートへの6つのコメント

  • 情報をありがとう。 私が何かを正しくしていることを知っていることは素晴らしい!

  • あなたのブログを読むこと素晴らしい。 私に「古い」MacBook 2.1があり、ソフト帽12 i386を滑らかに動かす。 私はソフト帽をセットアップするのにnetinstのCDを使用したnetinst amd64は機械で追い出すことができない。 ソフト帽12のブーツは(3秒)掘り返すefi、私の機械である単一のブーツのソフト帽12絶食する作り付けと。

    他のディスクでIつはgentoo amd64をセットアップした。 すべての取付けはうまくいいたが、地虫「表面」が現われる前に私はanoying 「長い」ブーティングに、約40秒直面した: =))

    私は時間があれば私はあなたのブログのあなたの個人指導に続く。 ありがとうはをよい糸口を任命する

    rgds
    sts

  • Keshav P R

    素晴らしい記事。 私はpendrive 1 GB USBからのtianocore.sourceforge.net EDKのデュエットUEFI64 (UEFI 2.1 x86_64)ファームウェアブーティングを使用する(http://www.4shared.com/dir/28138560/e865bd7c/Tianocore_EFI_DUET.html)。 私はGRUB2 UEFIおよびGRUB2 BIOSを使用してWindowsを7 x64プロ(UEFI-GPT)およびArchlinux x86_64のブーティング有する(原稿- GRUB2 UEFI http://gist.github.com/410877 および GRUB2 BIOS http://gist.github.com/418438 --を 編集しなさい )。

    実際にこれがのメーリングリスト(留意するgrub2 devsのためのhttp://lists.gnu.org/mailman/listinfo/grub-devel)を掘り返すdevelことをすべてことを述べるべきである。

    I hve GRUB2 UEFI x86_64の問題のブーティングArchlinux。 Archlinuxの前に私にソフト帽12 x86_64があった。 ソフト帽13が解放したときに、私は圧延解放システムのためのアーチに変わった。 アーチはGRUB2 BIOSでうまく追い出すが、私が「VFS得るGRUB2 UEFIで根装置」を開けることができないし、「点滅するCAPSロックとの正しいroot=の選択」間違いそして穀粒のパニックおよび無理解なキーボードおよびタッチパッド付けなさい(レポートhttp://lists.gnu.org/archive/html/bug-grub/2010-06/msg00000.html および Archlinuxのバグレポートhttp://bugs.archlinux.org/task/19592を 虫掘り返しなさい )。

    それは記憶でinitramfsのように荷を積まれたりArchlinuxの穀粒に正しくない通じるようであるが。 ソフト帽は穀粒で作り付けすべての必須ディスクコントローラーの運転者およびFSの運転者のためにうまく追い出す。 しかしArchlinuxで、非常に基本条件を除いて、すべてのディスクコントローラーおよびFSサポートは外的なモジュールとして編集される。 従ってinitramfsなしでArchlinuxを追い出すことは不可能である。 ArchlinuxはBSD様式のinitフレームワークを使用する。

    実際に間違っているものを知っているか。 被告人は(grub2源dir)エラーなしで/loader/i386/efi/linux.c.のソフト帽の掘り返遺産grub.efiの(x86_64 rpmからp7zipを使用して得られる)ブーツArchlinuxであるかもしれない従って問題がgrub2にあることを私は推測する。 私はプログラマーではないが、たくさん修善するのを好む。 どの助けでも認められる。 ありがとう。

  • BVK Chaitanya

    FSFへの署名の版権の割り当てが良ければ、掘り返すdevelメーリングリストをあなたのquit.modの源をに送ることができるか。

  • このポストをありがとう….非常に有用…

    あなたの場所をしおり行くこと!!!!!!!