본 글은 더 이상 업데이트 되지 않습니다.

새로운 블로그에 업데이트하고 있으니https://blog.seowonjung.com/index.php/2020/12/02/532 주소로 방문해주세요.


젠투설치 매뉴얼은, 공식 위키가 아주 잘 쓰여있는데다 한글 번역까지 되어있으므로 공식 매뉴얼을 기준으로 한다.

https://wiki.gentoo.org/wiki/Handbook:AMD64/Full/Installation/ko


사실 젠투를 설치할 정도면 이미 리눅스 사용이나 여러 운영체제를 설치하는 부분에 있어서는 충분한 지식이 있을 정도이니 기타 잡다한 설명들은 제외할 예정이지만, 그래도 순서대로 적어보고자 한다.  또한, 공식 위키에서는 설명되어있지 않지만, 내가 이번에 5번의 설치 과정에서 겪은 꼭 도움이 될만한 부분을 설명하고자 한다.


이전에 시작하기 글에도 설명했지만, 설치환경을 다시 한 번 언급하자면,

1. 리눅스 단독 설치

2. 유선 네트워크

3. systemd

4. multilib

5. KDE 5 Plasma

로 진행하고자 한다.  하나 더 추가하자면, 안정버전으로 설명할 예정이다.




1. 다운로드

먼저, https://gentoo.org/downloads/ 이 페이지에 가서 부팅 가능한 이미지인 Minimal Installation CD와 stage3 파일을 받는다.  Minimal Installation CD를 받고나면 이것을 부팅가능한 매체, USB나 CD에 굽는다.  그리고 stage3는 또 다른 usb 메모리 드라이브를 준비해서 넣어둔다.



2. 부팅

네트워크 케이블을 연결한 상태에서 위에서 만든 부팅 디스크로 부팅한다.  부팅이 완료되면 요즘의 젠투 부팅씨디는 알아서 DHCP를 이용하여 IP 주소를 받아오지만, 다시 한 번 확인해준다.

# ifconfig


IP 주소를 받아오지 못하거나 안한 것으로 보인다면, dhcp 명령어를 실행해서 주소를 받아온다.  참고로 아래 명령어에서 eth0 부분은 ifconfig를 통해서 나오는 이름을 참고하시면 되겠다.

# dhcpcd eth0



3. 파티션, 포맷

윈도우가 설치된 상태에서 리눅스를 설치하는 것은, 일단 적어도 파티션의 개념이 제대로 잡혀있어야 윈도우를 날리지않고 설치할 수 있고, 그렇지않으면 윈도우를 전부 날릴 확률이 높다.  따라서, 파티션이 무엇이고 이걸 어떻게 다루는지 안다는 전제 하에 핵심만 설명하자면,


a. 파티션은 굳이 여러개를 나눌 필요는 없다.

b. 하이버네이션 기능이 꼭 필요한 게 아니라면, 스왑파티션을 크게 잡을 필요는 없다.

c. UEFI / GPT를 사용하지 않는다면, /boot 파티션은 없어도 괜찮다.  만약 만든다면, 나는 개인적으로 boot에는 2기가 정도를 준다.


정도 되겠다.  fdisk나 parted를 이용하여 파티션을 나눠주면 되고, GPT 방식을 이용한다면 공색 매뉴얼을 필히 참고하시라고 권해드린다.  스왑파티션의 경우, 나는 개인적으로 스왑은 2기가 이상은 잡지않는 편인데 그 이유는, 파티션이 500메가 이상 사용된다는 의미는 이미 램이 심각하게 모자란다는 의미로 받아들이기 때문이다.  사실상, 램이 부족하지 않은 시스템에서 스왑이 돌아간다는 것 자체를 문제로 본다.  따라서, 2기가 이상은 아무런 의미가 없다고 본다.


파티셔닝이 끝나면 원하는 파일시스템으로 포맷을 해주자.  만약 /boot를 만들어줬다면 /boot에는 Ext2를 권장한다.  몇 가지 이유가 있는데, 일단 리눅스라는 운영체제에서 가장 오래되고 검증됐으며 비저널링 파일시스템으로서는 이견이 없기 때문이다.


루트 파티션과 스왑 파티션의 준비가 모두 끝났으면, 파티션들을 모두 마운트 해줘야한다.  마운트해주고 나서 미리 다운받아놓은 stage3 파일이 담긴 usb를 연결하여 복사 및 압축을 풀어준다.   stage3 파일이 모두 풀렸으면, 시스템이 사용할 가상 파일시스템들을 마운트 해줘야한다.

# mount -t 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


공식 위키의 디스크 준비 항목을 보고 그대로 따라하시면 되겠다.



4-1. 설치준비

공식 위키에서와는 다르게, 날짜/시간과 컴파일 옵션 설정은 당장 안해도 된다.

미러를 골라준다.

# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf


미러는 여러 개를 고를 수 있는데, 자신이 사는 지역과 가까운 곳에 있는 미러들을 선택해주면 되겠다.  이것이 다 됐으면, DNS 정보를 복사해준다.

# cp -L /etc/resolv.conf /mnt/gentoo/etc/


이제 chroot 명령어를 통해서 설치에 돌입한다.

# chroot /mnt/gentoo /bin/bash

# source /etc/profile


젠투 패키지 목록을 모아놓은 포티지를 설치해야한다.  그래야 어떤 패키지가 있는지 젠투가 알 수 있다.

# emerge-webrsync


공식위키에서는 다음 단계로 프로파일을 선택하라고 나오는데, 여기서 systemd를 선택하여 진행하면 100% 에러가 난다.  Circular dependency라고 하는, 의존성이 돌고도는 현상이 생긴다는 거다.  즉 다시 말하자면, util-linux를 설치하려면 systemd라는 패키지가 필요한데, 이 systemd를 설치하려면 util-linux가 필요한, 의존성 관계가 무한루프에 빠지게 된다.  따라서, 일단은 프로파일은 가장 기본인 1번 default/linux/amd64/13.0 * 이것을 선택한다.

# eselect profile list

eselect profile set 1


여기까지 했으면, 공식 위키에서 설치하라고 나오는 그 어떠한 패키지도 지금 현재는 설치하지마시길 권해드린다.



4-2. make.conf

/etc/portage/make.conf 파일은 젠투라는 배포판에 있어서 가장 핵심을 이루는 중요한 설정파일이다.  설정은 간단하며 내용물은 몇 안되는데, 까다로운 성격을 가진 유저들에게는 미치도록 스트레스 혹은 희열감을 주는 파일이 되겠다.


이 파일이 하는 일은, 앞으로 내 젠투 리눅스가 나아가야할 전체적인 시스템의 방향을 잡아주고, 내 하드웨어에 가장 최적화된 방법으로 시스템을 구성할 수 있게끔 설정을 하게해준다.  여기에 있어서 가장 핵심이 되는 설정은 USE와 CFLAGS인데, 하나씩 살펴보자.


먼저 CFLAGS는, 소스코드를 컴파일할 때 주는 옵션을 정의하는 곳이다.  내 컴퓨터가 인텔 i7 CPU를 장착했다면, 이 CPU가 가진 기능을 모두 활용하여 최대의 성능을 내게끔 한다거나 하는 일들이 가능한데, 그럴려면 CPU의 제원과 GCC라는 컴파일러의 옵션을 다 알아야하고, 이것이 일반적인 유저에게는 아주 어려운 일이다.  따라서, 젠투 커뮤니티는 "가장 보편적이고 안전한 옵션"을 제안한다.

https://wiki.gentoo.org/wiki/Safe_CFLAGS 이 페이지에 가면 다양한 CPU에 따른 CFLAGS를 제안하는데 예를 들어 내 CPU가 하스웰 Core i7이라면, CFLAGS="-march=haswell -O2 -pipe" 라는 옵션이면 충분히 무난하다라는 것이다.  여기에 CPU별 구체적인 명령어들을 CPU_FLAGS_X86이라는 옵션을 통해 정의할 수 있다.  젠투의 기본값은 CPU_FLAGS_X86="mmx sse sse2"로 설정되어있다.


하지만, "이건 너무 두루뭉실하지 않나" 하는 유저들이 있을 수 있기 때문에, 내 CPU가 가진 명령어셋을 검색/비교하여 최적화된 CFLAGS를 보여줄 수는 없을까? 하는 생각을 가진 유저들이 분명 있기 때문에 나온 명령어가 있다.  기본 명령어는 아니므로 설치를 해야한다.

# emerge -q app-portage/cpuid2cpuflags


설치가 완료됐으면 실행을 해보자.

# cpuinfo2cpuflags-x86

CPU_FLAGS_X86="aes mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"


이렇게 나온다.  이걸 그냥 복사해서 /etc/portage/make.conf 파일에 넣으면 된다.  너무 길고, 오타가 걱정되시면 아래의 명령어로 바로 붙여놓고 파일을 열어서 기본값으로 적힌 CPU_FLAGS_X86 라인을 삭제해주면 되겠다.

# cpuinfo2cpuflags-x86 >> /etc/portage/make.conf

# nano /etc/portage/make.conf

참고로, nano에서 파일을 저장하는 키는 Ctrl+x를 누르면 된다.



4-3. USE

USE 플래그는 젠투의 진입장벽을 높이는 주범이라고들 하는데, 그 이유는 USE를 너무 자세하게 설정하려고 하기 때문에 그렇다.  따라서, USE에는 취지에 맞게 최대한 global하게 설정하고, 패키지별 USE를 따로 설정해주는 것이 편하다.  개인적으로 추천하는 USE 플래그는 다음과 같다.

USE="bash-completion cjk unicode X -bindist"


bash-completion은, 만약 설치하려는 패키지가 BASH의 명령어 및 옵션 자동완성을 지원하는 경우 이것을 활성화하게되며, CJK는 동북아시아 3개국의 언어, Chinese, Japanese, Korean 언어 지원, UNICODE는 역시 마찬가지로 언어에 관계된 유니코드 설정, X는 GUI 환경인 X-Windows 지원, 그리고 마지막 -bindist 앞에 붙은 -는 on/off 스위치 같은 것인데, -를 붙이면 off 하겠다는 얘기다.  즉, bindist를 안쓰겠다는 의미인데, bindist (내 추측으로는 아마 binary distribution)는 특정 라이센스나 어떤 상황에 있어서 소스코드를 다운받아서 컴파일하지 않고, 그냥 미리 컴파일되어있는 패키지를 받아서 쓰겠다는 옵션인데, 이것은 젠투를 쓰고자하는 취지와 전혀 맞지않고, bindist로 받은 패키지들이 문제를 일으키는 경우가 종종 있다.


추가로 추천하는 USE 플래그가 있다면, 파이썬을 선호하는 유저라면 python, VIM을 주력으로 쓴다면 vim 문법지원 플래그인 vim-syntax 정도가 있겠다.  참고로 내 USE 플래그는 다음과 같다.

USE="bash-completion cjk ldap python ssl unicode vim-syntax X zsh-completion -bindist -gpm"


LDAP과 SSL은 개인적으로 직장에서 업무상 꼭 필요한 기능이기 때문에 넣었다.  이렇게 꼭 필요한 건 넣고, 필요없는 건 뺄 수 있는 점이 바로 젠투의 매력이겠지.


공식 위키에서는 -gtk -gnome qt kde 등이 예제로 있는데, GNOME을 쓴다고 굳이 -qt 할 필요는 없고, 오히려 개인적으로는 비추천한다.  GNOME 환경으로 구성해서 쓴다고해서 QT 기반 어플리케이션을 아예 안쓸 수도 없기 때문이기 때문인데, 예를 들자면 개인적으로 애용하는 XCA 같은 프로그램들은 GNOME 기반 앱인줄 알았는데 나중에 알고보니 QT기반이었다는 등...  요즘은 QT고 GNOME이고 한 가지만 지향해서 구성하는 건 좋지않다고 생각한다.



4-4. 기타 설정

/etc/portage/make.conf 파일의 나머지 설정을 할 차례다.  지금 굳이 안해도 상관없지만, 미리 하지 않았다가 나중에 시스템 전체를 다시 통째로 재컴파일해야하는 상황을 만들 수도 있기 때문에 지금 하는 게 낫다.


딱히 건드릴 건 없지만, ABI_X86="32 64" 항목을 넣어주는 것을 권장한다.  이것은, multilib 즉, 32/64비트 환경 둘 다 지원하는 바이너리를 빌드하도록하는 옵션인데, 일부 특정 패키지가 이 옵션을 요구한다.  그런데, "나는 완벽한 64비트 환경으로 쓰고싶은데" 라고 생각하는 유저들도 있을텐데, 이런 환경은 일반적으로 리눅스에서 전혀 권장하지 않으며, 공식 위키에도 이 부분에 대해서 설명하고 있다.

https://wiki.gentoo.org/wiki/Handbook:AMD64/Full/Installation/ko#Multilib_.2832.EB.B9.84.ED.8A.B8_.EB.B0.8F_64.EB.B9.84.ED.8A.B8.29


특히 nVidia 그래픽카드의 드라이버가 multilib를 요구하는데, 이것과 관계된 커널 모듈 및 기타 패키지들도 다 같이 요구되므로, 잘 모르는 상태에서 64비트 전용 환경을 구성하면 골치아파지므로 그냥 속편하게 multilib 환경으로 미리 구성을 해놓자.


참고로, ABI_X86="32 64" 항목을 넣어주면 stage3에 딸려오는 거의 모든 패키지를 재컴파일하므로 사실상 stage1부터 하는 것과 다름없어진다.


다음으로 MAKEOPTS라는 옵션이 있다.  이것은 젠투를 설치하려는 컴퓨터의 CPU가 가진 총 코어의 갯수를 적어주면 된다.  예를 들어, Core i7 970이라는 CPU는 물리 코어 6개에 논리 코어 6개로 총 12개의 코어가 있다.  따라서 MAKEOPTS="-j12" 라고 넣어주면 된다.  공식위키에서는, 총 코어갯수+1을 하라고 하는데, 사실 공식 영문위키에서는 +1을 하라는 의견이 없으며, 오히려 하단에 +1을 하는 것이 좋지않다라는 젠투의 공식 블로그 글을 링크해놓고 있다.

https://wiki.gentoo.org/wiki/MAKEOPTS

https://blogs.gentoo.org/ago/2013/01/14/makeopts-jcore-1-is-not-the-best-optimization/


X-Windows의 GUI 환경을 구축할 계획이 있다면, 그래픽카드와 장치를 적어주면 좋다.  사실, 안적어줘도 크게 상관은 없다.

VIDEO_CARDS="nvidia"

INPUT_DEVICES="evdev"


마지막으로, 지원언어를 설정해줄 수 있다.

LINGUAS="en ko"


이렇게 적어주면, 영어를 우선지원하고 다음으로 한국어를 지원하게 된다.  만약 순서를 바꾸면, GNOME 터미널이나 Konsole 등에서 각종 메시지가 한글로 나오게 된다.


이제 make.conf 파일을 총 정리해보자.  내 make.conf 파일을 올리는 것으로 정리를 마무리한다.


CFLAGS="-march=westmere -O2 -pipe"

CXXFLAGS="${CFLAGS}"

CHOST="x86_64-pc-linux-gnu"

MAKEOPTS="-j12"

CPU_FLAGS_X86="aes mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"

ABI_X86="32 64"


USE="bash-completion cjk ldap python ssl unicode vim-syntax X zsh-completion -bindist -gpm"


PORTDIR="/usr/portage"

DISTDIR="${PORTDIR}/distfiles"

PKGDIR="${PORTDIR}/packages"

PORTAGE_TMPDIR="/tmp"


VIDEO_CARDS="nvidia"

INPUT_DEVICES="evdev"

