تمكين وضع جلسة العمل المحسّن لنزلاء Arch Linux في Hyper-V

KDPV


يعد استخدام أجهزة 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:


نافذة تسجيل الدخول XRDP


أدخل اسم المستخدم وكلمة المرور الخاصة بك.


استخدام


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


محتويات محرك الأقراص C ألقيت داخل VM


الحافظة تعمل بشكل جيد. لا يمكنك إعادة توجيه الطابعات إلى الداخل ، فهي ليست مدعومة فحسب ، بل إنها تعطل أيضًا إعادة توجيه القرص . الصوت أيضا لا يعمل ، ولكن المؤلف لم يكن في حاجة إليها. من أجل التقاط اختصارات لوحة المفاتيح مثل Alt + Tab ، تحتاج إلى نشر vmconnect في وضع ملء الشاشة.


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


المصادر المستخدمة :


  1. Hyper-V - Arch Wiki
  2. Bagreport على جيثب: 1 ، 2

Source: https://habr.com/ru/post/ar482372/


All Articles