이공계 대학생/대학원생을 위한 컴퓨팅 강좌 2: 이공계의 컴퓨팅 전용 운전면허 - 리눅스(Linux) 사용

안녕하세요. @jwsohn입니다. 이번 포스팅에서는 이공계 학생이면 누구나 쓸 줄 알아야 하는 리눅스 운영체제 사용의 필요성과 리눅스 컴퓨터를 구하는 방법에 대해 개괄적으로 알아보도록 하겠습니다.

리눅스(Linux) 소개

Tux the Linux penguin

(그림: 리눅스 운영체제의 마스코트 펭귄 Tux)

리눅스는 마이크로소프트 윈도우(Microsot Windows), 애플의 맥 오에스(Mac OS X)와 같이 컴퓨터 운영체제(operating system)의 하나입니다. 컴퓨터 운영체제는 컴퓨터라는 하드웨어를 쓰기 위해서 가장 기본적으로 설치되는 소프트웨어인데요 운영체제 위에서 우리가 잘 아는 응용 프로그램, 혹은 어플리케이션 (application)들이 작동하게 됩니다.

왜 리눅스를 써야 하는가?

이공계 관련 과학기술용 어플리케이션

이공계 학생들에게 있어서 리눅스의 가장 큰 장점은 리눅스용 이공계 관련 어플리케이션들이 많다는 점입니다. 분야마다 중요한 어플리케이션은 거의 다 리눅스용이 있다고 보시면 됩니다.

프로그램 개발에 용이한 환경

리눅스의 최고 강점 중의 하나입니다. 프로그래밍(programming), 혹은 요즘 유행하는 단어로 코딩(coding)을 배우는 데는 리눅스가 최상의 환경을 제공합니다. 왜냐하면 리눅스에는 일단 설치만 하면 기본적으로 개발 도구가 따라오구요. 예전부터 개발자(developer)들이 리눅스를 주로 썼기 때문에 일반 사용자가 아닌 개발자를 위한 환경이 아주 잘 갖추어져 있습니다. 한마디로 코딩을 배우고 싶으면 리눅스를 쓰는 것이 필수라고 할 수 있겠습니다.

무료 오픈 소스 (open source) 소프트웨어 환경의 개방성과 자유로움

리눅스는 무료입니다. 공짜이기 때문에 마음대로 받아서 마음대로 쓰셔도 상관없습니다. 게다가, 운영체제가 무료이다보니 리눅스는 한번 설치하면 주요 어플리케이션들 까지도 기본으로 설치됩니다.

그리고, 오픈 소스 (open source)라는 단어에서 알 수 있듯이, 리눅스에서는 대부분의 프로그램들의 소스 코드 (source code) 역시 공개되어 있습니다. 어플리케이션을 찾아 보면 실행 파일만 공짜인 것이 아니라 설계도 격인 원래 프로그램 코드까지 공개되어 있는 것이지요.

또, 이렇게 중요한 정보가 공유되는 관행이 있다 보니 개발자를 위한 문서 같은 자료들도 잘 공개되어 있습니다. 한마디로 소스 코드, 문서 등등의 개발을 위한 자료들이 넘쳐나는 곳이 리눅스와 오픈 소스 환경입니다.

리눅스 컴퓨터 구하기

이러한 리눅스를 어떻게 설치해서 쓸 수 있을까요? 과거에는 리눅스를 자신의 컴퓨터에 직접 설치해 쓰는 경우가 많았습니다. 그러나 요즘은 환경이 바뀌어서 리눅스를 반드시 내 컴퓨터에 설치해야 할 필요성은 줄어들고 있는 추세입니다.

학교 리눅스 서비스 계정

가장 쉬우면서 필수인 방법입니다. 학교 리눅스 서버(server) 컴퓨터에 내 계정을 하나 만드는 것입니다. 학교 전산소와 같은 시설에는 반드시 리눅스 서버가 있고 학생이면 대부분 무료로 계정 신청을 할 수 있게 되어 있습니다. 관리자 권한은 가질 수 없지만, 이런 리눅스 서버에 계정 하나만 있어도 언제나 인터넷을 통해 접속, 다양한 작업을 할 수 있습니다.

가상 서버 (virtual server) 구입

