谢谢您的订阅!
当新的内容发布后您将开始接收邮件。您也可以点击邮件内的链接随时取消订阅。关闭Close

  1. 博客
  2. 文章

liam zheng
6 July 2020

为Nitrogen i.MX6开发板构建一个Ubuntu Core 18的镜像


本篇博文由Taiten Peng编写

您有i.MX6硬件吗?并且想知道如何在其上面运行Ubuntu Core?在这篇博客中,我们将为一款基于i.MX6的边缘设备构建一个带有Ubuntu通用内核的Ubuntu Core 18镜像。

上游对边缘设备中Nitrogen6X硬件支持很友好,并且内核补丁已经合并到Ubuntu 4.15 LTS内核中。这使得你可以创建一个Ubuntu Core 18的镜像,和体验Canonical官方的内核。

准备工作

参考硬件:2G内存版本Nitrogen6X

工具——构建环境

  • 主机OS:Ubuntu 18.04 LTS 64位
  • 工具:ubuntu-image, snapcraft

通过以下的命令安装ubuntu-image和snapcraft。 

sudo snap install --classic ubuntu-image sudo 
snap install --classic snapcraft

基础理解概览

为了构建一个Ubuntu Core镜像,需要准备一些例如gadget snap或者已签名的型号申明文件的基础组件。内核snap也是需要,从技术角度来说,在Nitrogen6X平台上没有必要一定是自定义内核snap。

为i.MX6构建一个自定义Ubuntu Core镜像

用Nitrogen6X硬件为例。

构建一个gadget snap

带有上游u-boot源代码的Nitrogen6q2g板子的示例gadget snap可参考

创建一个型号申明和签名

Example model json file
{
  "type": "model",
  "authority-id": "YOUR_ID",
  "brand-id": "YOUR_ID",
  "series": "16",
  "base": "core18",
  "model": "nitrogen6x",
  "architecture": "armhf",
  "gadget": "nitrogen6",
  "kernel": "pc-kernel=18",
  "timestamp": "2019-06-21T08:56:10+00:00"
}

更多关于创建型号申明文件和签名的内容可阅读此教程。

构建一个Ubuntu Core 18镜像

sudo ubuntu-image --snap YOUR_GADGET_SNAP.snap -o nitrogen6x.img YOUR_MODEL_ASSERTION.model

对应的命令如下:

ubuntu-image --snap nitrogen6x-gadget-snap/nitrogen6_18-0.1_armhf.snap -o nitrogen6x.img nitrogen6x.model

安装和启动

刷写bootloader

Nitrogen6X不会从SD卡或者USB启动booloader,您需要执行下面步骤来更新SPI Flash。

开机,然后使用下面命令进入u-boot:

fatload mmc 0:1 0x13000000 u-boot.imx;sf probe;sf erase 0 0xc2000;sf write 0x13000000 0x400 ${filesize}

更新u-boot环境变量……

此脚本从gadget snap中的uboot.env文件加载了一个所需的环境设置来引导启动Ubuntu Core。

在重置后,系统将会启动并进入Ubuntu Core 18。

初始化启动控台需要您创建一个网络和您的Ubuntu账号。请注意,您需要创建一个Ubuntu SSO账号和上传您的SSH公匙以确保能访问Ubuntu Core设备。

进阶:构建一个自定义Ubuntu内核

需要注意的是,在构建镜像时使用自定义内核。内核snap将不能收到snap商店的任何更新。

如您想要在Ubuntu内核上尝试一些实验性的内核补丁。(例如为其他的i.MX6板子添加支持)

获取源代码:https://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/

您也许需要添加下面的补丁来整合额外的内核模块到内核snap的initrd.img文件中。

diff --git a/snapcraft.yaml b/snapcraft.yaml
index 2452c4031066..e4a94c3059fd 100644
--- a/snapcraft.yaml
+++ b/snapcraft.yaml
@@ -17,6 +17,24 @@ parts:
     kconfigflavour: generic
     kconfigs:
       - CONFIG_DEBUG_INFO=n
+    kernel-initrd-modules:
+      - usb-storage
+      - nls_iso8859-1

使用下面命令构建内核snap:

snapcraft --target-arch=armhf

下一步


查看更多内容

Canonical Managed Kubeflow AI 运维平台现已登陆 Microsoft Azure Marketplace

Ubuntu 发行商 Canonical 近日宣布,其 Managed Kubeflow 服务已在 Microsoft Azure Marketplace 正式上线,实现全面商用(GA)。该解决方案允许 AI 团队在自有云租户环境内获得一个完全托管、可直接投入生产的 MLOps 平台。 上游 Kubeflow...

全新工具 Workshop 上线:一条命令即可在 Ubuntu 中启动沙箱开发环境

开发者如今可在智能体 AI 等前沿工作流程中,获得环境统一、可复现的开发体验 Canonical 正式发布 Workshop,该解决方案可通过单条命令快速启动开发环境。只需配置一次,此开发环境即可在多台设备上复现使用。这意味着各类开发设备与部署流水线可保持统一工作流程,并可大幅减少管理依赖关系所花费的时间。...

Canonical 技术案例 – 彻底解决 12 年老旧代码中的 Linux 性能漏洞

部分支持案例处理起来十分简单。另一些案例则要深入老旧遗留代码,一处逻辑缺陷就能悄无声息让常规指令引发严重性能故障。本系列将介绍 Canonical 技术支持与持续工程团队如何协作,排查、修复并向上游提交仅靠常规故障排查无法解决的疑难问题。在第二篇帖子中,libnss-db 中一处存在 12 年之久的漏洞导致 getent...

借助全新 NVIDIA OpenShell Snap,在 Ubuntu 上安全管控 AI 智能体工作流

NVIDIA 发布经过验证的 OpenShell Snap 软件包,用于在 Ubuntu 上安全管控 AI 智能体工作流 Canonical 在 COMPUTEX 宣布与 NVIDIA 达成全新合作,将面向智能体的 NVIDIA OpenShell 运行时直接集成至 Ubuntu 生态系统。Canonical 将 OpenShell 封装为 Snap...