自行编译组件并替换

CasaOS官方并未支持RISC-V架构,上一节链接中的组件为RVspace社区开发者编译提供,本节将介绍如何通过源码编译并替换组件。
提示: 可参考官方文档进行环境配置(主要为go及其相关组件)。
  1. 执行以下命令,下载源码:
    git clone https://github.com/IceWhaleTech/CasaOS-Common.git
    git clone https://github.com/IceWhaleTech/CasaOS-CLI.git
    git clone https://github.com/IceWhaleTech/CasaOS-Gateway.git
    git clone https://github.com/IceWhaleTech/CasaOS-MessageBus.git
    git clone https://github.com/IceWhaleTech/CasaOS-UserService.git
    git clone https://github.com/IceWhaleTech/CasaOS-LocalStorage.git
    git clone https://github.com/IceWhaleTech/CasaOS-AppManagement.git
    git clone https://github.com/IceWhaleTech/CasaOS.git
  2. 源码修改。要编译CasaOS相关组件,需要修改其配置文件,主要修改组件源码路径下的.goreleaser.debug.yaml以及.goreleaser.yaml两个文件,如下图所示:
    1. 配置文件

    以下为修改配置文件的一个示例:

    以CasaOS-AppManagement为例,修改其发布的配置文件.goreleaser.yaml需要在builds字段新增编译RISC-V架构的配置,如下图所示:
    2. 新增配置
    注: 上图中注释了upx相关的命令,主要因为upx不支持压缩RISC-V架构的二进制文件,执行时会出现以下报错信息:
    ⨯ release failed after 35s 
    error=post hook failed: shell: 'upx --best --lzma -v --no-progress /coding/nas/CasaOS-create/CasaOS-LocalStorage/dist/casaos-local-storage-riscv64_linux_riscv64/build/sysroot/usr/bin/casaos-local-storage': exit status 1: upx: /coding/nas/CasaOS-create/CasaOS-LocalStorage/dist/casaos-local-storage-riscv64_linux_riscv64/build/sysroot/usr/bin/casaos-local-storage: UnknownExecutableFormatException
    此外,各组件编译时还会出现其他错误,如:
    • CasaOS出现如下报错:
      ⨯ release failed after 24s 
      error=template: failed to apply "-X github.com/IceWhaleTech/CasaOS/drivers/google_drive.client_id={{.Env.GoogleID}}":     map has no entry for key "GoogleID"
      需注释CasaOS下的配置文件中的对应项,如下图所示:
      3. 注释配置文件
    • CasaOS-AppManagement出现如下报错:
      ⨯ release failed after 54s 
      error=hook failed: shell: 'go test -race -v ./... -timeout 30m': exit status 1: ? github.com/IceWhaleTech/CasaOS-AppManagement    [no test files]
      需注释对应的- go test -race -v ./... -timeout 30m,如下图:
      4. 注释配置
  3. 修改完各组件的配置文件后,执行以下编译命令:
    $ goreleaser release --clean –snapshot
  4. 配置文件中定义的所有架构的安装文件会在dist/路径下生成:
    5. dist/路径
    注:.goreleaser.yamlarchives字段配置了migration-tool相关id/builds字段的组件还会生成对应的migration-tool文件,如下图:
    6. builds字段
    7. migration-tool文件

    由上图可见:CasaOS组件的配置文件中配置了migration-tool,而编译生成的文件也包含了migration-tool组件。

  5. 除自行编译的组件以外,还有linux-all-appstore-v0.0.1-riscv64.tar.gz以及linux-all-casaos-v0.4.6.tar.gz两个文件:
    • linux-all-appstore-v0.0.1-riscv64.tar.gz是基于Docker的第三方应用的配置,由于大多不支持RISC-V,该文件可继续采用社区开发者分享的版本或参考开发者版本对官方版本进行修改。
    • linux-all-casaos-v0.4.6.tar.gz中包含的是CasaOS的网页UI素材,可点击该链接访问官方的一键安装脚本,获取最新版本的下载链接。
      8. 最新版本

      上图可见最新版本为v0.4.8,点击该链接可下载。

  6. 下载完成后,替换通过预编译二进制文件安装中下载的CasaOS组件:
    • 将下载的linux-all-casaos-v0.4.8.tar.gz替换掉下图中linux-all-casaos-v0.4.6.tar.gz文件。
    • dist/路径中生成的对应文件替换下图各组件的安装文件。
      9. 安装文件
  7. 替换完成后,执行以下命令进行安装:
    $ sudo ./install.sh
    安装成功后会显示下图:
    10. 安装成功

    可见版本已从v0.4.6升级至v0.4.8。