热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在KVM虚拟机中安装WindowsServer2008R2并激活

在一台DELLR310的宿主机上安装了UbuntuServer12.10默认集成KVM虚拟机,用户态虚拟机软件qemu-kvm使用seabios的作为bios实现(位于/usr/share/qemu-kvm/bios.bin,来自于qemu-common1.2.0+noroms-0ubuntu2),该bios.bin仅

在一台DELL R310的宿主机上安装了Ubuntu Server
12.10默认集成KVM虚拟机,用户态虚拟机软件qemu-kvm使用seabios的作为bios实现(位于
/usr/share/qemu-kvm/bios.bin,来自于qemu-common
1.2.0+noroms-0ubuntu2),该bios.bin仅包含部分来自宿主机的SLIC信息,但不完整,无法通过Window
OEM验证。

本文将介绍安装KVM虚拟机,借助virt-install安装Windows客户机,去除bios.bin里内置的SLIC,然后使用-acpitable参数载入正确的SLIc 2.1信息,导入OEM证书和OEM key激活Windows。

由于Ubuntu Server没有安装图形环境,DELL R310服务器也是不带显示器的,所有windows的安装过程是通过本来的Macbook Air的VNC客户端操作的。

安装KVM虚拟机

首先检查你的处理器是否支持硬件虚拟化;如果支持,下面这个命令

$ sudo egrep '(vmx|svm)' --color=always /proc/cpuinfo

会看到如下类似信息

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good
nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl
vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2
popcnt lahf_lm ida dtherm tpr_shadow vnmi flexpriority ept vpid

若什么都没有显示,那么你的处理器不支持硬件虚拟化,就此打住,不要往下折腾了。

检查bios虚拟化开关是否开启

$ sudo kvm-ok

正确的返回如下

INFO: /dev/kvm exists
KVM acceleration can be used

安装KVM,(若在Ubuntu Server安装过程中已经安装了KVM忽略此步骤)

$ sudo apt-get install ubuntu-virt-server  kvm-ipxe

之后,将当前用户添加到libvirtd群组

$ sudo adduser `id -un` libvirtd
$ sudo adduser `id -un` kvm

你需要要重新登录一下,才能让新群组生效。

验证kvm是否成功安装

cloud03@cloud03:~$ virsh -c qemu:///system list
 Id    Name                           State
----------------------------------------------------
cloud03@cloud03:~$
安装Windows Server 2008 R2 准备

Windows Server 2008 R2 安装镜像ISO

Windows VirtIO Drivers,若不加载该驱动windows installer会无法找到虚拟磁盘(没有验证过,网上是怎么说的) 点击下载:virtio-win-0.1-30.iso

安装virt-install $ sudo apt-get install virtinst

开始安装
$ virt-install --connect qemu:///system --arch=x86_64 -n win2k8 -r 4096 --vcpus=2 \
-c /home/cloud03/cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_vl_build_x64_dvd_617396.iso \
--noautoconsole --os-type windows --os-variant win2k8 \
--disk path=/home/cloud03/virtio-win-0.1-30.iso,device=cdrom,perms=ro \
--disk path=/var/lib/libvirt/images/win2k8.img,size=50 \
--graphics vnc,password=foobar,listen=0.0.0.0

部分参数说明

-n win2k8 虚拟机的名称为win2k8

-r 4096 分配4G内存

-vcpus=2 两个cpu

-c /home/cloud03/cn_windows…617396.iso 指向ISO安装镜像位置

?disk path=/home/cloud03/virtio-win-0.1-30.iso,device=cdrom,perms=ro 加载virtio驱动

?disk path=/var/lib/libvirt/images/win2k8.img,size=50 创建虚拟磁盘,并分配50G的空间

?graphics vnc,password=foobar,listen=0.0.0.0 开启VNC,password选项是为了兼容mac内置Screen Sharing VNC终端无法连接不加密的VNC Server,listen选项是为了让VNC终端在所有IP地址上都开启监听,默认在127.0.0.1上监听,仅适用于本机VNC终端访问。

