又折腾了两天,终于搞定了Win7+Ubuntu双系统,整理碰到的一些问题,供大家借鉴。
首先是Win7不使用预留分区直接安装,具体做法是进入安装过程的分区界面Shift+F10调出命令行,然后使用DiskPart.exe进行预先分区(具体做法请自行搜索),然后再回去继续安装。
然后是Ubuntu的安装,可以使用Grub4Dos加载iso文件安装,但是我是直接拿U盘刻录出来安装的,使用的是Ubuntu 10.10 Alternate AMD64,使用10.10是考虑和Nvidia官方网站驱动保持一致,尽量减少发生不兼容的可能,使用Alternate是看到有网友提到完整安装版比wubi在后续升级什么的更好一些。但是在安装时也会有困难(全部基于文字提示+命令行,分区不是太方便,Windows使用者有些不习惯),大家自行权衡。安装Ubuntu新手比较容易产生问题的是分区,我觉得初次使用可以参考比较经典的方式设置分区和挂载点,多分几个,毕竟现在硬盘大,然后我个人觉得把Boot和/设置为主分区比较合适(但是似乎并不是必须)。在Ubuntu中fdisk分区时计算大小比较麻烦(要输入起止扇区,WUbi无此问题),而Win7则需要分出三个主分区然后才可以分逻辑分区,所以可以借助第三方分区工具(如Acronis Disk Director Suite,千万不能使用Win XP PE的旧版本分区工具去修改Win7的分区表,否则Ubuntu中只能使用完整磁盘安装),并且顺便一并把Ubuntu的分区也分了(我是从尾部往前分100MB/boot,15GB/,15GB/usr,20GB/home,2GB/var,4GB/temp,8GB/swap,剩余磁盘的开10GBFAT32用于两个系统交换数据,零头20多GB用于存Ghost镜像)。安装过程Grub会自动检测到Win7的引导并进行更新添加,询问是否安装到MBR,为了保证Win7的独立性和之前已经分配了/boot,显然安装到/boot。
安装完成后,没有提示直接进入Win7,下面就是解决双系统引导的问题。下载Grub4Dos并拷贝grldr和grldr.mbr到C盘,建立boot.ini和menu.lst。boot.ini的作用是增加进入系统前选择Win7还是Grub,menu.lst则给出Grub引导的选项及配置。
boot.ini文件如下:
[boot loader]
timeout 10
default 0
[operating systems]
C:\grldr.mbr="Grub4Dos 0.4.4"
一次成功。
下面问题来了,按照网络教程配置Menu.lst后不能顺利引导Ubuntu,具体问题:
1. kernel和initrd的具体项要使用实际完整名称,而不是硬盘Wubi安装是简单的wmlinuz和initrd.img,名称可以进入grub命令行模式,在root (hd0,?)指定/boot的分区后输入前半截再按tab键获得;
2. 经过1后提示Error 24 Attempt to access block outside partition,最终发现是旧版本Grub4Dos不支持ext4分区格式,重新下载2009-06-20版本解决;
3. 经过2后可能进行Grub引导,但是无法进入系统,最终发现是Grub2对于/分区指定有所改变,需要使用UUID,(UUID可以在真实Grub引导后使用ls -l /dev/disk/by-uuid获得,不能使用Grub4Dos下的Grub命令行)。
经过以上3步,成功进入Ubuntu,并且不改变Win7的MBR,未安装其他程序(仅在C盘放了4个很小的文件)。
给出menu.lst引导Ubuntu的部分:
title Ubuntu 10.10 Alternate AMD64
root (hd0,2)
kernel /vmlinuz-2.6.35-22-generic root=UUID=省略磁盘UUID ro quiet splash
initrd /initrd.img-2.6.35-22-generic
boot
今天就到这里,使用旧笔记本(什么没装)写东西怪麻烦的,明天开始安装两个系统的驱动和开发环境,争取在国庆前搞定,然后正式开始学习。
BSKER 于2011-9-25