当前位置: 首页 > news >正文

旧板子装Ubuntu错误

旧板子装Ubuntu错误

Ubuntu Server + Windows 10 双系统安装 · 完整困难笔记

硬件环境:H61 主板(老式 UEFI 固件,存在 NVRAM 写入保护)
现有系统:Windows 10 已安装在 /dev/sda1(EFI)及 NTFS 分区
目标:保留 Windows,将 Ubuntu Server 20.04 安装到 /dev/sda6/)、/dev/sda7(swap)、/dev/sda8/home
最终结果:✅ 稳定运行的双系统


一、安装主线步骤(最终成功流程)

1.1 准备启动介质

  • 使用 Rufus / balenaEtcher 将 Ubuntu Server 20.04 ISO 写入 U 盘(模式:DD 或 ISO,确保 UEFI 可引导)。
  • 拔掉网线(防止安装过程中 Snap 联网卡死)。

1.2 U 盘引导并编辑内核参数

  • 开机按 F12(或主板启动菜单键)选择 U 盘启动。

  • 出现 GRUB 菜单(通常为 Try or Install Ubuntu Server)时,高亮第一项,按 e 进入编辑模式。

  • 找到以 linux 开头的行,在末尾添加以下参数(空格分隔):

    quiet nodmraid acpi=off autoinstall=off
    

    说明acpi=off 绕过 H61 的 ACPI 表不兼容;nodmraid 避免假 RAID 干扰磁盘探测;autoinstall=off 强制禁用自动安装。

  • Ctrl+XF10 启动。

⚠️ 可能遇到的困难:添加参数后仍卡死 / 误入自动安装模式 → 参见 二、困难 1二、困难 2

1.3 安装过程基本设置

  • 语言 / 键盘布局:根据需要(通常 English / US)。
  • 网络配置:因已拔网线,直接选 “Continue without network”
  • 镜像源:默认(后续可换)。
  • 关键:安装类型选择 → 必须选 Install Ubuntu Server without HWE kernel(选项 2,避免硬件栈不匹配)。

1.4 存储配置(手动分区)

  • 在 “Storage configuration” 界面,选择 Custom storage layout绝不要选 “Use an entire disk”,否则会删除 Windows)。
  • 现有分区示例(请根据实际大小确认):
    sda1  (vfat, 100M)   -- Windows EFI 分区
    sda2  (ntfs)         -- Windows C:
    sda5  (ntfs)         -- Windows 数据分区
    sda6  (ext4 或空闲)  -- 准备给 Ubuntu 根目录
    sda7  (swap 或空闲)  -- 准备给 swap
    sda8  (ext4 或空闲)  -- 准备给 /home
    
  • 手动挂载操作(务必按顺序):
    1. 选中 sda6Enter → 选择 Use as Ext4 → 挂载点输入 /勾选格式化(确认数据已备份)。
    2. 选中 sda7Enter → 选择 Use as swap
    3. 选中 sda8Enter → 选择 Use as Ext4 → 挂载点输入 /home → 勾选格式化。
    4. 选中 sda1(Windows EFI 分区)→ 确保其挂载点为 /boot/efi(若未自动分配,手动指定为 “EFI System Partition”,挂载点 /boot/efi不要格式化)。
  • 引导器安装设备:界面底部找到 “Boot loader installation device”,务必保持为 /dev/sda(整个磁盘),不要选成 /dev/sda6 等分区。
  • 核对挂载方案无误后,选 Done → 确认警告 Continue

⚠️ 可能遇到的困难:存储配置界面看不到硬盘 /dev/sda 或一直转圈 → 参见 二、困难 3
💡 若需在 TTY2 中手动诊断,可先跳到 四、TTY2 诊断命令速查表

  • 当出现 “Popular snaps” 界面时,直接按 Tab 键移动到 Done,回车跳过(避免网络重试卡死)。

1.6 安装过程与 GRUB 报错的处理

  • 系统文件复制完成后,在最后一步 installing grub to target device 附近可能弹窗报错,典型信息:

    grub-install: error: failed to register the EFI boot entry: Operation not permitted

  • ❗这是预期行为,系统已经完整写入硬盘。原因:H61 主板固件锁定 NVRAM,导致 efibootmgr 无法写入启动条目,但 GRUB 文件(grubx64.efi 等)已成功复制到 EFI 分区。

  • 操作:直接按 Continue(或回车),然后选择重启。

📌 详细定位方法(TTY2 中抓取日志、确认系统完整性)→ 参见 三、困难 4 的深度定位与解决
🔧 手动添加引导项的三种方案(绕过 NVRAM 限制)→ 见 三、3.3 解决方法

