يحتوي الكود الموجود في هذا الريبو على ملفات البرامج النصية التي نستخدمها لإنشاء الأجهزة الافتراضية المجانية المتوفرة في https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ السبب الرئيسي لفتح المصدر لهذا المشروع هو المجتمع للمساعدة في قوالب الأجهزة الافتراضية المختلفة وإضافة ميزات أو تكوينات قد تكون مفيدة لهم.
يقوم هذا البرنامج النصي بإنشاء أجهزة افتراضية للعديد من الأنظمة الأساسية (VirtualBox وVagrant وParallels وHyper-V وVMWare)، ويبلغك عبر البريد الإلكتروني بالعملية، ويحمل الملفات إلى Azure Storage لتوزيعها وينشئ ملف JSON جديدًا لوضعه على موقع الويب. لن تكون بعض هذه الخطوات منطقية بالنسبة لك، لذا لا تتردد في اختراقها وتعطيلها.
توجد بعض المشكلات المعروفة في البرامج النصية، لذا تأكد من مراجعة قسم المشكلات.
تعمل هذه العملية حاليًا فقط على أجهزة Windows 8.1.
للتثبيت التلقائي للبرنامج المطلوب، يمكنك استخدام البرنامج النصي .scriptsappswinappinstaller.ps1
ويستخدم Chocolatey لتثبيت البرامج في القائمة السابقة. لا يُنصح باستخدام البرنامج النصي في الأجهزة التي تم بالفعل تثبيت بعض البرامج عليها يدويًا. الغرض من البرنامج النصي هو توفير الوقت في التثبيت في الأجهزة النظيفة.
على الرغم من أن نظام التشغيل Mac يتطلب فقط Packer وParallels، إلا أنه يمكنك تثبيتهما تلقائيًا باستخدام البرنامج النصي .scriptsappsmacappinstaller.sh
. يستخدم البرنامج النصي Homebrew لتثبيت التطبيقات. سوف تتطلب المتوازيات بالإضافة إلى التثبيت تسجيل مفتاح صالح. في حالة عدم تثبيت أداة التعبئة بشكل صحيح، اكتب في brew install packer
الطرفية لإعادة محاولة التثبيت.
فيما يلي الإرشادات الخاصة بإعداد بيئة مؤتمتة بالكامل تقريبًا. أثناء عملية إنشاء VM، يحتاج المضيف في بعض الأحيان إلى إعادة التشغيل أو أن بعض الأذونات مطلوبة. إذا لم تقم ببعض التدخل اليدوي، يمكنك تخطي بعض الخطوات مثل AutoLogon، وما إلى ذلك.
git clone https://github.com/MicrosoftEdge/dev.microsoftedge.com-vms/
قم بفك ضغط ملفات Packer إلى C:packer
.
يعمل منشئ Hyper-V ISO في Packer 1.1.2 بشكل جيد على الإصدار 1709 من نظام التشغيل Windows 10.
نقوم بتثبيت ملحقات الضيف تلقائيًا، ولكن للقيام بذلك بصمت، يحتاج التثبيت إلى إضافة شهادة Oracle إلى قائمة الشهادات الموثوقة في نظام التشغيل الضيف. نقترح عليك الآن اتباع العملية الموضحة في هذا الدليل. سيتعين عليك وضع ملف .cer
هذا في scriptsfloppyguesttoolsoracle-cert.cer
. وفي المستقبل القريب، نخطط لتحديث العملية لاتباع إرشادات الدليل الرسمي في القسم 4.2.1.3. التثبيت غير المراقب .
قم بتعيين سياسة التنفيذ عن طريق كتابة هذا في نافذة بوويرشيل الخاصة بك:
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 وPuty.exePackerMerge
مع إخراج تجميع toolsPackerMerge
باستخدام Visual Studio (يجب نسخ الإخراج مباشرة إلى المجلد الصحيح عند الانتهاء من الإنشاء)VMSGen
مع إخراج تجميع toolsVMSGen
باستخدام Visual Studio (يجب نسخ الإخراج مباشرة إلى المجلد الصحيح عند الانتهاء من الإنشاء) ستحتاج أيضًا إلى تنزيل BgInfo وفك ضغطه ووضع ملف exe. في scriptsfloppybginfo
تذكر أيضًا تثبيت 7-Zip لنظام التشغيل Windows 64 بت
لتمكين برنامج Hypervisor:
bcdedit /set hypervisorlaunchtype auto
لتعطيل برنامج Hypervisor:
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 لا يمكنه تسجيل الدخول عن بعد أو عمل نسخ عن بعد حتى تقوم بتمكينه.
لتمكينه، انتقل إلى "تفضيلات النظام". ضمن "الإنترنت والشبكات"، يوجد رمز "المشاركة". تشغيل ذلك. في القائمة التي تظهر، حدد خيار "تسجيل الدخول عن بعد".
هام : بمجرد تمكين SSH في نظام التشغيل Mac، يتعين علينا الاتصال به يدويًا عن طريق Putty SSH من جهاز الكمبيوتر الذي يعمل بنظام Windows والمجهز لبدء العملية. بهذه الطريقة يتعرف المعجون على جهاز 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 مع حقوق المسؤول وتشغيل البرنامج النصي 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 "
]
}
}
}
}
البناء - يشير إلى رقم البناء. سيتم استخدام هذا المعرف لإنشاء اسم مجلد الإخراج.
OutputPath - مسار لتخزين ملفات ZIP.
AzureUpload - يشير إلى ما إذا كان سيتم تحميل ملفات الإخراج إلى حساب تخزين Azure.
AzureStorage - يحتوي على عنوان URL ومفتاح حساب تخزين Azure لتحميل ملفات الإخراج.
Mac - يحتوي على IP ومستخدم SSH وكلمة المرور ومسار مشترك.
البريد - تكوين SMTP لإرسال رسائل البريد الإلكتروني إلى الأشخاص المناسبين
OsRenaming (اختياري) - يشير إلى الأسماء النهائية المطلوبة في إخراج JSON لإصدارات نظام التشغيل. لنفترض أننا ننفذ العملية بشكل دوري لنظام Win10 ونريد في إخراج JSON إصدار البنية المحدد "Win10 (x64) build 2345". هذه النسخة المعاد تسميتها من مخرجات JSON هي النسخة المرسلة عبر البريد. إذا لم تكن هناك رغبة في إعادة التسمية، فما عليك سوى إزالة هذا القسم.
VMS - بنية الكائن لتعيين الأجهزة الافتراضية dev.microsoftedge.com التي سيتم إنشاؤها. القيم الصالحة لكل مستوى هي كما يلي:
لتحميل الملفات التي تم إنشاؤها بعد الإنشاء دون إعادة إنشاء الأجهزة الافتراضية، نحتاج إلى تشغيل البرنامج النصي 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
من أجزاء القالب/القوالب إلى أجزاء القالب.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 | Win81 | Win10 | |
---|---|---|---|
MSEdge | - | - | X |
IE11 | X | X | - |
IE10 | X | - | - |
IE9 | X | - | - |
IE8 | X | - | - |
IE7 | - | - | - |
VPC | هايبرف | VBox | إم وير | المتوازيات | |
---|---|---|---|---|---|
Win7 | X | X | X | X | X |
Win81 | - | X | X | X | X |
Win10 | - | X | X | X | X |
اعتمد هذا المشروع قواعد السلوك الخاصة بشركة Microsoft مفتوحة المصدر. لمزيد من المعلومات، راجع الأسئلة الشائعة حول قواعد السلوك أو اتصل بـ [email protected] لطرح أي أسئلة أو تعليقات إضافية.