LINGUAS="en ko"


GENTOO_MIRRORS="http://www.gtlib.gatech.edu/pub/gentoo http://lug.mtu.edu/gentoo/ http://gentoo.osuosl.org/ http://gentoo.mirrors.pair.com/ http://mirrors.rit.edu/gentoo/ http://gentoo.mirrors.tds.net/gentoo http://mirror.lug.udel.edu/pub/gentoo/ http://cosmos.illinois.edu/pub/gentoo/ http://gentoo.cs.uni.edu/ http://mirror.usu.edu/mirrors/gentoo/"



4-5. 필수 패키지 설치 준비

이제부터 필수 패키지 설치에 들어가는데, 패키지를 설치하기 전 가장 먼저 해야할 일이 하나 있다.  바로 패키지 컴파일시 이 컴파일 데이터들을 캐싱해주는 C Cache라는 것을 먼저 설치해야한다.  얼마나 도움이 될지는 모르겠지만, 조금이라도 설치 시간을 단축시켜줄 수 있기 때문에 설치를 추천한다.


개인적으로 나는 패키지 설치시 출력 메시지를 아예 보지않는다.  어차피 C언어를 모르기 때문에 에러메시지를 이해할 수 없을 뿐더러, 뭐 굳이 컴파일되는 과정의 메시지를 볼 필요가 있나.  따라서, 모든 emerge 명령어 실행시에는 나는 -q를 붙인다.

# emerge -q ccache


시간이 꽤 걸릴 수 있다.  그 이유는, 젠투가 새롭게 설정된 make.conf의 환경을 적용시키려고 하기 때문이다.  만약 C Cache를 이용해서 최대한 빨리 빌드를 하고싶다면, /etc/portage/make.conf 파일을 열어서 USE 플래그를 공란으로 만들고,  ABI_X86을 삭제해주면 된다.

USE=""


그리고나서 C Cache 설치 및 하단의 설정 후 다시 복원해주면 되겠다.

C Cache 설치 이후에는 설정을 해줘야한다.  C Cache를 활성화하고 캐시 사이즈 및 위치를 지정하는 것이다.  /etc/portage/make.conf 파일을 열고 다음과 같이 넣는다.  이미 위에서 make.conf 파일을 정리했는데, 이것은 해도그만 안해도 그만이므로 추가로 설명하게 됐다.  위치는 관계없다.


FEATURES="ccache"

CCACHE_SIZE="2G"

CCACHE_DIR="/var/tmp/ccache"


이제부터 필수 패키지 설치를 시작하는데, 필수적인 패키지를 크게 분류하자면 다음과 같다.

a. 커널

b. 시스템 운영 패키지

c. 부트로더

d. 기타 툴



5. 패키지 설치

시스템 운영을 위한 패키지를 설치해야하는데, 사실 stage3에 이미 충분히 딸려오기 때문에 설치해야할 패키지는 몇 안된다.  하지만 이 글은 systemd로 설치하는 것을 전제로 하며, 젠투의 기본 프로파일은 기존의 OpenRC를 기반으로 하는 init시스템을 기본값으로 달고나오기 때문에 systemd에 필수적인 패키지를 설치해줘야한다.

(실은 USE에 설정한 python 때문에 util-linux를 재설치하려고 시도하는 것이고, 여기서 의존성 문제가 생기는 관계로, USE에 python을 넣지않으면 정상적으로 진행이 가능하다)


위에 프로파일을 systemd로 선택하면 100% 에러가 난다고 겁을 줬지만, 해결법은 사실 간단하다.  eudev를 삭제하고 util-linux를 설치해준뒤 프로파일을 변경하면 된다.  시간이 꽤 오래 걸린다.

# emerge -q sys-apps/dbus

# emerge -C sys-fs/eudev

# emerge -q sys-apps/util-linux

# eselect profile list

# eselect profile set 10


프로파일 번호가 10번인지 꼭 확인하자.  이름은 아래와 같다.

default/linux/amd64/13.0/systemd


GNOME이나 KDE를 설치할 계획이라고 하더라도, 일단 여기서는 해당 프로필을 선택하지 않는 이유는, 새롭게 설치한 나만의 젠투리눅스로의 부팅이 잘되는지를 먼저 확인하기 위해서다.


변경한 프로파일을 적용해야한다.  여기서 젠투가 알아서 필요한 systemd 관련 패키지들을 모두 불러와 설치를 해주며, 관계된 패키지까지 새로운 make.conf 파일에 정의된 옵션대로 재컴파일을 해주게 된다.  시간이 꽤 오래 걸릴 거다.

# emerge -aqvuDN @world


공식 위키에 나오는 시간대(timezone), 로케일 등은 보고 그대로 따라하시면 된다.  사실 systemd 환경에서는 지금 안해도 상관없지만, 지금 해주면 나중에 systemd가 OpenRC 환경으로 설정한 것들을 가져와서 적용시켜주므로 편리하다.



5-1. 커널 설치

옛날에 젠투를 쓸 때는 커널 옵션 하나하나 확인해가면서 설치를 했고, 사실 그게 또 나름 맛이 있어서 자연스럽게 커널 옵션들을 공부하게 됐다.  하지만 요즘은 하드웨어가 너무나도 복잡해지고 지원해야하는 종류도 많아져서, 옵션 일부를 잘못 건드리면 어떤 기능 전체가 싸그리 작동이 안되거나, 아니면 아예 부팅이 안되는 등의 문제가 생긴다.  자신의 하드웨어를 아주 잘 알고있고, 모듈로 컴파일하는 것과 커널에 넣는 것의 차이를 이해하면 혼자서 해볼만한데, 그렇지 않다면 별로 추천하지 않는다.  따라서, 젠투에서는 범용으로 쓸 수 있는 커널을 만들어주는 툴이 있다.

먼저 커널을 설치하자.

# emerge -q sys-kernel/gentoo-sources


시간이 좀 걸린다.  커널 소스코드 설치가 끝나면, 범용커널을 만들어주는 툴을 설치한다.

# emerge -q sys-kernel/genkernel-next


systemd 환경에서 사용하기 위해 파일 하나를 수정해줘야한다.

# nano /etc/genkernel.conf

UDEV="yes"

라고 설정해주면 된다.


이제 커널을 빌드해준다.  꽤 오래 걸린다.

# genkernel --udev --install all


커널을 직접 수정해서 쓰고싶다면, 일단 최초 설치는 genkernel로 설치하고, 이후 새롭게 빌드한 시스템으로 부팅이 잘 되고나서 시도해볼 것을 추천한다.



5-2. 시스템 운영 패키지 설치

기본적인 운영에 필요한 패키지를 설치해야하는데, 사실 systemd 프로파일 적용하는 단계에서 거의 대부분 설치된다.  거기서 빠진 것들 중 없으면 불편한 것들을 설치해보자.

# emerge -q sys-apps/pciutils

# emerge -q app-portage/gentoolkit

# emerge -q app-portage/eix

# emerge -q net-misc/dhcpcd

# emerge -q net-misc/openssh

# emerge -q sys-process/cronie

# emerge -q app-admin/sudo


일부 하드웨어의 추가 펌웨어를 설치해준다.  당장은 필요없을 수 있겠지만, 나중에 이걸 안해줘서 문제가 생기는데 기억이 안나서 해결 못하는 경우도 있다.

# emerge -q sys-kernel/linux-firmware



5-3. 부트로더 설치

부트로더로는 grub을 선택한다.  사실 이제 제일 무난하고 쓰기편하다.

# emerge -q sys-boot/grub:2

# grub-install /dev/sda


설치가 끝났으면 새로운 커널로 부팅할 시 systemd로 부팅하기 위한 설정을 해줘야한다.  설정은 간단한데, /etc/default/grub 파일을 열고 다음 줄을 찾아서 주석을 해제해주면 된다.

GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"


그런다음 적용을 시켜준다.

# grub-mkconfig -o /boot/grub/grub.cfg



6. 환경설정

이제 마지막으로 수작업으로 작성해줘야하는 필수 설정파일을 작성해줄 차례다.

공식 위키에 /etc/fstab 파일에 대한 설명이 잘 나와있으니 그것을 보고 작성해준다.


passwd 명령어로, root 사용자의 패스워드를 변경해주고, 아래의 명령어로 일반 유저를 생성해준다.

# useradd -m -G users,wheel,audio -s /bin/bash USERNAME


랜카드의 DHCP를 활성시켜주기위해 systemd 파일을 하나 작성해준다.  /etc/systemd/network/50-dhcp.network 파일을 열고 아래와 같이 넣어주면 된다.

[Match]

Name=en*


[Network]

DHCP=yes


이렇게 넣고나서 재부팅해도 사실 DHCP를 이용해서 IP 주소를 못받은 상태가 되어있을텐데, 이것은 "시스템 시작시 DHCP를 이용해서 IP를 받아라" 라고하는, OpenRC 식으로 말하자면 /etc/init.d에 항목이 없기 때문에 그렇다.


이제 새로운 시스템으로 부팅을 해야한다.  먼저 chroot를 빠져나오고, 설치 시작 전에 마운트 했던 가상 파일시스템들을 해제해야하는데, 일반적인 umount 명령어로는 해제가 안된다.  옵션을 하나 붙이면 간단하게 해제된다.

# exit

# umount /mnt/gentoo/boot

# umount -l /mnt/gentoo/proc

# umount -l /mnt/gentoo/sys

# umount -l /mnt/gentoo/dev

# umount /mnt/gentoo

# reboot



7. 부팅 이후

만약 새로운 시스템으로 부팅이 되지않는다면, 공식위키를 보면서 어떤 절차가 빠졌는지 확인해본다.


6번에서 언급한대로 ifconfig 명령어를 쳐보면 분명 IP 주소가 안잡혀있을 거다.  아래의 명령어로 DHCP를 활성화하자.

systemctl enable systemd-networkd.service

systemctl start systemd-networkd.service


만약 systemctl이라는 명령어가 에러를 내보내면, 그건 systemd로 부팅되지 않았다는 얘기다.  /etc/default/grub 파일을 열고 GRUB_CMDLINE_LINUX 항목을 다시 보자.  제대로 되어있는게 맞다면 아래의 명령어로 GRUB을 재설치 해준다.
# grub-install /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg

저널링 동작을 위해 머신 ID를 만든다.

# systemd-machine-id-setup


호스트 이름을 설정한다..

# hostnamectl set-hostname <HOSTNAME>


로케일을 설정한다.  이 부분은 위의 설치과정에서 공식위키를 보고 진행했었다면 따로 안해줘도 된다.  안해줬다면 아래의 명령어로 가능한데, 개인적으로 로케일은 한글이든 영문이든 utf8을 쓰는 것을 추천한다.  영어라면 en_US.utf8이고, 한글은 ko_KR.utf8이다.

# localectl set-locale LANG=<LOCALE>



8. KDE 설치

KDE 설치는 사실 간단하다.  어차피 X가 의존성으로 묶여있어서 설치할 때 같이 딸려오니 따로 신경안써줘도 되며, 나중에 별도로 XDM만 설치해주면 끝난다.  다만, KDE 메타패키지에 빠진 프로그램들이 너무 많아서, KDE 빌드 이후에도 계속 설치해줘야할 프로그램들이 너무 많다는 정도.


먼저 시스템의 프로파일을 변경해줘야한다.  일반 사용자로 로그인했다면, sudo 명령어를 사용하여 root로 변경한다.

# sudo -i

# eselect profile list


여기서 default/linux/amd64/13.0/desktop/plasma/systemd 항목을 선택한다.  kde/systemd가 아니라 plasma/systemd를 선택해야하는데, 왜냐하면 plasma가 KDE의 최신버전인 5의 새로운 이름이기 때문이다.


만약, 한글과 영어 지원만 선택하고 싶으면 /etc/portage/make.conf 파일을 열어서 아래와 같이 넣는다.

L10N="ko en"


변경된 시스템 프로파일을 적용해준다.

# emerge -aqvuDN @world


KDE 설치의 필수 패키지는 아래와 같다.

# emerge -q kde-plasma/plasma-meta

# emerge -q kde-apps/konsole

# emerge -q kde-plasma/systemsettings

# emerge -q x11-misc/sddm

# emerge -q kde-plasma/sddm-kcm


SDDM을 활성화한다.

# systemctl enable sddm.service


그외 필요한 KDE 프로그램들은 여기서 볼 수 있다.

https://www.kde.org/applications/


만약 X가 설치되지 않았다면, 2개의 패키지만 설치해주면 된다.

# emerge -q x11-base/xorg-server

# emerge -q x11-base/xorg-drivers



9. 끝

총 5대의 설치를 진행하면서 메모를 해두려고 노력했으나, 의외로 메모하지 못한 곳에서 필요한 부분이 많았고, 그것들 대부분을 기억에 의존하여 작성하였다.  초보들이 보기엔 상당히 불편한 설치기이지만, 사실 젠투는 초보가 설치하기에는 적합하지 않다고 생각하고, 리눅스라는 운영체제에 익숙하지 않다면 절대로 추천하고 싶지 않은 배포판이다.  설령 리눅스에 익숙하더라도 성향에 맞지않으면 절대 오래 쓰지 못하는 배포판이기도 하다.


내 경우는, 내 성격과 젠투의 장단점이 잘맞아서 아주 만족스럽게 쓰고있다.  또한, 전혀 기대하지 않았던 KDE 5 Plasma가 너무 마음에 들어서 이것 역시도 아주 만족스럽다.  젠투는 쓰면 쓸수록 점점 안정적으로 변하는 배포판이라고도 하는데, 그것은 젠투가 사용자로 하여금 시스템의 구성에 더욱 더 시간을 사용하게 만들기 때문이다.  이것이 적성에 맞으면 잘쓰게 되고, 이런 데에 시간을 쓸 수 없다면 최악의 배포판이 되는 것이다.  이 경우라면 차라리 데비안이 훨씬 낫다.  한 번 설치하면 재부팅 외엔 거의 손댈 곳이 없는데다, 지금까지 내가 본 2대의, 전 세계적으로 uptime 길다고 알려진 서버들 모두 데비안을 썼다.  하나는 uptime이 3,000 days인가 그랬고, 다른 하나는 2,396 days였다.


젠투를 이미 2004년부터 썼지만 그때는 사실 젠투를 제대로 이해하고 쓴 것은 아니라고 생각한다.  지금은 나름 어느정도 이해한다고 생각하는 시점에서 보면, 젠투는 너무나도 잘만들어진 배포판이라고 생각하고, 사용자가 원하는대로 패키지 하나하나를 세밀하게 설정해서 설치할 수 있게 해주고, 그것을 유지/보수할 수 있게 제공해주는 각종 컬러풀한 CLI 툴들이 아주 잘만들어져서 부족한 점이 없다고 생각될 정도다.


다만 아쉬운 점은, 젠투를 개발하는 젠투 재단과 그 커뮤니티 자체가 불안정하다는 점인데, 이것 때문에 젠투라는 배포판 자체가 오랫동안 지속될지를 걱정해야할 판이라는 거다.  우분투도 사실 캐노니컬의 상태가 썩 좋지만은 않기 때문에, 젠투도 우분투도 망해서 없어지면 결국 정착할 곳은 데비안이 되겠지만, 현재로서는 젠투에 아주 만족한다.

블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

7년 만에 다시 젠투를 쓰기 시작했다.  사실 엄밀히 말하자면, 7년 전에는 그냥 설치만 잠깐 해봤던 것이고, 메인 데스크탑 배포판으로써의 젠투 사용은 2004년 이후로 처음이다.  예전에 실제 사용했던 젠투의 흔적들: 

http://blog.naver.com/PostList.nhn?blogId=jswlinux&from=postList&categoryNo=10


