x11vnc: қашықтан X Window сессиясына қол жеткізу! KDE, GNOME, Xfce т.б. десктоптарды басқару, веб-камералар мен телекарталарды қолдау. Қашықтықтан басқару құралы.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
x11vnc – виртуалды желілік есептеу (VNC) серверлік бағдарламасы. Ол қашықтан клиентке X Window сессиясын және x11vnc бағдарламалық жасақтамасын орнатқан компьютерге қашықтан қол жеткізуге мүмкіндік береді, X серверінің фрейм буферін өзгерістерге үнемі тексеріп отырады. Бұл пайдаланушыға өздерінің X11 жұмыс үстелін (KDE, GNOME, Xfce және т.б.) қашықтанғы компьютерден басқаруға мүмкіндік береді, бұл пайдаланушының жеке желісінде немесе Интернет арқылы, тіпті пайдаланушы оның алдында отырғандай сезінуге мүмкіндік береді. x11vnc сонымен қатар веб-камералар, теледидар тюнерлік карталары, iPAQ, Neuros OSD, Linux консолі және Mac OS X графикалық дисплейі сияқты X11 емес фрейм буферлік құрылғыларын да тексеріп отырады. x11vnc LibVNCServer жобасының бір бөлігі болып табылады. x11vnc пайдаланушыға кіру паролін орнатуға немесе Unix пайдаланушы аты мен паролін пайдалануға мүмкіндік беретін қауіпсіздік мүмкіндіктерімен жабдықталған. Сонымен қатар, SSL арқылы қосылу опциясы да бар.
x11vnc is a Virtual Network Computing (VNC) server program. It allows remote access from a remote client to a computer hosting an X Window session and the x11vnc software, continuously polling the X server's frame buffer for changes. This allows the user to control their X11 desktop (KDE, GNOME, Xfce, etc.) from a remote computer either on the user's own network, or from over the Internet as if the user were sitting in front of it. x11vnc can also poll non X11 frame buffer devices, such as webcams or TV tuner cards, iPAQ, Neuros OSD, the Linux console, and the Mac OS X graphics display. x11vnc is part of the LibVNCServer project
x11vnc has security features that allows the user to set an access password or to use Unix usernames and passwords. It also has options for connection via a secure SSL link.
Сауалнама алгоритмі
x11vnc X серверінің фрейм буферінің көшірмесін RAM-да сақтайды. X11 бағдарламалау интерфейсі XShmGetImage фрейм буферінен пиксельдік деректерді алу үшін қолданылады. x11vnc X серверінің фрейм буферін өзінің көшірмесімен салыстырып, қандай пиксел аймақтары өзгергенін (соның салдарынан VNC көрермендеріне жіберілуі керек) анықтайды. Физикалық фрейм буферінен пиксельдік деректерді оқу, оған дерек жазудан әлдеқайда баяу болуы мүмкін (графикалық құрылғылар оқуға оңтайландырылмағандықтан), сондықтан пикселдерді біртіндеп тексеру көбінесе тым ұзаққа созылады. Жағдайды жақсарту үшін x11vnc 32 пиксел араласқан толық қатарларды тік бағытта оқиды. Экранның төменгі жағына жеткенде, ол жоғары жағынан сәл басқа ауытқумен қайта бастайды. Осылай 32 рет өткесімен, ол бүкіл экранды қамтиды. Бұл әдіс x11vnc-ге экрандағы өзгерістерді тізбектеп тексеруге қарағанда шамамен 32 есе жылдам анықтауға мүмкіндік береді (егер өзгерістер өте кішкентай болмаса, мысалы, бір пиксел биіктігінде). Егер X11 DAMAGE кеңейтімі қолданысқа енгізілсе, x11vnc оны тексеруді қайда бағыттау керектігі туралы ақпарат беру үшін пайдаланады, осылайша өзгерістерді одан да жылдам тауып, жүйеге түсетін жүктемені азайтады.
x11vnc keeps a copy of the X server's frame buffer in RAM. The X11 programming interface XShmGetImage is used to retrieve the frame buffer pixel data. x11vnc compares the X server's frame buffer against its copy to see which pixel regions have changed (and hence need to be sent to the VNC viewers.) Reading pixel data from the physical frame buffer can be much slower than writing to it (because graphics devices are not optimized for reading) and so a sequential pixel by pixel check would often be too slow. To improve the situation, x11vnc reads in full rows of pixels separated by 32 pixels vertically. Once it gets to the bottom of the screen it starts again near the top with a slightly different offset. After 32 passes like this it has covered the entire screen. This method enables x11vnc to detect changes on the screen roughly 32 times more quickly than a sequential check would (unless the changes are very small, say only 1 pixel tall.) If the X11 DAMAGE extension is present, x11vnc uses it to provide hints where to focus its polling, thereby finding changes even more quickly and also lowering the system load.
Кіріспе инъекция
x11vnc пайдаланушы енгізу оқиғаларын (пернелерді басу, көрсеткіштің қозғалысы және көрсеткіш түймешіктерін басу) VNC көрушісінен алғанда, оларды синтетикалық түрде X серверіне жіберуі керек. Бұл үшін XTEST кеңейтуінің XTestFakeKeyEvent, XTestFakeMotionEvent және XTestFakeButtonEvent X11 бағдарламалау интерфейстері қолданылады. X11 басқарылмайтын құрылғылар үшін (мысалы, Mac OS X графикалық дисплейі) басқа бағдарламалау интерфейстерін пайдалану қажет. x11vnc сондай-ақ пайдаланушыға өздерінің енгізу бағдарламасын қосуға мүмкіндік беретін интерфейсті ұсынады.
When x11vnc receives user input events (keystrokes, pointer motion, and pointer button clicks) from a VNC viewer, it must inject them synthetically into the X server. The X11 programming interfaces XTestFakeKeyEvent, XTestFakeMotionEvent, and XTestFakeButtonEvent of the XTEST extension are used to achieve this. For non X11 managed devices (such as the Mac OS X graphics display) different programming interfaces must be used. x11vnc also provides an interface where the user can supply their own input injection program.
Қызықты қолдану
Көп жағдайда арнайы мақсаттағы жүйелер графикалық дисплейді басқару үшін X терезесі жүйесін қолданып құрастырылады. x11vnc жүйенің дисплейін VNC арқылы қашықтан қол жеткізу үшін экспорттауға пайдаланылады. Бұл арнайы мақсаттағы жүйені қашықтан бақылауға, басқаруға және ақауларды жоюға мүмкіндік береді. Кейде бұл алысқа техник жіберу қажеттігін жояды немесе пайдаланушыларға жабдықты жұмыс орнынан немесе ноутбуктан басқаруға мүмкіндік береді. x11vnc келесі типтегі жүйелерде жұмыс істегені белгілі: электрондық микроскоптар, МРТ және радиологиялық бейнелерді талдау жүйелері, электр стансалары мен мұнай платформаларын басқару консольдары, материалдарды таратуды басқару, кемелердің өзін-өзі қорғау жүйесін сынау, ЯМР жүйелері, кремний пластинкаларды талдау микроскоптары және театрлар мен концерттердегі жарықтандыруды басқару. x11vnc Linux негізіндегі PDA және үй кинотеатры компьютерлері сияқты кіріктірілген жүйелерде X11 дисплейлерін экспорттау үшін қолданылады. Егер x11vnc арнайы мақсаттағы жүйеде іске қосылмайтын болса, кейде оны жақын жердегі компьютерде іске қосып, X серверінің кадрлық буферін желі арқылы сұрап алуға болады. Осылайша, x11vnc арқылы X терминалды құрылғыларға қол жеткізуге болады.
Often special purpose systems are built using the X Window System to manage the graphical display. x11vnc can be used to export the system's display for remote VNC access. This enables remote monitoring, control, and troubleshooting of the special purpose system. Sometimes this saves sending a technician to a remote site or allows users to control equipment from their workstation or laptop. x11vnc is known to have been run on the following types of systems: Electron microscope, MRI and Radiology image analysis system, Power plant and Oil platform management consoles, Materials distribution control, Ship self defense system testing, NMR systems, Silicon wafer analysis microscope, and Theater and concert lighting control. x11vnc is used to export the X11 displays in embedded systems such as Linux based PDAs and Home theater PCs. If x11vnc cannot be run on the special purpose system, sometimes it can be run on a nearby computer and poll the X server frame buffer over the network. This is how proprietary X terminal devices can be accessed via x11vnc.
Xvnc эмуляциясы
x11vnc негізгі қолданылысы физикалық графикалық жабдықпен байланысты X серверлері үшін болғанымен, ол Xvfb немесе Sun Ray сессиясы сияқты виртуалды X серверлеріне (олардың кадрлық буферлері тек RAM-да ғана сақталады) қосылуға да қабілетті. x11vnc-де Xvfb-ді автоматты түрде, тіркелген Unix пайдаланушысы ретінде іске қосуға арналған опциялар бар (create және svc). x11vnc пен Xvfb-нің өзара әрекеттесу жылдамдығы Xvnc-ге қарағанда төмен болуы мүмкін, бірақ бұл режим Xvnc-де қолжетпес мүмкіндіктерді, мысалы SSL шифрлау және Unix пайдаланушы аты мен құпия сөзді қамтамасыз етеді.
Although x11vnc's primary use is for X servers associated with physical graphics hardware, it can also attach to virtual X servers (whose frame buffers exist in RAM only) such as Xvfb or a Sun Ray session. x11vnc has options ( create and svc) to start Xvfb automatically, possibly as the Unix user that logged in. The interactive response of x11vnc and Xvfb may not be as fast as Xvnc, however this mode enables features that Xvnc does not have, such as SSL encryption and Unix usernames and passwords.
Клиент жағындағы кэштеу
RFB (VNC) протоколы X11 және RDP сияқты басқа желілік графикалық протоколдармен салыстырғанда ерекше, себебі пиксельдік деректерді көруші тарапында сақтауға арналған ешқандай мүмкіндік қарастырылмаған. Бұл клиенттің іске асырылуын жеңілдетсе де, жылдам жауап беру тұрғысынан төлеуге дайын болу керек. Мысалы, терезе немесе фондық аймақтың әр қайта көрсетілуі үшін оның (сығылған) пиксельдік деректері желі арқылы қайта жіберілуі тиіс. Бұл әсер әсіресе жиі иконаланған және иконасы алынған немесе қайта көрсетілетін күрделі немесе фотосуреттері бар терезелерде (мысалы, веб-браузер терезесі) байқалады. x11vnc клиенттік жақта сақтаудың тәжірибелік және біршама күшті әдісін ұсынады. Ол ncache опциясы арқылы қосылады. Осы режимде RFB кадр буферін құру кезінде x11vnc нақты (экрандағы) пиксельдік деректер үшін пайдаланылатын жоғарғы бөліктен төмен, өте үлкен қосалқы аймақты бөледі. x11vnc RFB CopyRect командасын пайдаланып, көрушіге пиксельдік деректердің тіктөртбұрыштарын қосалқы аймаққа және одан шығаруға нұсқау береді. Бұл операциялар көруші тарапында жергілікті түрде орындалады. Осылайша x11vnc қосалқы аймақты басқаруға және пиксельдік деректерді желі арқылы қайта жібермей сақтауға және алуға мүмкіндік алады. x11vnc клиенттік жақтағы сақтау режимі көптеген операциялар үшін жауап беру жылдамдығын айтарлықтай жақсарта алады. Бұл схема RFB CopyRect командасын пайдаланатындықтан, кез келген (өзгертілмеген) VNC көрушісімен жұмыс істейді. Дегенмен, кейбір кемшіліктері бар. Біріншісі, ол көп көлемде жадты қажет етеді. Жақсы өнімділік үшін нақты экраннан 10-20 есе үлкен қосалқы аймақ пайдаланылуы керек. Демек, 1280x1024 truecolor кадр буфері үшін 5 МБ пайдаланудың орнына, шамамен 100 МБ қолданылады (VNC клиенті және сервер тарапында). Бұл қазіргі заманғы компьютерлер үшін үлкен мәселе емес, бірақ аз жады бар құрылғыда мүмкін емес. Екіншісі, VNC көрушісі қосалқы аймақты пайдаланушыны шатастыруы мүмкін, мысалы, оны пайдаланушыға көрсету немесе егер тышқан нақты экранның төменгі жағына жетсе, автоматты түрде оған қарай жылжу. SSVNC-дегі Unix VNC көрушісі қосалқы аймақты автоматты түрде жасырады. Соңында, x11vnc терезелердегі пиксельдік деректерді сақтау және қайта пайдалану бойынша қолданатын эвристикасы толыққанды емес және терезе мазмұнының күтпеген жыпылықтауына және басқа да жағымсыз әсерлерге әкелуі мүмкін.
The RFB (VNC) protocol is odd when compared to other network graphics protocols, such as X11 and RDP, in that there is no provision for viewer side caching of pixel data. While this makes the client easier to implement, there is a price to pay in terms of interactive response. For example, every re exposure of a window or background region needs to have its (compressed) pixel data resent over the network. This effect is particularly noticeable for windows with complex or photo regions (such as a web browser window) that gets iconified and deiconified or re exposed often. x11vnc has an experimental and somewhat brute force implementation of client side caching. It is enabled via the ncache option. When creating the RFB frame buffer in this mode, x11vnc allocates a very large scratch region below the top portion used for the actual (on screen) pixel data. x11vnc can then use the RFB CopyRect command to instruct the viewer to move rectangles of pixel data into and out of the scratch region. These moves are done locally on the viewer side. In this way x11vnc can manage the scratch region to store and retrieve pixel data without having to resend it over the network. x11vnc's client side caching mode can give noticeable interactive response improvements for many activities. Since it uses the existing RFB CopyRect command, the scheme will work with any (i. e. unmodified) VNC viewer. There are some disadvantages, however. The first is that it consumes a large amount of memory. For good performance a scratch region 10 to 20 times larger than the actual screen should be used. So instead of using 5 MB for a 1280x1024 truecolor frame buffer, closer to 100 MB will be used (on both the VNC client and server sides). This is not so much of an issue on modern computers, but would not be possible on a low memory device. Second, the VNC viewer may treat the scratch region in ways that confuse the user, for example displaying it to the user or automatically panning down into it if the mouse reaches the bottom of the real screen. The Unix VNC viewer in SSVNC automatically hides the scratch region. Finally, x11vnc's heuristics for caching and reusing window pixel data are not perfect and can lead to unexpected flashing of a window's contents and other undesired effects.