Traduisez

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
Image des logiciels d'exploitation modernes (3ème édition)
L'image de RHCE Red Hat a certifié le guide d'étude de Linux d'ingénieur (examen RH302) (la presse de certification)
Image de XSLT 2.0 et de référence de programmeur de XPath 2.0 (programmeur au programmeur)
Image des concepts du système d'exploitation

Appui de GRUB2 EFI

La plupart des distributions de GNU/Linux utilisent le VER de GNU (chargeur-amorce unifié grand) pour initialiser le grain de Linux. Le VER a été conçu et au commencement développé par Erich Boleyn. C'est devenu une partie du projet de GNU en 1999 mais jamais a été officiellement libéré. Le dernier instantané de développement était v0.97 qui a été libéré en 2005. Malgré le fait que il jamais a été officiellement libéré, il est employé dans le monde entier sur des millions d'ordinateurs.

Le codebase v0.97 est maintenant connu comme legs de VER. Censément il est toujours en mode d'entretien mais difficulté ne s'est pas produite en dernières années. En conséquence, les fournisseurs tels que Red Hat maintiennent leurs propres branches de legs de VER. Actuellement le projet de Fedora applique 25 corrections au dégagement v0.97 dont 7 ou 8 corrections se rapportent à l'addition de l'appui d'EFI. D'autres fourchettes de legs de VER incluent le chargeur-amorce employé par Oracle pour initialiser le Solaris sur les plates-formes IA32 et X64.

Il y a de nombreuses années les lotisseurs de VER ont décidé qu'une réécriture complète a été exigée. Le but était de faire une version plus robuste, plus portative et puissante du VER qui a le soutien d'une langue, d'une internationalisation et d'une localisation scripting. Le VER 2 est dérivé des CHRYSALIDES qui était un projet de recherche financé par l'agence de promotion d'Information-technologie du Japon pour étudier la prochaine génération du VER.

Pendant quelque temps, j'ai été l'EFI-initialisation une de mes systèmes X64 qui court Fedora 12 et expérimentation avec la coquille de TianoCore EFI et les diverses utilités d'EFI. Les bottes de système dans une coquille et moi d'EFI emploient alors la version EFI-permise de Fedora du legs de VER pour initialiser dans divers Fedora des grains.

Récemment j'ai décidé de télécharger la dernière version des sources du VER 2 (actuellement v1.98), de construire GRUB2 comme image de X64 EFI et de l'installer parallèlement au chargeur-amorce de legs de VER sur EN PARTICULIER (cloison de système d'EFI) de sorte que j'aie pu expérimenter avec les nouveaux équipements disponibles dans le chargeur-amorce GRUB2.

Établir la version d'EFI de GRUB2 n'était pas une issue. Comme d'habitude, la première condition est de configurer la construction. Voici une copie des options de configuration que je choisis :

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


Comme vous pouvez voir l'émulation d'EFI handicapée par I, l'appui de NLS et les divers utilitaires de mise au point (fstest et mkfont.) Le fichier makefile inclut ../conf/x86_64-efi.mk qui est où la majeure partie de la construction est spécifiée. Le fichier makefile de défaut a une dépendance sur le rubis mais ceci est facilement travaillé autour. L'en-tête ../include/grub/i18n a également une erreur mineure. La difficulté est de changer la syntaxe de la garde d'ENABLE_NLS du #if en #ifdef.

Après que vous ayez avec succès couru faites, vous doivent produire de l'image de grub.efi utilisant fouillent-mkimage l'utilité.

$ ./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 est un chargeur-amorce très modulaire. Vous pouvez inclure n'importe quels modules que vous avez besoin dans l'image utilisant fouillez-mkimage ou vous pouvez les charger de la coquille GRUB2. Le module de botte est obligatoire, le module de Linux est le chargeur pour des images de Linux, l'information d'aide d'affichages de module d'aide, et les modules restants, excepté stoppé sont expliqués en page récapitulative de commandes d'Erich Boleyn.

Voici une liste des modules qui ont été construits :

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


Après qu'établissant l'image de grub.efi je l'ai déplacée à sa maison sur EN PARTICULIER et ai créé un fichier de la configuration GRUB2 très de base qui doit s'appeler le grub.cfg. Voici une copie de mon grub.cfg initial

#  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
}


