银河麒麟V10 在飞腾FT1500A CPU下PE识别4核,正常桌面识别1核修复方法
2026-01-13 09:50:53    2    0    0
maker


背景问题

  • FT1500A(ARM64)

  • 麒麟 Kylin Desktop V10(2020)

  • Live 启动 4 核

  • 安装后(GRUB 启动)只剩 1 核

  • 内核相同、无参数限制
    👉 根因:GRUB 启动时使用的 DTB 与 Live 启动不一致


方案一:让 GRUB 使用和 Live 启动完全一致的 DTB(推荐)

一、方案原理

ARM 多核是否启用,取决于 DTB
Live 启动 → 正确 DTB
GRUB 启动 → 错误 / 缺失 DTB
手动指定 GRUB 使用 Live 的 DTB


二、实施前确认(非常重要)

1️⃣ Live 环境确认是 4 核

 lscpu

或:

 ls /proc/device-tree/cpus

应看到:

cpu@0
cpu@1
cpu@2
cpu@3

2️⃣ Live 环境获取当前使用的 DTB

 dmesg | grep -i dtb

常见输出示例:

OF: fdt: Machine model: Phytium FT1500A
OF: fdt: Using dtb at 0x...

或:

ls /proc/device-tree/model

三、操作步骤(核心)

步骤 1:从 Live 系统拷贝正确 DTB

假设 DTB 位于:

 /boot/ft1500a-live.dtb

将其复制到已安装系统的 /boot

mount /dev/sdXn /mnt        # 挂载已安装系统根分区
cp /boot/*.dtb /mnt/boot/
sync

⚠️ 确保拷贝的是 Live 启动时正在使用的 DTB


步骤 2:修改 GRUB 配置,显式指定 DTB

编辑 GRUB 配置文件(具体位置因发行版不同):

vi /boot/grub/grub.cfg

找到对应的启动项:

menuentry 'Kylin Desktop V10' {
    linux /boot/Image root=UUID=xxxx ro quiet
}

修改为:

menuentry 'Kylin Desktop V10' {
    linux /boot/Image root=UUID=xxxx ro quiet
    devicetree /boot/ft1500a-live.dtb
}

步骤 3:重启并验证

reboot

启动后验证:

lscpu
ls /proc/device-tree/cpus

应恢复:

cpu@0 cpu@1 cpu@2 cpu@3

四、注意事项

  • 必须保证 DTB 与主板/SoC 完全匹配

  • ❗ GRUB 更新可能会覆盖 grub.cfg

  • ✔ 推荐将 DTB 固化到 GRUB 模板中(如 /etc/grub.d/40_custom


方案二:跳过 GRUB,直接像 Live 一样启动(成功率最高)

一、方案原理

Live 启动路径正确
GRUB 启动路径有问题
彻底绕过 GRUB

启动链变为:

U-Boot → Linux Image + DTB

二、适用场景

  • 开发商不愿/不能修改 GRUB

  • 现场交付、追求稳定

  • 不要求多系统引导


三、实施方式一:U-Boot 直接启动内核(推荐)

步骤 1:确认内核与 DTB

在 Live 系统中确认:

ls /boot/Image
ls /boot/*.dtb

步骤 2:拷贝内核和 DTB 到硬盘

mount /dev/sdXn /mnt
cp /boot/Image /mnt/boot/
cp /boot/*.dtb /mnt/boot/
sync

步骤 3:修改 U-Boot 启动参数

进入 U-Boot 控制台:

setenv bootargs root=/dev/sdXn rw console=ttyAMA0,115200
load mmc 0:1 ${kernel_addr_r} /boot/Image
load mmc 0:1 ${fdt_addr_r} /boot/ft1500a-live.dtb
booti ${kernel_addr_r} - ${fdt_addr_r}
saveenv

U-boot解释:

一、U-Boot 的启动流程

U-Boot 本身就像 可编程 BIOS

  1. 上电 → 执行 U-Boot

  2. U-Boot 按顺序执行 启动命令(bootcmd)

  3. bootcmd 可以选择:

    • 从硬盘启动

    • 从 U 盘启动

    • 从网络启动(PXE)

二、修改 U-Boot 的参数只是“默认启动设置”

  • 修改 bootargs → 影响 Linux 内核启动参数(比如 root、console、DTB)

  • 修改 bootcmd → 影响 默认启动路径(硬盘、U盘)

  • 执行 saveenv → 把这些修改写入主板闪存

关键点:

  • 只要你不改 bootcmd 指向 U 盘 → U-Boot 默认会先从硬盘启动

  • 但 U-Boot 本身依然可以手动选择从 U 盘启动

FT1500A 永久 4 核 U-Boot 启动模板:

# ------------------------------
# 1️⃣ 进入 U-Boot 控制台
#    通常开机按任意键(串口或显示器控制台)
# ------------------------------

# ------------------------------
# 2️⃣ 设置 Linux 内核参数(bootargs)
#    root=/dev/mmcblk0p2  <-- 已安装系统根分区
#    console=ttyAMA0,115200 <-- 串口
#    dtb=正确的 DTB 文件
# ------------------------------
setenv bootargs "root=/dev/mmcblk0p2 rw console=ttyAMA0,115200"

# ------------------------------
# 3️⃣ 设置默认启动命令(bootcmd)
#    这里加载硬盘内核 + Live DTB(保证 4 核)
# ------------------------------
setenv bootcmd 'mmc dev 0; load mmc 0:1 ${kernel_addr_r} /boot/Image; load mmc 0:1 ${fdt_addr_r} /boot/ft1500a-live.dtb; booti ${kernel_addr_r} - ${fdt_addr_r}'

# ------------------------------
# 4️⃣ 保存修改到板子闪存(永久生效)
# ------------------------------
saveenv

# ------------------------------
# ✅ 5️⃣ 解释
# - 每次开机默认从硬盘启动 4 核
# - Linux 内核使用 Live DTB,保证 SMP
# - U 盘启动仍然可用,方法如下:
#   进入 U-Boot 手动执行:
#       usb start
#       load usb 0:1 ${kernel_addr_r} /boot/Image
#       load usb 0:1 ${fdt_addr_r} /boot/ft1500a-live.dtb
#       booti ${kernel_addr_r} - ${fdt_addr_r}
# ------------------------------

步骤 4:重启验证

reboot

验证 CPU:

lscpu






Pre: 移动硬盘或者U盘 无法安全移除解决方法

Next: Chrome 谷歌官方浏览器历史版本离线包下载地址

2
Table of content