简介:面向仍在使用 Windows XP、同时希望体验 Linux 的入门用户,这份《在XP下装linux 双系统》文档以 Red Hat Linux 9.0 为例,围绕双系统安装前的空间规划、引导管理器选择与旧平台兼容问题展开,适合想保留原系统并了解开源桌面环境的学习者参考。包内共 1 个 docx 文件,约 421KB,内容集中,便于按主题查阅。已有 340 人学习下载。文档涉及分区魔术师无损划分空间、将自由空间从 Windows 扩展分区剥离、GRUB 接管启动菜单,以及安装类型、引导分区、交换分区和根分区配置等关键环节,还比较了双硬盘、NT 引导与不安装引导装载器等方案,并提示分区不兼容可能引发的性能问题,可帮助读者理解双系统方案的取舍、维护成本、风险点与排错方向,对准备在旧机器上尝试双系统的读者尤具参考意义。
1. 装完双系统 Windows 反而变慢:先搞清那 7GB 是从哪儿割出来的
给 Windows XP 配一台 Linux 双系统,真正折腾人的从来不是光盘引导那几分钟,而是装完之后的两三周:Windows 越用越慢、磁盘动不动就报满、开机还得多看一眼菜单才敢按回车。这类故障在只有一块 30GB 硬盘、早就分好 C/D/E 三个区的老机器上特别常见,难受的地方在于它不报错,没有任何提示,你只能凭感觉怀疑"是不是 Linux 把机器拖慢了"。实际上根子几乎都在安装前那一刀:所谓"给 Linux 划 7GB",绝大多数人只是把 E 盘的容量改小了,那 7GB 还挂在 Windows 的扩展分区里没出来。这篇按分区怎么切、系统怎么装、引导怎么配、出错怎么查的顺序捋一遍,适合第一次做双系统、或者已经装完但机器变慢、卡在引导菜单进不去的人照着核对。
2. Windows 越用越慢、磁盘像被吃掉:自由空间没从扩展分区剥离
2.1 划出 7GB 与 Linux 能用这 7GB 是两件事
DOS 风格的分区表把一个硬盘最多切成四份,其中一份可以做成"扩展分区",扩展分区本身不存数据,它只是个容器,真正的 D 盘、E 盘是装在这个容器里的逻辑分区。你在分区工具里把 E 盘从 16.6GB 缩到 9.6GB,那多出来的 7GB 只是在容器内部空出了一块地方,它依然属于扩展分区——分区表上写着"这块地归扩展分区管,只是暂时没分配给某个逻辑盘"。Linux 的 ext3、swap 分区格式和 Windows 那一套完全不兼容,安装程序读到扩展分区这一层就不往下走了,自然会认为没有可用空间。
更麻烦的是剥离不彻底时的副作用。逻辑分区的起始位置是记在扩展分区内部一条链式结构上的,从中间挖走一块会让这条链多出一段跳跃;加上 Linux 分区对 Windows 来说是"未知类型",磁盘检查、碎片整理、系统还原碰到它会反复试探和跳过。很多朋友装完 Linux 发现 XP 慢得像换了个机器,一口咬定是 Linux 抢了资源,其实换个分区顺序重装一遍就好了,跟 Linux 本身没半点关系。这一点在只有一块硬盘、又急着装系统的场景里最容易漏,属于典型的"当下省一步、后面查三天"。
2.2 把自由空间从扩展分区里剥离:四步操作与验证
动手之前先在 XP 里把 E 盘清空到目标大小以下,再做一次磁盘碎片整理,让已用数据尽量靠在分区前部——分区工具拖动容量边界时,如果数据正好压在那条线上,它会拒绝执行或者要求先移动数据,耗时能翻好几倍。这一步很多人跳过,然后在工具里拖不动条子,又回头怀疑工具版本有问题。
接着打开分区工具,按下面的顺序操作:
- 主窗口右侧选中 E 分区,左侧任务列表点"调整一个分区的容量",在弹出的对话框里把右边界往左拖,直到释放出 7GB;顶部的条状图里黑色是已用、绿色是可用,拖到黑色条右侧刚好留一点余量最稳;
- 点"确定"回到主界面,此时会看到一块新出现的自由空间,但注意看它的外框——如果它还在扩展分区那个大矩形里面,说明只是从逻辑盘里让出来了,没真正剥离;
- 选中扩展分区本身(不是里面的某个逻辑盘),再执行一次"调整容量/移动分区",把扩展分区的右边界收到自由空间左侧,让那 7GB 落到扩展分区之外;
- 点应用,工具会把操作排进队列,通常需要重启,在进入系统前的那一段完成实际写入,中途断电基本等于分区表报废。
操作完成后想确认结果,最省事的办法是开一个命令行窗口,用系统自带的磁盘管理命令看一眼分区归属:
diskpart list disk select disk 0 list partition exitlist disk列出物理磁盘,单硬盘机器只有一块,双硬盘要按容量核对select disk的编号别选错;list partition输出的分区列表里,扩展分区会以"扩展"类型单独占一行,如果新划出来的空间没被它包含,就会显示成独立的一项。这个命令只读不写,先看清楚再动手,比在图形界面里凭颜色猜靠谱。
2.3 剥离成功与失败的两种磁盘视图
剥离成功的标志,是在磁盘管理里那块空间显示为黑色边框的"未指派",任何分区都不包含它。剥离失败的标志很明确:那块空间仍然被绿色或蓝色的扩展分区外框包着,磁盘管理里显示成"可用空间"而不是"未指派",分区工具主界面上它也没有跳出扩展分区那个大矩形。这两种状态在图形界面上差别很小,一不小心就看过去了,所以我的习惯是改完分区一定回到列表视图核对一次类型字段,而不是只看颜色块。
还有一个反直觉的点:如果你打算把 Linux 装在第二块硬盘上,就完全不用做剥离这一步,第二块盘本来就是独立的,直接在安装程序里选它即可。真正需要剥离的只有"同一块硬盘上再切一块给 Linux"这一种情况。判断标准很简单——安装程序的分区界面里,那块空间是独立条目还是缩在扩展分区下面,一眼就能看出来。
3. 安装程序报没有可用空间:Linux 分区在 Disk Druid 里怎么划
3.1 看不到自由空间的三类原因
光盘引导进入图形安装界面、选完语言和键盘、一路点到分区这一步,最常见的翻车就是"用 Disk Druid 手工分区"进去以后,那 7GB 根本没出现在列表里。按我踩过的次数排,原因基本集中在三类。
第一类是上一节说的没剥离,空间还挂在扩展分区下,安装程序直接忽略。第二类是分区表没真正落盘:分区工具的操作队列只执行了一半,或者执行完没重启就让安装盘接管,读到的还是旧分区表,这种情况重新进一次 XP 确认磁盘管理视图正常,再引导安装盘即可。第三类是多硬盘场景下选错了盘,Disk Druid 默认展示的可能不是你要装的那块,界面上方一般有磁盘切换的下拉框,切过去看看那块 7GB 是不是在另一块盘上。
还有一种容易被忽略的:硬盘上已经有四个主分区了。老式分区表的主分区上限是四个,扩展分区占掉一个名额,剩下的位置不够再建主分区,安装程序不会明说原因,只是反复提示无法创建。碰到这种情况,要么把某个主分区改成逻辑分区腾名额,要么老老实实把 Linux 装到第二块硬盘上。这类问题没有报错码,只能靠分区表结构自己数。
3.2 /boot、swap、/ 三个分区的容量和文件系统怎么定
对第一次装的人,三个分区足够用,多了反而容易乱。容量和文件系统按下面这张表定,数值是当年 128MB 内存、30GB 硬盘这种配置下的稳妥选择:
| 挂载点 | 文件系统 | 建议容量 | 说明 |
|---|---|---|---|
| /boot | ext3 | 100MB | 存内核和引导文件,必须靠磁盘前部 |
| swap | swap | 256MB | 无挂载点,容量取内存的 2 倍左右 |
| / | ext3 | 剩余容量减 50~100MB | 根分区,不低于 1.5GB |
/boot 单独分出来、并且放在磁盘靠前的位置,是老机器上的血泪经验。早期 BIOS 通过中断读取磁盘时只能寻址到 8GB 以内的范围,内核文件要是被放到了 8GB 之后,引导阶段读不出来,表现就是 GRUB 菜单出来了、选了 Linux 之后黑屏或者只剩一个光标在闪,一点提示都没有。把 /boot 放在最前面,这个问题直接绕开。
swap 没有挂载点这个概念,它类似于 XP 的页面文件,作用是内存不够时把不常用的内存页换到磁盘上。容量按内存两倍给是个经验值,128MB 内存给 256MB 足够,给太多纯属浪费空间,给太少在编译或者开多个程序时会频繁换页,机器卡到怀疑人生。根分区用 ext3 而不是更早的 ext2,主要图它带日志,断电后恢复快,不用每次跑一遍漫长的磁盘检查。
3.3 根分区填满剩余容量就报错:容量对齐与预留
安装程序提示"无法分配所请求的分区"或者容量数值变红,八成是因为把剩余空间一分不剩全给了根分区。Disk Druid 在写入分区表时要按柱面或者磁道边界对齐,你填的容量和它实际能分配的容量之间差那么一点点,填满就没有余量可对齐,于是直接拒绝。留 50 到 100MB 不分配,问题消失。
装完之后回到系统里,用两条命令确认分区是否按预期挂上:
df -h # 看各分区容量和挂载点是否与规划一致 cat /etc/fstab # 看开机自动挂载的配置,根分区和 /boot 都应在列 free -m # 看 swap 是否被识别,total 一栏应等于你划的容量df -h的挂载点一栏如果出现 /boot 和 /,说明两个分区都建对了;如果只有 / 而没有 /boot,说明当初没单独分,属于可接受但不推荐的做法。free -m的 Swap 行如果是 0,说明 swap 分区建了但没启用,或者根本没建成,需要回分区界面复核。/etc/fstab里每一行是"设备 挂载点 文件系统 选项 备份标记 检查顺序"六段,第三段写错会导致开机进不了图形界面,改之前先备份一份。
4. 开机直接进 Windows、GRUB 菜单不出现:引导装载器装哪儿
4.1 装 MBR 还是装分区引导扇区
引导装载器装在哪儿,决定了你开机第一眼看到什么,也是双系统方案分岔的地方。装在主引导记录(MBR)上,开机 BIOS 读完硬盘第一个扇区就直接进 GRUB,由它列出 Windows 和 Linux 让你选;装在 Linux 所在分区的第一个扇区(分区引导扇区)上,MBR 还是 Windows 原来的东西,开机会直接进 XP,Linux 的引导代码要靠别的方式触发。两种都能用,区别在于谁来当"总调度"。
选 MBR 的好处是配置简单,安装程序自动扫描硬盘上已有的系统并写进菜单,装完就能用。代价是 Windows 的引导程序被顶掉了,将来想删掉 Linux 只留 XP,得用 XP 安装光盘进恢复控制台跑fixmbr和fixboot把引导记录写回去,否则机器起不来。选分区引导扇区的好处正好相反,删 Linux 只要把 boot.ini 里加的那一行删掉就行,符合 Windows 用户的使用习惯,代价是配置步骤多,还得手动把引导扇区备份成文件。
这里有个判断标准值得记一下:如果你只是短期试水、随时可能把 Linux 删掉,走分区引导扇区那条路;如果打算长期两个系统都用,装 MBR 更省心。别两边都装,那样 GRUB 会被自己的两份配置搞糊涂,症状是菜单出现两次或者选中后跳回菜单。
4.2 双硬盘用 BIOS 切盘引导
手上有两块硬盘的话,最省事的方案是把 Linux 整块装到第二块盘上,引导装载器也装在第二块盘的 MBR。开机时按 Del 或 F2 进 BIOS,在启动顺序里选从哪块盘引导,选中哪块就进哪个系统。这种做法的好处是两个系统彻底隔离,一块盘的分区表坏了不影响另一块,删系统也不用改任何配置文件;坏处是每次切换要进 BIOS,麻烦。
嫌麻烦可以在 GRUB 里用磁盘映射把两块盘的身份临时对调,让 Windows 以为自己还在第一块盘上:
title Windows XP map (hd0) (hd1) map (hd1) (hd0) rootnoverify (hd0,0) chainloader +1map两行是把第一块和第二块硬盘的编号互换,让后续的 chainloader 按 Windows 熟悉的编号去找引导扇区,两行必须成对出现且顺序相反,少一行就等于没映射。rootnoverify指定 Windows 系统分区所在位置,(hd0,0) 表示第一块硬盘的第一个分区,注意 GRUB 的编号从 0 开始,和 Windows 的 C 盘是第 1 个分区对不上,写错就报 "Invalid device requested"。chainloader +1的意思是"把控制权交给这个分区第一个扇区里的引导代码",Windows 的引导记录就在那儿。
4.3 手动添加系统和改默认项:grub.conf 逐行解释
安装程序不一定能认全硬盘上的系统,尤其是装过多个 Windows 版本或者分区表比较花的机器。菜单里少了某一项,就要进配置文件手工加。配置文件在/boot/grub/grub.conf,有些发行版用/boot/grub/menu.lst这个名字,两个文件内容格式一样,后者常常是指向前者的符号链接,改哪个都行,改之前先cp一份备份。
# /boot/grub/grub.conf 关键片段 default=1 # 默认启动第几项,从 0 开始数,1 表示第二项 timeout=10 # 菜单停留秒数,设 0 表示不等待直接进默认项 splashimage=(hd0,0)/grub/splash.xpm.gz title Windows XP rootnoverify (hd0,0) chainloader +1 title Linux 9.0 root (hd0,2) # 根分区所在位置,按实际分区调整 kernel /vmlinuz-2.4 ro root=/dev/hda3 initrd /initrd-2.4.imgdefault的数字是菜单项的顺序号,不是分区号,改默认启动系统就改它;安装程序默认把 Linux 放在 0,想开机默认进 XP 就改成 1。timeout设成 0 看着省事,实际上等于把后悔药扔了——手一抖选错系统都没机会改,建议留 10 秒。title后面的文字就是菜单上显示的名字,安装程序常把 XP 认成 DOS,直接在这里改成自己想要的名字,比装完再折腾省事。
kernel那一行的root=/dev/hda3必须和root (hd0,2)指向同一个分区,两套编号体系一个是 GRUB 的、一个是内核的,对不上就会在挂载根文件系统时失败,报 "Kernel panic: VFS: Unable to mount root fs",看到这个提示基本可以直接判定是这行写错了。改完保存,重启验证。
4.4 启动盘这个后悔药,什么时候做
安装过程的最后几步会提示创建一张 Linux 启动盘,很多人嫌麻烦直接跳过,然后在引导配置出错、系统进不去的时候抓瞎。这张软盘里装的是一份最小的引导环境,能从它启动并挂载硬盘上的系统,用来修复引导、备份数据、重装 GRUB。
引导配置已经改好了才想起来没做盘,也别急,进系统后用这条命令补一张:
uname -r # 先确认当前内核版本号 mkbootdisk --device /dev/fd0 2.4.20-8 # 把该版本内核写入软驱uname -r的输出就是要填给 mkbootdisk 的版本号,两者必须完全一致,多一个字符都会提示找不到内核文件。--device /dev/fd0指软驱设备,写之前确保软盘没写保护、里面没重要数据。这张盘只在引导层面救急用,系统文件损坏它救不了,别指望太多。
5. 双系统引导失败排查:五条踩坑记录,从现象到解决
5.1 坑一:boot.ini 加了条目,重启后条目消失
现象是编辑完 boot.ini、保存、重启,启动菜单里根本没有新加的那一项,或者过几天再打开文件发现改动没了。
原因有两层。一是这个文件带隐藏、系统、只读三个属性,用记事本直接改,保存时会被系统拦下或者写到临时文件里,看起来改成功了其实没落盘。二是改完没把属性改回去,某些系统还原或者磁盘检查会把它当成异常文件重置。
解决方式是把改属性这一步固化成习惯:
attrib -h -s -r C:\boot.ini # 去掉隐藏、系统、只读,才能编辑 # 编辑保存 attrib +h +s +r C:\boot.ini # 改完立刻加回去-h -s -r三个开关分别对应隐藏、系统、只读,顺序无所谓,缺一个都可能保存失败。改回去这一步别省,boot.ini 被误删或改坏,机器连安全模式都进不去,只能上恢复控制台。编辑的时候用记事本,别用带格式的编辑器,它只认纯文本。
5.2 坑二:菜单里选了 Linux,黑屏只剩光标
现象是启动菜单正常出现,选中 Linux 那一项回车,屏幕一黑,左上角一个光标一直闪,硬盘灯也不怎么亮。
原因按可能性排序:内核文件放在了 8GB 之后 BIOS 读不到,这是最常见的一种;kernel行里的根分区写错,内核起来了但找不到根文件系统;/boot分区没单独分,内核文件散落在根分区里而 GRUB 又按 /boot 的路径去找。
解决方式先排除分区位置问题,把 /boot 放到磁盘最前面重装一次最快。如果是配置写错,用启动盘引导进系统,核对df -h里 /boot 的实际挂载点,再按 4.3 节的方法把root (hdX,Y)和root=/dev/hdaX两处改成一致。改配置文件前先备份,改错了至少还能用启动盘救回来。
5.3 坑三:先装 XP 后装 Linux,ntldr 直接被顶掉
现象是本来想用 Windows 的引导程序来管双系统,结果装完 Linux 一重启,直接进 GRUB 菜单,boot.ini 里加的东西完全没生效。
原因是安装程序默认把引导装载器写到 MBR,把 Windows 的引导记录覆盖了。顺序上如果先装 Linux 再装 XP,XP 安装程序会毫不犹豫地把 MBR 抢回去,结果一样是引导乱了。
解决方式是装 Linux 时在引导配置那一步明确选"不安装引导装载器"或者"安装到分区第一个扇区"。已经装完了的,用 XP 安装光盘进恢复控制台把引导记录写回去:
fixmbr # 重写主引导记录 fixboot C: # 重写 C 盘分区引导扇区,按实际系统盘调整fixmbr会提示确认,输入 y 继续,这个操作只重写引导代码不动分区表,数据是安全的。fixboot后面跟的是系统盘符,写错会把别的分区引导记录搞坏,敲之前多看一眼。执行完重启,菜单回到 XP 那套,再按下面的方法把 Linux 加进去。
5.4 坑四:dd 出来的 bootsect.rh 拷过去不能用
现象是严格照着步骤做了,boot.ini 也加了条目,重启选 Linux 之后提示找不到文件,或者选了之后黑屏。
原因通常是 dd 的源设备写错了。if=/dev/hda6指的是 Linux 装在哪个分区,但真正需要备份的是 /boot 分区——如果 /boot 单独分了区,那源设备应该是 /boot 那个分区;只有没单独分 /boot 的时候,才是根分区。另外 dd 在老内核里硬盘叫 hda,新一点的叫 sda,写错设备名会得到一个全是零的文件。
正确的做法是进 Linux 后先确认 /boot 挂在哪:
df -h /boot # 确认 /boot 对应的设备名 dd bs=512 count=1 if=/dev/hda6 of=bootsect.rh # 按上一步的结果替换设备名bs=512表示一次读写 512 字节,正好是一个扇区的大小;count=1表示只读一个扇区,引导记录就在这一个扇区里,读多了没用还容易把文件搞大;if是输入设备,of是输出文件,两个参数写反了会直接往分区里写垃圾数据。生成的文件拷到 C 盘根目录后,在 boot.ini 的[operating systems]段落下加一行:
[boot loader] timeout=10 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP" /fastdetect C:\bootsect.rh="Linux 9.0"路径分隔符必须是反斜杠,网上流传的版本里有写成C:/bootsect.rh的,那个写法在 boot.ini 里不认,是黑屏的常见原因之一。multi(0)disk(0)rdisk(0)partition(1)这套写法里 partition 从 1 开始数,和 GRUB 从 0 开始是两套体系,别混用。等号后面引号里是菜单上显示的名字,随便改,等号前面必须和文件实际位置对得上。
不方便进 Linux 的话,在纯 Windows 环境里也能抓这段引导扇区:用分区工具打开 /boot 分区的属性,在分区信息页找到"第一物理扇区"这个数值并记下来,然后用系统安装光盘里 SUPPORT 目录下的磁盘编辑工具,指定那块物理硬盘、点 Set Active 激活句柄,再从指定扇区读 1 个扇区,另存为 bootsect.rh。这一步的关键是那个扇区号是绝对编号,不是分区内的相对偏移,抄错一位读出来就是别人的数据。
5.5 坑五:装完忘记做启动盘,进不去系统也删不掉 Linux
现象是引导配置改坏了,机器起不来,手上又没有启动盘,只能重装整个硬盘。
原因是很多人把启动盘当成可选项,等到需要的时候才想起它不存在。解决方式只有一个——装系统的最后一步老老实实插张软盘做出来,或者装完后用 4.4 节那条命令补一张,然后把它贴张标签收进抽屉。真到了没盘又进不去的地步,还剩一条路:用 Linux 安装光盘进救援模式,挂载根分区后重新执行引导安装命令把 GRUB 写回去,代价是要找得到那张光盘。
6. 快速定位:从"黑屏或直接进 XP"到找到根因的 60 秒顺序
引导类故障看着玄学,其实线索全在"卡在哪一屏"上。我现在的习惯是先确定故障停在哪一层,再决定翻哪本账,不从头到尾乱猜。
| 卡住的画面 | 先看什么 | 大概率原因 |
|---|---|---|
| 开机直接进 XP,无任何菜单 | 分区工具里引导装载器装的位置 | 装到了分区引导扇区,或者 boot.ini 条目没生效 |
| 出现菜单,选项里缺 Windows | grub.conf 的 title 段 | 安装时没扫描到,需手工补 chainloader 项 |
| 选项菜单出现,选完黑屏 | /boot 所在位置 | 内核在 8GB 之后,或 kernel 行根分区写错 |
| 选了 Linux 提示找不到文件 | boot.ini 里那条路径 | 斜杠方向写错,或 bootsect.rh 没放在 C 盘根目录 |
| 进了系统但 Windows 变慢 | 分区工具的分区归属视图 | 自由空间没从扩展分区剥离出去 |
顺序上先分层再深挖。第一层看有没有菜单:没菜单说明引导权在别人手里,去查 MBR 和 boot.ini;有菜单但缺项,说明识别问题,去补配置。第二层看选中之后走多远:立刻黑屏是引导代码的问题,闪一下就重启多半是内核读不出来,卡在挂载根分区是 kernel 行写错。第三层才是进系统之后的表现,慢、卡、磁盘异常这些回头查分区结构,别一上来就怀疑系统本身。
验证的时候尽量用能给出确定答案的手段,不要靠肉眼比对颜色块。df -h看挂载、free -m看 swap、diskpart看分区归属,三条命令覆盖了绝大多数"是不是按计划装好了"的疑问。改动配置文件之前一律先备份,用启动盘做兜底,这两条做到了,最坏结果也就是重来一遍,不至于整盘报废。
从那以后我每次给人装双系统,都强制走一遍固定顺序:先确认分区剥离干净、再确认 /boot 在前 8GB、最后确认启动盘做出来了,三步全部打勾才动手装。希望帮到你。这套流程里每一步的操作位置、两套引导方案的分支判断、以及上面那张现象对照表,我都整理进了下载包,动手前对着核一遍,比装到一半再回头翻资料省事。
本文还有配套的精品资源,点击获取