SpacemiT K1 安装指南
deepin-ports SIG
8/3/2025

支持设备

  • MUSE Box
  • MUSE Book
  • MUSE Pi
  • MUSE Pi Pro
  • DC ROMA 2
  • LicheePi 3A

下载并解压镜像

镜像列表中下载最新的 .tar.xz 格式的镜像包至本地,随后使用以下命令解压镜像与校验码至当前文件夹:

tar -xvf <你下载的镜像名称>.tar.xz

解压得到

  • deepin-k1-riscv64-25-desktop-installer.sha256sum sha256 校验和
  • deepin-k1-riscv64-25-desktop-installer.md5sum md5 校验和
  • deepin-k1-riscv64-25-desktop-installer.boot.ext4 系统启动目录分区镜像
  • deepin-k1-riscv64-25-desktop-installer.root.ext4 系统根目录分区镜像

校验镜像:

$ cat deepin-k1-riscv64-25-desktop-installer.sha256sum
f0824f78ff8eda3cd64fbc39dffff24ccaf943c6a8a32a6586b286c8670f7519  deepin-k1-riscv64-25-desktop-installer.boot.ext4
8db2549a555388e2cca75a58a3e93fb8d70879a00086f10c5980b20748fbe8e5  deepin-k1-riscv64-25-desktop-installer.root.ext4

$ sha256sum deepin-k1-riscv64-25-desktop-installer.boot.ext4
f0824f78ff8eda3cd64fbc39dffff24ccaf943c6a8a32a6586b286c8670f7519  deepin-k1-riscv64-25-desktop-installer.boot.ext4

$ sha256sum deepin-k1-riscv64-25-desktop-installer.root.ext4
8db2549a555388e2cca75a58a3e93fb8d70879a00086f10c5980b20748fbe8e5  deepin-k1-riscv64-25-desktop-installer.root.ext4

刷写 bootloader

准备 bootloader 文件

前往deepin-riscv-kernel,进入最新的 build all 项,在 Artifacts 中选择 uboot-k1-spacemit 下载并解压。

它的目录结构如图所示:

.
├── fw_dynamic.itb    # 写入 opensbi 分区
└── k1
    ├── bootinfo_emmc.bin    # 写入 bootinfo 分区
    ├── bootinfo_sd.bin    # 写入 bootinfo 分区
    ├── bootinfo_spinand.bin    # 写入 bootinfo 分区
    ├── bootinfo_spinor.bin    # 写入 bootinfo 分区
    ├── FSBL.bin    # 写入 fsbl 分区
    ├── u-boot-env-default.bin    # 写入 env 分区
    └── u-boot.itb    # 写入 uboot 分区

进入刷写模式

在设备未通电时按下 FDL 按钮,并将 USB 线将设备连接至电脑,然后松开按钮,具体接口位置请参阅各设备文档。 此时在电脑上运行 fastboot devices 将显示位于 fastboot 状态的设备。

执行以下操作以将设备从 usb 启动到 uboot 的写入模式:

fastboot stage FSBL.bin    # 加载第一阶段 bootloader
fastboot continue
sleep 1
fastboot stage u-boot.itb    # 加载第二阶段 bootloader (即 u-boot)
fastboot continue

此时在电脑上运行 fastboot devices 将显示位于 fastboot 状态的设备。

创建分区表 (独立 bootloader 分区)

若设备存在 spi 存储设备,可将 bootloader 单独写在 spi 存储中。

创建一个 partitions_mtd.json 文件:

{
  "version": "1.0",
  "format": "mtd",
  "partitions": [
    {
      "name": "bootinfo",
      "offset": "0",
      "size": "128K",
      "image": "factory/bootinfo_spinor.bin"
    },
    {
      "name": "fsbl",
      "offset": "128K",
      "size": "256K",
      "image": "factory/FSBL.bin"
    },
    {
      "name": "env",
      "offset": "384K",
      "size": "64K",
      "image": "env.bin"
    },
    {
      "name": "opensbi",
      "offset": "448K",
      "size": "192K",
      "image": "fw_dynamic.itb"
    },
    {
      "name": "uboot",
      "offset": "640K",
      "size": "-",
      "image": "u-boot.itb"
    }
  ]
}

创建一个 partitions_gpt.json 文件:

{
    "version": "1.0",
    "format": "gpt",
    "partitions": [
        {
            "name": "bootfs",
            "offset": "4M",
            "size": "256M",
            "image": "bootfs.img",
            "compress": "gzip-5"
        },
        {
            "name": "rootfs",
            "offset": "260M",
            "size": "-",
            "image": "rootfs.ext4",
            "compress": "gzip-5"
        }
    ]
}

执行如下命令以设置分区:

fastboot flash mtd partitions_mtd.json
fastboot flash gpt partitions_gpt.json

创建分区表 (合并所有分区)

创建一个 partitions.json 文件:

{
    "version": "1.0",
    "format": "gpt",
    "partitions": [
        {
            "name": "bootinfo",
            "hidden": true,
            "offset": "0K",
            "size": "512",
            "image": "factory/bootinfo_sd.bin",
            "holes": "{\"(80;512)\"}"
        },
        {
            "name": "fsbl",
            "offset": "128K",
            "size": "256K",
            "image": "factory/FSBL.bin"
        },
        {
            "name": "env",
            "offset":"384K",
            "size": "64K",
            "image": "env.bin"
        },
        {
            "name": "opensbi",
            "size": "384K",
            "image": "fw_dynamic.itb"
        },
        {
            "name": "uboot",
            "size": "2M",
            "image": "u-boot.itb"
        },
        {
            "name": "bootfs",
            "offset": "4M",
            "size": "256M",
            "image": "bootfs.img",
            "compress": "gzip-5"
        },
        {
            "name": "rootfs",
            "offset": "260M",
            "size": "-",
            "image": "rootfs.ext4",
            "compress": "gzip-5"
        }
    ]
}

执行如下命令以设置分区:

fastboot flash gpt partitions_gpt.json

写入 bootloader

执行如下命令将新的 bootloader 写入到指定分区。

fastboot flash bootinfo bootinfo_spinor.bin    # bootinfo_{spinor,spiand,emmc,sd} 取决于 bootloader 所在的存储介质
fastboot flash fsbl FSBL.bin    # 写入第一阶段 bootloader
fastboot flash env u-boot-env-default.bin    # 写入默认环境变量
fastboot flash opensbi fw_dynamic.itb    # 写入 opensbi
fastboot flash uboot u-boot.itb    # 写入 u-boot

此时设备已刷写完 bootloader,插拔电源重启即可进入新的 bootloader。

刷写操作系统

先参考上一节的 进入刷写模式 将设备设置为刷写状态。

使用如下命令将镜像写入 bootfsrootfs 分区:

fastboot flash bootfs deepin-k1-riscv64-25-desktop-installer.boot.ext4
fastboot flash rootfs deepin-k1-riscv64-25-desktop-installer.root.ext4

此时插拔电源即可使设备启动到系统。

注意事项

  • 镜像启动时间可能较长,如需查看串口,请参见对应设备的测试报告