젠투 리눅스에 대하여

gentoo

2주간 10여차례 젠투를 빌드하고 부수고 다시 빌드하고, 사용하기도 해보았으나, 도저히 메인 OS로 사용하기에는 취향이 맞지 않아서 아치로 돌아왔습니다. 어떤 점들이 불편했는지, 어떤 점들은 불편하지만 여전히 강점으로 작용하는지 분석해보려고 합니다. 최근 새로운 포스팅이 뜸했던 이유가…

아래의 내용은 모두 개인적인 견해이며, 객관적인 지표로 활용될 수 없음을 밝힙니다. 또한, 사용자가 젠투를 빌드하고, 사용했던 환경의 CPU는 ‘i3-6006U’이었으므로, 최소 4코어/4쓰레드 이상의 CPU 혹은 그렇지 않다 하더라도, 높은 클럭을 자랑하는 프로세서의 경우에서는 아래의 내용 중 일부의 불편은 없을 것으로 생각됩니다.

  1. 인기도 : [디스트로 워치/slant 기준] 물론, 디스트로 워치의 사용자 선호도 순위가 절대적이지 않습니다. 오히려 리눅스 커널 기반의 배포판은 사용자를 추적하지 않기 때문에 정확한 수치를 산출해내기가 어렵습니다. 다만, 이용자들의 방문,검색을 기반으로 하는 수치임에도 불구하고 현저한 차이가 난다는 것은 그 만큼의 선호도 격차가 존재할 수 있다는 ‘경향성’ 자체는 부정하기 힘들어 보입니다. (2017년 12월 5일 09시 현재 6개월간의 페이지 방문 순위를 기준으로) 아치 리눅스는 14위, 젠투 리눅스는 41위에 위치해 있습니다. 그리고 이 인기도는 ‘7.1. 커뮤니티’에서 설명할 커뮤니티 사용자 수에 영향을 주고 있는 것으로 보입니다.
  2. 컴파일 : (컴파일에 소요된 시간은 설치 도중, 그리고 emerge 명령어에 선행하여 ‘time’ 명령어를 삽입함으로써 확인할 수 있습니다.)젠투는 stage3 타르볼을 links등의 cli기반 웹브라우저를 통해 다운로드한 뒤 압축을 해제하여 기본 도구를 갖춘 상태로, 커널을 포함한 모든 빌드를 직접 컴파일 합니다. 이것은, 내 하드웨어에 직접적으로 영향을 미치는 작업으로써, 다른 배포판에 비해서 모든 것이 빌드되고 난 후 성능에 있어서 긍정적인 효과를 기대할 수 있습니다. 문제는 2가지 측면에서 발생합니다. 컴파일 자체에 들어가는 ‘시간’과, 그러한 ‘직접’ 컴파일 과정을 통해 얻을 수 있는 성능의 ‘기대치’ 입니다.
    1. 시간 : 우선, ‘i3-6006u’ CPU와 4G 램을 포함하는 ‘ASUS-X541U’ 랩탑으로 커널 빌드에 30여분 이상이 소요되었고(configuration 제외/순수 ‘make’, ‘make install’), ‘xorg-server’ 및 ‘KDE-plasma’의 경우에는 (메타)패키지 ‘fetch’ 이후 컴파일 하는데 최소 3~7시간이 각각 소요되었습니다. (심지어, 저것들은 GUI 환경 구축을 위한 필수적인 요소일 뿐, 추가적으로 여러 패키지들이 컴파일되어야 합니다.)물론, 제 경우에는 취침 동안 컴파일 하였기 때문에 생활에 직접적인 영향이 있지는 않았습니다만, 활용할 수 있는 다른 기기가 없는 경우에는 컴파일 되는 화면만 여러 시간 지켜보고 있어야 한다는 뜻이 되기도 합니다.
    2. 성능 : (이 부분에 있어서 가장 큰 논쟁의 가능성이 엿보입니다. 개인적인 견해로 생각해주시고, 비판은 환영합니다.)흔히 젠투의 컴파일을 통하여 얻을 수 있는 성능의 차이는 3%내외라고 합니다.(링크1/링크2) 과거의 경우 프로세서 성능이 현재와 비교하기 힘들만큼 부족했기 때문에 컴파일 시간이 상당하더라도 그를 통해서 얻을 수 있는 이점 또한 명확했다고 생각합니다. 웹 환경에서 검색을 해보더라도 2003~2009년 까지도 ‘젠투 vs 다른 배포판’ 구도의 성능 차이 질문이 상당 부분 차지합니다. 물론, 아치 리눅스가 런칭하였던 2002년 부터는 KISS의 철학을 가장 잘 구현해낸 대표적인 배포판 둘 답게 메인 대결 구도로 확산되어 왔습니다. 다만, 2010년대에 이르러서는 프로세서의 성능이 워낙 향상되는 바람에, 컴파일을 통한 성능 차이가 실존하는가에 대한 물음으로 바뀌는 경향을 확인할 수 잇습니다. 이전에 제시한 링크2를 보시면, 5개월 전에 이르러서는 일반 사용자 기준의 대부분 소프트웨어의 경우에 확연한 성능 차이는 없다는 답변 마저 보이고 있습니다. 개인적인 의견으로는 심지어 파이어폭스 브라우저의 경우에도 성능의 차이는 존재하기는 하는 것처럼 느꼈습니다. (그건 기분탓..). 그 성능의 차이가 3%이든지, 혹은 확연한 차이가 존재하든지 컴퓨터 하드웨어적인 측면에서 생각해보았을 때 각종 CPU flag를 사용하여 직접 컴파일한 배포판에서 성능의 차이가 ‘존재할 수 밖에 없음’을 부정할 수는 없을 것입니다. 문제는 그 성능의 차이가 컴파일에 소요된 시간을 상쇄해줄 만큼 큰지는 개인적인 선택에 맡겨질 것입니다.
    3. 추가로 따라오는 문제는 컴파일의 문제 덕분에 산업 환경에서 민첩하게 대응하기 힘들다는 점입니다. 집에서 워크스테이션으로 사용하면서 필요한 모든 패키지를 얼마나 오랜 시간이 걸리든 모두 컴파일 해두고 조금씩 수정해나가는 경우에는 문제가 없으나, 성능의 향상을 기대하는 랩탑의 경우에는 들고다니면서 업무상 필요한 새로운 소프트웨어가 발생할 경우, 그것을 컴파일해야하므로 업무가 일시정지되는 문제가 발생합니다. (이것은 ‘3. 바이너리 빌드에서 예로 드는 방법으로 해결할 수도 있습니다.)
  3. 바이너리 빌드 : 컴파일의 문제가 대두될 경우, 바이너리 빌드를 사용할 수 있습니다. 소프트웨어가 내 CPU아키텍처를 이용해 컴파일 된 바이너리 파일이 존재할 경우 그 바이너리 파일을 다운로드하여 설치할 수 있습니다. 제가 이런 방법이 있다는 것을 알게 된 후에 바로 든 생각 한 가지는 다음과 같습니다. “젠투 리눅스에서 바이너리 빌드를 활용한다면, 도대체 아치 리눅스와 다른 점이 무엇인가?”. 젠투 리눅스를 사용하겠다고 결정할 경우 가장 크게 작용하는 요인이 하드웨어에서 직접 컴파일 하는 부분일테고, 그렇다면 굉장히 시급한 경우가 아니고서는 바이너리 빌드가 가지는 매력은 전무하다고 가정해야 할 것 같습니다. 심지어는 ‘5. USE Flag’ 에서 보여드릴 ‘bindist’를 이러한 측면에서 꺼두고(-bindist) 사용하시는 분들도 계십니다.
  4.  MAKE.CONF : 일반 환경 아래에서 ‘/etc/portage/make.conf’파일이 있습니다. 이 파일이 젠투의 핵심에 해당한다고 할 수 있습니다. 여기에는 GCC 컴파일 과정에서 옵션으로 사용할 기본값을 제공할 수 있고, ‘5.USE Flag’에서 설명할 각종 플래그를 설정해둘 수 있습니다. 뿐만 아니라, 내가 사용할 ‘Input Device’, ‘Mirrorlist’, ‘grub-platform’ 등 젠투 빌드의 설계도면과 같습니다. 아주 매력적이고 재미있는 부분이었습니다. 다만, 아치의 경우 ‘/etc/makepkg.conf’에 유사한 대부분의 환경 설정을 해줄 수 있습니다. 젠투는 사용자의 빌드에 의존하여 설계를 시작하지만(gcc cpu flag의 경우에도 ‘-march=native’마저도 default로 제공되어 있지 않습니다.), 아치의 경우는 기본적인 설계 도면이 제공된다는 측면을 제외하면 차이점은 없어 보입니다. 아치 리눅스의 기본 설정 cpu-flag는 다음과 같습니다. (i3-6006u프로세서에서/ “-march=x86-64  -tune=generic -O2 -pipe -fstack-protector-strong -fno-plt”/ 이 내용을 활용하시면 본인 하드웨어에 최적화된 ‘make.conf’ 파일을 생성하기에 수월할 것으로 보입니다.
  5. USE Flag : ‘예시’ 라는 이름의 패키지를 설치할 때 이 패키지가 가지는 USE flag를 확인한 뒤 원하는 기능을 켜고, 끈 채로 컴파일할 수 있습니다. 예를 들어서, ‘예시’ 패키지가 가지는 USE flag가 ‘a’,’b’,’c’,’d’ 가 있을 때, 내가 원하는 ‘a b’ 기능은 ‘make.conf’ 파일의 USE flag 아래에 입력하여 포함한 채로 컴파일 할 수 있습니다.
    1. USE flag 설정의 체계 : 젠투의 USE flag는 세련된 계층 구조를 가지고 있습니다. ‘#eselect profile set n’을 통해서 설정한 프로필을 통해 크리티컬한 USE flag의 경우 default.use로 적용 됩니다(링크). 그 이후, 그 곳에는 포함되어 있지 않은 (대부분의 경우 유저 측면의 소프트웨어에서 제공하는) 소프트웨어의 USE flag중 사용하지 않을 것들은 make.conf/USE flag 부분에서 켜고 끌 수 있습니다. 다만, 예외로 할 패키지가 있는 경우에는 /etc/portage/package.use에 혹은 그 아래에 개별 패키지명을 제목으로 하는 파일을 생성하여 활용할 수 있습니다.(예시, ‘/etc/portage/package.use/example’ 파일 내부에 ‘test/example d e -f’와 같이)
    2. -c & 미포함의 차이 : 위의 경우에 어차피 c를 포함하지 않는 경우와 굳이 USE flag에서 ‘-c’로서 제외해주는 것에 어떤 차이가 있는지에 대해서 대표적인 두가지 차이를 볼 수 있습니다.(포럼)
      1. 일부 패키지에서 c를 사용하려고 하지만, 나머지의 대부분 경우에서 c를 제외하고 싶은 경우 : use flag에는 -c를 해둔 후, package.use에 원하는 패키지에만 c플래그를 켜실 수 있습니다.
      2. 패키지에서 default로 c를 켜는 경우 : 일부 패키지의 경우 그 기능이 필요하다는 이유 혹은 여러 다른 이유에서 일부 use flag를 켠채로 등장할 수 있습니다. 이럴 때에 직접 USE flag에서 -c플래그를 통해 꺼줌으로써 컴파일되는 것을 막을 수 있습니다.
  6. emerge -auDN @world : USE플래그에 수정을 하였거나, 업데이트를 하고 싶은 경우 사용합니다. 이게 가장 큰 걸림돌입니다. 내가 가진 소프트웨어들 중, 수정된 USE flag의 영향을 받거나, 업데이트가 있는 경우 재컴파일하거나 설치합니다. 잘 때 실행합니다.
  7. 그 외 : 아래의 내용들은 젠투를 포기하는데 크진 않지만 작게 영향을 미친 항목들입니다. 혹시 독자의 성향에는 중요한 판단 기준일 수 있으므로 포함하겠습니다.
    1. 커뮤니티 : 아치의 커뮤니티는 너무 거대합니다. 최대한 유사한 카테고리에 비슷한 시기에 올린 비슷한 질문에 대한 뷰수가 확연히 차이납니다. 아치 리눅스의 경우 재확인 하였을 때 6400뷰를 넘어서고 4페이지까지 밀려있었지만, 그만큼 답변도 활발하고 해결방법들이 여러가지로 제시되어 있었습니다. 다만, 젠투의 경우 2300뷰에 문제는 1페이지 첫 글로 유지되고 있다는 점입니다. (글 작성 현재까지도) 물론, 페도라 포럼에 비하면 두 커뮤니티 모두 어마어마한 강점을 가집니다. 글의 내용과 어긋나긴 하지만 페도라 포럼은 300뷰에 해결도 되지 않습니다. 아예 답변이 달리지 않더군요. 각 포럼의 링크를 제공해드리고 이 항목은 마치겠습니다. (아치 리눅스/젠투 리눅스/페도라 리눅스) (젠투 포럼/위키는 유독 접속 시 소요 시간이 길고, 간혹  DNS 에러가 발생하는데 왜 그런지 모르겠습니다;)
    2. UEFI 설치 : 다른 글에서 포스팅하려고 하지만 여기에 포함하는 것이 적합해 보여서 수정합니다. 젠투 미니멀 인스톨 iso의 경우에 마지막 확인했을 때 까지는 UEFI 인스톨을 지원하지 않습니다. UEFI로는 부팅이 되지 않아서 다른 UEFI 부팅이 가능한 설치 이미지를 이용해서 설치하셔야 합니다. (해당 방법은 링크를 통해 확인하시면 됩니다.) 본의 아니게, 젠투 리눅스를 아치 리눅스 설치 이미지로 설치한 진귀한 현상이 벌어졌습니다.

글은 여기서 마치겠습니다. 이 외에도 젠투가 가지는 강점이 더 있을 거라 사료됩니다. 짧은 경험이었고 저도 아직 공부할 부분이 많은 학생이기 때문에 적힌 내용이 편향되었거나, 오류가 있을 수 있습니다. 그런 부분은 지적해주시면 확인해보고 수정하도록 하겠습니다. 또, 추가하고 싶은 사항이 있으신 경우에 댓글 다시거나 이메일:talk@withjeon.com 으로 연락하시면 고려하여 추가하도록 하겠습니다.

logorealfinal

 

젠투 리눅스를 아치 리눅스 iso로 설치하는 방법

gentoo

많은 분들이 젠투 관련 포스팅을 할 때 머리말에 즐겨 쓰시는 것 같아서 저도 적어봅니다. 젠투 리눅스를 사용하고자 하시는 분이라면, 이미 리눅스 전반에 대하여 어느 정도 지식이 있다고 가정하겠습니다.

젠투 리눅스 공식 페이지의 “minimal-install.iso”파일의 경우 UEFI부팅을 지원하지 않습니다. 왜인지는 열심히 찾아보아도 정답을 찾지 못했습니다. 공식 핸드북에서는 UEFI부팅을 원할 경우 LiveDVD.iso를 다운로드 받아서 설치하라고 권장하는데, LiveDVD는 2016-07출시버전이 최신인데다가, 심지어 LiveDVD파일도 UEFI 부팅이 가능하지 않습니다.

포럼에서는 UEFI 부팅을 위해서 RescueCD를 사용하라고 합니다. 개인적으로는 “아치 리눅스 iso”파일을 이용해서 젠투를 설치하는 방법을 소개해드리겠습니다.

64비트, UEFI 설치를 가정합니다.

준비물

성공적으로 부팅이 가능한 archlinux.iso파일

다운로드 링크>하단>SouthKorea>ftp.kaist.ac.kr>
"archlinux-2017.11.01-x86_64.iso"다운로드(날짜는 변경가능)

usb에 구워줍니다.

#lsblk

#sudo dd bs=4M if=~/Downloads/arch(tab) of=/dev/sdb status=progress && sync

재부팅

재부팅 과정에서 F2등 바이오스/UEFI환경으로 진입합니다. UEFI설치를 진행할 예정이므로, BIOS로 진입되는 분들은 추가 설치가 불가능합니다.(오히려 그런 분들은, 공식 핸드북에서 설명하는대로 진행하시면 됩니다. BIOS환경에서는 minimal install iso가 더 낫습니다.) UEFI 환경으로 진입하시게 되면, 두가지를 다시 한번 확인하겠습니다.

>CSM-MODE : DISABLED

>SECURE-BOOT : DISABLED

부팅 완료 후

인터넷 확인

#ping -c 3 www.google.com

디스크 파티션

#gdisk /dev/sda

/dev/sda1 = EF00 = 512MB = /boot 에 마운트할 예정

/dev/sda2 = 8200 = 4G = swap

/dev/sda3 = 8300 = free space = /(root) 에 마운트할 예정

포맷

UEFI 를 위해선 ESP가 필요합니다. 부트 디렉토리에 마운트될 파티션의 경우 fat32로 포맷하셔야 합니다.

#mkfs.fat -F32 /dev/sda1

#mkfs.ext4 /dev/sda3

#mkswap /dev/sda2

#swapon /dev/sda2

마운트

#mkdir /mnt/gentoo

#mount /dev/sda3 /mnt/gentoo

#mkdir /mnt/gentoo/boot

#mount /dev/sda1 /mnt/gentoo/boot

젠투 설치 준비

날짜

#date 112111252017(월/일/시/분/년)

설치 환경 진입

#cd /mnt/gentoo

타르볼 다운로드

아치 리눅스에서는 “elinks”라는 브라우저를 제공합니다. 이것을 이용합니다.

#elinks https://www.gentoo.org/downloads/mirrors/

접속해서 화살표 아래키를 이용해 내려가다보면 미러 목록에서 아시아에 KR이 있습니다. 엔터를 통해 이동합니다. DAUM의 미러를 이용하겠습니다. http://ftp.daum.net/gentoo/에  접속해보시면 (폴더)releases>amd64>autobuilds>”current-stage3-amd64″>

stage3-amd64-20171116.tar.bz2“엔터>다운로드를 받아줍니다.>

아직 브라우저를 종료하지 마시고>Parent Directory를 계속 이용하여>아까 release를 들어갔던 디렉토리로 재이동합니다.(/gentoo)>snapshots>맨 아래로 내려가서>

“portage-latest.tar.bz2”를 다운로드 받습니다.

압축 해제

#tar xvjpf stage3(tab) --xattrs --numeric-owner

기다려줍니다.

#tar xvjpf port(tab) --xattrs --numeric-owner

이건 조금 짧은 편입니다.

MAKE.conf파일 수정

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

Cflag=”-march=native -O2 -pipe”

MAKEOPTS=”-j4″

MAKEOPTS의 경우에는 #nproc 명령어를 통해 출력되는 숫자를 입력하시면 됩니다.

미러 선택

아치 환경에서 설치를 진행하면서 mirrorselect 커맨드는 찾을 수 없다고 해서 위의 make.conf파일에 수동으로 입력해주었습니다.

GENTOO_MIRRORS=”http://ftp.daum.net/gentoo/ http://ftp.kaist.ac.kr/pub/gentoo/ http://ftp.lanet.kr/pub/gentoo”

그 이후로는 젠투 핸드북(아래 링크)의 내용과 동일하게 진행하시면 됩니다.

링크: 젠투 핸드북(Gentoo ebuild repository부터/한글 페이지 사용 가능)

필독!! [링크]

  1. 진행 중 proc 마운트 부분에서 : “#mount -o bind /proc /mnt/gentoo/proc” 를 사용
  2. /dev 까지 마운트 이후
    1. #test -L /dev/sdhm && rm /dev/shm && mkdir /dev/shm
    2. #mount –types tmpfs –options nosuid,nodev,noexec shm /dev/shm
    3. #chmod 1777 /dev/shm
  3. chroot 할 때
    1. #chroot /mnt/gentoo /bin/env -i TERM=$TERM /bin/bash
    2. #env-update
    3. #source /etc/profile
    4. #export PS1=”(chroot) $PS1″
  4. grub2때 핸드북에서 UEFI부분 잘 읽기

logorealfinal