Des strophes sont exprimées légèrement différemment et ne peuvent pas être copiées directement à partir d'un fichier de configuration de legs de VER. Elles sont assez étroites cependant et aucune explication des changements exigés ne devrait être nécessaire. Notez que le grain de commande a été remplacé par le Linux. Notez également que les nombres de la cloison GRUB2 commencent à 1 non 0 mais les commandes commencent toujours à 0. Ainsi la deuxième cloison de la première commande est le hd (0.2) dans GRUB2 mais (hd0,1) dans le legs de VER.

Quand j'ai commuté à GRUB2 à l'expérience au moyen de elle EFI-initialisez Fedora 12, j'a immédiatement noté que le temps de quand j'ai enfoncé la touche de pénétrer dans jusqu'à ce que j'aie vu un thème de Plymouth est allé d'environ 10 seconde à plus de 3 minutes. Cela m'a pris un moment pour dépister la cause de ce retard car le codebase GRUB2 est sensiblement plus grand et plus complexe que le codebase de legs de VER et le code EFI-connexe est dans de nombreux sous-répertoires.

Après un certain nombre de faux départs, je finalement ai dépisté l'issue vers le bas à la taille de la cachette de disque. Voyez l'algorithme de mise en antémémoire dans le get_disk_read () dans le fichier source ../kern/disk.c. Je pourrais avoir dévié probablement la cachette de disque tout à fait, mais ai trouvé cela augmenter la taille de cachette de 8 secteurs à 8192 secteurs réduits l'heure de lire les dossiers d'image de grain et d'initrd moins que quelques secondes. Voici les changements à faire dans ../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


Notez que j'avais l'habitude la garde GRUB_MACHINE_EFI pour garder n'importe quel code EFI-spécifique dans les fichiers source communs.

Un dispositif utile de GRUB2 sont la remise à zéro et arrêtent des modules. Vous pouvez utiliser ces modules pour ajouter des options de menu ou à la remise à zéro ou arrêter votre système ou à vous appelez ces commandes de la ligne de la commande GRUB2. Par exemple. voici une option de menu de remise à zéro.

menuentry "Reboot" {
   reboot
}


Actuellement, aucune commande n'est disponible pour stopper hors de GRUB2 et pour retourner à la coquille d'EFI. Pour des plates-formes de non-EFI ce n'est pas une option utile mais pour les plates-formes EFI-basées il fournit la grande flexibilité. J'ai donc décidé de développer une telle commande et ai employé le code source pour la commande de remise à zéro en tant que mon calibre. Au cas où quiconque voudrait autrement créer une telle commande GRUB2, voici les détails appropriés.

Créez un dossier appelé quit.c dans le sous-répertoire de ../commands de votre arbre de construction qui contient le code source suivant :

