在开发过程中,难免会遇到需要安装Ubuntu环境的情况,本次教程适用于所有arm板子,只是其中一些细节需要稍微替换注意一下。
本次下载的是不带桌面的Ubuntu,需要桌面的也可以下载此链接,然后用指令安装桌面即可,很简单,后面会提到
ARM64 Ubuntu 18.04.5下载地址
首先,需要在PC上安装一个Ubuntu,我这里用的是Ubuntu18.04,在Ubuntu中安装QEMU
sudo apt-get install qemu-user-static
我这里用的是共享文件夹拷贝,你们习惯什么就用什么
sudo cp -ra /mnt/hfs/ubuntu18_base.tar ./rootfs
注意:一定要加sudo解压,否则有些文件没权限,后续移植会报错
sudo tar -xvf ubuntu18_base.tar
该文件是用来启动虚拟机的
vi ch-mount.sh
创建好后输入下列内容:
#!/bin/bash
echo "MOUNTING"
sudo mount -t proc /proc ${1}proc
sudo mount -t sysfs /sys ${1}sys
sudo mount -o bind /dev/ ${1}dev
sudo mount -o bind /dev/pts ${1}dev/pts
sudo chroot ${1}
该文件是用来推出虚拟机的
vi umount.sh
创建好后输入下列内容:
#!/bin/bash
echo "UNMOUNTING"
sudo umount ${1}proc
sudo umount ${1}sys
sudo umount ${1}dev/pts
sudo umount ${1}dev
chmod a+x ch-mount.sh
chmod a+x umount.sh
注意,这里是配置arm Ubuntu的,不要把PC的给改了
sudo sed -i 's|ports.ubuntu.com|mirrors.ustc.edu.cn|g' ./etc/apt/sources.list
sudo cp /etc/resolv.conf ./etc/resolv.conf
sudo cp /usr/bin/qemu-aarch64-static ./usr/bin
sudo sh ch-mount.sh rootfs
进入后就会长这样
MOUNTING
root@ubuntu:/#
这一步可以选择性做,如果不可以apt update 的话在做
echo "guo" > /etc/hostname
echo "127.0.0.1 localhost" > /etc/hosts
echo "127.0.0.1 guo" >> /etc/hosts
常用软件安装
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
如果在apt update的时候出现Couldn’t create temporary file(无法创建临时文件)的错误,将/tmp路径权限设为777之后重试即可
chmod 777 /tmp
apt update
apt install sudo
apt install language-pack-en-base
apt install vim
apt install ssh
apt install net-tools
apt install ethtool
apt install ifupdown
apt install iputils-ping
apt install rsyslog
apt install htop
apt install i2c-tools
sudo useradd -r -m -s /bin/bash ubuntu
chmod +w /etc/sudoers # 给文件增加w权限
vim /etc/sudoers # 修改文件
ubuntu ALL=(ALL:ALL) ALL # 在root ALL=(ALL:ALL) ALL后增加
chmod -w /etc/sudoers # 去除文件w权限
passwd ubuntu
sudo userdel ubuntu
sudo rm -rf /home/ubuntu
systemctl enable [email protected]
echo auto eth0 > /etc/network/interfaces.d/eth0
echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0
echo MYD > /etc/hostname
exit
sudo sh umount.sh rootfs
以下这些功能可以自己选择性安装
apt-get install xinit
apt-get install xdm
apt-get install xfce4
apt-get install synaptic
apt-get install network-manager
apt-get install language-pack-zh-hant language-pack-zh-hans
apt-get install network-manager-gnome
安装完这些,基本操作都有了,有新的需求再百度安装即可
将弄好的rootfs文件夹全部拷贝到IMX8的SDK里把原来的给替换掉,名字要和Makefile一致,编译烧录即可。
ifconfig
输入完ifconfig后,可能会发现只有一个回环模式节点,如下图
然后执行下列语句却发现有物理节点,这时说明网络节点没有设置。
ifconfig -a
以eth0为例,添加eth0网络节点
ip link set eth0 up
此时ifconfig发现已经有eth0了,但是却没有分配到ip地址
输入 sudo dhclient 即可获取ip地址
$ sudo dhclient -r //release ip 释放IP
$ sudo dhclient //获取IP
进入ubuntu系统后,更改ssh文件,即可实现ssh登录
vi /etc/ssh/sshd_config
service sshd restart
sudo vim /etc/systemd/system/network-online.target.wants/networking.service
DefaultTimeoutStartSec=15s
DefaultTimeoutStopSec=15s
vim /etc/systemd/system.conf
1 cd /var/lib/dpkg/
2 sudo mv info/ info_bak # 现将info文件夹更名
3 sudo mkdir info # 再新建一个新的info文件夹
4 sudo apt-get update # 更新
5 sudo apt-get -f install # 修复
6 sudo mv info/* info_bak/ # 执行完上一步操作后会在新的info文件夹下生成一些文件,现将这些文件全部移到info_bak文件夹下
7 sudo rm -rf info # 把自己新建的info文件夹删掉
8 sudo mv info_bak info # 把以前的info文件夹重新改回名
返回总目录