여러분의 배포판 선택을 위한 소개

linuxlogo

지난 글에서 리눅스 배포판 종류에 대해 간략하게나마 소개해드렸습니다. 하지만, 배포판의 종류가 이런 것들이 있다는 정보 만으로는 내가 사용할 배포판을 선택하는데 어려움이 남아있죠. 그래서 여러분의 상황이나 성향에 맞는 배포판 선택에 도움을 드리고자 이 글을 작성하게 되었습니다.

기본적으로 시작점은 하드웨어의 상태입니다. 준수한 하드웨어(i3 이상 급의 CPU, 4G 이상의 RAM)라면 아래의 설명을 읽어보시면 되고, 그에 미치지 못한다면 DSL(Damn Small Linux), Puppy Linux 등을 살펴보시는 편이 좋습니다.

자 그럼, 가장 보편적이고 쉬운 배포판부터 차근차근 설명드리면서 시작해보도록 하겠습니다. 시작은, Out of the Box라고 불리는 배포판들입니다. Out of the Box라는 표현은 보통, 설치하자마자 사용이 가능한, 박스에서 꺼내자 마자 사용이 가능한 이라는 표현으로 사용합니다. 아래에 적을 배포판들은 모두 설치가 완료되자마자 일반적인 용도로 사용하는데 큰 불편이 없는 배포판입니다.(개발 환경을 의미하는 것이 아니라, 일반 데스크탑 사용자 측면으로써의 설명입니다.) Out of the Box로 분류되는 배포판들은 대개 롤링 릴리즈 타입이 아닙니다.

(굵직 굵직한 메이저 배포판만 다루겠습니다. TOP 5 등과 같이 순위를 매기려는 것은 결코 아니며 독자들이 가장 많은 관심을 가질만한 배포판만 다룹니다. 특히, BSD계열은 모두 제외합니다.)


 

ubuntu

 

네, 그 분입니다. 리눅스에 입문을 하시려는 분들은 우분투 리눅스나 혹은, 그 계열인 민트를 사용하시는 것을 추천합니다. 대부분의 사용은 GUI(그래픽 UI 환경)에서 처리가 가능하고 설치도 용이합니다.


 

debian

 

우분투 리눅스는 너무 식상하다거나, 조금 더 자세히 알아보고 싶다고 생각하시는 분들은 데비안 리눅스를 추천합니다. 데비안 리눅스는 GNU/Linux 배포판 중 2번째로 오래되었고, 아직도 건재한 배포판입니다. 데비안에서 파생되어 나온 우분투 리눅스마저 큰 성공을 거두었습니다. 데비안 리눅스는 견고(solid)하기로 유명합니다. 상당히 체계적인 검토와 테스팅을 거쳐 레파지토리(패키지 모음)에 올려지기 때문에, 데비안에서 기본적으로 제공하는 레파지토리에서 설치 가능한 패키지라면 꽤나 신뢰하고 사용하셔도 무방합니다. 다만, 위와 같은 특징 때문에 타 배포판보다 훨씬 오래된 버전의 패키지들을 사용하게 될 수도 있습니다. 이 부분은, ‘/etc/apt/source.list’를 편집하여 testing 버전으로 사용시 롤링 릴리즈 배포판처럼 사용할 수 있습니다.


fedora_logo

블리딩 엣지(최신 기술, 첨단 기술)의 영역에 입장하고 계십니다. 여기까지도 엄밀히 Out of the Box 형태의 배포판이지만 최신 기능이나 패키지들을 탑재하기로 유명합니다. 페도라는 최신 패키지들을 적극적으로 공식 레파지토리에 올려두기로 유명합니다. 어느 정도 버그가 있을 순 있겠지만 사용자에게 가장 최신 버전의 패키지들을 사용가능하도록 제공합니다. Out of the Box 진영과 Bleeding Edge진영의 사이에서 정확한 스윗 스팟을 자극한 배포판으로 생각합니다. 개인적으로, Arch, Gentoo, LFS까지 경험하던 중 결국 페도라에 눌러 앉았습니다. 리눅스 커널의 창시자이자 개발자인 Linus Torvalds가 과거 인터뷰에서 “데비안 설치는 너무 어렵고, 나는 개발자이지 배포판 설치 전문가가 아니라”면서 페도라를 사용하고 있음을 언급한 적이 있습니다.(토르발즈가 언급했던 어려운 설치 버전의 데비안은 아마도 ‘우디’ 시절로 추정하며, 그 당시엔 GUI 인스톨러가 아니었습니다.) 개인적인 생각으로도 개발을 위한 환경까지 아울러, 리눅스에 경험이 어느정도 쌓였다면 최적화된 배포판이 아닐까 생각해봅니다.


 

slackware.png

슬랙웨어 입니다. 리눅스의 역사에 더 매료되시는 분들은, 슬랙웨어를 추천합니다. 가장 오래된 배포판입니다. (사실 데비안과 3개월(?) 정도 차이밖에 나지 않습니다. 다만 데비안과 슬랙웨어를 제외하고는 당시 출시된 배포판은 대부분 소멸되거나 다른 방향으로 변화해왔습니다. 원래의 철학과 모습을 유지하는 배포판은 슬랙웨어와 데비안 뿐으로 생각합니다.) 엄밀히 말하면, 최초의 배포판을 ‘Boot Root’로 생각할수도 있지만, 지금과 같은 형태의 배포판으로써는 슬랙웨어가 확실히 최초라고 알려져 있습니다. 패키지 매니저는 pkgtool 과 slackpkg가 있습니다. 의존성을 직접 체크, 컴파일해야하는 패키지 매니저와 현대적인 의존성 체크와 바이너리 인스톨을 가능하게하는 패키지 매니저 둘 모두를 지닌 매력적인 배포판입니다. 데비안과 마찬가지로 올드한 패키지들을 보유하고 있습니다. 한 번쯤, 경험해보면 좋을 배포판입니다.

(한국 미러가 없습니다. KAIST측 문의를 했고, 검토 중인 것으로 알고 있습니다.)


7a9cb-13zj0sqjigkmcfohq0u2h5w

지금부터는 롤링 릴리즈 타입입니다. 본인이 어느 정도 리눅스를 공부하고자 하는 의지가 있는 분들에게 추천합니다. 설치는 CLI(커맨드 라인 인터페이스)로 진행하며, 기본 설치가 완료되어도 베이스만 설치되어있을 뿐, Xorg와 데스크탑 환경이나 윈도우 매니저도 직접 설치하여야 합니다. 따라서, 본인이 성공적으로 데스크탑을 완성하더라도 이 것이 어느정도나 안정적이고 보안에 취약한지는 확신할 수가 없습니다. 일반적으로 커뮤니티에선 “작동한다면 된거다”라고 하지만 완벽을 추구하는 성격인 분들은 상당히 성가신 부분일 수 있습니다. 패키지 매니저인 pacman은 C로 쓰여 상당히 빠릅니다. 롤링 릴리즈타입으로 특정 버전이 존재하지 않으며, 지속적으로 업데이트를 하면서 굴려 나가는 배포판입니다. 따라서, 롤링 릴리즈가 아닌 배포판들이 갖는, 메이저 업데이트 때의 충돌 위험 등을 고려하면 상당히 마음 편한 배포판입니다. (아치 리눅스 설치 방법)

(현재 카이스트 측 미러가 403에러를 뿜습니다. 카이스트 측에 문의를 드렸고, 권한 관련 오류 확인 되었고, 수정한다고 답신이 왔습니다.)


 

gentoo

네 애증의 젠투입니다. 젠투도 롤링 릴리즈입니다. 심지어, 아치와 마찬가지로 모든 설치는 CLI에서 진행하며, 설정도 직접 해주셔야 합니다. 아치보다 더 나아가 모든 패키지는 소스 코드를 다운 받아 직접 컴파일 합니다. 젠투 리눅스부터는 하드웨어의 영향을 좀 받습니다. 2 core 노인 CPU로 KDE Plasma 메타 패키지 컴파일에 2700여 분이 소요되고, KDE Framework 컴파일에 3400여 분이 소요됬던 사진은 페이스북에 업로드해드렸습니다. 재밌는 점은 하드웨어가 받혀준다면 사용하는데 큰 문제는 없습니다. i5-4세대 CPU로는 위의 패키지들 컴파일에 30여 분이 소요된 것으로 추정합니다.(정확한 측정은 하지 못했습니다.) USE플래그를 활용하여 각 패키지별로 본인이 사용할 기능과 그렇지 않은 기능을 포함/미포함하여 컴파일 할 수 있습니다. 개인적으로, CPU가 워크스테이션 급이 아닌 분들은 한 번쯤 사용만 해보시고 바이너리 배포판(위의 배포판 모두)을 사용하시는 것을 추천합니다. 급하게 ATOM에디터가 필요해서 $emerge -s app-editors/atom 이후, ~amd64로 마스크되어 있는 것을 확인하고 의존성 패키지의 마스크까지 ‘/etc/portage/package.accept_keywords’에 언마스크해준 이후, 컴파일을 시작하여 컴파일이 완료될 때 까지 개발을 못하고 있는 상황에 처하자마자 페도라로 돌아갔습니다. (젠투 리눅스 설치 방법, 젠투 홈페이지의 iso는 UEFI 부팅이 불가능합니다. 따라서, 아치 리눅스등의 iso를 통해 UEFI/GPT파티션으로 설치가 가능합니다: 해당 방법 설명)


