Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Raspberry Pi 400 Upgrade to Debian 12 Bookworm 64-bit #6

Open
bamanzi opened this issue Dec 10, 2024 · 6 comments
Open

Raspberry Pi 400 Upgrade to Debian 12 Bookworm 64-bit #6

bamanzi opened this issue Dec 10, 2024 · 6 comments
Labels

Comments

@bamanzi
Copy link
Owner

bamanzi commented Dec 10, 2024

我这个树莓派大约是2021年上半年买的(但我在淘宝和京东上居然都没有收到购买记录),型号是Raspberry Pi 400,就是把树莓派做在键盘里面的那个版本,是2020年底刚推出的。(之前那个树莓派2在2019年下半年就坏了,先坏的是HDMI输出,我还用远程ssh凑合了一阵。)

raspberry pi 400

记得当时买的时候是带CF卡,并且刷好系统的,当时的系统是Raspbian 10 Buster。反正我是放在办公室偶尔用用,常用软件也就emacs, chromium, tusk, git这几个,所以即使后来Raspbian 11 Bulleye (2021.11)Raspbian 12 Bookworm (2023.10)发布,我也都没有升级。

这几天有些闲暇,加上手痒了,于是将树莓派错从Raspbian 10 Buster升级到了Bookworm (Debian 12),并且这次改用了64位的版本。

