1. 恶向胆边生

Steam Deck游戏掌机的底层操作系统是 Arch Linux,且该游戏掌机支持以桌面环境启动 —— 这意味着 Steam Deck 游戏掌机同时还是一款带有完整硬件支持的 Linux 便携掌机。嘿嘿嘿,这就意味着它既是一个随身的 monitor terminal,还是一款随身的 联网控制终端。能干的坏事又增加了……🙃

steam-deck游戏掌机启发的技术环境演进 deco art.jpg

2. 基建新目标

  1. Ubuntu LTS作为日常技术开发平台
  2. Kali Linux 作为解决方案综合平台
  3. Steam Deck中的Arch Linux则是部署平台。以后就能带着游戏掌机坐地铁,一边打打游戏中的小怪兽,一边利用Linux中的小工具搞搞恶作剧:
    1. Steam Deck硬件同时作为可视化终端、遥控终端(Client)。
    2. 可能还需要一台境外的云服务器作为repo(顺便跑一跑给我自己用的云服务)。

对于上述目标的1.2.:我们仅仅是想同时拥有Ubuntu LTS开发环境的稳定性和Kali Linux的先进性;但为了日常使用的方便,我们更希望两个系统共用同一套文件数据。因此,本文要解决的难点是:让Ubuntu LTSKali Linux拥有独立的系统开发环境的前提下,如何同时共用同一套文件数据系统。

在参考多个方案之后,我的解法是:(1)当进入Kali Linux时,自动挂载Ubuntu LTS的磁盘分区,(2)然后对于Ubuntu LTS中需要共享的文件夹,以软链接(Symbol Link)的形式链接到Kali Linux(此处,我们将Ubuntu LTS的用户目录下的主要文件夹)。以下是我的工作过程。

3. 我要搞事情

3.1. 在本地安装 Kali Linux Rolling

注意:在安装Kail Linux的时候,为了(1)同与我其它Linux系统共享数据、(2)利用rsnapshot备份数据方便(减少不必要的麻烦),用户名一定要相同

3.2. 自动挂载Ubuntu磁盘分区

我的Ubuntu LTSKali Linux在同一个移动固态硬盘,因此Kali Linux启动时会自动挂载Ubuntu LTS的磁盘分区,这倒是省了我的功夫。如果没能自动挂载磁盘分区,请自行解决(关键词是Linux 磁盘分区 自动挂载)。

3.3. Kali链接到Ubunt共享文件夹

这是常规操作,我将其写成了脚本,代码如下:

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

echo "Input parent directory of shared forlds, without tailing '/':"
read parentDirectory

sharedFolders=($(ls $parentDirectory))

for itr in $sharedFolders
ln -s "$parentDirectory/$itr" "$HOME/$itr"

上述代码主要是为了zsh写的,其它的shell能不能用没测试过。代码中有个命名有typo,但是我懒得改了——代码能用就行,奥卡姆剃刀:如无必须,勿增实体

4. 潜在应用场景

这个其实我倒是挺愿意拓展以下的。白居易有曰:“文章合为时而著,歌诗合为事而作”。他也正是以这种态度,去倡导“新乐府运动”。其实技术也一样:技术归根到底,还是为了解决现实中的问题——因此,我们在做技术开发时,为了挖掘技术价值的潜力,一个简单粗暴的方法就是:尽量将它拓展到更多的应用场景。

对于上述脚本,我为它想定两个应用场景的:

  1. 在不同Linux系统间,实现文件夹的共享;
  2. 在使用某个Linux系统时,需要临时使用移动硬盘中的数据仓库(而且使用频次比较高)。这样,直接为将移动硬盘中的所有文件夹在本地Linux系统中批量建立软连接。

本文提到的问题已经解决。但是2. 基建新目标3.短期内我不会推进了。一方面我还没有太多的工具需要在steam deck中部署,另一方面短期内也没精力估计这事儿了。