
يعد استخدام أجهزة Linux الافتراضية في Hyper-V خارج الصندوق تجربة أقل راحة قليلاً من أجهزة Windows الضيف. السبب في ذلك هو أن Hyper-V لا يزال غير مخصص أصلاً لاستخدام سطح المكتب ؛ لا يمكنك فقط أخذ وتثبيت حزمة من الإضافات الخاصة بالضيف والحصول على تسريع جرافي عملي وقوة حافظة وأدلة مشتركة وغيرها من متع الحياة ، كما يحدث في VirtualBox.
يوفر Hyper-V نفسه العديد من خدمات التكامل - على سبيل المثال ، يمكن للضيوف استخدام خدمة النسخ الاحتياطية (VSS) للمضيف ، ويمكن إرسال إشارة إيقاف ، ويمكن للضيوف مزامنة وقت النظام مع مضيف الظاهرية ، ويمكن تبادل الملفات مع الجهاز الظاهري من المضيف ( Copy-VMFile
في بوويرشيل). بالنسبة لبعض أنظمة تشغيل الضيف ، بما في ذلك ، Windows ، بالطبع ، vmconnect.exe
تطبيق Virtual Machine Connection ( vmconnect.exe
) وضع جلسة عمل محسّن ، يعمل عبر بروتوكول RDP ويسمح لك بإعادة توجيه أجهزة القرص والطابعات إلى الجهاز الظاهري ، وكذلك استخدام الشائع الحافظة.
يتم تشغيل "وضع جلسة العمل المحسّن" خارج المربع على Windows في Hyper-V مباشرة بعد التثبيت. مع الضيوف على نظام Linux ، تحتاج إلى تثبيت خادم RDP يدعم vsock (مساحة عنوان شبكة افتراضية خاصة في Linux مصممة للتواصل مع برنامج hypervisor). إذا كان تطبيق Ubuntu في تطبيق VMCreate الذي يأتي مع Hyper-V على إصدارات سطح المكتب من Windows ، يوجد قالب الجهاز الظاهري المعد سلفًا والذي تم فيه تثبيت خادم XRDP 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
يوفر مستودع أدوات linux-vm على 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 (عادةً ما تتم أتمتة هذا الإجراء مع التجميع بواسطة برامج مثل yay ، لكن المؤلف قام بهذا الإجراء بالكامل على نظام نظيف):
% 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 }
يحتوي patch arch-config.diff
، الذي 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 أكثر استجابة بكثير من عند العمل مع شاشة افتراضية دون جلسة محسّنة. تتوفر VMs التي يتم طرحها من خلال RDP في دليل ${HOME}/shared-drives
:

الحافظة تعمل بشكل جيد. لا يمكنك إعادة توجيه الطابعات إلى الداخل ، فهي ليست مدعومة فحسب ، بل إنها تعطل أيضًا إعادة توجيه القرص . الصوت أيضا لا يعمل ، ولكن المؤلف لم يكن في حاجة إليها. من أجل التقاط اختصارات لوحة المفاتيح مثل Alt + Tab ، تحتاج إلى نشر vmconnect في وضع ملء الشاشة.
إذا كانت هناك رغبة في استخدام عميل RDP المضمّن في Windows لسبب ما بدلاً من تطبيق vmconnect ، أو على سبيل المثال ، الاتصال بهذا الجهاز من جهاز آخر ، فستحتاج إلى تغيير ملف port
/etc/xrdp/xrdp.ini
إلى tcp://:3389
. إذا كان الجهاز الظاهري متصلاً بالمفتاح الافتراضي ويتلقى إعدادات الشبكة عبر DHCP ، فيمكنك الاتصال به من المضيف على _.mshome.net
. يمكنك فقط إدخال TTY من تطبيق vmconnect عن طريق إيقاف تشغيل الوضع المحسن.
المصادر المستخدمة :
- Hyper-V - Arch Wiki
- Bagreport على جيثب: 1 ، 2