
استخدام الأجهزة الافتراضية على Linux في بيئة Hyper-V، تكون التجربة أقل راحة قليلاً عند استخدامها مباشرةً مقارنةً بالبيئة الضيفية. Windows-الأجهزة. والسبب في ذلك هو أن Hyper-V لم يتم تصميمه في الأصل للاستخدام على أجهزة سطح المكتب؛ فلا يمكنك ببساطة تثبيت حزمة إضافات الضيف والحصول على تسريع رسومات يعمل، وحافظة، ومجلدات مشتركة، ومزايا أخرى، كما هو الحال مع VirtualBox.
يوفر Hyper-V نفسه - لذلك ، يمكن للضيوف استخدام خدمة النسخ الاحتياطي (VSS) للمضيف ، ويمكن للضيوف إرسال إشارة إيقاف التشغيل ، ويمكن للضيوف مزامنة وقت النظام مع مضيف المحاكاة الافتراضية ، ويمكن تبادل الملفات مع الجهاز الظاهري من المضيف (Copy-VMFile في PowerShell). بالنسبة لبعض أنظمة التشغيل الضيفة، والتي تشمل بالطبع Windows، في تطبيق اتصال الجهاز الظاهري (vmconnect.exe) يتوفر وضع الجلسة المحسن ، والذي يعمل عبر بروتوكول RDP ويسمح لك بإعادة توجيه أجهزة القرص والطابعات إلى الجهاز الظاهري ، وكذلك استخدام الحافظة المشتركة.
يعمل وضع الجلسة المحسّن مباشرةً بعد التثبيت. Windows في Hyper-V مباشرة بعد التثبيت. مع تشغيل الأجهزة الافتراضية Linux تحتاج إلى تثبيت خادم RDP يدعم vSock (مساحة عناوين شبكة افتراضية خاصة في Linux(مصمم للتواصل مع برنامج إدارة الأجهزة الافتراضية). إذا كان لـ Ubuntu في تطبيق VMCreate الذي يأتي مع Hyper-V على إصدارات سطح المكتب Windowsيوجد قالب آلة افتراضية مُعد خصيصًا يعمل فيه خادم RDP مع vSock مثبتة مسبقًا ، ثم مع التوزيعات الأخرى يصبح الأمر أقل وضوحًا - على سبيل المثال ، المؤلف لقد نجحنا في تفعيل وضع الجلسة المحسّن (ESM) في فيدورا. هنا نقوم أيضًا بتفعيل وضع الجلسة المحسّن للجهاز الظاهري Arch. Linux.
تركيب خدمات التكامل
كل شيء هنا بسيط إلى حد ما ، نحتاج فقط إلى تثبيت الحزمة hyperv من مستودع المجتمع:
% sudo pacman -S hypervتمكين تبادل خدمات VSS والملفات:
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; doneتثبيت XRDP
مخزن يوفر هذا الموقع نصوصًا برمجية على GitHub تعمل على أتمتة عملية تثبيت وتكوين XRDP لنظام Arch Linux и Ubuntuلنقم بتثبيت Git، إذا لم يكن مثبتًا بالفعل، بالإضافة إلى برنامج تجميعي وبرامج أخرى للبناء اليدوي، ثم نقوم باستنساخ المستودع:
% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/archفي وقت كتابة هذا التقرير ، كان أحدث إصدار من XRDP ، والذي تم تثبيته بواسطة البرنامج النصي makepkg.shالمقترح في المستودع هو 0.9.11 ، vsock://-العناوين ، لذلك عليك تثبيت XRDP من Git وبرنامج تشغيل Xorg له من AUR يدويًا. التصحيح الخاص بـ XRDP المقدم في AUR قديم أيضًا ، لذا سيتعين عليك تحرير PKGBUILD والتصحيح يدويًا.
نقوم باستنساخ المستودعات باستخدام PKGBUILDs من AUR (عادةً ما يتم أتمتة هذا الإجراء ، جنبًا إلى جنب مع التجميع ، بواسطة برامج مثل ، لكن المؤلف قام بهذا الإجراء بأكمله على نظام نظيف):
% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.gitلنقم بتثبيت XRDP نفسه أولاً. لنفتح الملف PKGBUILD أي محرر نصوص.
دعنا نعدل معلمات البناء. لا يتضمن PKGBUILD لبناء XRDP من Git دعم vsock في البناء ، لذلك دعونا نقوم بتمكينه بأنفسنا:
build() {
cd $pkgname
./configure --prefix=/usr
--sysconfdir=/etc
--localstatedir=/var
--sbindir=/usr/bin
--with-systemdsystemdunitdir=/usr/lib/systemd/system
--enable-jpeg
--enable-tjpeg
--enable-fuse
--enable-opus
--enable-rfxcodec
--enable-mp3lame
- --enable-pixman
+ --enable-pixman
+ --enable-vsock
make V=0
}في التصحيح arch-config.diff، ووحدات الحكم، وبرامج بدء تشغيل XRDP ضمن مسارات الملفات المستخدمة في Arch Linuxيحتوي على تصحيح للبرنامج النصي instfiles/xrdp.shالتي في وقت كتابة هذا التقرير من توزيع XRDP ، لذلك يجب تحرير التصحيح يدويًا:
[Install]
WantedBy=multi-user.target
-diff -up src/xrdp-devel-git/instfiles/xrdp.sh.orig src/xrdp-devel-git/instfiles/xrdp.sh
---- src/xrdp-devel-git/instfiles/xrdp.sh.orig 2017-08-30 00:27:28.000000000 -0600
-+++ src/xrdp-devel-git/instfiles/xrdp.sh 2017-08-30 00:28:00.000000000 -0600
-@@ -17,7 +17,7 @@
- # Description: starts xrdp
- ### END INIT INFO
-
--SBINDIR=/usr/local/sbin
-+SBINDIR=/usr/bin
- LOG=/dev/null
- CFGDIR=/etc/xrdp
-
diff -up src/xrdp-devel-git/sesman/startwm.sh.orig src/xrdp-devel-git/sesman/startwm.sh
--- src/xrdp-devel-git/sesman/startwm.sh.orig 2017-08-30 00:27:30.000000000 -0600قم بإنشاء الحزمة وتثبيتها باستخدام الأمر % makepkg --skipchecksums -si (مفتاح --skipchecksums مطلوب لتعطيل التحقق من المجموع الاختباري لملفات المصدر ، نظرًا لأننا قمنا بتحريرها يدويًا).
دعنا نذهب إلى الدليل xorgxrdp-devel-git، وبعد ذلك نقوم ببناء الحزمة بالأمر % makepkg -si.
دعنا نذهب إلى الدليل linux-vm-tools/arch وتشغيل البرنامج النصي install-config.sh، والذي يضبط إعدادات XRDP و PolicyKit و PAM:
% sudo ./install-config.shيقوم البرنامج النصي بتثبيت الإعداد القديم use_vsock، والذي تم تجاهله منذ الإصدار 0.9.11 ، فلنعدّل ملف التكوين /etc/xrdp/xrdp.ini يدويا:
; port=vsock://<cid>:<port>
-port=3389
+port=vsock://-1:3389
; 'port' above should be connected to with vsock instead of tcp
; use this only with number alone in port above
; prefer use vsock://<cid>:<port> above
-use_vsock=true
+;use_vsock=true
; regulate if the listening socket use socket option tcp_nodelayأضف إلى ملف ~/.xinitrc بدء تشغيل مدير النوافذ المفضل / بيئة سطح المكتب ، والتي سيتم تنفيذها عند بدء تشغيل خادم X:
% echo "exec i3" > ~/.xinitrcلنوقف تشغيل الآلة الافتراضية. قم بتمكين نقل vsock للجهاز الظاهري عن طريق تشغيل الأمر التالي في PowerShell كمسؤول:
PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocketدعنا نشغل الآلة الافتراضية مرة أخرى.
Подключение
بمجرد بدء خدمة XRDP بعد بدء تشغيل النظام ، سيحدد تطبيق vmconnect ذلك وسيصبح عنصر القائمة متاحًا. عرض الطلب -> جلسة محسّنة. عند تحديد هذا العنصر ، سيُطلب منا ضبط دقة الشاشة ، وفي علامة التبويب الموارد المحلية في مربع الحوار الذي يفتح ، يمكنك تحديد الأجهزة المعاد توجيهها داخل جلسة RDP.


دعنا نتواصل. سنرى نافذة تسجيل الدخول إلى XRDP:

أدخل اسم المستخدم وكلمة المرور الخاصة بك.
استخدام
الربح من هذه التلاعبات ملحوظ: تعمل جلسة RDP بشكل أكثر استجابة من العمل مع شاشة افتراضية بدون جلسة محسّنة. تتوفر الأقراص المعاد توجيهها داخل الجهاز الظاهري عبر RDP في الدليل ${HOME}/shared-drives:

الحافظة تعمل بشكل جيد. لا يمكنك رمي الطابعات بالداخل ، فهذا ليس مدعومًا فحسب ، بل أيضًا . الصوت أيضا لا يعمل ولكن المؤلف لم يكن بحاجة إليه. من أجل التقاط اختصارات لوحة المفاتيح مثل Alt + Tab ، تحتاج إلى توسيع vmconnect إلى وضع ملء الشاشة.
إذا كنت ترغب لأي سبب من الأسباب في استخدام تطبيق vmconnect المدمج بدلاً من Windows إذا كنت تستخدم عميل RDP أو، على سبيل المثال، تتصل بهذا الجهاز من جهاز آخر، فستحتاج إلى تغيير الملف. /etc/xrdp/xrdp.ini port في tcp://:3389. إذا كان الجهاز الظاهري متصلاً بالمحول الافتراضي ويتلقى إعدادات الشبكة عبر DHCP ، فيمكنك الاتصال به من المضيف على название_машины.mshome.net. يمكنك فقط تسجيل الدخول إلى TTY من تطبيق vmconnect بإيقاف تشغيل الوضع المحسن.
المصادر المستخدمة:
- تقارير الشوائب على جيثب: ,
المصدر: www.habr.com
