飞蚊话 发布的文章

转眼都到了2024年了。回看一下2023年,我居然发布了整整16个乱七八糟的内容,我实在太勤奋了。

那么,作为一个以类unix系统教程碎片为主的频道,在新年之际跟你分享一下2023年的一些变化。

更新频率降低的最主要原因就是莫名其妙的没有太闲着,而没有太闲着导致的结果就是很少打开家中常用的电脑,而不用家中电脑就意味着我这一年实际上很少使用Linux或者macOS系统。可以说,我在2020年换掉archlinux时候的预言在2023年得到了完美的体现。属实是:不是不报时辰未到。

但即使使用的频率很低,我还是将ubuntuunity更换到了Debian12。这可能是我这一年中最大的一个更改,这其中的具体原因我也有分享过,可以回看一下。

提到了乌班图,这让我想到了2023年乌班图的一个改变人生轨迹的变化:引入了基于flutter的应用商店。这项调整体现在了前几个月发布的乌班图23.10版本中,用以替代老朋友——乌班图软件中心。相对来说,新版本的商店有着更现代、更流畅、更一致的使用体验,可能也会助力乌班图全局snap化的布局。

可能你觉得使用flutter开发应用商店与全局snap化没啥关联,不过乌班图在2023年2月宣布,官方版本不再支持flatpak格式软件包开箱即用你又如何看待呢?很明显,乌班图为了推广并应用自己发布的snap格式软件包在自己的系统上不遗余力,撤销开箱支持flatpak可以说是最明显的一项措施。不过仅仅是无法开箱即用,你还是可以手动部署相关的程序以恢复flatpak支持。

顺带一提,即将推出的ubuntu24.04为长期支持版本也有一个新的变化,那便是它将可以获得长达12年的更新支持——当然,这需要你注册ubuntu pro。不过这项服务对于个人用户来说是免费的,如果你习惯并长期使用乌班图的话,安装这个版本并加入ubuntu pro也不失为一个好的选择。

你方唱罢我登场,与ubuntu所处的Debian分支相对的,则是RHEL分支中一个改变人生轨迹的变化:RHEL与2023年中旬宣布限制其源码访问。现在看来这个大概是转变CentOS性质的接续步骤:目前的CentOS完全可以说是RHEL的测试版,而曾经的CentOS则可以看作是RHEL的免费版。两者位置的变更似的RHEL可以将全部精力投入到企业客户上,而无需再考虑普通用户。这个消息在刚发布时反响剧烈,不过就目前来看,这更多的改变了RHEL下游发行版的生存轨迹,对于其他分支,甚至RHEL本身的企业用户来说,影响不大——暂时不大。

现在从发行版层面剥离出来,看看内核层面改变人生轨迹的变化:支持周期从六年缩短至两年了——我是说LTS内核。这个变化大概对用户来说影响不大,毕竟现在常见的发行版,要么像SuSE,不更新内核主版本,但自己长期单独维护,以至于跟用新内核没啥区别;要么就像Arch,有新的就直接给更新上来了。但支持周期的缩短对与内核维护人员来说可是重大利好——再也不用管理那么多没啥人用的旧版本内核了。

上面这些2023年Linux世界的变化是好是坏还请各位评判。不过,Linux版Steam使用率超过macOS,从哪种角度来看到可以算是2023年Linux世界一个不错的消息吧——当然了,这俩货加起来都追不上Windows的零头,不过,这至少证明Valve这几年在Linux游戏领域所做的不懈努力不是白费的——要知道,为了能让Linux运行Steam 中大多数的游戏,Valve从大概疫情前便开始基于wine来开发Linux 的游戏兼容层proton,并在这些年中取得了极大的进步。截止目前,Steam上热门游戏通过官方测试可以运行的已经超过了10000款,而根据玩家的测试,这个数量可以上升至大约17000款。我想这对于一名普通玩家来说已经不是一个小数字了。

但诚然,目前这个兼容层还不是十全十美:比如联网游玩的游戏,反作弊插件目前还无法正常运行。但车到山前必有路,由于Valve的proton套件是开源的,因此针对部分特定游戏,有个人开发者定制了proton套件,使得可以通过定制版套件达到正常运行带有反作弊插件游戏的目的。不过这些仍只是个例,Linux联网游戏任重而道远。

