U盘安装Ubuntu 10.04及拔盘后启动失败的系统引导修复指南
2026/9/16 1:48:04 网站建设 项目流程

1. 准备阶段:镜像、U盘与启动工具的正确组合

1.1 Ubuntu 10.04镜像该从哪下、怎么校验

先说结论:Ubuntu 10.04是一个2010年发布的LTS版本,代号Lucid Lynx,官方原版下载地址早已归档,现在能正常拉取的是old-releases源。镜像名一般是ubuntu-10.04.4-desktop-i386.isoubuntu-10.04.4-desktop-amd64.iso,区别是32位和64位。10.04.4是10.04系列最后一个维护版本,集成了大量更新,建议直接下这个,别去找最早的10.04原始ISO。

下完之后第一件事是校验MD5,这个很多人会跳过。老镜像在网络传输中损坏太常见了,损坏的镜像做出来的启动盘会在安装器自检时提示找不到内核或者突然报错。校验方法很简单,Windows下在命令提示符里用certutil -hashfile ubuntu-10.04.4-desktop-amd64.iso MD5,Linux下直接md5sum。校验值和镜像文件名一般发布页面会写,找不到也没关系,至少确认文件字节数是对的。

对于这台要装Ubuntu 10.04的机器,你要先想清楚一个问题:它有没有UEFI?10.04那个年代绝大多数电脑还是传统BIOS,但如果你手头是个较新的机器,老版本系统可能压根没法在UEFI模式下启动。这篇文章按传统BIOS启动来讲,也是10.04真实运行的典型环境。

1.2 制作启动U盘的方案与细节

U盘启动盘在10.04年代和现在完全是两个世界。当年没有Rufus,没有Ventoy,最流行的工具是Universal USB Installer、UltraISO,或者直接在Linux下用dd。现在工具多,但老系统兼容性反而需要注意。

先说最省事、也最不容易出问题的方案:Linux环境下直接用dd。假设U盘设备是/dev/sdb,执行:

sudo dd if=ubuntu-10.04.4-desktop-amd64.iso of=/dev/sdb bs=4M status=progress sync

用dd写完的U盘,里面会出现一个包含casper.diskisolinux等目录的混合ISO结构,能直接在BIOS下启动。这个方法的好处是干净可靠,坏处是U盘不能被写别的文件,也没法再次快速当普通U盘用,需要重新分区格式化。

Windows环境下我推荐用Rufus。选好镜像之后,分区类型选MBR,目标系统类型选“BIOS或UEFI-CSM”,文件系统保持FAT32。不要选GPT,因为10.04的内核和GRUB版本对新分区表的支持不好,GPT会直接卡在引导阶段。还有一些人喜欢用Ventoy把ISO拖进去,Ventoy本身对老ISO的支持整体不错,但10.04这个版本因为initramfs和isolinux配置比较老,偶尔会遇到启动后卡在引导菜单的情况,如果你实验后不兼容,果断换dd或者Rufus。

确实遇到过一个比较怪的场景:用UltraISO的“写入硬盘映像”功能,选择USB-HDD+模式,很多老机器能启动,但如果写入时选了“隐藏启动分区”或者修改了分区格式,U盘启动就会出现“ISOLINUX 4.01 ... Boot error”这种报错。原因在于UltraISO在处理老版本isolinux引导时容易破坏文件偏移量。所以现在我的建议是:在Windows上用Rufus,在Linux上用dd,不要再折腾UltraISO了。

U盘本身选一个4GB以上的正品U盘就行,FAT32格式。容量太大反而可能带来分区对齐问题,一般8GB到16GB最稳妥。制作前把U盘数据拷走,制作过程中不要拔U盘,写入完成后也别急着插到目标机器上,先在当前电脑上确认一下分区和文件能正常读取。

2. 让BIOS认识U盘:老主板U盘启动的设置细节

2.1 不同品牌进BIOS的方式与U盘启动顺序

U盘装系统第一个门槛就是让电脑从U盘启动。10.04年代电脑五花八门,Dell、联想、HP、ThinkPad、组装机,进BIOS的按键完全不同。戴尔台式机一般是开机按F2进BIOS设置,F12进一次性启动菜单;笔记本也类似。联想和ThinkPad多数是F1或Enter后按F12,HP台式机是F10或Esc,组装机的AMI主板最常见是Del或F2,Phoenix BIOS则是F2更多。

