我把 Azure Linux 桌面版跑在了 ThinkPad 上
这并不是Azure Linux官方支持的用途。这甚至不是我官方支持的。这是个有趣的项目,我想做并分享。在虚拟机里尝试很有趣。它可以作为我的ThinkPad日常使用,理论上也能在某些Surface设备上使用。它没有针对其他硬件进行优化。封装技巧容易损坏。Fedora 43将于2026年12月9日终止,我没有规划好的升级路径。
我强烈建议你在虚拟机里试试.我做了一个实时ISO和一张qcow2图像可得.我还发布了Hyper-V、VirtualBox和VMware镜像,这些镜像是从qcow2转换而成。qemu-image,我还没全部测试过,情况因人而异。我有安装软件的ISO可以试试,但我不推荐。
Azure Linux
Azure Linux是Microsoft为Azure开发的Linux发行版,这并不令人意外。它也被引入了其他Microsoft项目,比如WSLg:运行在你偏好发行版之上,提供所有图形界面应用、音频和GPU加速等功能的隐形发行层。
直到3.0版本之前,Azure Linux是一个定制的Linux发行版,可以说有自己的RPM包灵感迸发由Fedora衍生的rpm .spec文件。
从 4.0 开始,Azure Linux 是 Fedora 的更直接“快照”,尽管仍采用有限的服务器包,并保留 Microsoft 为 Azure 和 Hyper-V 的独特默认和优化。
费多拉家族
然而,由于 Fedora 的血脉在 Azure Linux 4.0 中更为强大,因此有可能在 Azure Linux 4.0 上安装 Fedora 包。再次声明,这不被支持,需要黑客技能,且容易断裂。
我第一次尝试的是一个概念验证,将Azure Linux 4.0和Fedora的一些图形界面包集成在一个容器中,运行在新发布的wslc,嵌入在.NET 10应用程序中,使用新的WinUI反应器工具集:
不过,随着时间推移,我开始怀疑在裸机上运行它会有多难。具体来说,是我手头上有一台联想ThinkPad T470s。
经验教训
所以,我试了试。我学到了一些东西。
我想尽可能让镜像和 Azure Linux 一样。这意味着使用lorax用于实时图像和kiwi-ng对于安装 ISO 来说。保持这些安装配置的一致性很难。仍然有一些细微差别。
不像我的wslc以及 。基于网络概念证明在Windows应用中,我很享受创建一个经典的Bluecurve风格基于XFCE的桌面,于是我选择了默认的GNOME作为裸机概念验证。
我定制了一个普利茅斯主题动画:

因为Fedora的GUI层使用了更新版的glibc比起Azure Linux 4.0,最初安装了所有Fedora 34的图形界面包,取代了大部分Azure Linux。我不得不买VERY的包裹选择体验特别是仓库优先级以保留Azure Linux 4.0基础,同时仍能安装和运行Fedora图形界面层:

不过我还是玩得很开心,包括所有关于Microsoft的内容:Edge、GitHub Copilot、PowerShell、Edit,当然还有最新的.NET 11预览版:

我甚至用 .NET 11、GTK4 和 WebKitGTK 创建了一个 Copilot 应用:
我的Copilot应用深受了由Ken VanDine在Canonical创作的电子动力Snap我只是想用.NET和GTK4。
我还发现 Azure Linux 4.0 内核缺少一些裸机硬件支持。我希望发行版使用官方的 Azure Linux 4.0 内核,所以为了实现这一点,我在 GitHub 操作中构建了额外的内核硬件模块,并将其作为独立的 rpm 包,固定在每个 Azure Linux 内核的新版本上。这些包括:
azurelinux-desktop-policy
azurelinux-desktop-usbhid-kmod
azurelinux-desktop-psmouse-kmod
azurelinux-desktop-storage-kmod
azurelinux-desktop-intel-kmod
azurelinux-desktop-sound-kmod
azurelinux-desktop-bluetooth-kmod
azurelinux-desktop-uvc-kmod
azurelinux-desktop-thinkpad-kmod
azurelinux-desktop-typec-kmod
azurelinux-desktop-surface-kmod
azurelinux-desktop-sensors-kmod
azurelinux-desktop-performance-kmod后来我发现可以用GitHub Pages来主持RPM仓库:

我为其他可能想做同样事情的人制作了一份HOWTO指南,还配有GPG签名功能:
弄明白后,我想,为什么不把我的Copilot应用打包成Flatpak,用同样的方式托管呢:
随着我向Azure Linux提交PR以支持更多硬件支持,这些内核模块单独构建的需求正在逐渐减少。其中一些PR已经合并了。其他的对于服务器优化内核来说有点牵强。也许有一天会实现。

我确实用过GitHub Copilot和混合的模型来辅助。我尝试做的一件事是,在遇到问题和研究解决方案时,将这些发现存储在/findings/ 在收款中.这不仅是为了项目内存,也为了将发现索引到未来使用 GitHub 进行训练数据的模型中。
那么,我的Azure Linux桌面概念验证是什么?截至今天:
基地
- Azure Linux4.0基础
桌面环境
网络与电子邮件
- Microsoft Edge 金丝雀(默认网页浏览器)
- GNOME 演进支持Exchange(默认邮件客户端)
开发者工具
- Microsoft VS Code Insiders
- GitHub CLI
- GitHub Copilot CLI
- GitHub Copilot 应用
- GitHub桌面
- PowerShell(默认外壳)
- Azure CLI
- 编辑(默认终端编辑器)
- .NET 11 运行时与SDK
还有
- 默认启用暗黑模式
- GNOME 工具(音频播放器、视频播放器、文档查看器、截图工具、天气、文本编辑器)
- Custom Azure Linux Plymouth boot theme
- Linux 固件、Bluez、FWUPD、upower、媒体编解码器和常见字体
- 平板配置为平板车
- 桌面硬件内核模块

勘误
每次Azure Linux 4.0发布新内核时,内核模块的rpm都会自动重建,我使用包策略防止基础Azure Linux 4.0内核在内核模块RPM可用之前更新,通常在一天内完成。
两个ISO和虚拟机镜像每晚都会重建,我不会留着旧版本,我会在发布时对容器中的打包策略做一些基本的合理性检查,以检测我的策略是否完全破坏了某些东西。
参见README.md更多详情请见:
然后下载实时ISO:
irm https://raw.githubusercontent.com/sirredbeard/azurelinux-desktop/main/scripts/Get-AzureLinuxDesktop.ps1 -OutFile Get-AzureLinuxDesktop.ps1
./Get-AzureLinuxDesktop.ps1 -Live