【Azure】免费Windows实例dd安装官方Linux

发布于 / 信息应用 / 22 条评论

Azure算是公有云里面计费及免费逻辑相对比较复杂的一个了,虽然是有学生账号和一年免费试用,能不被套路完全利用好的也没几个;再加上微软自家丧心病狂的风控,感觉真正玩起来的人是少之又少。

注意:微软对于系统的识别要求VM内Agent上报系统参数一致,因此本文具有误导性,仅作记录,请勿按此文章操作进行。


在这方面博主恰恰就是那种运气爆棚的人了,在2019年五一我用GitHub学生包里的码激活了一个Azure学生订阅,然后连着两年收到了续期的邮件……

然后在Sponsorship页面也能看到到期时间往后延了一年,订阅周期变成了2019.5.1-2022.3.2,这个订阅开的第一台VPS已经在线600+天了,实在是很惊喜。

本着资源最大化利用的理念以及探针不愁多的想法,我决定把另一台Windows的B1s开出来。


一、正确开机

想要完全被Azure的免费额度正常抵扣的话,主要有以下三个坑点:第一个是可用性选项必须选择无基础结构冗余,否则你将因为无法使用基础SKU的动态IP,这样微软给你动态IP的额度你也就没法使用了;第二Windows系统镜像一定要选择带有smalldisk标注的,否则会因为系统盘大于P6 SSD而无法压缩回去;第三就是实例和磁盘类型,实例一定要选择B1s,磁盘是高级SSD。

其次就是你正确开启实例之后,此时系统盘为30G即P4级别,无法被64G的P6级别免费额度所抵扣;所以你需要把虚拟机停止掉,然后在磁盘中把磁盘大小修改为64G。这个时候又一个坑出现了,停止虚拟机的时候会询问你是否保留公共IP,这里一定不要勾选,否则转为静态IP后动态IP的免费额度便无法抵扣其开销。


二、想法源泉

首先B系列是微软入门级的突发型实例,是比阿里云的T5性能还要感人的实例;其次微软就算是P6高级SSD,配合B1s这样本身IO限制很低的实例持续写入也就14m/s的水平,这性能跑Windows别提有多酸爽了。

其次就是由于Windows7/2008已经EoL,微软直接把它们的镜像从市场下架了,剩下的2012以及更高的版本,用在1G的B1s简直就是在给自己找气受。

于是,把这台免费的Windows实例装成Linux一定是把它用好比较合理的选择了……


三、尝试操作

替换系统的想法很简单,与拯救Oracle的机器如出一辙:将这台Windows实例的系统盘挂载到另一台Linux的实例下,然后通过dd指令将Linux的系统盘悉数复制到这台Windows机器的系统盘中,再把它挂载回去,大功告成。想法比较简单,不过因为逻辑不同还是出了很多意外……

准备工具

先开一台Windows的免费实例A,然后再随便开一个Windows实例只保留系统盘B其他的都删掉,最后再开一台你需要的系统对应的Linux实例C(比如我选择的Debian 10)。为什么搞的这么复杂,原因有两个:第一是微软实例的系统盘必须含有osDisk标记,无法使用普通磁盘替换也没法卸载;第二是不同的系统具有不同的osType标记,Win与Linux的系统盘无法互相替换,我尝试用Powershell进行替换操作也因为标记不符而被驳回了。

dd系统

把之前保留下的B的系统盘作为普通磁盘挂载到C上面(注意挂载前修改为64G),开机并连接SSH。随后通过fdisk -l指令查看磁盘路径,比如我C的实例本身的磁盘是/dev/sda,挂在上去的盘是/dev/sdc,确定好路径之后就可以dd了。

查看dd的进度,可以再开一个SSH窗口,执行watch指令,回到之前的窗口就可以看到5秒刷新一次的进度了。

替换系统盘

