حالت جلسه پیشرفته را برای مهمانان Arch Linux در Hyper-V فعال کنید

حالت جلسه پیشرفته را برای مهمانان Arch Linux در Hyper-V فعال کنید

استفاده از ماشین های مجازی لینوکس در Hyper-V خارج از جعبه تا حدودی راحت تر از ماشین های ویندوز مهمان است. دلیل این امر این است که Hyper-V در ابتدا برای استفاده در دسکتاپ در نظر گرفته نشده بود. شما نمی توانید به سادگی ادامه دهید و بسته اضافه شده مهمان را نصب کنید و شتاب گرافیکی قابل اجرا، کلیپ بورد، دایرکتوری های مشترک و دیگر لذت های زندگی را دریافت کنید، همانطور که در VirtualBox اتفاق می افتد.

خود Hyper-V فراهم می کند خدمات ادغام چندگانه - بنابراین، مهمانان می توانند از سرویس کپی سایه (VSS) میزبان استفاده کنند، مهمانان می توانند سیگنال خاموش شدن را ارسال کنند، مهمانان می توانند زمان سیستم را با میزبان مجازی سازی همگام کنند، فایل ها را می توان با ماشین مجازی از میزبان مبادله کرد (Copy-VMFile در PowerShell). برای برخی از سیستم عامل های مهمان، از جمله، البته، ویندوز، در برنامه اتصال ماشین مجازی (vmconnect.exe) حالت جلسه پیشرفته در دسترس است که از طریق پروتکل RDP کار می کند و به شما امکان می دهد دستگاه ها و چاپگرهای دیسک را به ماشین مجازی فوروارد کنید و همچنین از کلیپ بورد مشترک استفاده کنید.

Enhanced Session Mode در ویندوز Hyper-V درست پس از نصب خارج از جعبه کار می کند. با مهمانان در لینوکس، باید یک سرور RDP را نصب کنید که از vsock (یک فضای آدرس شبکه مجازی ویژه در لینوکس طراحی شده برای برقراری ارتباط با هایپروایزر) پشتیبانی می کند. اگر برای اوبونتو، برنامه VMCreate که با Hyper-V در نسخه‌های دسکتاپ ویندوز ارائه می‌شود، یک قالب ماشین مجازی آماده‌شده ویژه دارد که در آن یک سرور RDP با vsock اجرا می‌شود. XRDP قبلاً از قبل نصب شده است ، سپس با توزیع های دیگر کمتر و کمتر واضح است - به عنوان مثال ، نویسنده این پست معلوم شد که 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-tools در 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://-addresss، بنابراین باید XRDP را از Git و درایور Xorg را برای آن از AUR به صورت دستی نصب کنید. پچ XRDP ارائه شده در AUR نیز کمی قدیمی است، بنابراین باید PKGBUILD و پچ را به صورت دستی ویرایش کنید.

ما مخازن را با PKGBUILD از 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 را در مسیرهای فایل‌های مورد استفاده در آرچ لینوکس ویرایش می‌کند، از جمله، شامل یک وصله به اسکریپت است. 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

بیایید ماشین مجازی را خاموش کنیم. با اجرای دستور زیر در PowerShell به عنوان مدیر، انتقال vsock را برای VM فعال کنید:

PS Admin > Set-VM -VMName НАЗВАНИЕ_МАШИНЫ -EnhancedSessionTransportType HvSocket

بیایید دوباره ماشین مجازی را روشن کنیم.

Подключение

به محض شروع سرویس XRDP پس از شروع سیستم، برنامه vmconnect این را تعیین می کند و آیتم منو در دسترس خواهد بود. چشم انداز -> جلسه تقویت شده. وقتی این مورد را انتخاب می‌کنید، از ما خواسته می‌شود که وضوح صفحه را تنظیم کنیم، و در برگه منابع محلی در گفتگویی که باز می شود، می توانید دستگاه های ارسال شده در جلسه RDP را انتخاب کنید.

حالت جلسه پیشرفته را برای مهمانان Arch Linux در Hyper-V فعال کنید
حالت جلسه پیشرفته را برای مهمانان Arch Linux در Hyper-V فعال کنید

بیایید وصل شویم. پنجره ورود به XRDP را خواهیم دید:

حالت جلسه پیشرفته را برای مهمانان Arch Linux در Hyper-V فعال کنید

نام کاربری و رمز عبور خود را وارد کنید.

استفاده

سود حاصل از این دستکاری ها قابل توجه است: جلسه RDP بسیار پاسخگوتر از زمانی است که با یک صفحه نمایش مجازی بدون Session پیشرفته کار می کنید. دیسک های ارسال شده در داخل ماشین مجازی از طریق RDP در دایرکتوری موجود هستند ${HOME}/shared-drives:

حالت جلسه پیشرفته را برای مهمانان Arch Linux در Hyper-V فعال کنید

کلیپ بورد به خوبی کار می کند. شما نمی توانید چاپگرها را داخل پرتاب کنید، این نه تنها پشتیبانی نمی شود، بلکه همچنین انتقال دیسک را خراب می کند. صدا نیز کار نمی کند، اما نویسنده به آن نیازی نداشته است. برای گرفتن میانبرهای صفحه کلید مانند Alt + Tab، باید vmconnect را به حالت تمام صفحه گسترش دهید.

اگر به دلایلی تمایل به استفاده از سرویس گیرنده RDP ساخته شده در ویندوز به جای برنامه vmconnect وجود دارد یا مثلاً از دستگاه دیگری به این دستگاه متصل شوید، باید فایل را تغییر دهید. /etc/xrdp/xrdp.ini port بر tcp://:3389. اگر ماشین مجازی به سوئیچ پیش فرض متصل است و تنظیمات شبکه را از طریق DHCP دریافت می کند، می توانید از طریق هاست به آن متصل شوید. название_машины.mshome.net. فقط با خاموش کردن حالت پیشرفته می‌توانید از برنامه vmconnect وارد TTY شوید.

منابع مورد استفاده:

  1. Hyper-V Arch Wiki
  2. گزارش های باگ در GitHub: 1, 2

منبع: www.habr.com

اضافه کردن نظر