linux内核移植imx8,iMX8模块Ubuntu移植

linux内核移植imx8,iMX8模块Ubuntu移植ByToradex 胡珊逢本文将介绍如何将 Ubuntu 系统移植到 ToradexApali 计算机模块上 该方法也同样使用与其他使用 eMMC 作为存储介质的模块 例如 Colibri Verdin 模块 撰写文章时 Toradex 发布的最新 LinuxBSP 是 5 2 0 Ubuntu 为 20 04LTS 和 20 10 为了获得更好的支持 建议使用新的 LinuxB

By Toradex胡珊逢

本文将介绍如何将 Ubuntu 系统移植到 Toradex Apalis iMX8 计算机模块上。该方法也同样使用与其他使用 eMMC 作为存储介质的模块,例如 Colibri、Verdin 模块。撰写文章时 Toradex 发布的最新 Linux BSP 是 5.2.0,Ubuntu 为 20.04 LTS 和 20.10。为了获得更好的支持,建议使用新的Linux BSP。这里涉及的 Ubuntu 分为两类,Ubuntu 20.04 Base 是不带任何图形界面的 console 镜像。Ubuntu 20.10 desktop 使用了 Ubuntu 自带的桌面环境,如Gnome。

首先在电脑上安装 qemu-user-static 软件仿真 arm64 运行环境。

$ sudo apt install qemu-user-static

Ubuntu 20.04 Base

解压文件。

$ tar vxf Apalis-iMX8_Reference-Minimal-Image-Tezi_5.2.0+build.7.tar

提取 Linux BSP 中的文件系统到 rootfs 目录,里面包含一些模块的驱动和固件,稍后需要用到。

$ mkdir rootfs

$ cd Apalis-iMX8_Reference-Minimal-Image-Tezi_5.2.0+build.7

$ sudo tar vxf Reference-Minimal-Image-apalis-imx8.tar.xz -C ../rootfs

下载 arm64 格式的 Ubuntu base 20.04.2 文件系统。

解压 Ubuntu 文件系统到ubuntu 文件夹中。

$ mkdir ubuntu

$ sudo tar vxf ubuntu-base-20.04.2-base-arm64.tar.gz -C ubuntu/

执行下面脚本 ch-mount.sh,切换到 Ubuntu 目录中运行并安装软件。

$ chmod +x ./ch-mount.sh

$ sudo ./ch-mount.sh -m ubuntu/

设置 DNS 服务器,在线安装一些基本组件。这里页可以自行添加所需的其他软件。

# echo nameserver 8.8.8.8 > /etc/resolv.conf

# apt update

# apt upgrade

# apt install language-pack-en-base sudo ssh net-tools \

network-manager netplan.io iputils-ping rsyslog \

bash-completion htop resolvconf dialog \

vim nano alsa-utils gcc \

less resolvconf autoconf autopoint libtool \

bison flex libglib2.0-dev libpango1.0-dev libatk1.0-dev kmod pciutils -y

添加用户,如用户名ubuntu,并为ubuntu 和 root 用户设置密码。

# useradd -s ‘/bin/bash’ -m -G adm,sudo ubuntu

# passwd ubuntu

# passwd root

设置主机名称。

# echo ‘apalis-imx8’ > /etc/hostname

将ttymxc0 用于默认的调试串口。

# systemctl enable

清除缓存。

# apt autoclean

# exit

卸载 ubuntu 目录。

$ sudo ./ch-mount.sh -u ubuntu/

这里采用netplan 作为有线网络管理工具。将相应的 yaml 配置文件复制到 ubuntu/etc/netplan 目录。这里提供两个配置文件供参考,分别为动态和静态IP 设置。

$ sudo cp 00-installer-config.yaml ubuntu/etc/netplan/

将 Linux BSP 中的内核驱动、固件和 fstab 复制到 Ubuntu 文件系统中。

$ sudo mkdir -p ubuntu/lib/modules

