當一定數量的其他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開發商更改劇本的名字在異想天開! 美好更改劇本名字; 我沒有那的問題。 然而是更好的惯例與新的劇本連接老劇本與至少一發行的一則適當的情況通知的消息。