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

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

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

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

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

% 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 ให้เต็มหน้าจอ

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

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

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

ที่มา: will.com

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster