2 분 소요

Linux 시작하기

  아버지가 ThinkPad를 가져다주셨습니다. 경첩이 부러진 7살짜리 그램을 쓰는 딸이 안쓰러웠나 봅니다. 앞으로도 Windows 노트북으로 개발할 예정이기에 Linux를 학습해야 할 필요성을 느꼈습니다.

Linux란?

  OS의 한 종류입니다. 다른 OS가 아닌 Linux를 공부하려는 이유를 알기 위해서는 OS 즉, 운영체제가 무엇인지 알 필요가 있습니다.

OS를 알아야 하는 이유

  OS는 시스템 소프트웨어로, 컴퓨터 시스템을 효율적으로 운영하기 위한 프로그램입니다. 자원을 효율적으로 관리하고, 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공하죠. 실제로 응용 프로그램 개발은 OS와 통신하는 프로그램을 개발한다는 의미입니다. 개발한 제품을 운영하고 배포하기 위해서는 OS에 대한 이해가 필수입니다.

하드웨어 ↔  OS ↔  응용 프로그램 ↔  사용자

  또한, OS에는 내부적으로 다양한 알고리즘이 있고, 이를 공부하면 하드웨어나 프로그램을 깊이 알 수 있으니 문제 해결이나 성능과 관련해 좋은 개발을 할 수 있다고 생각합니다.

  참고로 운영체제는 좁은 의미로 커널만을 정의하기도 합니다. 커널은 운영 체제의 핵심으로, 부팅 후 메모리에 상주하는 부분입니다. 실질적으로 메모리, 프로세스 장치 드라이버 등의 자원을 효율적으로 관리합니다.

  넓은 의미로는 운영 체제 설치 시, 함께 설치되는 유틸리티를 포함해 정의합니다. 유틸리티의 예로는 파일을 복사하고 붙여넣기, GUI 등이 있습니다.


Linux에 익숙해지고 싶은 이유

  Windows, MacOS, Unix 등 다양한 종류의 OS가 존재합니다.
그중 Linux는 Unix에서 파생된 오픈소스 소프트웨어로 무료입니다. 오픈소스, 무료 이 두 가지 이유만으로 Linux는 개발 시장에서 아주 크게 자리하게 됩니다.

  당연하게도 비용 없이 수정과 배포가 자유롭다면 기업에서는 생산할 제품의 기반을 Linux로 하겠죠? 사용자가 많다 보니 커뮤니티도 활성화되어 있고, 지속적인 보완을 거쳤기 때문에 보안이나 안정성 역시 신뢰할 수 있습니다.

  따라서 현재 대부분의 웹 서버, 애플리케이션 서버, DB 서버 등의 운영체제로 리눅스가 사용되고 있습니다. 다양한 환경에서 개발 및 관리하기 위해서 Linux와 친해져야 한다고 생각했습니다.


Linux 배포판

  Linux는 오픈소스 소프트웨어기 때문에 다양한 Linux 배포판(distro)이 있습니다. 여기서 Linux 배포판이란 Linux 커널을 기반으로 한 시스템 소프트웨어로, 유틸리티를 포함하는 넓은 의미의 운영체제를 말합니다. 보통 Linux라고 하면 Linux 배포판을 뜻한다고 합니다.

 Google에 "linux distro timeline"을 검색해 보시면 얼마나 많은 파생이 발생했는지 알 수 있습니다. 흔히 접하는 안드로이드도 모바일용 Linux 배포판이며, 저는 전에 사용 경험이 있는 데비안 계열의 Ubuntu를 설치할 예정입니다.

개발 환경 구축

  Windows 노트북에서 리눅스를 사용하려면 다양한 방법을 활용할 수 있습니다.

환경을 2개로 분리하기

  • VM 소프트웨어(하이퍼바이저 Type 2)
    • 기존의 환경(Host) 위에 하이퍼바이저가 설치되고, 하이퍼바이저는 새로 구축되는 환경(Guest)을 분리하고 관리
    • 가상의 환경을 구축한 후, CD/DVD 커넥션을 다운로드한 Ubuntu 이미지(.iso) 파일로 지정
  • 파티션 분리
    • 디스크 파티션 분할
    • Rufus를 사용해 Ubuntu 설치용 USB 생성
    • 메인보드 BIOS의 Boot Priority 설정
  • 실제로 디스크 두 개 사용하기


기타

  • Docker
    • 리눅스 컨테이너 기반 가상화 플랫폼
    • Docker에서 Ubuntu 이미지 다운로드 후 실행
  • WSL(Windows Subsystem for Linux), Window 10 이후
    • Window에서 Linux를 CLI로 사용할 수 있는 윈도우 하위 시스템
    • 🔗따라 하기
  • 온라인 IDE/터미널
    • 클라우드 서비스에서 가상 환경 사용
    • 구름 IDE, AWS Cloud 9, Google Cloud Compute Engine


저는!

  저는 첫 번째로 제시된 방법으로 VMmare 설치해서 했다가 WSL로도 설치해 봤습니다. 일단은 가볍게 Linux와 친해지는 시간을 가져보도록 하겠습니다.

마무리

  원래는 OS를 먼저 학습하고 Linux를 하려 했지만, git commit 정리하다가 vim 단축키에 꽂히고, 냅다 Ubuntu까지 깔았습니다. 항상 궁금증이 생겨서 생각한 것보다 정리가 오래 걸리지만 퍼즐이 완성되는 게 저는 조아요.. 가상화 관련해서 쉽게 설명된 블로그를 찾았는데, 집에 있는 책 저자이셔서 깜짝 놀랐습니당!


👀 참고: 얄코, '가장 쉽게 배우는 리눅스'  길벗, '모두의 리눅스'  반효경, 'KOCW 운영체제와 정보기술의 원리'  용찬호, '전가상화와 반가상화'

태그:

카테고리:

업데이트: