安装icewm简单版本
-
首先准备好无图形界面的操作系统raspberry pi OS 64-bit,我使用的是2022年4月4日的版本。新版本的系统删除了默认的pi用户,需要自己创建,最好使用rpi-imager可以配置。
-
配置好串口,wifi,ssh等基础设置,使用最新的rpi-imager可以配置这些属性。
-
安装X window的最小系统
apt-get install --no-install-recommends xdm icewm icewm-themes xserver-xorg xserver-xorg-core xserver-common xorg xterm x11-apps xfonts-base xfonts-100dpi xfonts-75dpi xfonts-scalable
xserver-xorg xserver-xorg-core xserver-common xorg是x11的组件
-
修改~/.xsession文件
#!/bin/bash # set wm to default window manager # set xchoose to "/usr/bin/choosewm" or "" to not run choosewm and use default wm="/usr/bin/icewm" xchoose="" # Comment out next line to not run choosewm xchoose="/usr/bin/choosewm" # # Personal configuration stuff # xrdb < ~/.Xdefaults xhost + xsetroot -solid black # # run choosewm (which will run the selected wm) or the default wm # [ -x "$xchoose" ] && exec $xchoose [ -x "$wm" ] && exec $wm # # If we get here, something is wrong, so run an xterm # exec /usr/bin/xterm
-
重启树莓派,如果是直接外接屏幕。进入的是非图形界面,使用startx可以启动图形界面,使用的是icewm,这个界面有window95的风格。
树莓派官方推出了很多版本的系统,上面这套流程在非最新版系统上都可以正常运行。最新版的系统上还有一些bug,后面会介绍绕过这个bug的方法。
使用xrdp服务远程树莓派桌面
-
安装xrdp服务
sudo apt install xrdp
-
检查xrdp服务的状态
systemctl show -p SubState --value xrdp
-
由于xrdp需要使用
/etc/ssl/private/ssl-cert-snakeoil.key
。需要将xrdp用户添加到ssl-cert组中,使得xrdp用户可以访问到该文件sudo adduser xrdp ssl-cert
这里因为xorg自带一个图形界面,需要配置一下xrdp的启动脚本,脚本在/etc/xrdp/startwm.sh
查看一下内容,我这里的脚本是调用x11的启动脚本,这样用xrdp打开的图形界面和直插显示屏的图形界面是一致的。在freebsd上xrdp是自己调用x11的工具起了一个图形界面。
安装其他的窗口管理器
下面以dwm为例,安装之后的外观如下图
下面介绍一下安装流程
安装流程
-
下载dwm组件的源码,方便自己定制桌面
# dwm:平铺式窗口管理器 git clone https://git.suckless.org/dwm # st:dwm使用的终端模拟器 git clone https://git.suckless.org/st # dmenu:dwm使用的应用启动器 git clone https://git.suckless.org/dmenu
-
安装编译dwm需要的库依赖。很多窗口管理器需要x11的库,用于编译
sudo apt install libx11-dev libxft-dev
这里需要对x11库稍微有点了解,找到dwm需要的x11相关的头文件,上面两个库都需要安装。
-
在上面3个仓库中做如下修改
每个仓库都执行一下
sudo make clean install
. -
接下来是将启动dwm加入到x11的启动脚本中,方法很简单,先看一下x11的启动脚本
这里与freebsd不太一样,在freebsd中,xinitrc脚本就直接调用了x11的工具集,启动图形界面,每个用户可以在自己的
~/
中将xinitrc复制为.xinitrc。将最后5行用#注释掉,再加上exec dwm
raspberry pi OS基于Debian开发,这里与freebsd不同,这里调用了Xsession脚本,Xsession脚本调用x11工具集启动图形界面。每个用户可以直接在
~/
中创建.xsession文件,内容为exec dwm
。 -
这样如果在不是最新版的raspberry pi OS上按上面的流程配置完成。就可以使用rdp client连接上树莓派使用平铺式的图形界面了,存储的占用很小,性能也与终端访问接近,还能打开浏览器等需要图形界面的应用。
2022-04-22 raspberry pi OS上xrdp的bug
但是如果在最新版的raspberry pi OS执行了上述流程,结果可能是连上之后还是蓝屏之后黑屏。这里我查看了错误log,发现有打不开驱动的权限问题,去树莓派官方论坛中找了一下,在xrdp的github项目中有对应的issue。
解决方案如下
sudo nano /etc/X11/xrdp/xorg.conf
# Find:
Option "DRMDevice" "/dev/dri/renderD128"
# Change to:
#Option "DRMDevice" "/dev/dri/renderD128"
Option "DRMDevice" ""
# Save and exit
sudo reboot
这种方式是让xrdp不去调用设备,会导致远程桌面有些卡顿,另一种方式是使用openbox。