OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 106|回复: 0

[XILINX] [分享] 领航者ZYNQ移植Ubuntu桌面系统(LCD显示桌面UI)

[复制链接]

1

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
326
金钱
326
注册时间
2024-3-19
在线时间
217 小时
发表于 5 天前 | 显示全部楼层 |阅读模式
本帖最后由 Alexan 于 2025-3-28 16:01 编辑

领航者ZYNQ移植Ubuntu桌面系统

我们领航者开发板出厂提供的Linux系统是使用petalinux编译的一个基本的系统,很多Linux社区的优势大家可能体会不到,比如像Ubuntu系统那样直接使用apt命令下载需要的软件包。于是,带有优美桌面环境的Ubuntu系统它来了,我们把它搬上了领航者开发板,大家可以利用apt自由下载软件使用,避免麻烦的软件移植过程;甚至可以使用gcc直接在开发板上编译你的代码,避免在虚拟机中交叉编译;看视频玩游戏自然也不在话下。
    接下来将详细教大家怎么从头开始在领航者开发板上移植Ubuntu系统。(注:本教程跳过了内核镜像等启动文件的构建,如果不会编译镜像请参考正点原子领航者嵌入式Linux开发指南文档

1.1 制作前准备工作
1)、一款ZYNQ开发板:本次以领航者ZYNQ-7020开发板来演示;
2)、一块正点原子RGB LCD屏幕;
2)、一台运行Ubuntu系统的计算机(或者虚拟机),要能联网;
3)、一张SD卡和一个读卡器;

1.2 制作SD启动卡
参考领航者ZYNQ嵌入式Linux开发指南第六章制作SD启动卡部分,制作一张空白的SD启动卡并分区。这里移植带有桌面的Ubuntu系统占用空间较大,所以建议第二个分区预留较大空间。

1.3 下载Ubuntu根文件系统压缩包
首先从官网下载Ubuntu根文件系统最小压缩包,这里选择的是Ubuntu 20.04.5版本,下载链接:https://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/
由于领航者开发板是ARM32架构,所以这里选择下载的压缩包是armhf,如下图:
1.png
    下载完成后解压到SD启动卡的第二个分区,并拷贝领航者出厂镜像(可从资料盘下载)的三个启动文件到第一个分区:
2.png
这个时候插入SD卡已经可以启动系统了,但是只能使用sh作为初始进程,并不是一个常用的Ubuntu系统,需要手动修改。

1.4 系统启动前配置

1.4.1 修改出厂内核驱动源码(5.4.0版本)
这里为了后面显示环境的配置,需要对内核fb驱动进行部分修改,建议提前修改好并替换启动文件中的内核,避免后续再关机操作。
修改内核源码中drivers/video/fbdev/core/fbmem.c文件,在1102行添加return 0;
3.png
    重新编译内核生成zImage,替换原来启动文件中的zImage,并拷贝到SD启动卡的第一个分区中。

1.4.2 安装systemd初始进程
安装初始进程之前首先要对板子里面的文件进行一些修改,主要是修改APT下载源和DNS配置,方便我们后面chroot以及联网下载。
在虚拟机下新建一个文件sources.list文件,内容如下:
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ focal main restricted universemultiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universemultiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricteduniverse multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricteduniverse multiverse
再新建一个resolv.conf文件,内容如下:
nameserver8.8.8.8
nameserver8.8.4.4
然后把这两个文件拷贝到刚刚解压的根文件系统指定路径下:
4.png
这个时候板子还无法直接联网下载软件,所以需要依赖虚拟机chroot来下载一些必要的软件包,chroot切换到刚刚解压的根文件系统,然后执行apt update:
5.png
    接下来执行apt install安装systemd:
6.png
下载过程需要选择时区,这里选择亚洲/上海:
7.png
注:如果出现下图错误,执行apt update –-fix-missing后再重新下载。
8.png
确认/lib/systemd/systemd文件存在说明已经下载好了,接下来建立一个启动进程的链接文件指向systemd:
9.png
    到这里Ubuntu系统中用于初始化和管理系统服务的核心进程就下载完成了。

