诗盗·蝶恋花·轮回

《#诗盗#·蝶恋花·轮回》

作者:赝稣

建局筹钱难砌路,
两袖清寒,
艳资双飞去。
科技不谙人间苦,
资本到晓造骗术。
昨夜吸风凋敝,
稣独上高楼,
望尽轮回路。
欲寄此生予来世,
宇宙洪荒知何处?

注解

望尽轮回路:稣早就悟透轮回,宇宙是一个整体,每个意识都是同一个意识的不同世,意识可以向过去转世。

欲寄此生予来世:想把今生的记忆传递给来世。(其实也想着想起前世的记忆)

宇宙洪荒知何处:但是宇宙洪荒啊,鬼知道前世是不是条臭虫?算了,还是潇洒走一回吧~

用华为擎云 L420 体验国产操作系统(UOS 和银河麒麟)

用户故事

稣很爱国!从 2019 年起,就不时想用国产操作系统,但基本停留在虚拟机体验的层次,今年终于在物理机长期实践了。

建议

最好别买工程机。如果非要买的话,要同时看准 BIOS 和 EC 的版本。

硬件环境

华为擎云 L420 工程机,型号是 KLVV W5821。

  • BIOS Revision: 0.9
  • Firmware Revision: 0.8
  • hisi Version: 1.0.0.3

某鱼上捡的,外观惨不忍睹,而且就一个主机,配件全无。

到手时,是残缺状态的 UOS 20 1022,基本不能用,只能开机看个寂寞。也是,要不然也不可能 2000 块以内买到……

体验 UOS 20 1041

加了统信两个企业微信群,好不容易要到了一个 iso,然而根本不能启动。稣激动地插入 U 盘,结果它直接黑屏死掉!

机智如稣,立刻想到原来的系统可以启动,把旧系统的内核拿来用不就行了?em,这么干确实成功启动。

之前的系统缺失应用商店等系统组件,装完系统后,总算是一个完整的 UOS 了。然而内核还是旧的,所以……八哥如下:

  1. 内建显示器无法调节亮度,只有关闭和中等亮度两个状态。【稣含着泪,倔强地说道:稣就当服务器用,要什么内建显示器?】

  2. 外接显示器没反应。【稣含着泪,倔强地说道:稣就当服务器用,要什么外接显示器?】

  3. 偶尔开机后没声音。不过注销一下,再登录就能恢复。【稣含着泪,倔强地说道:稣就当服务器用,要什么扬声器?】

  4. 从待机状态恢复后,有小概率内建键盘失灵或内建触摸板控制不了光标。但外接键鼠没问题。【稣含着泪,倔强地说道:稣就当服务器用,要什么键鼠?】

  5. 拔下充电器后,任务栏的电池图标依然一直显示正在充电。

  6. 最可怕的是:开机久了,比如两三周,就有可能无法关机。前兆是同时键盘失灵,这时候关机,并不会真的断电,卡死在一个硬件奇异点,长按开关机键也无用,只能拆后盖断电池排线才能解决。据机友反馈,BIOS 0.11 也有这个问题。

好吧,以上问题都是因为固件的版本太低,只能用充满八哥的低版本内核。只要升级固件,再升级相应的内核就可以解决。但是升级固件这个事太难了……这可是一个奇怪的工程机啊!正规手段都是各种失败,即使是解开固件 deb 包,手动运行 BIOSEC,让它分离出 Firmware.bin 和 Update.txt,也失败!把 Firmware.bin 拿去 BIOS 界面升级固件,依然失败!

BIOS 是百敖 0.09,果然难搞!好吧,没刷成砖头就好。咱们来日方长……【稣含着泪,倔强地说道:学习是终生的,而问题都是一时的!】

接下来说说系统本身的问题:其实 UOS 本身没问题,稣很满意,还是个适配的问题。

L420 的显示服务器是 xwayland,因为其使用的 mali GPU 的用户态驱动是闭源的,只支持 wayland,不支持 x11。这导致部分稣常用的软件无法正常工作,比如远程桌面客户端,em……目前还没发现能用的。【稣含着泪,倔强地说道:稣就当服务器用,要什么客户端?】