이런저런 일들을 겪으면서 젠투에 정착하게 됐고, 현재 상당히 만족스럽게 쓰고있다.  예전에 처음 젠투를 쓸 때부터도 성향에 맞아서 잘 써왔지만, 지금은 더 만족스럽다.  아무래도 하드웨어와 소프트웨어가 당시보다 많이 발전해서겠지.


따라서, 당시보다 젠투에 대한 이해가 좀 더 깊어진 지금, 젠투 설치기를 다시 작성하려 한다.  젠투의 설치방식은 사실 2004년이나 지금이나 많이 바뀌진 않았다.  세세한 패키지의 이름 정도나 systemd의 차이 정도만 있을뿐, 여전히 한결 같다는 점은 마음에 든다.


그렇다면 왜 젠투인가.

저사양 컴퓨터를 제외하면, 컴파일시 최적화를 통한 이득은 거의 없다는 것이 이미 대다수의 유저들의 설전을 통해 정리가 완료됐다고 본다.  따라서, 젠투를 사용하는 것은 어디까지나 젠투가 지향하는 배포판의 관리방식이 유저의 사용 목적에 지극히 부합하기 때문이라고 보며, 나 역시도 그렇다.


예를 들자면, 내 경우는 내가 사용하는 패키지들이 LDAP을 지원한다면 최대한 LDAP 기능을 포함시켜서 설치했으면하며, 특히나 근무하는 곳의 규정상 모든 통신 프로토콜은 반드시 SSL을 사용하도록 강제하므로, 이 역시도 네트워크 관련 패키지라면 무조건 SSL을 활성화시켜서 설치하길 원하기 때문인데, 이런 점에서 젠투는 나에게 꼭 맞는 배포판이라고 볼 수 있다.


아쉬운 점은 요즘 젠투의 인기가 국내에서 많이 줄어들었는지, 젠투 설치기나 사용기 등을 검색해보면 최근 글이 아예 없다시피 했다.  물론 젠투 공식 핸드북이 워낙 잘 만들어져있어서 이제는 더 이상 설치기가 딱히 필요없기도 하지만, 보통 젠투를 처음 설치하면 누구나 설치 및 사용기를 작성하려고 하지않나 예상했다.


이 글은, 꼭 리눅스만이 아닌, 윈도우라도 설치/삭제 등을 밥 먹듯이해서 이제 파티션이 뭐고 운영체제가 뭔지 감은 잡고있으며, 문제발생시 구글링으로 스스로 해결하실 줄 아는 분들을 대상으로 한다.


들어가기에 앞서, 이 설치기는 아래의 환경으로 설치를 진행한다.

1. 리눅스 단독 설치

2. 유선 네트워크

3. systemd

4. multilib

5. KDE 5 Plasma



테스트해본답시고, 동일한 환경으로 젠투 설치를 2주일 새에 5번을 해봤으니 거의 문제가 없을 것으로 예상된다.


젠투 설치는 기본적으로 크게 다음과 같은 순서로 이루어진다.

1. 네트워크 사용이 가능한 다른 리눅스 배포판 부팅이미지나 젠투 부팅이미지로 부팅

2. 파티션 생성

3. 네트워크 및 설치에 필요한 환경 설정

4. 커널 설치

5. 부트로더, 로거, 크론 등 시스템 필수패키지 설치

6. 리부팅


사실 순서만 놓고보자면 우분투 등 다른 배포판의 설치과정과 거의 비슷하다.  다만, 저걸 자동으로 해주느냐 수작업으로 하느냐의 차이일 뿐.  젠투 설치에 익숙해지거나 위의 설치절차가 이해되면, 파티션 생성 이후의 과정에서는 각자 나름대로의 설치방법이 생기게 된다.


예전에 젠투 쓸 때는 "남자라면 stage1부터" 라는 이상하면서도 나름 이해되는 도전욕구를 불러일으키는 바닥부터 시작하는 것을 선호했는데, 지금은 굳이 그럴 필요가 없다.  어차피 systemd에 multilib 적용시켜서 설치하면, 사실상 전부 다 재컴파일 해야하기 때문에 GCC 제외하곤 결국 stage1부터 한 것과 똑같아진다.  Stage1이 뭔지 모르는 분들을 위해 설명드리자면, 젠투를 설치하기 위해 젠투 설치 ISO 이미지와 stage 파일을 다운로드해서 설치를 시작하면, 젠투설치를 하게해주는 GCC 컴파일러와 몇몇 툴들은 stage 파일에서 제공되는 것들을 사용하게 된다.  아무 것도 없는 허허벌판에서 손으로 집을 지을 순 없으니, 최소한의 툴은 제공해주는 셈이다.  그런데, 일부 유저들은 "난 얘네들마저도 내 컴퓨터에서 컴파일된 것을 사용하고 싶은데?"라고 생각할 수 있다.  GCC 컴파일러, Perl/Python 인터프리터 등, 내 컴퓨터에서 컴파일되어 최적화된 것을 사용한다면, 얘네들이 만들어내는 시스템의 핵심 툴들까지 전부 다 내 컴퓨터만을 위해 최적화된 버전이 아닌가.  따라서, 젠투를 설치하는데에 있어서 핵심적인 툴들부터 내 컴퓨터에 맞게 다시 설치하는 과정이 stage1이다.


KDE를 선택한 이유는, 사실 개인적으로 KDE를 별로 안좋아했고 예전에 잠깐씩 설치해서 써본 경험으로는 KDE가 불편해서 나한테 안맞는 윈도우매니저라는 고정관념이 있었는데, 이번에 젠투 빌드하면서 GNOME이 어떤 버그로 인해서 설치가 되지않는 문제가 있었고, 그로인해 어쩔 수 없이 선택한 KDE 5 플라즈마가 너무나도 마음에 들었기 때문.  KDE 5 플라즈마 구축해서 써오면서 알게된 건데, 생각보다 QT 기반의 소프트웨어들이 많았고, 그간 내가 gtk 기반 소프트웨어라고 알고 썼던 것이 알고보니 QT 기반이었다거나 하는 것들이 종종 있었다 (xca 같은 소프트웨어).



기본 시스템 빌드하는데 소요되는 총 시간은 하드웨어 성능에 따라 다르지만, 대략 3시간 정도 예상하면 되지않나 싶다.  요즘 젠투 설치는 너무 쉬워서 핸드북만 봐도 사실 딱히 쓸 게 없는데, 나는 그 과정에서 일부 선행되어야하는 작업들, 알고있어야하는 것들을 발견해서 이 설치기를 쓴다.


다음편으로...


블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,
Mac OS X Snow Leopard 10.6에서 빌드 완료했습니다.
Mac OS X Lion 10.7에서 빌드 완료했습니다.

맥에서 실행되는 젠투설치 매뉴얼이다.
사실 맥에서는 젠투 Prefix를 설치할 필요가 그다지 절실하진 않은데 그 이유는,

1. 맥은 솔라리스와는 다르게 어플리케이션이 엄청나게 많다. 게다가 무료 어플리케이션이 리눅스만큼 있다. 못믿으시겠다고? 그래서 맥은 써봐야 안다는 거다.
2. 수많은 어플리케이션 말고도 FreeBSD의 Ports 시스템까지 있어서, 맥 쓰면 어플부족으로 곤란한 경우는 없다.
사실 어플의 숫자를 따지자면 리눅스랑 막상막하라고 볼 수 있는데다, 프로그램의 질이나 수준을 따지면 맥의 어플이 질적인 면에서 더 뛰어나다고 할 수 있겠다 (본인 생각이다). 게다가 양적으로도 밀리지 않고.

그럼에도 불구하고 맥에서 젠투 prefix를 설치한 건 어디까지나 개인적인 관심에 의해서다.
또 다른 이유가 하나 더 있다면, MacPorts는 Mac OS X에 이미 설치되어있는 툴들을 아주 당연히 무시해버린다. 무슨 말인고하니, 맥이 유닉스 기반이라는 건 다들 아시는 사실이니까 하는 말이지만 맥은 기본적으로 Perl, Python 등의 기본적인 툴들이 포함되어있고, Xcode를 설치하면 gcc등 각종 프로그래밍 언어의 컴파일러들까지 딸려온다. 그런데, MacPorts는 이렇게 설치되어있는 툴들을 무시해버리고 처음부터 끝까지 전부 다 설치해버린다. 즉 다시 말해서 BitTorrent라는 어플리케이션을 설치하기 위해서 Python, ncurses부터 빌드하기 시작해서 수많은 라이브러리/툴들을 모두 설치하고나서야 비로소 어플리케이션이 설치된다는 말이다. 그런데 이것들이 좀 가벼운 것들이 아닐테니 이미 시스템에 있는데도 불구하고 시간을 낭비해가면서 다시 설치해야한다는 거다.
뭐 사실, 다시 다 설치한다는 점을 비롯해서 이 글에서 설명하려는 Gentoo on Mac OS X이랑 별반 다를 건 없지만, 앞서 말했듯 개인적인 관심에 의한 것이고, MacPort가 애플의 지원을 받고있다고는 하지만, 개인적으로 젠투의 프로젝트가 더 끌리기 때문이다. 
하지만 MacPorts가 가진 어플리케이션의 양이 어마어마한 수준이기 때문에 젠투 Prefix에 없는 패키지들은 Ports를 통해야하고 결국 둘 다 공존해야한다는 결론이 내려진다. 

어쨌든... 젠투 Prefix가 뭔지 모르시는 분들을 위해 설명을 하자면, 젠투의 포티지 시스템을 로컬 시스템의 OS에 설치해서 쓰는 방식의, 젠투 프로젝트의 하나이다. 설명이 좀 어려운데, 다시 말씀드리자면, 맥 OS X을 건드리지 않고 젠투의 emerge 명령어를 통해 어플리케이션을 빌드할 수 있는 젠투의 포티지 시스템을 설치하는 것이다. 이것이 MacPorts와의 다른 점이 하나 있는데, MacPorts 자체는 이미 컴파일되어있는 바이너리를 가져와서 그냥 설치하기만 하면 되지만 (물론 어플들은 컴파일을 통해서 설치한다), 젠투는 처음부터 끝까지 모두 컴파일이라는 점, 그리고 Ports는 root 권한이 필요하지만(/opt 밑에 설치된다) 젠투는 개인폴더에 설치되서 운용이 가능하다는 점이다.

설치는 단 한 번의 에러도 없이 완벽히 됐고 그 방법을 매뉴얼화 한다.
먼저 젠투 Prefix 폴더를 만들고 패스를 지정해준다.
$ mkdir gentoo
$ export EPREFIX="$HOME/gentoo"
$ export PATH="$EPREFIX/usr/bin:$EPREFIX/bin:$EPREFIX/tmp/usr/bin:$EPREFIX/tmp/bin:$PATH"

이제 아래의 링크를 클릭해서 Prefix 스크립트를 받고 gentoo 폴더로 옮겨서 755 권한을 준다.
$ chmod 755 ~/Downloads/bootstrap-prefix.sh
$ mv ~/Downloads/bootstrap-prefix.sh ~/gentoo
$ cd ~/gentoo

이제 신발끈을 묶자.
$ ./bootstrap-prefix.sh $EPREFIX tree
$ ./bootstrap-prefix.sh $EPREFIX/tmp make
$ ./bootstrap-prefix.sh $EPREFIX/tmp wget
$ ./bootstrap-prefix.sh $EPREFIX/tmp sed
$ ./bootstrap-prefix.sh $EPREFIX/tmp python
$ ./bootstrap-prefix.sh $EPREFIX/tmp coreutils6
   (컴파일 실패하면 coreutils로 해본다)
$ ./bootstrap-prefix.sh $EPREFIX/tmp findutils
$ ./bootstrap-prefix.sh $EPREFIX/tmp tar15
$ ./bootstrap-prefix.sh $EPREFIX/tmp patch9
$ ./bootstrap-prefix.sh $EPREFIX/tmp grep
$ ./bootstrap-prefix.sh $EPREFIX/tmp gawk
$ ./bootstrap-prefix.sh $EPREFIX/tmp bash
$ ./bootstrap-prefix.sh $EPREFIX portage

rehash 해준다.
$ hash -r

이제부터 필수툴들을 빌드한다.
$ emerge --oneshot -q sed (개인적으로 emerge에서는 -q 옵션을 권장한다. -q는 컴파일 메시지를 보여주지 않는다.)
$ emerge --oneshot -q --nodeps bash
$ emerge --oneshot -q pax-utils
$ emerge --oneshot -q --nodeps xz-utils
$ emerge --oneshot -q --nodeps "<wget-1.13.4-r1" 
(에러날 시  
emerge --oneshot -q --nodeps wget)
$ emerge --oneshot -q --nodeps baselayout-prefix m4 flex bison binutils-config

gcc -v를 해서 gcc의 버전을 확인한다. 만약 4.0.1이면, 
$ emerge --oneshot -q --nodeps "=binutils-apple-3.2"

를 실행하고, 그 4.2.1 버전이면
$ emerge --oneshot -q --nodeps "=binutils-apple"

를 실행한다. Lion이면 후자일 확률이 매우 높다. 
 
$ emerge --oneshot -q --nodeps gcc-config gcc-apple (gcc 컴파일이라 시간이 좀 걸린다)

여기서부터는 방금 전 새롭게 컴파일한 gcc로 기본 툴들을 다시 컴파일하는 과정이다.
$ emerge --oneshot -q coreutils findutils tar grep patch gawk make
$ emerge --oneshot -q --nodeps file eselect

이제 부트스트랩된 포티지가 덮어씌여질 수 있도록 임시로 세팅을 바꿔서 포티지를 emerge한다.
$ env FEATURES="-collision-protect" emerge --oneshot -q portage