1.4.3 安装调试必要软件apt install vim net-tools iputils-ping isc-dhcp-client  bash-completion sudo
1.4.4 设置hostroot密码vim/etc/hosts    #修改hosts文件添加如下内容
10.png
echo"zynq-ubuntu" > /etc/hostname
passwd root  #这里设置root密码,要输入两次
1.4.5 开启串口服务
领航者开发板默认PS端串口是ttyPS0,所以这里要特殊设置一下开启对应串口服务:
  1. systemctl enable getty\@ttyPS0.service
复制代码
11.png
    配置完成后ctrl+d可快速退出chroot,然后umount卸载启动卡。插入SD卡到开发板,拨码开关拨到SD卡启动模式,插入PS串口,上电。
    启动到zynq-ubuntulogin,输入用户名root,密码是刚刚设置的,完成后进入系统如下:
12.png
注:登录之前可能会出现串口打印错乱的问题,这个时候关闭串口软件重新打开,再按回车就会恢复正常。
推荐大家直接使用root登录,可避免后续开发各种权限问题(由于使用root登录,后续所有命令都没有加sudo执行)。到这里已经成功进入Ubuntu系统了,接下来就可以利用Ubuntu系统开源软件包的优势,联网直接下载所需要的工具,但在这之前要先配置网络服务!

1.5 配置网络服务并下载软件
进入系统后插入网线到PS网口,并在开发板中配置DNS和DHCP相关服务。
  1. vim /etc/systemd/resolved.conf         #修改dns服务配置文件如下图
复制代码
13.png
    修改完成后保存文件,输入命令systemctl restart systemd-resolved重启服务。
    然后按照下图步骤首先打开PS网口,获取IP地址,获取成功后可以ping百度看看能不能通。
14.png
    能ping通说明已经可以正常上网。
    然后输入命令unminimize自动下载必要软件,时间较长,等待下载完成后再继续往下操作。

1.6 安装配置桌面环境
首先我们要先选择窗口协议,在Linux环境中想使用桌面,目前最常用的窗口协议是X11和wayland,我们选择较为古老的X11协议。
其次还需要一个显示管理器,在我们虚拟机中常用的有lightdm、gdm3等软件,但是这里我们都不推荐使用,因为占用资源较多,领航者ZYNQ作为一款ARM端拥有双核A9的芯片,实在是有点为难。我们选择轻量级的显示管理器slim。
最后是桌面环境软件,Ubuntu系统可以选择的桌面环境软件还是比较多的,比如我们自己虚拟机的Ubuntu系统使用的是Gnome,这是一款设计非常不错的桌面软件,但是我们不建议使用,理由同上。我们仍然选择较为轻量级的桌面环境xfce4。
确定完了所需软件以后,我们需要确定用哪个接口显示桌面,领航者开发板上有HDMI和RGB LCD两种显示方式,我们这里采用RGB LCD显示,用排线连接好LCD屏幕。
综上,我们启动的桌面环境至少需要X11串口协议+slim显示管理器+xfce4桌面软件,接下来开始下载安装:
  1. apt install xorg xserver-xorg slim xfce4
复制代码
15.png
    这里需要下载工具较多,会占用较多内存(约1.5G左右),时间也较长。
中途可能会多次出现下图所示默认显示管理器选择,这里都选择slim。
16.png
    等待下载完成后,首先我们要卸载其他桌面,防止出现选择错误,输入如下命令卸载gnome桌面相关工具:
  1. apt remove gnome-*
复制代码
接下来需要对桌面显示进行配置,首先创建修改/etc/X11/xorg.conf文件,写入如下内容后保存:
Section"Device"
       Identifier "FB"
       Driver     "fbdev"
       Option     "fbdev" "/dev/fb0"
