เปิดใช้งานโหมดเซสชันขั้นสูงสำหรับแขก Arch Linux ใน Hyper-V

เปิดใช้งานโหมดเซสชันขั้นสูงสำหรับแขก Arch Linux ใน Hyper-V

การใช้เครื่องเสมือน Linux ใน Hyper-V นั้นสะดวกสบายน้อยกว่าเครื่อง Windows ทั่วไป เหตุผลนี้คือ Hyper-V ไม่ได้มีไว้สำหรับใช้เดสก์ท็อป คุณไม่สามารถดำเนินการต่อและติดตั้งแพ็คเกจเพิ่มเติมสำหรับผู้เยี่ยมชมและรับการเร่งความเร็วกราฟิกที่ใช้งานได้จริง คลิปบอร์ด ไดเร็กทอรีที่ใช้ร่วมกัน และความสุขอื่นๆ ของชีวิต อย่างที่เกิดขึ้นใน VirtualBox

Hyper-V เองให้ บริการรวมหลายรายการ - ดังนั้น แขกสามารถใช้บริการ shadow copy (VSS) ของโฮสต์ แขกสามารถส่งสัญญาณปิด แขกสามารถซิงโครไนซ์เวลาของระบบกับโฮสต์การจำลองเสมือน สามารถแลกเปลี่ยนไฟล์กับเครื่องเสมือนจากโฮสต์ (Copy-VMFile ใน PowerShell) สำหรับระบบปฏิบัติการแขกบางระบบ รวมถึง Windows ในแอปพลิเคชันการเชื่อมต่อเครื่องเสมือน (vmconnect.exe) มีโหมดเซสชันที่ปรับปรุงแล้ว ซึ่งทำงานผ่านโปรโตคอล RDP และอนุญาตให้คุณส่งต่ออุปกรณ์ดิสก์และเครื่องพิมพ์ไปยังเครื่องเสมือน รวมถึงใช้คลิปบอร์ดที่ใช้ร่วมกัน

Enhanced Session Mode ทำงานนอกกรอบบน Windows ใน Hyper-V ได้ทันทีหลังการติดตั้ง สำหรับแขกบน Linux คุณต้องติดตั้งเซิร์ฟเวอร์ RDP ที่รองรับ vsock (พื้นที่ที่อยู่เครือข่ายเสมือนพิเศษใน Linux ที่ออกแบบมาเพื่อสื่อสารกับไฮเปอร์ไวเซอร์) ถ้าสำหรับ Ubuntu แอปพลิเคชัน VMCreate ที่มาพร้อมกับ Hyper-V บน Windows รุ่นเดสก์ท็อปจะมีเทมเพลตเครื่องเสมือนที่เตรียมไว้เป็นพิเศษ ซึ่งเซิร์ฟเวอร์ RDP ที่ทำงานด้วย vsock XRDP ติดตั้งไว้ล่วงหน้าแล้วด้วยการกระจายอื่น ๆ มีความชัดเจนน้อยลง - ตัวอย่างเช่นผู้เขียน โพสต์นี้ ปรากฎว่าเปิดใช้งาน ESM ใน Fedora นอกจากนี้ เรายังเปิดใช้งานโหมดเซสชันขั้นสูงสำหรับเครื่องเสมือน 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 และแพตช์ด้วยตนเอง

เราโคลนที่เก็บด้วย 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 ภายใต้พาธไปยังไฟล์ที่ใช้ใน 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 จำเป็นต้องปิดใช้งานการยืนยัน checksum ของไฟล์ต้นฉบับ เนื่องจากเราแก้ไขด้วยตนเอง)

ไปที่ไดเร็กทอรีกันเถอะ 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 ทำงานตอบสนองได้ดีกว่าเมื่อทำงานกับจอแสดงผลเสมือนโดยไม่มีเซสชันที่ปรับปรุงแล้ว ดิสก์ที่ส่งต่อภายใน VM ผ่าน RDP มีอยู่ในไดเร็กทอรี ${HOME}/shared-drives:

เปิดใช้งานโหมดเซสชันขั้นสูงสำหรับแขก Arch Linux ใน Hyper-V

คลิปบอร์ดทำงานได้ดี คุณไม่สามารถโยนเครื่องพิมพ์เข้าไปข้างในได้ ซึ่งไม่เพียงไม่รองรับ แต่ยังรวมถึงด้วย แบ่งการส่งต่อดิสก์. เสียงยังใช้งานไม่ได้ แต่ผู้เขียนไม่ต้องการ ในการจับภาพแป้นพิมพ์ลัด เช่น Alt + Tab คุณต้องขยาย vmconnect ให้เต็มหน้าจอ

หากมีเหตุผลบางอย่างที่ต้องการใช้ไคลเอนต์ RDP ที่ติดตั้งใน Windows แทนแอปพลิเคชัน vmconnect หรือตัวอย่างเช่น เชื่อมต่อกับเครื่องนี้จากเครื่องอื่น คุณจะต้องเปลี่ยนไฟล์ /etc/xrdp/xrdp.ini port บน tcp://:3389. หากเครื่องเสมือนเชื่อมต่อกับสวิตช์เริ่มต้นและได้รับการตั้งค่าเครือข่ายผ่าน DHCP คุณสามารถเชื่อมต่อกับโฮสต์ได้ที่ название_машины.mshome.net. คุณสามารถเข้าสู่ระบบ TTY จากแอปพลิเคชัน vmconnect โดยปิดโหมดปรับปรุงเท่านั้น

แหล่งที่ใช้:

  1. Hyper-V Arch วิกิพีเดีย
  2. รายงานข้อผิดพลาดเกี่ยวกับ GitHub: 1, 2

ที่มา: will.com

เพิ่มความคิดเห็น