银河麒麟桌面版安装、多屏配置、触摸校准
一、前言
现有Lenovo P360工作站一台、显示屏5块
独显GeForce RTX 3090 系列,d集显xxxxx,需要部署麒麟桌面版满足GCC9.3 及 内核5以上,外界5块屏幕扩展及触摸校准
机器原则上不允许联网
麒麟镜像的下载地址,引用如下
二、部署配置
1、麒麟桌面版系统安装和配置
1.1 安装
准备安装盘和光驱或者做好的系统U盘插入机器,然后配置启动项选择启动进入安装页面
需要注意的是机器性能不能太低,否则无法安装银河麒麟系统,运行内存至少2G

麒麟的系统部署比较简单,这里以文字进行描述了
语言选择中文,版本选择专业版,同意许可,时区默认保持北京,从Live安装,选择全盘安装或者自定义,默认会选择固态作为系统盘其他作为数据盘,这里建议使用LVM逻辑卷

格式化整个磁盘,然后创建一个普通用户(密码有复杂性要求),选择应用进行下一步安装即可

安装完成

1.2 环境配置
系统版本介绍

关闭安全配置

取消密码强度

关闭防火墙

关闭应用保护

关闭设备安全

修改用户密码(意在配置一个简单的密码)
sudo passwd root
su - root
passwd simpole

解锁root用户(可以在桌面登录)
先切换root用户,然后修改配置
vim /usr/share/lightdm/lightdm.conf.d/95-ukui-greeter.conf
添加两行,效果如下
greeter-show-manual-login=true
all-guest=false

然后修改root 的profile文件
vim /root/.profile
在此处加|| true 保存退出

重启机器看效果

免登录的话就在麒麟的设置中进行配置即可

1.2.5 禁用nouveau避免和nvidia显卡驱动冲突
现象:黑屏或者右上角光标闪烁或者内核选项后直接卡死
vim /etc/modprobe.d/blacklist-nouveau.conf
添加下面两行
blacklist nouveau
options nouveau modeset=0
保存退出更新
update-initramfs -u
这样即便黑屏(可以ctrl+alt+f1/2/3/4/5 切换到其他tty或者说可以切换到命令行模式),至少不会因为冲突导致系统卡死(操作都无效,只能硬关机)
1.2.6 循环登录无法进入图形化页面
现象就是无论怎么输入反复会回到登录页面,命令行模式下看目录颜色全部丢失,连ll命令都找不到了,可以联想到是profile出的问题,图形化丢失了相应的配置。去用户的家目录ll -a 会发现隐藏文件都没了
恢复方法
# 复制默认配置文件给root
cp /etc/skel/.bashrc /root/
cp /etc/skel/.profile /root/
# 立即生效,这条命令后就可以看到颜色了
source /root/.bashrc
# 同样的方法恢复普通用户,我这里是simpole
cp /etc/skel/.bashrc /home/simpole/
cp /etc/skel/.profile /home/simpole/
# 需要将目录改为普通用户的权限
chown -R simpole:simpole /home/simpole
# 确认恢复结果,应该不会再循环登录了但是桌面的图标配置什么的都没了
ls -la /home/simpole/
systemctl restart lightdm
当我们再次桌面布局好后,为了避免再次丢失,备份下相应的配置文件把如profile 和 bashrc
1.3 准备和安装软件包
离线包准备
有网络可以直接apt update 和apt install,但是无法联网就很难受了,麒麟桌面版本身连SSH服务端都没,为了便于复用所以建议在有网的机器上将所需的环境包都离线下载,方法如下
联网机A:
更新软件源: apt update