EndSection
    然后输入命令systemctl restart slim。这个时候LCD屏幕上就会显示登录界面,一个图形化界面,大大的Login,这是slim显示管理器提供的登录界面。插入键盘输入用户名root和自己设置的密码后即可登录到桌面环境,若无法登录可参考1.8.2解决方案。插入鼠标可以控制指针,也可以触屏控制指针。
    到这里一个完整的桌面环境就安装完成了,在我们刚刚下载各种软件的过程中,包含了网络服务的配置,所以后续插入网线后不用再使用命令去使能网口和DHCP了,系统会自动获取IP地址。
有了网络和apt工具,利用Ubuntu开源软件社区的优势,大家可以自由探索Ubuntu系统了!

1.7 其他外设配置


1.7.1 领航者开发板音频配置
移植好Ubuntu系统后,需要修改音频配置文件才能正常使用音频功能。创建修改/etc/asound.conf文件,添加如下内容:
defaults.pcm.rate_converter"linear"

pcm.mmap0{
    type mmap_emul

    slave {
        pcm "hw:0,0"
    }
}

pcm.!default{
    type plug

    slave {
        pcm mmap0
    }
}

ctl.!default{
    type hw
    card 0
}

ctl.mixer0{
    type hw
    card 0
}
修改后保存文件重启开发板,可使用aplay播放.wav格式音频进行测试。找不到aplay命令怎么办?apt install alsa-utils下载即可。

1.7.2 U盘不能自动挂载?
使用桌面系统,插入U盘到USB接口后使用df -Th命令发现并没有挂载,这是正常现象。因为在使用桌面系统时,桌面环境自带了存储设备挂载管理等功能,插入U盘后会在桌面UI显示,鼠标双击即可挂载。

1.7.3 网口配置
桌面系统中使用systemd管理网络相关服务,插入网线到网口后会自动检测并动态获取IP地址,PS或PL端网口皆可。

1.8 问题及解决方法
由于上述操作步骤大部分是笔者自己探索的结果,期间也出现了一些奇怪的问题,这里总结一下并附上解决方法。

1.8.1 重启开发板后串口错乱且登录失败问题
问题描述:重启开发板后,串口打印到zynq-login,这时候输入正确的用户名和密码后会出现多余字符且显示登录失败,即使关闭串口重新打开也无法解决。如下图:
17.png
(不过这里多余的字符不一定是1,可能是因为笔者这里的密码是123)
原因分析:这里笔者推测是由于在下载桌面环境软件和unminimize过程中,重复配置了串口服务,导致多个登录相关服务重复启动,下述解决方案也是笔者自己探索的,如有更好的解决方案大家可以自由尝试解决。
解决方案:这个时候由于无法登录,串口已经不能使用了,于是关机拔出SD启动卡,插入读卡器连接到虚拟机中,利用chroot进入根文件系统中,然后输入命令systemctl disable getty@ttyPS0.service。再插入SD启动卡重新启动开发板即可恢复。

1.8.2 图形化登录界面无法进入桌面
问题描述:在图形化登录界面输入正确用户名和密码后,屏幕出现短暂黑屏后又重新回到登录界面,重复输入用户名和密码无法解决。
原因分析:系统中可能存在多个桌面软件,登录界面完成进入桌面后选择了错误的桌面导致启动失败,比如选择了gnome错误配置导致启动失败。
解决方案:在串口终端中卸载多余的桌面软件,仅保留我们推荐的xfce4作为桌面UI即可。卸载方法前文有描述。

1.8.3 没有LCD屏幕想用HDMI显示?
解决方案:买个LCD屏幕
or修改软件配置。修改/etc/X11/xorg.conf文件,Option     "fbdev""/dev/fb0"这一行fb0改为fb1即可,保存文件然后输入命令systemctl restart display-manager或者重启开发板即会在HDMI显示登录界面。这里笔者使用正点原子RGB LCD屏幕实测效果优于HDMI显示,且带有触屏操作,所以在我们提供的领航者Ubuntu镜像中,默认选择的是LCD屏幕显示。

1.8.4 配置桌面中文语言显示
解决方案:安装完整的locales,然后dpkg配置中文语言zh_CN.UTF-8。
  1. apt install locales
复制代码
18.png
    按照上图设置完成后重启开发板即可。





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-2 01:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表