Pab kom Txhim Kho Session Hom rau Arch Linux qhua hauv Hyper-V

Pab kom Txhim Kho Session Hom rau Arch Linux qhua hauv Hyper-V

Siv Linux virtual tshuab hauv Hyper-V tawm ntawm lub thawv yog qhov kev paub zoo me ntsis dua li siv Windows qhua tshuab. Yog vim li cas rau qhov no yog tias Hyper-V tsis yog thawj zaug rau kev siv desktop; Koj tsis tuaj yeem nruab ib pob ntawm cov qhua ntxiv thiab tau txais kev ua haujlwm nrawm nrawm, daim ntawv teev npe, cov npe sib koom thiab lwm yam kev xyiv fab ntawm lub neej, zoo li tshwm sim hauv VirtualBox.

Hyper-V nws tus kheej muab ntau qhov kev pabcuam kev koom ua ke - yog li, cov qhua tuaj yeem siv tus tswv tsev duab ntxoov ntxoo luam qhov kev pabcuam (VSS), cov qhua tuaj yeem xa cov teeb liab kaw, cov qhua tuaj yeem synchronize lub sijhawm ua haujlwm nrog tus tswv tsev virtualization, cov ntaub ntawv tuaj yeem pauv los ntawm tus tswv tsev nrog lub tshuab virtual (Copy-VMFile hauv PowerShell). Rau qee qhov kev ua haujlwm qhua, suav nrog, tau kawg, Windows, hauv daim ntawv thov Virtual Machine Connection (vmconnect.exe) Txhim kho Session Hom muaj, ua haujlwm ntawm RDP raws tu qauv thiab tso cai rau koj hloov cov khoom siv disk thiab cov tshuab luam ntawv mus rau lub tshuab virtual, nrog rau siv cov ntawv teev lus sib koom.

Enhanced Session Mode ua haujlwm tawm ntawm lub thawv hauv Windows hauv Hyper-V tam sim tom qab kev teeb tsa. Nrog cov qhua ntawm Linux, koj yuav tsum nruab ib lub RDP server uas txhawb nqa vsock (qhov chaw tshwj xeeb virtual network chaw nyob hauv Linux tsim los rau kev sib txuas lus nrog hypervisor). Yog tias rau Ubuntu hauv VMCreate daim ntawv thov uas tuaj nrog Hyper-V ntawm desktop versions ntawm Windows, muaj ib qho tshwj xeeb npaj virtual tshuab template uas RDP server ua haujlwm nrog vsock XRDP twb pre-installed, ces nrog rau lwm yam distributions nws yog tsawg thiab tsis meej - piv txwv li, tus sau tsab ntawv no Kuv tau tswj kom pab ESM hauv Fedora. Ntawm no peb yuav qhib Enhanced Session Mode rau Arch Linux virtual tshuab.

Txhim kho kev pabcuam kev koom ua ke

Txhua yam yooj yim dua los yog tsawg dua ntawm no, peb tsuas yog yuav tsum tau nruab lub pob hyperv los ntawm lub zej zog repository:

% sudo pacman -S hyperv

Cia peb pab VSS thiab pauv kev pabcuam metadata thiab cov ntaub ntawv:

% for i in {vss,fcopy,kvp}; do sudo systemctl enable hv_${i}_daemon.service; done

Txhim kho XRDP

chaw cia khoom linux-vm-cov cuab yeej ntawm GitHub muab cov ntawv sau uas siv cov txheej txheem ntawm kev txhim kho thiab teeb tsa XRDP rau Arch Linux thiab Ubuntu. Cia peb nruab Git, yog tias nws tsis tau teeb tsa, nrog rau cov compiler thiab lwm yam software rau kev tsim cov ntawv, thiab tom qab ntawd clone lub chaw cia khoom:

% sudo pacman -S git base-devel
% git clone https://github.com/microsoft/linux-vm-tools.git
% cd linux-vm-tools/arch

Thaum lub sijhawm sau tsab xov xwm no, qhov tseeb tshaj tawm ntawm XRDP, uas tau teeb tsa los ntawm tsab ntawv makepkg.shqhov pom zoo nyob rau hauv lub repository yog 0.9.11, nyob rau hauv uas parsing yog tawg vsock://-chaw nyob, yog li koj yuav tau nruab XRDP los ntawm Git thiab Xorg tsav tsheb rau nws los ntawm AUR manually. XRDP thaj uas muaj nyob rau hauv AUR kuj tseem me ntsis dhau los, yog li koj yuav tau hloov kho PKGBUILD thiab thaj ua haujlwm ntawm tes.

Cia peb clone repositories nrog PKGBUILDs los ntawm AUR (feem ntau cov txheej txheem no, nrog rau kev tsim, yog automated los ntawm cov kev pab cuam xws li nyo hau, tab sis tus sau tau ua tag nrho cov txheej txheem ntawm kev huv huv):

% git clone https://aur.archlinux.org/xrdp-devel-git.git
% git clone https://aur.archlinux.org/xorgxrdp-devel-git.git

Cia peb nruab XRDP nws tus kheej ua ntej. Cia peb qhib cov ntaub ntawv PKGBUILD tej ntawv nyeem.

