젠투 리눅스에 대하여

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

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s