리눅스는 환상이다!

운영하고 있던 Windows Server 기반 마인크래프트 서버를 Linux 서버로 옮겨보기로 했다.

그리고 이틀 동안의 분노와 좌절, 체념의 시간이 시작되었다.

 

그냥 쓰던 대로 윈도 서버에서 마인크래프트 서버를 계속 돌려도 상관없었지만, SSH를 통해 터미널에 명령어를 뚝딱뚝딱 입력하거나, WinSCP나 FileZilla와 같은 프로그램을 통해 원격으로 파일을 옮기는 모습을 동경했던지라 리눅스 서버를 꼭 써보고 싶었다.

위 이미지처럼 윈도 서버에서 리눅스 서버로 옮길 때 무엇을 고려해야 하고 무엇을 준비해야 하는지 하나하나 세밀하게 정리하기까지 했다.

내가 윈도 서버에서 자주 쓰던 기능과 프로그램은 다음과 같았다.

  • 원격 데스크톱 제어
  • 시스템 정리 도구
    CCleaner나 Geek Uninstaller와 같은 프로그램이 여기에 해당한다.
  • 마인크래프트 월드 관리 프로그램
    NBT Explorer나 MCA Selector와 같은 프로그램이 여기에 해당한다.

보다시피 GUI 환경이 필수이다.

시스템을 정리하고 마인크래프트 월드를 관리하기 위해 GUI 도구가 필요하고, 이를 원격에서 실행시키기 위해 원격 데스크톱이 필요한 것이다.

결국 이 원격 데스크톱 때문에 리눅스 서버를 때려치우게 되었지만…


제일 가벼울 것처럼 보이는 Lubuntu를 설치하려 했으나, Lubuntu를 가상 머신에 먼저 설치해 보니 LibreOffice2048-qt와 같은, 내게 쓸모없는 패키지가 기본적으로 같이 설치된다.

쓸모 없는 패키지 목록을 일일이 뽑아 그걸 하나하나 지우느니, 그냥 가장 가벼운 Ubuntu Server 20.04 LTS를 쓰기로 했다.

 

Ubuntu Server 설치에는 그리 오랜 시간이 걸리지 않았다. 설치가 모두 끝난 후, Lubuntu와 같은 데스크톱 환경 구현에 필요한 패키지인 lxqt, sddm, xorg를 설치한 후 필요한 설정을 하고 재부팅을 해보았다.

아무것도 없는 바탕화면이 날 반긴다. 시작 메뉴도 없고, 바탕화면에는 아무런 아이콘도 없다. 간혹 우클릭 메뉴로 모든 것을 제어하는 데스크톱 환경이 있기에 우클릭도 해보았지만, 아무런 반응이 없다.

처음에는 '아, 조금 부팅이 느린가 보다'라고 생각했다. 내 서버 컴퓨터는 그리 좋은 성능을 갖고 있지 않으니까. 하지만 10분이 지나도록 여전히 바탕화면에는 아무것도 나타나지 않았고, 그제야 나는 무언가가 잘못되었음을 깨달았다.

일단 서버에 설치된 패키지 목록을 확인했다. 가장 최소로 필요한 패키지만 설치했을 텐데, 여전히 내가 쓰지 않을 패키지가 같이 설치되어 있다.

그래서 --no-install-recommends 옵션으로 다시 데스크톱 환경을 설치하기 위해 Ubuntu Server를 다시 설치했다. 여전히 바탕화면은 텅 비어있었다.

그다음에는 열심히 구글을 뒤져보았다. 대부분의 글이 어딘가에 있는 sessions 디렉토리를 지워보라고 한다. 그 디렉토리를 찾아 지우고 재부팅을 했다. 텅 빈 바탕화면이 또다시 날 반긴다.

날 속였어! 이 거짓말쟁이들!

 

그래서 최소 설치를 포기하고 Lubuntu를 설치하기로 했다. 그래도 쓸모없는 패키지가 설치되는 것은 막고 싶어, Lubuntu 설치 이미지를 개조하기로 했다.

Cubic이라는 프로그램이 있다. 'Custom Ubuntu ISO Creator'의 약자인데, 이 프로그램을 통해 우분투 설치 이미지를 개조할 수 있다.

내부에 포함된 패키지를 최신 패키지로 업데이트할 수 있고, 새로운 패키지를 설치하거나 전체/최소 설치 시 설치될 패키지 목록을 수정할 수도 있다.

