i.MX6ULL移植Ubuntu 16.04带界面文件系统

一、镜像下载

到USTC镜像中下载arm架构的文件,i.MX6ULL属于armhf,即在其中找到ubuntu-base-16.04.6-base-armhf.tar.gz文件,当然也可以下载ubuntu-base-18.04.5-base-armhf.tar.gz,但是18的更卡。

下载的文件属于最基本的文件系统,没有UI界面。

二、构建ubuntu-base根文件系统

1.解压镜像

我直接采用的是正点原子官方的虚拟机系统,先切换到其nfs目录下:

cd /home/alientek/linux/nfs

然后建立存放文件夹:

mkdir ubuntu_rootfs

之后解压:

tar xzf ubuntu-base-16.04.6-base-armhf.tar.gz -C ./ubuntu_rootfs/

进入文件夹:

cd ubuntu_rootfs

2.安装qemu,并复制到文件系统中

sudo apt install qemu-user-static

sudo cp /usr/bin/qemu-arm-static ./usr/bin/

3.更改文件系统中的软件源

sudo cp /etc/resolv.conf ./etc/resolv.conf
sudo gedit ./etc/apt/sources.list  注:个人不熟悉,因此直接用文本编辑器

将所有的内容删除,替换为以下内容:

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe

4.编写挂载及卸载脚本

挂载脚本:

sudo gedit mount.sh

在其中填入如下内容:

#!/bin/bash
echo "MOUNTING"
sudo mount -t proc /proc /home/alientek/linux/nfs/ubuntu_rootfs/proc

sudo mount -t sysfs /sys /home/alientek/linux/nfs/ubuntu_rootfs/sys

sudo mount -o bind /dev /home/alientek/linux/nfs/ubuntu_rootfs/dev

sudo mount -o bind /dev/pts /home/alientek/linux/nfs/ubuntu_rootfs/dev/pts

sudo chroot /home/alientek/linux/nfs/ubuntu_rootfs

保存。

卸载脚本:

sudo gedit unmount.sh

在其中填入如下内容:

#!/bin/bash
echo "UNMOUNTING"
sudo umount /home/alientek/linux/nfs/ubuntu_rootfs/proc
sudo umount /home/alientek/linux/nfs/ubuntu_rootfs/sys
sudo umount /home/alientek/linux/nfs/ubuntu_rootfs/dev/pts
sudo umount /home/alientek/linux/nfs/ubuntu_rootfs/dev

保存。

授于两个脚本执行权限:

sudo chmod 777 mount.sh unmount.sh

5.挂载文件系统

./mount.sh

6.安装常用软件到ubuntu-base中

执行完上述脚本后,系统会切换到文件系统中,即下面执行的动作均是对文件系统产生作用,而不会影响虚拟机中运行的ubuntu。

更换软件源:

apt update  

安装常用软件:
apt install sudo vim kmod net-tools ethtool ifupdown language-pack-en-base rsyslog iputils-ping

安装桌面软件:

apt install xubuntu-desktop

安装过程中会出现语言及键盘的选择,我是直接选择默认的us。

安装最后会一般会出现如下问题:

Errors were encountered while processing:

blueman

E: Sub-process /usr/bin/dpkg returned an error code (1)

解决的方法是:

将现有的info文件夹更名(备份文件夹):

sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bk

新建一个info文件夹:

sudo mkdir /var/lib/dpkg/info

强制安装:

sudo apt-get update
sudo apt-get install -f

新安装生成的文件转移至备份文件夹:

sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info.bk

删除新建的info文件夹:

sudo rm -rf /var/lib/dpkg/info

将备份文件夹更回原来名字:

sudo mv /var/lib/dpkg/info.bk /var/lib/dpkg/info

7.设置root用户密码

passwd root

输入两次密码。

8.设置本机名称与本地IP

echo "vuy" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.0.1 vuy" >> /etc/hosts

注:vuy是我自己的名字,你可以取别的,这是在板子加载后出现的主机名字。

9.设置终端串口(很重要,管理窗口)

正点原子板子采用串口ttymxc0作为管理串口,因此需要建立一个软链接文件指向

/lib/systemd/system/[email protected]

ln -s /lib/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected]

10.完成,退出并卸载文件系统

exit

./unmount.sh

11.个人采用nfs方式启动系统,因此在uboot里面需要设置一些参数。

以下命令在板子启动时,按任意键进入uboot命令行。

主机IP设置的是192.168.10.100,板子的是192.168.10.50,全部根据官方文档设置,省事。

设置板子IP等:

env default -a;saveenv
setenv ipaddr 192.168.10.50
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.10.1
setenv netmask 255.255.255.0
setenv serverip 192.168.10.100
saveenv

设置zImage及dtb等路径:

setenv bootcmd 'tftp 80800000 zImage;tftp 83000000 imx6ull-alientek-emmc.dtb;bootz 80800000 - 83000000'
saveenv

设置文件系统路径:

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.10.100:/home/alientek/linux/nfs/ubuntu_rootfs,proto=tcp rw ip=192.168.10.50:192.168.10.100:192.168.10.1:255.255.255.0::eth0:off '
saveenv

设置完成后重启板子:

reset

好了,就能看到小老鼠的界面在你的LCD屏上显示了。不过加载非常慢就是了。板子采用的是EMMC版本的。

 

i.MX6ULL移植Ubuntu 16.04带界面文件系统_第1张图片

 

你可能感兴趣的:(嵌入式学习,ubuntu,linux,服务器)