进BIOS之后找“Boot”或“Startup”菜单。老款Dell的Boot Sequence里能看到硬盘、光驱、USB Storage Device等选项,你要把USB Storage Device调到第一。如果不支持直接用USB启动,有些Phoenix BIOS的Boot菜单里会有“Hard Disk Drives”的子菜单,进去把U盘对应的设备选成First Drive,然后在Boot Device Priority里再确认一下顺序。这类老主板逻辑绕,设置完一定要按F10保存重启。

这里有一个很多人容易踩的坑:U盘插入哪个USB接口有讲究。机箱前面板的USB接口在BIOS早段可能没有被初始化,导致开机过程中压根识别不到U盘,屏幕提示“No bootable device”。解决方法是插到机箱背面的USB 2.0接口,不要插USB 3.0蓝色接口。老系统没有USB 3.0驱动,在安装器早期阶段如果U盘插在USB 3.0控制器上,会直接迷失。当初装10.04的时候,插前面板、插蓝色接口都试过,最后老老实实插在背面黑色USB 2.0接口上才正常。

另一个细节:如果你同时插着一个机械硬盘和一个U盘,BIOS里的启动选项可能出现好几条“USB”或者“Hard Drive”记录,容易搞混。我的习惯是只留目标硬盘和U盘,其它移动硬盘、读卡器、多余的U盘全部拔掉,避免启动顺序被干扰。

2.2 硬盘分区规划与安装前准备

开始安装前,把目标硬盘里的数据全备份出来。既然装单系统,整个磁盘都会被重新分区,任何误操作都会导致数据丢失。这一步没有商量余地,就算硬盘看起来是空的,也应该做一次心理确认。

分区规划上,我建议不要全盘自动分区,而是手动规划三个分区:/bootswap/

  • /boot分200MB到300MB就行,格式ext2或ext3。独立分出/boot的好处是确保引导文件落在这块硬盘靠前的区域,老BIOS有时对硬盘大容量扇区访问不太顺,把/boot放前面能减少引导阶段问题。
  • swap分区大小取决于内存。内存小于等于2GB,swap给内存的两倍;内存4GB以上,swap给4GB左右就够用。10.04在老机器上内存普遍不大,swap分大一点没坏处,它还能承担休眠功能。
  • /分区分剩下的全部空间,ext4文件系统。如果你习惯把/home独立出来,也可以单独分一个,但对单系统来说不是必须的。

分区的时候注意磁盘命名。10.04年代设备名基本都是/dev/sda(第一块硬盘)、/dev/sdb(第二块)。如果U盘先被识别成sda、硬盘被识别成sdb,安装器默认的引导设备就会指向U盘,这是后文“拔掉U盘后系统无法启动”的最直接导火索之一。所以安装时每一步都要看清楚当前设备列表,不要盲目点下一步。

3. Ubuntu 10.04安装全过程:关键步骤与引导安装位置

3.1 安装器导航与分区方式选择

从U盘启动后,Ubuntu桌面版会先进入一个带菜单的GRUB引导界面,让你选“Try Ubuntu without installing”或者“Install Ubuntu”。老版本还可以按F6修改启动参数,比如acpi=offnomodeset。如果你启动时画面花屏、卡死或者出现乱码,先试nomodeset,这个参数会关掉内核的KMS模式设置,对老显卡尤其有用。

进入桌面版安装器之后,前几步是语言和键盘布局,默认选“中文(简体)”和默认键盘布局即可。接着会问你“安装类型”,这一步有两种走法:自动分区和手动分区。

自动分区“清除整个磁盘并安装Ubuntu”确实省事,但它会在第一块检测到的磁盘上写入自己的分区方案,如果U盘被识别成sda,引导很容易被装到U盘上,也就是标题里“拔掉U盘后系统无法启动”的经典成因。所以这里我强烈建议选择“手动指定分区(高级)”,也就是“Something else”,全程自己控制分区和引导加载器位置。

3.2 手动分区实操

进入分区页面后,你会看到一个设备列表,需要特别注意的是设备名的对应关系。比如U盘是sdb、硬盘是sda,那页面上会分别标出来。你要对硬盘sda进行操作,对U盘sdb不要做任何分区操作。

选中硬盘后,点“新建分区表”,确认会把这个盘上的分区表清空。然后依次建立:

  1. 在sda上新建逻辑分区或主分区,大小输入200MB,类型选“ext2”,挂载点选“/boot”。
  2. 再新建一个分区,大小按前面说的swap大小设定,类型选“swap area”。
  3. 剩下的空间全部给根分区,“ext4”,挂载点选“/”。

分区挂载点的下拉菜单在安装器里是现成的,选“/boot”时要注意别误选成“/boot/efi”,那是UEFI机器用的。10.04这个版本按传统BIOS引导,不需要EFI系统分区。