하지만 Cubic은 오직 Ubuntu 기반 리눅스에서만 실행된다. Lubuntu도 Ubuntu 기반이니 Cubic을 실행할 수 있을 것으로 생각했는데, gnome-terminal이 없다며 실행이 되지 않았다.

결국 Cubic 하나를 위해 VirtualBox와 VmWare를 설치해야 했다.

 

내 목표 중 하나는 UEFI 환경에서 리눅스 서버를 구동하는 것이었다.

별다른 이유는 없고, BIOS보다 UEFI가 더 나중에 나왔으니 더 좋을 것이라는 막연한 믿음 때문이었다. 지금 와서 생각해 보면 둘 사이에 별 차이는 없을 텐데 말이다.

Cubic으로 개조한 설치 이미지가 UEFI 환경에서 설치가 가능하게 만들기 위해선 Cubic을 UEFI 환경에서 설치된 Ubuntu에서 실행해야 한다고 한다.

그래서 VirtualBox에서 EFI 환경을 활성화했다. 부팅이 되지 않는다.

구글에서 이것저것 해결책을 모두 적용해 보았으나 여전히 부팅이 되지 않아, VmWare를 써보기로 했다.

이번엔 두 가지 오류가 날 괴롭힌다. 오류 내용이 정확히 기억나지는 않지만, 'Hyper-V 관련 권한을 계정에서 제거하라'라는 오류와 '특정 윈도우 기능과 호환되지 않으니 해당 기능을 꺼라'라는 오류였다.

Hyper-V를 활성화하지 않았기 때문에 두 번째 오류를 먼저 해결하려고 하니, bcdedit 명령어까지 써서 꺼야 하는 윈도우 기능이었다. 불안함을 억누르고 해당 명령어로 그 기능을 비활성화한 후 컴퓨터를 재부팅했다.

이번엔 새로운 오류가 날 반긴다. 그 오류를 해결하기 위해 또 다른 명령어를 실행하고 재부팅한다.

아까 그 오류가 또다시 날 반긴다.

 

결국 화가 머리끝까지 나서 VirtualBox와 VmWare를 둘 다 갖다 버리고 Hyper-V에 직접 Lubuntu를 설치하기로 했다. 다행스럽게도 Hyper-V는 Lubuntu의 초기 구동 시간이 오래 걸릴 뿐, 별다른 문제 없이 잘 시동이 되었다.

열심히 Cubic으로 커스터마이징한 Lubuntu를 서버에 설치했지만, 여전히 바탕화면은 텅 빈 채 그대로였다.

이를 꽉 깨물고 순정 Lubuntu를 설치해 보았다. 바탕화면은 여전히 텅 비어있다.

 

Lubuntu를 갖다 버리고 Xubuntu를 설치해 보기로 했다. 원래 Xfce는 별로 이쁘지 않아 쓰기를 꺼렸지만 Xubuntu는 그래도 Lubuntu보다는 잘 작동할 것이라는 근거 없는 믿음을 갖고 설치해 보았다.

바탕 화면은 텅 비어있었다.


다음날, 마지막 시도로 CentOS를 설치해 보기로 했다. 설치할 버전은 CentOS 8이었는데, 단순히 최신이니까 고른 것이었다.

Cubic은 Ubuntu 계열의 리눅스 설치 이미지만 수정할 수 있으므로, CentOS 커스터마이징을 위해선 다른 방법이 필요하다.

정보를 찾아보니 Kickstarter 파일을 만들어야 한다고 한다. 공식 문서를 읽다가 '대체 이게 무슨 말이야!'를 외치며 창을 닫아버렸다.

 

아무런 수정 없이 설치한 CentOS의 바탕화면도 텅 비어있었다.

구글에서 필사적으로 관련 정보를 찾아보았다. GRUB 시작 옵션에 nomodeset을 추가하라는 새로운 정보를 얻었다. 해당 출처에 따르면 X.org의 NVIDIA 관련 모듈에 문제가 많다고 하더라.

그런데 이럴 거였으면 어제 시도했던 Lubuntu나 Xubuntu에서도 GRUB 시작 옵션을 수정하면 정상적으로 바탕화면이 나오지 않았을까?

왜 Ubuntu의 문제 해결법을 CentOS에서 찾을 수 있는 거지? 이건 마치 돼지고기를 사려면 동네 문방구에 가야 한다는 말과 같은 꼴 아닌가.

미친 거 아냐?


이제 바탕화면이 제대로 나온다.

이제 마인크래프트 서버를 원격으로 관리하기 위해 얼마 전 라이선스를 구매한 AMP를 설치한다.