体验银河麒麟桌面操作系统 V10

听说银河麒麟更爱国,稣从它的壁纸就可以看出来,这绝对是真的!

银河麒麟桌面

还是熟悉的味道,原版 iso 无法启动,换内核,启动正常,安装也正常。

银河麒麟不愧是上个世纪就诞生的国产操作系统,十分满意,默认设置,只有一个地方稣无法忍受——居然不是默认开启「自然滚动」!而且,图形界面下居然没地方设置?不知道和没激活有没有关系?

银河麒麟-设置-设备-触摸板

但是这对使用 Debian 4 年以上经验的稣来说,简直易如反掌,命令行搞定,注销重新登录生效:

1
gsettings set org.ukui.peripherals-touchpad natural-scroll true

在另一台机器(非 L420)安装银河麒麟后,又发现一个问题比较难以接受:外接显示器的放大比例无法独立设置!

银河麒麟-设置-系统-显示器

任务栏这个风格也不太方便,还是合并到一起好。

银河麒麟-任务栏

另外有一个惊喜,文件管理器借鉴了 macOS 的做法,有个颜色分类功能,很不错!(访达少数满意的地方)

银河麒麟-文件管理器

其他机友关于 BIOS 版本的经验

以下非本人经验,仅供参考,不保证正确性,也不提供相关资助:

  • BIOS 0.11:目前也是升级无望,有机友已经找过华为工程师,结果都搞不定。

  • BIOS 0.18:根据不止一人反馈,是可以升级到 1.x 的。

  • 某鱼兼某论坛上的大佬说任何 BIOS 都是能升级的,但 EC 无法升级。

  • 推测,有些八哥可能来自 EC,所以如果 EC 无法升级,那么即使 BIOS 升级好也无法解决这些八哥,那就只能拆换配件了。

智能时钟

智能时钟是什么?

  • 基本功能:时钟、闹钟,并能进行自定义,比如老年人大字体,自定义闹铃等。

  • 额外功能:下载、文件共享……

为什么需要智能时钟?

  • 手机是私人物品,而且小孩子不一定有,家庭还是需要一个时钟的。

  • 看时间这事,时钟比手机更有仪式感。比如稣就很怀念小时候的机械时钟,几点就响几下,曾经觉得特别神奇。

  • PC 上的迅雷越来越大坨了,而且稣特别怀疑它老在扫描硬盘里价值千万的代码,所以想让它在一个独立的设备运行,那可不就是运行在智能时钟里最合适吗?

  • 少量文件共享,特别是看完就删的电影,如果买 NAS,那多贵呀,多费电呀……NAS 显然不适合穷稣,稣只愿意为文件共享付出一张 32G 的 MicroSD 卡。

  • 全家可以参与制作,是一个家庭娱乐项目。

  • 时钟拥有智能后,您还可以想出更多好玩的!

怎么做一个智能时钟?

稣正好有一个屏幕失灵的八英寸的平板电脑,酷比魔方 iWork 8,拿它来做智能时钟刚好合适。

SmartClock

当然,如果能定制一个,那更好:

  • 摄像头都拿掉:后摄像头是贴墙的,肯定没用了,前摄像头也许能想到用途,但稣暂时用不上,所以也把它挡起来。

  • HDMI 接口可以拿掉:已经不需要外接显示器。

  • 需要屏,但没必要是触摸屏:事实上稣的 iWork 8 就是触摸坏掉,作为时钟并没有啥不便。

  • 耳机接口没必要:它只会增大厚度,即使是当作平板电脑用的时候,就从来没插过!

去掉这些东西后,这一台全新的平板智能时钟,大约就卖 99 块,吧?反正再贵点,稣就不买。

稣在 B 站扔了两个劣质视频,笑纳吧(不好笑的话,可以上去吐槽):

甚至还有开源项目:

具体制作过程