1.7 重启与引导验证

  • 重启后,若直接进入 Windows 或没有 Ubuntu 选项,请进入 BIOS(Del / F2)手动添加引导项(方案详见 三、3.3 方案 C)。
  • F12 查看启动菜单,选择 “Ubuntu” 应能进入 GRUB 并启动系统。

二、遇到的困难及定位方法

困难 1:ACPI BIOS 错误导致硬件探测卡死

  • 现象:启动安装盘后,屏幕停留在 “Loading initial ramdisk” 或黑屏,无法进入安装界面。
  • 定位方法
    • 在 GRUB 编辑界面去掉 quiet 参数,观察卡死前的最后输出,通常显示 ACPI ErrorUnable to enumerate USB device
    • 切换到 TTY2(Ctrl+Alt+F2)查看 dmesg | grep -i acpi
  • 解决方法:添加 acpi=off 内核参数(已在 1.2 节 中包含)。

困难 2:Subiquity 误入自动安装模式

  • 现象:安装程序弹出类似 apply_autoinstall_config 的错误,要求提供配置文件,而不是进入正常交互界面。
  • 定位方法
    • 检查 U 盘根目录是否存在 autoinstall.yamluser-data(某些工具写入时残留)。
    • 在 TTY2 中执行 cat /proc/cmdline 查看是否无意中触发了 autoinstall
  • 解决方法
    • 添加 autoinstall=off 参数(已在 1.2 节 中包含)。
    • 或者手动删除 U 盘中的自动安装配置文件。

困难 3:磁盘分区界面卡住,无法显示硬盘

  • 现象:进入存储配置时,只有 U 盘(/dev/sdb)而没有 sda,或者一直转圈。
  • 定位方法
    • 切换到 TTY2(Ctrl+Alt+F2),执行 lsblk 查看磁盘是否被识别。
    • 查看内核日志:dmesg | grep -i "ata\|scsi\|sda"
    • 参考 四、TTY2 诊断命令速查表 中的其他命令。
  • 解决方法
    • 添加 nodmraid 参数(已在 1.2 节 中包含)。
    • 拔掉所有其他 USB 存储设备(除键盘和安装 U 盘外)。
    • 若仍无效,在 TTY2 中执行 sudo sgdisk --zap-all /dev/sda(⚠️ 危险,会清空整个硬盘,仅当确定数据可丢时使用)。

困难 4:grub-install 报错 failed to register EFI boot entry: Operation not permitted

  • 现象:安装进度走到 90%+,弹出红框错误,但文件复制已完成。
  • 结论:系统已装完,仅缺少 UEFI 启动条目。
  • 详细定位与解决方法 → 见 三、困难 4 的深度定位与解决(包含 TTY2 日志抓取、确认系统完整性、手动添加引导项三种方案)。

三、困难 4 的深度定位与解决

3.1 进入 TTY2 抓取日志

  1. 在错误弹窗界面,按 Ctrl+Alt+F2(或 F3~F6)切换到字符终端。
  2. 登录:用户名 ubuntu,密码为空(直接回车)。
  3. 执行以下命令:
    # 查看最近 200 行系统日志中含 grub 的记录
    sudo tail -n 200 /var/log/syslog | grep -i grub
    # 专门搜索 failed/error 关键词
    sudo grep -i "failed\|error\|operation not permitted" /var/log/syslog
    
    • 典型输出:grub-install: error: failed to register the EFI boot entry: Operation not permitted

3.2 确认系统是否已经装完

lsblk                       # 确认 sda6、sda1 等设备
sudo mount /dev/sda6 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
ls -l /mnt/boot/efi/EFI/ubuntu/
  • 若看到 grubx64.efishimx64.efi 等文件 → 系统已完整安装,只是缺少 UEFI 启动条目。

3.3 解决方法(手动添加引导项)

方案 A:在安装环境 TTY2 中直接添加(推荐)

sudo mount /dev/sda1 /boot/efi   # 如果尚未挂载
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --no-nvram --recheck
  • 此命令只复制文件并生成 grub.cfg,不尝试写入 NVRAM。重启后主板需能自动检测或手动添加。

方案 B:使用 efibootmgr(如果主板允许部分写入)

sudo efibootmgr --create --disk /dev/sda --part 1 --loader /EFI/ubuntu/grubx64.efi --label "Ubuntu"
  • 若仍然报 operation not permitted,则走方案 C。