分区完成后,页面底部会有一个下拉框,写着“安装启动引导器的设备”(Install boot loader to)。这一步是整个安装流程里最需要留意的地方。默认情况下,Ubuntu安装器往往会把启动引导器装到它认为的“主盘”上,而它的判断逻辑和我们的直觉可能有差异。如果它默认显示的是/dev/sdb,也就是U盘,那安装完成后,硬盘其实没有引导程序,拔掉U盘当然无法启动。哪怕它默认显示/dev/sda,也应该手动再确认一次,然后选择硬盘对应的设备/dev/sda(不带分区编号,是整个磁盘)。

3.3 安装过程中的小细节与时区设置

分区和引导设备都确认无误后,点“现在安装”,安装器会检查分区并开始复制文件。这时会问时区、键盘、用户名密码等常规信息。时区选择Asia/Shanghai就行,系统语言包里带简体中文,用户名别用纯数字,密码建议设置一个,因为后面修复引导时用sudo会需要。

安装过程中有一个“在安装时下载更新”的复选框。以现在的网络环境,10.04自带的源早就指向旧归档地址了,勾了它反而容易长时间卡在“正在下载软件包”或者报错。我的建议是取消勾选,同时把“安装第三方软件”也取消。这两个选项对系统引导本身没有影响,但能避免安装过程因为源不可用而中断。

安装过程大约10到20分钟,取决于U盘速度和硬盘速度。进度条走完后提示重启。这里有个细节:它提示“移除安装介质”,但实际上重启时不需要马上拔U盘,等机器断电后拔U盘也行,关键是重启后要进BIOS或者启动菜单,选择从硬盘启动。

很多人在这一步直接拔U盘,然后重启,结果发现系统找不到引导,屏幕黑屏一个光标或者提示“No bootable device”。别急,这在实践中非常常见,后面一小节专门讲怎么定位和解决。

4. 拔掉U盘后系统无法启动的排查与修复

4.1 先判断故障现象属于哪一类

如果拔掉U盘后无法启动,屏幕表现不同,问题的根源可能完全不同。我把实际见过的情况整理成一个速查表:

故障现象最可能原因处理方向
黑屏,左上角光标闪烁,没有任何文字硬盘MBR里没有引导程序,或者引导程序损坏用Live U盘修复GRUB
提示“No bootable device -- insert boot disk”BIOS启动顺序里没有硬盘,或硬盘MBR无效先进BIOS调整顺序,再进Live修复
提示“Missing operating system”MBR存在但活动分区标志丢失或引导文件缺失检查分区活动标志,重新安装GRUB
卡在grub>命令行,能输入命令但没有菜单GRUB菜单文件丢失,但引导程序本身还在手工指定内核启动,进入系统后重建菜单
卡在grub rescue>,提示unknown filesystemGRUB第二阶段找不到/boot分区用Live系统重新安装GRUB,并确认/boot分区类型和UUID

大部分情况属于第一、二类,也就是引导程序本身没装到硬盘上,或者BIOS压根没把硬盘列为启动设备。先把后者排除掉,因为修复起来最省事。

4.2 用Live系统修复GRUB引导

如果硬盘MBR里没有引导程序,最直接的办法是重新用U盘启动到“Try Ubuntu”模式,然后挂载硬盘,chroot进去重装GRUB。

先明确设备名。假设硬盘根分区是sda1,/boot独立分区是sda2(如果没有独立/boot,所有引导文件都在根分区下,那就只挂sda1就行),U盘启动后的Live系统里,硬盘设备顺序一般还是sda,但也不排除系统把U盘识别成sda。先用lsblk或者fdisk -l看清楚,别挂错盘。

具体流程:

sudo mkdir -p /mnt/system sudo mount /dev/sda1 /mnt/system sudo mount /dev/sda2 /mnt/system/boot # 如果有独立/boot分区 sudo mount --bind /dev /mnt/system/dev sudo mount --bind /proc /mnt/system/proc sudo mount --bind /sys /mnt/system/sys sudo chroot /mnt/system /bin/bash

进入chroot之后,先检查一下当前挂载情况,然后执行:

grub-install --recheck /dev/sda update-grub

grub-install /dev/sda这条命令是把GRUB引导程序写入sda这块硬盘的MBR区域,注意参数是/dev/sda而不是/dev/sda1。如果10.04默认安装的是GRUB 2,装完之后再执行update-grub,它会扫描分区并生成grub.cfg菜单文件。