lfs

LFS(Linux from Scratch)입니다. 완벽히, 학습용이라고 생각합니다. 설치 이미지(iso)파일도 제공되지 않고, 책을 보면서 설치합니다. 설치 환경 조성을 위해 ‘/mnt/lfs/tools’ 디렉토리를 생성하여 그 곳에 GCC등의 필수 패키지를 컴파일(호스트 PC의 GCC와 다른 필수 패키지들의 설정과 버전 등을 신뢰할 수 없기 때문에) 해 놓은 후, /tools의 패키지들을 이용해 /mnt/lfs의 베이스(다시, GCC와 나머지 필수 패키지)를 설치하고나서, 추가로 필요한 패키지들을 베이스 시스템의 GCC를 이용해 컴파일합니다. 추후에, BLFS 등에서 Xorg와 데스크탑 환경 등 까지도 컴파일할 수 있습니다. 젠투를 위시한 여러 배포판들은 사실상 LFS와 BLFS, CLFS 등과 같거나 유사한 과정을 통해 탄생한 배포판 들 입니다. 배포판 제작에 관심이 있으신 분들은, LFS를 통해 공부,연구 하셔도 무방할 듯 합니다. 젠투에서도 말씀드렸듯이, 젠투 부터 아래로는 모두 CPU의 영향을 매우 크게 받습니다.


여기까지 굵직한 배포판들의 간략한 소개를 드렸습니다. 이 글을 통해, 여러분들이 사용하실 배포판 선택에 도움이 되었기를 바랍니다. 개인적인 소망이지만 대한민국에 Daily Machine으로써의 리눅스 사용자가 더욱 더 많아지기를 기대합니다!

logorealfinal

LINUX에서 WIFI 사용 총 정리

linuxlogo

업데이트: 2018-08-30, 18:07 – wpa_supplicant 관련

LINUX에서 WIFI를 이용하는 것, 전혀 어렵지 않습니다.

이번 글에서는, CLI환경에서 몇 가지의 커맨드만을 이용해서 WIFI를 사용하는 방법을 소개하겠습니다.

우선, 친숙해지셔야할 명령어입니다.

  • ipconfig
  • iw dev
  • wpa_supplicant

(기본적으로 본인 하드웨어, 즉, 와이파이 장치의 드라이버가 로드되었다고 가정하겠습니다. 장치의 드라이버는 대부분 배포판에서 모듈로써 설치되어 인식되자마자 로드되기 때문에 걱정하지 않으셔도 됩니다. 이 부분을 신경써주셔야 할 배포판은 아치 리눅스(아치 리눅스도 사실 범용 드라이버는 문제 없다고 생각하셔도 무방합니다.), 젠투 리눅스 및 슬랙웨어, BSD계열 혹은 LFS입니다.)

  1. 드라이버
    기본적으로 본인의 Wireless 드라이버가 설치되어 로드되는지 확인해야합니다. 각 배포판에서 제공하는 Linux-firmware가 설치되어 있다면 대부분의 무선 장치는 문제없이 사용할 수 있어야만 합니다. 아래의 커맨드를 입력해 봅니다. (모듈이 제대로 로드되지 않았다면, 해당 부분은 별도의 글에서 다루도록 하겠습니다. 현재는 모듈이 제대로 로드되어있는 경우를 대상으로 합니다.)

    $lspci -k

    아래와 같은 부분이 확인되어야 합니다.

    06:00.0 Network controller: Intel Corporation WiFi Link 5100
    Subsystem: Intel Corporation WiFi Link 5100 AGN
    Kernel driver in use: iwlwifi
    Kernel modules: iwlwifi

    위의 정보에서 1) 네트워크 컨트롤러가 어떤 것인지, 2) 커널 드라이버가 어떤 것이 사용되고 있는지, 3) 커널 모듈의 이름은 무엇인지 확인할 수 있습니다. 즉, 위의 예에서는 Intel WiFi Link 5100이라는 이름의 하드웨어가 사용되고 있고, 커널드라이버는 iwlwifi가 사용되며, iwlwifi에 해당하는 모듈의 이름은 iwlwifi입니다.

    다음의 명령을 통해 인터페이스의 이름이 무엇으로 적용되었는지 확인합니다.

    $ipconfig

    기본적으로 아웃풋을 눈여겨보시면

    eth0       Link encap:Ethernet ~~
    inet addr:192.168.0.194 Bcast:192.168.0.255 Mask:255.255.255.0
    (추가적인 정보들)

    lo            (지금은 모르셔도 되는 추가적인 정보들)

    wlan0    Link encap:Ethernet Hwaddr~~
    (아래로 추가적인 정보들)

    위와 같이 등장합니다. 일반적으로, eth0에 해당하는 여러분의 장치명(예를 들어, enp2s0일 수도 있고, enp0s3일 수도 있고)은 유선 연결 인터페이스명에 해당하고 wlan0 부분에 해당하는 여러분의 장치명(예를 들어, wnp2s0 혹은 wlp0s2 등)은 와이파이 장치의 인터페이스 이름에 해당합니다. 이 인터페이스 이름을 잘 기억해두시거나 적어두신 후에 아래를 진행합니다.

  2. 인터페이스 켜기
    이제, 해당 장치의 인터페이스를 켜보도록 하겠습니다. 쉽게 설명하자면 장치를 켜는 것과 같다고 생각하시면 됩니다. 반드시 아래 예시의 wnp2s0부분에는 위에서 확인한 본인 와이파이 장치의 인터페이스 이름이 들어가야합니다. 아래에서 계속 동일합니다. 

    $ip link set wlp2s0 up
  3. 정보 입력
    1. 본인의 와이파이 이름을 모르는 경우
      $iw dev wlp2s0(본인 장치명) scan

      위의 명령어를 통해 와이파이 장치가 주변의 와이파이를 스캔할 수 있습니다. 결과물 중, 본인이 연결하고 싶은 와이파이 이름을 확인합니다.

    2. 본인의 와이파이 이름과 비밀번호를 모두 아는 경우
      1. ‘wpa_passphrase’라는 명령을 통해 내가 알고 있는 와이파이 이름과 비밀번호를 변형해줍니다. ‘$wpa_passphrase 와이파이이름 와이파이비번’을 해보시면 올바른 형태로 출력됩니다. 하지만 이것을 파일에 그대로 옮기는 것이 귀찮기도하고, 오타가 발생할 확률이 있기 때문에 아래와 같이 자동으로 처리하는 방법이 있습니다. 참고로, /etc/wpa_supplicant/본인드라이버명.conf 파일에 추가하면 관리하기가 편합니다. 다른 파일명으로 하셔도 무방합니다. 하지만 와이파이 연결을 진행할 때 해당 파일명을 정확히 기억하고 있어야 합니다.
        $wpa_passphrase my_wifi_ssid my_wifi_password >> /etc/wpa_supplicant/wlp2s0.conf
      2. 이제 아래 명령을 통해 실제로 와이파이를 켜보겠습니다. -B: background로 진행, -i: device 이름을 적어줍니다. 아래 예시에서는 wlp2s0, -c: 파일의 위치를 알려줍니다. 아래 예시에서는 2.에서 진행했던 경로를 사용하였습니다.
      3. $wpa_supplicant -B -i wlp2s0 -c /etc/wpa_supplicant/wlp2s0.conf
  4. IP 받기-DHCP를 이용하는 경우
    $dhcpcd
    or
    $dhcpcd wlp2s0(본인 장치명)

 

확인은 물론 아래와 같이 합니다.

$ping -c 3 www.google.com

 

끗!

logorealfinal

젠투 리눅스 설치

젠투 리눅스 설치 가이드

logorealfinal

지속적으로 업데이트 하고 있으므로, 링크를 통해 새로고침해주시기 바랍니다.

서문

기존 아치 리눅스 설치 가이드을 바탕으로 통일성을 가지면서 작성 중에 새로 작성하게 되었습니다. 어느 정도의 유사성은 가지고 있지만 도저히 통합된 카테고리에 분류하기 힘든 내용이 있었습니다. 아래는 새로 작성된 젠투 리눅스 가이드입니다.

