By Toradex 胡珊逢
1).简介
NXP iMX8 是NXP近期发布的基于Cortex-A72、Cortex-A53等性能非常强大的的ARM处理器, 默认 BSP 是基于 Yocto 工程编译,这是一个精简的产品级 Linux BSP。但是对于习惯 Ubuntu 环境的用户,特别是 ROS 用户,Yocto 的操作会显得相对复杂。因此本文就采用Toradex基于NXP iMX8 SoC的ARM核心板模块Apalis iMX8介绍如何制作一个 Ubuntu BSP,并演示如何使用 ROS。
2). Ubuntu BSP定制
一个完整的 Ubuntu BSP 包括 u-boot、Linux kernel 和 Ubuntu rootfs。为了能够受益于 Toradex 的开发成果,我们将使用 Toradex 官方 Linux V3.0b4 BSP 中的u-boot、Linux kernel,rootfs 则仍然采用 ubuntu-base-18.04.4-base-arm64。编译方法来自 NXP 论坛。当然,我们会使用 Toradex 的Yocto编译环境。
首先从上面链接下载 ubuntu-base-18.04.4-base-arm64.tar.gz,然后解压。
---------------------------------------
$ mkdir ~/ubuntu-rootfs
$ sudo tar vxf ubuntu-base-18.04.4-base-arm64.tar.gz -C ubuntu-rootfs
---------------------------------------
复制该脚本文件,创建 ch-mount.sh。
---------------------------------------
$ sudo chmod a+x ./ch-mount.sh
---------------------------------------
上面下载的是一个基础的 Ubuntu-base 文件系统,缺失了很多常用的工具,需要我们进行安装。为此在电脑上安装 qemu-user-static 软件仿真 arm64 运行环境。
---------------------------------------
$ sudo apt install qemu-user-static
---------------------------------------
挂载 Ubuntu-base 文件系统,然后可以直接在arm64 环境中操作。
---------------------------------------
$ sudo ./ch-mount.sh -m ubuntu-rootfs/
---------------------------------------
添加 DNS 服务器,例如8.8.8.8,或者其他可用的DNS 服务器 IP。
---------------------------------------
# echo nameserver 8.8.8.8 > /etc/resolv.conf
---------------------------------------
安装相关软件,当然你也可以把其他软件添加进来。
---------------------------------------
# apt install language-pack-en-base sudo ssh net-tools \
network-manager iputils-ping rsyslog \
bash-completion htop resolvconf dialog \
vim nano v4l-utils alsa-utils git gcc \
less resolvconf autoconf autopoint libtool \
bison flex gtk-doc-tools glib-2.0 \
libglib2.0-dev libpango1.0-dev libatk1.0-dev kmod pciutils -y
---------------------------------------
创建用户和设置密码,这里用户名为 ubuntu
---------------------------------------
# useradd -s '/bin/bash' -m -G adm,sudo ubuntu
# passwd ubuntu
# passwd root
# echo 'apalis-imx8' > /etc/hostname
---------------------------------------
至此基本的 Ubuntu 已经配置完毕。
---------------------------------------
# exit
$ sudo ./ch-mount.sh