当一定数量的其他GNU/Linux发布例如 Ubuntu时 移动了向 GRUB2, 浅顶软呢帽 继续使用 幼虫遗产。 当 他 为红色帽子,工作了在移居的一些初步调查 工作对 GRUB2由浅顶软呢帽项目的杰里米・ Katz完成。 但是那工作似乎完全地停止了,当他留下红色帽子,当项目页的最后更新是在2009年7月。
这个岗位将显示您如何移居您的浅顶软呢帽13系统解雇使用GRUB2而不是幼虫遗产。 一如既往,在试图迁移之前支持您的系统。 事能和出错。 为您! 是您! 您被警告了! 如果您有引导装入过程的一个严重的问题您是不熟悉的与,您能导致度过试图许多令人沮丧的小时得到系统顺利地解雇。
当前有GRUB2包裹(RPM)可利用为浅顶软呢帽13 (Goddard)。 自这个岗位日期, RPM版本是grub2-1.98-2.fc13.*.rpm。 然而,它是不用GRUB2替换幼虫遗产。 反而它共存与幼虫遗产并且在安装之上增加自己到幼虫遗产菜单,因此您能选择GRUB2从幼虫遗产菜单,当解雇您的系统时。 这包括有这个包裹的README.Fedora :
Using GNU GRUB 2 in Fedora ========================== Though GRUB 2 provides various feature enhancements over previous GRUB version (referred to as "GRUB", or "GRUB Legacy"), it did not reach its stability and feature completness yet, and thus is not ready to replace it for the whole user base. This package is primarily intended to encourage testing and accelerate distribution integration. It is generally safe to install the package. It is able to co-exist with existing GRUB installation and adds itself to the GRUB menu upon installation, so you'll able to select GRUB 2 from GRUB menu during the boot. Utilities --------- The GRUB 2 utilities are prefixed (or postfixed) with 'grub2': grub2-editenv grub2-mkimage grub2-mkelfimage grub2-mkrescue grub2-emu grub2-install grub2-mkdevicemap grub2-probe grub2-setup update-grub2 Documentation ------------- The GRUB 2 lacks documentation. While you are encouraged to contribute the documentation, you can use the GRUB 2 Wiki [1] as primary source of information pertaining to this development snapshot. [1] http://grub.enbug.org/ If you intend to install grub2 as your primary boot loader refer to the GRUB 2 Wiki for information on how to set it up. Support channels ---------------- If you find a bug in this package, report them to the Red Hat Bugzilla [2]. For talk about using grub2, use IRC channel #grub on freenode Network [3]. You can meet this package maintainer there (nick lkundrak). [2] http://bugzilla.redhat.com/ [3] http://freenode.net/ -- Lubomir RintelFedora Project
因为它不增加价值到启动过程,这是一个相当奇怪的方式增加GRUB2支持到浅顶软呢帽。 反而它使它复杂化。 除草根遗产的第一起动,然后选择GRUB2然后解雇浅顶软呢帽。 它不代替幼虫遗产。 它给GRUB2剧本和双改名和因而与使用GRUB2的其他平台是不相容的。 以我所见,用户应该避免安装这个包裹,并且越快这个包裹obsoleted好。
我们将修造从1.98发行来源tarball的GRUB2并且用GRUB2替换幼虫遗产。 在完成之后您将没有在幼虫遗产的附庸。 您能下载从gnu.org的1.98 发行。 为这个岗位的目的我使用/work/grub2作为修造目录。
$ mkdir -p /work/grub2 $ cd /work/grub2 $ wget ftp://alpha.gnu.org/gnu/grub/grub-1.98.tar.gz $ wget ftp://alpha.gnu.org/gnu/grub/grub-1.98.tar.gz.sig $ gpg --verify grub-1.98.tar.gz.sig ..... $ tar xvf grub-1.98.tar.gz $ cd grub-1.98 $ ls cinclude.m4 DISTLIST genterminallist.sh mkinstalldirs aclocal.m4 docs gentrigtables.c mmap AUTHORS efiemu genvideolist.sh NEWS autogen.sh font gettext normal autom4te.cache fs gfxmenu partmap boot gencmdlist.sh gnulib parttool bus gendistlist.sh grub-1.98.tar.gz.sig po ChangeLog genfslist.sh hello README commands genhandlerlist.sh hook script conf geninitheader.sh include stamp-h.in config.guess geninit.sh INSTALL term config.h.in genkernsyms.sh.in install-sh tests config.rpath genmk.rb io THANKS config.sub genmoddep.awk kern TODO configure genmodsrc.sh lib util configure.ac genpartmaplist.sh loader video COPYING genparttoollist.sh Makefile.in disk gensymlist.sh.in missing $ ls -d */ autom4te.cache/ disk/ gettext/ include/ mmap/ script/ boot/ docs/ gfxmenu/ io/ normal/ term/ bus/ efiemu/ gnulib/ kern/ partmap/ tests/ commands/ font/ hello/ lib/ parttool/ util/ conf/ fs/ hook/ loader/ po/ video/ $
您也许想知道我为什么下载了第二个文件,即gpg -核实grub-1.98.tar.gz.si g。<> 在gnu.org的每下载的tarball有一个伴随的.sig文件。 这是用GnuPG创造的一个 数字签名。 假设您已经有一个适当的公共密钥,您能核实被下载的tarball的署名使用gpg -核实grub-1.98.tar.gz.si g。
其次您需要配置GRUB2修造环境使用配置:
./configure --enable-efiemu=no checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for cmp... cmp checking for bison... bison checking for gawk... (cached) gawk checking whether make sets $(MAKE)... (cached) yes ......... ......... config.status: creating Makefile config.status: creating gensymlist.sh config.status: creating genkernsyms.sh config.status: creating stamp-h config.status: creating config.h config.status: config.h is unchanged config.status: linking include/grub/i386 to include/grub/cpu config.status: linking include/grub/i386/pc to include/grub/machine config.status: executing depfiles commands config.status: executing po-directories commands ******************************************************* GRUB2 will be compiled with following components: Platform: i386-pc With memory debugging: No efiemu runtime: No (explicitly disabled) grub-fstest: Yes grub-mkfont: No (need freetype2 library) ******************************************************* $
注意我通过配置命令行选择明白地关闭了EFI仿效,因为您真正地不需要它。 您能使用配置-帮助看什么其他选择是可利用定做修造。
下修造GRUB2双和模块。 您可执行在32位或一个64位系统的修造; 它不方式。
$ make gcc -Ignulib -I./gnulib -I. -I./include -I./gnulib -I./include -Wall -W -DGRUB_LIBDIR=\"/usr/local/lib/`echo grub/i386-pc | sed 's,x,x,'`\" -DLOCALEDIR=\"\" -DGRUB_MACHINE_PCBIOS=1 -DGRUB_UTIL=1 -DGRUB_KERNEL_MACHINE_LINK_ADDR=0x8200 -MD -c -o grub_mkimage-gnulib_progname.o gnulib/progname.c gcc -Iutil -I./util -I. -I./include -I./gnulib -I./include -Wall -W -DGRUB_LIBDIR=\"/usr/local/lib/`echo grub/i386-pc | sed 's,x,x,'`\" -DLOCALEDIR=\"\" -DGRUB_MACHINE_PCBIOS=1 -DGRUB_UTIL=1 -DGRUB_KERNEL_MACHINE_LINK_ADDR=0x8200 -MD -c -o grub_mkimage-util_grub_mkrawimage.o util/grub-mkrawimage.c ......... ......... /bin/mkdir -p $(dirname po/ru.mo) /usr/bin/msgfmt -c --statistics -o po/ru.mo po/ru.po 268 translated messages, 1 fuzzy translation, 1 untranslated message. /usr/bin/msgmerge -U po/sv.po po/grub.pot ...................................... done. /bin/mkdir -p $(dirname po/sv.mo) /usr/bin/msgfmt -c --statistics -o po/sv.mo po/sv.po 168 translated messages, 1 fuzzy translation, 101 untranslated messages. /usr/bin/msgmerge -U po/zh_CN.po po/grub.pot .............................................. done. /bin/mkdir -p $(dirname po/zh_CN.mo) /usr/bin/msgfmt -c --statistics -o po/zh_CN.mo po/zh_CN.po 268 translated messages, 1 fuzzy translation, 1 untranslated message.
如果修造是成功的,使用做安装,您然后安装修造。
# make install /usr/bin/msgmerge -U po/ast.po po/grub.pot ....................................... done. /usr/bin/msgmerge -U po/ca.po po/grub.pot ............................................ done. /usr/bin/msgmerge -U po/de.po po/grub.pot ..................................... done. /usr/bin/msgmerge -U po/fi.po po/grub.pot ...................................... done. /usr/bin/msgmerge -U po/fr.po po/grub.pot ......................................... done. /usr/bin/msgmerge -U po/hu.po po/grub.pot ........................................ done. /usr/bin/msgmerge -U po/id.po po/grub.pot ....................................... done. /usr/bin/msgmerge -U po/it.po po/grub.pot .................................. done. /usr/bin/msgmerge -U po/nl.po po/grub.pot ......................................... done. /usr/bin/msgmerge -U po/ru.po po/grub.pot ..................................... done. /usr/bin/msgmerge -U po/sv.po po/grub.pot ....................................... done. /usr/bin/msgmerge -U po/zh_CN.po po/grub.pot ...................................... done. /bin/sh ./mkinstalldirs /usr/local/lib/`echo grub/i386-pc | sed 's,x,x,'` mkdir -p -- /usr/local/lib/grub/i386-pc rm -f /usr/local/lib/`echo grub/i386-pc | sed 's,x,x,'`/* /bin/sh ./mkinstalldirs /usr/local/share/`echo grub | sed 's,x,x,'` mkdir -p -- /usr/local/share/grub /bin/sh ./mkinstalldirs /usr/local/bin /usr/local/share/man/man1 mkdir -p -- /usr/local/bin /usr/local/share/man/man1 /bin/sh ./mkinstalldirs /usr/local/sbin /usr/local/share/man/man8 mkdir -p -- /usr/local/sbin /usr/local/share/man/man8 /bin/sh ./mkinstalldirs /usr/local/etc/grub.d mkdir -p -- /usr/local/etc/grub.d /bin/sh ./mkinstalldirs /usr/local/lib/grub /bin/sh ./mkinstalldirs /usr/local/share/info
如果您认为做安装实际上安装的GRUB2您弄错。 反而这个命令安装GRUB2修造系统入/usr/local。 您然后使用其中一些剧本和双安装和配置GRUB2。 做安装居住于在/usr/local的一定数量的补充指南。
# ls /usr/local/bin grub-bin2h grub-mkelfimage grub-mkpasswd-pbkdf2 grub-script-check grub-editenv grub-mkimage grub-mkrelpath grub-fstest grub-mkisofs grub-mkrescue # ls /usr/local/sbin grub-install grub-mkdevicemap grub-reboot grub-setup grub-mkconfig grub-probe grub-set-default # ls /usr/local/etc/grub.d 00_header 10_linux 30_os-prober 40_custom README #
实际上安装GRUB2在您的系统,容易的方法将跑反过来叫其他剧本和双完成实际工作的除草根安装shell script程序。 您需要通过除草根安装的唯一的参量是起动设备。 在我们的情况它是/dev/sda。
# cd /usr/local/sbin
# ./grub-install --help
Usage: grub-install [OPTION] install_device
Install GRUB on your drive.
-h, --help print this message and exit
-v, --version print the version information and exit
--modules=MODULES pre-load specified modules MODULES
--root-directory=DIR install GRUB images under the directory DIR
instead of the root directory
--grub-setup=FILE use FILE as grub-setup
--grub-mkimage=FILE use FILE as grub-mkimage
--grub-mkdevicemap=FILE use FILE as grub-mkdevicemap
--grub-probe=FILE use FILE as grub-probe
--no-floppy do not probe any floppy drive
--recheck probe a device map even if it already exists
--force install even if problems are detected
--disk-module=MODULE disk module to use
INSTALL_DEVICE can be a GRUB device name or a system device filename.
grub-install copies GRUB images into /boot/grub (or /grub on NetBSD and
OpenBSD), and uses grub-setup to install grub into the boot sector.
If the --root-directory option is used, then grub-install will copy
images into the operating system installation rooted at that directory.
Report bugs to .
# ./grub-install /dev/sda
Installation finished. No error reported.
#
因此什么除草根安装实际上做? 尤其,它
- 复制从/work/grub的所有模块(*.mod)文件入/boot/grub。
- 复制从/work/grub的所有名单(*.lst)文件入/boot/grub。 简而言之, .lst文件映象对模块的个体。 例如, moddep.lst包含一个特殊模块依靠所有其他模块的名单。 当模块被装载时,依赖模块自动地也被装载。
- 引起包含基本的GRUB2图象的一个磁心图象(core.img),加上必要的文件系统司机模块读包含GRUB2文件和可能一个或更多其他模块的文件系统。 在我们的情况,适当的文件系统模块是ext2.mod。
- 修改core.img内容插入起动设备的具体价值和文件的其他块的地址它然后复制core.img对在起动设备的具体区段。 在我们的情况,第一个0×10000区段(32Kb)在MBR主要引导记录后)。
- 给包括尖对core.img第一个块起动设备的适当的区域引起并且写一个512字节MBR图象。
这在/boot/grub被安装文件的目录:
acpi.mod dm_nv.mod gfxterm.mod msdospart.mod search_label.mod affs.mod drivemap.mod gptsync.mod multiboot2.mod search.mod afs_be.mod echo.mod grubenv multiboot.mod serial.mod afs.mod efiemu32.o gzio.mod normal.mod setjmp.mod aout.mod efiemu64.o halt.mod ntfscomp.mod setpci.mod ata.mod efiemu.mod handler.lst ntfs.mod sfs.mod ata_pthru.mod elf.mod handler.mod ohci.mod sh.mod at_keyboard.mod example_functional_test.mod hashsum.mod part_acorn.mod sleep.mod befs_be.mod ext2.mod hdparm.mod part_amiga.mod tar.mod befs.mod extcmd.mod hello.mod part_apple.mod terminal.lst biosdisk.mod fat.mod help.mod part_gpt.mod terminal.mod bitmap.mod font.mod hexdump.mod partmap.lst terminfo.mod bitmap_scale.mod fshelp.mod hfs.mod part_msdos.mod test.mod blocklist.mod fs.lst hfsplus.mod part_sun.mod tga.mod boot.img functional_test.mod iso9660.mod parttool.lst trig.mod boot.mod gcry_arcfour.mod jfs.mod parttool.mod true.mod bsd.mod gcry_blowfish.mod jpeg.mod password.mod udf.mod bufio.mod gcry_camellia.mod kernel.img password_pbkdf2.mod ufs1.mod cat.mod gcry_cast5.mod keystatus.mod pbkdf2.mod ufs2.mod cdboot.img gcry_crc.mod linux16.mod pci.mod uhci.mod chain.mod gcry_des.mod linux.mod play.mod usb_keyboard.mod charset.mod gcry_md4.mod lnxboot.img png.mod usb.mod cmp.mod gcry_md5.mod loadenv.mod probe.mod usbms.mod command.lst gcry_rfc2268.mod locale pxeboot.img usbtest.mod configfile.mod gcry_rijndael.mod loopback.mod pxecmd.mod vbeinfo.mod core.img gcry_rmd160.mod lsmmap.mod pxe.mod vbe.mod cpio.mod gcry_seed.mod ls.mod raid5rec.mod vbetest.mod cpuid.mod gcry_serpent.mod lspci.mod raid6rec.mod vga.mod crc.mod gcry_sha1.mod lvm.mod raid.mod vga_text.mod crypto.lst gcry_sha256.mod mdraid.mod read.mod video_fb.mod crypto.mod gcry_sha512.mod memdisk.mod reboot.mod video.lst datehook.mod gcry_tiger.mod memrw.mod reiserfs.mod video.mod date.mod gcry_twofish.mod minicmd.mod relocator.mod videotest.mod datetime.mod gcry_whirlpool.mod minix.mod scsi.mod xfs.mod device.map gettext.mod mmap.mod search_fs_file.mod xnu.mod diskboot.img gfxmenu.mod moddep.lst search_fs_uuid.mod xnu_uuid.mod
现在GRUB2是几乎立即可用的。 唯一的事失踪是位于/boot/grub/补充指南的一个运作的grub.cfg配置文件。 您能编辑/etc/default/conf配置文件然后使用/usr/local/sbin/grub-mkconfig创造/boot/grub/grub.cfg。 注意一些发行,包括Ubuntu,指定使用更新除草根而不是除草根mkconfig。 然而更新除草根是链接除草根mkconfig。 这是做事正式方式。 我,另一只手的,发现更加容易直接地编辑/boot/grub/grub.cfg和跳其他步。 为什么使事复杂化!
您能容易地修改您的幼虫遗产配置文件与GRUB2一起使用。 例如,这解雇从/dev/sda的浅顶软呢帽13的幼虫遗产的一个非常基本的menu.lst配置文件:
default=0 timeout=15 title Fedora (2.6.33.5-124.fc13.x86_64) root (hd0,0) kernel /vmlinuz-2.6.33.5-124.fc13.x86_64 ro root=/dev/mapper/vg_ultra-lv_root rd_LVM_LV=vg_ultra/lv_root rd_LVM_LV=vg_ultra/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=us rhgb quiet initrd /initramfs-2.6.33.5-124.fc13.x86_64.img
并且这修改过的相同配置与GRUB2一起使用:
default=0
timeout=15
menuentry "Fedora 13" {
root=(hd0,1)
linux /vmlinuz-2.6.33.5-124.fc13.x86_64 ro root=/dev/mapper/vg_ultra-lv_root rd_LVM_LV=vg_ultra/lv_root rd_LVM_LV=vg_ultra/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=us rhgb quiet
initrd /initramfs-2.6.33.5-124.fc13.x86_64.img
}
您能看到菜单诗节的结构改变了。 菜单诗节通过menuitem “名字” {}句法现在描述而不是Python象凹进。 主题词仁用新的主题词Linux替换。 GRUB2分开从1开始而不是0 -因此root= (hd0,0)成为root= (hd0,1)。
如果您比VGA想要显示GRUB2菜单在一高度决心和显示背景图表,您必须修改您的GRUB2配置文件支持高度决心。 vbe.mod适于承载的模块为标准VESA BIOS Extentions提供司机2.0图表。 另外您必须供应适当的font.for文本纵的沟纹和适当的格式和决议的背景图象。 例如,下列是使用vbe.mod和gfxterm.mod模块显示与1024年x 768和一个整个银幕的背景图象的一个简单的GRUB2配置文件(f13rockets.tga)决议的GRUB2菜单使用unicode字体。
timeout=15
default=0
if loadfont /grub/font/unicode.pf2
then
set gfxmode="1024x768x32"
set gfxpayload=keep
insmod gfxterm
insmod vbe
terminal_output gfxterm
terminal gfxterm
insmod tga
use_bg=true
background_image /grub/image/f13rockets.tga
fi
set color_normal=yellow/black
set color_highlight=blue/yellow
set menu_color_normal=yellow/black
set menu_color_highlight=white/light-gray
menuentry "Fedora 13" {
root=(hd0,1)
linux /vmlinuz-2.6.33.5-124.fc13.x86_64 ro root=/dev/mapper/vg_ultra-lv_root rd_LVM_LV=vg_ultra/lv_root rd_LVM_LV=vg_ultra/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=us rhgb quiet
initrd /initramfs-2.6.33.5-124.fc13.x86_64.img
}
我建议您开始以一个非常简单的GRUB2配置文件例如为您的系统第一辆重新起动显示的以上第一个例子在安装GRUB2以后。 使用那种配置,一旦您能顺利地解雇您的系统,然后您能试验更加复杂和更加老练的配置文件。 在您之前的步行跑! 在GRUB2的抢救方式比那好在幼虫遗产,但是您将迅速遇到问题,如果您对GRUB2是不熟悉的。
顺便说一句,如果您比/usr/local要GRUB2在期望的地点安装修造和配置剧本和双,这我怎么配置我的GRUB2修造:
# ./configure --prefix=/usr --sysconfdir=/etc --disable-largefile --enable-efiemu=no --disable-grub-fstest
在期间安装,补充指南/usr/sbin, /usr/bin、/usr/lib/grub、/usr/share/grub、/etc/default和/etc/grub。 居住于与相关的GRUB2文件。
-
这个岗位应该是使您的足够移居到解雇您的浅顶软呢帽系统使用GRUB2。 与迁移的好运! 如果您发现我忽略了在这个岗位应该包括的所有步,请告诉我。



























