此存储库中的代码包含我们用于创建 https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ 中提供的免费 VM 的脚本文件开源此项目的主要原因是社区帮助不同虚拟机的模板并添加可能对它们有用的功能或配置。
该脚本为多个平台(VirtualBox 和 Vagrant、Parallels、Hyper-V、VMWare)生成 VM,通过电子邮件通知该过程,将文件上传到 Azure 存储进行分发,并创建一个新的 JSON 文件以放在网站上。其中一些步骤对您来说没有意义,因此请随意修改并禁用它们。
脚本存在一些已知问题,因此请务必检查问题部分。
目前此过程仅适用于 Windows 8.1 计算机。
要自动安装所需软件,您可以使用脚本.scriptsappswinappinstaller.ps1
它使用 Chocolatey 来安装前面列表中的程序。不建议在已经手动安装了某些程序的计算机上使用该脚本。该脚本的目的是节省在干净机器上安装的时间。
虽然在 Mac 中只需要 Packer 和 Parallels,但您可以使用脚本.scriptsappsmacappinstaller.sh
自动安装它们。该脚本使用 Homebrew 来安装应用程序。除了安装之外,Parallels 还需要注册有效密钥。如果打包机未正确安装,请在终端中写入brew install packer
以重试安装。
以下是设置几乎完全自动化的环境的说明。在虚拟机创建过程中,有时需要重新启动主机或需要某些权限。如果您不需要手动干预,您可以跳过一些步骤,例如自动登录等。
git clone https://github.com/MicrosoftEdge/dev.microsoftedge.com-vms/
将 Packer 文件解压缩到C:packer
。
Packer 1.1.2 中的 Hyper-V ISO 构建器在 Windows 10 版本 1709 上运行良好。
我们自动安装来宾扩展,但要静默安装,需要将 Oracle 证书添加到来宾操作系统中的受信任证书列表中。现在我们建议您按照本指南中描述的流程进行操作。您必须将该.cer
文件放在scriptsfloppyguesttoolsoracle-cert.cer
中。在不久的将来,我们计划更新流程以遵循官方手册第4.2.1.3 节中的指导。无人值守安装。
通过在 powershell 窗口中输入以下内容来设置执行策略:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force
setx PATH "%PATH%;C:Packer;C:Program Files7-Zip"
New-ItemProperty -Path HKLM:SoftwareMicrosoftWindowsCurrentVersionpoliciessystem -Name EnableLUA -PropertyType DWord -Value 0 -Force
以下注册表设置设置自动登录,并保存默认用户名和密码,用于每次重新启动时登录。
$RegPath = "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon"
Set-ItemProperty $RegPath "AutoAdminLogon" -Value "1" -type String
Set-ItemProperty $RegPath "DefaultUsername" -Value "DomainNameAdministrator" -type String
Set-ItemProperty $RegPath "DefaultPassword" -Value "Password" -type String
bin
文件夹应该有以下文件夹
AzCopy
包含所有二进制文件且没有子文件夹Putty
与 plink.exe 和 putty.exePackerMerge
以及使用 Visual Studio 编译项目toolsPackerMerge
的输出(构建完成后,它应该将输出直接复制到正确的文件夹)VMSGen
包含使用 Visual Studio 编译项目toolsVMSGen
的输出(构建完成后应将输出直接复制到正确的文件夹)您还需要下载 BgInfo,解压并将 .exe 放入scriptsfloppybginfo
请记住还要安装适用于 Windows 64 位的 7-Zip
启用虚拟机管理程序:
bcdedit /set hypervisorlaunchtype auto
禁用虚拟机管理程序:
bcdedit /set hypervisorlaunchtype off
建议我们生成的第一台机器不应该是 HyperV。第一次生成 Hyper-V 虚拟机时,计算机将重新启动。
将此存储库克隆到 /Users/admin/dev.microsoftedge.com-vms/
git clone https://github.com/MicrosoftEdge/dev.microsoftedge.com-vms/
打开 Apple 文件共享
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.AppleFileServer.plist
激活中小企业
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist
共享存储库文件夹
sudo sharing -a /Users/admin/dev.microsoftedge.com-vms/
(注:如果已经执行了脚本.scriptsappsmacappinstaller.sh
则无需执行此步骤。)
将 Packer 文件解压到 /Users/packer
(注:如果已经执行了脚本.scriptsappsmacappinstaller.sh
则无需执行此步骤。)
sudo nano /etc/paths
Apple Mac OS X 操作系统默认安装了 SSH,但未启用 SSH 守护程序。这意味着 vmgen 脚本无法远程登录或执行远程复制,除非您启用它。
要启用它,请转到“系统偏好设置”。在“互联网和网络”下有一个“共享”图标。运行那个。在出现的列表中,选中“远程登录”选项。
重要提示:在 Mac 中启用 SSH 后,我们必须从准备启动该过程的 Windows 计算机上通过 Putty SSH 手动连接到它。这样,当进程执行时,Putty 就可以识别 Mac。如果我们不将Mac注册为接受的连接,则SSH连接在生成过程中将显示此错误The server's host key is not cached in the registry. You have no guarantee that the server is the computer you think it is. The server's rsa2 key finger (...) Connection abandoned.
此流程使用 ISO,更准确地说是客户企业评估。您应该合法地为您想要构建的来宾获取一份 iso 副本,并将其直接放入scriptsiso
文件夹中。
如果您想加快创建虚拟机的过程,您可以创建集成的最新 Windows ISO。有一些在线指南(例如本指南)详细解释了该过程。
为了运行该脚本,我们需要使用管理员权限打开任何 Windows PowerShell 控制台,并使用 -Build 参数运行脚本 vmgen.ps1。
.vmgen.ps1 -Build
此脚本需要位于同一目录中的名为vmgen.json
的配置文件。生成工具使用此文件来了解必须生成哪些虚拟机。配置文件的内容必须采用以下格式:
{
"Build" : " 20150901 " ,
"OutputPath" : " D: \ vms " ,
"AzureUpload" : false ,
"GenerateMultipart" : true ,
"AzureStorage" : {
"Url" : " https://yourblostorage.blob.core.windows.net/vms " ,
"Key" : " xxxxxxxxxxx... "
},
"Mac" : {
"IP" : " 192.168.0.2 " ,
"SSH_User" : " admin " ,
"SSH_Password" : " password " ,
"NetworkPath" : " \\ MAC \ microsoftedge-vms " ,
"RepoPath" : " /Users/admin/dev.microsoftedge.com-vms "
},
"Mail" : {
"SMTP" : " smtp.office365.com " ,
"From" : " [email protected] " ,
"To" : " [email protected] " ,
"User" : " [email protected] " ,
"Password" : " "
},
"OsRenaming" : {
"Win10" : " Win10 (x64) Build xxxx " ,
"Win81" : " Win81 (x86) Build yyyy "
},
"VMS" : {
"Windows" : {
"HyperV" : {
"MSEdge" : [
" Win10 "
],
"IE11" : [
" Win81 " , " Win7 "
],
"IE10" : [
" Win7 "
]
},
"VirtualBox" : {
"IE11" : [
" Win81 " , " Win7 "
],
"IE10" : [
" Win7 "
]
}
},
"Mac" : {
"Parallels" : {
"IE11" : [
" Win81 " , " Win7 "
],
"IE10" : [
" Win7 "
]
}
}
}
}
内部版本 - 表示内部版本号。该标识符将用于生成输出文件夹名称。
OutputPath - 存储 ZIP 文件的路径。
AzureUpload - 指示输出文件是否将上传到 Azure 存储帐户。
AzureStorage - 包含用于上传输出文件的 Azure 存储帐户的 Url 和密钥。
Mac - 包含 IP、SSH 用户和密码以及共享路径。
邮件 - SMTP 配置以将电子邮件发送给适当的人员
OsRenaming(可选)- 指示操作系统版本的输出 JSON 中所需的最终名称。假设我们定期执行 Win10 的进程,并且希望在输出 JSON 中包含特定的构建版本“Win10 (x64) build 2345”。输出 JSON 的重命名版本是通过邮件发送的版本。如果不需要重命名,只需删除此部分即可。
VMS - 用于设置要生成的 dev.microsoftedge.com 虚拟机的对象结构。每个级别的有效值如下:
要在构建后上传生成的文件而不重新生成虚拟机,我们需要使用 -Build 和 -OnlyUpload 参数运行脚本 vmgen.ps1。
.vmgen.ps1 -Build -OnlyUpload
将在 OutputPath 中生成 JSON 特定版本。如果您希望结果与另一个文件合并,请将其放置在名为 vms.json 的同一文件夹中。
自动重命名:要在过程中自动重命名输出 JSON,只需在 vmgen 文件中添加OsRenaming
部分即可。执行生成过程时,重命名后的输出 JSON 的副本将存储在通知文件夹内的输出路径中。此版本将通过电子邮件发送到配置的邮件接收者。
手动重命名:如果您想手动重命名输出 JSON,可以使用scriptsvmsrename.ps1
。例如,如果我们想要更改 Win10 在生成过程中使用的值,以获取具有构建和架构的显式名称:
.vmsrename.ps1 "Win10" "Win10 (x86) Build 6307"
输入文件vms.json
必须与脚本位于同一文件夹中,输出文件将为vms_renamed.json
。
要生成新平台,请执行以下步骤:
floppy_files_OS.json
、 OSx64.json
和urls_OSx64.json
文件从 template-parts/templates 复制到 template-parts。url_OSx64.json
并输入正确的iso_url
和iso_checksum
属性。OSx64.json
并更改每个构建器配置的vm_name
和output_directory
属性。floppy_files_OS.json
不是强制性的。您可以保留它而不进行任何更改。BuildTemplates.ps1
和以下行以添加新的模板生成。 $template = "MSEdge-Win10TH2" ..binPackerMergePackerMerge -i:".template-partsuser.json,.template-partsurls_OSx64.json,.template-partsOSx64.json,.template-partsfloppy_files_common.json,.template-partsfloppy_files_OS.json,.template-partsprovisioner_common.json,.template-partspp-vagrant.json" -o:".template-output$template.json" Write-Verbose "$template.json created."
WIN7 | 操作系统81 | WIN10 | |
---|---|---|---|
微软边缘 | - | - | X |
IE11 | X | X | - |
IE10 | X | - | - |
IE9 | X | - | - |
IE8 | X | - | - |
IE7 | - | - | - |
专有网络 | 超V | 垂直盒 | 虚拟机 | 相似之处 | |
---|---|---|---|---|---|
WIN7 | X | X | X | X | X |
操作系统81 | - | X | X | X | X |
WIN10 | - | X | X | X | X |
该项目采用了微软开源行为准则。有关详细信息,请参阅行为准则常见问题解答或联系 [email protected] 提出任何其他问题或意见。