הפעלת מצב הפעלה משופר עבור Arch Linuxאורחים ב-Hyper-V

הפעלת מצב הפעלה משופר עבור Arch Linuxאורחים ב-Hyper-V

שימוש במכונות וירטואליות ב Linux ב-Hyper-V ישר מהקופסה זו חוויה קצת פחות נוחה מאשר עם אורח Windows-машинами. Причиной тому является то, что Hyper-V все же изначально не предназначался для десктопного пользования; нельзя просто взять, поставить пакет гостевых дополнений и получить работоспособное графическое ускорение, буфер обмена, общие директории и другие радости жизни, как это происходит в VirtualBox.

Hyper-V עצמו מספק שירותי אינטגרציה מרובים - כך שהאורחים יכולים להשתמש בשירות העתקת הצל (VSS) של המארח, האורחים יכולים לשלוח אות כיבוי, האורחים יכולים לסנכרן את זמן המערכת עם מארח הווירטואליזציה, ניתן להחליף קבצים עם המחשב הווירטואלי מהמארח (Copy-VMFile в PowerShell). Для некоторых гостевых операционных систем, в числе которых, конечно, находится и Windows, в приложении Virtual Machine Connection (vmconnect.exe) זמין מצב הפעלה משופר, הפועל באמצעות פרוטוקול RDP ומאפשר להעביר התקני דיסק ומדפסות למכונה הוירטואלית, כמו גם להשתמש בלוח המשותף.

Enhanced Session Mode из коробки работает в Windows в Hyper-V сразу после установки. С гостями на Linux нужно устанавливать RDP-сервер, поддерживающий vsock (специальное виртуальное сетевое адресное пространство в Linux, предназначенное для коммуникации с гипервизором). Если для Ubuntu в приложении VMCreate, идущим с Hyper-V на настольных редакциях Windows, есть специальный подготовленный шаблон виртуальной машины, в котором работающий с vsock RDP-сервер XRDP כבר מותקן מראש, ואז בהפצות אחרות זה פחות ופחות ברור - למשל, המחבר הפוסט הזה получилось включить ESM в Fedora. Здесь же мы активируем Enhanced Session Mode для виртуальной машины с 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://-כתובות, אז אתה צריך להתקין XRDP מ-Git ואת מנהל ההתקן של Xorg עבורו מ-AUR באופן ידני. גם התיקון עבור XRDP המוצע ב-AUR מיושן מעט, כך שתצטרך לערוך את ה-PKGBUILD ואת התיקון באופן ידני.

אנו משכפלים את המאגרים עם PKGBUILDs מה-AUR (בדרך כלל הליך זה, יחד עם ה-assembly, הוא אוטומטי על ידי תוכניות כמו 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, אז בואו נפעיל אותו בעצמנו:

 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 עבור ה-VM על ידי הפעלת הפקודה הבאה ב-PowerShell כמנהל מערכת:

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

בואו נפעיל שוב את המכונה הוירטואלית.

Подключение

ברגע ששירות XRDP יתחיל לאחר הפעלת המערכת, אפליקציית vmconnect תקבע זאת ופריט התפריט יהפוך לזמין. לצפיה -> הפעלה משופרת. כאשר תבחר בפריט זה, נתבקש להגדיר את רזולוציית המסך, ובכרטיסייה משאבים מקומיים בתיבת הדו-שיח שנפתחת, תוכל לבחור את המכשירים שהועברו בתוך הפעלת RDP.

הפעלת מצב הפעלה משופר עבור Arch Linuxאורחים ב-Hyper-V
הפעלת מצב הפעלה משופר עבור Arch Linuxאורחים ב-Hyper-V

בואו נתחבר. נראה את חלון ההתחברות של XRDP:

הפעלת מצב הפעלה משופר עבור Arch Linuxאורחים ב-Hyper-V

הזן את שם המשתמש והסיסמה שלך.

להשתמש

הרווח מהמניפולציות הללו מורגש: סשן RDP עובד הרבה יותר רספונסיבי מאשר בעבודה עם תצוגה וירטואלית ללא Enhanced Session. הדיסקים שהועברו בתוך ה-VM באמצעות RDP זמינים בספרייה ${HOME}/shared-drives:

הפעלת מצב הפעלה משופר עבור Arch Linuxאורחים ב-Hyper-V

הלוח עובד בסדר. אתה לא יכול לזרוק מדפסות פנימה, זה לא רק לא נתמך, אלא גם שובר העברת דיסק. הסאונד גם לא עובד, אבל המחבר לא היה צריך את זה. כדי ללכוד קיצורי מקשים כמו Alt + Tab, עליך להרחיב את vmconnect למסך מלא.

Если по каким-либо причинам есть желание использовать вместо приложения vmconnect встроенный в Windows RDP-клиент или, например, подключаться к этой машине из другой машины, то нужно будет поменять в файле /etc/xrdp/xrdp.ini port על tcp://:3389. אם המכונה הוירטואלית מחוברת למתג ברירת המחדל ומקבלת הגדרות רשת באמצעות DHCP, תוכל להתחבר אליו מהמארח בכתובת название_машины.mshome.net. אתה יכול להיכנס ל-TTY רק מאפליקציית vmconnect על ידי כיבוי מצב משופר.

מקורות משומשים:

  1. Hyper-V Arch Wiki
  2. דיווחי באגים ב-GitHub: 1, 2

מקור: www.habr.com

קנה אירוח אמין לאתרים עם הגנת DDoS, שרתי VPS VDS 🔥 קנה אחסון אתרים אמין עם הגנת DDoS, שרתי VPS VDS | ProHoster