dd完成之后,就可以直接在实例的磁盘页面点击“交换OS硬盘”替换掉系统盘了,替换之后直接开机就可以了(记得把替换下来的删掉)。


四、结语

网上将Windows的实例dd成Linux的实际操作少之又少,加上Azure没有VNC功能,直接重装的话困难还是挺多的,有官方的系统模板供复制还是很不错的。比较有意思的是dd之后,你的系统会识别成Windows(debian),笑死了……


*娱乐文章,请勿用于生产用途

转载原创文章请注明,转载自: Luminous' Home » 【Azure】免费Windows实例dd安装官方Linux

  1. 2023年8月,微软下架了所有版本的系统,只留下了 Windows 2022,无语。区域也只剩下了美国。于是我给微软提了工单。然后微软客服就教我用文中的方法安装了 Ubuntu,还跟我说不会收费。。。今天一看扣了我40刀,。。。

    1. @阿龙 要实现的话只能改Agent上报的系统版本号,但是一直没研究出来在哪里修改...
  2. 镜像市场又有Windows7 Enterprise了,但是启动实例后默认系统盘是P10-128G,不能压缩到P6,怎么搞呢?

    1. @路人 Windows要选择smalldisk的镜像,如果没有的话就不行了~
  3. 学习了,感谢!插个眼,最近刚好在捣鼓azure

    1. @Sucan 这篇文章有误导性最后还是不能免费的,不要这样操作哦……
  4. 不知道博主有没有去https://www.microsoftazuresponsorships.com/Usage上面查过自己的用量明细,我是直接在Windows系统下用脚本从Server 2019重装成Debian 10的,然后发现重装后的B1s不在Windows的免费额度内,而是和Linux那台共享每月750小时的免费额度(也就是说两台都被微软认为是Linux机器,尽管重装的那台在Azure门户上仍然显示模板是2019-Datacenter-smalldisk)

    1. @布莱克 同样发现了扣款问题,所以早些时候就把另一台删掉了,不太清楚现在的额度分配标准
      1. @Luminous 那看来不是我一个人的问题,我个人的猜测是Windows系统的虚拟机代理里面有定时上报一些信息,比如系统类型之类的。不过重装成Linux主要还是B1s这个1G内存跑Windows(哪怕是core版)实在是捉襟见肘,但跑跑Linux就很巴适。但如果微软能够识别出虚拟机内操作系统不是Windows而不计入免费额度的话,单纯从Windows重装成Linux就没有意义了。以上是个人看法。
        1. @布莱克 嗯,学生订阅还是安心就开一台挂机吃灰比较好……特别Win2008下架之后……
          1. @Luminous 或许可以试一下重装成Win2008会不会扣款?
  5. 现在Azure for students又可以用Github激活了!
    (貌似需要2021年通过的Github学生包,以前的不行)

    1. @tzchz 没看到有github激活的 点击按钮,只说要去git验证
      1. @lewss 不是说了吗,要2021年以后通过的学生包 估计微软是在批准学生包的同时将Github账号标记了Azure4students,所以以前批准的学生包没有资格激活Azure
        1. @tzchz 国内的邮箱可以吗,还是说国外的通过才能直接激活
          1. @studylong github学生包通过了就行
  6. 针不戳,刚续期azure

  7. 好东西,支持了,顺便请教楼主两个问题
    1. 有人说续期之后没有12个月免费的资源用了,请问b1s续期之后还是免费的么?
    2. 如果不替换系统盘,直接将windows dd成debian,是否可行?
    3. 分享一下dd脚本吧 :p

    1. @Nothing to say 第一个,根据过去一年看免费额度还有;第二个直接dd也可以,不过要选Gen1的实例;第三个脚本都是萌咖那个吧……
      1. @Luminous gen1和gen2有什么区别呀?
        1. @Nothing to say gen1是legacy引导的,gen2是uefi引导的,可以支持更大的磁盘
          1. @Luminous 谢谢大佬