$ sudo cp -Ppr rootfs/lib/modules/* ubuntu/lib/modules/

$ sudo cp -Ppr rootfs/lib/firmware/* ubuntu/lib/firmware/

$ sudo rm ubuntu/etc/fstab

$ sudo cp rootfs/etc/fstab ubuntu/etc/

重新打包 Ubuntu 文件系统,用于Toradex Easy Installer 安装。

$ cd ubuntu/

$ sudo tar cvf ../ubuntu.tar .

$ xz -T0 ubuntu.tar

将生成的 ubuntu.tar.xz 复制到之前解压的 Apalis-iMX8_Reference-Minimal-Image-Tezi_5.2.0+build.7 目录中

$ cp ubuntu.tar.xz Apalis-iMX8_Reference-Minimal-Image-Tezi_5.2.0+build.7

修改 image.json 文件。

58ed5328aa2a3fcc5370ecbaa763a10d.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

filename 为生成的 ubuntu.tar.xz。

uncompressed_size 为 ubuntu 目录大小,单位 MB,可以使用下面命令查看。

$ sudo du -sm ubuntu

至此,可以将 Apalis-iMX8_Reference-Minimal-Image-Tezi_5.2.0+build.7 复制到 U 盘进行安装。

Ubuntu 20.10 desktop

解压文件。

$ tar vxf Apalis-iMX8_Reference-Minimal-Image-Tezi_5.2.0+build.7.tar

提取 Linux BSP 中的文件系统到 rootfs 目录,里面包含一些模块的驱动和固件,稍后需要用到。

$ mkdir rootfs

$ cd Apalis-iMX8_Reference-Minimal-Image-Tezi_5.2.0+build.7

$ sudo tar vxf Reference-Minimal-Image-apalis-imx8.tar.xz -C ../rootfs

这里使用 Ubuntu 首次针对 raspi Arm64 处理器发布的 Ubuntu 20.10 桌面系统。下载镜像文件并解压。

$ wget https://cdimage.ubuntu.com/releases/20.10/release/ubuntu-20.10-preinstalled-desktop-arm64+raspi.img.xz

$ xz -d ubuntu-20.10-preinstalled-desktop-arm64+raspi.img.xz

ubuntu-20.10-preinstalled-desktop-arm64+raspi.img 原本是为 raspi 直接烧录 SD 使用,其中包括了 u-boot、Linux kernel、device tree 等文件,但我们只需要使用其文件系统即可。使用 fdisk 命令查看 img 文件中文件系统位置。

$ fdisk -l ubuntu-20.10-preinstalled-desktop-arm64+raspi.img

Disk ubuntu-20.10-preinstalled-desktop-arm64+raspi.img: 8.15 GiB, bytes, sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0xb6b5c3c7

Device                                             Boot  Start      End  Sectors  Size Id Type

ubuntu-20.10-preinstalled-desktop-arm64+raspi.img1 *      2048        256M  c W95 FAT32 (LBA)

ubuntu-20.10-preinstalled-desktop-arm64+raspi.img2        7.9G 83 Linux

img2 是 Ubuntu 文件系统,其起始偏移地址为 ,注意这里的单位是 sector。换算为字节是 * 512 = 。使用 mount 命令挂载时 offset=

$ mkdir ubuntu

$ sudo mount -o loop,offset= ubuntu-20.10-preinstalled-desktop-arm64+raspi.img ubuntu/

删除以下文件。

$ cd ubuntu

$ sudo rm -rf boot

$ sudo rm etc/fstab

$ sudo rm -rf lib/modules/*

$ cd ..

执行下面脚本 ch-mount.sh,切换到 ubuntu 目录中运行。

$ chmod +x ./ch-mount.sh

$ sudo ./ch-mount.sh -m ubuntu/

将ttymxc0 用于默认的调试串口。

# systemctl enable

删除下面软件。

# apt remove u-boot-rpi flash-kernel

# exit

卸载 ubuntu 目录。

$ sudo ./ch-mount.sh -u ubuntu/

将 Linux BSP 中的内核驱动、固件和 fstab 复制到 Ubuntu 文件系统中。

$ sudo cp -Ppr rootfs/lib/modules/* ubuntu/lib/modules/

$ sudo cp -Ppr rootfs/lib/firmware/* ubuntu/lib/firmware/

$ sudo rm ubuntu/etc/fstab

$ sudo cp rootfs/etc/fstab ubuntu/etc/

注释掉 fstab 中 /dev/boot-part 挂载路径。

$ vi ubuntu/etc/fstab

# stock fstab – you probably want to override this with a machine specific one

/dev/root            /                    auto       noatime               1  1

#/dev/boot-part       /boot                auto       noatime,noauto        0  0

重新打包 Ubuntu 文件系统,用于Toradex Easy Installer 安装。

$ cd ubuntu/

$ sudo tar cvf ../ubuntu-desktop.tar .

$ xz -T0 ubuntu-desktop.tar

将生成的 ubuntu-desktop.tar 复制到之前解压的 Apalis-iMX8_Reference-Minimal-Image-Tezi_5.2.0+build.7 目录中

$ cp ubuntu-desktop.tar Apalis-iMX8_Reference-Minimal-Image-Tezi_5.2.0+build.7

修改 image.json 文件。

334e3806c6a7a41879e0ab39eeb64b05.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

filename 为生成的 ubuntu-desktop.tar。

uncompressed_size 为 ubuntu 目录大小,单位 MB,可以使用下面命令查看。

$ sudo du -sm ubuntu

至此,可以将 Apalis-iMX8_Reference-Minimal-Image-Tezi_5.2.0+build.7 复制到 U 盘进行安装。在安装完毕后需要连接 HDMI 显示器、键盘和鼠标。首次启动时,Ubuntu 系统会进入用户设置界面,如时区、用户名和密码等配置。期间可能会遇到错误,但可以关闭错误窗口。然后在调试串口中使用刚才设置的用户名和密码登录,运行 sudo reboot  重新启动即可。

abfa0e5c8d2deede676490672345c9c0.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176844.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:54
下一篇 2026年3月26日 下午8:54


相关推荐

  • Android空格符

    Android空格符以下是效果图 nbsp 把中间内容放大 方便对比 以下是中间放大的效果图 nbsp 转自 https blog csdn net wlz287 article details nbsp

    2026年3月19日
    2
  • 孙鑫java视频教程笔记[通俗易懂]

    孙鑫java视频教程笔记[通俗易懂](3)为了防止类或函数被覆盖,可以用final声明。private和static默认为final(6)接口中的数据成员默认为publicstaticfinal。(7)java不允许类的多继承,允许类的单继承和接口的多继承。(9)内部类通过this机制可以随意访问外部类的成员。(10)java.lang包被隐形自动导入,不需要import。(12)string是唯一被重载的对

    2022年5月17日
    52
  • 统信UOS命令大全 麒麟系统命令大全 Linux常用命令操作大全(非常全非常详细) ubuntu命令大全常用操作命令大全

    Linux常用命令大全(非常全!!!)最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解到的命令列举一下,仅供大家参考:系统信息arch显示机器的处理器架构uname-m显示机器的处理器架构uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件-(SMBIOS/DMI)hdparm-i/dev/hd…

    2022年4月9日
    172
  • 文心一言怎么用?

    文心一言怎么用?

    2026年3月12日
    2
  • bootstrapValidator 中文API

    bootstrapValidator 中文API用法使用插件初始化表单后 form bootstrapVal options 有两种方法调用插件方法 Getpluginins form data bootstrapVal andthencallm meth

    2026年3月18日
    2
  • Hadoop之POC测试总结

    Hadoop之POC测试总结POC 测试总结一 测试内容测试内容测试目的其他功能测试验证产品的自动部署安装 集成统一管理 运维监控功能是否完善 对 SQL 的支持能力 SQL 标准 事务支持能力 索引 存储过程 UDF 混合负载管理能力存储特性及多重分区能力组件测试验证产品的数据压缩存储特性 多种计算接口支持 对异构数据库支持 数据挖掘能力压缩对性能的影响性能测试测试产品的单查询性能和并发查询

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号