Ubuntu-Base 18 文件系统 在iMX8平台上的移植

开发板是如下的型号
OKMX8MPX-C V2.0
OKMX8PQ-C开发板
FETMX8MPX-C V1.0

在 飞凌 提供的 ubuntu虚拟机里面搭建环境:
步骤如下:
mkdir /home/forlinx/work/ubuntu-core
cd /home/forlinx/work/ubuntu-core/
进入如下网址:
http://cdimage.ubuntu.com/ubuntu-base/releases/18.04/release/
下载 如下 文件 :
ubuntu-base-18.04.5-base-arm64.tar.gz

mkdir /home/forlinx/work/ubuntu-core/ubuntu-base
cd /home/forlinx/work/ubuntu-core/
tar xvf ubuntu-base-18.04.5-base-arm64.tar.gz -C ubuntu-base/

sudo apt install qemu-user-static -y

执行 :
cd /home/forlinx/work/ubuntu-core/ubuntu-base
sudo cp /usr/bin/qemu-arm-static usr/bin/
sudo cp /usr/bin/qemu-aarch64-static usr/bin/
这样是为了防止出现如下错误:

chroot: failed to run command ‘/bin/bash’: No such file or directory

接着创建文件:
cd /home/forlinx/work/ubuntu-core
vi ch-mount.sh

#!/bin/bashfunction mnt() {echo "MOUNTING"sudo mount -t proc /proc ${2}procsudo mount -t sysfs /sys ${2}syssudo mount -o bind /dev ${2}devsudo mount -o bind /dev/pts ${2}dev/ptssudo chroot ${2}
}function umnt() {echo "UNMOUNTING"sudo umount ${2}procsudo umount ${2}syssudo umount ${2}dev/ptssudo umount ${2}dev
}if [ "$1" == "-m" ] && [ -n "$2" ] ;
thenmnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
thenumnt $1 $2
elseecho ""echo "Either 1'st, 2'nd or both parameters were missing"echo ""echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"echo ""echo "For example: ch-mount -m /media/sdcard/"echo ""echo 1st parameter : ${1}echo 2nd parameter : ${2}
fi

chmod 777 ch-mount.sh

准备工作:

因为Ubuntu-Base默认的apt安装源是官网源,速度比较慢,我们将其换为国内源,我习惯中科大源(mirrors.ustc.edu.cn),所以执行sed命令更换,注意路径
cd /home/forlinx/work/ubuntu-core/ubuntu-base
sed -i ‘s|ports.ubuntu.com|mirrors.ustc.edu.cn|g’ ./etc/apt/sources.list
此时的文件系统里面还没有设置dns服务器,直接进去会无法解析域名,所以将开发机的DNS配置文件复制进去
cp /etc/resolv.conf ./etc/resolv.conf

然后执行:

cd /home/forlinx/work/ubuntu-core
./ch-mount.sh -m ubuntu-base/

./ch-mount.sh -m ubuntu-base/
echo "larry-imx8mm" > /etc/hostname
echo "127.0.0.1 localhost" > /etc/hosts
echo "127.0.0.1 larry-imx8mm" >> /etc/hosts
chmod 777 /tmp
apt update
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
passwd root
exit
./ch-mount.sh -u ubuntu-base/

如果在apt update的时候出现Couldn’t create temporary file(无法创建临时文件)的错误,将/tmp路径权限设为777之后重试即可
chmod 777 /tmp
如果不执行 apt install …那些指令
会出现如下错误:
/bin/sh: 0: can’t access tty; job control turned off

随后输入exit指令退出Ubuntu-Base文件系统,再使用ch-mount.sh脚本卸载proc、sys、dev、dev/pts文件系统即可。

到这里Ubuntu-Base文件系统的移植就算是完成了,将配置好的文件系统、内核和BootLoader一起烧录进开发板即可。

Ubuntu 18.04 永久修改DNS的方法
修改 :
sudo vim /etc/systemd/resolved.conf

[Resolve]
DNS=192.168.99.1
DNS=8.8.8.8

执行完之后 ,nfs服务器 ():

sudo vi /etc/exports

/nfs_rootfs 192.168.99.*(rw,sync,no_root_squash,no_subtree_check)
/home/forlinx/nfs_rootfs 192.168.99.*(rw,sync,no_root_squash,no_subtree_check)
/home/forlinx/work/ubuntu-core/ubuntu-base 192.168.99.*(rw,sync,no_root_squash,no_subtree_check)

sudo exportfs -rv
sudo /etc/init.d/rpcbind restart
sudo /etc/init.d/nfs-kernel-server restart

uboot 环境变量

(ctrl+shift +insert 插入 ubuntu putty)

setenv ipaddr 192.168.99.53
setenv serverip 192.168.99.50
setenv image Image
setenv fdt_file OK8MP-C.dtbsetenv netargs setenv bootargs console=ttymxc1,115200 root=/dev/nfs rw ip=192.168.99.53:192.168.99.50:192.168.99.1:255.255.255.0::eth0:off  nfsroot=192.168.99.50:/home/forlinx/work/ubuntu-core/ubuntu-base,v3,tcp
setenv netboot 'run netargs; tftpboot ${loadaddr} ${image}; tftpboot ${fdt_addr} ${fdt_file}; booti ${loadaddr} - ${fdt_addr}' saveenv
run netboot

通过uboot 命令行 , run netboot是 通过 nfs启动
默认启动还是从mmc启动。
进入系统之后,

