找回密码
 快速注册

QQ登录

只需一步,快速开始

查看: 5403|回复: 1

Grub2 以及 Grub4dos引导多系统方案

[复制链接]
蛋定如初 发表于 2011-7-23 12:49:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?快速注册

×

看了标题先别喷,多系统有多系统的好处,虽然切换环境比较麻烦,但是能把硬件性能发挥到最大,这是我追求的。

==========================================

这几天捣鼓着给电脑装ARCHLINUX,机器上本来有XP,WIN7,UBUNTU三个系统。
ubuntu之前是用wubi直接装在一个15G的NTFS分区里,用win7的启动器来启动各个系统。
装ARCH的时候,我打算让ARCH和UBUNTU的能够互访FS,于是把UBUNTU卸载了。
之前的ubuntu是在J盘安装的,分区是sda9,删除这个分区以后,又从G盘分出来十几G给ARCH。
现在的分区是这样子的:
  1. sda1 --- C盘 --- XP
  2. sda5 --- D盘 --- WIN7
  3. sda6 --- E盘
  4. sda7 --- F盘
  5. sda8 --- G盘
  6. sda9 --- ARCH的BOOT --- ext3
  7. sda10 --- ARCH的swap
  8. sda11 --- ARCH的根 --- ext3
  9. sda12 --- UBT的swap
  10. sda13 --- UBT的boot --- ext3
  11. sda14 --- UBT的根 --- ext3
复制代码

当时给UBT分区的时候忘了和ARCH共用swap了,惭愧。。。
所有系统的安装顺序是  XP--WIN7--ARCH--UBT (不一定最合理,但是都能启动)
装UBT的时候悲剧了,安装引导,不小心安装到sda了,重启的时候直接进了UBT的grub2....
焦虑了......
不过这也没关系,间接的简化了所有任务。
进入ubuntu,终端:
sudo
update-grub
这两行命令一敲~~windows7找到了~~ARCH也能找到~~
重启系统以后,进入WINDOWS7 LOADER,会发现G4D出来了,
试了一下,所有的系统都能启动,但是这些任务完全可以在UBT的grub2里完成了。。。
贴出两个GRUB的配置吧:
GRUB4DOS安装在C盘,grldr替换成了G4D的我的menu.lst如下:
#简单易懂,我就不注释了
=====================================
  1. color light-blue/black light-cyan/blue
  2. timeout 30
  3. default /default

  4. title Boot WindowsXP
  5. fallback 1
  6. find --set-root /ntldr
  7. chainloader /ntldr
  8. savedefault --wait=2

  9. title Boot Windows 7
  10. acpi
  11. fallback 2
  12. root (hd0,0)
  13. chainloader /bootmgr

  14. title Arch Linux
  15. root=(hd0,8)
  16. kernel /vmlinuz26 root=/dev/sda11 ro
  17. initrd /kernel26.img

  18. title Ubuntu 10.10
  19. root (hd0,13)
  20. kernel /vmlinuz-2.6.35-30-generic root=/dev/sda14 ro
  21. initrd /initrd.img-2.6.35-30-generic

  22. title find and boot Linux with menu.lst already installed
  23. fallback 5
  24. find --set-root /sbin/init
  25. savedefault --wait=2
  26. configfile /boot/grub/menu.lst

  27. title commandline
  28. savedefault --wait=2
  29. commandline

  30. title back to dos
  31. savedefault --wait=2
  32. quit

  33. title reboot
  34. savedefault --wait=2
  35. reboot
复制代码

=====================================

