分类 Linux 下的文章

xfox@ThinkPadE14Gen3:~$ cd /etc/apt/sources.list.d
xfox@ThinkPadE14Gen3:/etc/apt/sources.list.d$ ls
tailscale.list vscode.list vscode.list.save
xfox@ThinkPadE14Gen3:/etc/apt/sources.list.d$ rm tailscale.list
rm: 是否删除有写保护的普通文件 'tailscale.list'?y
rm: 无法删除 'tailscale.list': 权限不够xfox@ThinkPadE14Gen3:/etc/apt/sources.list.d$ sudo rm tailscale.list
[sudo] xfox 的密码:xfox@ThinkPadE14Gen3:/etc/apt/sources.list.d$

n2n使我快乐,而tailscale的PPA总是在更新apt cache的时候恶心我;)那就给我爬!

实际上Debian12尚未正式发布,但是似乎已经可用了。

升级步骤

参考文章:How to Upgrade from Debian 11 Bullseye to Debian 12 Bookworm

替换软件源

在此之前,你最好确保自己的其他软件处于bullseye的最新版本且工作正常。

sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list

更新并升级所有软件包

sudo apt update && sudo apt full-upgrade

重启

sudo reboot
升级完成后重启你的PC

升级后出现的问题

GRUB里Windows10启动项没了,但是这不算太严重的问题,因为我确实打算全面切换到Linux,尤其是唯一困扰已久的休眠问题已久解决的情况下,FUCK YOU Microsoft!

不过,由于我的硬盘空间不足,我还是不得不至少在笔记本上启动一次Windows以便把必必需的数据无损迁移到Ext4分区。这还需要我去买一块硬盘;)大概得等到下个月发工资的时候了。

恢复grub里的windows10启动项

xfox@ThinkPadE14Gen3:~$ sudo update-grub
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-5.18.0-0.deb11.4-amd64
Found initrd image: /boot/initrd.img-5.18.0-0.deb11.4-amd64
Found linux image: /boot/vmlinuz-5.10.0-20-amd64
Found initrd image: /boot/initrd.img-5.10.0-20-amd64
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done

注意第八行提示,由于更新后的Grub软件包默认禁用os-prober,我们得手动编辑grub配置文件启用os-prober帮助grub扫描添加Windows启动项。
sudo nano /etc/default/grub
取消对GRUB_DISABLE_OS_PROBER=false的注释并保存

xfox@ThinkPadE14Gen3:~$ sudo update-grub
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-5.18.0-0.deb11.4-amd64
Found initrd image: /boot/initrd.img-5.18.0-0.deb11.4-amd64
Found linux image: /boot/vmlinuz-5.10.0-20-amd64
Found initrd image: /boot/initrd.img-5.10.0-20-amd64
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings ...
done

问题解决

我的升级获益

  1. 困扰我已久的系统休眠可以正常工作了(我一直有预感debian12会解决这个问题,很高兴我的预感的确很准确。)
  2. 笔记本低负载下(比如现在我在写博客)发热明显降低,续航似乎也比Debian11有所增强。
  3. 更漂亮的GRUB启动图片

看来一些人喜欢arch linux的滚动更新也并非没有道理,许多linux发行版的稳定版特别是LTS对新的桌面PC的支持都并不友好,但是这些新设备的支持往往已久被加入更新的软件版本了,对于因此对于自己手头常用的新PC产品并不应该过于执着稳定版,尚未发布的版本往往对新设备用户准备了惊喜/吓。
尽管休眠已经可用,我发现睡眠似乎还是出现睡眠后无法登录的问题,只能强制关机。
但是cat /sys/power/state发现返回值变成了freeze mem disk (在debian11的时候仅仅支持freeze和mem)
参见查看当前内核支持的休眠模式
经手动测试,freeze,mem,模式是正常可用的。
disk模式在测试时被发现电源指示灯闪烁后屏幕恢复休眠瞬间的界面并卡死。(但是我点击KDE休眠选项真的可以正常休眠和唤醒)

未完待续

反复检查,代码无任何问题。
直接使用python解释器也能正常启动,但是在vsc里用code runner插件运行就报错。

PS E:\PythonDevelopFiles\GUI-n2n> python -u "e:\PythonDevelopFiles\GUI-n2n\app.py"
Traceback (most recent call last):
  File "e:\PythonDevelopFiles\GUI-n2n\app.py", line 3, in <module>
    from tkinter import *
  File "C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\lib\python3.9\tkinter\__init__.py", line 37, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk

Windows的Python安装包默认是会安装tkinter的,接着我发现我居然有两个可选解释器

