此儲存庫中的程式碼包含我們用於建立 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] 提出任何其他問題或意見。