이 웹 페이지는 Smart Zynq 보드의 기능을 살펴보는 소규모 프로젝트 모음에 속하는 문서입니다.
이 프로젝트는 HelloFPGA에도 게시되어 있습니다. 이 사이트는 중국어 사용자에게 추천됩니다. 이 페이지에서 설명하는 방법을 시연하는 짧은 동영상도 있습니다.
소개
Linux 컴퓨터에서는 그래픽 소프트웨어가 다른 컴퓨터에 창을 여는 것이 가능합니다. 다시 말해, 소프트웨어(예: Google Chrome)는 한 컴퓨터에서 실행되지만, 그 소프트웨어를 사용하는 사람은 다른 컴퓨터 앞에 앉아 있습니다. Microsoft Windows에도 비슷한 해결책이 있지만, 그런 해결책들은 대개 사용자 경험이 좋지 않습니다. Linux는 원격지에서 작업하는 데 훨씬 더 적합합니다.
이 기능은 자주 사용되지는 않습니다. 사람들이 보통 자기 컴퓨터나 노트북에서 작업하기 때문입니다. 하지만 모니터가 연결되어 있지 않은 컴퓨터라면 이 기능이 유용할 수 있습니다.
이 튜토리얼에서는 마우스, 키보드, 모니터를 Microsoft Windows 컴퓨터에 연결한 상태에서 Xillinux에서 그래픽 소프트웨어를 실행하는 방법을 설명합니다.
X 서버
Linux 데스크톱의 기반은 X-Window입니다. 이 소프트웨어는 매우 오래되었지만 오늘날까지도 잘 동작합니다. Microsoft Windows 컴퓨터와 달리, 그래픽 인터페이스는 X 서버를 기반으로 합니다. X 서버는 TCP/IP 서버를 구현하는 평범한 컴퓨터 프로그램(사용자 공간에서 실행됨)입니다. 이 서버는 보통 6000번 포트에서 대기(listen)합니다. 컴퓨터 화면에 창을 표시하려는 모든 프로그램은 TCP/IP를 통해 이 서버에 연결됩니다. 모든 그래픽 정보는 이 TCP/IP 연결을 통해 전송됩니다. 사용자의 키 입력과 마우스 움직임도 이 연결을 통해 전달됩니다.
창을 제어하는 프로그램은 같은 컴퓨터에서 실행될 수도 있고 다른 컴퓨터에서 실행될 수도 있습니다. 연결이 TCP/IP를 기반으로 하기 때문에 이것은 중요하지 않습니다.
오늘날 대부분의 Linux 컴퓨터에서는 다른 컴퓨터가 TCP/IP를 통해 X 서버에 직접 연결하는 것이 불가능합니다. 이 기능은 보안상의 이유로 꺼져 있습니다. 게다가 두 Linux 컴퓨터 사이에 그러한 연결을 만드는 안전한 대안, 즉 "ssh -X"가 있습니다. 그럼에도 불구하고 Linux 컴퓨터에서 실행되는 그래픽 프로그램은 대개 다른 컴퓨터의 디스플레이에 연결할 수 있습니다.
따라서 Microsoft Windows 컴퓨터에서 X 서버를 실행하는 것이 유용합니다. 이 X 서버를 사용하면 다른 컴퓨터에서 실행되는 프로그램이 Microsoft Windows 컴퓨터에 그래픽 사용자 인터페이스(GUI)를 표시할 수 있습니다. 여기서는 두 가지 방법을 소개하겠습니다. 먼저 Microsoft Windows 컴퓨터에 전체 Linux 데스크톱을 표시하는 방법을 다룹니다. 그다음에는 Linux 컴퓨터에서 실행되는 프로그램의 창 하나만 표시하는 방법을 설명합니다.
준비 작업
먼저 vcxsrv를 내려받아 설치하세요. 설치 절차는 다른 Microsoft Windows 응용 프로그램과 동일합니다.
다음 단계는 Microsoft Windows가 실행되는 컴퓨터의 IP 주소를 확인하는 것입니다. 명령 프롬프트(Command Prompt) 안에서 다음과 같이 ipconfig를 사용하세요.
> ipconfig
Windows IP Configuration
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 192.168.1.11
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.3
다음 단계는 Microsoft Windows Defender 방화벽(Firewall)을 끄는 것입니다. 그렇지 않으면 Xillinux에서 실행되는 컴퓨터 프로그램이 X 서버에 연결할 수 없습니다. 사실 Xillinux에서 보내는 ping조차 실패할 것입니다.
당연한 말이지만, 방화벽을 끄면 컴퓨터가 네트워크 공격에 취약해집니다. 따라서 이 작업을 수행하기 전에 해당 컴퓨터 네트워크가 외부 방화벽으로 보호되고 있는지 확인하는 것이 좋습니다.
"Turn Windows Defender Firewall on and off"(Windows Defender 방화벽 사용/사용 안 함)로 이동하세요.
그런 다음 방화벽을 끄세요.
방화벽을 끈 후 Xillinux 보드가 Microsoft Windows 컴퓨터에 연결할 수 있는지 확인하세요. 예를 들어 Xillinux에서 ping을 시도해 보십시오.
root@localhost:~# ping 192.168.1.11 PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data. 64 bytes from 192.168.1.11: icmp_seq=1 ttl=128 time=0.797 ms 64 bytes from 192.168.1.11: icmp_seq=2 ttl=128 time=0.790 ms 64 bytes from 192.168.1.11: icmp_seq=3 ttl=128 time=0.782 ms ^C --- 192.168.1.11 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.782/0.789/0.797/0.033 ms
Microsoft Windows에서 Linux 데스크톱 실행하기
vcxsrv를 시작하려면 XLaunch라는 아이콘을 클릭하세요.
첫 번째 팝업 창에서 다음을 선택합니다.
- "One Large Window"(하나의 큰 창)를 선택하세요.
- Display number는 0을 선택하세요. 기본값인 -1은 프로그램이 서버 번호를 알아서 고르게 하는데, 이는 혼란스러운 동작을 초래할 수 있습니다.
두 번째 팝업 창에서 "Start no client"를 선택하세요.
세 번째 팝업 창에서 "disable access control"(액세스 제어 비활성화)을 선택하세요. 이렇게 해야 Xillinux 보드에서 연결할 수 있습니다.
이 세 개의 팝업 창을 마치면 vcxsrv가 크고 빈 창을 엽니다. 이 창의 모든 내용은 검은색입니다.
이제 Xillinux 데스크톱으로 이 큰 창을 채워 보겠습니다. Xillinux 보드의 shell에서 다음을 입력하세요.
root@localhost:~# DISPLAY=192.168.1.11:0 /etc/X11/Xsession
이 명령을 실행하고 몇 초 후에 그래픽 데스크톱이 Microsoft Windows 컴퓨터에 나타납니다.
ssh를 사용하여 데스크톱을 시작할 수도 있습니다. 예를 들어 Xillinux 보드의 IP 주소가 192.168.1.123이라고 가정해 보겠습니다. (Microsoft Windows 컴퓨터의) 명령 프롬프트 창에서 다음 명령을 사용할 수 있습니다.
> ssh root@192.168.1.123 "DISPLAY=192.168.1.11:0 /etc/X11/Xsession"
ssh를 사용하려면 먼저 root 사용자의 비밀번호를 설정해야 합니다.
vcxsrv의 창 안에서 복사(Copy)한 내용을 Microsoft Windows의 일반 창에 붙여넣기(Paste)할 수 있다는 점도 알아두세요. 반대 방향으로도 동작합니다.
"/etc/X11/Xsession"은 데스크톱을 시작하는 명령입니다. "DISPLAY=192.168.1.11:0"은 환경 변수(environment variable)에 값을 할당합니다. 이 값은 프로그램에게 원격 컴퓨터로 연결하라고 지시합니다.
DISPLAY 할당은 두 부분으로 구성됩니다. 첫 번째 부분은 IP 주소(이 예제에서는 192.168.1.11)입니다. 두 번째 부분은 디스플레이 번호(Display Number)입니다. vcxsrv를 시작할 때 Display number를 0으로 선택했다는 점을 기억하세요. 이것이 DISPLAY의 두 번째 부분이 ":0"인 이유입니다. 이 값은 TCP 클라이언트에게 6000번 포트로 연결하라고 지시합니다. 다른 Display number를 선택했다면 DISPLAY도 그에 맞게 바꿔야 합니다. 예를 들어 Display number가 5라면 DISPLAY는 "192.168.1.11:5"가 되어야 합니다. 이 경우 TCP 클라이언트는 6005번 포트로 연결을 시도합니다.
Microsoft Windows에서 Linux 창 하나 열기
이제 Xillinux에서 그래픽 컴퓨터 프로그램을 실행하여 그 창이 Microsoft Windows 컴퓨터에 열리도록 하는 방법을 보여드리겠습니다.
vcxsrv를 이전과 같이 시작하되, 한 가지만 다르게 하세요. "One Large Window" 대신 "Multiple Windows"(여러 창)를 선택하는 것입니다. 이 차이 외에는 이전과 동일하게 선택하세요.
이전과 달리, 세 개의 팝업 창 이후에는 새 창이 열리지 않습니다. 설정을 마친 후 아무 일도 일어나지 않는 것처럼 보일 수 있습니다. 하지만 이것은 착각입니다. X 서버는 실행 중이며 요청을 기다리고 있습니다.
예를 들어 Xillinux에서 다음을 실행해 보세요.
root@localhost:~# DISPLAY=192.168.1.11:0 gnome-text-editor &
이 명령은 Microsoft Windows 컴퓨터에 텍스트 편집기를 시작합니다. 터미널 창을 시작할 수도 있습니다.
root@localhost:~# DISPLAY=192.168.1.11:0 lxterminal &
이렇게 터미널 창을 열면 한 가지 장점이 있습니다. "DISPLAY=192.168.1.11:0" 부분을 더 이상 추가할 필요가 없다는 것입니다. 이 터미널에서 시작되는 모든 명령에는 이 값이 기본으로 적용되기 때문입니다.
앞서 언급했듯이 명령을 ssh를 통해 보낼 수도 있습니다. 터미널 창을 시작하려면 Microsoft Windows의 명령 프롬프트에 다음을 입력하세요.
> ssh root@192.168.1.123 "DISPLAY=192.168.1.11:0 lxterminal"
이 예제 역시 이전과 마찬가지로 Xillinux 보드의 IP 주소가 192.168.1.123이라고 가정합니다.
안타깝게도 X 서버를 종료하는 간단한 방법은 없는 것 같습니다. X 서버가 이 모드로 실행될 때는 프로그램을 나타내는 창이 없습니다. 따라서 서버를 중지하려면 작업 관리자(Task Manager)를 사용해야 합니다. "VcXsrv windows xserver"라는 작업을 찾아 "End Task"(작업 끝내기)를 클릭하세요.





