我把主力系统换成了NixOS

折腾,折腾,还特么是折腾

感想

时隔将近9个月的新博文,这段时间我的人生大概是没有什么太大的变化:

上半年开始学电吉他。本人爱好摇滚,也算是圆了自己一直以来的音乐梦想(虽然想过组乐队什么的,一是找不到音乐口味一样还学乐器的,二是本人社交节能到QQ空间已经半年没有更新,三是学了半年多还是菜的一笔……

摸过了一个学期。大一下学期实在是太摆了,玩游戏玩的有点疯加上折腾CTF安全这块,导致于将近期末有的科目才开始学习,最后虽说没挂科,但是连在小专业里连前24%的奖学金都摸不到,别人上大学赢麻麻,只有我输光光(甚至连输的资本都没有)

被卷的喘不过气的我(哈哈这人真搞笑)这学期仍然处于课内摆烂的状态,天天折腾别的有的没的的技术,现在对安全的逆向渗透这块比较感兴趣,然而学校认可的安全竞赛实在太少(而且难出好成绩),这些技术(在大学里)似乎很难与主流的前端/后端编程竞争,再说了安全真的就是经验谈,现在的我连Script Kid都算不上,何谈竞争,真的迷茫啊……

前因

感想写了蛮多的,该进入正题了,事情起因于我在学习渗透的时候,发现自己主机开放了一个莫名其妙的http端口,而进去一看居然是文件索引,搜索后发现是National Instrument软件开放的用于读取配置文件的端口大概是这么个意思),恰好学了扫端口/文件上传/远程执行的我脑袋一热就想卸载掉这个软件以关闭端口(刚好我不需要NI的专业软件了)。

不卸载还好,一卸载——寄。我用了一个叫做Revo Uninstaller的软件在卸载完后扫描残余文件/文件夹/注册表,本来删掉残余文件完全没事的,可谁能想得到,卸载器会把好多系统文件识别成残余😂,于是乎等我意识到已经晚了,卸载器只备份了注册表(什么逻辑,文件不备份)

在使用Dism等工具修复无果之后,我决定不如趁此机会转linux,毕竟Windows我早就忍不了了。在一位大佬朋友oluceps的推荐(chuanjiao)下,我选择了NixOS。事实证明,我选择Linux是对的,但是选择NixOS是否对,有待商榷(((

过程

备份

把c盘d盘里面重要的Project/Homework/Documents还有各种各样的文档,还备份了一些Portable的工具,比如说IDA、x64dbg这些没有Linux版本的软件,想着之后用Wine什么的跑一跑,当然还有游戏存档(Steam有云,Minecraft我直接copy整个游戏,因为是java平台所以不会有什么兼容性问题)

Windows上我分了两个盘,c盘肯定是要格式化的,d盘虽然不急着格式化,但是我怕分区的时候出问题(已经被丢数据搞怕了),也把重要的文件备份了(最终备份了大概50GB大小)。

安装

安装的话,我选择LiveCD,一是写入简单,二是我要把efi格式化并且对SSD执行分区操作,还是外接u盘启动来的安全。

rufus将NixOS写入u盘启动后,我就开始分区了,文件系统我选择btrfs,copy-on-write/snapshot/subvolume这些特性还挺吸引人的,对于NixOS这样挺折腾的distro,快照就显得尤为重要。

一开始用图形界面分区&安装,结果因为图形界面分区不够清晰没有注意到efi要挂载的路径,第一次安装很不出意料的失败了😂

而后吸取了教训,还得是命令行。参考了 https://nixos.wiki/wiki/NixOS_Installation_Guide进行命令行的分区、配置和安装。顺便说一下,官方的教程真的写的太啰嗦并且冗余了,想要速成还是NixOS Wiki

成功安装并且Boot成功后,我clone了大佬oluceps的配置,并且按照readme修改了一些硬件配置,这是我现在的配置(不过跟佬的配置差不多)

折腾

大佬已经预安装了好多实用应用了,接下来就是配置我自己需要的东西咯。

Windows迁移

首先就是Steam,久仰Proton的大名,就想尝试一下,不得不感叹2022年Linux Gaming已经今非昔比了~ ProtonDB类似于游戏区的WineDB,记录着多数Steam游戏的Linux兼容性(以及Steam Deck)

然后就是运行Windows应用了,我找到一个叫做 Bottles 的Wine包装应用,比直接操作Wine简单不少。只要安装一些基础的运行库,尝试不同的Runner,多数应用都可以正常运行。

办公软件

Office肯定用不了了,有点心疼我的正版Office2019……WPSOffice几乎成为了唯一的选择(libreoffice,狗都不用),nixpkgs有现成的wpsoffice-cn(虽然带cn,但是系统语言如果不是zh_CN也不会显示中文)

IM

聊天软件就是QQ最难办,Linux QQ已经摆烂,各种第三方QQ要不功能不全,要不版本过低(or both),最好的解决方法还是Wine,用Bottles安装QQ再放到桌面即可享受几乎完美的QQ体验,虽然有些小bug(

微信我用的不多,不过有人打包了Deepin的微信到nur(aur的nix版),微信的话就没有什么太大的功能要求了。

Telegram安装个包完事,easy

编程

Windows上编程环境的配置其实跟Linux差不太多,只是拿传统的思想配置环境,在non-fhs的NixOS上不管用。

编辑器还是vscode,实在是有点不太习惯tmux+shell+vim/helix这套组合,还是傻瓜式的vscode适合我,不过nixos的non-fhs还是坑了我好几次:先是g++找不到头文件(通过换clangd解决),rust-analyzer启动报错(通过修改language server位置解决),Python找不到解释器(后来才知道在/run/current-system/sw/bin/里面等等问题。

其他语言有jetbrains全家桶,学生认证还是蛮舒服的。

虚拟机

大佬的配置已经安装了virt-managerqemu-kvm了,开箱即用😻

Windows时期留下了WSL2/ParrotOS这两个常用的虚拟机。Parrot我用来Pentest/CTF的,里面配置还是搞了很多的不舍得重配;WSL2跟Win文件系统融合不错,而且很多CTF的题目需要用到Linux,我在里面也配置了不少。

Parrot很方便,我直接用virt-manager导入就可以运行,WSL2因为不是个可以Boot的镜像(而且是微软自己搞的VHDX格式),再加上网络上几乎没有像我这种需求的,所以估计只能挂载镜像导出文件了(TOBEDONE)

GNOME

gnome确实蛮好看的,相比于以前在Raspberry上安装的那些LightWeight桌面更加User-Friendly。Nixpkgs里面有着不少的gnome扩展。主题也有很不错的。

适用于gnome动态桌面我只找到了 Hidamari nixpkgs没有,我是在flatpak上安装的。

桌面

Workspace Switcher

总结

还有很多折腾过的东西懒得写或者以后再写了。还是那句话:生命不止,折腾不停。