젠투 리눅스를 처음 입문하는 분들이 우선은 시스템을 성공적으로 빌드해내기위한 내용에 초점을 맞추고 진행합니다. 따라서, 아예 GNU/LINUX 시스템이 처음이신 분들은 따라오기가 힘드실 수도 있습니다.

물론, 추후에 Linux from Scratch 의 설치 가이드도 제작하겠지만, 개인적으로 젠투 리눅스부터는 공부하기에도 상당히 좋은 배포판입니다. 따라서, 입문자들의 경우에는 무작정 커맨드를 복사/붙여넣기 하지 마시고 처음보는 명령어의 경우 검색을 통해 익숙하게 하는 것이 좋습니다.

이번 가이드를 따라오시면, OpenRC 기반의 KDE/Plasma를 데스크탑 환경으로 가지는 젠투를 완성하실 수 있습니다. 어느정도 익숙해지신 이후에, 본인의 환경이나 선호에 맞는 젠투로 빌드하시면 될 것 같습니다.

 

설치 전 유의사항

  1. 기본적으로 root환경 하에서는 커맨드 프롬프트가 ‘#’이고,
    사용자 환경일 때 ‘$’이지만 통일성을 위해 ‘$’로 표기합니다.
  2. 구성은 기본 설치 > XORG 설치 > PLASMA 설치 로 구분하였습니다.
  3. 젠투리눅스는 모든 것을 직접 컴파일하여 설치하기 때문에,
    CPU가 뒷받침되지 않는 경우 설치에 상당히 오랜 시간이 소요됩니다.
    workstation 수준의 PC에 데일리 머신으로 젠투를 써보실 생각이 아니시라면,
    컴파일 도중에 사용할 PC가 있는 경우에만 설치를 시도하실 것을 권장합니다.
    (필자의 경우, G1610 CPU(Dual Core)에서 KDE-PLASMA-apps 패키지 컴파일에 580분이 소요되었습니다.)
  4.  커맨드가 포함된 영역에서 ‘##’이후 적힌 것은 주석입니다. 여러분의 이해를 돕기위해 적은 것일뿐 명령어로 입력하시면 안됩니다.

 gentoo

기본 설치

ISO 다운로드 및 부팅 USB 제작

젠투 위키의 미러 페이지에 방문합니다.
Asia>KR>Daum Communications Corp>”http://ftp.daum.net/gentoo/
releases/ > amd64/ > autobuilds/ > current-install-amd64-minimal/ > install-amd64-minimal-날짜.iso 를 다운로드합니다.

USB를 꽂은 이후,

$lslbk
##usb에 해당하는 디바이스 이름을 확인합니다.
##보통 용량으로 확인하면 편합니다.

##/dev/sdb가 usb라고 가정하겠습니다.
$sudo if=~/Downloads/젠투파일명.iso of=/dev/sdb status=progress && sync

 

인터넷 연결 확인

$ping -c 3 www.google.com

파티션

계획

  • /dev/sda1 : bootloader가 설치될 공간 : 2M : BIOS Boot Partition
  • /dev/sda2 : ext2 : 128M : Boot System Partition
  • /dev/sda3 : swap : 원하는 사이즈 : Swap Partition
  • /dev/sda4 : ext4 : 나머지 용량 : Root Partition

본인이 선호하시는 프로그램을 이용해서 파티션을 나누어주시면 됩니다.

각 파티션별 코드는 fdisk 기준 ef/83/82/83 순 입니다.

 

파일시스템 생성

기존에 계획을 잡아두었던대로 포맷 및 파일시스템을 만들어주면 됩니다.

$mkfs.fat /dev/sda1
$mkfs.ext2 /dev/sda2
$mkswap /dev/sda3
$mkfs.ext4 /dev/sda4

##스왑도 켜두겠습니다.
$swapon /dev/sda3

 

루트 파티션 마운트

$mount /dev/sda4 /mnt/gentoo

 

날짜 맞추기

$date 030117532018

월/일/시/분/연도 순입니다.

 

stage 3 tarball 다운로드 및 설치

다운로드를 위해 젠투 폴더로 이동합니다.

$cd /mnt/gentoo

 

‘링크스’라는 커맨드라인 기반 브라우저를 활용해 다운로드합니다.

$links https://www.gentoo.org/downloads/mirrors/

 

iso를 다운로드 받을때 처럼
Asia>KR>카이스트~다음  중에 한군데 진입>
release>amd64>autobuilds>current-stage3-amd64>
stage3-amd64-날짜.tar.bz

 

압축을 해제합니다.

$tar xpf stage3-(tab) --xattrs-include='x.x' --numeric-owner

 

make.conf 환경설정

앞으로 아래에서 편집할 make.conf라는 파일을 굉장히 자주 마주치게 됩니다.
이 파일은 젠투의 상징이라고 할 수 있을 정도로 중요합니다.
지금은 우선, GCC의 옵션을 설정해주도록 하겠습니다.

$nano -w /mnt/gentoo/etc/portage/make.conf

CFLAG와 CXXFLAGS를 설정해주어야합니다.

아직 GCC 컴파일러의 최적화 옵션을 잘 모르신다고 가정하고 우선 일반적인 옵션만 넣어보겠습니다.(더 자세히 확인하고 싶으신 분들은 링크를 클릭하시면 됩니다.)

CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
#C++ 플래그로 C플래그를 동일하게 사용함
$ls /proc/cpuinfo

등의 커맨드를 통해 나오는 코어의 수를 아래 옵션으로 적어줍니다.

MAKEOPTS="-j2"

 

미러 선택

$mirroselect -i -o >> /mnt/gentoo/etc/portage/make.conf

South Korea에 해당하는 미러들을 선택한 후 OK 하시면 됩니다.

 

이빌드 레파지토리 정보 설정

/etc/portage/repos.conf/gentoo.conf 파일은 portage시스템이 활용하는 정보를 담고 있는 파일입니다. 이 것을 설치 이후 시스템에서도 활용하기 위해서 세팅을 해줍니다.

$mkdir --parents /mnt/gentoo/etc/portage/repos.conf
## 아직 존재하지 않는 repos.conf 디렉토리를 만들어줍니다.
$cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
##젠투 레파지토리 설정을 복사해줍니다.
##각 /mnt 이전에 띄어쓰기가 존재합니다. 즉 repos.conf 이후 띄우고, /mnt/gentoo~진행하시면 됩니다.

DNS 정보 복사

$cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
##마찬가지로 resolv.conf 이후 띄우고, /mnt/gentoo/etc/입니다.

 

마운팅

$mount --types proc /proc /mnt/gentoo/proc
$mount --rbind /sys /mnt/gentoo/sys
$mount --make-rslave /mnt/gentoo/sys
$mount --rbind /dev /mnt/gentoo/dev
$mount --make-rslave /mnt/gentoo/dev

 

젠투 환경 진입

$chroot /mnt/gentoo /bin/bash
$source /etc/profile
$export PS1="(chroot) ${PS1}"

 

부트 파티션 마운트

$mkdir /boot
##이미 존재한다고 할 수도 있습니다.
$mount /dev/sda2 /boot

 

portage 트리 업데이트

젠투는 패키지 설치를 할 때에 필요한 정보를 포티지 트리(portage tree)에 다 담아서 내가 가지고 있습니다. 따라서 A라는 패키지를 설치하고 싶을 때 포티지 트리에서 A라는 패키지의 이빌드(ebuild) 파일을 읽어낸 후, 시키는 대로 온라인에서 소스 코드를 다운받고 컴파일 하는 것입니다. 따라서, 내 PC에 저장된 포티지 트리가 최신이어야 최신 소스코드를 다운받아 설치할 수 있습니다. 이 과정에 해당합니다.

$emerge-webrsync
##rsync를 통할 경우, 대략 하루 전의 업데이트를 받아볼 수 있습니다.
##아예 최신의 시스템을 구축하고 싶다면, emerge --sync 를 사용하시면 됩니다.

 

news item 읽는 방법

eselect 커맨드는 젠투에 있어서 자주 사용되는 커맨드 중 하나입니다. 지금은 뉴스를 읽는데 활용하고 있고, 추후에는 프로파일 설정, 로케일 설정 및 커널 업데이트 시에 부팅할 때 선택할 커널을 결정할 때에도 eselct를 활용합니다.

당연한 말씀이지만, emerge가 제공하는 뉴스는 반드시 읽어보시기 바랍니다.

$eselect news list
$eselect news read (숫자추가가능)
##지금은 우선 넘어가겠습니다.

 

profile 설정

