1. 首页
  2. 网站建设
  3. 服务器

在Linode中安装Windows系统的步骤

准备镜像

我选择把 Linode 开在 Fremont 区,打算用 Los Angeles 区的 Vultr 服务器准备镜像。Vultr 支持从用户自定义的 ISO 启动,给我们提供了很多便利,它最多可以给用户存放两个自定义 ISO,刚好能满足我的需求。
第一个要准备的镜像是 Finnix,这是一个 Linux 环境的装机必备工具集。在 Vlutr 的 ISO 管理页面上,直接添加 http://www.finnix.org/releases/111/finnix-111.iso 即可,Vlutr 会在后台下载这个镜像。
第二个是 Windows 镜像,我安装的是 Windows Server 2012 R2,镜像名 en_windows_server_2012_r2_vl_with_update_x64_dvd_4065221.iso,我发现在 Google Drive 上已经有人上传了一份镜像,地址 在这里。此外还需要一份 VirtIO 驱动,地址 在这里,我们需要把驱动解包后放进系统 ISO 内。我的解决方案是直接开一台 Windows 实例,关闭 IE ESC 后直接用浏览器下载系统镜像和驱动,然后集成好驱动后打包好新的 ISO,开启 IIS 把镜像提供给 Vultr。此方法最为迅速简便,从 Google Drive 下载系统镜像的速度可达 60 MB/S,花不了多少时间,而实例每小时收费仅仅是三美分而已,折合只需几毛钱就能解决问题,何乐而不为。
在Linode中安装Windows系统的步骤
最终需要在 Vultr 上准备好两个自定义镜像。

安装系统

我采用的是在 Vultr 上安装,然后全盘烧录到 Linode 的方法。新建一个 Vultr 实例,选择最便宜的 5 刀一个月的 SSD 实例即可,选择从自定义 Windows 镜像引导,然后开机,打开 VNC 在上面操作。
文件载入后就进入了 Windows 安装界面了。我选择了带 GUI 的 Server 2012 R2 标准版,接受了许可证之后进入分区界面,因为没有驱动,所以没有认出硬盘。点击加载驱动,分别加载 Balloon、NetKVM、viorng、vioscsi、vioserial、viostor 内的驱动,注意不要隐藏不兼容驱动,上面列出的都要加载,否则虽然在 Vultr 上能正常运行,但到了 Linode 上就会报错。
之后如无意外能认出硬盘了,我为了方便,并不希望把引导和系统分开两个分区。因此需要手动分区,Shift + F10 打开黑框框:
  1. diskpart
  2. select disk 0
  3. create partition primary
  4. exit
刷新一下,选择已经创建好的分区,点击下一步。此时安装程序开始解包内部的 WIM 镜像,完成后会重启一次从硬盘引导继续安装,这时所有的操作都和 ISO 无关了。我们要做的是,在 WIM 镜像解包完成后重启的时候,在从硬盘引导之前把它拦截下来,对此时的硬盘做镜像。
具体的操作就是,完成解包重启时,VNC 会断开而且不会自动重连,需要马上刷新网页让 VNC 连线,这样用户可以看见虚拟机 POST 的界面,此时会有提示说按 Ctrl + B 进入 iPXE,我们照做,进入后启动过程就被拦截下来了。
接下来在 Vultr 的控制面板上把系统 ISO 卸载下来,这个操作会触发实例重启,如同上一步一样,把启动拦截下来。再在控制面板上把 Finnix ISO 挂载上去,这个操作同样也会触发实例重启,这次选择引导进入 Finnix。
新的拦截办法在这里。近日打包 Server 2016 发现 Vultr 似乎把 iPXE 的等待时间调短了,结果就是几乎没有办法在系统从硬盘启动之前把过程中断。解决办法是,安装系统第一部分完成,在提示倒数 10 秒然后重启的时候,在控制面板直接关机。待关机完成后,打开挂载镜像设置,选择移除镜像,此时系统会自动开机。点击移除镜像后,无需等待网页刷新完毕,马上点击关机。待网页加载完毕后,Windows 安装镜像已被移除,系统电源为关闭状态。此时再加载 Finnix 镜像进行下一步即可。

打包系统

上面的实例装了 Windows 已经没有空间了,于是我另开了一个 Vultr 实例来做打包。选择月费 5 刀的储存型即可,系统我选择了 Debian 8,也就用一个小时不到,折算过来一毛钱都不用。
修改 root 密码后,在 Finnix 这边把整个硬盘镜像过去,由于两个实例都在同一个数据中心,传输速度可以达到 90 MB/S。复制 15 GB 的硬盘需时不超过五分钟,因此就懒得考虑硬盘末端都是空白内容而无需传输这样的问题了。这里假设 Linux 实例的 IP 是 1.2.3.4。
  1. dd if=/dev/vda | pv -s 15G | ssh root@1.2.3.4 “dd of=/root/windows.raw”