如果grub-install报错说找不到GRUB设备映射,先检查/boot/grub/device.map是否存在,不存在就直接删掉这个文件,让它重新生成。还有一个常见问题是chroot之后设备节点没绑定好,表现为执行命令时卡在“Scanning for Btrfs filesystems”或者找不到设备,这时候重新检查mount --bind /dev那一步。

修复完GRUB之后,退出chroot,卸载所有挂载点,然后关机,拔掉U盘,开机测试。顺序很重要:先卸载chroot里的所有挂载,再卸载/mnt/system,不然会出现设备忙导致的问题。

4.3 修正启动顺序与UUID

如果GRUB装好了还是无法启动,问题可能出在BIOS启动顺序上。拔掉U盘后,有些主板的启动顺序如果还保留着USB设备优先,它会先去找USB设备,发现没插U盘,然后往下找硬盘。这个逻辑绝大多数主板都能正确处理,但也有部分老主板出现“迟钝”现象,明明硬盘已经装好引导了,它还是报找不到启动设备。这时候进BIOS,把Boot Device Priority里的Hard Drive(硬盘)调到第一,USB暂时禁用或调到最后,保存重启就行。

同时,进入BIOS的“Hard Disk Drives”子菜单看看,有些主板在这里区分“USB Hard Drive”和“SATA Hard Drive”,要把SATA硬盘排在USB硬盘前面。Dell的老机器经常在这两个菜单里各设置一次,漏掉其中一个就会出现插U盘能启动、拔U盘不能启动的诡异现象。

再有一个隐蔽的点是UUID。GRUB菜单和/etc/fstab里记录的都是分区的UUID。如果硬盘分区因为修复操作被重新格式化过,UUID变化了,而GRUB菜单还是旧的UUID,启动时会卡在ALERT! /dev/disk/by-uuid/xxxx does not exist。这个好办,进入Live系统后,用blkid查看当前分区的UUID,再对照/etc/fstab和/boot/grub/grub.cfg里的引用,不一致就改成一致。

4.4 fstab的盘符错位问题

早期Linux配置一个很容易被忽略的问题:/etc/fstab里如果写的是/dev/sda1这样的设备名,而不是UUID,那么拔掉U盘后,设备名会发生错位。比如安装时U盘是sda、硬盘是sdb,安装器就可能在fstab里写了sdb1作为根分区。装完系统拔掉U盘,硬盘变成sda,但fstab还指向sdb1,内核根本找不到根分区,启动就会掉进initramfs的busybox提示符,屏幕显示(initramfs)

这个问题在U盘安装场景里发生率极高,因为安装时U盘和硬盘的盘符顺序和日常使用不一样。检查方法是进入Live系统,挂载硬盘根分区,打开/etc/fstab,把那些用/dev/sdxx写的条目替换成对应分区的UUID。UUID可以用blkid查,写进fstab之后,重启就不会再受设备名顺序影响。

顺带说一句,如果修复过程中用chroot进入系统后执行update-grub报错,也可以手动检查一下/etc/fstab里的内容,大部分时候是挂载信息不完整导致GRUB无法正确扫描。

4.5 老机器上的兜底方案

上面的修复流程走完,99%的情况能解决。但如果你的机器实在太老,或者GRUB 2在你这块主板上兼容性极差,可以尝试用GRUB 1(Legacy)兜底。10.04时代GRUB 1已经很成熟,命令方式完全不同,但针对BIOS老主板的兼容性反而更好。

在chroot环境里安装legacy GRUB:

apt-get install grub grub-install --recheck /dev/sda

然后进GRUB命令行手工指定:

root (hd0,0) setup (hd0)

其中(hd0,0)表示第一块硬盘第一个分区,如果/boot是独立分区就填这个,如果/boot在根分区里但没有单独分,就要根据实际情况处理。这属于比较偏门的方案,一般用不上,知道有这么回事就行。

如果试来试去还是不行,果断从头重装,重装时记得在分区完成后手动选择引导加载器设备为硬盘,并检查fstab里的UUID。重装一遍10分钟,比起反复折腾GRUB要省心得多。

5. 常见问题速查表与避坑笔记

5.1 故障速查表

症状原因解决
安装完拔U盘,开机黑屏光标闪引导装到U盘,硬盘MBR无引导重装GRUB到/dev/sda
开机提示No bootable deviceBIOS启动顺序没把硬盘排前面进BIOS把硬盘调到第一
开机提示Missing operating systemMBR有引导但活动分区缺失修复分区活动标志,重装GRUB
卡在grub>命令行grub.cfg丢失手工引导或更新GRUB配置
卡在grub rescue> unknown filesystemGRUB找不到/boot分区重装GRUB到硬盘MBR
启动后进入(initramfs),提示找不到根分区fstab使用设备名且盘符错位改成UUID挂载
启动后卡在“STOP: Failed to mount ...”fstab里挂载项有误检查UUID与文件系统类型
安装过程中提示无法下载更新10.04源已归档,网络不可达取消更新,后续换old-releases源