改用arm64的原因是:

  • 不少闭源程序只提供64位的版本;
  • 还有不少开源程序虽然支持armhf,但只预构建arm64,而armhf要自行编译;
  • 又或者即使提供了armhf的二进制包但是针对普适的armhf的,并未针对树莓派优化过(树莓派的armhf
  • 另外,据说A64指令集在性能上有优势;

参考: Raspberry Pi OS (64-bit)

BTW: Raspberry Pi OS目前还是支持32位的,每次更新镜像都是同步刷新的,甚至在下载页面也还是优先推荐32位版本

@bamanzi bamanzi added the blog label Dec 10, 2024
@bamanzi
Copy link
Owner Author

bamanzi commented Dec 10, 2024

烧卡

新买了一张 CF 卡(树莓派官方并不推荐采用apt-get upgrade & apt-get dist-upgrade这样的方式,一方面是CF卡写入的速度问题,另一方面是据说有些问题)。

BTW: 现在闪迪128G 的金卡都只要89元了(读取速度190M/s,京东没写写入速度,查了亚马逊说是90M/s),而2018年买的32G黑卡是130元(读取速度120M/s)。
不过注意这个卡需要比较新的读卡器,我手头的两个旧读卡器都识别不到这张卡,最后发现便携附带的那个多用Dock才能用。

推荐使用树莓派官方提供的imager工具来"烧"镜像(而不再推荐使用原始的dd),因为这个工具可以让你提前做一些配置(比如hostname、默认用户名、WiFi、键盘布局等)

rpi-imager: General settings in the OS customisation menu.

树莓派官方提供的 for Ubuntu x86 的deb包并不兼容于我在用的Linux Mint 21.3 (基于Ubuntu 22.04 LTS),用dpkg -i imager_latest_amd64.deb安装时会报告不少依赖包找不到;
另外又因为我用来烧卡的读卡器是便携机附带的多用Dock(只有USB-C接口),我又不能直接在原来的树莓派上的rpi-imager(可用apt-get install rpi-imager安装)来写卡;
于是最后只能用便携机(装的是Windows 11)来写卡

@bamanzi
Copy link
Owner Author

bamanzi commented Dec 10, 2024

软件包仓库配置

1.树莓派“官方软件包仓库

1.1 raspbian (原名): Debian包的arm版本

raspbian: 这一部分来源于Debian维护的包,不过在armhf(32位)上,树莓派的团队会重新全编译一遍(因为Debian的armhf所支持指令集上比较老(为了兼容更多的设备),树莓派为了性能考虑重新构建),以raspbian的名字提供(在各个镜像仓库上也是这个,比如 https://mirrors.ustc.edu.cn/raspbian/raspbian/);

不过到了64位版本(arm64),raspbian就没有意义了 ,Raspberry Pi OS上直接采用了Debian官方仓库提供的arm64包 。

浏览https://mirrors.ustc.edu.cn/raspbian/raspbian/pool即可看到里面只有armhf的包,没有arm64的包。

$ cat /etc/apt/sources.list
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
# Uncomment deb-src lines below then 'apt-get update' to enable 'apt-get source'
#deb-src http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
#deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware
#deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware

这个配置文件没必要修改(改成国内镜像),因为 http://deb.debian.org 本就是基于CDN加速的。如果你那里有问题,也可以试试将http://deb.debian.org换成http://mirrors.ustc.edu.cn/debian这类国内镜像。

1.2 树莓派的团队自己提供/修改的一些软件

树莓派的团队自己提供/修改的一些软件,比如他们的固件、修改/优化过的桌面/chrome/firefox浏览器、集成的第三方软件等等;这一部分在各个镜像仓库上多是用raspberrypi或者archive.raspberrypi.org这个名字(比如 https://mirrors.ustc.edu.cn/raspberrypi/debian/);

$ cat /etc/apt/sources.list.d/raspi.list 
deb http://archive.raspberrypi.com/debian/ bookworm main
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.com/debian/ bookworm main

国内访问的话,为速度考虑,建议将http://archive.raspberrypi.com/debian/换成http://mirrors.ustc.edu.cn/raspberrypi/这类国内镜像。详细说明可参考: https://mirrors.ustc.edu.cn/help/raspberrypi.html

2. 其它包仓库

2.1 Debian Backports

这是Debian官方提供的一个仓库。由于stable(当前即bookworm)里面的软件比较老,所以Debian将一部分当前testing套件里面的软件移植回stable(会在stable上重新编译),前提是依赖关系能够满足(或者被依赖包也在backport里面)。

具体使用方法是:

  1. 添加仓库地址:
echo "deb http://deb.debian.org/debian bookworm-backports main" | sudo tee /etc/apt/backports.list
  1. 刷新包列表: sudo apt update
  2. 安装软件包。比如sudo apt install emacs-gtk/bookworm-backports

注意第三步,安装bookworm-backports里面的软件包是要在包名后指定suite(即带有/bookworm-backports这一部分)。

详细说明:Debian Backports >> Instructions

2.2 Raspbian Addons

这是一个第三方仓库,收录了一些第三方软件。不过已经在2022年底停止维护了,而且在停止维护时bookworm还没出来,所以它本来也不支持bookworm

由于已经停止维护,所以原本的主页(https://raspbian-addons.org )、包仓库(https://apt.raspbian-addons.org )现在都无法访问了。
如果你想在buster或者bullseye上面使用这个仓库的话,可以用如下方式配置:

## trust GPG key
curl -fsSL https://github.com/raspbian-addons/raspbian-addons/raw/refs/heads/master/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings
## add apt repository
echo "deb [signed-by=/usr/share/keyrings/raspbian-addons-archive-keyring.gpg] https://mirrors.ustc.edu.cn/raspbian-addons/debian precise main" | sudo tee /etc/apt/sources.list.d/raspbian-addons.list
## refresh package list
sudo apt update

你也可以不添加apt仓库,然后自行到https://mirrors.ustc.edu.cn/raspbian-addons/debian/pool/ 下载你想安装的软件包,然后用sudo dpkg -i foobar.deb进行安装

P.S.

2.3 铜豌豆Linux

铜豌豆 Linux 是基于 Debian 的 Linux 中文 开源操作系统。它在 Debian 基础上,制作并集成中文桌面用户常用的软件(比如微信、QQ、搜狗输入法、有道词典/星际译王、中文字体、WPS等)。

铜豌豆Linux 虽然是一个基于Debian的Linux发行版,但它也可以作为一个额外的apt包仓库使用,并且支持aarch64(部分商业软件只有x86版本)。在Debian 12 (Bookworm)上面添加此仓库的方法如下:

wget 'https://www.atzlinux.com/atzlinux/pool/main/a/atzlinux-archive-keyring/atzlinux-v12-archive-keyring_lastest_all.deb'
sudo apt install -y atzlinux-v12-archive-keyring_lastest_all.deb
sudo apt update

(详细说明请参考原文 添加铜豌豆软件源 - Debian 12版本

当然,你也可以浏览包仓库,自行下载deb包,然后手工安装:

@bamanzi
Copy link
Owner Author

bamanzi commented Dec 10, 2024

X11 -> Wayland

Raspbian 12 Bookworm默认不再使用X11,而是Wayland了(见Bookworm — the new version of Raspberry Pi OS)。不过大多数X11程序还是可以通过一个叫做XWayland的兼容层运行(对用户而言基本上是透明无感的)。

但我之前比较习惯的几个程序还是有了点变化:

后者需要的是Compositing window manager - Wikipedia这种类型,archwiki上列举了一些这个类型的窗口管理器: Wayland - Compositors
Raspbian 12默认提供的是labwc(这还是10多天之前改的,在此之前三年一直是mutter(当时也是为了给GTK+ 3和Wayland铺路而从openbox切换过来的: Bullseye - the new version of Raspberry Pi OS

  • plank 也不支持wayland

archwiki上的说明加了XDG_SESSION_TYPE=x11也仍然不能跑起来。问题出在libwnck,会在报错libwnck is designed to work in x11 only后segfault

补记:屏保与屏幕闲时锁定

Wayland 目前还没有完善的屏保解决方案(而且有很多人都在喊“现在屏幕保护程序已经没有意义了”),网上搜到一些自行折腾的方案(和相关讨论),先存在这里:

但先不管屏幕保护程序,至少屏幕锁定还是需要的。

补记2:如果你还是想用X11

可以在终端中执行sudo raspi-config,然后在6 Advanced Options ->A6 Wayland中选择W1 X11即可(需要重启树莓派才能见到X11)。可按How to switch from Wayland to X11 on Raspberry Pi提供的图片操作。

@bamanzi
Copy link
Owner Author

bamanzi commented Dec 10, 2024

中文字体与中文输入法

中文字体

sudo apt install xfonts-wqy fonts-intl-chinese  xfonts-intl-chinese-big # bitmap fonts
sudo apt install fonts-wqy-* fonts-arphic-*  # truetype fonts
sudo apt install fonts-noto-cjk  fonts-noto-cjk-extra

locale

先添加中文locale支持

sudo apt-reconfigure locale

然后在对话框里选上en_US.UTF-8zh_CN.UTF-8

下一步:

  • 如果使用英文显示,但需要使用中文输入法,可以修改 ~/.profile,在里面加上export LC_TYPE=zh_CN.UTF-8
  • 如果想将界面显示也全部切换到中文,则启动raspi-config(顶菜单Preferences»Raspberry Pi Congfiguration),在最后一栏Localisation中修改locale为zh_CN.UTF-8,然后重启树莓派(也许Logout再登入也行)

中文输入法 fcitx5

虽然 Fcitx5 自己针对 Wayland 写了很详细的文档: Using Fcitx 5 on Wayland - Fcitx ,但并没有多么复杂,至少在Debian上是如此,im-config会帮我们配置好绝大多数地方。

sudo apt install fcitx5-pinyin fcitx5-chinese-addon
im-config

运行im-config选择输入法为fcitx5,它会帮我们做好各种配置(XMODIFIERS, GTK_IM_MODULE等等)。

然后,从图形界面注销再重新登入,就可以看到顶层工具条上多了一个en按钮,可以通过右键菜单打开设置界面,添加PinyinShuangpin等输入法。

然后打开一个程序,试试用ctrl+space开关输入法,用ctrl+shift切换不同输入法。如果无效果,检查上面步骤里设置的LC_CTYPE环境变量

@bamanzi bamanzi changed the title Raspberry Pi 400 Upgrade to Raspbian 12 Bookworm 64-bit Raspberry Pi 400 Upgrade to Debian 12 Bookworm 64-bit Dec 19, 2024
@bamanzi
Copy link
Owner Author

bamanzi commented Jan 7, 2025

scrcpy

升级到bookworm之后Debian官方仓库里没有scrcpy这个软件了:目前只有bullseye里面有,而新版本一直卡在unstable里面。而且这里的 新版本 还是 1.25,而上游都已经发布v3.0了(而且v2.0还是2023年3月发布的)。

在网上翻到Escrcpy这个软件提供了arm64的二进制包(而且是.deb包),并且说从v1.27.1版本开始里面就集成了scrcpyadb。没想到安装后无法拉起scrcpy,手工检查一下结果发现里面所带的scrcpyadb其实是x86_64版本的(已经有人反馈这个问题了:arm linux上的adb仍然是x64的,所以无法使用 · Issue #152 · viarotel-org/escrcpy

解决方法: 用pi-apps安装

pi-apps 提供了这个软件的安装脚本,我刚才安装的时候就已经支持今天刚刚发布的v3.1了

具体安装方法:很简单,先安装上pi-apps,然后在界面上选择Tools->Scrcpy,点击Install就可以了

补充说明:

  • pi-apps提供的安装脚本其实基于自行编译的,不过它自己会解决各种依赖包方面的问题;
  • 脚本中访问的部分网络资源需要科学上网,所以需要在安装pi-apps自身、启动pi-apps来安装scrcpy时设置代理,例如: export https_proxy=http://127.0.0.1:7890

@bamanzi
Copy link
Owner Author

bamanzi commented Jan 7, 2025

apt仓库内的一些桌面软件

  • FlameShot
  • Catfish
  • Xpad (便签)

其它一些软件

Footnotes

  1. raspbian-addons为buster所提供的arm64 deb包其实是可以在bookworm arm64上面运行,不过deb包声明的一个包依赖有问题(其实不影响运行)。如果你搞不定dpkg --configure时的依赖问题,可以用dpkg-deb -X tusk_0.23.0_arm64.deb ./tusk将软件解压出来运行

  2. 没有必要安装nautilus_nutstore_aarch64.deb这个包(除非你打算安装nautilus文件管理器)。按照如何为KDE/XFCE桌面系统安装坚果云的说明下载安装二进制包nutstore_linux_dist_aarch64.tar.gz即可。注意arm64上nutstore_linux_dist_aarch64.tar.gz 下载地址应该是: https://pkg-cdn.jianguoyun.com/static/exe/installer/nutstore_linux_dist_aarch64.tar.gz

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant