14.31MB的压缩包,解压后20MB,全部塞进一个shell脚本里。Astrid在终端敲下一行命令,她的电脑在10秒内完成了操作系统级别的"热切换"——没有重启,没有U盘,当前运行的所有进程被强制终止,内核被替换,新系统接管硬件。
这听起来像科幻片里的场景,但代码就公开挂在她的个人网站上。更魔幻的是,整个技术方案的底层逻辑,是把Linux内核当成一种"解释型语言"来运行。
「curl https://astrid.tech/rkx.gz | gunzip | sudo sh」——这条命令的每一个字符都在挑战你对操作系统启动流程的认知。
20MB的"病毒"里装了什么
先拆解这个文件。下载后解压,file命令显示它是POSIX shell脚本。但cat出来全是base64乱码,头尾夹杂着可读的shell代码。Astrid自己解释:中间那段14MB的base64,解码后是一个cpio归档文件(一种Unix早期的打包格式),里面塞着编译好的Linux内核镜像。
脚本的头15行做环境检查:是否root权限、有没有kexec-tools、base64和cpio。通过后,它把base64数据解码成临时文件,用cpio拆出两个关键组件——内核文件"k"和内存盘"r",然后调用kexec加载并执行。
kexec是什么?这是Linux内核自带的一个系统调用,设计初衷是让服务器在不重启的情况下切换内核版本,减少停机时间。但Astrid把它用成了"任意代码执行器":只要你能构造一个合法的内核镜像,就能让硬件直接跳过去执行,完全绕过用户空间的防护。
换句话说,kexec把Linux从"启动后不可触碰的底层"变成了一种可脚本化的资源。传统观念里,内核是操作系统的地基,用户程序在上面跑;但在这里,内核本身成了被调度的对象,和Python脚本没有本质区别。
把内核当Python跑的技术链条
这个方案能跑通,依赖三个技术环节的精密配合。首先是initramfs(初始化内存文件系统)的构造。Astrid的cpio归档里包含了一个极简用户空间,内核启动后立即挂载它,完成从"裸硬件"到"可交互系统"的过渡。
其次是kexec的--reuse-cmdline参数。这个选项让新内核继承当前系统的启动参数,包括根分区位置、内核模块路径等。没有它,新内核启动后会因为找不到硬盘驱动或文件系统而崩溃。
最关键的一步是kexec --exec。这个命令触发真正的上下文切换:当前内核把CPU控制权移交给新内核,内存状态被重置,所有进程被强制终止。从用户视角看,屏幕可能闪一下,然后就是一个全新的登录提示符——但硬件从未断电。
Astrid在博客中打了个比方:「这就像在飞行中更换飞机引擎,而乘客只感觉到一次轻微的颠簸。」
为什么Linux允许这种事发生
这个技术方案暴露了一个深层设计哲学:Linux内核从来不是"安全边界",而是"资源管理器"。Unix传统里,root用户被信任为系统的最终仲裁者,内核提供的机制(包括kexec)都是工具,而非枷锁。
对比其他操作系统,这种设计显得相当激进。Windows的Secure Boot链会验证每个启动组件的签名,macOS的SIP(系统完整性保护)把内核扩展的加载变成需要重启的特权操作。而Linux的kexec,默认情况下只需要root权限就能调用。
![]()
这不是疏忽。Linux在服务器市场的统治地位,很大程度上归功于这种"不挡路"的设计哲学。云厂商需要热补丁内核漏洞而不中断虚拟机,嵌入式开发者需要快速迭代固件,安全研究者需要构造隔离的测试环境——kexec是这些场景的通用基础设施。
Astrid的"20MB脚本换内核",只是把这条技术链条推到了逻辑终点:如果内核可以被热替换,那它就和任何其他可执行文件一样,可以被curl下来、被管道传递、被脚本编排。
从"解释器"到基础设施
这个项目的真正价值,在于它重新定义了"操作系统"的边界。传统模型里,OS是硬件和应用之间的固定层;但Astrid演示的是,OS可以像容器镜像一样被分发、被版本控制、被CI/CD流水线构建。
她已经把完整代码开源,包括生成那个20MB脚本的构建流程。核心工具链基于Nix——一个声明式的包管理系统,能把整个Linux发行版的构建过程写成可复现的配置文件。这意味着你可以fork她的仓库,修改几行配置,打包出一个属于自己的"一键换内核"脚本。
社区反应两极。Hacker News上的讨论帖里,有人担心这会成为恶意软件的温床:「以后钓鱼邮件不用骗你下载exe了,一条命令就能让你的机器变成僵尸网络节点。」也有人看到了正向应用:边缘计算场景里,可以用这种方式远程修复崩溃的系统;CI/CD流水线里,可以构造完全隔离的测试环境而不依赖虚拟机。
Astrid本人的态度很克制。她没有声称这是"革命性"或"颠覆性"的技术,只是在博客结尾留了一句话:「Linux一直是个解释器,只是之前没人把它当解释器用。」
如果你现在打开她的网站,那行命令仍然挂在那里。14.31MB的数据,20秒的下载,10秒的执行——然后你的电脑就变成了另一台电脑。这种体验的诡异之处,在于它太"顺滑"了:没有BIOS的蜂鸣,没有grub的菜单,没有进度条。就像Python解释器执行完一行print,光标静默地等待下一行输入。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.