以上便是跟各位分享的2023年Linux世界的一些重大的、改变人生轨迹的变化。祝各位能在这曲里拐弯的人生中好好生活。

视频点此

海信自己的系统实在是不稳定,三天两头自己重启;本身只有一个墨水屏,单纯待机的话耗电确实挺不错,但但凡打开点啥程序,电量眼瞅着就往下掉了。所以在得知海信的墨水屏手机可以root了之后便跃跃欲试。但“官方”的教程非常简洁,解bl锁与root分成了两个板块,而且有些地方描述的比较学术性(我的意思打算照抄完成root操作是不现实的),所以我在官方教程的基础上,参照我自己成功root的过程,编写一个将解bl锁与root结合在一起的、尽量可以做到照抄即可的说明,也许能助力一些机主的root工作吧。

注意:所有操作均在Windows下实现,使用Linux实现的我感觉应该也不至于看这个了…
注意:下面均以海信A5pro CC为例,其他型号类似,只是需要注意安卓版本

一、下载并部署环境

  1. 官方解bl锁教程页,下载教程页中的SPD_Driver_R4.20.4201并安装
  2. Release,下载最新的解锁工具

    1. 下载自己手机型号的包,如hisense_a5procc.zip
    2. 下载spd_dump_231002.zip
  3. Magisk教程页Android 10 and up,下载最新的root工具

    1. 根据使用电脑的位数,在[1]python2处选择对应的下载。如果选择x86版本,需额外下载OpenSSL
    2. 点开[2]avbtool的链接,点击Code - Download ZIP
    3. 点开[4]Android Image Kitchen,往下翻到Downloads模块,下载Android.Image.Kitchen.v3.8-Win32.zip
    4. step3位置,下载rsa4096_vbmeta.pem
    5. 前往adb下载页或其他可以访问的站点,下载adb
  4. 解压、安装上述文件

    1. 解压hisense_a5procc.zip,假设文件夹位置在%DESKTOP%\root\
    2. 解压spd_dump_231002.zip,覆盖到上述目录
    3. 安装3.1步骤下载的python2,保持默认设置,并注意勾选添加到路径(Add to Path)若为x86版本,额外下载了OpenSSL,一并以默认配置安装
    4. x64的Python2的压缩包中有OpenSSL安装程序,x86的则已在3.1另行下载。按默认配置进行安装
    5. 打开3.2步骤下载的压缩包,里边有一个文件夹。打开这个文件夹,将其中所有文件解压,假设解压文件夹位置在%DESKTOP\magisk\
    6. 解压Android.Image.Kitchen.v3.8-Win32.zip%DESKTOP\magisk\,并将得到的这个文件夹名称修改为AIK
    7. 打开3.5下载的adb压缩包,展开到可以直接看到adb所有程序文件的文件夹,将这些文件解压到%DESKTOP\magisk\

部署完成,可以开始进行解锁root工作了。

二、解bl锁

  1. 文件管理器切换到%DESKTOP%\root\文件夹
  2. 按照SupportList的按键方式启动手机,进入下载模式(海信A5pro CC的按键为音量+、音量-、电源全部按下,持续7~10秒)
  3. 将手机与电脑连接,双击onekey_fdl1.bat开始一键解锁过程

注意

  1. 第2、3步需要在30秒内完成。而对于墨水屏手机,进入下载模式与否屏幕上难以分辨,因此先将数据线连接到手机,然后按下按键7秒左右,再打开bat文件,最后将数据线与电脑相连。此时观察电脑上打开的命令提示符,若开始有跑数据则说明成功进入了下载模式,否则断开连接重新操作。
  2. 就我个人操作来看,如果三个按键真的同时按下,手机不会响应任何操作。因此建议先按下电源键,然后再立刻按下音量+与音量-,这样成功的概率会高一些。

三、root