方案 C:重启后进入 BIOS 手动添加引导路径(最可靠)

  1. 重启系统(在错误弹窗按 Continue 或强制重启)。
  2. 开机按 Del / F2 进入 BIOS Setup。
  3. 找到 BootAdd New Boot Option(或类似名称)。
    • 选择 EFI 分区(通常对应 sda1)。
    • 文件路径填写:\EFI\ubuntu\grubx64.efi
    • 命名:Ubuntu
    • 保存并退出,调整启动顺序将该条目置顶。

3.4 验证引导是否成功

  • 重启后按 F12,在启动菜单中应能看到 “Ubuntu” 选项。选择它,若能进入 GRUB 菜单或直接启动 Ubuntu Server,则成功。

四、TTY2 诊断命令速查表

目的 命令
查看全部系统日志 cat /var/log/syslog
搜索错误 grep -i "failed|error" /var/log/syslog
搜索 GRUB 相关 grep -i grub /var/log/syslog
查看当前内核参数 cat /proc/cmdline
查看磁盘分区 lsblk -f
查看 EFI 分区挂载情况 mount | grep efi
手动尝试 GRUB 安装(干跑) sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --no-nvram --recheck
查看 NVRAM 现有启动项 sudo efibootmgr -v
清空 NVRAM 中多余启动项(谨慎) sudo efibootmgr -b XXXX -B
检查文件系统完整性(EFI 分区) sudo fsck.vfat -t -a /dev/sda1

五、备用方法与延伸方案

5.1 当 acpi=off 导致关机异常时的替代参数

安装进入系统后,将 /etc/default/grub 中的 acpi=off 替换为更温和的参数:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi=ht irqpoll"
sudo update-grub

如果仍有问题,可尝试:

  • pci=noacpi
  • acpi=noirq

5.2 完全清除自动安装配置(防止再次被触发)

  • 在 U 盘根目录查找并删除 autoinstall.yamluser-datameta-data
  • 或者在 GRUB 参数中添加 autoinstall=false(注意有些版本识别 autoinstall=off)。

5.3 换用兼容性更好的发行版/版本

  • Ubuntu 18.04.6 Server(使用传统 debian-installer,而非 Subiquity)
  • Debian 11/12(稳定且对老硬件友好)
  • 在 Legacy BIOS(CSM)模式下安装(需将硬盘转换为 MBR 分区表,会清除数据)

5.4 如果 GRUB 无论如何都无法引导

  • 使用 rEFInd 作为引导管理器:
    sudo apt install refind
    sudo refind-install
    
    rEFInd 会自动扫描 EFI 分区中的可引导文件,不依赖 NVRAM 条目。
  • 或者在 Windows 中使用 EasyUEFIbcdedit 添加 Ubuntu 引导:
    bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
    

5.5 彻底放弃 UEFI,改用 Legacy BIOS 模式

  • BIOS 中开启 CSM,禁用 Secure Boot。
  • 使用 MBR 分区表重新分区(会丢失所有数据,仅适用于新硬盘或全盘重装)。
  • 安装时 grub-install 会写入 MBR,不涉及 NVRAM。

六、安装后必须做的修复与优化

  1. 修复 ACPI 关机问题(因为安装时用了 acpi=off

    sudo nano /etc/default/grub
    # 将 GRUB_CMDLINE_LINUX_DEFAULT 中的 acpi=off 改为 acpi=ht irqpoll
    sudo update-grub
    
  2. 更新系统并安装必要驱动

    sudo apt update && sudo apt upgrade -y
    sudo ubuntu-drivers autoinstall   # 如有独显
    
  3. 调整双系统启动顺序

    • 若开机直接进 Windows,进 BIOS 将 ubuntuUbuntu 启动项调到第一位。
    • 或使用 efibootmgr 调整:sudo efibootmgr -o XXXX,YYYY(XXXX 为 Ubuntu 的 BootOrder 编号)。
  4. 禁用 Snap 及其后台更新(可选)

    sudo systemctl mask snapd
    
  5. 备份 EFI 分区和 GRUB 配置

    sudo tar -czf ubuntu_efi_backup.tar.gz /boot/efi/EFI/ubuntu/
    sudo cp /etc/default/grub ~/grub_backup
    

七、最终结论

  • 安装过程中出现 grub-install 报错 operation not permittedH61 主板 UEFI 固件保护 NVRAM 导致的,不影响系统完整性
  • 手动添加 UEFI 引导项(BIOS 中添加路径)即可完美解决,双系统正常运行。
  • 核心经验:针对老硬件,使用 acpi=off nodmraid autoinstall=off 三个参数组合拳,可绕过 ACPI、RAID、自动安装三大障碍。
  • 安装完成后务必修复 ACPI 参数,否则关机无法断电。

现在您已经拥有一套稳定运行的 Ubuntu Server + Windows 10 双系统。🎉