iMX8模块Ubuntu移植
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
首先下载 Apalis iMX8 模块的 Linux BSP。
https://artifacts.toradex.com/artifactory/tdxref-oe-prod-frankfurt/dunfell-5.x.y/release/7/apalis-imx8/tdx-xwayland/tdx-reference-minimal-image/oedeploy/Apalis-iMX8_Reference-Minimal-Image-Tezi_5.2.0+build.7.tar
解压文件。
$ 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 文件系统。
http://cdimage.ubuntu.com/ubuntu-base/releases/20.04.2/release/ubuntu-base-20.04.2-base-arm64.tar.gz
解压 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 serial-getty@ttymxc0.service |
清除缓存。
# 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 文件。
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
首先下载 Apalis iMX8 模块的 Linux BSP。
https://artifacts.toradex.com/artifactory/tdxref-oe-prod-frankfurt/dunfell-5.x.y/release/7/apalis-imx8/tdx-xwayland/tdx-reference-minimal-image/oedeploy/Apalis-iMX8_Reference-Minimal-Image-Tezi_5.2.0+build.7.tar
解压文件。
$ 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, 8750736384 bytes, 17091282 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 526335 524288 256M c W95 FAT32 (LBA) ubuntu-20.10-preinstalled-desktop-arm64+raspi.img2 526336 17091247 16564912 7.9G 83 Linux |
img2 是 Ubuntu 文件系统,其起始偏移地址为 526336,注意这里的单位是 sector。换算为字节是 526336 * 512 = 269484032。使用 mount 命令挂载时 offset=269484032
$ mkdir ubuntu $ sudo mount -o loop,offset=269484032 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 serial-getty@ttymxc0.service |
删除下面软件。
# 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 文件。
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 重新启动即可。
iMX8模块Ubuntu移植相关推荐
- OpenCV安装成功,但是无法导入 cv2 的指定模块 -- Ubuntu Anaconda 环境一键安装 opencv
文章目录 1. 问题 2. 分析 3.解决 4. 其它尝试 5. 总结 1. 问题 OpenCV安装成功,但是无法导入 cv2 的指定模块 – Ubuntu Anaconda 环境,具体是安装好 op ...
- 迅为RK3399开发板基于RTL8822CS模块Android7移植WiFi
近期需要把 wifi 无线网络功能(RTL8822CS 模块)移植到 iTOP-3399 开发板,经过一段时间研究, 调试,终于成功的将 wifi 功能移植到开发板上面. 移植的环境: 1. iTOP ...
- WiFi模块驱动移植
项目背景 WiFi模块rlt8812au 替换成rlt8812cu,支持rlt8812cu驱动且保持兼容原有模块 驱动移植 根据厂家提供的驱动包,修改makefile和Kconfig文件,根据需要修改 ...
- linux 4g wifi切换,Linux 开发板4G转WiFi热点 手机连接热点上网(二 4G模块的移植)...
接着前一篇,本篇博文记录4G模块的移植. 我使用的模块是中兴ME3630模块,前面说了使用供应商或者官方的资料进行移植即可.一般来说4G模块的驱动,Linux内核也基本都有了,只需要设置一下optio ...
- 关于Metasploit 5中测试模块的移植与验证
前言 如果针对某一程序或软件已经有了相应的渗透模块,此时再去写一个实现类似功能的模块就显得多此一举.然而,并非所有的渗透模块都是基于Metasploit框架开发的,其中有很多是用Perl.Python ...
- Linux WIFI模块驱动移植
作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 请问有知道atheros ...
- ubuntu移植jsoncpp到Android平台
简书排版 http://www.jianshu.com/p/02ccd73c927e 本机OS: Ubuntu 14.04 x64 NDK开发模块的时候,如果涉及到网络请求,类似json数据传递的时候 ...
- Linux 开发板4G转WiFi热点 手机连接热点上网(三 WiFi模块的移植及AP的建立)
这里对WiFi模块的驱动就不做详细介绍,本篇文章可能会涉及两款WiFi模块,一个是USB接口的WiFi模块,一个是SDIO接口的wifi模块,即AP6212,平台可能涉及爱特梅尔和三星的4418两个平 ...
- android+usb转串口+唯一id,Android平台3G模块驱动移植-USB转串口
Android平台3g模块是通过ril库来支持数据.短信.彩信.电话.第三方通话.USSD等功能的.其相应的组件有:rild用来为rild socket建立文件,pppd和chat为拨号文件,libr ...
最新文章
- IP分类以及特殊IP
- visual studio 2019配置OnnxRuntime+推理+vgg16
- docker的镜像创建与Dockefile的编写
- 习题7 7-7 字符排队
- 获取Ip所在城市名与详细
- [JSOI2008]Blue Mary的战役地图
- Linux编程(7)_gdb
- 每天一个linux命令(57):ss命令
- 计算机上可以插键盘吗,电脑键盘上这些按键竟然可以这样用?
- 自动控制原理学习笔记(三)线性定常离散控制系统的数学模型
- 联合分布(二):联合分布
- 已有的MGR集群上配置InnoDB Cluster
- View margin/marginTop 注意点
- 10——Filter过滤器
- 文档服务器备份策略,服务器备份策略
- Centos7 安装部署Kubernetes(k8s)集群过程
- APM飞控添加自定义参数
- python-异常处理_异常类型_处理的异常的方法
- 神经网络的激活函数总结
- 26.JavaScript对象和基础类型之间的转换、hint、Symbol.toPrimitive、toString、valueOf