再次提示:这里是假设使用的设备是海信A5pro CC
  1. 获取boot.img

    1. 在命令提示符中打开%DESKTOP%\root\目录
    2. 同二.2,进入下载模式
    3. 将手机与电脑连接,命令提示符输入spd_dump exec_addr 0x3f48 fdl fdl1-dl.bin 0x5500 fdl uboot-mod.bin 0x9efffe00 exec read_part boot 0 35M boot.img reset
    4. 待命令执行完成,便得到了手机原本的boot.img
  2. 修补boot.img

    1. 正常启动手机,将前面得到的boot.img拷贝到手机的内部存储中
    2. 手机中安装Magisk应用(建议酷安下载,至少还算正规)
    3. 打开Magisk,点击安装 - 选择并修补一个文件,选择拷贝到手机的boot.img,等待完成
    4. 现在便得到了修补后的boot.img,假如文件名为magisk_patched_cR5kd.img
  3. 重打包boot.img

    1. magisk_patched_cR5kd.img拷贝至电脑%DESKTOP\magisk\AIK中
    2. 在这个文件夹中,双击unpackimg.bat
    3. 双击repackimg.bat
    4. 现在得到了重新打包的boot.img文件
  4. 签名boot.img

    1. 将路径C:\Python27C:\Python27\ScriptsC:\Program Files\OpenSSL-Win64\bin添加到环境变量(若安装python时勾选了添加路径的选项,则此时只需增加第三个)
    2. 打开命令提示符,输入命令mklink /H C:\Python27\python2.exe C:\Python27\python.exe
    3. 输入命令python2 -m pip install pycryptodome
    4. 命令提示符切换到%DESKTOP\magisk\路径
    5. 输入命令python2 avbtool add_hash_footer --image AIK/image-new.img --partition_name boot --partition_size 36700160 --key rsa4096_vbmeta.pem --algorithm SHA256_RSA4096 --salt 5F55215FD2302D021F850B55912ED48D176784678692DC012E054B1ECD0BE025
  5. 刷入经过处理的boot.img

    1. 连接手机与电脑,手机端打开USB调试并信任此电脑
    2. 在三.4.5状态的命令提示符中,输入命令adb reboot fastboot,手机会重启并进入fastboot模式
    3. 待手机成功切换模式后,命令提示符中输入命令fastboot flash boot AIK/image-new.img
    4. 待命令执行完成,输入命令fastboot reboot

至此,你的海信A5pro CC就已经root完成了。

以上内容,对于相同型号的用户可以直接照葫芦画瓢,保证每一步都是成功执行的,那么成功root的问题就不会太大;而对于其他型号的用户,需要注意进入下载模式按键不同,三.1.3步骤中exec_addr后面的地址也不同。这部分可以直接复制%DESKTOP%\root\manual_command_fdl1.txt中第一行的相同字段;还是这一步,倒数第三块的参数(我这里是35M)需要根据安卓版本来确定。具体方法可以参考下面的第二条链接。


相关链接

  1. 解bl锁
  2. 刷入magisk

视频点此

Linux系统会为每一个用户建立一个home目录,其中有几个金刚路径,如桌面、文档、音乐、下载等等。通常来讲,在图形界面下使用这几个文件夹可能不会意识到什么问题,但如果使用终端的话,你也许会发现:在不同的发行版里,这几个金刚文件夹的实际名称可能是中文,可能是英文。也就是说虽然在图形界面下,文件夹名字显示为“桌面”,但实际上需要在终端中输入cd ~/Desktop才能进入桌面文件夹。这个是为什么呢?

这个问题——其实也不是问题。因为只是设置存在一些差异。

一、如果你是图形界面用户

以KDE为例,你可以发现在设置个性化-应用程序-位置项中可以随意定义这几个金刚文件夹的路径。因此如果想把中文路径调整为英文,直接输入即可。确定时按照提示,系统会自动完成文件夹的重命名操作。
另外,由于可以随意自定义,所以理论上如果你有长期挂载一个网盘当作本地扩容的分区,那么你也可以通过这个设置,把这个网盘当作某一个金刚文件夹对应的路径。

二、如果你是终端用户

这个文件夹映射关系保存在~/.config/user-dirs.dirs文件中,因此只需要修改对应的路径即可实现调整。但是需要注意,由于终端无法完成自动重命名,所以如果需要保留文件夹中的数据,需要在修改路径之后手工将原先的文件夹修改成对应的名称才能保证继续映射。

视频点此

不管是Windows还是Linux,又或者是macOS,都存在一个字符操作界面——终端,其中有很多直接输入便可使用的命令。那么这些命令都存在哪里了,又为什么可以直接调用呢?

这得益于一个所有操作系统都通用的一个概念:环境变量。终端下可以直接使用的命令都是由名为PATH的环境变量明确的。这个环境变量存储了很多路径信息,只要一个命令的可执行文件被放在了这些路径中,那么在终端中便可以直接通过输入这个可执行文件的文件名来实现直接使用,而无需通过输入绝对路径来调用。

如何知道哪些目录可以实现这一点呢?只需要查看PATH这个变量的值即可。

在Linux中,有很多方法可以实现查看环境变量信息。这里首先推荐一个比较好用的命令export。终端中直接输入即可查看当前用户下所有已经定义了的环境变量;使用export 变量名可以进行单独查看;使用export 变量名="变量值"则可以直接定义一个环境变量的内容。

对于PATH变量,一般来说会包括下面几个路径

  • /usr/bin
  • /usr/local/bin
  • /bin
  • /usr/games #这个是在使用Debian时候发现的。没想到竟然把游戏的可执行文件单独拿出来了…

那有没有办法自定义这个路径呢?

就像前面说的,直接定义即可。比如

export PATH=自定义的路径:$PATH 

这就是自定义PATH环境变量的基本写法。其中:

  • 使用冒号区分不同的路径
  • 路径写入的顺序区分了优先级。越靠前越优先检索使用
  • 一定在最前面或者最后面写上$PATH以保证原本的PATH信息不会被覆盖掉

自定义PATH是比较有用的。比如经常使用单独下载的程序,那么可以定义一个专门存放这些应用的路径,将其添加到PATH中。这样在终端下便可以直接输入程序启动命令来使用,而无需先进入到对应路径再执行,或者想方设法的将程序安装进系统了。而对于Windows,自定义路径可能不太常用,但如果有兴趣,你可以查一查安装python2.7的教程

视频点此

可以说unity桌面是我正经使用Linux后最早接触的桌面环境,也可以算是我最习惯使用的桌面环境之一。而关注unity或者ubuntu的朋友可能知道,ubuntu从18.04开始,其默认的桌面环境切换回了gnome。但在2020年出现了由一个印度小兄弟领导发布的ubuntu unity,旨在提供回原生的unity桌面体验。所以在我发现这个发行版之后,我便在unity的吸引下重新装回了放弃多年的ubuntu。但最终,我还是把ubuntu给换掉了,今天就来简单聊聊其中的原因。

一、优势

无论如何,ubuntu可能也是用户数量相当高的一个发行版,因此很多网上Debian系发行版的教程、可以搜索到的疑难解答实际上都是参照乌班图的软件仓库进行编写的,这样一来在日常使用过程中就可以有相当方便、快捷的网络支持体验。同样的,由于使用人数众多,如果一个软件想兼容Linux,那么一般来说最先得到官方适配的基本就是ubuntu无疑了。

此外,ubuntu背后有公司存在,且基于Debian衍生,所以在寿命、稳定性方面可以信任。除了LTS版本提供更长时间的支持之外,还可以加入ubuntu pro计划以获得更长的维护支持。且如果个人使用的话,这个还是免费的。

更多优势我就不说了,老生常谈。最主要的是我为什么最终换掉了它。

二、劣势

原因只有一个:snap。
Snap是ubuntu自己推出的一种软件包形式,且已经融合在ubuntu中。随着snap的逐渐完善,Ubuntu也在逐步降低对deb软件包的支持力度。而官方更是给出了将在23.10版本中加入snap商城,可能后续加入的应用程序会优先提供snap形式,再适时加入到apt仓库之中。
Snap的优势算是比较明显的,简单来讲就是类macOS组织形式,应用之间相互隔离,依赖版本冲突可以得到很好的解决。
但一个比较致命的问题:snap的服务器在国内没有镜像站点。
是的,即使不使用Linux的朋友都可以猜到个大概了:虽然可以建立连接,但速度太慢了。更不用说时不常的还需要检查并更新snap应用。这很难让人很难坚持下去。