1. 安装智能时钟操作系统——Debian

为什么?除了因为稣喜欢它,更重要的原因是:原装的 Windows 太大了,没啥剩余空间,而且定制「锁屏界面」真的难!Debian 小很多,也容易定制。其它 Linux 发行版不够爱国,被稣无视了。

注意:选择【不安装】桌面环境!

参考:在华硕灵耀 X 纵横上装 Debian 桌面的经验

这步会遇到坑——这些 2G 内存的老平板很可能只支持 32bit 的 EFI 启动!

2. 安装驱动

iWork 8:

1
sudo apt install firmware-realtek firmware-intel-sound

Dell Venue 8 Pro 稍微麻烦点:

1
2
3
4
apt install firmware-atheros

git clone https://github.com/UMU618/ath6kl-firmware
sudo cp -r ath6kl-firmware/ath6k/AR6004/hw3.0/ /lib/firmware/ath6k/AR6004/

3. 配置无线网络

建议采用 NetworkManager 的方式:

1
sudo apt install network-manager

参考:https://wiki.debian.org/WiFi/HowToUse#NetworkManager

话说这里有个矛盾——要是一开始没网络,怎么 apt?当然是先插个 USB 有线网卡了……如果没有的话,需要离线把无线网卡驱动准备好,U 盘和 dpkg 大法。

4. 安装 SDDM 和 i3

1
2
3
sudo apt install xserver-xorg-video-intel
sudo apt install xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse
sudo apt install sddm i3 sakura fonts-wqy-zenhei

为什么是反人类的 i3

  • 因为它很小,能够获得更多剩余空间!

  • 只跑个迅雷您还要什么大型桌面?

  • Samba 服务也不要什么桌面呀!

  • i3 是反人类,但稣很喜欢 i3 呢……

5. 安装智能时钟主题

参见开源项目:

https://github.com/UMU618/sddm-theme-clock

https://gitee.com/umu618/sddm-theme-clock

没错,这两个链接在本文出现了两次!

6. 安装远程桌面服务

时钟挂在墙上,主要的使用方式当然是 SSH 或远程桌面(RDP)过去。使用迅雷这样有界面的程序,最好就是通过远程桌面。

1
sudo apt install xrdp

7. 安装迅雷

1
2
3
wget http://archive.kylinos.cn/kylin/partner/pool/com.xunlei.download_1.0.0.1_amd64.deb
sudo dpkg -i com.xunlei.download_1.0.0.1_amd64.deb
sudo apt install libgtk2.0-0 libnss3 libdbus-glib-1-2

迅雷的启动命令是:/opt/apps/com.xunlei.download/files/start.sh

8. 安装做共享用的 Samba

1
sudo apt install samba

来个配置例子:

1
2
3
4
5
6
7
# cat /etc/samba/smb.conf
[movie]
comment = Movie
browseable = yes
path = /mnt/sd/movie
read only = yes
guest ok = yes

9. 全家出动录音做闹钟声

直接在平板电脑上用 arecord 录有点麻烦,建议在 PC 上录再用 scprz 上传,wav 格式的就行。

调节音量可以用:

1
2
sudo apt install alsa-utils
alsamixer

然后在 crontab 脚本里用 aplay 播放。

参考稣家里的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
root@uclock:/opt/clock# ll
总用量 3228
-rw-r--r-- 1 root root 179300 May 12 22:37 0730.wav
-rw-r--r-- 1 root root 271548 May 5 21:57 0750.wav
-rw-r--r-- 1 root root 452796 May 5 22:03 1345.wav
-rw-r--r-- 1 root root 432312 May 5 21:46 2200.wav
-rwxr-xr-x 1 root root 168 May 6 22:23 alarm.sh
-rwxr-xr-x 1 root root 184 May 6 22:28 chime.sh
-rw-r--r-- 1 root root 208088 May 5 02:57 chime.wav
-rw-r--r-- 1 root root 171206 May 5 22:09 near_0750.wav
-rw-r--r-- 1 root root 429254 May 6 00:21 near_1345.wav
-rw-r--r-- 1 root root 500934 May 6 00:24 near_1345+.wav
-rw-r--r-- 1 root root 624838 May 5 22:12 near_2200.wav
-rwxr-xr-x 1 root root 199 May 6 00:29 near_alarm.sh
-rwxr-xr-x 1 root root 53 May 5 23:21 screen_off.sh
-rwxr-xr-x 1 root root 186 May 6 03:13 screen_on.sh