리눅스 서버에 사용자 계정으로 접속하다 프로그램 설치 같은 관리자 권한의 필요성을 느끼게 될 즈음 추천하고 싶은 방법입니다. 최근에는 클라우드 컴퓨팅 환경이 잘 되어 있다보니 저렴한 가격으로 리눅스 서버를 구입할 수 있습니다. 제 경우 Digital Ocean이라는 업체에서 한 달에 $5을 주고 1 CPU, 1 Gb memory, 25Gb storage 사양의 조그만 서버를 쓰고 있는데요. 아주 만족스럽게 잘 사용하고 있습니다.

가상 서버라(virtual server)고 함은 무엇을 의미할까요? 과거에는 인터넷에 물린 서버를 쓰려면 서버용 컴퓨터를 한 대 통째 구해 써야 했습니다. 하지만 요즘은 고성능 컴퓨터 안에 조그만 컴퓨터를 여럿 소프트웨어적으로 돌립니다. 이런 조그만 컴퓨터를 지칭해서 가상 서버라는 표현을 쓰는 것이고 저 같은 사용자들이 가상 서버를 사서 쓰게 되는 것이지요.

참고로 Digital Ocean외의 추천할만한 가상 서버 서비스로는 아마존 웹 서비스(Amazon Web Service, AWS)의 LightSail 서비스가 있습니다. Digital Ocean과 같은 한 달 $5의 가격인데 서버의 메모리가 1Gb가 아닌 512Mb 밖에 제공되지 않는 것이 약간의 단점입니다. 국내 업체도 여럿 있는데 제 개인적으로는 Cafe 24의 가상 서버 호스팅 서비스가 괜찮았던 경험이 있습니다.

일단 가상 서버를 구입하려면 어떤 리눅스를 깔 것인지 결정해야 하는데요. 우선은 설치할 수 있는 어플리케이션의 숫자가 많다는 점에서 우분투 서버(Ubuntu Server) 배포본(distribution) 설치를 추천합니다.

직접 내 컴퓨터에 깔기

Ubuntu Desktop

내 컴퓨터에 직접 리눅스를 설치해도 되겠습니다. 하지만 굳이 깔려있는 윈도우나 맥 오에스를 지우고 리눅스를 설치할 필요 까지는 없다고 생각합니다.

그래서, 리눅스를 직접 깔아보고 싶으시면 집에 있는 구형 컴퓨터를 골라 설치해 보시기를 추천합니다. 리눅스는 메모리가 2Gb 정도 있으면 데스크탑 환경에 파이어폭스(Firefox)나 크롬(Chrome) 웹 브라우저를 편안하게 쓸 수 있습니다. 구버전 윈도우를 업그레이드도 하기 어렵고, 그렇다고 시스템을 새로 설치를 하기에도 번거로울 때 리눅스를 깔아 쓰시면 좋습니다. 깔고 나면 빨라진 속도와 안정성에 놀라실 겁니다.

이러한 데스크탑 환경용 리눅스는 우분투 데스크탑 배포본(distribution)을 추천합니다. 리눅스는 무료이기 때문에 리눅스와 리눅스용 어플리케이션들을 같이 배포합니다. 설치 한번에 운영체제 뿐만 아니라 주요 어플리케이션도 함께 깔리는 것이죠. 이렇게 리눅스와 어플리케이션을 한데 묶어 설치할 수 있도록 만들어 놓은 패키지를 배포본이라고 합니다. 우분투 데스크탑은 이런 리눅스 배포본 중의 하나입니다.

리눅스 컴퓨터 접속하기

우선 학교 전산소와 같은 데서 리눅스 서버 컴퓨터에 계정을 하나 만드셔야 합니다. 계정을 만들면 다음 정보가 따라 오게 됩니다.

  • 리눅스 서버의 아이피 주소 (IP address)
  • 리눅스 계정 (account)
  • 비밀번호 (password)

리눅스 서버 컴퓨터에 계정을 만들었으면 이제 접속을 해 봅시다. 리눅스 서버에 접속은 어떻게 할까요? 네. 텍스트 모드에서 Secure Shell (SSH) 이라는 네트워크 프로토콜(network protocol)로 접속을 하게 되겠습니다.

잠깐만요. 텍스트 모드라구요? 맞습니다. 그래픽이 아닌 텍스트 모드로 접속을 합니다.

우선 제 컴퓨터에서 제가 쓰는 개인 리눅스 서버에 접속하는 모습을 한번 보시겠습니다. (개인 프라이버시상 아이피 주소 관련 정보를 지운 점 양해 부탁드립니다.)

