30GB老机装Windows Linux双系统:分区与GRUB引导配置指南
简介面向希望在 Windows XP 基础上并行体验 Linux 的桌面用户与入门学习者内容围绕 Red Hat Linux 9.0 与 XP 搭建双系统展开涉及用分区魔术师无损腾出空间、把自由空间从 Windows 扩展分区中剥离、GRUB 引导装载器配置与启动选单管理等实际问题适合具备基本硬盘分区概念的初中级读者对照操作。整份资料为 1 个 docx 文档压缩包约 421KB单文件即完整图文说明含分区工具界面示意与 Disk Druid 手工分区步骤截图便于边看边执行。已有 340 人学习下载。文档讲清双硬盘、GRUB 接管、ntldr 引导、启动盘引导四类方案各自取舍并拆解 /boot、swap 与根分区的划分及容量建议还给出修改默认启动项、手工添加系统条目等配置细节以及自由空间未脱离扩展分区导致 Windows 变慢等故障成因。1. 一台 30GB 老机器上的双系统先想清楚引导权归谁一台 30GB 硬盘的老机器C 盘装 XP 办公E 盘还剩 7GB想把 Linux 塞进去又不想动 XP——这是很多人第一次接触“双系统 windows linux”时的真实起点。这件事的难点不在安装本身而在三件事的配合分区要把空间从 Windows 扩展分区里剥出来Linux 要按挂载点重新组织磁盘引导管理器要决定开机菜单归谁管。适合手里有老机器或虚拟机、需要保留 XP 环境、又想低成本把 Linux 跑起来的人。下面按“先分区、再安装、最后处理引导”的顺序拆一遍每一步都给出可复现的参数和失败时该看哪里。2. 分区先行从 Windows 扩展分区里抠出 7GB 自由空间2.1 为什么 Linux 不能直接住在 Windows 分区里Windows 用的是 FAT32 或 NTFSLinux 常用 ext3 和 swap文件系统不是一回事。Linux 安装程序不会把文件解压到 NTFS 目录里它需要独立的分区再把分区挂到/、/boot这些挂载点上。更麻烦的是分区表结构Windows 的 C、D、E 三个盘通常 C 是主分区D 和 E 是扩展分区里的逻辑分区。扩展分区像一条链逻辑分区挂在链上Linux 内核对这种链式分区的识别和 Windows 不完全一致。很多教程只说到“缩小 E 盘”但缩出来的空间仍然挂在扩展分区下面。此时 Linux 安装程序看到的是一块“扩展分区里的自由空间”装进去以后引导记录、分区编号、内核参数都容易对不上。常见表现是装完 Linux 后 Windows 启动变慢或者 GRUB 能起来但进 XP 时卡住。根因不是 Linux 抢资源而是分区归属没理清。我一般会先把目标定死从 E 盘的 7GB 可用空间里切 7GB 出来并且让这块空间脱离 Windows 扩展分区变成主分区表里的自由空间。只有走到这一步后面的 Disk Druid 才能把它当成一块干净的领地。2.2 用无损分区工具把 E 盘的可用空间拖出来操作顺序不复杂关键是第二步不能漏。下面按界面路径走一遍工具以经典的分区魔术师为例。步骤界面位置操作注意1主窗口右侧详细窗格单击分区 E 选中它确认选的是 E不是整个扩展分区2左侧任务列表单击“调整一个分区的容量”弹出“调整容量/移动分区”对话框3对话框顶部条状图拖拽右侧绿色条把 E 盘缩到只剩已用空间绿色条代表可用空间别拖过黑色已用部分4对话框单击“确定”回到主界面此时多出一块自由空间但还在扩展分区里5主界面单击扩展分区选中它这一步是原文反复强调的关键6左侧任务列表再次调整容量把刚空出来的 7GB 划出扩展分区划出后自由空间应显示在扩展分区之外第 3 步拖绿色条时界面会实时显示调整后的容量。E 盘原有 16.6GB已用约 9.6GB可用约 7GB所以最小容量就是已用空间再小就会破坏数据。拖到目标值后先别急着点“应用”回到主界面确认自由空间的位置。如果它仍然缩在扩展分区下面说明第 5、6 步没做后面安装一定会出问题。第 6 步完成后主界面上的自由空间应该和扩展分区平级而不是挂在扩展分区内部。这个视觉差异很小但决定了 Linux 分区能不能被正常识别。操作前把重要数据备份到外置盘分区工具再稳也不给意外留机会。2.3 分区后的验证清单与扇区号记录调整完分区先别急着插安装盘。做四件事能省掉后面一半的排错时间。第一确认 XP 还能正常启动。分区工具调整的是分区表如果 XP 起不来先修 XP别继续装 Linux。第二确认自由空间不在扩展分区下面。在主界面点中那块自由空间看它的父级关系应该是独立的。第三记录 Linux/boot分区的起始物理扇区号后面用 Dskprobe 备份引导扇区时要填这个数。第四确认 C 盘根目录可写后面要放bootsect.rh和改boot.ini。检查项怎么看不通过怎么办XP 能否启动重启一次正常进桌面先用 XP 安装盘修复引导再继续自由空间是否独立主界面看它是否与扩展分区平级回到 2.2 第 5、6 步重新划出/boot起始扇区号右键/boot分区看属性里的 First physical sector记下来Dskprobe 要用十进制C 盘根目录可写在 C 盘新建一个临时文件检查权限和磁盘空间扇区号这一步很多人会跳过等到 Windows 下要备份引导扇区时又回头找。我习惯在分区工具里直接抄下来写在便签上后面填 Dskprobe 的 Starting Sector 时直接照抄避免手抖输错一位。3. 安装盘启动与 Disk Druid 分区/boot、swap、/ 怎么摆3.1 BIOS 光盘引导与定制安装类型把第一张 Linux 安装盘放进光驱重启进 BIOS 把光驱调到硬盘前面。保存退出后屏幕出现安装欢迎界面直接按回车进图形安装。第一步选语言选简体中文接着是鼠标和键盘配置一般自动检测不对再手动改。这些屏幕不用纠结真正要盯的是后面的磁盘和分区。安装类型有五个选项个人桌面、工作站、服务器、定制、升级现存系统。这里选“定制”。个人桌面会替你决定装哪些包工作站和服务器会按预设角色裁剪定制给的是最大控制权——分区自己划、引导自己配、软件包自己选。对于双系统场景控制权比省事重要因为你要确保安装程序不去碰 Windows 分区。选完定制安装程序会问分区方式。不要选“自动分区”自动分区可能把整块盘重新规划XP 就没了。选“用 Disk Druid 手工分区”接下来的页面会列出当前磁盘的所有分区和自由空间。如果这里看不到那 7GB 自由空间或者它仍然显示在扩展分区下面退回第 2 章重新处理分区不要在安装程序里硬来。3.2 安装程序里必须盯住的磁盘识别屏幕Disk Druid 打开后先看磁盘设备名。单硬盘通常是/dev/hda下面列出 hda1、hda2 这些分区。Windows 的 C 盘可能是 hda1扩展分区是 hda2逻辑分区从 hda5 开始编号。这个编号不是随便给的后面dd命令的if参数、GRUB 的root参数都要对上。屏幕/区域要看什么异常处理磁盘列表是否只有一块 hda容量是否 30GB 左右多出磁盘先确认是不是读卡器或第二块盘分区列表Windows 分区是否都在类型显示为 ntfs 或 fat32分区缺失先退出回 Windows 检查分区表自由空间是否有约 7GB 的 free space且不在扩展分区下看不到就回第 2 章重做剥离设备编号记下/boot将要落在 hda 几后面 dd 和 grub.conf 都要用这一步最容易翻车的是“自由空间还在扩展分区里”。Disk Druid 可能能显示它也能在上面建分区但装完后 Windows 会变慢或者 GRUB 引导时找不到根分区。判断方法很简单看自由空间的父级是不是 extended。如果是退出安装回 Windows 用分区工具重新剥离。另一个细节是分区编号。如果你把/boot建成 hda5dd的if就是/dev/hda5如果建成 hda6就是/dev/hda6。编号错一位备份出来的就不是引导扇区后面 boot.ini 指向的文件也没用。我一般会在 Disk Druid 里建完分区后把编号抄在纸上安装完再核对一遍。3.3 在 7GB 自由空间上创建 /boot、swap、/选中那块自由空间点“新建”弹出添加分区对话框。初学者分三个分区就够用/boot、swap、/。下面这张表是 128MB 内存、7GB 空间的配置参数可以直接照抄容量按实际自由空间微调。挂载点文件系统容量用途/bootext3100MB放内核和引导文件独立出来方便引导和备份无swapswap256MB交换分区类似 XP 的页面文件不挂载到目录树/ext3剩余约 6.6GB根分区至少 1.5GB剩余空间全给它但留一点余量先建/boot。在“挂载点”填/boot文件系统选 ext3容量填 100MB确定。然后建 swap文件系统选 swap挂载点留空容量填 256MB。128MB 内存给 256MB 交换分区是常见做法内存大可以按 1 到 2 倍给但老机器不用太大。最后建根分区挂载点填/文件系统 ext3容量把剩余空间填进去但别把最后一点空间吃干净留几十 MB 余量否则安装程序可能报空间不足。这里解释两个概念。挂载点是 Linux 目录树上的位置分区必须挂到某个目录才能被访问不像 Windows 给盘符。/是目录树的根必须存在/boot单独分出来是为了内核文件和引导记录不被根分区的变动影响。swap 没有挂载点它不出现在目录树里只作为内存的延伸。文件系统选 ext3 的理由是当时的安装程序默认支持、带日志、出问题恢复快。如果安装程序只给 ext2也能用但异常断电后检查时间会长一些。不要选 Windows 的 vfat 给根分区Linux 的权限和符号链接在 vfat 上跑不起来。3.4 分区表回看与三个常见误操作建完三个分区别急着点下一步。在 Disk Druid 主界面回看一遍Windows 的 hda1 还在不在类型有没有被改/boot是不是独立分区编号是几swap 的文件系统是不是 swap/的容量是不是还剩余量。确认无误再继续。常见误操作有三个。第一把/boot建成主分区导致主分区表用完后面想再加分区没位置。老机器的主分区表只有四项Windows 已经占了 C 和扩展分区剩下两项要省着用。/boot可以建在主分区也可以建在逻辑分区但编号会不同dd 时要对应。第二给 swap 填了挂载点安装程序会报错或把它当普通分区格式化swap 不需要挂载点。第三根分区把自由空间全部吃满安装程序解压软件包时空间不够报一个很模糊的错误。留 100MB 到 200MB 余量老硬盘不差这一点。分区确认后安装程序会问引导管理器配置。这一步先别急着往下走下一章专门处理 GRUB 和 ntldr 的取舍。4. 引导管理器GRUB 装 MBR 还是用 ntldr 接管的取舍4.1 两条路线的边界与选择双系统的引导有两条主路线。第一条把 GRUB 装在主引导记录 MBR 上开机先出 GRUB 菜单菜单里列 Windows 和 Linux。第二条GRUB 不占 MBR只把 Linux 的引导扇区备份成文件挂到 Windows 的boot.ini里开机先出 XP 的启动菜单选 Linux 再跳过去。路线引导流程优点代价GRUB 装 MBR开机 → GRUB 菜单 → 选 XP 或 Linux配置简单GRUB 能自动识别多数系统重装 XP 会覆盖 MBR需要重装 GRUBGRUB 装分区 ntldr开机 → XP 启动菜单 → 选 Linux 跳转删除 Linux 方便符合 Windows 使用习惯要备份引导扇区改 boot.ini步骤多如果这台机器长期用、Linux 只是学习环境我倾向 GRUB 装 MBR省事菜单也直观。如果 Linux 是临时装的、以后可能删掉或者使用者只熟悉 XP 的启动菜单走 ntldr 路线更稳。两条路线不冲突可以先用 GRUB 装 MBR之后再把引导扇区备份出来挂到 boot.ini但一开始就选定一条别中途混着改。原文还提到双硬盘方案Linux 装第二块盘GRUB 装第二块盘的主引导扇区开机在 BIOS 里选从哪块盘启动。这个方案适合有两块硬盘的用户隔离性好但老机器不一定有第二块盘这里不展开。4.2 安装时配置 GRUB 默认项与菜单标签选 GRUB 装 MBR 的话安装程序会出现引导装载器配置页面。列表里通常有两个选项一个被识别成 DOS一个是你刚装的 Linux。DOS 其实就是 XP因为 GRUB 的检测逻辑把 NT 系归到 DOS 类。这里可以做三件事。第一改默认启动系统。默认是 Linux如果你更常用 XP勾选 XP 前面的“默认”复选框。第二改菜单标签。选中 DOS 那一项点“编辑”把标签改成“Windows XP”开机菜单看起来清楚。第三添加没识别出来的系统。如果列表里只有 Linux没有 XP点“添加”标签填 Windows XP设备选 XP 系统分区所在位置类型选 DOS 或相应项。安装完成后这些配置落在/boot/grub/grub.conf有的版本用menu.lst。改这个文件也能达到同样效果。下面是一个片段示例分区编号要按实际改。# /boot/grub/grub.conf 片段默认第二项十秒超时 default1 timeout10 title Windows XP rootnoverify (hd0,0) chainloader 1 title Linux 9.0 root (hd0,5) kernel /vmlinuz-2.4 ro root/dev/hda7 initrd /initrd-2.4.imgdefault1表示默认启动菜单里的第二项GRUB 菜单从 0 开始数第一项是 0第二项是 1。timeout10是等待十秒不操作就进默认项。rootnoverify (hd0,0)指向第一块硬盘的第一个分区chainloader 1表示把引导权交给那个分区的引导记录这是引导 XP 的常见写法。Linux 项的root (hd0,5)和kernel后的root/dev/hda7要按你实际的分区编号改写错就进不了系统。改完保存重启看菜单是否生效。4.3 用 dd 备份 Linux 引导扇区并挂到 boot.ini走 ntldr 路线核心是把 Linux 分区的引导扇区读成一个 512 字节的文件放到 C 盘根目录再在boot.ini里加一行指向它。假设/boot分区是/dev/hda6在 Linux 下打开终端执行# 把 /boot 所在分区的引导扇区读出来存成 512 字节的文件 dd bs512 count1 if/dev/hda6 ofbootsect.rh # 确认文件大小应该是 512 字节 ls -l bootsect.rhbs512表示一次读写一个扇区也就是 512 字节count1表示只读一个扇区if/dev/hda6是输入设备必须指向/boot所在分区不是整块硬盘ofbootsect.rh是输出文件名。执行完用ls -l看大小512 字节才对。如果文件明显大于 512 字节说明if指到了整盘/dev/hda或者count写错了备份出来的不是引导扇区后面 boot.ini 指向它也没用。把bootsect.rh拷到 C 盘根目录。然后改boot.ini先去属性里去掉“只读”和“系统”用记事本打开在[operating systems]段加一行。[boot loader] timeout10 defaultmulti(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWSWindows XP /fastdetect C:\bootsect.rhLinux 9.0C:\bootsect.rh是备份文件在 C 盘根目录的路径等号后面是开机菜单显示的文字。改完保存把boot.ini和bootsect.rh的属性设回只读、隐藏、系统避免误删误改。重启后应该先出 XP 的启动菜单多出一项 Linux 9.0选它就能跳进 Linux。如果先装了 XP 再装 Linux安装时一定要把 GRUB 装在分区而不是 MBR否则 XP 的引导会被覆盖boot.ini路线也走不通。装 Linux 时还要做一张启动盘万一引导配置写错还能用启动盘进系统修。4.4 在 Windows 下用 Dskprobe 抓引导扇区不想进 Linux 敲命令也可以在 Windows 下抓引导扇区。分两步先找/boot分区的起始物理扇区号再用 Dskprobe 读那个扇区。找扇区号用分区魔术师。右键/boot分区选属性切到 Partition Info 标签找 First physical sector记下十进制数值比如 53014500。这个数就是 Dskprobe 的 Starting Sector。Dskprobe 在 Windows 安装光盘的/SUPPORT/TOOLS目录下SUPPORT.cab压缩包里。先关掉分区魔术师再启动 Dskprobe否则磁盘句柄被占用读不到物理盘。步骤菜单/按钮填什么注意1Drives → Physical Drive选 PhysicalDrive0单硬盘只有这一项2对话框双击物理盘点 Set Active再点 OK不点 Set Active 读不了3Sectors → ReadStarting Sector 填刚才记的十进制扇区号别填十六进制4Sectors → ReadNumber of 填 1只读一个扇区5File → Save As保存到 C 盘根目录文件名 bootsect.rh保存后确认大小 512 字节读出来的界面会显示一串十六进制内容这就是/boot分区的引导扇区。保存后在boot.ini里加C:\bootsect.rhLinux 9.0步骤和 4.3 一样。Dskprobe 的优点是全程在 Windows 下操作不用进 Linux缺点是扇区号必须抄对填错一位读出来的就是别的分区引导文件自然不能用。5. 避坑与排查Windows 变慢、菜单丢失、引导文件不对5.1 装完 Linux 后 Windows 奇慢现象装完双系统进 XP 后开机慢、打开文件夹卡、磁盘灯长亮。很多人第一反应是 Linux 占了资源其实不是。原因Linux 分区仍然落在 Windows 扩展分区里。扩展分区的逻辑分区链被 Linux 分区插了一脚XP 启动时枚举磁盘的方式和以前不一样容易反复读分区表表现就是慢。原文专门点过这个坑但很多人分区时只缩了 E 盘忘了把自由空间从扩展分区里剥离。解决回 Windows用分区工具确认 Linux 分区是否在扩展分区下。如果是先备份 Linux 里的数据删除 Linux 分区把自由空间划出扩展分区再重建 Linux 分区重装。已经装好的系统也可以不重装用分区工具把扩展分区边界调整一下但操作风险高老机器上我宁愿重装一遍省得提心吊胆。5.2 重启直接进 LinuxXP 菜单不见了现象GRUB 装完重启直接进 Linux或者菜单里只有 Linux没有 Windows XP。原因GRUB 没检测到 XP 分区或者grub.conf里的 Windows 项被删了。另一种可能是 XP 装在扩展分区的逻辑分区里GRUB 的自动探测没认出来。解决进 Linux打开/boot/grub/grub.conf手动加一段 Windows 启动项。rootnoverify (hd0,0)里的(hd0,0)要按 XP 系统分区实际位置改第一块硬盘第一个分区是 0第二个分区是 1。加完保存重启看菜单。如果加了还是进不去检查 XP 分区是不是主分区chainloader 1对逻辑分区的支持有时不灵可以试rootnoverify (hd0,1)配合chainloader 1逐个试。5.3 boot.ini 加了项却报错或没反应现象boot.ini里加了C:\bootsect.rhLinux 9.0重启菜单里也出现了这一项但选中后黑屏、报错或者又跳回 XP 菜单。原因三种常见情况。第一bootsect.rh不是 512 字节dd 的if指错了分区。第二boot.ini里的路径写错用了C:/bootsect.rh这种正斜杠或者文件不在 C 盘根目录。第三改完boot.ini没恢复属性或者文件编码不对XP 读不到这一行。解决先用ls -l或文件属性确认bootsect.rh是 512 字节再确认文件在C:\根目录不是某个文件夹里boot.ini里用反斜杠C:\bootsect.rh改完把只读、隐藏、系统属性设回去。如果还不行用 XP 安装盘的恢复控制台跑一次bootcfg /rebuild让 XP 重新生成启动菜单再把 Linux 项加回去。5.4 dd 出来的 bootsect.rh 不是 512 字节现象执行完 ddls -l看到bootsect.rh是 512 字节的整数倍但明显偏大比如 1024、4096或者大小对但引导不了。原因if指向了整块硬盘/dev/hda而不是/boot分区/dev/hda6。整盘第一个扇区是 MBR里面是分区表和 GRUB 第一阶段不是 Linux 分区的引导扇区。另一个原因是count写成了大于 1 的数读了好几个扇区。解决确认/boot分区的设备编号。在 Linux 下用df -h看/boot挂载在哪个设备或者用fdisk -l看分区列表。把if改成对应分区bs512 count1保持不变重新 dd。执行前先删掉旧的bootsect.rh避免覆盖不彻底。备份出来的文件拷到 C 盘前再核对一次大小。5.5 删除 Linux 后开机进 grub现象不想用 Linux 了直接把 Linux 分区删掉重启出现grub提示符XP 也进不去。原因GRUB 装在 MBR 上Linux 分区一删GRUB 的配置文件和第二阶段的文件都没了MBR 里的 GRUB 代码找不到后续就停在命令行。此时 XP 的引导记录还在只是被 GRUB 挡在前面。解决用 XP 安装盘启动进恢复控制台执行fixmbr和fixboot把 MBR 和 XP 分区引导记录恢复成 NT 的。执行前确认 XP 系统分区没被误删。如果之前走的是 ntldr 路线GRUB 没占 MBR删 Linux 分区后只需把boot.ini里那一行删掉再把bootsect.rh删掉重启就不会有 Linux 菜单了。这也是 ntldr 路线的一个实际好处删除干净不留尾巴。6. 装完先别装软件三次重启验证与一份后悔药双系统装完很多人急着装开发工具、配环境结果用了几天才发现某个系统进不去。我的习惯是先在引导层面做三次重启验证再动软件。第一次重启选 Windows XP进桌面后看设备管理器有没有异常磁盘管理里分区表是否正常关机再开。第二次重启选 Linux进系统后看/boot挂载、根分区读写、交换分区是否启用用df -h和free各看一遍。第三次重启把安装光盘和启动盘都拔掉确认不依赖外部介质也能出菜单、进系统。三次都过再开始装软件。验证时可以顺手做一份“后悔药”备份 MBR 和分区表。在 Linux 下执行# 备份整盘第一个扇区含 MBR 和分区表共 512 字节 dd if/dev/hda ofmbr.bak bs512 count1 # 查看备份文件大小 ls -l mbr.bakif/dev/hda是整块硬盘ofmbr.bak是备份文件名bs512 count1只读第一个扇区。这个文件不要放在要删的分区里拷到 U 盘或另一块盘。恢复 MBR 的命令是dd ifmbr.bak of/dev/hda bs512 count1但恢复比重装风险高执行前确认备份文件是对的最好在虚拟机里先练一遍。验证项操作通过标准XP 启动重启选 Windows XP进桌面磁盘管理无异常Linux 启动重启选 Linux进系统df -h能看到/和/boot无介质启动拔掉光盘和启动盘再重启菜单正常出现两个系统都能进引导备份dd备份 MBR 和bootsect.rh文件各 512 字节存放在安全位置从那以后我每次动分区表之前都先用dd把 MBR 和 Linux 引导扇区各备一份再拿一张启动盘当后悔药。老机器上装双系统安装本身只要半小时真正花时间的是分区归属和引导配置这两步。把这两步的参数记下来下次换机器也能照着走。希望帮到你。本文还有配套的精品资源点击获取