离线下载软件(从示例中选用或者添加)
apt-get --download-only install -y g++-9 ssh net-tools cmake samba vsftpd docker docker-compose wireshark tigervnc-viewer tightvncserver pycharm-community nodejs dos2unix monit arandr chrony
下载的包会存在/var/cache/apt/archives,创建一个目录,然后将下载的deb包拷贝到里面再执行做软件仓库,下面的命令用途在于切断网络后,可以通过源找到离线仓库并且apt install 软件
mkdir /opt/kylinBaseSet -p
mv /var/cache/apt/archives/*.deb /opt/kylinBaseSet/
mv /etc/apt/sources.list /etc/apt/sources.list_bak
echo 'deb [trusted=yes] file:///opt/kylinBaseSet ./' >> /etc/apt/sources.list.d/kylin.list
cd /opt/kylinBaseSet
dpkg-scanpackages . /dev/null > Packages
cd
切断网络进行测试
apt update
apt install -y ssh
这样就可以安装软件了,把/opt/kylinBaseSet 移动到别的相同系统的离线机器上写个源即可复用

1.4 配置IP地址
建议使用工具nmtui ,它基于NetworkManager服务,适用于centos,ubuntu,kylin等多种系统
编辑连接

配置IP

确定后返回上一级,启用连接

带*标识激活成功

ESC一路退出即可,用ip a s 命令查看结果,有IP即可

1.5 配置SSH 可用root用户登录和X11转发
修改后保存退出即可
vim /etc/ssh/sshd_config


重启ssh
systemctl restart sshd
测试SSH远程登陆和X11转发
登录成功

配置软件的X11开启,moba是再带的,Windterm需要开一下
会话设置改成内部X11

然后重新连接,连接后执行xclock ,能打开就说明X11 也是OK的,拥有这个就可以远程打开带有图形化的软件了

1.6 安装java
这个可以制作离线包的时候下载好,下载的名称为openjdk-jdk-17这种,如果和我一样忘记了,可以使用源码包的形式进行部署,如下
SSH远程麒麟并上传安装包
示例代码,解压到/usr/local下
tar -xf jdk-8u151-linux-x64\ \(1\).tar.gz
添加环境变量,保存退出并刷新
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin

root@simpole-pc:/usr/local/jdk1.8.0_151# source /etc/profile
root@simpole-pc:/usr/local/jdk1.8.0_151# java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
1.7 安装mysql
1.8 安装docker和docker-compose
docker下载地址
传到机器上进行安装
解压并拷贝
tar -xf docker-20.10.10.tgz
cp -ra docker/* /usr/bin/
docker --version
Docker version 20.10.10, build b485636
写一个containerd.service
echo '[Unit]
Description=containerd container runtime
After=network.target
[Service]
ExecStart=/usr/bin/containerd
Restart=always
[Install]
WantedBy=multi-user.target' > /usr/lib/systemd/system/containerd.service
写一个docker.socket
echo '[Unit]
Description=Docker Socket for the API
PartOf=docker.service
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target' > /usr/lib/systemd/system/docker.socket
写一个docker.service
echo '[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
Restart=on-failure
RestartSec=5
Delegate=yes
KillMode=process
IgnoreSIGPIPE=no
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
[Install]
WantedBy=multi-user.target' > /usr/lib/systemd/system/docker.service
创建一个docker组并将其他所有服务进行开机自启动配置即可完成docker的部署
groupadd docker
systemctl enable --now containerd.service
systemctl enable --now docker.socket
systemctl enable --now docker
docker ps
docker-compose下载地址
下载后只有一个可执行文件,添加执行权限传到/usr/bin下即可
chmod +x docker-compose
mv docker-compose /usr/bin
docker-compose --version
结果为
Docker Compose version v5.1.1
1.9 配置时间同步服务
麒麟系统默认自带的systemd-timesyncd,我们要使用chrony服务进行同步
安装此软件会自动卸载systemd-timesyncd 以避免冲突
apt install -y chrony
更改配置文件,配置当前的麒麟是服务端

客户端配置(准备另外一台机器)
查看当前两台机器之间的系统时间对比
这条命令可以持续输出当前系统时间
while true;do date +'%Y_%m_%d_%T'; done
可看出他们时间不一致

在192.168.1.232 上配置chrony 的客户端

重启两头的chrony服务
systemctl enable --now chronyd
chronyc sources
date +'%Y_%m_%d_%T'
现在时间一致了

Windows同步方法(装一个Domaintime软件)
在Windows上下载Domaintime 的软件,然后进行安装

安装完成

在右下角

或者去控制面板的时间设置中找

双击打开,然后配置要同步的主时钟源地址

进行测试,successful就OK如果部署请检查chronyd

下一步可以改这个参数,如果设置为15 则表示时间误差不超过15ms,而软件会根据系统时间自动决定下次同步的时间如(1-60 minutes)

上位机配置完成,修改上位机时间进行验证

用不了多久就同步了,比我截图速度还快,至此完成上下位机之间的NTP时同

其他
有一个现象是此时无论我如何去改windows的时间都会很快同步,但当我修改Linux即NTP服务器的时间后,windows同步就很慢,这个时候要想快速同步需要手动点击一下sync


如果时间改的过早如2000年,sync会失效
报错2000年太早了

1.10 配置vsftpd
安装vsftpd
apt install -y vsftpd
改成如图所示
vim /etc/vsftpd.conf

vim /etc/ftpusers

保存退出重启服务并配置开机自启动
systemctl enable --now vsftpd
验证,使用windows访问服务器的ftp
进入D盘,然后进入cmd,登录使用get和put进行获取和上传,完成验证

后续待更新
1.11 配置samba
安装samba
apt install -y samba
修改samba的配置文件,直接复制下列指令即可
echo "[global]
# Global settings
workgroup = WORKGROUP
server string = Samba Server Version %v
#security=share
security = user
map to guest = Bad User
guest account = root
[myshare]
comment =
path = /
browseable = yes
writeable = yes
guest ok = yes
create mode = 0777
valid users = @root
directory mode = 2777" > /etc/samba/smb.conf
效果展示

验证,在windows上打开运行访问地址

成功读写

1.12 配置远程桌面
安装vnc服务端和客户端
apt install -y tigervnc-viewer tightvncserver
启动vnc服务并输入密码
vncserver :1
通过SSH先登录这台主机,然后使用vncviewer localhost:5901测试 远程之后会出现灰屏现象

处理方法:安装Xfce 简化桌面快速解决问题
apt install xfce4 xfce4-goodies xfce4-session
修改要远程的用户的X文件,以我的普通用户为例
vim ~/.vnc/xstartup
起初是这样的

备份一下原来的文件,然后改成
#!/bin/bash
#
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export XKL_XMODMAP_DISABLE=1
eval $(dbus-launch --sh-syntax --exit-with-session)
exec startxfce4 &

保存退出,重新启动vnc服务
vncserver -kill :1
vncserver :1
vncviewer localhost:5901
成功

1.13 QT5.12 部署
建议先采用源码编译部署
基于debian的银河麒麟桌面版离线安装QT5.12.8_qt-everywhere-src-5.12.8.tar.xz-CSDN博客
此块暂时先保留但不建议操作,因为通过apt的方式进行安装后的麒麟存在桌面环境不稳定,跳变,任务栏和每个对话框的按钮空间都会消失,而且每在桌面上进行操作一段事件后会很卡、闪烁,终端命令行打开会卡死无法输入,原因大概是因为麒麟系统本身是QT开发的,而新装的QT5.12.12覆盖了系统原来的系统组件导致故障
麒麟系统自带的源中包含了QT5.12.12 ,因此我们有网络的情况下可以直接使用下列命令即可完成QT5.12.12的安装,如果无法使用网络也可以参考1.3 小节制作离线仓库的方法进行处理(apt-get --download-only install -y qt5* qtcreator) 900多M
要使用源码安装的,参考这个链接
apt install -y g++-9 qt5-default qtcreator ln -s /usr/bin/g++-9 /usr/bin/g++上述命令多了一行g++是因为如果是使用apt install 的g++-9 默认没有g++的软连接,qt5会找不到
验证:
打开Qtcreator,新建项目
配置名称
apt安装的话会把qmake装好,一路下一步即可
一直到kit设置,点击Manage
虽然会默认查找,但是最好确认然后将qmake,gcc,c++都指定了,下一步就行
构建运行代码
完成QT部署和初步验证
1.14 自定义分辨率配置
介绍(看看就行)
首先确认当前设备天花板在哪
# 找到状态为 connected 的那个,再用它的 edid 文件查看详细信息
for d in /sys/class/drm/card*; do echo "$d: $(cat $d/status 2>/dev/null)"; done
# 查看显示器支持的所有标准分辨率
cat /sys/class/drm/card0-HDMI-A-2/modes
# 查看完整的EDID信息(最关键)
sudo edid-decode /sys/class/drm/card0-HDMI-A-2/edid

像素时钟(Pixel Clock)
这是决定自定义分辨率能否成功的核心参数。从搜索结果可以看到,NVIDIA 驱动会严格校验像素时钟:
- 1504x1080: 135.25 MHz ✅ 成功
- 1000x1000: ~103 MHz ✅ 成功
- 3000x3000: 779.50 MHz ❌ 远超上限
你的显示器 EDID 中会声明一个 最大像素时钟(通常在 165-330 MHz 之间,取决于 HDMI 版本),超过这个值 NVIDIA 驱动直接拒绝。
因此我们配置的值不能大于显示器上限
开始编写脚本:(示例)
第一步先手动执行cvt 520 520 60 ,会返回一个这样的结果
知道后才可以创建并添加模式,最后使用nvidia-setting 应用
这里要说明的是,虽然上图我们用for循环找到了connecting的设备是HDMI-A-2,但是创建并添加模式的时候,我们仍然应该用xrandr中的结果即HDMI-1,因为NVIDIA 驱动内部把显示器命名为 DPY-1,而不是 xrandr 显示的 HDMI-1。这就是 BadMatch 的根源——xrandr 和 NVIDIA 驱动的命名空间不一致。
# 520x520 59.88 Hz (CVT) hsync: 32.40 kHz; pclk: 22.50 MHz Modeline "520x520_60.00" 22.50 520 544 592 664 520 523 533 550 -hsync +vsync
# 生成 Modeline
cvt 520 520 60
# 创建并添加模式
xrandr --newmode "520x520_60" 22.50 520 544 592 664 520 523 533 550 -hsync +vsync
xrandr --addmode HDMI-1 520x520_60
# 用 nvidia-settings 应用
nvidia-settings --assign CurrentMetaMode="DPY-1: 520x520_60 +0+0 {ViewPortIn=520x520, ViewPortOut=520x520+0+0}"
永久配置的方法(重点)
# 编辑文件
vim /etc/X11/xorg.conf.d/10-nvidia.conf
# 写入内容
Section "Device"
Identifier "NVIDIA GPU"
Driver "nvidia"
Option "ModeValidation" "AllowNonEdidModes,NoMaxPClkCheck,NoMinPixelClockCheck,NoVertRefreshCheck,NoHorizSyncCheck"
EndSection
# 编辑文件
vim /etc/X11/xorg.conf.d/10-monitor.conf
# 写入内容
Section "Monitor"
Identifier "Monitor0"
Modeline "1320x1314_60.00" 145.75 1320 1416 1552 1784 1314 1317 1327 1362 -hsync +vsync
Option "PreferredMode" "1320x1314_60.00"
EndSection
Section "Screen"
Identifier "Screen0"
Device "NVIDIA GPU"
Monitor "Monitor0"
DefaultDepth 24
Option "MetaModes" "DPY-1: 1320x1314_60.00 +0+0 {ViewPortIn=1320x1314, ViewPortOut=1320x1314+0+0}"
SubSection "Display"
Depth 24
Modes "1320x1314_60.00" "1920x1080"
EndSubSection
EndSection
重启系统验证,分辨率配置成功

三、多屏配置
要想独立显卡和集成显卡一起用,驱动肯定不能少,麒麟自带nvidia显卡驱动
nvidia-smi

如果发现自带的不适配,可以利用1.3的方法制作离线仓库然后进行nvidia驱动的安装
卸载后再安装:
apt-get --purge remove nvidia*
apt autoremove
apt install -y nvidia-driver-470
当我们重启机器5块屏幕都能亮即可进行下一阶段的调试
调整多屏可以使用自带的设置,改成扩展模式然后调整显示器位置即可

但我比较建议使用arandr这个工具,它同样可以做到调整扩展屏位置并且还能导出配置,然后写一个desktop文件并添加开机自动执行,能解决我们在默认自带的设置中配置扩展但重启失效的问题
安装这个工具
apt install -y arandr
然后直接在物理机上操作 打开终端输入arandr
调整布局,点击√后立刻生效

调整后可以另存为脚本

保存后的脚本内容展示,非常方便

添加执行权限并移动:
chmod +x screen.sh
mv screen.sh /usr/bin
结合一个desktop文件(如果自带的好使就不用这个脚本了,这里仅介绍)
vim screen.desktop
[Desktop Entry]
Name=screen
Exec=/usr/bin/screen.sh
Icon=terminal
Terminal=true
Type=Application
Categories=Utility
将desktop文件放到用户桌面上,并在设置面板中找到开机自启,并添加这个desktop文件即可(仅介绍)这样就可以重启加载我们预先设定好的配置了

四、触控校准
故障现象:5块屏幕,A屏长按本应出现的菜单出现在了B屏
要进行触控校准,先将对应的USB线接好机器,否则麒麟设置中找不到触控校准配置。
打开麒麟自带的设置,可以看到这里有可选显示器和触摸设备的ID,一边配置一边点触一边改数值,直到点触后出现的窗口出现在正确的屏幕上即可锁定ID

存在的问题是USB 插拔后id会变导致先前配置的触控失效,此问题需要扩展屏供应商出厂前将屏幕名称别样固化最后用名称来绑定触控,因此暂时就到这里了
五、总结
本文介绍了麒麟桌面版Desktop从系统到各种环境配置的操作过程,解决下列问题
1、如何安装麒麟桌面版操作系统
2、如何离线下载软件包
3、解决刚装好没有SSH的问题
4、解决X11 问题使得可以远程打开图形化软件
5、安装配置java、mysql、docker、docker-compose、时间同步、vsftpd、samba、远程桌面,QT5.12
6、设备同时具备集显和独显外界多屏的配置方法和避坑、触摸校准配置等
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐










所有评论(0)