5.2 老版本源失效的处理

装好10.04进系统后,你会发现apt update大概率报错,这是因为默认源指向的archive.ubuntu.com已经不再保留10.04的软件包。解决办法是把源改成old-releases.ubuntu.com。编辑/etc/apt/sources.list,把里面所有archive.ubuntu.comsecurity.ubuntu.com替换成old-releases.ubuntu.com即可。我当时是直接用了sed全局替换:

sudo sed -i 's/archive.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list sudo sed -i 's/security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list sudo apt update

但要注意,一部分第三方PPA源早就失效了,这是正常现象。如果需要装软件,优先用apt自带的软件包。实在想装一个比较新的软件,源码编译可能是更省心的路,因为官方软件仓库里10.04的包版本都相当老。

5.3 我的实操笔记与几个独家避坑细节

第一,安装前把目标电脑的硬盘模式确认一下。有些老Dell默认SATA模式是ATA或RAID,如果你在安装过程中看不到硬盘分区,进BIOS把SATA Operation改成ATA或AHCI,具体看主板支持。Ubuntu 10.04对AHCI支持一般,但如果硬盘本身是SATA盘,AHCI通常没问题;遇到完全识别不到硬盘的情况,先切ATA再试。

第二,U盘引导启动时如果出现isolinux.bin missing or corrupt,大概率是U盘写入不完整或者U盘本身有坏道。换一个U盘重新制作,不要犹豫。测试过很多次,修一个坏U盘比换一个新U盘成本高得多。

第三,修复GRUB时不要忘了设备映射问题。我用chroot方法给好几台老机器修复引导,发现grub-install偶尔会提示“failed to get canonical path of /dev/sda”,这时候先确认有没有挂载/dev到chroot环境。还有一次是Live系统把U盘识别成了sda,硬盘反而成了sdb,但我在grub-install里写死了/dev/sda,导致把GRUB装进了U盘。所以每次执行修复命令前,都应该用lsblk确认当前设备对应关系。

第四,安装完系统进入桌面后,如果发现关机速度异常慢,或者关机时屏幕卡住,检查一下swap分区的挂载情况,10.04的init脚本在swap不可用时会有诡异的等待。另外一个老生常谈:显卡驱动。如果进入桌面后分辨率只有800x600,去“系统管理-硬件驱动”里装受限驱动。装完驱动黑屏的话,启动参数里加nomodeset,进系统后再调整xorg.conf。

第五,如果你是想在一台没有光驱、没有软驱的老机器上装10.04,而且机器本身不支持U盘启动,那只能借用PXE网络引导或者拆硬盘挂到别的机器上装,但这就超出U盘安装的范畴了。实际操作中我发现,很多所谓“不支持U盘启动”的主板,只是BIOS里没开启“USB Legacy Support”或“Legacy USB Storage Detect”选项,开启后U盘启动选项就出现了。这一项在老Dell主板里叫“USB Keyboard/Mouse Support”或者“USB Storage Function”,默认可能是Disabled,改Enabled后重启再看。

6. 最后分享一点个人经验

U盘安装系统、拔掉U盘后启动失败的案例,本质上就是三个关键点没守住:一是安装时引导加载器的目标磁盘选错,二是BIOS启动顺序没有明确指向硬盘,三是fstab和GRUB配置里写死了设备名而非UUID。只要这三个点都确认过,系统基本就是一次装好,不折腾。

我个人在装这类老系统时有一个习惯:安装完成后先用U盘启动,进入Live系统把硬盘上/boot/grub/grub.cfg和/etc/fstab两个文件打开检查一遍,确认里面引用的是UUID且路径正确,然后再拔U盘重启。虽然多花两分钟,但能提前暴露绝大多数导致启动失败的问题,比启动失败后再修省事得多。

另外想说一句,Ubuntu 10.04放到今天已经严重过时,很多软件包和安全补丁都不再更新,不建议在联网环境作为主力系统使用。但如果你是为了研究老系统、跑一跑古董软件,或者在老硬件上回顾当年Linux桌面的样子,U盘安装这套流程里关于引导、分区、GRUB的原理,到今天依然适用。现在用U盘装Ubuntu 24.04也一样要面对分区表、启动方式、引导位置这些问题,只是工具更自动化了,原理并没有变。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询