젠투의 특징 중 하나입니다. 제가 사용해보지 못한 과거의 젠투는 이 프로파일이 없었다고 합니다. 아래에서 더 자세히 설명드릴 USE flag를 사용자가 직접 모든 부분에 걸쳐 설정해야 했습니다. 하지만, 이 과정이 불필요하게 번거롭다고 생각하여 추가된 것으로 알고 있습니다.

사용자가 시스템을 구축할 방향을 프로파일로서 선택하면 그 시스템에 불가피하게 필요할 USE 플래그 등은 자동으로 세팅됩니다. (물론, 심볼릭 링크의 형태를 취합니다. 따라서, 사용자가 기본적으로 제공되는 프로파일 이외의 혼합 프로파일을 설정하는 것도 가능합니다.)

모든 설정과 설치가 완료된 이후에는 프로파일이 본인이 사용할 시스템의 방향과 정확히 일치하는 것이 좋지만 현재는 컴파일 하는 개수를 줄이기 위해 가장 기본적인 세팅을 하도록 하겠습니다.

물론, 이 글만 따라오셔도 두 번의 프로파일 설정이 더 진행되고, 결국은 plasma 프로파일을 선택하게 됩니다. 걱정하지 않으셔도 됩니다.

$eselect profile list
$eselect profile set default/linux/amd64/17.0
##혹은 해당 숫자를 입력해주시면 됩니다. ($eselect profile set 18)처럼 해주셔도 됩니다.

 

설치된 패키지 업데이트

$emerge -auDN @world
##꽤나 긴 시간이 소요됩니다. 하지만 이게 가장 짧은 편에 속합니다.

 

 

USE Flag 설정

$nano /etc/portage/make.conf

젠투는 모든 패키지를 선택할 때 어떤 기능을 포함하여 설치하고, 어떤 기능은 제외하고 설치할지 사용자가 선택할 수 있습니다.

이것은 $emerge –ask 혹은 $emerge -p (pretend) 등의 옵션을 통해 설치는 진행하지 않고 어떤 USE 플래그 설정이 가능한지 확인하는 과정을 통해 이루어집니다.

예를 들어서, A패키지를 설치할 때 $emerge -pv A 를 했고 그 결과가 아래와 같다고 하겠습니다.

[ebuild   N    ]sys-example/A-1.3.7 [1.3.6] USE=”abc def -ghi -jkl” 3,129kB

가장 좌측에 괄호 안에 알파벳 한글자로 표현되는 것들은 아래와 같습니다.

  • N : 새로운 패키지 입니다. 새로 빌드합니다.
  • NS : 새로운 버전일 경우, 이전 버전도 활용할 수 있도록 New Slot에 설치합니다. 모든 패키지가 지원하지 않지만, GCC등 버전이 상당히 중요한 경우에는 자동으로 지원합니다.
  • U : Upgrade(Update)합니다. 업데이트가 있어서 새로 빌드합니다.
  • R : Rebuild. 설치되어 있고, 업데이트도 없지만 요청할 경우 새로 빌드합니다. 보통 컴파일 과정에서 오류가 있다고 유추되거나, 혹은 에러코드가 컴파일 과정을 의미할 때 실행합니다.

그 이후, 본인이 설치하려는 패키지 이름과 버전이 등장합니다. 괄호 안의 버전은 지금 설치된 패키지가 있는 경우 그 패키지의 버전입니다.

용량을 제외하고 마지막 필드에 해당하는 것이 USE플래그 입니다. 색깔은 강조하거나 이쁘려고 넣은것이 아니라 실제로 저렇게 등장합니다.(오토컬러 옵션이 켜져있는 경우)

  • 빨강색 : 켜진 옵션, 포함하여 빌드합니다.
  • 파랑색 : 꺼진 옵션, 제외하여 빌드합니다.
  • 노랑색 : 새로 추가된 옵션입니다.(emerge -N 혹은 –changed-use 등으로 빌드할 때 자주 보입니다.)
  • 초록색 : 마지막 설치 이후 변경된 옵션입니다. 끝에 *이 붙습니다.
  • man emerge 참조바람

따라서 간혹, 까다로운 분들은 X, qt4, qt5 등 온갖 옵션을 make.conf 에 넣으려고 하십니다. 다만, 그럴 필요가 없습니다. USE 플래그는 상당히 견고한 계층 구조를 지닙니다. 기본적으로 프로파일 USE플래그가 적용된 이후, 그와 상반되는게 있거나 없는 것이 make.conf에 있으면 덮어 씌웁니다.(따라서, 전역 설정이라고도 부릅니다. Global) 마지막으로, 개별 패키지에서만 사용하거나, 제외하고 싶은 플래그는 따로 적용할 수도 있습니다. 그럴 경우 전역에서 이 패키지만 설정된 USE 플래그를 다시 덮어씌웁니다. 즉, 전역으로 반드시 설정해야하는 변수만 make.conf에 넣어주시고, 개별로 필요하거나 필요 없는 경우는 각 패키지 설정에 해주시면 됩니다. 다음은, 패키지별 설정을 하는 방법입니다.

예를 들어, make.conf파일에 이미 C옵션은 사용할 것으로 설정했는데

##예를 들어, make.conf 파일에서
USE=" blah blah -blah c"

B패키지의 경우 설치하더라도 C옵션은 반드시 끄고 싶다고 합시다. 아래와 같습니다.

$echo 'sys-example/b -c' >> /etc/portage/package.use
##package.use가 디렉토리라고 오류를 뿜으면 아래와 같습니다.
$echo 'sys-example/b -c' >> /etc/portage/package.use/package.use

##더 까다로운 사용자의 경우에는 패키지별 파일을 생성후 거기서 관리하기도 합니다.
$touch /etc/portage/package.use/sys-example/b
$echo 'sys-example/b -c' >> /etc/portage/package.use/sys-example/b

이것 저것 활용해보았지만, 역시 가장 좋은 노하우는

  • 전역 변수 최소화
  • 개별 변수 생성시
    • 보기 편하게(개별 파일 설정, 아니면 최소한 패키지 트리 생성)

입니다.

자세한 설명은 링크를 클릭.(프로파일 별 설정된 USE flag 보는 방법 등은 생략합니다.)

타임존 설정

$ls /usr/share/zoneinfo
$echo "Asia/Seoul" > /etc/timezone
$emerge --config sys-libs/timezone-data

 

로케일 설정

$nano -w /etc/locale.gen
##ko_KR.UTF-8 UTF-8
##추가도 가능
$locale-gen

$eselect locale list
##원하는 언어의 해당 숫자를 확인(en_US.utf8 등)
$eselect locale set 3

 

설정 업데이트 및 프롬프트 재수정

$env-update && source /etc/profile && export PS1="(chroot) $PS1"

 

커널 설치

$emerge --ask sys-kernel/gentoo-sources

1.직접 설치

커널 설치를 안해보신 분들은 아래 2.젠커널 사용을 추천합니다. 또, 방법이 처음이신 분들은 링크를 클릭하신 후 진행하기 바랍니다.

$emerge --ask sys-apps/pciutils

$cd /usr/src/linux
$make menuconfig
##아래를 보면서 설정을 진행합니다.

 

필수로 설정할 것들

xorg를 위한 옵션

  • Device Drivers >
    • Input device support >
    • <*>Event interface
  • Device Drivers >
    • Graphics support >
      • Frame Buffer Devices >
        • <*> Support for frame buffer devices >
        • 나머지는 전부 사용하지 않음으로 해주시면 됩니다.
      • Console disply driver support >
        • <*> Framebuffer Console Support

