Raspberry Pi 400桌面定制¶
终于入手了 树莓派Raspberry Pi 400 ,我最初的想法是 在树莓派上运行Chromium OS(FydeOS) ,但是似乎目前的FydeOS的显示输出对我的显示器支持存在问题。加上我主要的目标是想研究 Chromium OS 的结构,所以我准备改成直接在 树莓派Raspberry Pi 4 上编译和构建chromium os。但是,Raspberry Pi 400则想先运行轻量级的精简Linux桌面系统,同时编译 Anbox - 在Linux上运行Android程序 来运行Android程序(ARM架构)。
备注
当前Raspberry Pi OS没有提供官方64位操作系统,所以 树莓派Raspberry Pi 400 运行的是32位操作系统。为了能够充分发挥 树莓派Raspberry Pi 4 的64位架构能力( Raspberry Pi Cluster 使用的是 树莓派Raspberry Pi 4 的8G内存硬件 ),同时构建 ARM架构Kubernetes 集群,在服务器端我使用的是64位Ubuntu ARM版本。
目标¶
使用官方原生Raspberry Pi OS,但是从
Raspberry Pi OS Lite
(字符终端版本) 开始定制,只安装最精简的必要软件在主机上构建 Anbox - 在Linux上运行Android程序 来运行基础的Android应用程序,以便通过 Android Atlas 来弥补Linux的一些商业应用程序不足
由于虚拟化非常消耗资源,实际我把所有ARM虚拟机都运行在 Raspberry Pi Cluster ,远程运行Android程序
本地开发环境通过Docker来构建
为了能够降低客户端资源消耗,我使用多台树莓派和Jetson Nano构建 ARM架构Kubernetes ,所以容器都运行在服务器端,桌面电脑几乎不需要消耗资源
安装¶
SO EASY
- 下载、校验、解压、制作启动TF卡:openssl sha256 2021-01-11-raspios-buster-armhf-lite.zip unzip 2021-01-11-raspios-buster-armhf-lite.zip sudo dd if=2021-01-11-raspios-buster-armhf-lite.img of=/dev/sdc bs=100M
通过制作的
Raspberry Pi OS Lite
TF卡启动树莓派400,可以看到首次启动会扩容根文件系统,然后重启进入字符终端界面
网路设置¶
既然我们初始安装的是最简化操作系统,我们所有的定制都需要通过网络,所以我们首先需要配置树莓派连接Internet。
修订主机名¶
通过
hostnamectl
修订主机名:hostnamectl set-hostname pi400
静态IP配置¶
默认
/etc/systemd/network
目录下有一个软链接:99-default.link -> /dev/null
这个实际上没有启用 systemd-networkd
所以移除:
unlink /etc/systemd/network/99-default.link
使用最精简的配置方法 Systemd Networkd服务 配置静态IP,创建:
systemctl stop dhcpcd systemctl disable dhcpcd
在
/etc/systemd/network
目录下创建10-eth0.network
1[Match]
2MACAddress=dc:a6:32:fc:9e:26
3
4[Network]
5Address=192.168.6.9/24
6Gateway=192.168.6.200
启动并激活
systemd-networkd
systemctl start systemd-networkd systemctl enable systemd-networkd
DNS解析器配置¶
使用 systemd-resolved 可以实现DNS解析器管理以及本地DNS服务:
修改
/etc/systemd/resolved.conf
:
1[Resolve]
2DNS=192.168.6.200
启动并激活
systemd-resolved
systemctl start systemd-resolved systemctl enable systemd-resolved
启动ssh¶
启动ssh服务并激活:
systemctl start ssh systemctl enable ssh
安装使用screen¶
为了能够不间断更新,强烈建议使用screen运行运维操作:
apt install screen
配置
~/.screenrc
如下:
1source /etc/screenrc
2altscreen off
3hardstatus none
4caption always "%{= wk}%{wk}%-Lw%{rw} %n+%f %t %{wk}%+Lw %=%c%{= R}%{-}"
5
6shelltitle "$ |bash"
7defscrollback 50000
8startup_message off
9escape ^aa
10
11termcapinfo xterm|xterms|xs|rxvt ti@:te@ # scroll bar support
12term rxvt # mouse support
13
14bindkey -k k; screen
15bindkey -k F1 prev
16bindkey -k F2 next
17bindkey -d -k kb stuff ^H
18bind x remove
19bind j eval "focus down"
20bind k eval "focus up"
21bind s eval "split" "focus down" "prev"
22vbell off
23shell -bash
然后执行
screen -S works
启用一个远程控制台,就可以继续执行系统升级更新等操作
操作系统更新¶
操作系统更新:
apt update apt upgrade
备份镜像¶
安装和更新树莓派操作系统是一个比较繁琐的过程(墙内更新树莓派网速非常慢),由于我考虑可能会不断推倒重装,所以考虑在更新完成后先做一次镜像备份。另外,如果需要维护大量的服务器,则可以采用自建Ubuntu软件仓库镜像或者 CentOS本地HTTP软件仓库 来实现大规模操作系统更新。
将TF卡再次插入读卡器,通过以下命令进行备份:
dd if=/dev/sdc bs=100M status=progress | xz | dd of=raspios-lite.img.xz
不过,上述方法对于128G的U盘并不友好,实际上是完全浪费了大量的空间(实际备份数据只有1.3GB)。我想到一个比较好的方法是,直接通过修改官方下载的镜像:先将镜像挂载到本地,然后通过chroot方式进入,更新和修订配置。这样得到的镜像可以直接使用。
备注
How to dd a remote disk using SSH on local machine and save to a local disk 提供了一个远程dd备份的方法可以参考:
ssh user@remote "dd if=/dev/sda | gzip -1 -" | dd of=image.gz
警告
实践发现这种 dd
方式备份效率实在太低,最终我放弃了这个方法。备份建议采用 通过tar备份和恢复Linux系统
修订时区localtime¶
默认安装完成raspios系统, localtime
时区是 London
修改修订成本地时区,例如 Shanghai
unlink /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
然后通过 date
命令检查一下时间,看看是否正确显示本地时间。
键盘布局¶
在国内购买的树莓派默认使用US键盘布局,但是树莓派是英国开发的,默认操作系统键盘布局是UK。请参考 How to Change your Keyboard Layout on Raspberry Pi? (Raspbian) 调整键盘布局。
但是,我遇到一个非常奇怪的 Keyboard Layout之谜 ,虽然我通过 raspi-config
配置了 us
类型键盘,但是英文输入时却发现键盘表现为 uk
布局。
原因是输入法 fcitx
默认添加了一个 uk
类型的keyboard,这个配置不在系统配置中,所以不管我怎么调整都无效。详细设置见 Keyboard Layout之谜
基础桌面¶
我最中意的桌面是轻巧兼功能的 xfce ,同样在 Jetson运行Xfce4桌面 ,现在在Raspberry Pi 400上我也采用Xfce4
apt install xfce4
在用户目录添加
~/.xinitrc
内容如下:exec startxfce4
这样就可以通过
startx
命令启动进入桌面
无线设置¶
首次使用Raspberry Pi 400,终端会提示:
Wi-Fi is currently blocked by rfkill.
Use raspi-config to set the country before use.
raspi-config树莓派工具 是一个终端交互配置工具,非常方便设置一些系统功能。上述提示表明,在启用Wi-Fi之前,首先需要设置 WLAN Contry
,这是因为 5GHz WiFi需要明确设置 country=CN
才能激活使用。 ( 使用wpa_supplicant连接无线网络 实践中可以看到必须设置 country=CN
,如果使用 netplan网络配置 配置,则需要配置 /etc/default/crda
设置项 REGDOMAIN=CN
)
启动WiFi接口:
rfkill list rfkill unblock wifi
通过 使用systemd-networkd配置无线 连接无线
应用软件¶
终端
默认安装的终端是 uxterm
,但是对中文字体显示不友好。所以还是安装Xfce4的默认终端:
apt install xfce4-terminal
浏览器
默认安装的Xfce4桌面已经具备了一些基础软件,不过还需要浏览器。我比较倾向于使用开源的firefox,但是实际工作中很多业务网站已经完全chrome化了(就像当年微软的IE强制使用特殊的功能),导致不得不同时安装两个浏览器:
apt install firefox-esr chromium
firefox-esr
是 Extended Support Release (ESR)
如果需要切换默认浏览器,则执行:
sudo update-alternatives --config x-www-browser
安装中文字体(文泉驿微米黑)和输入法fcitx:
apt install fonts-wqy-microhei fcitx fcitx-googlepinyin
安装fcitx会安装很多依赖软件包,主要是针对qt和gtk的库,非常庞大。如果不需要中文输入,仅仅作为中文浏览可以不安装。
修订
.xinitrc
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx exec fcitx & exec startxfce4
重新登陆Xfce4桌面,然后执行
fcitx-configtool
命令进行配置。安装 VS Code
安装音乐播放软件, 截图和图片浏览:
apt install audacious flameshot mupdf ristretto