การใช้เครื่องเสมือน Linux ใน Hyper-V นั้นสะดวกสบายน้อยกว่าเครื่อง Windows ทั่วไป เหตุผลนี้คือ Hyper-V ไม่ได้มีไว้สำหรับใช้เดสก์ท็อป คุณไม่สามารถดำเนินการต่อและติดตั้งแพ็คเกจเพิ่มเติมสำหรับผู้เยี่ยมชมและรับการเร่งความเร็วกราฟิกที่ใช้งานได้จริง คลิปบอร์ด ไดเร็กทอรีที่ใช้ร่วมกัน และความสุขอื่นๆ ของชีวิต อย่างที่เกิดขึ้นใน VirtualBox
Hyper-V เองให้ Copy-VMFile
ใน PowerShell) สำหรับระบบปฏิบัติการแขกบางระบบ รวมถึง Windows ในแอปพลิเคชันการเชื่อมต่อเครื่องเสมือน (vmconnect.exe
) มีโหมดเซสชันที่ปรับปรุงแล้ว ซึ่งทำงานผ่านโปรโตคอล RDP และอนุญาตให้คุณส่งต่ออุปกรณ์ดิสก์และเครื่องพิมพ์ไปยังเครื่องเสมือน รวมถึงใช้คลิปบอร์ดที่ใช้ร่วมกัน
Enhanced Session Mode ทำงานนอกกรอบบน Windows ใน Hyper-V ได้ทันทีหลังการติดตั้ง สำหรับแขกบน Linux คุณต้องติดตั้งเซิร์ฟเวอร์ RDP ที่รองรับ vsock (พื้นที่ที่อยู่เครือข่ายเสมือนพิเศษใน Linux ที่ออกแบบมาเพื่อสื่อสารกับไฮเปอร์ไวเซอร์) ถ้าสำหรับ Ubuntu แอปพลิเคชัน VMCreate ที่มาพร้อมกับ Hyper-V บน Windows รุ่นเดสก์ท็อปจะมีเทมเพลตเครื่องเสมือนที่เตรียมไว้เป็นพิเศษ ซึ่งเซิร์ฟเวอร์ RDP ที่ทำงานด้วย vsock
การติดตั้งบริการรวม
ทุกอย่างง่ายขึ้นมากที่นี่เราเพียงแค่ต้องติดตั้งแพ็คเกจ hyperv
จากที่เก็บชุมชน:
% sudo pacman -S hyperv
เปิดใช้งานบริการ VSS แลกเปลี่ยน
% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done
การติดตั้ง XRDP
ที่เก็บ
% 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
ซึ่งในขณะที่เขียน
[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
มาเชื่อมต่อกันเถอะ เราจะเห็นหน้าต่างเข้าสู่ระบบ XRDP:
ป้อนชื่อผู้ใช้และรหัสผ่านของคุณ
ใช้
กำไรจากการปรับเปลี่ยนเหล่านี้เห็นได้ชัด: เซสชัน RDP ทำงานตอบสนองได้ดีกว่าเมื่อทำงานกับจอแสดงผลเสมือนโดยไม่มีเซสชันที่ปรับปรุงแล้ว ดิสก์ที่ส่งต่อภายใน VM ผ่าน RDP มีอยู่ในไดเร็กทอรี ${HOME}/shared-drives
:
คลิปบอร์ดทำงานได้ดี คุณไม่สามารถโยนเครื่องพิมพ์เข้าไปข้างในได้ ซึ่งไม่เพียงไม่รองรับ แต่ยังรวมถึงด้วย
หากมีเหตุผลบางอย่างที่ต้องการใช้ไคลเอนต์ RDP ที่ติดตั้งใน Windows แทนแอปพลิเคชัน vmconnect หรือตัวอย่างเช่น เชื่อมต่อกับเครื่องนี้จากเครื่องอื่น คุณจะต้องเปลี่ยนไฟล์ /etc/xrdp/xrdp.ini
port
บน tcp://:3389
. หากเครื่องเสมือนเชื่อมต่อกับสวิตช์เริ่มต้นและได้รับการตั้งค่าเครือข่ายผ่าน DHCP คุณสามารถเชื่อมต่อกับโฮสต์ได้ที่ название_машины.mshome.net
. คุณสามารถเข้าสู่ระบบ TTY จากแอปพลิเคชัน vmconnect โดยปิดโหมดปรับปรุงเท่านั้น
แหล่งที่ใช้:
Hyper-V Arch วิกิพีเดีย - รายงานข้อผิดพลาดเกี่ยวกับ GitHub:
1 ,2
ที่มา: will.com