此外,由于snap在程序启动时候相当于建立了一个虚拟的系统环境,这使得程序的启动速度相对传统的方式会减慢不少——当然,可能是因为我的Linux分区还是使用机械硬盘的缘故,如今固态硬盘这个影响可能已经不明显了。

但建立虚拟的程序环境意味着一个问题:系统所有的配置应该都可以映射过去,这样才能保证使用的过程中不会出现什么奇异的问题。但目前的snap分明没能完全顾全这一点。比如我的chrome下载文件默认的保存位置是一个轻易找不到的路径,我当时为了这个路径研究了半天文件夹之间的映射关系。如果是一个没有发现相关规律的用户使用的话,那对snap版本的chrome可能只有一个评价:这个chrome下载会把文件下丢。
另一个比较影响使用的情况:输入法。在我使用的这段时间中有两种经典情况:输入法候选列表不展示、根本无法唤醒中文输入法。这个不多解释,想想就能知道对于中文用户来说,这种程序在使用的时候会有多麻烦。

可能会有朋友说ubuntu还有其他的一些问题,比如版本号更新经常性的更坏掉、经常性的报告系统错误弹窗之类的。但这些是ubuntu在使用snap格式软件包之前就存在的一些问题。既然选择了ubuntu那么说明这些经典问题已经考虑过了,相较于unity,还是unity更香一些。但真的使用起来,发现snap异味完全覆盖过了unity的清新。

当然,snap这些问题可能也是因为unity没有完全适配好,官方版本不会出现。诚然,可能官方对snap的支持会更全面一些,但国内镜像站点不存在就是不存在,而且官方使用gnome桌面,我能有什么特殊的理由一定要选择ubuntu呢?

这纯粹是一篇日常的记录,顺便可以防止自己忘记,当一个备份

在电子信息方面,我自己经常会莫名其妙的解决一些困扰很长时间的奇怪问题——在按照网络上面提供的方法尝试后依然没有任何作用的时候。从以前使用老电脑时候的硬件故障,到后来刚开始接触Linux出现的一些字体之类的配置问题……这种经历怎么形容呢,就是不知道从哪里获得的启发,突然灵光乍现,觉得可能这么搞就可以解决,然后也确实就解决了。不知道看这篇文章的各位有没有过这种类似的经历。

而就在刚刚,同样的灵光乍现,让我解决了我公司系统在我的windows11上面功能不完整的问题。

之前

大多数公司内部的系统什么样子应该有目共睹。一句话形容就是:能用就行。所以我公司合同系统在2010年上线后就几乎没有任何的重构,以至于它只能在IE内核上工作,甚至连新版本IE都不太好正常使用。

更不要说完全停用IE的windows11了。

所以一直以来我都是使用双内核的浏览器进行合同系统的操作,这样至少我可以正常打开合同系统,并且可以使用大多数合同系统的功能。但这其中,上传文件正常使用的前提是需要调整一下Internet设置。这部分其实已经轻车熟路了。

  • Internet选项-安全标签,所有级别的安全等级均拉到最低
  • Internet级别选择自定义,脚本之前的所有禁用项全部启用
  • 确定

但合同定稿按钮,自从使用windows11以来无论如何都没办法使用,所以一直也是借用同事的电脑来完成定稿工作。

曾经有看过F12里边的报错,说是loadXML方法不可用。在网上查也查不到什么有用的办法。全都是说换到IE使用之类的……

我要是能用,还用得着费这劲?而且我已经用IE模式运行了,但该不行还是不行。

今天

但今天又想起来这个事情的时候,突然灵光乍现:我在家用windows7的虚拟机时候,IE进入合同系统的功能就是完整的,那我是不是可以在公司这个双内核浏览器里边把IE版本往前调呢?

  • 进入这个浏览器的设置-高级设置-内核切换设置
  • 找到列表里边的合同系统的地址,右侧直接指定成IE8

再打开合同系统,解决了。

就…很惊喜,但又很平淡。

惊喜的是困扰了得一年多的问题一下子就解决了;
平淡的是……解决方法就是这样,就没了……