下面是UBT的grub2,启动机器进入系统的时候,这个是默认先显示的,
是因为我之前的一个失误造成的,不过没有影响,一样能启动系统
UBT的grub.cfg
=====================================



  1. if [ -s $prefix/grubenv ]; then
  2.   set have_grubenv=true
  3.   load_env
  4. fi
  5. set default="0"
  6. if [ "${prev_saved_entry}" ]; then
  7.   set saved_entry="${prev_saved_entry}"
  8.   save_env saved_entry
  9.   set prev_saved_entry=
  10.   save_env prev_saved_entry
  11.   set boot_once=true
  12. fi

  13. function savedefault {
  14.   if [ -z "${boot_once}" ]; then
  15.     saved_entry="${chosen}"
  16.     save_env saved_entry
  17.   fi
  18. }

  19. function recordfail {
  20.   set recordfail=1
  21.   if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
  22. }

  23. function load_video {
  24.   insmod vbe
  25.   insmod vga
  26. }

  27. insmod part_msdos
  28. insmod ext2
  29. set root='(hd0,msdos14)'
  30. search --no-floppy --fs-uuid --set 243b7d16-f62a-4ab5-bafb-06e4c9d31562
  31. if loadfont /usr/share/grub/unicode.pf2 ; then
  32.   set gfxmode=640x480
  33.   load_video
  34.   insmod gfxterm
  35. fi
  36. terminal_output gfxterm
  37. insmod part_msdos
  38. insmod ext2
  39. set root='(hd0,msdos13)'
  40. search --no-floppy --fs-uuid --set b368a193-754a-4e5b-8bcf-566425387e5c
  41. set locale_dir=($root)/grub/locale
  42. set lang=zh
  43. insmod gettext
  44. if [ "${recordfail}" = 1 ]; then
  45.   set timeout=-1
  46. else
  47.   set timeout=10
  48. fi
  49. menuentry 'Ubuntu, with Linux 2.6.35-30-generic' --class ubuntu --class gnu-linux --class gnu --class os {
  50. recordfail
  51. insmod part_msdos
  52. insmod ext2
  53. set root='(hd0,msdos13)'
  54. search --no-floppy --fs-uuid --set b368a193-754a-4e5b-8bcf-566425387e5c
  55. linux/vmlinuz-2.6.35-30-generic root=UUID=243b7d16-f62a-4ab5-bafb-06e4c9d31562 ro   quiet splash
  56. initrd/initrd.img-2.6.35-30-generic
  57. }
  58. menuentry 'Ubuntu, with Linux 2.6.35-30-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
  59. recordfail
  60. insmod part_msdos
  61. insmod ext2
  62. set root='(hd0,msdos13)'
  63. search --no-floppy --fs-uuid --set b368a193-754a-4e5b-8bcf-566425387e5c
  64. echo'Loading Linux 2.6.35-30-generic ...'
  65. linux/vmlinuz-2.6.35-30-generic root=UUID=243b7d16-f62a-4ab5-bafb-06e4c9d31562 ro single
  66. echo'Loading initial ramdisk ...'
  67. initrd/initrd.img-2.6.35-30-generic
  68. }
  69. menuentry 'Ubuntu, with Linux 2.6.35-22-generic' --class ubuntu --class gnu-linux --class gnu --class os {
  70. recordfail
  71. insmod part_msdos
  72. insmod ext2
  73. set root='(hd0,msdos13)'
  74. search --no-floppy --fs-uuid --set b368a193-754a-4e5b-8bcf-566425387e5c
  75. linux/vmlinuz-2.6.35-22-generic root=UUID=243b7d16-f62a-4ab5-bafb-06e4c9d31562 ro   quiet splash
  76. initrd/initrd.img-2.6.35-22-generic
  77. }
  78. menuentry 'Ubuntu, with Linux 2.6.35-22-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
  79. recordfail
  80. insmod part_msdos
  81. insmod ext2
  82. set root='(hd0,msdos13)'
  83. search --no-floppy --fs-uuid --set b368a193-754a-4e5b-8bcf-566425387e5c
  84. echo'Loading Linux 2.6.35-22-generic ...'
  85. linux/vmlinuz-2.6.35-22-generic root=UUID=243b7d16-f62a-4ab5-bafb-06e4c9d31562 ro single
  86. echo'Loading initial ramdisk ...'
  87. initrd/initrd.img-2.6.35-22-generic
  88. }
  89. menuentry "Memory test (memtest86+)" {
  90. insmod part_msdos
  91. insmod ext2
  92. set root='(hd0,msdos13)'
  93. search --no-floppy --fs-uuid --set b368a193-754a-4e5b-8bcf-566425387e5c
  94. linux16/memtest86+.bin
  95. }
  96. menuentry "Memory test (memtest86+, serial console 115200)" {
  97. insmod part_msdos
  98. insmod ext2
  99. set root='(hd0,msdos13)'
  100. search --no-floppy --fs-uuid --set b368a193-754a-4e5b-8bcf-566425387e5c
  101. linux16/memtest86+.bin console=ttyS0,115200n8
  102. }
  103. menuentry "Windows 7 (loader) (on /dev/sda1)" {
  104. insmod part_msdos
  105. insmod ntfs
  106. set root='(hd0,msdos1)'
  107. search --no-floppy --fs-uuid --set DE305BE6305BC3E5
  108. chainloader +1
  109. }
  110. menuentry "Arch Linux (on /dev/sda11)" {
  111. insmod part_msdos
  112. insmod ext2
  113. set root='(hd0,msdos9)'
  114. search --no-floppy --fs-uuid --set 1d5fe5a7-2cf6-40b0-9e1d-aef61ed950d9
  115. linux /vmlinuz26 root=/dev/sda11 ro
  116. initrd /kernel26.img
  117. }
  118. menuentry "Arch Linux Fallback (on /dev/sda11)" {
  119. insmod part_msdos
  120. insmod ext2
  121. set root='(hd0,msdos9)'
  122. search --no-floppy --fs-uuid --set 1d5fe5a7-2cf6-40b0-9e1d-aef61ed950d9
  123. linux /vmlinuz26 root=/dev/sda11 ro
  124. initrd /kernel26-fallback.img
  125. }
  126. set color_normal=blue/black
  127. set color_highlight=green/blue
  128. exec tail -n +3 $0
  129. if [ -f  $prefix/custom.cfg ]; then
  130.   source $prefix/custom.cfg;
  131. fi
复制代码

==================================
差不多就是这样,多系统引导起来并不难。。。


gmszone 发表于 2011-7-31 19:33:50 | 显示全部楼层
怎么感觉下面的像是burg.cfg的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

快速回复 返回顶部 返回列表