nVidia 세팅

  • Device Drivers >
    • Graphics support >
      • <M/*> Nouveau (nVidia) cards

 

AMD/ATI Radeon 세팅은 링크를 참조해주시기 바랍니다.

 

2.젠커널 사용

$emerge --ask sys-kernel/genkernel
$nano -w /etc/fstab

##내용에 아래를 추가
/dev/sda2    /boot   ext2   defaults   0 2

$genkernel all
##일부 설정은 꼭 확인해야 겠다 하시면 $genkernel --menuconfig all하시면 됩니다.

##혹시 모르니 리눅스-펌웨어 추가 설치
$emerge --ask sys-kerenl/linux-firmware

 

시스템 설정

파일시스템테이블 설정

$nano -w /etc/fstab

##내용에 아래를 추가
/dev/sda2    /boot    ext2    defaults,noatime    0 2
/dev/sda3    none     swap    sw                  0 0
/dev/sda4    /        ext4    noatime             0 1

 

각종 기타 세팅

$nano -w /etc/conf.d/hostname
$nano -w /etc/conf.d/net
$nano -w /etc/conf.d/net

 

네트워크를 위한 세팅

$emerge --ask --noreplace net-misc/netifrc

$ifconfig
##본인 인터넷 드라이버의 이름을 확인, 예- enp3s0

$nano -w /etc/conf.d/net

##DHCP를 사용하는 경우, 아래의 내용을 추가하되 본인 드라이버의 이름으로
config_enp3s0="dhcp"

 

부팅시 인터넷 연결 설정

$cd /etc/init.d
$ln -s net.lo net.enp3s0 
##본인 드라이버의 이름을 넣어야 합니다.
$rc-update add net.enp3s0 default

 

호스트 파일

$nano -w /etc/hosts

 

루트 계정 비밀번호 설정

$passwd

 

기본적으로 필요한 앱들 설치

$emerge --ask app-admin/sysklogd
$rc-update add sysklogd default

$emerge --ask sys-process/cronie
$rc-update add cronie default

$emerge --ask sys-apps/mlocate

$emerge --ask net-misc/dhcpcd

##와이파이 사용하셔야 하는 분들
$emerge --ask net-wireless/iw net-wireless/wpa_supplicant

 

부트로더 설치

$emerge --ask --verbose sys-boot/grub:2
$grub-install /dev/sda
$grub-mkconfig -o /boot/grub/grub.cfg
##추후 GRUB관련 설정을 변경하거나 리눅스 커널을 업데이트 했을 때에도
##활용하는 명령어입니다.

 

설치 완료 후 재부팅 준비

$exit
$cd
$umount -l /mnt/gentoo/dev{/shm,/pts,}
$umount -R /mnt/gentoo
$reboot

linuxlogo

성공적으로 재부팅이 되셨다면 로그인 하라는 프롬프트가 뜰 것입니다.

축하드립니다. 젠투 리눅스의 설치를 완료하셨습니다.

사실, 아직 해야할 것들이 남았습니다.

 

계정 생성

root로 로그인
$useradd -m -G users,wheel,audio -s /bin/bash 원하는이름
$passwd 적으신이름

 

처음에 받았던 타르볼 제거

$rm /stage3(tab)

 


xorg-logo

XORG 를 위한 준비

 

프로파일 설정

$eselect profile list

##desktop 이 포함된 프로필을 선택합니다.
##예를 들면, default/linux/amd64/17.0/desktop 의 숫자를 기억합니다.

$eselect profile set 18
$emerge --changed-use --ask --deep @world

커널 설정

위에서 커널 설치를 직접 하신 분들은 준비가 되어 있습니다. 젠커널을 사용하신 분들은 아래를 참조하시면 됩니다.

xorg를 위한 옵션

  • Device Drivers >
    • Input device support >
    • <*>Event interface
  • Device Drivers >
    • Graphics support >
      • Frame Buffer Devices >
        • <*> Support for frame buffer devices >
        • 나머지는 전부 사용하지 않음으로 해주시면 됩니다.
      • Console disply driver support >
        • <*> Framebuffer Console Support

nVidia 세팅

  • Device Drivers >
    • Graphics support >
      • <M/*> Nouveau (nVidia) cards

AMD/ATI Radeon 세팅은 링크를 참조해주시기 바랍니다.

make.conf 파일 준비

$portageq envvar INPUT_DEVICES
##어떤 인풋 디바이스들이 있는지 확인한 후,

$nano /etc/portage/make.conf
##맨 아래에 작성해줍니다. synaptics는 필요한 경우 추가합니다.
INPUT_DEVICES="libinput synaptics"

##그래픽 카드 정보를 입력합니다.
VIDEO_CARDS="nouveau"
##AMD/ATI 카드의 경우 아래로 입력합니다.
VIDEO_CARDS="radeon"

##혹 이 파트의 설정이 모두 끝났지만, 작동이 원할하지 않은 경우에
##아래를 설치해줍니다.
$emerge --ask x11-base/xorg-drivers

 

xorg 서버 설치

$emerge --ask x11-base/xorg-server
##꽤나 긴 시간이 소요됩니다.
##하지만 아직도 더한 것들이 남아있습니다.

$env-update
$source /etc/profile

 


 

kde-plasma-logo

KDE5 – PLASMA Desktop Environment

 

프로파일 변경

$eselect profile list

##default/linux/amd64/17.0/desktop/plasma 의 숫자를 기억합니다.
$eselect profile set 18 
$emerge -auDN @world
##상당한 시간이 소요됩니다.

##끝난 이후, 아래의 패키지들이 설치되어있는지 확인해야 합니다.
##패키지 버전들 사이에 'installed'가 보이거나, 혹은 좌측에 'R'이라고 
##Rebuild 예정이라면 설치가 완료된 것입니다.
##확인할 패키지들 입니다.
##<Services> 총 3개
#dbus
#polkit
#udisks

##<Device manager> 둘 중 1개
#euedev 혹은 udev

##<Session tracker> 1개
#consolekit

 

플라즈마 설치

$emerge --ask kde-plasma/plasma-meta
$echo 'kde-plasma/systemsettings classic' >> /etc/portage/package.use/systemsettings
$emerge --ask --changed-use kde-plasma/systemsettings

##SDDM이 설치 되었는지 확인합니다.
##설치된 경우 아래를 진행합니다.

$usermod -a -G video sddm
$nano -w /etc/conf.d/xdm

##해당 줄을 찾아 아래와 같게 만들어줍니다.
DISPLAYMANAGER="sddm"

$rc-update add xdm default

##이대로 플라즈마 환경에 진입해보면 사용이 힘들정도로, 아무것도 존재하지 않습니다.
##최근 KDE 프로젝트에서는 데스크탑 환경의 패키지에 있어서
##Desktop/Application/Framework 를 구분하였습니다.
##Framework의 경우 필요한 것들이 의존성으로 묶여 설치되기 때문에 상관없지만
##Application을 설치해줄 필요가 있습니다.

$emerge --ask kde-apps/kde-apps-meta
##필자의 경우 580분 정도가 소요되었습니다.(G1610 CPU/Dual Core)

 

모두 완료 되었습니다.

다만, vim,sudo,firefox,chromium 등 어떤 것도 따라오지 않습니다.

따라서, 사용자의 입맛에 맞게 설치해주시면 됩니다.

logorealfinal

 

공부해야하는 것들 정리-책들

desk

‘[숫자]’는 개인적인 우선순위.

  1. Computer System
    • [2]Computer System Architecture
    • [3]Computer Systems : A Programmer’s Perspective
    • [0]Introduction to Computing Systems
    • [1]The Art of Computer Programming
    • [3]Structure and Interpretation of Computer Programs
  2. Data Structures
    • [3]Notes on Data Structues and Programming Techniques
  3. Algorithms
    • [2]Algorithms
    • [1]Algorithms in C
    • [0]Algorithms Unlocked
    • [0]Introduction to Algorithms(CLRS)
  4. OS
    • [2]Modern Operating Systems
    • [0]Operating System Concepts
    • [2]Operating Systems Design and Implementation
    • [1]Operating Systems : Three Easy Pieces
  5. Kernel
    • [0]Linux Kernel Development
    • [0]Understanding the Linux Kernel
    • [1]Linux Device Drivers
    • [1]Linux Kernel in a Nutshell
    • [2]Linux System Programming
    • [2]The Linux Programming Interface
    • [3]The Unix Programming Environment
  6. Linux General
    • [1]Introduction to Linux
    • [3]Linux Bible
    • [3]Linux from Scratch
    • [5]Linux Inside
  7. Programming Languages
    1. General
      • [3]Programming Language Pragmatics
    2. Assembly Languages
      • [1]Intel Assembly Language
    3. C
      • [0]C Programming : A Modern Approach(KNK)
      • [0]The C Programming Language(KNR)
      • [1]C : A Reference Manual
    4. C#
    5. JAVA
      • [3]Head First Java
  8. Compilers
    • [1]Compilers Principles, Techinques And Tools
    • [2]Engineering a Compiler
    • [3]Modern Compiler Implementation in Java
  9. Network
  10. Bash
    • [3]Bash Reference Manual
    • [2]BASH Programming – Introduction HOW-TO
  11. etc
    • [3]Cracking the Coding Interview
    • [1]Mathematics for Computer Science
    • [1]Object Oriented Software Construction
    • [5]Small Talk Overview
    • [1]Type Systems for programming Languages
    • [2]VI improved
    • [3]Linkers and Loaders
    • [3]Just For Fun
  12. BookMarked Webpages
    • OSDevWiki
    • Linux Kernel Newbies

 

logorealfinal

시스템 언어 설정 정리

linuxlogo

아치 리눅스 설치 과정에서

$locale-gen

이 있고,

$local.conf

파일을 수정하는 단계가 있습니다.

locale-gen의 경우 language_territory.codeset 의 구성을 가지고 사용할 언어와 현재 지역, 언어의 코드셋을 지정하는 것입니다. 따라서, 설치 과정에서 ‘en_US.UTF-8’의 주석을 제거할 경우, english(영어)를 사용하면서, US(미국)에서, UTF-8 코드셋을 사용하겠다는 뜻이 됩니다. 따라서, 추가로 여러가지 주석을 더 제거해도 큰 문제가 없습니다. 예를 들어 ‘ko_KR.UTF-8’의 주석을 제거할 경우 한국어를 사용하며 한국에 있고, UTF-8코드의 한글을 사용하겠다는 뜻입니다(근데, /etc/locale.gen 파일에서 너무 아래에 있어서 그냥 안지우곤 합니다.)

locale.conf의 경우에는 시스템 전반에서 사용하는 언어를 의미합니다. 따라서

$echo "LANG=en_US.UTF-8" >> /etc/locale.conf

라고 하면, 언어를 영어로 미국지역.UTF-8코드셋으로 사용하겠다는 의미가 되어, 디렉토리 등의 모든 시스템 언어가 영어로 설정됩니다.

$export "LANG=en_US.UTF-8"

이것은 별도로, 현재 쉘에서 진행되는 모든 과정을 저 언어 세팅으로 변경하겠다는 뜻입니다.

 

(한글 입력 방법이 궁금하신 분들은, 설치 과정 가이드를 클릭하셔서 목차>”한글 입력”부분을 참고하시면 됩니다.)

logorealfinal

usb 리눅스/윈도우 호환 포맷

linuxlogo

리눅스 시스템에서 USB를 어떤 파일시스템으로 포맷해야 윈도우즈와 문제가 없이 호환이 될까요? 이전에 NTFS로 포맷했다가 리눅스에서 권환 관련 설정으로 애먹은적이 있어서 포스팅합니다.

각 파일 시스템별로 최대 크기나 파일 크기의 한계가 다르기 때문에 포맷하기전에 잘 확인하셔야 합니다!(파일시스템 정리 링크)

간단하게 다시 정리해드리면 아래와 같습니다.

  1. NTFS : 최근 윈도우 시스템에서 사용하는 파일시스템입니다.
    1. 최대 파일 크기 : 충분(상업용으로 사용 가능한 드라이버의 용량보다 큼)
    2. 최대 볼륨 크기 : 16EB
  2. HFS+ : 애플에서 사용하는 파일시스템입니다.
    1. 최대 파일 크기 : 충분(상업용으로 사용 가능한 드라이버의 용량보다 큼)
    2. 최대 볼륨 크기 : 8EB
  3. APFS : HFS+ 대체하고자 개발된 파일시스템입니다.
    1. 최대 파일 크기 : 충분(상업용으로 사용 가능한 드라이버의 용량보다 큼)
    2. 최대 볼륨 크기 : 16EB
  4. FAT 32 : NTFS 이전 윈도우즈의 기본 파일시스템입니다.
    1. 최대 파일 크기 : 4GB
    2. 최대 볼륨 크기 : 8TB
  5. EXT 2,3,4 : 리눅스의 기본 파일시스템들입니다. 아래는 EXT 4 기준
    1. 최대 파일 크기 : 1EB
    2. 최대 볼륨 크기 :  16TB

각 배포판별 호환여부를 확인하시는게 올바르지만 기본적인 관점에서 봤을 때 리눅스는 APFS정도 제외하고는 무난하게 호환이 가능합니다. 다만, NTFS는 위에서도 언급했듯이 자동 usb 마운트로는 권한에 문제가 생겨서 파일 생성이나, 삭제 등에 번거로움이 있으니 피하신는 것도 좋습니다. 문제는 윈도우즈나 APPLE의 호환 여부입니다. 윈도우즈의 경우 위의 번호목차에서 3번부터 아래로는 호환이 되지 않습니다. 물론, 5.EXT 2,3,4 들의 경우에는 추가 소프트웨어를 통해 호환이 가능하지만 그런 번거로움은 우리가 원하는 것이 아니죠.

그리고 본인이 관리하는 파일들의 크기도 염두해두셔야합니다. 큰 크기를 가지는 각종 동영상(?) , 혹은 전문 사진 작업을 위한 파일 등을 관리하셔야 할 경우에는 FAT32의 경우 개별 파일의 크기가 최대 4GB이기 때문에 적합하지 않습니다.

여러가지 상황을 종합해 보았을 때 윈도우즈 PC와 리눅스 PC를 오가며 작업하셔야 할 때에는 FAT32가 가장 무난한 것 같습니다. FAT32 파일시스템의 경우 공개된지 기간도 오래되어 거의 모든 OS와 호환이 지원됩니다. Windows는 당연하고 MacOS, LINUX, Playstation, Xbox One까지 호환되는 것으로 알려져 있습니다.

그럼, 리눅스 환경에서 USB를 포맷해 보겠습니다.

$lsblk
//출력된 결과에서 usb 장치의 이름을 정확히 확인합니다.
$sudo wipefs --all /dev/sdb
//usb 장치의 이름을 정확히 확인하셔야 합니다.
//'/dev/sdb' 의 내용을 모두 지웁니다.
$sudo mkfs /dev/sdb
//시간이 소요됩니다. 기다리시면 됩니다.
$sudo cfdisk

‘DOS’ 라벨 선택

‘Linux Filesystem’ 타입 확인

$sudo mkfs.fat -F32 /dev/sdb1
//끝!

 

 

#각 배포판에서 사용하는 파일 매니저에서 usb에 마우스를 올리거나, 우클릭을 해보면 ‘안전하게 장치 제거’가 보입니다. 사용을 권장합니다.(혹은 $umount /dev/sdXn 추천!)

logorealfinal

리눅스 파일 시스템 정리

linuxlogo

파일 시스템에는 엄청나게 많은 종류가 있습니다. 각각 다룰 수 있는 총 드라이브의 크기, 각각의 파티션 볼륨의 최대 크기, 파일 이름으로 지정할 수 있는 길이 등이 천차만별입니다. 그 중에서 일부를 간략하게나마 정리해보도록 하겠습니다.

  1. 마이크로 소프트 계열
    1. FAT(File Allocation Table)
      1. FAT12
        1. MBR identifier
        2. 최대 볼륨 크기 :16Mib
        3. 최대 파일 크기 : 최대 볼륨 크기
        4. 최대 파일 개수 : 4068
        5. 최장 파일 이름 : 8.3filename
      2. FAT16
        1. MBR identifier
        2. 최대 볼륨 크기 : 4Gib(?)
        3. 최대 파일 크기 : –
        4. 최대 파일 개수 : 65,536
        5. 최장 파일 이름 : 8.3 filename
      3. VFAT
        1. 위의 파일 시스템이 갖는 파일 이름 길이의 한계를 극복하고자 만들어짐
        2. 기존의 파일 시스템과 하위 호환을 유지함
        3. 255 글자, 공백, 마침표를 지원
        4. Windows 95 이후 등장
        5. 실제로는 긴 이름으로 파일 생성시 Windows 95이상을 위한 파일하나와 약식 제목으로 하는 파일 하나(Windows DOS 호환 목적)이 생성됨
      4. FAT32
        1. MBR identifier
        2. 최소 볼륨 크기 : 4.5Kib ~ 32Mib
        3. 최대 볼륨 크기 : 2Tib
        4. 최대 파일 크기 : 4Gib-1(4,294,967,295 bytes) with LFS
        5. 최대 파일 개수 : 268,173,300
        6. 최장 파일 이름 : 8.3 filename
        7. 기타 : UEFI 부팅을 위해 필요한 ESP에서 필요로 하는 파일 시스템.
      5. exFAT(EXtended File Allocation Table)
        1. 2006년 11월 마이크로소프트에 의해 공개
        2. USB나 SD 카드에 적합한 파일시스템 목적
        3. 최대 볼륨 크기 : 256Tib
        4. 최대 파일 크기 : 최대 볼륨 크기
        5. 최대 파일 개수 : 디렉토리당 2,796,202
        6. 최장 파일 이름 : 255 UTF-16
    2. NTFS
      1. 최대 볼륨 크기 : 256Tib
      2. 최대 파일 크기 : 최대 볼륨 크기
      3. 최대 파일 개수 : 4,294,967,295
      4. 최장 파일 이름 : 255 UTF-16
  2. 애플 계열
    1. HFS
    2. HFS+
    3. APFS
  3. 유닉스/리눅스 계열
    1. UFS(Unix File System)
      1. 최대 볼륨 크기 : 8Zib
      2. 최대 파일 크기 : 최대 볼륨 크기
      3. 최장 파일 이름 : 255 bytes
    2. ext2(Second EXTended filesystem)
      1. 1993년 2월 리눅스와 함께 공개
      2. 최대 볼륨 크기 : 2~32Tib
      3. 최대 파일 크기 : 16Gib~2Tib
      4. 최대 파일 개수 : 10^18
      5. 최장 파일 이름 : 255 bytes
    3. ext3(Third EXTended filesystem)
      1. 2001년 11월 리눅스 2.4.15와 함께 공개
      2. 최대 볼륨 크기 : 4Tib~32Tib
      3. 최대 파일 크기 : 16Gib~2Tib
      4. 최대 파일 개수 : 가변적
      5. 최장 파일 이름 : 255 bytes
    4. ext4(Fourth EXTended filesystem)
      1. 첫 등장(unstable version) 2006년 10월 10일 리눅스 2.6.28과 함께 공개
      2. 최대 볼륨 크기 : 1Eib/권장 : 16Tib
      3. 최대 파일 크기 : 16Tib
      4. 최대 파일 개수 : 40억개(가변적)
      5. 최장 파일 이름 : 255 bytes
  4. XFS
  5. btrfs
  6. VMFS
  7. ZFS 등

 

 

logorealfinal

리눅스에서 Shell 환경, ‘>’와 ‘>>’의 차이

linuxlogo

‘~/Documetns/test.txt’ 파일이 있다고 가정합시다.

‘test.txt’ 에는 이런 내용을 적어두었습니다.

for test

ABC &

123

 


먼저, 아래의 명령어를 실행해 보면,

$echo 'Something' > ~/Documents/test.txt

다시 파일을 열어보겠습니다.

Something

‘echo’로 주어진 내용이 ‘test.txt’의 내용을 모두 삭제하고 적혀 있습니다.

‘>’를 한개만 사용했을 때에는 파일명이 이미 존재할 경우 파일의 (기존 내용을 지운 후)내용을 덮어쓰기합니다.(Overwrite) / 파일명이 존재하지 않을 경우, 파일을 생성 후 내부에 쓰입니다.


반면,

$echo 'Something' >> ~/Documents/test.txt

위 명령어를 실행후 ‘test.txt’를 열어보면

for test

ABC &

123

Something

맨 아래에 ‘echo’로 주어진 내용이 추가된 것을 볼 수 있습니다.

‘>>’로 두개를 사용할 겅우, 파일명이 이미 존재하면 내용을 추가합니다.(Append) / 파일명이 존재하지 않을 경우, 파일을 생성 후 내부에 쓰입니다.

logorealfinal

 

리눅스 배포판의 종류

 

0. 리눅스 배포판의 역사 개요

 

linuxlogo

위:리눅스의 마스코트인 펭귄 ‘Tux’

 

리눅스는 언제나 Kernel(커널)을 의미합니다. 흔히 ‘리눅스 OS’라고 표현하는 것은 ‘GNU/Linux’가 올바른 표현입니다.

1991년 Linus Toravalds(리누스 토르발즈)가 ‘Linux Kernel, ver.0.01’을 발표합니다. 이후 Richard Stallman(리처드 스톨먼)의 ‘GNU(GNU is Not Unix)’의 유틸리티 등을 포함하며 OS로 자리잡습니다. 극 초기(1992년)의 어려운 설치 과정, 패키지 관리 등의 한계를 보안하고자 ‘SLS(Softlanding Linux System)’가 등장합니다. 이 SLS를 기반으로 1993년 Slackware(슬랙웨어)가 나타나더니, Ian Murdock(이안 머독)이 지금까지 유명한 Debian(데비안)을 출시하게 됩니다. 데비안을 기점으로 Ubuntu(우분투) 등 엄청난 양의 배포판이 쏟아져 나오기 시작했고, 뿐만 아니라, 독립 진영에서도 Red Hat(레드 햇), Arch Linux(아치 리눅스) 등 다양한 배포판이 출시되게 됩니다.

좌 : Linus Torvalds(리누스 토르발즈), 우 : Richard Stallman(리처드 스톨먼)

#아래에서 등장할 배포판들의 소개에는 지극히 개인적이고 주관적인 의견이 포함되어 있습니다. 하지만, 사실 관계와 다르거나 잘못된 내용이 포함되어 있을 경우 댓글을 남겨주시면 관련 내용 확인 후 반드시 업데이트를 진행하도록 하겠습니다.
#아래에서 등장할 배포판은 수도 없이 많은 GNU/LINUX 배포판들중 극히 일부에 속합니다. 더 많은 배포판이 출시되어있는 것도 분명히 알고 있고, 또, 본인이 사용하는 배포판이 아래에 없을 수 있습니다. 이에 대한 문의나 이메일은 더이상 받지 않았으면 합니다. 아래의 나열될 배포판들이 모든 GNU/LINUX 배포판인 것은 아님을 분명히 밝힙니다.
#BSD(Berkeley Software Distribution)은 유닉스 계열로 분류하고, 이 페이지에서 다루지 않습니다.

 


1. Rolling Release(롤링 릴리즈 타입)

정기적인 배포판이 존재하기 보다는, 언제든지 새로운 버전이 출시되면 업데이트가 가능한 배포판의 종류입니다. ‘Bleeding Edge’라고 하는 특징을 가지고 있습니다. ‘Bleeding Edge’란 흔히 ‘첨단 기술’로 번역되곤 합니다. 항상 최신 버전의 패키지(소프트웨어)를 사용하고 싶은 유저들이 애용하고 있습니다. LTS타입의 경우, 새로운 배포판이 출시되면 다시 다운로드 받아 설치하고 본인에게 맞는 환경 설정을 해야하는 부담이 있지만, 롤링 릴리즈 타입의 OS가 설치된 PC라면 누구라도 최신 버전의 커널과 패키지들을 항상 유지 관리할 수 있다는 장점이 있습니다. 안정성이 충분히 검증되지 않은 최신 기능과 특징을 설치하고 운용하는 특징상 간혹 문제를 일으키는 경우도 발생합니다.

 

1.1. Arch Linux(아치 리눅스)

7a9cb-13zj0sqjigkmcfohq0u2h5w

설치 과정이 난해하기로 악명이 높습니다(하지만, 잘 정돈된 가이드가 있다면 어떨까요?). 부팅 가능한 매체로 부팅이 성공하면 CLI에 던져지고, 유저가 직접 드라이브의 파티션, 포맷, BASE, 부트로더 등을 설치합니다. 유저가 PC의 모든 빌드를 직접 진행할 수 있는 만큼 자유도가 높습니다.

패키지 매니저로는 PACMAN(PACkage MANager)을 사용합니다. C로 설계된 PACMAN은 다른 배포판들의 패키지 매니저와 비교하여 속도와 유연함 면에서 앞선다고 생각합니다. AUR(Arch User Repository)의 존재덕분에 소스를 다운로드 받아 직접 빌드해 사용하는 것도 가능합니다.

한국 아치 리눅스 위키, 아치 리눅스 홈페이지, 아치 리눅스 포럼 등을 기반으로 하는 거대하고 강력한 커뮤니티는 아치 리눅스의 또다른 자랑거리중 하나입니다. 아치 리눅스를 사용중 문제가 발생하였을 경우 구글 검색어 앞에 ‘arch’를 붙여 검색하면, 다양한 해결 방법이 검색됩니다. 검색 결과가 마음에 들지 않거나, 내 상황에 맞는 해결 방법이 없을 경우에는 위의 커뮤니티에 접속해서 질문을 하면 커뮤니티 유저들이 기꺼이 도와줄 겁니다.

설치 과정에서 GUI 인스톨러의 부재로 인해 Manjaro(만자로), Antergos 등이 탄생하게 됩니다.

  • 계열 : 독립
  • 아키텍처 : x86_64
  • 데스크탑 환경 : 원하는 것
  • 설치 난이도 : 4/5

1.2. Manjaro(만자로)

  • 계열 : 아치 리눅스>
  • 아키텍처 : i686,x86_64
  • 데스크탑 환경 : KDE 등
  • 설치 난이도 : 3/5 (GUI 인스톨러 지원)

1.3. Antergos

  • 계열 : 아치 리눅스>
  • 아키텍처 : x86_64
  • 데스크탑 환경 : Cinnamon, Gnome, KDE 등
  • 설치 난이도 : 3/5 (GUI 인스톨러 지원)

1.4. Solus(솔루스)

  • 계열 : 독립
  • 아키텍처 : x86_64
  • 데스크탑 환경 : Budgie, Gnome, Mate 등
  • 설치 난이도 : 3/5

1.5. Gentoo(젠투 리눅스)

gentoo.png

젠투 리눅스는 보통 아치 리눅스보다 설치 과정이 더 어렵기로 유명합니다. 젠투 리눅스 사용자는 커널까지도 직접 컴파일하여 빌드합니다. 따라서 매우 유연하고, 본인이 가진 하드웨어에 최적화된 리눅스를 만드는 것이 가능합니다. PC의 연산 속도(CPU의 성능)가 떨어질수록 빌드 시간이 오래 걸린다는 단점이 있습니다. 패키지 매니저의 경우도 소스를 컴파일 하는 방식이다 보니 시간이 조금 더 걸리는 단점이 있습니다. 하지만, 본인이 리눅스의 깊은 곳까지 직접 관리하고 싶거나, 혹은, 직접 쌓아올리는 OS에 호기심과 매력을 느낀다면 사용해볼만한 가치가 충분합니다.

  • 계열 : 독립
  • 아키텍처 : i386 , i486 , i586 , x86_64 , arm 등
  • 데스크탑 환경: 원하는 것
  • 설치 난이도 : 4.5/5

# 5/5 를 주려고 했지만 LFS(Linux From Scratch)를 어떻게 분류해야할지 고민 끝에 4.5를 부여했습니다. LFS에 대해서는 맨 아래에서 설명하도록 하겠습니다.


2. LTS(Long Term Service)

LTS계열의 배포판들은 일정 시기를 기점으로 새로운 배포판이 출시 됩니다. 지난 배포판이라 할지라도 아직 서비스 지원 기간에 속한다면 사용하면서 지원을 받을 수 있습니다. LTS 사용자들은 신규 배포판 출시 때 업그레이드와 관련해 많은 어려움이 있었지만, 레드햇 등의 회사에서 다양한 방법으로 해결을 시도하였고 실제로 그런 불편함은 많이 해소되었습니다. 꼭 출시 직후의 새로운 기능과 특징을 사용해 보고 싶은 욕심이 없고, 안정적인 배포판을 사용하고 싶은 유저들이 사용하고 있습니다.

 

2.1. Debian(데비안)

debian.png

현대적 리눅스 배포판들 중의 원조라고 생각합니다. 90년대 초반 SlackWare(슬랙 웨어) 등과 함께 등장한 데비안은 아직까지도 그 단단한 기반에 많은 유저들을 확보하고 있습니다. 오래되고 가장 인기있는 OS 중 하나로 군림하다보니 패키지의 양도 굉장히 많습니다. 다만, 너무 안정적이려는 특성 때문에 새로운 배포판 출시까지의 기간이 길고 서버에서 주로 쓰이는 특징이 있습니다. 우분투라는 유명한 아들을 배출해 냈습니다.

  • 계열 : 독립
  • 아키텍처 : i386 , x86_64 , arm 등
  • 데스크탑 환경 : Gnome 등
  • 설치 난이도 : 3/5 (GUI 인스톨러 지원)

2.2. Ubuntu(우분투)

ubuntu

데비안의 아들. 영국 ‘캐노니컬’이라는 회사의 지원을 받고 있는 제품으로, 윈도우나 맥OS사용자가 리눅스 계열을 처음 사용하고자 할 때 자주 추천을 받게 되는 배포판 중 하나입니다. 설치 과정이 간편하고, 사용도 직관적임에도 불구하고 중요 기능들에 있어서 부족함이 없는 훌륭한 배포판입니다.

각종 데스크탑 환경을 기반으로 Ubuntu Mate(Mate), Kubuntu(KDE), Xubuntu(XFCE), Lubuntu(LXDE)로 뻗어나갔습니다.

  • 계열 : 데비안>
  • 아키텍처 : i386 , x86_64 등
  • 데스크탑 환경 : Unity , Gnome 등
  • 설치 난이도 : 1/5 (GUI 인스톨러)

2.3. Mint(민트)

우분투의 아들입니다. 깔끔하고 Windows와 유사한 데스크탑 환경으로 많은 사랑을 받고 있습니다. 초보자가 설치, 유지 관리하기에도 부족함이 없습니다.

  • 계열 : 데비안>우분투>
  • 아키텍처 : i386, x86_64 지원
  • 데스크탑 환경 : 시나몬 등
  • 설치 난이도 : 2/5 (GUI 인스톨러 지원)

 

2.4. Fedora(페도라)

fedora_logo

위 : Fedora 로고, 아래 : Red Hat사의 로고

redhat

 

Red Hat 사의 로고에 등장하는 Shadowman의 모자인 페도라에서 이름을 따왔습니다.

LTS의 특징상 새로운 배포판이 나오면 업데이트를 진행해야 합니다. 많은 발전으로 업데이트 도중 문제가 생기는 경우가 현저히 줄어들었습니다. 또, 가장 완벽에 근접한 오픈 소스 철학을 실현하고 있습니다.따라서, 공식 레파지토리에는 철저히 오픈 소스의 철학을 가진 패키지들이 실립니다. 하지만, proprietary(개인이나 단체가 소유권을 가지는, 오픈 소스는 아닌) 패키지를 설치하고자 한다면 그것도 가능합니다.

유명한 RPM 패키지 매니저를 사용합니다.

레드 햇의 소중한 아들입니다. 레드 햇 리눅스가 중단(2003년)되면서 페도라가 공식적으로 시작되었고, 페도라를 베이스 라인으로 하는 RHEL(Red Hat Enterprise Linux)이 레드 햇의 유일한 공식 지원을 받게 됩니다(페도라는 커뮤니티 기반으로 운영됩니다. 이런 운영 방식의 배포판을 ‘community driven distribution’이라고도 합니다). 리눅스 진영에서의 혁신적인 시도를 자주 시행한 훌륭한 배포판입니다. 레드 햇 리눅스가 서버에서 압도적으로 많이 활용되고 있는 만큼, 서버 관련 업종에 종사하시거나, 종사할 계획이 있는 분들은 페도라 리눅스가 적합하다고 생각합니다.(간혹 인터넷 커뮤니티에서는 RHEL의 베타 테스팅 버전이라고 놀림을 받기도 함)

  • 계열 : 독립, 레드햇 계열
  • 아키텍어 : i686 , x86_64
  • 데스크탑 환경 : Gnome 등
  • 설치 난이도 : 3/5 (GUI 인스톨러 지원)
(#개인적으로, 항상 돌아가려고 시도하지만 돌아가지 못하는 고향의 기분을 느끼게 하는 배포판입니다. 아주 매력적임에도 불구하고, 따지고 들어가보면 저에게는 아치 리눅스가 더 잘 맞는 듯 합니다. 아치 리눅스와 페도라는 끝까지 저를 고민에 빠지게 만드는 너무나 훌륭한 배포판입니다.)

 

2.5. RHEL(Red Hat Enterprise Linux)

레드햇 기업 지원 유료 리눅스. Red Hat Cetification Program(RHCP)이라고 불리는 레드햇 국제 자격증 과정으로도 유명합니다. 레드햇 서버 혹은 데스크탑 사용 자격이 있는가를 검증해주는 자격증 프로그램.

 

2.6. Open SUSE(오픈 수사)

유럽 발 리눅스 배포판.

  • 계열 : 독립
  • 아키텍처 : arm, x86_64
  • 데스크탑 환경 : 시나몬 등
  • 설치 난이도 : 3/5

 

2.7. Elementary OS(엘레멘터리 OS)

아름답기로 유명한 배포판. 맥 OS와 시각적 유사점이 많아서 맥 OS에서 리눅스 진영으로 넘어온 다수의 사용자를 흡수 하고 있는 것으로 보입니다.

  • 계열 : 데비안>우분투
  • 아키텍처 : x86_64
  • 데스크탑 환경 : Pantheon(판테온)
  • 설치 난이도 : 3/5

 


기타. LFS(Linux From Scratch)

책의 형태로 존재하는 배포판입니다. 사실 배포판이라고 불러야 하는지 애매한 위치에 있습니다. 홈페이지에서 LFS 부터 시작합니다. LFS를 완성하고 나면 BLFS(Beyond LFS) , CLFS(Cross-compile LFS) 등 다양한 줄기로 더 심화된 빌드를 할 수 있습니다. 보통, 리눅스 시스템 학습용으로 매우 훌륭하다는 평가를 듣고 있습니다. 리눅스 기반의 호스트 PC에서 GCC 등 OS설치를 위한 기본 준비를 모두 마친 후에 리부트를 통해 설치 환경으로 진입합니다. 일반적인 환경에서 사용하기에는 한계가 많아 보입니다. 리눅스 시스템에 대한 전반적이고 깊은 이해를 필요로 하는 경우에는 충분히 참고하거나 공부해볼만한 배포판인 것 같습니다.

  • 계열 : 독립
  • 아키텍처 : i386 , x86_64
  • 데스크탑 환경 : 원하는 것
  • 설치 난이도 : 5/5

 

 

logorealfinal