准备好尝试此… 我总是感到,如我忘记了某事在加速这种之前事。
将告诉您。
一路平安,
@
它现在运作的好…。 没有许多麻烦。 好想法做:
rpm - qa |grep幼虫
然后:
rpm - e幼虫
(遗产grub1)
如果安装grub1 (遗产)您需要摆脱它,
所以浅顶软呢帽完成复杂工作。
如果不洁的留下来,它没有似乎引起任何问题,它是好的。
如果您寻找真正的grub2,他们不一起顺利地真正工作。
换句话说,您没得到选择grub1或grub2在起动。
我肯定有一个方式,但是不此的去在周围。
第一次我重新起动了,在grub2安装我未去除grub1之后。
这提出了grub1菜单,并且起动是好的,但是那不是什么我寻找。
在rpm以后- e幼虫和再做它是纯净的grub2起动的除草根安装。
谢谢。
一路平安,
@
愚笨我…关于去除遗产版本的信息被暗示了在Ubuntu wiki
https://wiki.ubuntu.com/Grub2
换句话说您追捕“我们做它”写电影脚本wiki状态:
[应该充分地安装幼虫2,当幼虫遗产被去除,并且它是备份的配置文件。 幼虫遗产配置文件位于/boot/grub和被命名menu.lst*
您能证实您在任何时候安装与:]的版本
除草根安装- v
把戏是他们有做一束好的剧本记住他们的细节。
什么都在浅顶软呢帽13不喜欢。
一路平安,
@
Al,
您是正确的。 幼虫遗产和GRUB2真正地不共存。 您需要采摘一或其他。 我移动所有我的GNU/Linus平台向GRUB2和从未回顾了。
遇到了这篇文章,并且希望尝试它,但是我想知道是否(浅顶软呢帽?) 象自动增加新的仁的具体特点到菜单将继续运作?
好问题。 是,这是问题。 浅顶软呢帽什么都13不知道关于GRUB2。 更新剧本将尝试并且修改而不是grub.conf grub.cfg。 所以我留给假的grub.conf到位,以便更新剧本可能找到它。
您将手动地必须修改grub.cfg增加新的仁的一个诗节或修改一个现有的诗节指向新的仁。
喂,
当我跟随时您的步包括./configure分开设置/etc sysconfig目录,它仍然不看/etc/default/grub文件
因此00_header和在/etc/grub.d的其他文件没得到应该通过到它从/etc/default/grub文件的设置。
任何想法它为什么不看那个文件?
我不知道谁的指示您以下,但是他们一定不是我的。
我推荐忽略在/etc/grub.d的文件和直接地编辑grub.cfg。 当我可以直接地编辑grub.cfg时,我为什么需要编辑一个或更多配置文件,跑剧本更新grub.cfg ? 没有绝对道理给我! 它增加什么价值? 这样技术解构主义忽略过去和特别是亲吻(保留它简单愚笨)原则。
然而,如果您希望跟随“被推荐的和被提供的”方法,根据您的GRUB2的特殊版本,用途更新除草根或除草根mkconfig更新您的boot.cfg。
Yup, GRUB2开发商更改剧本的名字在异想天开! 美好更改剧本名字; 我没有那的问题。 然而是更好的惯例与新的剧本连接老剧本与至少一发行的一则适当的情况通知的消息。