Cia peb kho qhov tsim tsis. PKGBUILD rau lub tsev XRDP los ntawm Git tsis suav nrog kev txhawb nqa vsock thaum lub tsev, yog li cia peb pab nws tus kheej:

 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
 }

Hauv thaj arch-config.diff, uas tswj cov chav nyob thiab XRDP tso cov ntawv sau raws li cov ntaub ntawv txoj hauv kev siv hauv Arch Linux, kuj muaj ib thaj rau cov ntawv instfiles/xrdp.sh, uas thaum lub sijhawm sau ntawv raug tshem tawm los ntawm XRDP kev faib tawm, yog li thaj yuav tsum tau hloov kho manually:

  [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

Cia peb sau thiab nruab lub pob nrog cov lus txib % makepkg --skipchecksums -si (tus yuam sij --skipchecksums yuav tsum tau lov tes taw checksum cov ntaub ntawv qhov chaw, txij li thaum peb kho lawv manually).

Wb mus rau lub directory xorgxrdp-devel-git, tom qab ntawd peb tsuas yog sib sau ua ke lub pob nrog cov lus txib % makepkg -si.

Wb mus rau lub directory linux-vm-tools/arch thiab khiav tsab ntawv install-config.sh, uas teeb tsa XRDP, PolicyKit thiab PAM nqis:

% sudo ./install-config.sh

Script installs legacy setting use_vsock, uas tau raug tsis quav ntsej txij li version 0.9.11, yog li cia peb hloov kho cov ntaub ntawv teeb tsa /etc/xrdp/xrdp.ini manually:

 ;   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

Ntxiv rau cov ntaub ntawv ~/.xinitrc launching koj nyiam qhov rais manager/desktop ib puag ncig, uas yuav raug tua thaum lub X server pib:

% echo "exec i3" > ~/.xinitrc

Wb tua lub tshuab virtual. Peb qhib kev thauj mus los vsock rau lub tshuab virtual los ntawm kev khiav cov lus txib hauv qab no hauv PowerShell ua tus thawj coj:

PS Admin > Set-VM -VMName ΠΠΠ—Π’ΠΠΠ˜Π•_МАШИНЫ -EnhancedSessionTransportType HvSocket

Cia peb qhib lub tshuab virtual dua.

Saum toj no

Sai li qhov kev pabcuam XRDP pib tom qab lub kaw lus pib, daim ntawv thov vmconnect yuav ntes qhov no thiab cov khoom yuav dhau los muaj nyob rau hauv cov ntawv qhia zaub mov Saib -> Txhim kho Session. Thaum xaiv cov khoom no, peb yuav raug ceeb toom kom teeb tsa lub vijtsam daws teeb meem, thiab ntawm lub tab Cov Chaw Muaj Peev Xwm Hauv kev sib tham uas qhib, koj tuaj yeem xaiv cov khoom siv xa mus rau RDP kev sib kho.

Pab kom Txhim Kho Session Hom rau Arch Linux qhua hauv Hyper-V
Pab kom Txhim Kho Session Hom rau Arch Linux qhua hauv Hyper-V

Wb sib txuas. Peb yuav pom XRDP nkag qhov rai:

Pab kom Txhim Kho Session Hom rau Arch Linux qhua hauv Hyper-V

Sau koj tus username thiab password.

Siv

Cov txiaj ntsig los ntawm cov kev tswj hwm no yog qhov pom tau: RDP kev sib ntsib ua haujlwm ntau dua li kev teb thaum ua haujlwm nrog cov khoom siv virtual yam tsis muaj Kev Tshaj Lij Tshaj Lij. Disks poob rau hauv VM ntawm RDP muaj nyob rau hauv phau ntawv ${HOME}/shared-drives:

Pab kom Txhim Kho Session Hom rau Arch Linux qhua hauv Hyper-V

Cov ntawv teev cia ua haujlwm zoo. Koj tsis tuaj yeem xa cov tshuab luam ntawv sab hauv; qhov no tsis tsuas yog tsis txhawb nqa, tab sis kuj rhuav tshem disk forwarding. Lub suab kuj tsis ua haujlwm, tab sis tus sau tsis xav tau qhov no. Txhawm rau ntes cov keyboard shortcuts zoo li Alt + Tab, koj yuav tsum nthuav vmconnect kom puv npo.

Yog tias vim li cas koj xav siv RDP tus neeg siv khoom tsim rau hauv Windows es tsis txhob siv vmconnect daim ntawv thov lossis, piv txwv li, txuas rau lub tshuab no los ntawm lwm lub tshuab, ces koj yuav tau hloov cov ntaub ntawv. /etc/xrdp/xrdp.ini port rau tcp://:3389. Yog tias lub tshuab virtual txuas nrog Default Switch thiab tau txais kev teeb tsa network ntawm DHCP, ces koj tuaj yeem txuas rau nws los ntawm tus tswv tsev ntawm Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΌΠ°ΡˆΠΈΠ½Ρ‹.mshome.net. Koj tsuas tuaj yeem nkag mus rau hauv TTY los ntawm daim ntawv thov vmconnect los ntawm kev tua Enhanced Mode.

Cov ntaub ntawv siv:

  1. Hyper-V - Arch Wiki
  2. Kab laum tshaj tawm ntawm GitHub: 1, 2

Tau qhov twg los: www.hab.com

Ntxiv ib saib