本项目借鉴了 heyManNice/bsod 的 DRM 直渲思路,结合了 C + libdrm + FreeType 技术。
同时项目内嵌了 heyManNice/bsod v1.0.1 的构建产物,作为"失败蓝屏"。
感谢 heyManNice 的贡献。
👍好用的云服务器,就选雨云 ,2核2g服务器28元/月起。
如果是精简版系统,可能需要下载
sudo apt install libdrm2 libfreetype6 libfontconfig1 libsystemd0然后之间去Releases下载 windows_update_in_linux 可执行文件,放到任意目录,运行。
sudo ./windows_update_in_linux # 50/50:成功(后台真跑 apt)重启 / 失败蓝屏(不更新)
sudo ./windows_update_in_linux --no-reboot # 不真重启:成功/失败都恢复桌面退出,蓝屏也不重启
sudo ./windows_update_in_linux --timeout=10 # 更快预览(默认 20s)
./windows_update_in_linux --help| 场景 | 方法 |
|---|---|
| 强制本次"成功" | WINDOWS_UPDATE_MODE=success sudo ./windows_update_in_linux --no-reboot |
| 强制本次"失败" | WINDOWS_UPDATE_MODE=failure sudo ./windows_update_in_linux --no-reboot |
| 不真重启(测试) | sudo ./windows_update_in_linux --no-reboot |
| 改最少等待时长 | sudo ./windows_update_in_linux --timeout=30 或 WINDOWS_UPDATE_TIMEOUT=30 |
| 想看帮助 | ./windows_update_in_linux --help |
本项目仅供学习研究、娱乐整活使用,请勿随意使用在生产环境,重要设备上。作者不对任何因使用本项目而造成的损失负责。
用 C + libdrm + FreeType 写的整活程序:绕过桌面,切换到空闲 tty、 抢占 DRM Master,把"Windows 式更新"界面直接渲染到物理屏幕。每次运行 50% 概率更新成功、50% 概率更新失败。
CMakeLists.txt 构建系统(CMake + pkg-config)
src/main.c 入口:参数解析 + 调用直渲
src/ttydrm.c/.h VT 切换 + DRM 帧缓冲 + FreeType 文字 + 50/50 结局 + 内嵌 BSOD
src/bsod_data.h 内嵌的 bsod v1.0.1 二进制(构建时生成)
windows_update_in_linux 编译产物(根目录,直接 ./ 运行,已 gitignore)
因为显示器归本进程所有、桌面整体被挂起,受害者无法 Alt+Tab 逃逸,
在 X11 和 Wayland 下都生效。集成自 heyManNice/bsod
的构建产物(已内嵌进本二进制)作为"失败蓝屏"。默认会真正重启系统;
加 --no-reboot 可只恢复桌面退出(测试/保险用)。
- 单一可执行文件:编译产物就在根目录,
./windows_update_in_linux直接跑 - 极轻依赖:只用
libdrm+freetype2+libsystemd(fontconfig可选),无 GTK / 无 WebKit / 无 X11 - 不可逃逸:桌面被挂起,物理屏幕直渲,X11 / Wayland 通吃
- 50/50 结局:随机更新成功(进度到 100% 后重启)或失败(内置 BSOD 蓝屏接管)
- 玄学进度:成功时一开始快、后面慢地逼近 99%;失败时从 0% 慢慢爬到 35%~42% 随机封顶值后停住
- 假戏真做(成功才更新):只有随机到"更新成功"才在后台真跑
apt-get update && apt-get upgrade并等它跑完再显示 100%;随机到"失败/蓝屏"则不做任何系统更新(日志windows-update-real.log在当前目录) - 内置 BSOD:内嵌 heyManNice/bsod v1.0.1 构建产物,失败时直接展示真实蓝屏(含二维码,原因按语言显示"Linux 在更新时出错")
- 单语言文案:按
LANG环境变量自动切换——zh*显示中文,其他显示英文(字体同样按语言选择,fontconfig 或回退扫描系统字体目录) - 安全兜底:
--no-reboot不真重启,恢复桌面退出(蓝屏也会以--restore模式运行、同样不重启);进度至少 20s(可用--timeout调整) - 真机友好:DRM 设备自动探测
/dev/dri/card0..7
编译:
| 发行版 | 安装命令 |
|---|---|
| Debian/Ubuntu | sudo apt install libdrm-dev libfreetype-dev libfontconfig1-dev libsystemd-dev build-essential cmake pkg-config |
| Fedora | sudo dnf install libdrm-devel freetype-devel fontconfig-devel gcc cmake pkgconf-pkg-config |
| Arch | sudo pacman -S libdrm freetype2 fontconfig base-devel cmake pkgconf |
libfontconfig1-dev可选;不装也能编译(回退到扫描常见字体目录)。
cmake -B build && cmake --build build编译完成后,二进制直接出现在项目根目录:./windows_update_in_linux。