ssh to my
server

텍스트 모드의 터미널(Terminal) 프로그램에서

    ssh [server IP address] -l [user account]

명령을 입력하면 서버로 접속이 됩니다. 그러면 서버인 nekovm 컴퓨터는 간단히 명령어 프롬프트 (command prompt)를 보여주고 커서가 하나 깜빡깜빡 여러분들의 명령을 기다리게 되겠습니다.

이런 원시적인 환경이 뭐가 좋냐구요? 그건 차근차근히 배워가시길 부탁드립니다. 참고로, 리눅스를 배우는 것은 자동차 운전을 배우는 것과 비슷합니다. 운전을 배우려면 신경 쓸 일이 많습니다. 운전 기본 지식, 교통 법규, 보험 등등의 지식을 학습해야 하고 실제 차를 몰고 운전 실습도 해야 합니다. 시간이 걸리고 힘든 일이지요. 하지만 한번만 운전을 잘 배워 면허까지 따 놓으면 평생 동안 자동차라는 문명의 이기를 편하게 쓸 수 있습니다.

리눅스도 마찬가지입니다. 리눅스는 얼핏 보기에는 윈도우나 맥 오에스 데스크탑에 비해 별다른 매력이 없습니다. 게다가, 리눅스를 배우는 데는 상대적으로 많은 노력이 필요합니다. 하지만 제대로 배워놓고 나면 마치 자동차를 쓰는 것 처럼 리눅스라는 편리한 컴퓨팅 환경을 잘 쓸 수 있게 되겠습니다.

어느 정도로 편리하냐구요? 마우스에 손을 자주 뻗어야 하는 윈도우나 맥 오에스 데스크탑이 불편하다는 얘기까지 나오는 것이 리눅스 환경의 편리함입니다. 일단은 잘 이해가 되지 않지만 그런 정도까지 갈 수 있다는 것만 우선 알아둡시다. :)

그러면 리눅스 컴퓨터와의 파일 전송은 어떻게 할까요? 이것은 secure FTP (sFTP)라는 네트워크 프로토콜(network protocol)을 이용합니다. 즉, sFTP를 지원하는 파일 전송 프로그램을 적절히 쓰시면 되겠습니다.

윈도우즈 컴퓨터에서 리눅스 서버 쓰기