可以执行的命令为:
ping www.baidu.com
apt search python3.8
ping www.baidu.com

可以用

参考文档:

Ubuntu-Base在iMX8MM平台上的移植

qemu仿真二进制文出现chroot: failed to run command XXX
chroot 是 qemu的一个命令

Ubuntu-Base在iMX8MM平台上的移植
https://larryz.blog.csdn.net/article/details/113035997

qemu+chroot构建arm aarch64虚拟机
http://t.zoukankan.com/objectDetect-p-7614066.html
进入如下网址:
http://cdimage.ubuntu.com/ubuntu-base/releases/18.04/release/
/home/forlinx/work/ubuntu-core/
ubuntu-base-18.04.5-base-arm64.tar.gz

tar xvf ubuntu-base-18.04.5-base-arm64.tar.gz -C ubuntu-base/

/home/forlinx/work/ubuntu-core/ubuntu-base/
sudo apt install qemu-user-static -y
chroot: failed to run command ‘/bin/bash’: No such file or directory

/home/forlinx/work/ubuntu-core/ubuntu-base

Ubuntu-Base 18 文件系统 在iMX8平台上的移植相关推荐

  1. opus在arm的嵌入式平台上的移植和开发

    最近产品中要用到opus,圣上一声令下,把opus移植到我们平台上,什么?opus?opus是什么?在一脸 茫然中,我这特种兵码农就赤手空拳上战场了. 废话少说,赶紧在网站:https://opus- ...

  2. Ubuntu-Base在iMX8MM平台上的移植

    先说废话↓ 转眼大学快过完了,已经开始了毕业设计的开发.笔者的毕业设计是一个运行ARM-Linux的第一人称控制机器人,为了挑(zhe)战(mo)一下自己,选择了一个性能很美丽的平台--iMX8MM, ...

  3. QT4.7.3在dm6446平台上的移植[转]--make[1]: *** [assistant_cs.qm] Error 2

    师兄让我作达芬奇系统下的一个界面程序,听说QT不错,所以几天前就试着把QT移植到dm6446上来.去TI的论坛看了一个在omap3上的移植教程,看起来也不难,于是开始了我的移植过程. 1 首先去htt ...

  4. 锐捷认证客户端在嵌入式linux平台上的移植

    一.TCP/IP协议简介 IP协议用于将多个包交换网络连接起来,IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流 ...

  5. miniGUI 3.0.2 在Hi3535平台上的移植

    miniGUI是一个自由软件项目.其目标是提供一个快速.稳定.跨操作系统的图形用户界面(GUI)支持系统,尤其是基于 Linux/uClinux.eCos 以及其他传统 RTOS(如 VxWorks. ...

  6. NXP iMX8平台上使用imx-gpu-sdk开发

    By Toradex胡珊逢 Apalis iMX8 计算机模块采用了 NXP 的 i.MX 8 QuadMax 处理器.该处理器具有两个 Vivante GC7000/XSVX 单元,能够支持 Ope ...

  7. Qt4.7.3在dm6446平台上的移植经验与教训

    1 首先去http://qt.nokia.com/downloads下载最新的QT原代码包:qt-everywhere-opensource-src-4.6.4.tar.gz 可以将其放在/tmp目录 ...

  8. 创维 linux内核,Linux2.6内核在创维特jx2410平台上的移植一

    我参考网上的资料做了linux2.6.14内核的移植.创维特jx2410的配置:cpu:s3c2410, 32M Nor Flash(Intel 28F128), 64M SDRAM.Nor Flas ...

  9. FFTW3在android平台上的移植

    目的:编译arm64-v8a armeabi-v7a架构的动态库 编译环境:ubuntu 64 + android-ndk-r10e 注意事项:一定要保证android-ndk-r10e的有足够的权限 ...

最新文章

  1. Mybatis之SqlSession
  2. 用WWWGrep来检查你的网站元素安全
  3. UITextField基础
  4. 超图js版本加载点图层和点要素
  5. Android 6.0 PowerManagerService状态分析
  6. 【Android】手机端的投射
  7. TS基础2(类)-学习笔记
  8. DDD:DomainEvent、ApplicationEvent、Command
  9. 可动态调节参数的线程池实现
  10. Python数据结构与算法(一)--算法和时间复杂度
  11. java虚拟机——JVM
  12. Linux内核与Linux操作系统的区别,[科普] Linux 的内核与 Linux 系统之间的关系
  13. 如何构建可视化的营销数据大屏? 1
  14. 常见面试算法:k-近邻算法原理与python案例实现
  15. McObject为风河航空电子平台提供实时数据管理能力
  16. SAP 常用增强记录文档
  17. GRV – 可视化git仓库工具
  18. 百度漂亮的金融营销仗
  19. JAVA游戏 混乱大枪战
  20. matlab移相法实现单边带调制,根据Matlab 单边带体系仿真研讨

热门文章

  1. Mysql error 1045的解决
  2. Python官网下载
  3. MySQL添加字段和删除字段
  4. FT、DTFT和DFT之间的关系
  5. 关于ubuntu20.04版本配置网络
  6. redis如何查看版本号?
  7. ami免刷bios 开启bios设置
  8. hadoop大数据生态集群
  9. PHPBB网站如何搬迁新服务器,phpbb 安装教程
  10. 一正云系统服务器搭建,腾正云服务器