2023-01-27T19:39:36.png
第二个貌似是不久前为了编译n2n安装choco包管理器后使用choco安装的,打开控制面板\程序\程序和功能,发现确实还有个
Python Launcher 3.9.7686.0,大概是两个注册环境产生冲突了。所以手动运行了其中一个的安装工具进行配置选择修复,果不其然发现tk/tcl是扫描到的修复项目。
接着发现问题没有解决,并且在windows目录下手动找到了一些乱七八糟的pyhton文件残留。
索性重新安装python3.8 (为了兼容Windows7)
接着问题依旧,连从外部运行也出现报错:文件名、目录名或卷标语法不正确。

我人麻了,Windows真的不适合开发。。。。配置开发环境可用性还要用户手动去保证,商店下的py3.8还这个德行。我不想在微软阿三的粪坑上浪费时间了,直接重启到Debian11
sudo apt install python3-tk #Debian11已经预装Python3了,但是没有预装tk。

Linux下Python的tkinter库是单独打包的。(因为非开发者通常不需要下载tk即可运行常见的的各类应用,即使某些有需要,其打包时也会写明对python3-tk的依赖。

VSC启动.....

[Running] python -u "/tmp/tempCodeRunnerFile.python"
/bin/sh: 1: python: not found

[Done] exited with code=127 in 0.008 seconds

好吧,Code Runner 默认用的是python这个命令调用的,手动建立个软链接就好了。
或者...sudo apt install python-is-python3 #我更喜欢使用包管理器,而不是让自己手动制造哪些我可能在未来忘记或产生疑问的非常规因素。
VScode 启动,右键 Run Code
窗口出现,继续开发。

尾声:祝愿不可靠的MS Windows早点从中国广大用户的PC里滚蛋,哪怕使用不被看好的国产Linux发行版也比这种屎山生态的不可控专有软件更有利于国家发展。

PS:今天早上把应用商店的Python3.8卸载掉,果断choco install python3安装了最新版,功能一切正常,问题解决。

偶然的重启了nas并且发现rdp无法连接,ssh登录后我发现我的nas里堆积了一些不好的文件导致,这些文件过去是我出于好奇加入到BT下载列表的,但是我现在不想看这些令人反感的文件,所以他们被删掉了。但是尽管空间占用问题解决,我依然无法启动我的rdp服务。我不太明白为什么......
~$ systemctl status xrdp.service
● xrdp.service - xrdp daemon

 Loaded: loaded (/lib/systemd/system/xrdp.service; disabled; vendor preset: enabled)
 Active: failed (Result: exit-code) since Tue 2023-01-24 05:05:39 CST; 6s ago
   Docs: man:xrdp(8)
         man:xrdp.ini(5)
Process: 115063 ExecStartPre=/bin/sh /usr/share/xrdp/socksetup (code=exited, status=0/SUCCESS)
Process: 115071 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS (code=exited, status=1/FAILURE)
    CPU: 42ms

接着我看到了这个xrdp service fails to start after reboot
他们的报错与我似乎相同。

书接上回:计划:基于IPv6实现IPv4应用层组网我意识到n2n可以满足我的实际需求,并且它是完全自由和免费的!

什么是n2n?

Github ntop/n2n :Peer-to-peer VPN

n2n is a light VPN software which makes it easy to create virtual networks bypassing intermediate firewalls.
简单来说n2n是一个C语言编写的轻量级VPN软件,可以轻松的创建一个通过防火墙的虚拟网络。正如项目简介所言,n2n主要依赖点对点完成通信,对于无法穿透的NAT环境将自动使用超级节点进行failback。

搭建n2n 超级节点

首先需要安装n2n,过于简单,请参见项目仓库。(不要使用apt安装,一定要选择github的最新稳定版代码自行编译或使用编译好的release。

官方文档描述已经足够详尽,你只需要注意开放选定的tcp+udp端口,我选择了8080.
此外,还需要开放udp端口,53/5645 (或者,如果你的服务器没什么有价值的udp服务的话,干脆在防火墙把udp全放行了。)
我的节点:xfox.fun:8080
4Mbps小水管,你就别指望我这节点能拿来转发你的流量了,最多帮你打通p2p,转发还不如你自己开个或者用免费的frp/NPS服务器。

运行普通节点

过于简单,不过多描述
basic usage:  edge <config file> (see edge.conf)

        or   edge  -c <community name> 
                   -l <supernode host>:<port> 
                  [-a <tap IP address>] 
                  [-d <tap device name>] 
                  [-k <encryption key>] 

-h shows a quick reference including all available options
--help gives a detailed parameter description
man files for n2n, edge, and superndode contain in-depth information

较为复杂的配置,自己看/etc/n2n/的example文件
两种节点都支持systemd持久化运行,文件会在安装后自动释放,你只需要参考example编辑新的配置文件:edge.conf/supernode.conf

编写一个跨平台n2n GUI客户端

n2n提供了udp信息展示接口,已有第三方编写的Windows、Android客户端,但是我用的是Gnu/Linux,而我的大部分非自由软件爱好者朋友玩游戏往往使用Windows,所以我需要一个跨平台的n2n客户端提供尽可能一致的用户体验,Python显然是个不错的选择。

设计界面布局

基于n2n的参数需求,需要以下几个必须元素

  • 输入框

    • 服务器地址
    • 社区名称(community)
    • 认证密钥(非必须)
    • 自定义地址(非必须)
  • 选择框

    • 加密方式(非必须,默认AES-CBC)
  • 标签

    • 信息显示框(当前连接状态)
  • 按钮

    • 启动连接

开发难点

编译n2n(Windows),这一个就难到我了,因为我压根就不想下载Visual Studio,并且MinGW构建失败(我还为此购买了Windows10 Pro的激活码,但是还是很遗憾没有成功)。不过,仔细看看了看日志,貌似是因为choco安装MingGW时没有给予足够权限造成的,所以干脆卸载了MingGW,git,make重新安装了一遍。
第二次编译,卡在了make test:

...
cp src/example_sn_embed example_sn_embed
scripts/test_harness.sh tests/tests_integration.list
tests/../scripts/test_integration_supernode.sh >tests/test_integration_supernode.sh.out

这就很糟糕。
不过查看目录发现似乎已经编译成功了。确定可以编译通过后修改了一下编译包版本名称和目标系统名称,Windows10下的编译问题算是解决了。
在WIndows上运行前需要安装TAP驱动下载地址,搜索tap-windows如无其他异常就尽可能使用新版本。比如tap-windows-9.24.7-I601-Win10.exe 至于9.24.8,暂时没有一键安装的二进制应用....

GUI-n2n使用说明

本程序设计使用理念:由了解n2n相关配置方法的开发者/用户为其他用户(你的任何不了解计算机技术的朋友,同学,家人)提前编写好配置文件后直接打包交给用户。

GUI-n2n是使用Python3+tkinter编写的跨平台程序理论支持Linux,Mac,Windows,不考虑兼容Python2的任何版本。对于Windows7用户,请使用Python3.8编译运行。
Windows用户使用前应安装TAP驱动,服务器地址应包含端口,加密密钥可以为空,默认AES-CBC加密(密钥必须为ASCII字符),默认启动后使用当前程序所在目录下的配置文件(GUI-n2n.config)设置,如果你不理解我在说什么则不要修改任何配置。

在WIndows10下也会有类似问题,比如使用Tab自动补全失败的时候。扬声器突然大声dou的一声,很容易打扰别人休息。

参考资料:
linux 关闭主板上的蜂鸣器声音
PC speaker

我当前使用的是Debian11 bullseye +KDE,所以我不必极端的使用 rmmod pcspkr的方式避免触发beep。
通过KDE的“系统设置”→“辅助功能”→“响铃”,我可以关掉他。

为什么我要更换到Debian?Mint等下游社区对原Ubuntu的修改一定程度上使系统更加开箱即用,但也对一些功能的使用造成了限制,Ubuntu并不是一个彻头彻尾的自由软件,尽管我不追求完全使用自由软件/剔除专有软件,我仍然无法接受自己使用的操作系统可能潜在的法律风险。俄乌战争时期Nginx等软件及过去Apache基金会等组织的行为也表明了任何可能受到国家控制的组织信用均不可信。我不想把自己的自由倾注于不可靠的组织,特别是专有软件厂商和无法摆脱美国等国家影响的基金会。相比Ubuntu,Debian显然是更自由,更容易避免政府影响的选择。

- 阅读剩余部分 -

华为手机:连接被拒绝,我的PC也提示无法连接。
更换信道,重启,恢复出场设置均无法解决问题。
5G 分频的SSID时显时不显示,不知道什么情况。
2021年4月29日买的,没拆过机,功能之前也都正常,就很奇葩。
到现在用了607天了,目前个人怀疑官方故意拉高功放功率长时间超负荷发射导致器件损坏。

2023年1月3日更新

当时出现问题后我把5G AP关掉了,今天打开了,可以正常连接使用了。
具体原因尚不明确,小米的东西稳定性确实不敢恭维。

2024年3月24日更新

去年年底回家5G WIFI又是要么连不上,要么干脆扫不到SSID,今天回家又能连上了。玄学。