รหัสใน repo นี้มีไฟล์สคริปต์ที่เราใช้เพื่อสร้าง VM ฟรีที่มีอยู่ใน https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ เหตุผลหลักในการเปิดแหล่งที่มาของโครงการนี้มีไว้เพื่อ ชุมชนเพื่อช่วยเหลือเกี่ยวกับเทมเพลตของ VM ต่างๆ และเพิ่มคุณสมบัติหรือการกำหนดค่าที่อาจเป็นประโยชน์สำหรับพวกเขา
สคริปต์นี้สร้าง VM สำหรับหลายแพลตฟอร์ม (VirtualBox และ Vagrant, Parallels, Hyper-V, VMWare) แจ้งเตือนผ่านทางอีเมลเกี่ยวกับกระบวนการ อัปโหลดไฟล์ไปยัง Azure Storage เพื่อการแจกจ่าย และสร้างไฟล์ JSON ใหม่เพื่อวางไว้บนเว็บไซต์ ขั้นตอนเหล่านี้บางขั้นตอนอาจไม่สมเหตุสมผลสำหรับคุณ ดังนั้นอย่าลังเลที่จะแฮ็กและปิดการใช้งานขั้นตอนเหล่านั้น
สคริปต์มีปัญหาที่ทราบอยู่แล้ว ดังนั้นโปรดตรวจสอบในส่วนปัญหา
ขณะนี้กระบวนการนี้ใช้ได้กับเครื่อง Windows 8.1 เท่านั้น
สำหรับการติดตั้งซอฟต์แวร์ที่จำเป็นโดยอัตโนมัติ คุณสามารถใช้สคริปต์ .scriptsappswinappinstaller.ps1
ซึ่งใช้ Chocolatey ในการติดตั้งโปรแกรมในรายการก่อนหน้า ไม่แนะนำให้ใช้สคริปต์ในเครื่องที่ติดตั้งโปรแกรมบางโปรแกรมด้วยตนเองแล้ว วัตถุประสงค์ของสคริปต์คือการประหยัดเวลาในการติดตั้งในเครื่องที่สะอาด
แม้ว่าใน Mac จะต้องใช้ Packer และ Parallels เท่านั้น แต่คุณสามารถติดตั้งได้โดยอัตโนมัติโดยใช้สคริปต์ .scriptsappsmacappinstaller.sh
สคริปต์ใช้ Homebrew เพื่อติดตั้งแอพ Parallels จะต้องมีการติดตั้งการลงทะเบียนคีย์ที่ถูกต้องเพิ่มเติม ในกรณีที่ติดตั้ง Packer ไม่ถูกต้อง โปรดเขียนใน Terminal brew install packer
เพื่อลองติดตั้งอีกครั้ง
ต่อไปนี้เป็นคำแนะนำในการตั้งค่าสภาพแวดล้อมที่เกือบจะเป็นอัตโนมัติทั้งหมด ในระหว่างกระบวนการสร้าง VM บางครั้งจำเป็นต้องรีบูตโฮสต์หรือจำเป็นต้องมีการอนุญาตบางอย่าง หากคุณไม่ได้ดำเนินการด้วยตนเอง คุณสามารถข้ามขั้นตอนบางอย่าง เช่น AutoLogon เป็นต้น
git clone https://github.com/MicrosoftEdge/dev.microsoftedge.com-vms/
แตกไฟล์ Packer ไปที่ C:packer
ตัวสร้าง ISO ของ Hyper-V ใน Packer 1.1.2 ทำงานได้ดีบน 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
พร้อมเอาต์พุตของการคอมไพล์ toolsPackerMerge
ด้วย Visual Studio (ควรคัดลอกเอาต์พุตโดยตรงไปยังโฟลเดอร์ที่ถูกต้องเมื่อการสร้างเสร็จสิ้น)VMSGen
พร้อมเอาต์พุตของการคอมไพล์ project toolsVMSGen
ด้วย Visual Studio (ควรคัดลอกเอาต์พุตโดยตรงไปยังโฟลเดอร์ที่ถูกต้องเมื่อบิวด์เสร็จสิ้น) คุณจะต้องดาวน์โหลด BgInfo แตกไฟล์แล้วใส่ .exe ลงใน scriptsfloppybginfo
อย่าลืมติดตั้ง 7-Zip สำหรับ Windows 64bits ด้วย
วิธีเปิดใช้งานไฮเปอร์ไวเซอร์:
bcdedit /set hypervisorlaunchtype auto
วิธีปิดการใช้งานไฮเปอร์ไวเซอร์:
bcdedit /set hypervisorlaunchtype off
ขอแนะนำว่าเครื่องแรกที่เราสร้างขึ้นไม่ควรเป็น HyperV ครั้งแรกที่เราสร้างเครื่องเสมือน Hyper-V คอมพิวเตอร์จะรีบูต
โคลน repo นี้ไปที่ /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
เปิดใช้งาน SMB
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 daemon ซึ่งหมายความว่าสคริปต์ vmgen ไม่สามารถเข้าสู่ระบบจากระยะไกลหรือทำสำเนาระยะไกลได้จนกว่าคุณจะเปิดใช้งาน
หากต้องการเปิดใช้งาน ให้ไปที่ "การตั้งค่าระบบ" ใต้ "อินเทอร์เน็ตและเครือข่าย" จะมีไอคอน "การแชร์" เรียกใช้สิ่งนั้น ในรายการที่ปรากฏขึ้น ให้เลือกตัวเลือก "การเข้าสู่ระบบระยะไกล"
สำคัญ : เมื่อเปิดใช้งาน SSH ใน Mac แล้ว เราจะต้องเชื่อมต่อด้วยตนเองโดยใช้ Putty SSH จากคอมพิวเตอร์ Windows ที่เตรียมไว้เพื่อเริ่มกระบวนการ วิธีนี้จะทำให้ Mac ได้รับการยอมรับจาก Putty เมื่อกระบวนการถูกดำเนินการ หากเราไม่ลงทะเบียน 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 และการประเมิน Client Enterprise ที่แม่นยำยิ่งขึ้น คุณควรได้รับสำเนาของ ISO สำหรับผู้เยี่ยมชมที่คุณต้องการสร้างอย่างถูกต้องตามกฎหมาย และนำไปไว้ในโฟลเดอร์ scriptsiso
โดยตรง
หากคุณต้องการเร่งกระบวนการสร้าง VM คุณสามารถสร้าง ISO Windows แบบรวมที่ทันสมัยได้ มีคำแนะนำออนไลน์เช่นนี้ที่อธิบายกระบวนการโดยละเอียด
ในการเรียกใช้สคริปต์ เราจำเป็นต้องเปิดคอนโซล Windows PowerShell ที่มีสิทธิ์ผู้ดูแลระบบ และเรียกใช้สคริปต์ vmgen.ps1 ด้วยพารามิเตอร์ -Build
.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 "
]
}
}
}
}
Build - ระบุหมายเลข build ตัวระบุนี้จะถูกใช้เพื่อสร้างชื่อโฟลเดอร์เอาต์พุต
OutputPath - เส้นทางสำหรับจัดเก็บไฟล์ ZIP
AzureUpload - ระบุว่าไฟล์เอาต์พุตจะถูกอัปโหลดไปยังบัญชีที่เก็บข้อมูล Azure หรือไม่
AzureStorage - ประกอบด้วย Url และคีย์ของบัญชี de Azure Storage เพื่ออัปโหลดไฟล์เอาต์พุต
Mac - ประกอบด้วย IP, ผู้ใช้และรหัสผ่าน SSH และเส้นทางที่ใช้ร่วมกัน
เมล - การกำหนดค่า SMTP เพื่อส่งอีเมลไปยังบุคคลที่เหมาะสม
OsRenaming (ไม่บังคับ) - ระบุชื่อสุดท้ายที่ต้องการในเอาต์พุต JSON สำหรับเวอร์ชันระบบปฏิบัติการ สมมติว่าเราดำเนินการกระบวนการสำหรับ Win10 เป็นระยะ และเราต้องการเอาต์พุต JSON เวอร์ชันบิลด์เฉพาะ "Win10 (x64) build 2345" เวอร์ชันที่เปลี่ยนชื่อของเอาต์พุต JSON นี้เป็นเวอร์ชันที่ส่งทางไปรษณีย์ หากไม่ต้องการเปลี่ยนชื่อ เพียงลบส่วนนี้ออก
VMS - โครงสร้างวัตถุเพื่อตั้งค่าเครื่องเสมือน dev.microsoftedge.com ที่จะสร้างขึ้น ค่าที่ถูกต้องสำหรับแต่ละระดับมีดังนี้:
หากต้องการอัปโหลดไฟล์ที่สร้างขึ้นหลังจากบิลด์โดยไม่ต้องสร้าง VM ใหม่ เราจำเป็นต้องรันสคริปต์ vmgen.ps1 ด้วยพารามิเตอร์ -Build และ -OnlyUpload
.vmgen.ps1 -Build -OnlyUpload
เวอร์ชันเฉพาะของ JSON จะถูกสร้างขึ้นใน OutputPath หากคุณต้องการรวมผลลัพธ์ของคุณเข้ากับไฟล์อื่น ให้วางไว้ในโฟลเดอร์เดียวกันกับชื่อ vms.json
การเปลี่ยนชื่ออัตโนมัติ : หากต้องการเปลี่ยนชื่อเอาต์พุต JSON โดยอัตโนมัติในกระบวนการ เพียงเพิ่มส่วน OsRenaming
ในไฟล์ vmgen เมื่อดำเนินการกระบวนการสร้าง สำเนาของเอาต์พุต 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-partsurl_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 | วิน10 | |
---|---|---|---|
MSEdge | - | - | เอ็กซ์ |
IE11 | เอ็กซ์ | เอ็กซ์ | - |
IE10 | เอ็กซ์ | - | - |
IE9 | เอ็กซ์ | - | - |
IE8 | เอ็กซ์ | - | - |
IE7 | - | - | - |
วีพีซี | ไฮเปอร์วี | วีบ็อกซ์ | วีเอ็มแวร์ | เส้นขนาน | |
---|---|---|---|---|---|
Win7 | เอ็กซ์ | เอ็กซ์ | เอ็กซ์ | เอ็กซ์ | เอ็กซ์ |
วิน81 | - | เอ็กซ์ | เอ็กซ์ | เอ็กซ์ | เอ็กซ์ |
วิน10 | - | เอ็กซ์ | เอ็กซ์ | เอ็กซ์ | เอ็กซ์ |
โครงการนี้ได้นำหลักจรรยาบรรณของ Microsoft Open Source มาใช้ สำหรับข้อมูลเพิ่มเติม โปรดดูคำถามที่พบบ่อยเกี่ยวกับจรรยาบรรณหรือติดต่อ [email protected] หากมีคำถามหรือความคิดเห็นเพิ่มเติม