使用VNC客户端打开远程桌面,Mac下非常简单,在Terminal.app里输入open vnc://192.168.18.130回车即可。windows和linux桌面系统请自行安装vnc客户端。

另外不少网友推荐Mac下用Chicken of the VNC.app,试用过后不如内置Screen Sharing好,特别是系统重启断线重连的时候内置的客户端表现很稳定,Chicken of the VNC会假死,需要退出程序重开。

编译bios.bin

seaslic 项目对seabios项目打了一个patch用于解决预安装正版windows的宿主机,改装linux运行kvm后,让虚拟机bios也有和宿主机一样的SLIc。简单的说就是把宿主机bios里的SLIc信息导入到虚拟机的bios.bin文件中去。让虚拟机也有正确的OEM标识。

经过测试seaslic项目导入的SLIc信息不完整,(至少在DELL R310下是不完整的),无法通过windows校验。

qemu-kvm有一个-acpitable选项,可以通过file=… 装载一个外部的SLIC文件(SLIC 2.1 BINS 1-31-2011.7z) 这里几乎有所有OEM机器的SLIC文件和证书)。

但是如果直接使用-acpitable选项加载外部SLIC进BIOS无论是使用内置的bios.bin(/usr/share/qemu-kvm/bios.bin),还是seaslic项目打过Patch的bios.bin都会导致ACPI table里有两条SLIc记录,一条正确的一条不完整的,导致windows无法激活。

一个可行的方案:在sealic项目的基础上,稍作修改编译一个完全不包含SLIc的bios.bin,然后在结合-acpitable选项载入外部SLIC文件。经实践,可以激活。

具体步骤如下:

下载sealic项目源码

$ cd ~
$ git clone git://github.com/ghuntley/seaslic

执行./patch.sh,该脚本会运用patch然后编译出bios.bin,调用该脚本只需要其运用patch的功能,编译出来的bios.bin先别管。

$ cd seaslic
$ ./patch.sh

编辑acpi.c文件

$ vim  seabios.submodule/src/acpi.c

注释掉638-647行,

/*#ifdef CONFIG_OEM_SLIC
{ void *buf = malloc_high(sizeof(SLIC));
  if (!buf)
    warn_noalloc();
  else {
    memcpy(buf, SLIC, sizeof(SLIC));
    ACPI_INIT_TABLE(buf);
  }
}
#endif*/

然后编译

$ cd seabios.submodule
$ make

替换系统内置bios.bin

$ sudo cp out/bios.bin /usr/share/qemu-kvm/bios.bin
修改虚拟机配置

使用virsh edit命令可以修改虚拟机的配置。

$ virsh edit win2k8

将第一行


改成


然后,在靠近文件的末尾处,便签之后,加入如下内容


    
    

保存退出。其中,SLIC-DELL-PE_SC3-2.1.BIN文件可以从SLIC 2.1 BINS 1-31-2011.7z找到。

重启虚拟机,然后在虚拟机下载windows工具SLIC Toolkit.若“SLIC诊断”栏显示SLIC状态为验证通过则表明已生效。

在Windows里安装OEM证书和序列号

现在是完事具备只欠东风了,从SLIC 2.1 BINS 1-31-2011.7z压缩包中可以找到DEL的OEM证书。

在windows控制台中使用如下命令导入

> slmgr -ilc DELL-DELL-2.0.XRM-MS

然后在这里Server 2008/Server 2008 R2 OEM SLP Keys找到对应的Key。使用下面的命令导入

> slmgr -ipk D7TCH-6P8JP-KRG4P-VJKYY-P9GFF

Server 2008 R2 Standard DELL OEM KEY
D7TCH-6P8JP-KRG4P-VJKYY-P9GFF
Server 2008 R2 Enterprise DELL OEM KEY
BKCJJ-J6G9Y-4P7YF-8D4J7-7TCWD

重新打开SLIC Toolkit工具,若“序列号与证书验证及备份”栏显示证书正确,那表示已经大功告成。


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
author-avatar
UJXo小妖春日望美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有