/*  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);
}


Le contenu de ce dossier devrait être explicite à un programmeur expérimenté. Les deux efi_calls appellent les appels appropriés de protocole d'EFI pour placer le premier plan de mode texte d'écran et les couleurs et l'espace libre de fond l'écran.

Ajoutez après le suivant font des directives à ../conf/x86_64-efi.mk qui est le fichier makefile EFI-spécifique :

# 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)


Vous devriez maintenant pouvoir construire quit.mod par l'invocation faites quit.mod à partir de la racine de votre arbre de la construction GRUB2. Employez alors fouillent-mkimage l'utilité pour incorporer le module stoppé à votre image de grub.efi. Après avoir placé l'image de création récente de grub.efi dans EN PARTICULIER, vous devriez pouvoir employer la commande stoppée de la coquille GRUB2 ou par l'intermédiaire d'une strophe dans grub.cfg.

Le chargeur courant de Linux ne remet pas à zéro les couleurs de premier plan et de fond de mode texte d'écran à leurs défauts. Pour des coquilles d'EFI ce sont jaunes et noirs respectivement. Les couleurs au lieu de cela du premier plan GRUB2 et du fond propagent sur le texte outputted par le module de chargeur. Voici les diffs au dossier ../loader/i386/efi/linux.c de chargeur pour corriger ce problème et pour ajouter les messages instructifs semblables à ceux outputted par le legs de VER.

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",


Une fois que j'avais GRUB2 en service, j'ai décidé de regarder comment soutenir un fond d'image pleine page. C'est l'un des secteurs où le legs de VER a des limitations importantes. Il soutient seulement un fond d'image avec un maximum de 16 couleurs et une résolution maximum de 640×480.

Pour examiner l'appui pour un fond d'image dans GRUB2, l a pris un fond d'image de Fedora 12 et l'a converti en format de TGA utilisant la GANSE. Pourquoi TGA ? Aucune raison particulière. Je pourrais avoir juste comme des formats facilement utilisés de JPEG ou de png. J'ai placé cette image dans EN PARTICULIER le sous-répertoire GRUB2.

Après j'ai dû obtenir un dossier approprié de glyph (police) pour montrer des caractères quand en mode de graphiques. GRUB2 emploie les polices PFF2 à mémoire d'image. Plutôt que se donnant la peine de créer mon propre dossier PFF2, j'ai simplement extrait le fichier fonte unicode.pf2 à partir du paquet de Debian grub-common_1.98.

En conclusion, comme montré ci-dessous, j'ai modifié grub.cfg pour charger et configurer les modules appropriés et pour montrer le fond d'image.

#
# 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
}


Vous noterez que GRUB2 soutient une langue scripting rudimentaire. J'examine que le fichier fonte /efi/grud2/unicode.pf2 est chargé avant le gfxterm et des modules d'efi_gop sont chargés et configurés. Quand j'ai rechargé le système et ai appelé GRUB2 de la coquille d'EFI, l'image spécifique de backgound de Fedora a couvert l'écran entier sans frontière et des caractères ont été correctement montrés.

GRUB2 est-il une option viable pour l'EFI-initialisation Fedora 12 actuellement ? Oui, à condition que il soit modifié pour réduire au minimum le retard de charge provoqué par les petites cachettes de disque de défaut. Font j'aiment GRUB2 ? Oui. En fait j'aime la flexibilité et la fonctionnalité additionnelle qu'elle fournit. Élargissant la question plus loin, GRUB2 prêt pour utiliser-et primetime devrait-il Fedora est-il commutateur à GRUB2 dans un avenir proche ? Les distributions d'Ubuntu, de Gentoo et de Debian de GNU/Linux pensent certainement ainsi et leurs derniers dégagements l'utilisent comme chargeur-amorce de défaut. Ma réponse aux deux questions est probablement numéro. Je pense personnellement que GRUB2 exige d'un certain travail de durcir le produit - particulièrement pour l'EFI-initialisation. D'autres raisons incluent un manque de documentation précise, à jour et complète d'utilisateur et d'un produit au-dessus-complexe. Par le produit au-dessus-complexe, je veux dire le grand nombre de modules et d'autres dossiers. Plusieurs des modules, par exemple minix.mod, sont inutiles aux utilisateurs de Fedora sur une plate-forme IA32 ou X64 et ne devraient pas être distribués en tant qu'élément de Fedora T/MN.

Il y a des GRUB2 T/MN disponibles pour Fedora 12. Cependant il contient tous les modules chargeables disponibles indépendamment de s'ils sont utiles n'importe quel aux utilisateurs de Fedora. Plus mauvais toujours, il installe tous les modules sous /usr/lib/grub2/i386-pc/. Pourquoi pas simplement mis leur sous /usr/lib/grub2 ? Quelle valeur l'i386-pc supplémentaire ajoute-t-il ? Je suis sur une plate-forme x86-64 ; Je ne compte pas trouver les modules dont j'ai besoin dans un annuaire appelé l'i386-pc. Oui, je comprends que le boatloader GRUB2 utilise toujours les modules à 32 bits mais que le fait n'a pas besoin d'être inclus dans un nom de sous-répertoire. En outre, deux dossiers importants sont absents du T/MN, c.-à-d. les fichiers fontes unicode.pf2 et ascii.pf2. Sans ces dossiers, les fonds d'image ne sont pas possibles.

Au cas où Fedora commuter à employer GRUB2 à long terme ? Certainement. Les dispositifs supplémentaires tels que l'appui chargeable de modules, scripting et de localisation sont franchement très irrésistibles.
 

6 commentaires à l'appui de GRUB2 EFI

  • Merci pour l'information. Il fait beau de savoir que je fais quelque chose convenablement !

  • Gentil de lire votre blog. J'ai « vieux » MacBook 2.1 et cours sans à-coup Fedora 12 i386. J'avais l'habitude le CD de netinst pour installer le chapeau feutré, mais le netinst amd64 ne peut pas initialiser sur la machine. La botte de Fedora 12 jeûnent (3 secondes) avec intégré fouillent-efi, ma machine est le chapeau feutré simple 12 de botte.

    Sur l'autre disque I gentoo installé amd64. toute l'installation est bien allée mais j'ai fait face à la « longue » initialisation anoying avant que le ver « visage » apparaissent, environ 40 secondes : =))

    Une fois que j'ai le temps je suivrai votre cours d'instruction sur votre blog. Merci pour nomment le bon indice

    rgds
    sts

  • Keshav P R

    Article gentil. J'emploie l'initialisation de progiciels du DUET UEFI64 (UEFI 2.1 x86_64) de tianocore.sourceforge.net EDK de l'USB de 1 gigaoctet pendrive (http://www.4shared.com/dir/28138560/e865bd7c/Tianocore_EFI_DUET.html). J'ai Windows 7 x64 initialisation pro (UEFI-GPT) et d'Archlinux x86_64 utilisant GRUB2 UEFI et GRUB2 BIOS (compilez les manuscrits - GRUB2 UEFI http://gist.github.com/410877 et GRUB2 BIOS http://gist.github.com/418438 ).

    Vous devriez réellement mentionner que toute ceci dans fouillent-devel la liste d'adresses (http://lists.gnu.org/mailman/listinfo/grub-devel) pour que devs grub2 prennent la notification.

    Hve I une initialisation Archlinux de problème dans GRUB2 UEFI x86_64. Avant Archlinux j'ai eu Fedora 12 x86_64. Quand Fedora 13 a libéré, j'ai changé plus d'en la voûte pour son système de dégagement de roulement. La voûte initialise très bien dans GRUB2 BIOS, mais dans GRUB2 UEFI que j'obtiens « VFS ne peut pas ouvrir le dispositif de racine » et des erreurs « apposez option correcte de root= » et une panique de grain avec la FONCTION MAJUSCULE clignotant et clavier et touchpad insensibles (bogue-fouillez le rapport http://bugs.archlinux.org/task/19592 de rapport http://lists.gnu.org/archive/html/bug-grub/2010-06/msg00000.html et de bogue d'Archlinux ).

    Il semble comme les initramfs est chargé dans la mémoire mais pas correctement passé au grain d'Archlinux. Fedora initialise très bien en raison de tous les conducteurs exigés du contrôleur de disques et de conducteurs de FS intégrés au grain. Mais dans Archlinux, excepté les conditions très de base, tout le contrôleur de disques et l'appui de FS sont compilés en tant que modules externes. Ainsi il est impossible d'initialiser Archlinux sans initramfs. Archlinux emploie le cadre d'init de modèle de schéma.

    Savez-vous ce qui est réellement erroné ? Le coupable pourrait n'être (grub2-source-dir) des bottes Archlinux du fouiller-legs grub.efi de /loader/i386/efi/linux.c. Fedora (extrait utilisant p7zip à partir de x86_64 T/MN) sans aucune erreur, ainsi je devine que le problème est avec grub2. Je ne suis pas un programmeur mais j'aime bricoler beaucoup. N'importe quelle aide serait appréciée. Merci.

  • BVK Chaitanya

    Pouvez-vous envoyer votre source de quit.mod à fouillez-vous-devel la liste d'adresses, si la tâche de signature de copyright au FSF est correcte ?

  • merci pour ce poteau….très utile…

    aller bookmark votre emplacement ! ! ! ! ! ! !