그러면 여러분들이 많이 쓰는 윈도우 컴퓨터에서 리눅스 서버에 다시 접속을 해 보도록 하겠습니다. 우선, secure shell 연결을 지원하는 터미널 프로그램(터미널 에뮬레이터(terminal emulator)라고 합니다.)은 무엇을 쓰는 것이 좋을까요? 보통 putty (https://www.chiark.greenend.org.uk/~sgtatham/putty) 가 유명한데 제 개인적으로는 MobaXTerm (https://mobaxterm.mobatek.net) 을 쓰시는 것을 추천합니다.

secure FTP를 지원하는 파일 전송 프로그램은 무엇이 좋을까요? WinScp (https://winscp.net) 라는 프로그램을 추천합니다. 자, 이제 리눅스 서버에 접속을 해 보도록 하겠습니다.

리눅스 서버 접속: MobaXTerm

mobaxterm

MobaXTerm에서 리눅스 서버에 접속하는 화면입니다. 아까 터미널의 예와 같이 똑같은 ssh [server ip address] -l [account name]을 입력하고 엔터키를 누르시면 되겠습니다.

파일 전송: WinScp

winscp

WinScp를 통해서 서버 컴퓨터의 디스크에 접속한 화면입니다. 화면 왼쪽이 제 윈도우 컴퓨터의 파일 리스팅이고 오른쪽이 원격으로 접속한 제 리눅스 서버의 파일 리스트입니다. 리눅스 서버에 파일을 업로드(upload) 하거나 서버에 있는 파일을 내 컴퓨터로 다운로드(download) 할 때 WinScp를 쓰시면 되겠습니다.

매킨토시 컴퓨터에서

매킨토시를 쓰시는 분들은 기본으로 리눅스의 모태인 유닉스가 내장되어 있기 때문에 ssh, sftp 명령이 기본으로 작동합니다. 다만, 터미널 에뮬레이터 프로그램은 Applications - Utilities 폴더에 있는 Terminal 프로그램을 쓰면 되고 secure FTP 파일 전송은 CyberDuck (http://cyberduck.io) 을 개인적으로 추천합니다.

리눅스 교재

자, 이제 리눅스 서버도 확보했고 접속 도구도 완비했으니 리눅스를 써 볼 차례가 되겠습니다. 일단, 리눅스는 파일 관리(file management)부터 기본 명령을 배워야 하겠습니다. 그렇다면 교재가 필요한데요. 어떤 교재가 좋을까요?

우선, 다음 책을 추천합니다. 제가 이 책을 가지고 리눅스 기본 명령을 배우기도 했고 또 상당히 오래된 책이라 값싼 중고를 구하셔도 괜찮습니다. 아마도 웬만한 대학 도서관에는 비치가 되어 있을 겁니다.

Harley Hahn’s “A Student’s Guide to UNIX”

Guide to Unix

최근에는 이 책이 이름이 Guide to Unix & Linux로 바뀌면서 1st edition으로 판본까지 바꾼 것 같습니다만 구 판본을 구하셔도 기본 내용에는 큰 차이가 없을 겁니다. 쉽고 재미있게 잘 쓰여진 책입니다. 운전 면허 교재를 읽는 기분으로 하나하나 따라가시면 되겠습니다.

그러면 리눅스를 기본으로 쓸 줄 안다는 것은 어디까지를 의미할까요? 기본적으로 파일 관리 (file management)를 command line에서 할 줄 알고 텍스트 에디터를 이용해서 문서를 작성 할 줄 알면 충분하겠습니다. 텍스트 에디터는 기본으로 vi 에디터(혹은 vim)나 emacs 에디터 둘 중 하나만 하시면 되겠습니다.

The Linux Documentation Project

리눅스 관련 무료 문서들을 모아놓은 곳입니다. Guides 링크로 가셔서 Introduction to Linux - A Hands on Guide를 보시면 되겠습니다. 이 외에도 찾아보시면 여러가지 리눅스 기본 튜토리얼 문서가 많이 있습니다.

KLDP Wiki

한글 리눅스 문서 프로젝트의 홈페이지입니다. 문서 업데이트가 많이 되지 않아서 지나치게 오래된 내용은 걸러 보아야 하는 문제가 있습니다만 리눅스 관련 한글 문서의 집합소라고 보시면 되겠습니다.

리눅스 소개를 마치며

일단 이쯤 하면 리눅스를 배우고 사용할 수 있는 준비는 끝이 납니다. 문제는 리눅스 튜토리얼을 어느 정도 배우고 또 만들어진 리눅스 계정을 얼마나 자주 쓰는가 일 것입니다. 자동차도 운전을 너무 오래 하지 않으면 운전 실력이 줄어들 듯이 리눅스도 그런 속성이 약간 있습니다. 게다가, 요즘은 웹브라우저를 통한 일처리가 워낙에 쉬워졌기 때문에 기본적으로 command line interface에 대해서 사용자의 반감(?)이 있을 수도 있겠습니다.

하지만, 대학생/대학원생의 경우 시간이 가면 갈수록 리눅스를 써야 하는 일이 많겠습니다. 간단한 프로그램 개발을 해도 리눅스를 쓰는 것이 편리하고, 다른 사람들이 만든 프로그램을 가져와 실행하기에도 리눅스가 편리합니다. 특히, 대학원생의 경우 수식이 많은 논문을 작성할 때 LaTeX이라는 pdf 문서 조판 시스템을 사용하게 될 경우가 많은데 LaTeX 역시 리눅스에서 쓰는 것이 편리하겠습니다.

이렇게 개발, 문서 작업만 리눅스를 쓰게 되어도 리눅스의 사용 비중이 필수로 올라가기가 쉽습니다. 하지만, 막상 필요할 때 리눅스까지 새로 배우려고 하면 시간적 부담이 많습니다. 따라서 시간이 있을 때 운전면허를 배워 두면 편리한 것처럼 리눅스 역시 시간 있을 때 신경을 써 두시면 좋지 않을까 싶은 생각을 해 봅니다.

다음 포스팅에서는 아주 간단히 지금 말씀드린 프로그램 개발과 문서 작업을 리눅스 환경에서 같이 맛보기로 해 보도록 하겠습니다.

읽어 주셔서 감사합니다.