传输完成后,安装了 Windows 的实例就可以删除了,使用时间不到一个小时,花费不过是几毛钱。

准备 Linode

创建一个 10 刀每月的 Linode 2048 实例。
新建一个磁盘。
  • 名称 System
  • 容量 24576 MB
  • Type 选择 RAW
新建一个自定义的 Profile。
  • VM Mode 选择 Paravirtualization
  • Kernel 选择 Direct Disk
  • /dev/sda 挂载刚刚创建的 System
  • initrd 选择 No initrd
  • root / boot device 选择 /dev/sda
  • 下方的 Filesystem/Boot Helpers 一律选择 No
同样是因为网速快,我就不考虑复制整个硬盘是不是高效了,反正都是几分钟就能完成的事情。点击上方的 Rescue,把 /dev/sda 挂载为之前创建的 System,然后重启进入救援模式,这里 Linode 自带的救援模式用的也是 Finnix。在 Remote Access 页面打开一个 Lish Console。
  1. passwd root
  2. service ssh start
修改 root 密码并打开 ssh 服务,至此这个 Linode 已经准备好接受烧录了。
在Linode中安装Windows系统的步骤

烧录系统

回到那个 Vultr 的 Linux 实例上,用 dd 把 RAW 镜像烧录到 Linode 上。假设 Linode 的 IP 是 4.3.2.1。
  1. dd if=/root/windows.raw | pv -s 15G | ssh root@4.3.2.1 “dd of=/dev/sda”
烧录的镜像大小是 15 GB,根据实际测试来看,Vultr 在 Los Angeles 的机房与 Linode 在 Fremont 的机房之间连接速度大概是 200 Mbps 左右,这个步骤需时 15 分钟左右。完成后我们在 Linode 上进行分区大小调整。使用 parted 把分区扩展到整个硬盘大小即 24 GB 即可。
之后在 Linode 控制面板使用之前创建的配置文件重启引导实例即可,安装程序的后半部分会在 Linode 上执行完毕,之后就可以使用了,打开一个 Glish 窗口可以监视整个过程。
安装程序运行完毕后,需要在 Glish 上设置管理员密码。进入桌面后,由于目前的 Glish 非常不好用,鼠标操作非常别扭,因此最初始的设置需要通过键盘操作。
关于选择网络位置,此处如果选择 Private Network 的话,则下一步打开远程桌面连接后就可以通过远程桌面登录管理了;如果选择了 Public Network 或者根本没有做出选择而错过了设置的话,之后开启远程桌面连接后,需要打开防火墙设置启用规则,否则无法连接。
在Linode中安装Windows系统的步骤
解决不能使用 IPv6 的问题:
  1. netsh int teredo set state disabled
  2. netsh int ipv6 6to4 set state disabled
  3. netsh int ipv6 isatap set state disabled
  4. netsh int ipv6 set global randomizeidentifiers=disabled
另外,在 Vultr 上安装时系统盘大小只有 15 GB,到了 Linode 上变成了 24 GB,如果不进行扩充的话,虽然分区大小已经是 24 GB 了,但是 C 盘的大小还是原来的数值,因此需要扩充系统盘:
  1. diskpart
  2. select disk 0
  3. select partition 1
  4. extend filesystem
无需重启,刷新即可见系统盘容量变成 24 GB。
我们再打开设备管理器,将无法使用的软驱和光驱禁用。这样在我的电脑面板就不会看到这两个无用的设备了。

镜像打包

在 Vultr 实例上 tar 压缩即可,RAW 镜像末端都是空白,压缩后占用空间会大幅减少。之后随便装一个 Web 服务器,在本机把压缩好的镜像下载回来即可。
因为要压缩的文件很大,如果在压缩的时候能显示进度就好了:
  1. tar cf – windows.raw -P | pv -s $(du -sb windows.raw | awk ‘{print $1}’) | gzip > windows.tar.gz
用打包后的镜像对 Linode 烧录:
  1. tar zxOf windows.tar.gz | pv -s 15G | ssh root@4.3.2.1 “dd of=/dev/sda”

 

按照此流程部署最快只需要半小时,额外的花费极少,也免去了本机上传大容量镜像的麻烦。

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code