分类 通用知识 下的文章

9月27号,arch的邮件列表有一个话题

We are excited to announce that Arch Linux is entering into a direct collaboration with Valve.

G胖又发力了。

首先,简单说说为啥这俩会有合作。众所周知,valve推出了Steam Deck,而其搭载的操作系统SteamOS,便是基于archlinux构建的发行版。

接下来,简单聊聊这个合作。当然,我不会在这儿预测G胖对Linux生态会有多么深远影响,只想跟各位就着这个邮件列表来简单看看,至少就直接合作的Archlinux以及G胖基于Arch构建的SteamOS来说,其会有哪些改变。

这个主题内已经很明确的指出了:Valve is generously providing backing for two critical projects that will have a huge impact on our distribution.。哪两个方面呢?

一个构建服务、一个签名机制。这可能对于arch的包维护者来说是一个影响人生轨迹的改变。目前,arch 在构建软件包时部分操作仍需要手动干预:如手动开始构建、手动使用自己的密钥给构建好的包进行签名。这使得同一个软件包,对于不同的软件架构,包维护者只能多次重复上述操作才能完成全平台维护工作。这好吗?这不好。

一旦valve的这两项内容实现了,即可为arch带来类似SUSE的OBS的操作流程:维护者只需进行资源的修正,多平台打包及签名工作即可让构建服务自动完成。

那如上这些意味着什么呢?

首先几乎可以确定的是,SteamOS基于Archlinux定制的这个条件在相当长的一段时间里是不会改变的了——只要这个合作真的可以持续下去的话。

其次,就目前针对valve的各种传言,valve如此深度的参与arclinux的建设更可能是其为自己下一步进军arm架构或者安卓架构的前一步布局。试想,一旦构建服务完成,无论是哪一种架构的软件包都可以更轻易的构建,那么SteamOS将不只是仅可以运行在x86架构的单一架构发行版,而是可以轻易的适配多种CPU架构的全方面操作系统,进而为Steam提供更多的运行平台。而Proton——这对于Windows用户可能也很陌生:SteamOS可以运行大多数游戏便归功于Proton这个中间层——一旦这个实现了自动构建和签名,那么Proton套件也可以通过一套设计而更全面的兼容于多种架构的硬件。那么会不会有这么一种可能:游戏开发者只需去适配Proton
套件,不需要再管运行proton的是哪种系统了。那如此一来,Proton便成为了一个平台,只要Proton可以运行,那么适配了Proton的游戏便可运行,这无疑简化了游戏适配操作系统的简易度,是一个值得期待的未来。当然,如此一来,Valve的VR眼镜芯片切换到其他更经济的架构便也是轻而易举了。

总之,Valve为 archlinux带来的改变,可大可小。就像Arch的这个邮件列表所说:

This opportunity allows us to address some of the biggest outstanding challenges we have been facing for a while.

转眼都到了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

视频点此

不管是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的教程

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

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

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

之前

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

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

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

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

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

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

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

今天

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

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

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

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

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

视频点此

一说到Linux,就一定会想到终端——无论把它看作优势还是劣势。那么这个终端相对于另外两大操作系统,有没有什么特别之处呢?

说到Linux终端的用处可以说很多,比如安装软件、更新系统、调整配置之类的。但一定程度上,另外两个操作系统的终端程序也可以拥有类似的功能。所以我一直认为Linux终端的优势在于可以快速查看程序出错的原因,这在另外两大操作系统中是比较难做到的。举一个Gnome设置崩溃的例子来看。

表现

点击gnome设置,图形界面会呈现程序启动的相关动画,但并不能展示出设置的窗口。这可以说是非常典型的启动即崩溃问题。通常在macOS和Windows中,对于这种点击后有运行迹象,但就是没有窗口的程序我们可能完全不清楚发生了什么。而对于Linux,我们可以通过终端来运行,快速查看程序到底发生了什么事。

查看原因

直接打开终端,启动gnome设置命令gnome-control-center——当然,如何找到这种启动命令可能也是一个小知识点,以后有机会的话会简单介绍一下。

此时,终端执行的优势就出来了,直接给出了错误信息:(gnome-control-center:15840): GLib-GIO-ERROR **: 13:41:26.403: Settings schema 'org.gnome.shell.app-switcher' is not installed

那么对症下药,补充这个模式就可以了。

但很不幸,这玩意儿貌似没有一个软件包或任何可以搜索到的来源包含这个玩意儿……此时终端的另一个有共识性的优势就体现出来了:直接修改配置。

gnome家族的软件多数都是用gsettings来调整配置的,图形化的软件可以参考dconf。

此时在终端中运行gsettings list-keys org.gnome.ControlCenter,可以看到其拥有的设置项,其中的last-panel,可能是记录了退出设置程序时打开的界面。联想到前一次正常打开时,是点击了多任务标签后直接崩溃的,因此推测由于last-panel记录了最后点击的标签页,再次打开设置时由于直接根据记录定位到了多任务,所以会再次漰溃进而无法启动。

为了验证,获取last-panel的值gsettings get org.gnome.ControlCenter last-panel
看到值为multitasking,确认了上述推测。因此将这个值复位应该即可解决:gsettings reset org.gnome.ControlCenter last-panel

再次打开设置,成功启动。