管理 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

诗盗·疏漏聋锈

《#诗盗#·疏漏聋锈》:学堂初出欲躺平,技术更迭,规模不减反增。KPI,OKR,内卷岁月财源正盛,共印萧条疑似有染。

注解

改编自霹雳角色“疏楼龙宿”的诗号。

华阳初上鸿门红,疏楼更迭,龙麟不减风采;
紫金箫,白玉琴,宫灯夜明昙华正盛,共饮逍遥一世悠然。

诗盗·天行日月

《#诗盗#·天行日月》:白首方知友难交,一意逍遥,钱袋飘飘;十岁春风稣不晓,一心求道,人间邈邈。

注解

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

仙衣眠云碧岚袍,一襟潇洒,两袖飘飘;
玉墨舒心春酝瓢,行也逍遥,坐也逍遥。

  • 天行日月:时间飞逝