이제 임시파일을 지우고 rehash한다.
$ rm -Rf $EPREFIX/tmp/*
$ hash -r

포티지 트리를 업데이트 하자.
$ emerge -q --sync

Prefix 설치를 마무리할 수 있게끔 시스템을 빌드하자.
$ env USE=-git emerge -uq system

이제 대망의 마지막 작업이다. 여기서는 USE, CFLAGS를 지정해서 컴파일을 할 수 있다.
인텔 아이맥 코어2듀오 유저나 15인치 i5 맥북프로 유저라면 필자의 CFLAGS를 추천한다. 맥 좋은 게 뭔가. 동일한 플랫폼 아닌가. 아마 똑같이 작동할 거라고 믿는다. 필자의 CFLAGS는 젠투를 10번을 넘게 컴파일해가면서 얻어낸,  적어도 맥에서만큼은 안정적으로 작동하는 것들이다.
참고로, 아이맥 20", 24", 맥미니서버, 맥북프로 15" i5, i7에서 모두 빌드완료했다.

$ vi $EPREFIX/etc/make.conf

빈 파일이다. 내용을 입력해넣자.
CFLAGS="-mtune=core2 -march=core2 -mssse3 -msse3 -O3 -pipe -fomit-frame-pointer -funroll-loops"
CXXFLAGS="${CFLAGS}"
ACCEPT_KEYWORDS="amd64"
MAKE_OPTS="-j3"
LINGUAS="en ko"
USE="unicode nls"

위의 MAKE_OPTS에서는 자신이 쓰는 PC의 CPU 코어에 1을 더하면 된다.
Core i7이라면 코어가 4개일테니 5를 적어주면 되겠다.

혹시나 싶어 링크를 드린다. 안전한 CPU별 CFLAGS이다. http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel
이제 마지막 작업이다. 새로운 CFLAGS와 이것들을 빌드하기 위해서 그동안 만들어온 툴로서 다시 시스템 전체를 컴파일할 차례이다. 역시 -q 옵션 권장한다.
$ emerge -eq system

아무런 에러없이 빌드가 완료될 것이고, 코어2듀오 2.4GHz 기준으로 약 2시간이면 모두 끝난다.
(i5 이상의 경우 1시간 30분이내에 끝난다. 그나마도  gcc 컴파일에서 40분 잡아먹는다.)
아래의 내용을 실행해주자.
$ cd $EPREFIX/usr/portage/scripts
$ ./bootstrap-prefix.sh $EPREFIX startscript

이제 $HOME/gentoo 폴더에 보면 startprefix라는 실행파일이 하나 보일 거다. gentoo 폴더를 어디에 옮기든 이 startprefix만 실행해주면 언제든 emerge를 사용할 수 있다. 참고로 startprefix를 하고나면 /sbin, /usr/sbin의 패스가 걸려있지 않은데, startprefix 파일을 열어서 보면 root 유저인지 아닌지에 따라 패스를 거느냐 안거느냐 판단을 하는 부분이 있기 때문이다. 그런데 사실 root가 아니더라도 sbin 쓸 일은 수도없이 많기 때문에(ifconfig, ping, traceroute 등등) 이 부분에 대한 패스를 걸어준다.

$ vi $HOME/gentoo/etc/profile
if [ "$EUID" = "0" ] || [ "$USER" = "root" ] ; then 부분을 찾는다. 대략 24라인에 있다.
보시면 PATH= 라고 해서 잘 살펴보시면 /usr/sbin, /sbin 모두 패스가 걸려있다. 이 부분이 root에 대한 부분이고 그 아래 else 라고 적혀있고 PATH 라인이 있는데 여기 보시면 /sbin, /usr/sbin이 없다. 그래서 이 부분에 패스를 걸어주면 이제 일반 유저들도 startprefix 이후에 /sbin, /usr/sbin 바이너리를 이용할 수 있다.
패스추가는  이렇게 한다.

/sbin:/usr/sbin

디렉터리와 디렉터리 사이에는 콜론 : 으로 구분을 지어줘야한다. 필자의 설정을 예제로 들어본다.
/Users/jswlinux/Gentoo/usr/bin:/Users/jswlinux/Gentoo/bin:${PATH}:/usr/bin:/bin:/usr/sbin:/sbin"

이상이다. Enjoy your Prefix!
블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,
솔라리스를 리눅스처럼 쓰기위한 나의 노력은 참 눈물겹다고나 할까...
솔라리스라는 환상적인 OS와 오픈솔라리스의 불투명한 미래 때문에 시작된 나의 작은 관심은 블로그 포스팅을 거의 안하는 내가 불과 며칠 만에 여러 개의 글을 포스팅할 정도의 열정을 가질 정도였으니...

정식명칭은 Gentoo Prefix Bootstrap for Solaris.
솔라리스에서 작동되는 젠투다. 제목만 봐도 환상적이지 않은가.
뛰어난 솔라리스의 기능에 젠투의 emerge까지. 게다가 젠투가 가진 수만개의 패키지들... 컴파일을 통한 최적화된 설치. 솔라리스의 부족한 패키지를 보충하고도 남을 최고의 선택인 것이다.
하지만 안타깝게도 제대로 설치되지 않는다. 후에 설명한다.

먼저, 본인의 솔라리스 시스템은 OpenSolaris 2009.06 Intel 버전에 AMD 듀얼코어 CPU와 램3기가가 장착된 평범한 32비트 데스크탑 컴퓨터다.
젠투의 설치는 대략 3개의 파트로 나뉜다.
1. 신발끈 묶기 (Bootstrap)
2. 필수유틸 설치
3. emerge sync

먼저,  젠투를 설치하기 위해서는 gcc가 반드시 설치되어있어야한다. 설치되어있지 않다면 아래의 명령어로 gcc를 설치해주자.
$ pfexec pkg install SUNWgcc (3.4.3 버전이어야한다. pkg search SUNWgcc로 확인해보자)

젠투를 빌드할 폴더를 만들어준다. 개인 홈디렉토리에 만들어주면 된다.
$ mkdir gentoo

젠투를 빌드할 경로를 지정해준다.
$ export EPREFIX="$HOME/gentoo"

패스를 설정해줘야하는데, 이 부분에서는 젠투 홈페이지에 있는 것과 내용이 조금 달라서 아래의 경로를 사용하시길 바란다.
export PATH="$EPREFIX/usr/bin:$EPREFIX/bin:$EPREFIX/tmp/usr/bin:$EPREFIX/tmp/bin:/usr/sfw/bin:/usr/sfw/i386-pc-solaris2.11/bin:/usr/gnu/bin:/usr/bin:/bin:/sbin:/usr/sbin"

이제 아래의 경로를 클릭해서 젠투 Prefix 파일을 다운로드 한다.

다운로드를 다 했으면 방금만든 gentoo 폴더에 옮기고 755 퍼미션을 준다.
$ chmod 755 bootstrap-prefix.sh
$ mv bootstrap-prefix.sh gentoo/
$ cd gentoo

이제부터 1단계인 신발끈을 묶을 차례다. 아래의 명령어를 차례대로 입력하면 된다.
듀얼코어(코어2듀오보다 낮은)급 이상이면 별로 오래 걸리진 않는다.
$ ./bootstrap-prefix.sh $EPREFIX tree 
$ ./bootstrap-prefix.sh $EPREFIX/tmp make 
$ ./bootstrap-prefix.sh $EPREFIX/tmp wget 
./bootstrap-prefix.sh $EPREFIX/tmp sed 
$ ./bootstrap-prefix.sh $EPREFIX/tmp python 
$ ./bootstrap-prefix.sh $EPREFIX/tmp coreutils 
./bootstrap-prefix.sh $EPREFIX/tmp findutils3 
$ ./bootstrap-prefix.sh $EPREFIX/tmp tar 
$ ./bootstrap-prefix.sh $EPREFIX/tmp patch 
./bootstrap-prefix.sh $EPREFIX/tmp grep 
$ ./bootstrap-prefix.sh $EPREFIX/tmp gawk 
$ ./bootstrap-prefix.sh $EPREFIX/tmp bash 
./bootstrap-prefix.sh $EPREFIX portage

여기까지는 사실상 거의 문제가 없다. 이 중에서 단 하나라도 실패하면 뭔가 문제가 있는 거다.
이제 2단계로 넘어간다.
bash를 rehash 해준다.
$ hash -r

bash와 컴파일러, 그리고 bin유틸 등 필수유틸들을 빌드한다.
$ emerge --oneshot sed
(어떤 시스템에서는 여기서 에러가 났다. 하지만 emerge의 temp 파일에 가서 직접 make해주면 이상없이 잘 됐다)
$ emerge --oneshot --nodeps bash
$ emerge --oneshot wget
$ emerge --oneshot --nodeps baselayout-prefix
$ emerge --oneshot --nodeps xz-utils
$ emerge --oneshot --nodeps m4
$ emerge --oneshot --nodeps flex
$ emerge --oneshot --nodeps bison
$ emerge --oneshot --nodeps binutils-config
$ emerge --oneshot --nodeps binutils
$ emerge --oneshot --nodeps gcc-config
$ emerge --oneshot --nodeps "=gcc-4.2*"
(시간이 꽤 걸린다. 또한, 요즘 나오는 gcc는 대부분 4.4대라서 =gcc-4.4*로 놓고 컴파일을 해봤는데 에러가 났다. 4.3도 역시 에러가 났다. 일단 매뉴얼에서는 4.2로 설치를 한다)

이제는 새롭게 빌드한 gcc 4.2버전으로 필수유틸들을 빌드한다. 원래 솔라리스에 설치되는 gcc 버전은 3.4.x이다.
$ emerge --oneshot coreutils
$ emerge --oneshot findutils
$ emerge --oneshot tar
$ emerge --oneshot grep
$ emerge --oneshot patch
$ emerge --oneshot gawk
$ emerge --oneshot make
$ emerge --oneshot --nodeps file
$ emerge --oneshot --nodeps eselect
오픈인디아나의 경우는 여기서 에러가 아는데, 왜냐하면 저장소에 파일이 없다! 아래의 위치에서 eselect-로 시작하는 받아서 $EPREFIX/usr/portage/distfiles/에 넣어주자.
http://trumpetti.atm.tut.fi/gentoo/distfiles/
 
이쯤에서 스냅샷을 한 번 찍자.

$ emerge --oneshot pax-utils
문제는 바로 이 pax-utils이다. 여기서 젠투 Prefix를 때려치게됐다.
pax-utils에는 14개의 패키지의 의존성을 갖는다.
gnuconfig, autoconfig, zlib, bzip2, automake-wrapper, libperl, perl, perl-cleaner, help2man, texinfo, autoconf, automake, libtool, gnulib, pax-utils 등의 아주 중요한 툴들이 포함되어있어서 이것들이 빌드가 안되면 아무 것도 못한다는 얘기다.
오픈인디아나 148 버전에서는 정상적인 설치가 가능했다.
 

일단 앞에서 2번째까지인 gnuconfig, autoconfig는 빌드가 잘 된다. 하지만, 다음 패키지인 zlib에서 에러가 나는데, 에러메시지를 보면 scanelf라는 명령어가 없어서 빌드할 수 없다는 메시지가 나온다.
(/export/home/jswlinux/gentoo/var/tmp/portage/sys-libs/zlib-1.2.5-r2/temp/environment: line 4263: scanelf: command not found)
문제는 scanelf라는 명령어는 pax-utils에 포함된 명령어이다. 뭘 어쩌라는 말인지...
그래서 pax-utils 소스를 받아다 빌드를 해서 scanelf라는 명령어를 구했는데 일단 해당 메시지가 나오는 패키지는 컴파일이 됐다 (뭔지는 까먹었다). 이게 잘 되서 다음 패키지로 넘어갔고 두어개 정도가 이상없이 잘 빌드가 됐는데, perl에서 더 이상 진행이 안된다. 에러메시지는 
ld.so.1: as: fatal: libz.so.1: open failed: No such file or directory
라고 나오는 것이다. 분명히 저런 파일들은 라이브러리 디렉토리에 다 있었다. 그래서 혹시나 싶어 
export CC="/usr/sfw/bin/gcc" 라고 해주고 다시 빌드를 해봤지만 좀 되는가 싶더니 여전히 똑같은 에러메시지를 냈다. 이것 때문에 해외의 수많은 웹사이트를 뒤지고 다녔지만 자료가 별로 없었다. 국내는 전무한 상태이고, 솔라리스에 젠투 Prefix가 있는지 아는 사람조차 있을까 싶다.
더 이상 진행이 안되는 데에 시간을 계속 쓰고싶진 않았다. 일단 내 지식으로는 해결이 불가능한 부분이기도 하고...
혹시나 오픈솔라리스가 아닌 그냥 솔라리스10이면 되지 않을까 하는 생각도 들지만 나중에 시간이 나면 해볼 생각이다.
만약 pax-utils가 정상적으로 빌드되신 분들은 아래의 사항을 계속 진행하시면 된다.
다시 한 번 강조하지만,  오픈인디아나에서는 잘 된다. 

Portage를 emerge한다.
$ env FEATURES="-collision-protect" emerge --oneshot portage
오픈인디아나 148 버전의 경우는 여기서 에러가 나는 경우 아래처럼 한다.
mv $EPREFIX/usr/lib/libpython2.7.a 
$EPREFIX/usr/lib/_libpython2.7.a 
처음 부트스트랩 당시 빌드됐었던 파이썬의 바이너리 때문에 컴파일이 안된다는 얘기다. 


이제 임시폴더를 지우고 bash를 rehash한다.
$ rm -Rf $EPREFIX/tmp/*
$ hash -r

tree를 업데이트하자.
$ emerge --sync

system을 emerge한다.
$ emerge -u system
오픈인디아나 148의 경우 여기서 에러가 난다. gcc 4.5.2와 mpc 라이브러리간의 circular dependencies 충돌인데 
아직 해결 못했다.  해결했다. 파일을 하나 열고
$ vi $EPREFIX/etc/portage/package.mask
아래의 내용을 입력한다.
>=sys-devel/gcc-4.2.4-r01.3
그런다음 
$ env FEATURES="-collision-protect" emerge --oneshot findutils
끝나면 다시 USE=-git emerge -uav system 해보자. 리스트 뜬다. 뭐 사실은 해결이라기보단 그냥 gcc 4.5.2를 안쓰겠다고 막아놓은 거다.

또한 grep-2.9에서 에러가 날 경우, 위의 예처럼 grep 2.9 버전도 그냥 막아버리자.
큰 이상은 없을거다. 

참고로 USE 플래그나 CFLAGS 옵션을 따로 주는 방법인데 매뉴얼에 나와있길래 적어본다.
$ echo 'USE="unicode nls"' >> $EPREFIX/etc/make.conf 
$ echo 'CFLAGS="-O2 -pipe"' >> $EPREFIX/etc/make.conf 
$ echo 'CXXFLAGS="${CFLAGS}"' >> $EPREFIX/etc/make.conf

이제 대망의 마지막 작업이다.
$ emerge -e system

이것으로서 솔라리스에 원하는 젠투 패키지를 마음대로 가져다 설치할 수 있다. 남부럽지않은 패키지 시스템을 솔라리스에 갖추게 된 것이다.

Bootstrap된 Prefix 환경을 사용하기 위해서는 아래의 스크립트를 사용할 것을 권장한다.
$ cd $EPREFIX/usr/portage/scripts 
$ ./bootstrap-prefix.sh $EPREFIX startscript


블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,
3편까지 해서 모두 잘 따라오셨다면 이제 X를 설치할 차례다. 필자의 경우, X를 쓰지않고 콘솔에서 모든 걸 다 해결하기 위하여 프레임버퍼, 부트스플래쉬 등등 여러가지 유틸리티를 깔아봤긴 했지만 일단은 한글을 읽고쓰는 것이 불가능하다는 큰 단점 때문에 일단 X를 빌드하긴 했다.

또다른 X 빌드의 이유 중 하나는, 인터넷 공유기의 암호가 WPA로 되어있는데 WPA 접속을 가능하게끔 해주는 패키지의 속성에 반드시 X를 빌드해야만 했다. USE="-X"를 넣고해도 소용이 없었다. 그래서 무선랜도 가능해야했고 혹시나 모를 비상을 위해서 X와 KDE로 빌드를 시작했다.

사실, X-Windows 설치에 비하면 지금까지 해왔던건 아무 것도 아니다. 그래픽카드마다 드라이버 잡아줘야하고 xorg.conf 파일 세팅해줘야하고 엄청난 컴파일 시간을 보내야하고... 그나마 96년도부터 리눅스를 써온 필자로서는 xorg.conf 파일의 설정이 그리 어렵게 느껴지진 않았지만, 처음 해보시는 분들은 아마 크게 당황하실 거다. 게다가 필자가 처음 젠투를 설치했었던 대략 2004년도 당시의 컴퓨터로는 젠투 기본시스템+X+GNOME+Firefox까지 빌드하는데 무려 일주일씩 걸렸었다. 그런데 그 짓을 무려 7번이나 했다.

아마 X를 빌드하다보면 2-3개 패키지 정도는 에러내면서 설치를 멈출거다. 그 정도는 사실 에러메시지 보면서 해결해내야한다. 필자 역시 프로그래머는 아니지만 에러메시지 보고 대략 추측으로 때려서 해결한 문제가 대부분이다. 또한, 젠투에서 패키지 빌드하는 도중에 뱉어내는 에러들은 대부분 USE 플래그에서 일어난다. 일부 문제의 경우는 ACCEPT_KEYWORDS에서 생기는 경우도 있지만 대부분은 USE에서 난다.
단순한 에러의 예를 들자면
메시지: Configure: error: --zip not found in $PATH
이러한 메시지가, 길고 긴 emerge 에러메시지 중간에 위치하는데, 이런걸 들여다보면 해결이 보이지 않는가?
emerge zip 하면 해결이 되는 거다.

조금 더 해보자.
phpmyadmin을 빌드하다 에러를 냈다. phpmyadmin이, 뭔가를 컴파일해서 만들어내는 패키지가 아님에도 불구하고 에러를 냈다. 처음에는 이해가 되질 않았다. 사실 지금도 이해는 안가긴 하고 사이트가서 직접 파일들 다운받아다 압축만 풀면 해결되는 문제니까 그럴 수 있었지만 그냥 해결을 하고싶었다.
에러메시지가 길긴 하지만 올려본다.

뭐 솔직히 나도 무슨 말인지는 모른다. 나도 프로그래머가 아니니까.
다만 눈길이 가는 부분이 있다면
 * dev-lang/php-5.2.11-r1 needs to be re-installed with all of the following
 * USE flags enabled:
 * 
 * crypt ctype pcre session unicode
 * 
 * as well as any of the following USE flags enabled:
 * 
 * mysql or mysqli if using dev-lang/php-5
이 부분이다.
해석을 해보면, "아래의 USE Flags를 활성화시켜서 php를 재설치해야합니다, crypt, ctype pcre session unicode"
"또한 만약 php5를 사용 중이라면 다음 패키지도 USE 플래그를 활성화시켜야합니다. mysql 또는 mysqli"

간단하다. USE="crpt, ctype pcre session unicode" emerge -avq php mysql 했다.
그리고나서 emerge phpmyadmin 했다. 설치가 잘 됐다.

X 설치를 준비하자. 일단 사운드 데몬을 설치한다.
# emerge alsa-utils
# alsaconf 사운드카드를 잡아주는 유틸리티이다.
# rc-update add alsasound boot 아마도 boot에 등록하는 첫 데몬이 아닐까 싶다.
# gpasswd -a USERNAME audio USERNAME에 각자의 로긴아이디를 넣는다. 사운드를 이용하게해준다
# emerge madplay mpg123 gstreamer 콘솔에서 사용할 수 있는 mp3 플레이어를 설치한다.
# env-update;source /etc/prpofile
# mpg123 test.mp3 MP3 파일 하나를 가져다 테스트 해본다.
# emerge pmount 일반유저로서 USB 저장장치 등을 마운트/마운트해제 할 수 있게 해주는 툴이다.

다음  avahi를 설치해야하는데, 사실 이거없이 X 이용하는데는 지장이 없겠지만 필자 생각으로는 이걸 먼저 해야할 것 같다. 그래야 후에 문제가 생기지 않을 것 같다. 다만 avahi에 걸려있는 의존적인 패키지들이 많기 때문에 이거 빌드하는데 시간이 꽤 걸릴 거다.
# emerge avahi

다 됐으면 X를 빌드하자. X는 데스크탑 매니져를 빌드하면 당연히 의존관계에 있기 때문에 같이 딸려오니, 데스크탑 매니져를 설치하자. 필자는 KDE를 설치했으므로, KDE를 기준으로 설명한다. 혹시모르니까 X가 빌드되어있는지 확인해보자.
# emerge -pv xorg-server

노트북 쓰신다면 마우스패드 (시냅틱) 드라이버를 설치해야한다. 이거 안하면 정말 피곤하다. 마우스가 지멋대로 움직이는데, 아마 노트북을 집어던지실지도 모른다.
# emerge -avq xserver-xorg-input-synaptics

-pv는 뭐뭐 설치될지 패키지 리스트만 물어보고 끝나지만 -av를 붙여주면 리스트를 보여주고 설치할 건지 아닐건지를 물어본다. 필자는 명령어를 두 번 타이핑할 일이 없는 -av가 개인적으로 더 편하다.
 일단 USE 플래그 먼저 점검을 해야하는데 KDE를 설치할 때 -gtk를 하지말자. 한글입력기를 설치해야하는데, ibus, scim-qtimm 등이 작동이 잘 안된다. 적어도 필자의 시스템에서는 그랬다. 둘다 전혀 작동이 되질않았고 결국은 국산 nabi를 이용해서 해결을 봤다. 근데 nabi는 gtk 어플이기 때문에 -gtk를 넣으면 안된다.
먼저 어떤 패키지들이 어떤 속성을 갖고있는지 체크를 해보자.
# emerge -pv kdebase-meta

kdebase-meta라는 패키지는, 패키지 이름이 아니라 KDE의 기본패키지들의 목록을 갖고있는 패키지다. 따라서 kdebase-meta로 -pv를 날려주면 KDE의 기본시스템에 어떤 패키지들이 설치되는지를 보여준다. 내용을 보시고 만약 본인이 (-)를 해준 옵션이 있다면 USE를 수정해주자. 그런 다음 빌드를 시작하자.
# emerge -q kdebase-meta

-q 옵션은 빌드하면서 나타내는 컴파일러 메시지를 화면에 뿌려주지 않는다. 조용히 빌드해주고 에러가 났을시만 메시지를 뿌려준다. 전기세라도 좀 아낄겸 Alt+F2로 다른 콘솔로 넘어가 setterm -blank 3을 해주자. 키보드 입력이 없을시 3분 후에 모니터를 꺼준다.

X까지 같이 빌드하기 때문에 꽤 오래 걸릴거다. 밤에 시작해서 아침에 자고일어나면 끝나있을 거다. 이제 나머지 KDE패키지들을 빌드한다. 역시 -pv를 줘서 USE플래그를 확인한다. 그리고 빌드를 시작한다.
# emerge -pv kde-meta
# emerge -q kde-meta

한 가지 덧붙이자면, meta라는 패키지 자체가 뭔가 있는 패키지가 아니라 관련패키지의 목록을 갖고있는 패키지이기 때문에 컴파일하다 중간에 에러내면서 멈추면, 다시 수정하고 emerge kde-meta를 했다간 이미 컴파일이 끝난 패키지도 다시 다 하는 것을 볼 수 있다. 이것은, emerge가 해당 패키지가 빌드가 됐는지 안되는지에 대한 여부를 판별하지 않기 때문이고 또한, 해당목록에 존재하는 패키지를 다시 설치하려고 하기 때문에다. 말로 설명하기가 어려운데, 해보시면 이해가 가실 거다. 그나마 다행인 것은 kdebase-meta는 패키지가 몇 개 안된다.

kde-meta는 아주 많다. 끝나고나면 패키지를 꼭 적용해주고 xorg.conf를 설정해야한다.
# env-update; source /etc/profile
# Xorg -configure

이제 ls /root를 하면 못보던 파일 하나가 있을 거다. Xorg가 자동으로 설정을 잡아서 내놓은 파일인데 이것을 테스트삼아서 X를 띄워보고, 잘 뜨면 이 파일을 그대로 쓰면 되겠다. 혹시 모르니까, 다른 컴으로부터 루트로 ssh에 접속해있자. 이거 실행하고나면 키보드가 안먹을 수도 있다. 다운된 건 아니다. 키보드가 응답을 안하는데, 이유는 잘 모르겠다. 필자의 시스템에만 한정된 현상일 수도 있다.
# X -config /root/xorg.con.new

하고나면 뭔가 뜨긴 뜬거 같은데 보이지는 않고, 다시말해 까만화면을 백라이트가 비추고있는 듯한 화면이 뜰거다. 이제 Ctrl+Alt+Back Space를 눌러서 X를 종료하고 xorg.conf 파일을 만들어준다.
키보드와 마우스의 기본적인 움직임 정책파일을 세팅해줘야한다.
# cp /usr/share/hal/fdi/policy/10osvendor/10-input-policy.fdi /etc/hal/fdi/policy
# cp /usr/share/hal/fdi/policy/10osvendor/10-x11-input.fdi /etc/hal/fdi/policy

/etc/hal/fdi/policy/10-x11-input.fdi 파일을 편집에서 라인 한 줄을 추가시킨다.
<match key="info.capabilities" contains="input.keys">
      <merge key="input.x11_driver" type="string">keyboard</merge>
      <merge key="input.xkb.options" type="string">terminate:ctrl_alt_bksp</merge>
      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
             string="Linux">
        <merge key="input.x11_driver" type="string">evdev<merge>
      </match>
</match>

이제 kdm을 띄운다. kdm은 root에서만 띄울 수 있다.
# cp /root/xorg.conf.new /etc/X11/xorg.conf
# kdm

X의 설치가 끝났다. 솔직히 중간중간 에러나서 컴파일이 중단된 게 많았는데, 이걸 하나씩 잡아가면서 스크린샷을 찍지 못했던 게 개인적으로 아쉬웠다. 콘솔에서도 스크린샷을 찍을 수 있는 유틸이 있다는 걸 알았다면 더 좋았을텐데 무척 아쉽다.

한글입력기 nabi를 설치하고 로케일을 세팅해줘야한다. 이것은 구글링하시면 수도없이 쏟아져나온다. 다만 한가지 다른 점은 우리는 KDE를 빌드했으므로 GTK_IM_MODULE=nabi 말고도 QT_IM_MODULE=nabi를 추가시켜줘야한다는 점이다.

그외 설치했던 툴로는, fbgrab (콘솔에서 스크린샷을 찍는 툴), links2 (콘솔용 그래픽 웹브라우저) 정도가 있다.
되도록이면 X를 띄우지 않기 위해서 콘솔용 툴들을 구글링을 통해서 많이 접했고 대부분을 설치해서 써봤다. 정말 X 없이도 그런대로 쓸만했었다. 물론 데탑용 컴퓨터로서는 최고의 매킨토시가 있었으니 그런대로 쓸만했었겠지. 참고로 부트스플래시 사용할 때, Grub에 vga=792 옵션 있으면 커널 부팅메시지가 전부 보여서 별로 예쁘지가 않았다. 부트스플래시 사용할거면 차라리 vga 옵션은 꺼주는 게 낫다. 어차피 부트스플래시를 이용한 고해상도 콘솔을 쓸거니까.

젠투용 각종 테마들은 http://gentoo-art.org/ 에서 구할 수 있다.

젠투 설치기를 여기서 끝마치기로 한다.
블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,
이제부터는 시간 오래 걸리고 지루한 것만 남았다.

부트스트랩 과정을 지켜보신 분은 아시겠지만 중간에 gcc를 컴파일하는 과정이 있다. 사실 그거 앉아서 지켜보는 사람이 별로 없을텐데 본인은 아주 이상한 성격이라서 컴파일하는거 아무 뜻도 모르면서 그냥 계속 지켜본다. 일단 부트스트랩이 끝났다는 의미는, 시스템을 설치할 준비가 됐다는 얘기다.

먼저, 컴파일러의 작동을 캐싱해주는 C Cache를 설치하자. 앞서도 잠깐 설명했지만, C 컴파일러가 실행하는 단순/반복 작업에 해당하는 것들을 캐싱을 해서, 다음번 컴파일할 때 더 빨리 컴파일해줄 수 있도록하는 프로그램이다. 아마도, 여러번 컴파일할 일이 있을까 라고 생각하실 분이 계실텐데, 있다. 분명히 생긴다. 그러니까 캐쉬 설치한다고 손해보는 것도 아니니까 그냥 설치하자.  참고로, 컴파일할 때 화면에 나오는 메시지들을 보고싶지 않으면 -q 옵션을 붙이시면 된다.  그러면 패키지당 딱 2줄만 표시한다.
# emerge -q ccache

C Cache에 대한 make.conf 설정은 앞편에서 했으니 링크만 좀 잡아주도록 하자. C Cache가 유저별로 캐싱디렉토리를 저장하게 되어있는데, 어차피 이 글을 보는 분들은 개인적인 컴퓨터에 젠투를 설치하실 분이니 그냥 캐싱을 한 디렉터리에 하도록 하자.

# rm -rf ~/.cache
# ln -s /var/tmp/ccache $HOME/.ccache

이것으로 C Cache의 설정이 완료됐다. 뭔가 하나 컴파일이 끝난 뒤 ccache -s 를 하면 캐시된 상황을 보여줄거다. 뭔가 숫자가 조금이라도 올라가는 것 같으면 작동하고 있는거다.

이제 부트스트랩 과정에서 설치된 패키지들을 적용시키자.
# env-update
# source /etc/profile

사실, env-update를 꼭 해야할만한 패키지들은, 설치가 끝나면 알아서 해주긴 하는데 그래도 혹시 모르니까 하자. 젠투 쓰다보면 저 위의 명령어는 손에 붙는다. 습관적으로 때리게 된다. 
이제 perl을 빌드할 차례다. perl에 의존적인 패키지들을 위해 아래의 명령어를 쳐준다.
# emerge --nodeps -q gdbm libperl perl

내가 설치 중 참고한 http://xprogrammer.tistory.com/40 문서에 의하면, 위의 패키지를 먼저 설치해주지 않으면 나중에 두고두고 후회할 일이 생긴다는데, 나는 저 메시지보고 바로 설치를 해버려서 무슨 후회할 일이 생기는지는 잘 모르겠다. 실험정신이 투철한 분이 계시면 그냥 건너뛰어보셔도 되겠다. --nodeps는 의존성 관계 무시하고 설치하라는 옵션이다.

설치가 끝난 뒤 패키지를 적용한다.
# env-update
# source /etc/profile

이제 시스템을 설치한다. 듀얼코어/코어2듀어 사용자라고 해도 꽤 걸린다. 특히 글쓴이가 만들어놓은 make.conf 파일을 그대로 쓰시과 eselect의 프로파일에서 GNOME이나 KDE를 선택하셨다면 300개가 넘는 패키지를 컴파일하려고 할거다.  일단, 베이스만 빨리 빌드하시고 싶으시면 다시 프로파일을 1번으로 바꾸시면 된다.  그러면 약 180개 정도의 패키지를 빌드한다.
# emerge -eq system

-e 옵션은 해당 패키지와 의존성 관계된 모든 패키지를 다시 컴파일하는 옵션이다. 보통의 경우는 아마 쓸 일이 없을텐데 CFLAGS를 바꿨다거나 gcc 버젼이 아주 크게 업데이트 됐을 때 이외에는 아마 안쓸거다.
위의 시스템 빌드가 끝나고 나면 아래의 명령어를 입력해서 제대로 설치가 됐는지 확인한다.
# emerge -epv system

뭔가 주르륵 나오는데, 일단 딴건 다 무시하고, 맨 앞에 [ebuild R]이라고 적혀있는지만 확인하자.
만약 [ebuild N] 이라고 적혀있으면, 해당 패키지는 설치가 안됐다는 얘기다. 그런데 여기서 설치안된 패키지 빌드한답시고 -e 붙였다간 시스템 전체를 싸그리 다시 다 컴파일할 거다 (위에 설명한대로). 그러니 설치가 안된건 그냥 개별적으로만 하자. emerge package_name 하시면 되겠다.

시스템을 적용시키자.
# env-update; source /etc/profile

아까 위에서 emerge -epv system 해서 확인하실 때 util-linux, shadow, psmisc, module-init-tools, procps, man, pciutils 설치됐는지 같이 확인하자. 없으면 설치하자.
만약 pciutils 설치하자 에러나면 다음과 같이 한다.
# USE="-zlib" emerge -q pciutils

위의 USE="-zlib" 라는 의미는, pciutils를 설치할 때만 일시적으로 zlib 플래그를 제거하고 설치하겠다는 것을 의미한다. 종종 쓰게될 거다. 특히 GNOME이나 KDE 설치할 때는 플래그들이 많을수록 복잡해지기 때문에 USE 플래그 때문에 설치가 안되는 일이 많이 생긴다. 그 정도는 에러메시지 보고 고칠 정도는 되야된다.
컴퓨터 이름을 정해야한다.
# nano /etc/conf.d/hostname

아마 샘플이 들어있을텐데 형식은 이렇다.
HOSTNAME="computer_name"
저장한다. nano의 저장 후 종료키는 Ctrl+x다. 아마 vi가 설치되어있을테니 원하시는 것으로 하시면 된다.
이제 컴퓨터 도메인 이름을 세팅해야한다.
# vi /etc/hosts

형식은 대강 다음과 같이 하시면 된다.
127.0.0.1     computer_name.computer_domain computer_name localhost

이제 랜카드를 잡아줘야한다. 이거 보시는 분들은 모두 집에서 공유기 쓰실테니 dhcp로 ip를 잡아줘야할거다.
# emerge -q dhcpcd
# rc-update add dhcpcd default

위의 rc-update는 매우 유용하고 편리한 명령어인데, 부팅시 시작하는 프로그램들(서버데몬)을 등록/제거해주는 명령어다. rc-update add 하면 등록, delete 제거이다. 뒤의 default는  시작프로그램을 의미하고 boot라고 하면 부팅할 때 윈도우로 치자면 드라이버 로딩하는 것 같은 개념인데 대부분의 데스크탑유저가 boot에 등록할 일은 거의 없을 거다. 어쨌든, 위와 같이 해주고 세팅을 해줘야한다.
# vi /etc/conf.d/net

랜카드가 eth0 이신 분들은 아래와 같이 넣는다.
config_eth0="dhcp"

끝이다. 매우 쉽지 않은가. 이제 0부팅하면서 랜카드가 자동으로 활성화되도록 한다.
# cd /etc/init.d
# ln -s net.lo net.eth0 
# rc-update add net.eth0 default

초반 제일 중요하다고 볼 수 있는 ssh를 설치하자.
# emerge ssh
# rc-update add sshd default

다음 ssh를 사용하려면 일반사용자를 등록하고 패스워드를 정하자.
일단 root 패스워드부터 만들자.

# passwd
# adduser USERNAME -m -d /home/USERNAME -G users,wheel,audio -s /bin/bash
# passwd USERNAME

그 이외 몇가지 필수적인 시스템 툴을 설치하자.
# emerge -q syslog-ng vixie-cron hotplug gentoolkit dbus hald rdate grub

설치가 되는 중간에, Alt+2 키를 눌러 다음 콘솔로 넘어가서 몇가지 작업을 해주자.

# chroot /mnt/gentoo /bin/bash
# env-update (chroot 하고난 다음에는 반드시 해야한다)
# source /etc/profile

먼저 시스템의 시간을 설정하자.
# ln -sf /usr/share/zoneinfo/Pacific/Honolulu /etc/localtime

글쓴이는 지상낙원 하와이에 살아서 호놀룰루로 시간을 맞췄다. 한국 사시는 분들은 Asia/Seoul 하시면 되고, 그외 해외 사시는 분들은 ls /usr/share/zoneinfo 하셔서 해당지역을 /etc/localtime으로 링크해주시면 된다.

이제 fstab 파일을 수정해야한다. 이거 잘못 수정하는 것이 커널패닉의 원인이기 때문에 잘해야한다. 어렵지는 않은데, 파티션에 대한 개념이 안잡혀있으면 어려울 거다.
# vi /etc/fstab

처음 열면
/dev/BOOT     /boot     어쩌구저쩌구
/dev/ROOT     /         어쩌구저쩌구
라고 되어있는데 여기서 BOOT, ROOT이거를 꼭 편집해야한다. 이번 젠투설치하면서 구글링을 수도없이 많이 했는데 이거 그대로 놓고 커널패닉 난다고 질문하는 분 여럿 봤다.
먼저 필자의 fstab이다.

/dev/sda3               /               ext3            noatime         1 1
/dev/sda4               none            swap            sw              0 0
/dev/cdrom              /mnt/cdrom      auto            noauto,ro       0 0
shm                     /dev/shm        tmpfs           nodev,nosuid,noexec    0 0
proc                    /proc           proc            default         0 0

첫번째 부분은 디바이스명이고 두번째 부분은 마운트 포인트, 세번째는 파일시스템 종류, 네번째는 옵션, 마지막은 덤프와 패스 옵션이다.
세번째꺼까지는 아마 필자나 여러분이나 비슷비슷할 거다. 만약 /boot 파티션을 따로 넣어주신 분이라면,
/dev/BOOT              /boot           ext2            noauto,noatime  1 2
정도로 넣어주시면 되겠다. 어디까지나 fstab 예제에서 갖고왔다.
참고로 덤프/패스에서 패스 부분은, 1을 넣으면 마운트 일정횟수 도달시 fsck를 실행해서 파일시스템을 체크하고, 0을 넣으면 검사하지 않는다.

그 다음 1번 콘솔에서 걸어놓은 패키지들의 빌드가 끝났으면 패키지를 등록하고 몇몇을 부팅시 자동으로 실행되게 등록한다.

# env-update;source /etc/profile
# rc-update add syslog-ng default
# rc-update add vixie-cron default
# rc-update add hotplug default
# rc-update add dbus default
# rc-update add rdate default

타임서버와 시간을 맞춘다.
#vi /etc/conf.d/rdate

RDATE_SERVER="gentoo.pool.ntp.org" 대충 이런 식으로 디폴트값이 되어있을텐데 따옴표 안에
"time.bora.net"을 넣자. 참고로, 아까 위에 타임존 링크를 거신 분이라면 해외에 사시는 분들도 보라넷으로 시간동기가 가능하다.
이제 시간을 맞춰주자.
# /etc/init.d/rdate start

아마 한동안은 부팅시 /etc/init.d 혹은 conf.d 등의 시간이 안맞다던가 뭐 파일이 미래에 수정됐다느니하는 메시지를 보실 수도 있다. 근데 rdate를 부팅시 자동으로 뜨게 등록했으니 조금만 쓰다보면 안나올거다.
이제 grub을 설정하자.
mtab을 만들어준다.
# grep -v rootfs /proc/mounts > /etc/mtab

Grub을 설치한다.
# grub-install --no-floppy /dev/sda

여기서 시간 좀 걸릴 수 있다.
# grub --no-floppy /dev/sda

Grub 프롬프트가 나오면 아래와 같이 입력한다.
grub> root (hd0,0)      # 첫번째 파티션이면 0,0이고 두번째 파티션이면 0,1 그리고 세번째 파티션이면 0,2이다.
grub> setup (hd0)      # 첫번째 하드디스크면 hd0이다. 두번째는 당연히 1이다.
grub> quit

이제 Grub이 설치됐다. 설정을 해보자.
# vi /boot/grub/grub.conf

default 0     # 첫번째 메뉴를 기본값으로 한다.
timeout 3    # 부팅메뉴시 자동으로 부팅되도록하는 시간이다. 초단위로 정한다.
splashimage=(hd0,2)/boot/grub/splash.xpm.gz # Grub 메뉴에서 배경그림을 나오게끔 하는 옵션이다. 넣고 싶으신 분은 /boot/grub/에 해당파일이 있는지 확인하고 파일명이 맞는지까지 보자. hd0,2는 첫번째 하드의 3번째 파티션이라는 의미이다. 

title Gentoo Linux
root (hd0,2)
kernel 
initrd
savedefault

title Windows 7
rootnoverify (hd0,1)
makeactive
chainloader +1

이 정도로 간단하게 하시면 되겠다. 리눅스 부팅부분에 kernel 하고 다음 부분을 적어줘야하는데 이건 커널컴파일이 끝나고 적도록 하자. 

이제 마지막 과정이라고 할 수 있는 커널을 컴파일할 차례다. 초보분이시라면 가장 겁나는 부분이 아닐까 싶다. 이런 분들을 위해서 젠투는 알아서 컴파일해주는 도구를 마련해줬다.
일단은 커널 소스부터 받아오자.
# emerge -q gentoo-sources

여기서 커널을 직접 세팅해서 컴파일할 줄 아시는 분들은 (굳이 이 매뉴얼 자체가 필요없으신 분들이겠지만) 바로 /usr/src/linux로 가셔서 진행하시면 되겠고, 모르시는 분들은 커널컴파일 도구로 커널을 설치하자. 직접 컴파일하실 분들에게 참고로 말씀드리자면 genkernel로 커널을 컴파일하는 것과 직접 하는 것은 /boot/grub/grub.conf 파일의 내용이 다름을 유의하자.
# emerge -q genkernel
# genkernel

시간이 꽤 오래 걸린다. 대부분의 컴퓨터에서 부팅할 수 있는 범용적인 커널을 만들기 위해 대부분의 기능들을 모듈로 컴파일해버리기 때문에 꽤 오래 걸린다. 끝나고나면 ls /boot 해서 커널이 설치됐는지 확인하자.
확인이 됐으면 이제 남은 /boot/grub/grub.conf 파일을 수정할 차례다.
커널의 정확한 이름을 적어놓고 grub 파일을 편집한다.
# vi /boot/grub/grub.conf

kernel 다음에다 아래과 같이 입력한다.
kernel /boot/kernel-genkernel-x86-2.6.30-gentoo-r6 root=/dev/ram0 init=/linuxrc \
             ramdisk=8192 real_root=/dev/sda3
initrd /boot/initramfs-genkernel-x86-2.6.30-gentoo-r6

genkernel로 커널을 설치한 분이 아니시라면 아래와 같이 간단하게만 해도 된다. 또간 initrd는 빼도 된다.
/boot/vmlinuz-2.6.31-gentoo-r6 root=/dev/sda3 ro

저장하자.
이제 모든 설치가 다 끝나고 최소한의 리눅스 시스템이 완성됐다. 마지막으로, 설치된 모든 패키지들의 의존성 관계를 검사하자.
# revdep-rebuild
# env-update; source /etc/profile

그외 설치는 다음편에서 계속한다.


블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,
대망의 make.conf  파일 편집이다. 사실 이것을 지금하지 않아도 부트스트랩을 하는데는 문제가 없지만, CFLAGS 때문에 그냥 미리 다 세팅해놓고 시작했다.

사실 젠투의 최적화는 여전히 말이 많은 부분이고 논쟁의 여지가 있는 부분이다. 따라서, make.conf의 CFLAGS는 별로 의미없는 옵션일지도 모르겠지만 1편에서도 적었듯이 내가 만족스럽다는데 누가 뭐라고 하겠는가. 이 글을 읽는 분이라면, 누가 이래든 저래든 젠투설치 하실 분이라고 생각한다. 젠투 최적화의 허와 실에 대해서 알고싶으신 분은 http://kldp.org/node/81215 글을 읽어보시면 되겠다. 아마 매우 도움이 될 거다.

먼저 필자의 make.conf 파일을 올려서 설명해드린다. 내 블로그를 좀 읽어보신 분은 보셨겠지만 나는 전산학도도, 전산업계에 근무했던 사람이 아니다. 어디까지나 금융권에서 예금이랑 대출상담하면서 직장생활했었고 단지 리눅스는 취미로 했을 뿐이다 (2014년 9월 개정하는 현재는 전산업계에 근무하고 있다).

1편에서 얘기하면 까먹으실까봐 지금 얘기한다.
글쓴이의 시스템은 인텔 제온 E5-2643, 램64기가, nVidia 쿼드로 K4000 정도다.

/etc/make.conf 파일은 대략 3개의 섹션으로 나뉜다고 볼 수 있다(라고 생각한다). 
첫번째 섹션은 전체적인 환경을 설정하는 섹션, 두번째는 USE Flag, 세번째는 미러링서버 지정이다.
USE Flag도 전체적인 환경을 설정한다고 볼 수 있지만 USE Flag 자체만으로도 상당히 어렵기 때문에 굳이 나눴다.

CHOST="x86_64-pc-linux-gnu" 
64비트로 빌드할 것을 정한다. 32비트로 원하시면 CHOST="i686-pc-linux-gnu"로 하시면 된다.
보다 자세한 사항은 http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel 여기를 참고하시면 된다.

CFLAGS="-march=corei7-avx -msse -msse2 -msse3 -mmmx -O2 -pipe -fomit-frame-pointer"
먼저 이 부분에 대한 자세한 사항은 여기를 클릭하시라.
내가 프로그래머가 아니니 설명이 틀릴 수도 있다는 점을 이해부탁드린다.
코어2듀오일 경우 mtune=core2 -march=core2 옵션을 붙이시면 된다.
mssse3 msse3은, 사실 gcc 홈페이지에도 어떻게 붙이면 어떻게 된다는 정확한 설명이 없는데,
cat /proc/cpuinfo 하시면 나오는 부분이니 없으면 빼시고, 있으면 넣으시면 되겠다. 필자는 저렇게 넣고
이상없이 잘 됐다. mssse3이 msse3보다 나중에 나온 명령어인데, mssse3이 msse3까지 포함하는건지 아닌지
설명이 없어서 그냥 넣어버렸다.
-O3은 최적화의 레벨을 정하는 건데, 보통 가장 권장되는 옵션은 -O2이다. -O3가 가장 높은 레벨인데 사실 -O9
까지 있지만 O3 이상은 다 똑같단다. 그리고 O3로 컴파일했다고 해서 얻는 이득보다는 손해가 더 많고 O3로 해봐야
더 느려질 수 있다.
-pipe와 -fomit-frame-pointer는 권장되는 옵션이다. 그래서 보통 다들 꼭 넣는다. 나도 뭔지는 모른다.
설명을 하자면, fomit-frame-pointer는, 쓰이지않는 포인터를 생략해버린다는 옵션인데 그게 무슨 말인지는
잘 모르겠다.
보통 가장 일반적인, 즉 누구에게나 전부 이상없이 빌드할 수 있는 옵션 플래그를 불러보자면, 아마도
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=native-O2 -pipe"
정도이리라 싶다.

CXXFLAGS="${CFLAGS}"
대충 감이 오실 거다. 위에꺼랑 똑같이 하겠다는 거다.

MAKE_OPTS="-j17 -l32"
j값은 자기 컴퓨터가 가진 CPU 코어 갯수에 +1을 하면 된다.  총 작업수를 의미한다.
l값은 CPU 코어 갯수에 2를 곱한다.  코어가 16개 (물리 8 + 하이퍼쓰레딩 8 = 16)라면 숫자는 32가 된다.

VIDEO_CARDS="intel i965"
그래픽카드를 지정하는 것인데, 위의 예제는 인텔통합칩셋을 쓰시는 분을 위한 예제이다.

ALSA_CARDS="hda-intel"
역시 인텔통합칩셋에서 사용하는 사운드카드의 드라이버명이다. 참고로 GM45 칩셋이다. 그외 칩셋들은 "ALSA_CARDS"로 구글링하시면 나올거다. 대충 눈치껏 보고 넣으면 된다.

ACCEPT_KEYWORDS="amd64"
64비트로 빌드시 amd64를 넣고, 32비트일시 x86을 넣으시면 된다. 참고로 인텔 코어2듀오더 amd64라고 한다. 틸드(~)를 넣으면 소프트웨어를 최상위 불안정 버전까지 써보겠다는 의미가 된다.  참고로, 빌드 중 에러가 간간히 난다.

LINGUAS="en ko"
언어를 세팅해준다. 본인은 미국에 살고있기 때문에 컴퓨터에 통째로 한글만 나오면 좀 이상하다. 그리고 여기 사람들이 내 노트북의 모니터를 들여다볼 때 영어가 아니면 좀 불편해하는 감이 없지않아 있다. 그래서 일단 영어를 가장 먼저 했고 다음에 한국어를 넣었다. 사실 이게 순서가 상관은 없을 것 같은데, 그래도 혹시 몰라서 이렇게 했다.

FEATURES="ccache"
반복되는 컴파일의 캐쉬기능을 넣는 옵션이다. 다만, 이 옵션은 ccache라는 패키지를 빌드해야만 하는데, 그 전까지는 적용되지 않는다. 부트스트랩할 때부터 넣어놔도, 알아서 무시하고 빌드한다. 난 귀찮아서 미리 넣었다.

CCACHE_SIZE="2G"
위의 ccache의 캐쉬사이즈다. 캐쉬는 하드에 저장된다.

CCACHE_DIR="/var/tmp/ccache"
ccache의 경로를 지정한다. 이건 바꾸지 말자.

INPUT_DEVICES="evdev mouse keyboard synaptics"
입력장치를 나열한다. 노트북을 쓰신다면 시냅틱 마우스패드 입력기를 넣는다.

다음은 USE Flags다. 전부 다 설명할 수 없으니 USE flags의 설명이 나온 웹사이트 링크를 드린다.
엔하위키의 설명을 한 번 보시길 추천해드린다.

USE 플래그는, 시스템 전역 세팅을 위한 것인데 쉽게 설명드리자면, 만약 ffmpeg를 플래그에 넣었다면 X와 GNOME 혹은 KDE를 빌드할 때 동영상 관련 프로그램을 컴파일시 ffmpeg를 포함시켜서 빌드를 하게 된다.

아래는 필자의 세팅이다. 필자는 GNOME을 안쓰고 KDE를 쓰기로 했다. 남들 다 쓰는 GNOME을 안쓰는 이유는, 남들이 다 쓰는 걸 쓰고싶지 않아서다. 그래서 젠투를 쓰고 맥을 쓰는 이유지. 그외에도 쿠분투의 KDE를 보고 리눅스가 이렇게 발전했는가를 몸소 체험했다. 너무 예뻤다. 마지막으로, 미국에서 잘나가는 핸드폰 중 하나인 블랙베리의 프로그램들이 QT기반이란다.
GNOME으로 컴파일 하시고 싶으면 -qt4 -kde 하시고 gtk gnome 넣으시면 되겠다.  굳이 -qt4 -kde를 하진 않아도 된다.  kde나 qt를 사용하는 프로그램을 절대로 빌드하고싶지 않다면 -를 쓰면 된다.
필자는 abc 순서대로 적어놨다. 한줄로 길게 늘어뜨리면 편집할 때 귀찮다.

USE="-3dnow -3dfx  
a52 aac acpi apm alsa apache2 avahi aqua autoipd
berkdb bluetooth 
cjk curl cups crypt 
dga directfb drl dts  dvd dvdr dbus 
fbcon fbcondecor ffmpeg firefox flac 
gcj gd gif gpm gzip  
hal 
imagemagick imap innodb ipod -ipv6 iconv 
java javascript jpeg jpeg2k 
kde 
ldap 
-mozila mp3 mp4 mpeg msn -matrox mysql mysqli mhash mng 
ncurses networkmanager nls 
ogg opengl 
pcmcia pdf perl php png pnp -postgres python plasma 
qt4 quicktime 
readline ruby 
samba subversion ssl -slp svga szip sql svg smp 
tcl threads tk truetype tiff tcpd 
unicode usb 
vhosts vorbis -voodoo3 vim-syntax 
wifi win32codecs webkit 
X Xaw3d x264 xml xmlrpc xvid xcomposite 
zeroconf zlib"

나머지 미러설정인데, 이건 1편에서의 mirrorselect 명령을 실행했으면 설정되어있는 부분이다.


이제 대략의 설치할 준비는 다 끝났다. 사실 설치준비가 별 거 없다.
네트워크 설정 -> 파티션 준비/포맷 -> make.conf 파일 설정
이게 다다. 다만 우분투처럼 마우스 클릭만으로 끝나는 설치가 아니다보니 어렵게 느껴질 뿐인 것이고, 또한 다른 글에서 언급했듯 파티션이라던가 하는 아주 기본적인 내용에 대한 기초가 없어서 어렵게 느껴지는 것이다.

이제 루트디렉토리를 / 에서 /mnt/gentoo로 바꿔서 부트스트랩을 시작한다.
# chroot /mnt/gentoo /bin/bash

환경설정을 읽어와야한다.
# env-update; source /etc/profile

젠투 Portage의 트리를 받아와야한다. 이게 뭐하는 거냐면, 우분투/데비안 유저들이 apt-get install xchat2 라고 입력하면, 의존성 관계되는 패키지를 자동으로 계산해서 필요한 파일들을 모조리 받아와서 설치하는 시스템인데 젠투의 emerge도 그런 역할을 한다. 다만, Portage는 -BSD의 Port는- 프로그램들의 버전, 의존성관계, 컴파일하는 방법 등이 기술된 파일/디렉토리를 받아와서 오프라인이더라도 패키지의 검색이 가능하게끔 되어있다. 그래서 주기적으로 이 트리를 갱신해줘야한다. 
# emerge-webrsync

예전에는 rsync 프로토콜을 이용해서 한 5분쯤 걸리는 거 같은게 엄청나게 많은 것들을 보여줬는데, emerge-webrsync는 그냥 대충 간단한 메시지 정도만 보여준다.

이제 프로파일을 선택해야한다.  프로파일이란, 이 시스템이 최종적으로 어떤 상태로 갈 것인지를 정해서 시스템이 해당 목표로 빌드되도록 할 수 있다.  프로파일의 목록을 보자.
# eselect profile list
[1]  default/linux/amd64/13.0 *
[2]  default/linux/amd64/13.0/selinux
[3]  default/linux/amd64/13.0/desktop
[4]  default/linux/amd64/13.0/desktop/gnome
[5]  default/linux/amd64/13.0/desktop/gnome/systemd
[6]  default/linux/amd64/13.0/desktop/kde
[7]  default/linux/amd64/13.0/desktop/kde/systemd
[8]  default/linux/amd64/13.0/developer
[9]  default/linux/amd64/13.0/no-multilib
[10] default/linux/amd64/13.0/x32
[11] hardened/linux/amd64
[12] hardened/linux/amd64/selinux
[13] hardened/linux/amd64/no-multilib
[14] hardened/linux/amd64/no-multilib/selinux
[15] default/linux/uclibc/amd64
[16] hardened/linux/uclibc/amd64
지금은 아무런 프로파일도 선택되어있지 않으므로 1번에 * 표시가 되어있을 거다.  만약 그놈 데스크탑으로 빌드를 하고싶다면 4번이나 5번을 하면 된다.  참고로 systemd는 현재 날짜 기준으로 문제가 많으므로, 4번을 선택하면 된다.

#eselect profile set 4
#eselect profile list

4번에 * 표시가 되어있는 것을 볼 수 있다.

이것만 끝나면 신발끈(Boot Strap)을 묶자. 신발끈을 묶는 과정은 젠투의 패키지 시스템인 Portage와 필수패키지에 해당하는 gcc 등의, 시스템을 빌드할 수 있는 최소한의 패키지 8개로 구성되어있다.
# cd /usr/portage
# scripts/bootstrap.sh

필자의 시스템에서는 대략 1시간 가량 걸렸다. 여기까지가 Stage 1에 해당한다.
신발끈이 안묶어진다고 해서 포기하거나 우울해지지 말자. 사실 신발끈 안묶어지는 발이 많다고 한다. 근데, 사실 신발끈 못묶는다고 해서 그 사람이 나사가 하나 빠졌다던가 소위 말하는 병신은 아니지않나. 안되는 사람도 많으니, 안되는 거 붙잡고 삽질하지 말고 과감하게 Stage 3으로 넘어가시라. 그리고나서 시스템 전체를 다시 통째로 컴파일하면 Stage 1부터 한거랑 똑같이 된다.

참고로, 젠투 설치한다고 컴퓨터 끄지도 못하고 계시는 분들이 많아서 말씀드린다만 설치하다가 밖에 오랫동안 나가봐야할 일이 있으면 끄셔도 된다. 방법을 알려드린다.

먼저 chroot에서 빠져나가야한다.
# exit

다음 설치하다만 파티션들을 언마운트 해야한다.
# umount /mnt/gentoo/proc
# umount /mnt/gentoo

스왑파티션을 off 해준다.
# swapoff /dev/sda4

이제 종료한다.
# halt
또는
# poweroff

그런다음, 나중에 다시 설치할 때는 젠투설치씨디로 부팅을 한뒤, 아래와 같이 한다.
# mount /dev/sda3 /mnt/gentoo
# mount -t proc none /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev
# swapon /dev/sda4
# chroot /mnt/gentoo /bin/bash
# env-update; source /etc/profile (이거 빼먹으면 안된다)

다음 나머지를 이어서 하시면 되겠다.
Stage 2부터는 다음편에 한다.


블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,
남자라면 Stage 1부터라고 말씀하시는데, 뭐 사실 그런 것보다는 원래 젠투를 설치하고 사용하고자하는 목적이 리눅스에 대해서 더 깊이 알려고 하는 것이라고 생각하기 때문에 Stage 1부터 시작한다고 생각한다. Stage 3부터 시작하실 분들은 다른 인터넷 상의 매뉴얼을 참고하시거나 Arch Linux라는 것을 쓰시길 권한다.
 
당연한 얘기지만, 이 설치기는 리눅스를 조금 쓰실 줄 아는 분들 중에서, 막연히 젠투설치가 겁나는 분들을 위해서 작성했다.

먼저, 파티션은 이미 준비가 끝난 상태라고 가정하면서 시작한다.
젠투설치는 인터넷이 되야만 설치가 가능하기 때문에 먼저 랜카드부터 잡아준다.
# net-setup eth0

젠투의 특이한 점은, ssh를 통한 네트워크 설치가 가능하다는 점이다.
# /etc/init.d/sshd start
# passwd

리눅스를 설치할 파티션을 포맷한다. 나는 저널링이 가능한 ext3로 포맷을 했다.
# mkfs.ext4 /dev/sda3

스왑파티션을 쓸 수 있게 만들어준다.
# mkswap /dev/sda4
# swapon /dev/sda4

이제 젠투를 설치할 파티션을 마운트 해보자.
# mount /dev/sda3 /mnt/gentoo

이제 다운받은 stage3 파일을 /mnt/gentoo에다 복사한다. stage1부터 시작할 건데, stage3 파일 밖에 없다.
이건 젠투측에서 stage 1이랑 2를 없애기 위해서 그렇게 하긴 한건데, 사실 stage1부터 시작이 가능하다.
다운받은 파일의 압축을 풀자. http://distfiles.gentoo.org/releases/ 여기 가면 스테이지 파일이 있으니까,
wget으로 받으셔도 된다.
# tar xfj stage3.bz2

Proc와 몇몇 특수 파일시스템을 마운트 한다
# mount -t proc none /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev

인터넷이 되야하므로 /etc/resolv.conf 파일을 복사한다.
# cp /etc/resolv.conf /mnt/gentoo/etc/

미러를 선택하자.  빠른 미러를 선택하자.
# mirrorselect -s3 -b10 -D -c 'South Korea' -o >> /mnt/gentoo/etc/portage/make.conf

이제 대망의 make.conf 파일을 수정할 차례다. 이게 젠투의 핵심이자, 이것 때문에 젠투를 수십번도 더 설치하게 만드는 장본인이다. 본인은 최적화를 통한 가볍고 빠른 리눅스 설치가 목적이며, 최적화 그거 별로 차이 없네마네 하고 주장하시는 분들의 의견과는 무관하게 내가 하고싶은대로 한다. 최적화라는 것이, 자기 만족이지 않나.
인텔칩셋을 쓰시는 분들은 http://wiki.gentoo.org/wiki/Safe_CFLAGS 여기서 안전한 C Flags를 보시면된다. 
본 파일의 수정은 다음 편부터 한다.


블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,
퍼가실 때는 본 블로그 주소인 출처를 반드시 퍼가신 곳에 적어주시기 바랍니다.
본 글은 퍼온 글이 아닌, 제가 직접 작성한 글임을 밝혀둡니다.

젠투리눅스를 설치했다. 5년만이다. 1.4 버젼을 설치하고 6개월 가량 사용하다,
내 평생 데탑에 처음 리눅스를 지워버린 이후 처음이다.

이쯤에서 늘 나오는 게 있다. 자기소개다.

난 늘 내 소개하는 게 재밌다. ㅎㅎ 그래서 내 소개를 꼭 넣는다.
본인은 회계학을 전공하고 있는 30대 초반의 늦깍이 학생이다. 이전의 직업은 은행원이었다.
그런데 어떻게 리눅스를? 그냥 취미일 뿐이다. 진짜다. 유닉스라는 OS가 좋다. 적어도 윈도우보단.
게다가 본인은 프로그래밍을 전혀 할 줄 모른다. 간단한 html 정도? 프로그래밍엔 소질이 없는 것 같다.
그래서 컴파일하다 에러나면 고칠 능력이 안된다. 대신 전직이 은행원이어서 돈은 잘센다.

나는, 나름 한국에서는 리눅스 유저 1세대라고 할 수 있다(라고 말하고 싶다). 96년 슬랙웨어 2.2를 시작으로
처음 리눅스에 손을 댔으니 나도 별의별 배포판을 다 써봤다. 그리고 현재는 매킨토시를 쓰고있는데 원래
맥이 BSD 기반이라 리눅스 만지는 거랑 비슷한 느낌을 줘서 그닥 심심하진 않았으나, 현재 갖고있는
구형 노트북이 이젠 우분투 8.04부터 힘들어하는 모습을 보고 안되겠단 생각이 들어 뭔가 가벼운게
필요하다고 느꼈다. 그리고 울 와이프가 인터넷으로 드라마랑 쇼프로 보는데 노트북 느리다고 짜증을
자주 내신다.
그래서 선택한 것이 FreeBSD였다. 그런데 내 랩탑에 설치가 안된다. 커널 패닉이다. 제길.
FreeBSD만 설치되면 BSD를 배워볼 생각이 있었단 말이다. 맥이 BSD 기반이니깐.
어쩔 수 없이 패스.
우분투 6.10을 설치해봤다. 오~ 열라 빠르다. 그런데 업데가 안된다. 그렇지. 너무 오래된
것이라 지원이 끊겼다....
결국 다시 우분투 8.04로 돌아갔는데, 예전엔 이렇지 않았던 내 랩탑이 많이 힘들어한다.
그래도 나름 펜티엄 셀러론 D에 3.0GHz다. 램이 768메가라서 아쉽긴 하지만.

방법은 하나 뿐이라는 것을 느꼈다. 내 랩탑에 최적화시킬만한 운영체제를 찾는 것.
그것은 바로, 젠투리눅스였다.
문제는, 내가 리눅스를 안만진지 벌써 5년째라는 거다. 사실, 젠투 써보시는 분들은 아시겠지만,
젠투는 유지/보수에 상당한 시간이 들어가는 배포판이다. 물론 내가 뭘 해야하는 건 아니다.
리눅스가 다 알아서 유지보수 하는 것이지만, 업데이트가 2-3주일 정도 밀리기라도 하면 새벽내내
업데이트 하느라 컴퓨터 켜놔야한다. 대체 젠투를 위해서 컴퓨터를 켜놓는 건지, 날 위해서
컴퓨터를 켜놓는건지 모를 정도로 전기세가 아까웠다. 컴의 주인은 나란 말이다.

예전에 은행다닐 때, 퇴근해서 집에 돌아와 티비 보면서 쉴 수 있는 3-4시간을 패키지 컴파일
하면서 시간때우다보니, 아 이건 아니다 싶었다. 그때가 2005년도쯤 된 거 같다. 결국 96년 내가
처음으로 리눅스를 만나본 이래 내 컴퓨터에서 리눅스를 지운 최초의 날이 되었다.
이후, 리눅스를 만지지 않고, 즉 삽질하지 않고 사니까 너무너무 편하고 좋았다.
그런데 오늘, 젠투를 끝으로 종친 내 리눅스 생활이 다시 시작된 것이다. 그것도 젠투로 다시.

다들 궁금하실거다. 왜 하필 궁극의 배포판인, 삽질의 최고봉인, 극악의 배포판인 젠투냐고.
솔직히 말씀드린다. 젠투설치는 쉽다. 시간이 오래 걸려서 그렇지 쉽다. 진짜다.
그런데 다들 어렵단다. 웹서핑하다 보면, 너무 어려워서 엄두가 안난다느니 젠투설치하신 분들은
존경스럽다느니 난리법석이다.
죄송하지만 오바들 하지 마시라. 제발 부탁이지만 시도만이라도 해보시라.

시간이 많이 걸린다고?
내가 울 와이프한테 늘 강조하는 것이지만, 빨래는 세탁기가 한다. 다만 어떤 코스로 할 것인지
어떤 세제를 넣을 것인지만 사람이 결정하는 것이다.
젠투설치 마찬가지다. 코스 정하고 세제만 부어주면 나머지는 알아서 해준다.

혹자는 이렇게 말씀하실 수 있다.
"니는 해봤으니 쉽다고 하겠지만, 처음 설치해보면 다 어렵다고~!!!"
죄송하다. 젠투설치는 정말 어렵지 않다. 정말이다. 나는 처음 설치할 때도 한개도 안어려웠다.
그냥 핸드북만 보고 그대로 따라했을 뿐이다.
이번 젠투설치에는, 버튼만 눌러주면 끝나는 genkernel의 커널컴파일 도중 모듈컴파일이 실패하는
어이없는 경우가 생겼다. 그래서 본인이 직접 make menuconfig 해서 옵션 세팅 골라주고 커널을
컴파일했다.

솔직히 말해, 커널 컴파일하는 방법은 다 까먹었다. 심지어는 make mrproper, make menuconfig
하고 나서 make dep을 치니까, 이제는 더이상 dep이 필요없다는 메시지까지 봤다. ㅎㅎㅎ
그리고 혹시 몰라서 make clean까지도 쳐봤다. 아무 메시지도 안나오더만.

옛날에 내가 리눅스 쓸 때는 커널을 반드시 컴파일해서 써야만 했었다. 왜냐면 국내 컴퓨터
환경이랑 맞지않은 기능이 너무 많이 들어가있어서 이것저것 빼야할 게 많았었다. 물론 커널
1.4 시절에는 간단했지만 ELF 바이너리와 함께 등장한 모듈이 적용된 2.0 커널부터는 복잡해지기
시작했다. 하지만, 그래도 그닥 어렵진 않았다. 어차피 누군가가 한글로 번역해주신 매뉴얼
보면서 했었으니깐.
어쨌든, 그런 시절을 겪은 나로서는 커널 컴파일은 내가 직접 해도그만 안해도 그만인 것이었지만
이제와서 엄청나게 비대해진 2.6 커널의 옵션의 모든 기능을 일일히 인터넷 찾아가면서 확인할
시간도 없었고, 그러기도 귀찮았고, 또 요즘은 굳이 커널을 컴파일하지않고 범용으로 컴파일되서
나오는 기본커널만 써도되는 시대이기 때문에 일부러 안건드릴려고 했던 거다.
근데 genkernel이 컴파일에 실패하니깐 내가 직접 하는 수밖에 없지않나. 결국 기억 속에 남는
명령어인 make menuconfig를 쳤다. 역시 모르는 것 투성이다. 일단 Experimental은 절대 선택
하지 않았고, 내 랩탑 하드웨어와 전혀 다른 칩셋들은 아예 빼버렸다. 구형이니 스카시 항목자체도
아예 체크하지 않았다. (원래 씨디 구울려면 스카시가 아니라고 해도 선택해야한다)
기타 나한테 없는 하드웨어, 맞지 않는 하드웨어는 싸그리 지워버렸다.

결국, genkernel로 5시간 동안 컴파일했다가 모듈컴파일에서 실패한 기본커널이, 내가 직접
고른 기능으로 컴파일하니깐 30분도 안되서 끝나는 게 아닌가.
아무 에러 없이 아주 심플한 (이것저것 다 빼버리고 필요한 것만 넣은) 맞춤형 커널이 탄생했다.
아~ 열라 빠르다. 진짜다. 물론 X를 안띄워봐서 잘 모르겠지만 아직은 빠르다.
더 얘기해보면, php를 컴파일하는데 에러를 냈다. 난 프로그래머도 아니고 전산전공자도 아니다.
하지만 에러메시지 보고 해결을 했다. 이건 나만 할 줄 아는 게 아니다. 에러메시지를 차근차근
읽어보면 다 해결할 수 있다.

그렇담 왜 어렵다고 느끼시는 줄 아시는가?
그건 바로, 젠투를 설치하시려는 분들이 컴퓨터에 대한 기본적인 지식이 부족하기 때문이다.
웹서핑하다보면, 젠투설치하다 무슨 파티션을 날려먹었네, 뭘 다 지워버렸네 하신다.
왜 파티션을 날려먹을까? 파티션에 대한 기본적인 이해가 부족하기 때문이다.

하드디스크는 기본적으로 4개의 Primary 파티션만을 가질 수 있다. 그 이상의 파티션을 원하면
Logical 파티션을 만들어야하는데, 이것은 디렉토리라고 생각하시면 이해가 빠르겠다.
즉, 1 2 3이라는 Primary 파티션이 있는데, 3개의 파티션이 더 필요하다면 4 라는 Logical
partition을 만들고 그 안에 3개의 파티션을 더 만들면 된다는 얘기다. 폴더를 만들어서
집어넣는다는 얘기지.
그렇다면 번호는 어떻게 매길까? 무조건 먼저만든 순서다. 아니, 엄밀히 말하자면, 하드디스크상의
위치에 따른 순서대로다. 리눅스에서는 파티션의 위치까지 어느정도 지정할 수 있지만, 대개는
윈도우와 듀얼부팅 하시지 않는가. 당근 윈도우는 지밖에 모르므로 무조건 첫번째 파티션이
되는거다. 그러니 1번 파티션이 되겠지.

이것만 알면 되는데 리눅스 설치하면서 파티션 날려먹을 일이 있을까? 도스의 fdisk 처럼 키보드
누르는 순간 날라가는 것도 아니라 wq 눌러서 세이브 해야 적용되는 리눅스의 fdisk 이건만...
내친김에 하나만 더 얘기하자. 그러면 hda hdb sda sdb 이건 또 뭘까 .
hd는 E-IDE 방식의 하드디스크일 경우 hd로 시작되며 하드가 한 개 있으면 hda이다. 두개가 있으면
두번째는 hdb가 된다. 그러면, 두번째 하드디스크의 두번째 파티션은? hdb2가 되겠지. 쉽지?
기초를 다지도록 하자. 기초가 없으면 파티션에 대한 중요한 기본개념인 파티션 ID도 이해가 안간다.
참고로 본인은, 리눅스를 접한 96년도부터 지금까지 단 한번도 파티션을 날려먹은 적이 없다.

다음, 설치가 어렵다는 분도 역시 마찬가지다. 리눅서라면 리눅스의 디렉토리 구조는 다들
잘 아실거라 본다. 모르신다면? 디렉토리가 어떤 구조로 되어있는지 한 번쯤 뒤지고 다녀보자.
이건 리눅서로서의 기본 소양이다. 그런 다음 /etc 디렉토리를 뒤져서 어떤 파일들이 있는지 좀 보자.

본 글은, 젠투 설치를 걱정하는 분들을 비난하려거나 혹은 깔보거나 하려는 글이 절대 아니다.
해보기도 전에 어렵다느니 엄두가 안난다느니하는 얘기들 하지 마시고, 그냥 무작정 해보시라는 거다.
리눅서의 기본 소양 중 하나인 무대뽀 정신이 요즘 리눅서들은 없나? 게다가 위에도 얘기했듯, 여러분들이
며칠씩 타이핑 해가면서 컴파일하는 건 아니잖는가. 젠투의 스크립트들이 알아서 다 설치해주니 걱정하지
마시라. 15년 전의 나처럼 286AT에 하드 40메가짜리 홀랑 날려먹고 밤 새도록 xcopy *.* c: 쳐가면서
복구시켜 담날 학교에 눈 뻘개져서 학교가는 시대는 아니라는 거다. 백업만 잘해놓으면 무서운 게 뭐있나.
물론 백업해놓을 여건이 안되는 분들도 계시겠지만, 그런 분들은 어쩔 수 없다. 실력만이 살 길이다.

그래. 인정할 건 인정해야하는 게, 젠투가 다른 배포판에 비해서는 좀 알아야할 게 많긴 많다. 누구나 다
처음부터 알고서 시작하는 건 아니고, 다 하면서 부딪치는 거지. 나도 그랬으니깐.
참고로 본인은, CFlags 최적화 옵션 찾아낸다고 젠투 베이스 시스템과 X를 7번이나 빌드했다. 7번이면 며칠을
했는지 계산이 되시는가? 그렇게 컴파일한 후에 만들어진 내 시스템은, 다른 배포판에 비해 얼마나
빨랐을런지는 잘 모르겠지만 만족감과 성취감은 최고였다. 그리고 그렇게 해서 배운 내 젠투리눅스의 설치
방법은 5년이 지난 지금 비전산전공자인 내 머리 속에 아직도 그대로 박혀있따.

또한, 젠투는 리눅스에 대한 기본적인 상식이 있는 분들이어야한다. 아직 파티션이 뭐고 스왑이 뭐고 하시는
분은 젠투를 설치하실 때가 아니다. 이분들이 "엄두가 안나요"라고 말씀하시는 건 봐드린다.^^
이분들은 리눅스보다는 일단 컴퓨터에 대한 공부부터 하시는 게 우선이겠다. "에이~ 내가 그 정도는 다 알지~"
하시면 우분투 같은 쉬운 배포판 쓰면서 이것저것 만져보는 게 제일 실력 오르는 방법이다.
하지만 그렇다고 너무 쉬운 것만 쓰면 실력이 안오른다. 윈도우 95의 등장 이후로 컴퓨터를 갓 접한 이들에게
DOS는 아무 필요없는 물건이 되어버렸고, 그로 인해 컴퓨터에 문제가 생겨도 고칠 능력이 없어지게 됐다.
적어도 DOS를 다룰 줄 아는 사람들은 (나 역시) 윈도우98 심지어는 XP까지도 커맨드모드로 부팅해서 OS를
고칠 줄 안다. 그리고 지금까지도 컴수리 사업을 하시는 분들도 있을 거다.
컴고치시는 분들 중에 실력차이가 극명하게 드러날 때는, 매우 원론적(이라고 말하면 어감이 좀 이상하지만)인
부분까지 모두 알고있는 사람과 윈도우부터 만지기 시작했던 사람이 low-level에 해당하는 에러를 만났을
때다.

서두를 좀 짧게 쓸려고 했는데, 이노무 입방정 땜시 자꾸 길어진다.
옛날 한 13 ~ 4년 전에는 하드디스크 내부에 있는 헤드를 안전한 공간으로 파킹시키는 프로그램이 유행하던
때가 있었다. 유행이라고 보기엔 누구나 반드시 써야하는 필수적인 툴 같은 것으로 인식될 때가 있었다.
아~ 옛날 생각 난다.
하드디스크가 지금만큼 빠르지 않다보니 하드디스크를 로우레벨 포맷할 때 설정하는 인터리브라는 옵션이
있었는데, 이것이 무슨 기능인지 알기 위해서는 하드디스크의 물리적 그리고 논리적 구조에 대해서까지
알고있었어야만 했다. 그때 당시 3:1이 가장 낫느니 2:1이 가장 낫느니 하다가 하드디스크가 발전하면서
2:1이 되어버렸고, 계속된 기술발전으로 이런 옵션은 없어져버렸다. 없어졌다기보단, 바이오스 차원에서
알아서 계산해준다. (이게 뭔지 설명을 해드리고 싶은데, 이걸 설명하려면 그림을 그려야한다.
정말 궁금하시면 여기를 보시라)
대강 설명을 해드리자면, 하드디스크의 원반이 중심을 기준으로 가상의 선 같은 것으로 구역이 나눠져 섹터로
구분되어있다. 그런데, 1번 섹터의 내용을 읽어야하는데 하드디스크가 너무 빨리 돌다보니 미처 내용을 다
읽지못하고 다음 섹터로 넘어가버리면, 헤드는 1번 섹터가 다시 되돌아올 때까지 기다려야한다. 그러다보니
시간의 낭비가 생기고 시간의 낭비는 곧 처리속도로 연결된다. 그래서 이걸 줄이고자 로우레벨 포맷을 할 때
헤드가 섹터를 나누는 나름의 효율적인 순서를 정해놓을 수 있게 해놓은 옵션이었다.
그렇담 이게 리눅스와 무슨 상관일까? 옛날엔 컴퓨터를 쓰면서 어느정도 유비/보수, 혹은 성능향상을 위해서는
이런 공부를 해야했었다라는 점이다.

가장 추천해드리는 방법은 내가 97년도에 경험했던 WindowMaker라는 윈도우 매니져로 데탑을 예쁘게 구성
하는 거다. 여기서 꽤 많이 배웠다. 물론 시스템에 대해 배울 수 있는 건 아니지만, 적어도 리눅스에 대한
거부감은 없어지게 된다. 즉, 윈도우에 뭔가 문제가 생기거나 불만이 생기면 직접 뜯어고칠 수 있다라는 것을
가르쳐주는 있는 좋은 윈도우매니져다.

일단, 젠투 사이트로 가서 최신버젼을 확인하고 젠투사이트에 있는 설치매뉴얼을 한 번 쭉
훑어봤다. 어라 조금 다르다. 1.4 인스톨할 때랑 많이 다르다. 시스템 빌드하는 건 온데간데 없고
무슨 라이브씨디로 설치하란다.
웹서핑 해보니깐 인제 스테이지 1,2는 추천하지 않는단다. 왜지? 스테이지 1,2로 하는 맛에
젠투 쓰는 건데, 스테이지 3부터 하라면 그냥 우분투 쓰지 뭐하러 젠투 쓰나.
물론 패키지 설치하는 것마다 컴파일해서 쓰는 장점이 있겠지만, 어쨌든 젠투의 맛은 시스템을
처음부터 끝까지 내 시스템에 맞게 빌드하는 게 맛 아니겠나.

좀 더 웹서핑을 해보니깐 젠투의 설치방법과 릴리즈의 차이는 아무 것도 없단다. 구버젼 설치해도
시스템 전체를 업글하면 새 릴리즈랑 똑같아진단다. 역시 이 유연함.
아무래도 신분이 학생이니깐 시간이 없고 노트북도 구리니까 스테이지3으로 할까 했다. 그래서
라이브씨디 받아놨는데, 위에 써놓은대로 그럴려먼 뭐하러 젠투를 설치하나. 스테이지 1부터
시작했다.

본 글은 여기까지만 쓴다. 설치단계부터는 자세히 설명드리겠다.
위에도 언급했지만 본인은 비전산전공자에 프로그래밍은 한 번도 해본 적 없는 사람이다.
또한 본인 역시 다 까먹은 상식으로 인해 수많은 검색과 수많은 분들의 블로그, 설치기를 참고하면서
설치를 했다.
본인이 잘못 적었거나 잘못 알고 있는 게 있다면, 잘 알지도 못하면서 지껄이지 마라는 말씀보다는
한 수 가르쳐주신다는 의미로 답글 달아주시면 감사하겠다.
블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,