그런데 AMP의 설치 스크립트가 firewalld가 멀쩡히 있는데도 애꿎은 iptables의 유무만을 확인하고 있다.

결국 스크립트에서 열려고 했던 포트를 내가 직접 firewalld를 통해 열기로 했다.

그런데 firewalld의 GUI 프론트엔드가 없다. firewalld-config 패키지를 설치해 이를 해결했다.

나중에 AMP 개발자에게 이 문제에 대해 제보하자, 알려줘서 고맙다며 곧바로 설치 스크립트를 수정했다. 빠른 피드백 좋아요.


그다음은 NGINX가 문제를 일으킨다. 큰돈 주고 구매한 도메인을 설치 스크립트에 입력해서 서버 관리 페이지에 손쉽게 접근하고자 했는데, 자꾸만 '프로그램이 설치 중입니다…'라는 메시지만 내뱉는다.

이건 다른 곳에 물어보아도 속 시원한 답이 나오지 않아 도메인 연결은 다음으로 미루기로 했다.


원격 데스크톱 연결은 팀뷰어를 쓸 생각이었다. 하지만 팀뷰어의 광고가 너무 지나치다. 연결을 종료할 때 서버와 클라이언트 양쪽 모두에 광고를 띄우거든. 클라이언트에게만 광고를 띄웠다면 그런가 보다 하겠지만, 서버에도 광고를 띄우는 것은 선을 넘었다.

이제 남은 선택지는 RDP와 VNC이다.

윈도우의 원격 데스크톱은 RDP를 쓰기 때문에 RDP를 먼저 시도해 보았다.

CentOS에서 RDP를 쓰기 위해서는 xrdp 패키지를 설치하면 된다고 한다. 그런데 그 패키지를 설치했음에도 서버에 연결할 수 없다. CentOS 8용 가이드를 그대로 따라 한 것인데도 말이다.

또다시 검색을 했다. RDP를 쓰기 위해선 먼저 VNC 서버가 필요하다고 한다. tigervnc-server 패키지를 설치한다. 이렇게 될 거였으면 처음부터 VNC를 시도해 볼 걸 그랬다. 하지만 윈도우에서 편하게 원격 데스크톱으로 서버를 관리하고 싶었는걸.

드디어 정상적으로 로그인 창이 나타난다. 하지만 로그인 정보를 입력하고 연결 버튼을 누르자, 창이 통째로 사라진다.

서버를 재부팅도 해보고, 다시 연결을 시도도 해보았는데, 이제는 로그인 창조차 나타나지 않는다.

결국 화가 잔뜩 나 xrdp 패키지를 지웠다.


VNC는 과연 어떨까? VNC는 더 가관이었다.

처음 본 글은 내가 직접 서비스 파일을 작성해야 한다고 말하고 있었다. 서비스 파일이 어떻게 생긴 것인지에 대해 일언반구도 없이 말이다.

다른 글을 살펴보았다. 이 글은 다행스럽게도 서비스 파일의 내용물을 보여준다. 하지만 내가 직접 서비스 파일을 생성해야 하는 것에는 변함이 없다.

 

결국 원격 데스크탑도 포기했다. 너무 손이 많이 든다.

 

다시 윈도우 서버로 돌아가기로 했다.


내가 볼 때 리눅스는 절대로 일반 사용자용으로 쓸 수 없는 운영체제이다. 괜히 윈도우가 국내 점유율을 독점하고 있겠는가?

게다가 리눅스는 윈도우와 달리 파편화가 많이 되어 있어, 인터넷에 올라온 해결책이 내게도 통하리라는 보장이 전혀 없다. 패키지 버전 차이와 같은 사소한 것이 해결책이 작동하느냐 작동하지 않느냐를 가르는 것이다.

문제에 대한 해결책을 영 엉뚱한 곳에서 찾게 되기도 한다. 내가 Ubuntu 바탕화면이 제대로 나오지 않는 문제에 대한 해결책을 CentOS에서 찾게 된 것처럼 말이다.

 

예전에 내 메인 컴퓨터에 설치된 윈도우가 갑자기 무한 블루스크린의 늪에 빠져 수도 없이 윈도우를 재설치하다가 '한 번 리눅스를 설치해 볼까?'라며 리눅스를 설치하려 한 적이 있었다. 하지만 그때에는 바이오스 펌웨어에 문제가 있었기에 리눅스를 설치조차 할 수 없었다.

그때에도 '다시는 리눅스에 손대지 말자'라고 생각했었는데…

 

윈도우 쓰세요. 그게 제일 속 편합니다.
comments powered by Disqus