root@uclock:/opt/clock# crontab -l
0 * * * * /opt/clock/chime.sh
0 2 * * * /opt/clock/screen_off.sh
0 7 * * * /opt/clock/screen_on.sh
30 7 * * 1-5 /opt/clock/alarm.sh
47 7 * * 1-5 /opt/clock/near_alarm.sh 0750
50 7 * * 1-5 /opt/clock/alarm.sh
42 13 * * 1-5 /opt/clock/near_alarm.sh 1345+
43 13 * * 1-5 /opt/clock/near_alarm.sh 1345
45 13 * * 1-5 /opt/clock/alarm.sh
45 13 * * 1-5 /opt/clock/alarm.sh
57 21 * * * /opt/clock/near_alarm.sh 2200

alarm.sh 脚本:

1
2
3
4
5
6
7
8
9
#!/bin/sh

CD="$(cd $(dirname $0) && pwd)"
FILE="${CD}/$(date +%H%M).wav"
if [ -f $FILE ]; then
/usr/bin/aplay -D plughw:1,0 ${FILE}
else
echo "$FILE not found!"
fi

chime.sh 脚本:

1
2
3
4
5
6
7
8
9
#!/bin/sh

CD="$(cd $(dirname $0) && pwd)"
/usr/bin/aplay -D plughw:1,0 ${CD}/chime.wav

FILE="${CD}/$(date +%H%M).wav"
if [ -f $FILE ]; then
/usr/bin/aplay -D plughw:1,0 ${FILE}
fi

near_alarm.sh 脚本:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh

if [ ${#1} -ge 4 ]; then
CD="$(cd $(dirname $0) && pwd)"
FILE="${CD}/near_${1}.wav"
if [ -f $FILE ]; then
/usr/bin/aplay -D plughw:1,0 ${FILE}
fi
else
echo "Invalid parameter!"
fi

10. 高级功能

  • 旋转屏幕:xrandr

  • 防止休眠、定时息屏和亮屏:dpms

  • 调屏幕亮度:ls /sys/class/backlight

  • 模拟时钟:xclock

这就得好好学习 Linux 了……前面只是抛砖引玉,还有许多好玩的哦!

后话

折腾旧设备总有意外的收获!比如,Surface RT 在 Windows 下无法识别 5.8GHz WiFi5,在 Raspbian 下却可以。祝大家玩得愉快!

管理 macOS 的登录项

问题

稣在 macOS 上装了「Free Download Manager」,结果每次系统重启登录后它都会自启动,稣明明没让它这么做的!以下图形界面下的方法都试过,还是自启动!

  • 在「Dock 栏」右击「Free Download Manager」的图标,选择「选项」,确认「登录时打开」没有打勾。

  • 「系统偏好设置」-「用户与群组」-「登录项」里面也没有「Free Download Manager」。

学习

  1. 从苹果官方文档开始,第一篇相关文档:Designing Daemons and Services 说有图形界面的自启动机制叫做 Login item。

  2. 于是转到 Adding Login Items,这篇文章说明添加「登录项」有两种方式,具体方法已经是给开发者用的了,对于咱们反向操作(删掉它)帮助不大。

  3. 但是通过搜索 SMLoginItemSetEnabled 可以知道相关路径为 XX/Library/LaunchAgents

操作

  1. 首先要得到「Free Download Manager」的程序 ID:
1
2
3
4
5
6
7
8
9
$ ls /Applications | grep 'Free Download Manager'
Free Download Manager.app

$ ls /Applications/Free\ Download\ Manager.app/Contents
Frameworks Info.plist MacOS PkgInfo PlugIns Resources _CodeSignature translations

$ grep -A1 CFBundleIdentifier /Applications/Free\ Download\ Manager.app/Contents/Info.plist
<key>CFBundleIdentifier</key>
<string>org.freedownloadmanager.fdm6</string>

以上,专业的一条命令为:

1
2
$ defaults read /Applications/Free\ Download\ Manager.app/Contents/Info.plist CFBundleIdentifier
org.freedownloadmanager.fdm6
  1. 查找 org.freedownloadmanager.fdm6 有没有在 XX/Library/LaunchAgents
1
2
$ find ~/Library/LaunchAgents /Library/LaunchAgents /System/Library/LaunchAgents -name org.freedownloadmanager.fdm6\*
/Users/YourUserName/Library/LaunchAgents/org.freedownloadmanager.fdm6.plist
  1. org.freedownloadmanager.fdm6.plist 禁止自启动
1
2
3
4
5
6
7
$ defaults read ~/Library/LaunchAgents/org.freedownloadmanager.fdm6.plist RunAtLoad
1

$ defaults write ~/Library/LaunchAgents/org.freedownloadmanager.fdm6.plist RunAtLoad 0

$ defaults read ~/Library/LaunchAgents/org.freedownloadmanager.fdm6.plist RunAtLoad
0

搞定。

Linux 桌面玩稣

问题

  • 那么多 Linux 发行版,哪个桌面最好用?

  • i3wm 到底是不是反人类?

  • FreeOffice 究竟是不是免费?

  • 以极客理念做的产品,究竟是不是坑人的?

  • 国产 OS 到底有没有戏?

体验

系列 包管理器 防火墙 经验 主观感到的坑
OpenWRT opkg 很容易理解的文件配置:vi /etc/config/firewall 或者 uci,然后 /etc/init.d/firewall reload 从 2010 年初开始一直在用,能刷它的路由器没有一台能逃过。轻量是它的特点。 ash 不够智能,当然如果硬件允许,可以装 zsh;不适合做桌面,但其实也可以哦(肯定是坑)!
Ubuntu/Debian、Armbian apt 好用的:ufw 大学就见好多学长用 Ubuntu,默认情况下,它的桌面比 Debian 漂亮,Debian 比较适合当服务器,实际上稣一般使用 Debian。物理机装了好多台,一些电视盒子也刷成 Armbian 在做测试机。 目前 Bullseye 用的内核是 5.10,比较保守。默认桌面都很丑。
CentOS(后续 RockyLinux、AlmaLinux) yum 有点忘记了,是不是有个 firewall-cmd 很久以前被迫用过…… 就是没好感,反正也挂了(才怪)。
Manjaro/ArchLinux pacmanyay 好用的:ufw Manjaro 桌面体验很好,ArchLinux 只在虚拟机里体验。内核 5.15 是比 Debian 新。 i3 版装完中文支持有问题,KDE 则没问题。
PostMarketOS/AlpineLinux apk(真的不是安卓啊~) 不知道怎么喷的:awall 也是内核 5.15,和 OpenWRT 的理念很像,而且注重轻量和安全。AlpineLinux 适合做容器的基础镜像。 对中文真不友好。进入系统后还是把 ash 换成 zsh 吧。还有这个 awall……和 ufw 比,真的很想说 ashit!

列这个表其实想说几个感受:

  1. 体验这么多不同发行版真浪费生命。尤其想说:包管理器有必要这么多吗?对软件开发商来说,真的很无语呀!

  2. 在用 Manjaro 时发现,网易云音乐这个软件,其实是来自 Debian 系的 deb 包,国产的 OS 大部分也都是基于 Debian 的。也就是说:如果有流行的软件,会有人重新打包成其它包。怎么说呢……国产 OS 如果开发了啥国民软件,是不是 Manjaro 也会吸收过去?那国产 OS 岂不是又没啥优势了?

  3. 如果习惯 Windows 或者 macOS,最好还是选择 KDE Plasma,然后装合适的主题,让它更像 Windows 或者 macOS。i3wm 这种极客型的产品,不适合大部分人。而且 Manjaro i3 是个社区版,不是官方版,中文支持是有问题的。

  4. 有小伙伴问稣:怎么会用 PostMarketOS 这种乱七八糟的东西?稣内牛满面,还不是因为很早以前买了台 Surface RT……自从微软抛弃它之后,稣挣扎过一次,装了 Windows 10 ARM,可现在不是已经 11 了吗?于是一不做二不休装 Linux,然后就装了这个奇怪的 PostMarketOS。当然后悔了,它能刷 Ubuntu Server 的,真是脸疼……

  5. Wayland 吗?不了,谢谢,稣用 X11 就行。

  6. 最后一个问题:稣叛变到 Arch 系了吗?没有!选 Linux,稣还是用 Debian,毕竟要支持国产嘛(间接)!

诗盗·僵军

《#诗盗#·僵军》:资本竞灭民工丧,回首无钱治愁肠。苍茫挨踢问谁主,无产伏首卷中皇。

注解

改编自霹雳角色“驭能天”的诗号。

狼辰竞灭忌孤丧,回首无人斩空霜。
苍茫天地问谁主,日月伏首刀中皇。

创作故事

两个人一起在非洲穷游,突然在草原上遇到狮子。

甲立刻弯腰整理鞋子。

乙嘲笑道:还整什么鞋子!哪有人跑得过狮子?

甲微笑地答:我只需要跑赢你。

乙也哈哈狞笑:你有木有听过,天下大势浩浩荡荡,顺之者昌,逆之者亡?

甲不解:请说人话!

乙绝望地说:草,里,那是一群…狮子!

在华硕灵耀 X 纵横上装 Debian 桌面的经验

需求

今天发现华硕灵耀 X 纵横已经降价到 6999 元。所以,应该给它装上 Debian 了。

准备

解决

  1. 需要准备一个 U 盘,用 Rufus 做一个 UEFI 格式的启动盘。

  2. 如果有 USB 有线网卡,插上去,联网安装更省事,如果没有那就断网安装一个最小系统,然后去借一个 USB 有线或者无线网卡……

  3. 需要 non-free 驱动,先选择不安装,后面再装。

  4. 选择中国的镜像服务器,南方选中科大,北方选择阿里云或者清华大学。

  5. tasksel 阶段,不要安装桌面环境,先安装最小的系统。

  6. 安装完,重启。

  7. 登录系统,编辑 /etc/apt/sources.list,加 non-free 和配置 debian-security:

1
2
3
4
5
6
7
8
deb https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free
#deb-src http://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free

deb https://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib non-free
#deb-src https://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib non-free

deb https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free
#deb-src http://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free

这步很重要,如果不改 debian-security,那么接下来在国内网络环境下,可能会很慢……

  1. 安装 non-free 驱动,主要是无线网卡和声卡:
1
sudo apt install firmware-iwlwifi firmware-sof-signed

装完无线网卡驱动后,网卡名字是 wlo1,配置见 https://wiki.debian.org/WiFi/HowToUse

  1. tasksel 安装桌面,稣选择 KDE Plasma。

  2. 【可选】开远程桌面:

1
sudo apt install xrdp

Plasma UX3000E

设置 Debian 不自动进入桌面

需求

在 Debian 上装了 KDE Plasma 桌面,但使用率不高,毕竟主要是当服务器使用,所以不想每次启动都自动进入桌面,以节约内存。

解决

1
sudo systemctl set-default multi-user.target

重启后就是默认的控制台登录。如果想直接以当前控制台登录的身份进入桌面,运行 startx 即可。但这种方式桌面是跑在当前控制台上,不是第 7 个控制台(Ctrl+Alt+F7),如果想尽量保持和原来自动启动桌面的环境一样,应该用:

1
2
3
4
sudo systemctl isolate graphical.target

# 或者更直接地【不建议使用】
sudo systemctl start sddm.service

这将以服务身份进入桌面,后面还要再通过图形界面登录一次。

如想恢复自动进入图形界面:

1
sudo systemctl set-default graphical.target

如想知道当前处于哪种方式,可使用:

1
systemctl get-default

跟 UMU 一起玩 OpenWRT(高级篇3):在线升级内核

需求

想升级 OpenWRT 路由器的内核,又不想每次都把 SD 卡拿下来刷,怎么办?

前提

  • 本文将以 Nano Pi R4S 为例。

  • 这里的“在线”指的是:不重新刷 ROM,也不用 sysupgrade,纯手动替换文件,然后 reboot 生效。

解决

1. 先查看当前版本

1
2
uname -a
Linux UMUR4S 5.10.107 #0 SMP PREEMPT Sat Mar 19 19:05:00 2022 aarch64 GNU/Linux

目前是 5.10.107,想升级到 5.10.108!

2. 下载新 ROM 到路由器

可以直接在 OpenWRT 里用 wget 下载到 /tmp 下,或者在其它机器下载好,用 scp 上传到路由器的 /tmp 下。

下载地址:https://github.com/UMU618/openwrt-config/releases

3. 解压新 ROM、挂载分区

1
2
3
4
5
6
7
8
9
cd /tmp/

# wget

gunzip -d openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img.gz

parted openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img
unit B
p

可以看到 img 里的两个分区:

1
2
3
4
5
6
7
8
9
Model:  (file)
Disk /tmp/openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img: 176160768B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags
1 33554432B 50331647B 16777216B primary ext2 boot
2 67108864B 176160767B 109051904B primary ext2

把这两个分区别分挂载:

1
2
3
4
5
mkdir new_boot
mount -o loop,offset=33554432 openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img new_boot

mkdir new_root
mount -o loop,offset=67108864 openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img new_root

4. 挂载待更新的 boot 分区

1
2
mkdir boot
mount /dev/mmcblk1p1 boot

检查一下,时间是不一样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@UMUR4S:/tmp# ll boot/
drwxr-xr-x 3 root root 4096 Jan 1 1970 ./
drwxrwxrwt 23 root root 660 Mar 27 18:17 ../
-rw-r--r-- 1 root root 352 Mar 21 01:17 boot.scr
-rw-r--r-- 1 root root 14860296 Mar 21 01:17 kernel.img
drwx------ 2 root root 4096 Jan 1 1970 lost+found/
-rw-r--r-- 1 root root 55738 Mar 20 19:26 rockchip.dtb
root@UMUR4S:/tmp# ll new_boot/
drwxr-xr-x 3 root root 4096 Jan 1 1970 ./
drwxrwxrwt 23 root root 660 Mar 27 18:17 ../
-rw-r--r-- 1 root root 352 Mar 27 17:56 boot.scr
-rw-r--r-- 1 root root 14860296 Mar 27 17:56 kernel.img
drwx------ 2 root root 4096 Jan 1 1970 lost+found/
-rw-r--r-- 1 root root 55738 Mar 27 17:45 rockchip.dtb

开始复制文件:

1
2
cp new_boot/* boot/
cp -r new_root/lib/modules/5.10.108 /lib/modules/

检查一下,现在应该同时存在两个版本的 modules:

1
2
3
4
5
root@UMUR4S:/tmp# ll /lib/modules/
drwxr-xr-x 4 root root 4096 Mar 27 18:28 ./
drwxr-xr-x 10 root root 4096 Mar 21 05:24 ../
drwxr-xr-x 2 root root 4096 Mar 20 03:05 5.10.107/
drwxr-xr-x 2 root root 4096 Mar 27 18:28 5.10.108/

5. 重启验证

reboot 后查看版本,如果没问题就清理旧版本:

1
2
3
4
uname
Linux UMUR4S 5.10.108 #0 SMP PREEMPT Sun Mar 27 04:00:50 2022 aarch64 GNU/Linux

rm -rf /lib/modules/5.10.107