一、前言
现有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用户,然后修改配置
bash
vim /usr/share/lightdm/lightdm.conf.d/95-ukui-greeter.conf
添加两行,效果如下
bash
greeter-show-manual-login=true
all-guest=false

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

重启机器看效果

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

1.2.5 禁用nouveau避免和nvidia显卡驱动冲突
现象:黑屏或者右上角光标闪烁或者内核选项后直接卡死
bash
vim /etc/modprobe.d/blacklist-nouveau.conf
添加下面两行
bash
blacklist nouveau
options nouveau modeset=0
保存退出更新
bash
update-initramfs -u
这样即便黑屏(可以ctrl+alt+f1/2/3/4/5 切换到其他tty或者说可以切换到命令行模式),至少不会因为冲突导致系统卡死(操作都无效,只能硬关机)
1.3 准备和安装软件包
离线包准备
有网络可以直接apt update 和apt install,但是无法联网就很难受了,麒麟桌面版本身连SSH服务端都没,为了便于复用所以建议在有网的机器上将所需的环境包都离线下载,方法如下
联网机A:
更新软件源: apt update

离线下载软件(从示例中选用或者添加)
bash
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 软件
bash
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转发
修改后保存退出即可
bash
vim /etc/ssh/sshd_config


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

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

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

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

bash
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
也可在制作离线包的时候下好,但默认是mysql8.0 ,这里介绍部署Mysql5.7
1.8 安装docker和docker-compose
docker下载地址
传到机器上进行安装
解压并拷贝
bash
tar -xf docker-20.10.10.tgz
cp -ra docker/* /usr/bin/
docker --version
Docker version 20.10.10, build b485636
写一个containerd.service
bash
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
bash
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
bash
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的部署
bash
groupadd docker
systemctl enable --now containerd.service
systemctl enable --now docker.socket
systemctl enable --now docker
docker ps
docker-compose下载地址
下载后只有一个可执行文件,添加执行权限传到/usr/bin下即可
bash
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 以避免冲突
bash
apt install -y chrony
更改配置文件,配置当前的麒麟是服务端

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

在192.168.1.232 上配置chrony 的客户端

重启两头的chrony服务
bash
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
bash
apt install -y vsftpd
改成如图所示
bash
vim /etc/vsftpd.conf

bash
vim /etc/ftpusers

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

后续待更新
1.11 配置samba
安装samba
apt install -y samba
修改samba的配置文件,直接复制下列指令即可
bash
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服务端和客户端
bash
apt install -y tigervnc-viewer tightvncserver
启动vnc服务并输入密码
bash
vncserver :1
通过SSH先登录这台主机,然后使用vncviewer localhost:5901测试 远程之后会出现灰屏现象

处理方法:安装Xfce 简化桌面快速解决问题
bash
apt install xfce4 xfce4-goodies xfce4-session
修改要远程的用户的X文件,以我的普通用户为例
bash
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服务
bash
vncserver -kill :1
vncserver :1
vncviewer localhost:5901
成功

1.13 QT5.12 部署
麒麟系统自带的源中包含了QT5.12.12 ,因此我们有网络的情况下可以直接使用下列命令即可完成QT5.12.12的安装,如果无法使用网络也可以参考1.3 小节制作离线仓库的方法进行处理(apt-get --download-only install -y qt5* qtcreator) 900多M
要使用源码安装的,参考这个链接
基于debian的银河麒麟桌面版离线安装QT5.12.8_qt-everywhere-src-5.12.8.tar.xz-CSDN博客
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部署和初步验证

