时间:2023-06-02 16:16:41 来源: 人气:
盘1: ubuntu12.04 win7, 盘2: xp, sudo update-grub 的结果只有win7 和 ubuntu,点击win7进入系统,看到了win7和xp,win7可以启动,但是xp不能。于是在网上搜索找到了一个别人的xp和ubuntu共存的grub文件。, 发现我的少了一句话,drivemap -s (hd0) ${root},于是加上就ok了。, 即在/boot/grub/grub.cfg中添加如下内容即可, menuentry "Windows xp" --class windows --class os {, insmod ntfs, set root=(hd0,1), search --no-floppy --fs-uuid --set=root 4C844B34844B2036, drivemap -s (hd0) ${root}, chainloader +1, }, set root=(hd0,1),代表第0块磁盘的第一个分区,其中硬盘号是从0开始,分区号是从1开始。我的xp是在第0个分区。我的xp和ubuntu不再同一个磁盘,grub中ubuntu显示在hd1所以xp必然在hd0,而系统在c:盘,所以是第一个分区, 整个的grub文件如下:, #, # DO NOT EDIT THIS FILE, #, # It is automatically generated by grub-mkconfig using templates, # from /etc/grub.d and settings from /etc/default/grub, #, ### BEGIN /etc/grub.d/00_header ###, if [ -s $prefix/grubenv ]; then, set have_grubenv=true, load_env, fi, set default="0", if [ "${prev_saved_entry}" ]; then, set saved_entry="${prev_saved_entry}", save_env saved_entry, set prev_saved_entry=, save_env prev_saved_entry, set boot_once=true, fi, function savedefault {, if [ -z "${boot_once}" ]; then, saved_entry="${chosen}", save_env saved_entry, fi, }, function recordfail {, set recordfail=1, if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi, }, function load_video {, insmod vbe, insmod vga, insmod video_bochs, insmod video_cirrus, }, insmod part_msdos, insmod ext2, set root=(hd1,msdos6), search --no-floppy --fs-uuid --set=root 2636856c-62cc-4195-8995-148eb8cfb30c, if loadfont /usr/share/grub/unicode.pf2 ; then, set gfxmode=auto, load_video, insmod gfxterm, insmod part_msdos, insmod ext2, set root=(hd1,msdos6), search --no-floppy --fs-uuid --set=root 2636856c-62cc-4195-8995-148eb8cfb30c, set locale_dir=($root)/boot/grub/locale, set lang=zh_CN, insmod gettext, fi, terminal_output gfxterm, if [ "${recordfail}" = 1 ]; then, set timeout=-1, else, set timeout=10, fi, ### END /etc/grub.d/00_header ###, ### BEGIN /etc/grub.d/05_debian_theme ###, set menu_color_normal=white/black, set menu_color_highlight=black/light-gray, if background_color 44,0,30; then, clear, fi, ### END /etc/grub.d/05_debian_theme ###, ### BEGIN /etc/grub.d/10_linux ###, function gfxmode {, set gfxpayload="$1", if [ "$1" = "keep" ]; then, set vt_handoff=vt.handoff=7, else, set vt_handoff=, fi, }, if [ ${recordfail} != 1 ]; then, if [ -e ${prefix}/gfxblacklist.txt ]; then, if hwmatch ${prefix}/gfxblacklist.txt 3; then, if [ ${match} = 0 ]; then, set linux_gfx_mode=keep, else, set linux_gfx_mode=text, fi, else, set linux_gfx_mode=text, fi, else, set linux_gfx_mode=keep, fi, else, set linux_gfx_mode=text, fi, export linux_gfx_mode, if [ "$linux_gfx_mode" != "text" ]; then load_video; fi, menuentry Ubuntu,Linux 3.2.0-23-generic-pae --class ubuntu --class gnu-linux --class gnu --class os {, recordfail, gfxmode $linux_gfx_mode, insmod gzio, insmod part_msdos, insmod ext2, set root=(hd1,msdos6), search --no-floppy --fs-uuid --set=root 2636856c-62cc-4195-8995-148eb8cfb30c, linux /boot/vmlinuz-3.2.0-23-generic-pae root=UUID=2636856c-62cc-4195-8995-148eb8cfb30c ro quiet splash $vt_handoff, initrd /boot/initrd.img-3.2.0-23-generic-pae, }, menuentry Ubuntu,Linux 3.2.0-23-generic-pae (恢复模式) --class ubuntu --class gnu-linux --class gnu --class os {, recordfail, insmod gzio, insmod part_msdos, insmod ext2, set root=(hd1,msdos6), search --no-floppy --fs-uuid --set=root 2636856c-62cc-4195-8995-148eb8cfb30c, echo 载入 Linux 3.2.0-23-generic-pae …, linux /boot/vmlinuz-3.2.0-23-generic-pae root=UUID=2636856c-62cc-4195-8995-148eb8cfb30c ro recovery nomodeset, echo 载入初始化内存盘…, initrd /boot/initrd.img-3.2.0-23-generic-pae, }, ### END /etc/grub.d/10_linux ###, ### BEGIN /etc/grub.d/20_linux_xen ###, ### END /etc/grub.d/20_linux_xen ###, ### BEGIN /etc/grub.d/20_memtest86+ ###, menuentry "Memory test (memtest86+)" {, insmod part_msdos, insmod ext2, set root=(hd1,msdos6), search --no-floppy --fs-uuid --set=root 2636856c-62cc-4195-8995-148eb8cfb30c, linux16 /boot/memtest86+.bin, }, menuentry "Memory test (memtest86+, serial console 115200)" {, insmod part_msdos, insmod ext2, set root=(hd1,msdos6), search --no-floppy --fs-uuid --set=root 2636856c-62cc-4195-8995-148eb8cfb30c, linux16 /boot/memtest86+.bin console=ttyS0,115200n8, }, ### END /etc/grub.d/20_memtest86+ ###, ### BEGIN /etc/grub.d/30_os-prober ###, menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {, insmod part_msdos, insmod ntfs, set root=(hd0,msdos1), search --no-floppy --fs-uuid --set=root 4C844B34844B2036, chainloader +1, }, ### END /etc/grub.d/30_os-prober ###, menuentry "Windows xp" --class windows --class os {, insmod ntfs, set root=(hd0,1), search --no-floppy --fs-uuid --set=root 4C844B34844B2036, drivemap -s (hd0) ${root}, chainloader +1, }, ### BEGIN /etc/grub.d/40_custom ###, # This file provides an easy way to add custom menu entries. Simply type the, # menu entries you want to add after this comment. Be careful not to change, # the exec tail line above., ### END /etc/grub.d/40_custom ###, ### BEGIN /etc/grub.d/41_custom ###, if [ -f $prefix/custom.cfg ]; then, source $prefix/custom.cfg;, fi, ### END /etc/grub.d/41_custom ###, ,