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

새로운 블로그에 업데이트하고 있으니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의 잡동사니 보관소

,

최근 맥을 더 이상 구입하지 않겠다는 다짐을 하게된 이후, 그렇다면 과연 어떤 리눅스 배포판을 써야하는가로 고민을 하게됐다.  쓸데없는 고민 같지만, 이 배포판 저 배포판을 써보느라 시간을 소비하는 일은 이미 20대 때에 해봤고, 이제는 하나라도 제대로 알고 쓰는 배포판이 있어야한다고 생각한다.


난 원래 슬랙웨어 2.2로 처음 리눅스를 접하기 시작해, 나중에는 우리나라 리눅스 유저들이 만든 레드햇 기반의 리눅스를 써왔다.  울나라 리눅스 1세대 유저들은 다 아시겠지만 알짜 리눅스의 인기가 좋았었다.  이후 마찬가지로 레드햇 계열의 한컴리눅스 2.0을 구매해서 쓰다가, 리눅스 발전에 기여한 공로라고 한컴리눅스 3.0을 무료로 증정받아 써왔었다.  그러다 군대를 갔다왔고 제대한 이후에는 각종 리눅스에 손을 댔다.  이때 젠투 리눅스, LFS 등 당시에도 쓰기 어려운 배포판을 두루 섭렵하면서 리눅스에 대한 이해가 지식이 깊어졌다.  사실 지금의 리눅스 관련 지식은 이때 전부 쌓았다고 봐도 좋을 정도로 리눅스 공부를 많이 했다.


당시 모든 배포판 중에서 젠투가 가장 마음에 들었었다.  그럼에도 불구하고 젠투를 지워버리게 된 이유는 컴파일 시간 때문이었는데, 당시 금융기관에서 일하던 나는 컴퓨터와 무관한 직장을 갖고있었고 퇴근해서 집에 오면 반강제적으로 하다시피한 의무적인 일 중 하나가 컴퓨터를 켜서 젠투의 패키지 업그레이드를 하는 것이었다.  컴파일하는데 상당한 시간을 들이느라 내가 컴퓨터를 쓰는 건지, 컴퓨터가 날 쓰는 건지 모를 정도로 오래 걸렸다.  지금 생각해보면 사실 젠투나 리눅스에 대한 이해가 충분하지 않은 상태에서 젠투를 쓴 것으로 추측되는데, 그토록 패키지 업데이트가 잦았던 이유가 아마도 불안정판 (~)을 쓰고있었던 게 아닌가 싶다.  사실, 굳이 포티지 리스트를 갱신할 필요가 없었으며, 게다가 딱히 불안정판을 쓸 이유도 없었기 때문이다.


결국 내 컴퓨터에서 리눅스를 처음으로 지워버린 그날 이후부터 미국으로 유학을 갈 때까지 리눅스에는 손을 대지 않았다.  결국 젠투리눅스가 한국에서 쓰던 마지막 리눅스 배포판이었던 셈.  이후 접하게 된 첫 리눅스는 우분투 8.04였다.  이때 데비안 계열의 리눅스를 처음 접하게 됐고, 왜 그토록 사람들이 "데비안으로 대동단결"을 외치는지 이해할 수 있었다.  사실 내가 한국에서 리눅스를 쓰던 시절에는 yum이라는게 없어서, 필요한 패키지를 모두 받아다 rpm -ivh로 설치를 했기 때문이라, apt-get이 너무나도 편했다.  이때부터 우분투에 빠져들어 미국에 거주함에도 불구하고 한국 우분투 사용자 모임에서 활동을 시작하게됐고 지금도 여전히 한국 우분투 사용자 모임의 IRC 채널 관리자를 하고있다.  아주 우연히도 취업하게 된 이곳의 서버 또한 전부 우분투로 운영하고 있고, 부서장 및 몇몇 직원들이 우분투를 데스크탑 운영체제로 사용하고 있을 정도였다.


하지만, 우분투는 늘상 불안한 배포판이라고 생각하는데, 몇 년 전부터 악화되기 시작한 캐노니컬의 재정상태를 비롯하여, 자금 마련에 실패한 우분투 폰 프로젝트, 데비안 기반이면서 더 이상 데비안과 완전히 호환되지 않는 자체 배포판 구조, 혼자만 밀고있는 독자적인 X 서버인 MIR, 자기네 규격을 밀려다 여론에 밀려 포기한 upstart 등을 보면, 캐노니컬이 나아가는 방향이 마치 애플이 그러는 것과 비슷하다는 느낌이 들기 시작했다.


그렇다면, 어떤 리눅스가 특정 회사에 의해 유지/보수되지 않으면서 동시에, "망하지 않을 것" 같은 배포판은 어디일까 라는 문제에 대해 고민하기 시작했다.

1. 첫번째 후보이자 강력한 후보는 누구나 예상하듯 데비안이다.  개인적으로는 위대한 배포판이라고 칭하고 싶다.  우분투 한국포럼의 한 유저에 따르면, uptime이 무려 3,500 days가 되는 서버를 본 적이 있다고 할 정도.  오로지 GNU 정신을 중요하게 생각하는 데비안 프로젝트라는 오픈소스 커뮤니티에 의해서만 유지되는 데비안은 그 어떤 회사에도 종속되지 않으며, 그럼에도 불구하고 전세계 리눅스 점유율을 사실상 독점하다시피하는 근간이 되는 배포판이다.  안정판의 경우는 너무나도 안정적이어서 재미가 없을 정도이고, 이 데비안을 기반으로 만들어진 우분투의 경우는 캐노니컬이라는 회사가 망하면 없어지겠지만, 분명 데비안은 영원히 남을 거다.

2. 리눅스는 아니지만, 태생이 정통 유닉스의 뿌리가 되는 FreeBSD이다.  FreeBSD 역시 영원히 망하지 않고 앞으로도 계속 발전할 운영체제라고 생각되며, 현재는 사용자가 많이 줄었지만 사실 알게모르게 많이 쓰이는 운영체제다.

3. 세번째로는 젠투를 꼽았다.  젠투는 내가 좋아해서 그런 것도 있지만, 젠투 커뮤니티를 잘 들여다보면, 의외로 생각보다 커뮤니티가 거대하고 탄탄하며, 젠투를 사용하는 유저들의 성향과 목적에 상당히 잘 부합하는, 아주 견고하며 잘만들어진 배포판이기 때문이다.  컴파일을 통해서 얻는 이익과는 무관하게, 배포판 자체가 아주 잘 만들어져있다고 생각하는데, 여기에 패키지를 설치 및 구성할 때 내가 원하는 옵션으로 구성할 수 있다는 점부터가 이미 엄청난 매력을 준다.

4. 네번째로는 아치 리눅스를 꼽아볼 수 있겠다.  개인적으로 아치를 써본 적은 없지만, 아치만이 가진 매력과 유저들의 성향을 봤을 때 젠투와 비슷한 형태의 매력을 주기 때문에, 데비안 계열만큼 유저가 많진 않겠지만 분명 아치도 오래 갈 거다.

5. 마지막으로는 페도라를 꼽겠다.  레드햇은 특정 회사에 의해 유지/보수되는 배포판이지만, 그 커뮤니티의 규모와 역사가 워낙 다른 수준이라, 레드햇이 망할지언정 그 커뮤니티에 의해 페도라만큼은 영원히 유지할 것 같다고 생각된다.


여기서 내가 최종적으로 내린 결론은 이렇다.

젠투를 주력으로 쓰고, 만약 젠투가 망하면 우분투를 쓰고, 캐노니컬이 망하면 데비안으로 최종 정착하겠다.


유명 젠투 유저 지인은 현재의 젠투 리눅스는 "병든 닭" 같은 배포판이라고 표현했는데, 그간 젠투 재단이 겪어온 길을 보면 위태위태한 건 사실이지만, 그만큼 열성적인 유저들이 많고 유저의 수 역시 적지 않다고 판단되며, 일단 내 성향이 지극히 부합하기 때문에 젠투를 첫번째로 골랐다.

원래는 FreeBSD를 주력으로 쓸려고 했는데, nVIDIA 그래픽카드와의 상성이 너무나도 좋지않아서 포기했다.  사실, FreeBSD 커뮤니티를 돌아다녀보면 FreeBSD와 데비안과 젠투 중 어느 것이 가장 낫느냐는 등의 토론이 엄청나게 많은데, 확실히 FreeBSD 유저들은 데탑용으로 써야할 리눅스를 고른다면 데비안과 젠투 이외엔 아예 고려대상에 포함조차 시키지 않는 성향이 보이더라.  또한, FreeBSD 유저들이 말하는, 왜 FreeBSD여야만 하는가 하는 식의 글들을 보면 대부분의 이유는 (https://www.over-yonder.net/~fullermd/rants/bsd4linux/01),

1. 안정적이어서

2. 진짜 유닉스라서

3. systemd가 아니라서

4. 문서화가 잘되어있어서

5. 라이센스

그외, 유저영역와 시스템 영역이 분리되어있어서 안전하다느니, 배포판이 하나뿐이라느니 여러 의견이 있지만, 가장 기억에 남는건, "리눅스는 사실 운영체제라고 할 수 없다.  리눅스라고 불리우는 커널에 GNU 툴들이 합쳐진 그 무엇이다.  FreeBSD야말로 진정한 운영체제다" 라고 한다.  "데비안인가 뭐시긴가, 레드햇인가 뭐시긴가, 우분투인가 뭐시긴가 하는 인터넷에 존재하는 수천개의 운영체제 뭐시기들이 바로 리눅스 커널을 사용하는 GNU 운영체제"라고 한다.  솔직히 말해서 말같지도 않는 FreeBSD 유저들의 알량한 자존심이라고 생각한다.  틀린말은 아니지만, FreeBSD 유저들이 리눅스를 그렇게 깎아내릴 입장이 되나?

내가 FreeBSD를 주력으로 쓰기위해 테스팅 하기 전부터 인터넷에 있는 수없이 많은 FreeBSD에 관한 글들을 읽어봤다.  그리고 테스팅을 하는 과정 FreeBSD에 상당히 실망하게 됐는데, 그것은 바로 nVIDIA 그래픽카드 드라이버를 리눅스의 것을 에뮬레이션 하는 부분이었다.  아니, 그토록 리눅스보다 FreeBSD가 위대하다고 하는데 드라이버는 어쩔 수 없이 리눅스 것을 에뮬레이팅하다니?  물론 하드웨어 벤더에서, 특히 그래픽 카드 쪽은 제약이 심해서 그런건 이해는 되는데, 하드웨어 드라이버를 에뮬레이션 해서 쓰는 것은 내 스스로 도저히 받아들이질 못하겠더라.  그래서 FreeBSD는 포기했다.  개인적으로 FreeBSD 기반의 방화벽인 pfSense를 너무나도 좋아하고, 서버용으로 FreeBSD는 최고라고 생각하지만 데스크탑용으로는 절대 아니라고 생각한다.  게다가 GNOME, KDE, XFCE 등의 유명 윈도우 매니져들의 태생부터도 일단 리눅스이고.

데비안을 첫번째로 선택하지 않은건, 운영체제가 너무나도 재미없기 때문.  그만큼 안정적이고 튼튼하다는 반증이겠지만.

페도라는... 레드햇 계열은 그냥 싫다.

아치는... 몇 가지 이유가 있는데, 우선 패키지 업데이트 속도가 너무 빨라서 안정적이지 못하다는 문제가 가장 중요했다.


이후 젠투를 사무실 데스크탑에 설치해서 이것저것 세팅하다가 systemd에 GNOME을 올릴려고 했으나 버그로 보이는 문제 때문에 설치가 안되서 포기하고 KDE 5 Plasma를 설치했다.  상당히 만족스럽고 잘 사용 중이다.  옛날에 KDE를 써보고 안좋은 인식이 있었는데, 이번에 젠투에서 설치해서 써보니까 너무나도 만족스럽다.  특히나 맥에서 리눅스로 주력 운영체제 이전을 고려 중인 상황에서, 내가 사용하는 소프트웨어의 대부분을 커버할 수 있는데다 생각보다 젠투의 완성도가 꽤 맘에 들어서, 현재 사용 중인 모든 컴퓨터에 젠투를 설치하려고 계획 중이다.


이제 8년 만에 다시 쓰는 젠투의 설치 매뉴얼과 각종 명령어들에 대한 내용을 업데이트할 예정이다.  8년 전과 비해서 크게 바뀌진 않았지만, 꼭 중요한 명령어나 절차가 있어서 이것들은 블로그에 꼭 기록을 남기고 싶다.

블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

이 글의 제목은 한 공학박사께서 쓰셨던 블로그의 제목을 패러디했다.  내용은 다소 다른데, 이 글을 아주 오래 전에 읽었었고 최근 애플 제품을 더 이상 구입하지 않겠다고 다짐하게된터라, 비슷한 내용의 글을 써야겠다고 마음먹게 됐다.  이 글에서는 내가 쓰던 프로그램이 작동되지 않는다고 맥을 구리다거나 하진 않을 거다.  밑에 적겠지만, IT 분야에서 일하시는 분들이 아니라면 이 글을 이해하기 어려우실 거다.


2007년 3월에 미국에 와서, 그해 11월에 난생 처음으로 애플 제품을 구입하게 됐다.  그게 바로 20인치 아이맥이었는데, 그 아이맥을 계기로 이후 구입하는 모든 컴퓨터 및 IT 관련기기는 무조건 애플 제품만 구매하겠다고 다짐하게 됐다.  실제로도 지금까지는 거의 그래왔다.  이제, 9년 하고도 2개월이 지난 현재 나는 애플 제품을  더 이상 구입하지 않겠다고 다짐하게 됐다.  애플 까는 글에는 워낙 댓글이 많이 달리는 점을 잘 알고있는바, 여기서는 비IT 종사자 입장에서는 댓글을 달기 어려운 내용으로 "왜 애플 제품을 더 이상 사용하지 않겠다고 다짐하는가"에 대해 서술하려 한다.  이 글에서는 포토관리 앱이 어떻고 MS오피스가 어떠니, 바이러스니 뭐니 하는 일반 유저들이 쓰는 내용은 다루지 않을 거다.  어차피 내가 관심도 없거니와, 직장에서조차도 MS-Office를 전혀 사용하지 않는다.  또한, 지극히 개인적인 부분에서 생기는 문제점 등은 언급하지 않고 최대한 객관적으로 적으려고 한다.  내 블로그의 기존 글들 여기저기를 보시면 아시겠지만, 현재 내가 쓰고있는 애플 제품은

  • 2013 연탄 맥프로 8코어, D700 - 원화로 환산하면 700만원 가까이 나온다.
  • 썬더볼트 디스플레이 2대 - 지금은 구식의 물건이 됐지만 당시만 해도 한 대에 100만원이 넘었다.
  • 2016 15인치 맥북프로 R9-290
  • 2012 맥미니
  • 아이폰 6s 2대
  • 미니 아이패드 2대
  • 익스트림 베이스 스테이션
  • 익스프레스 베이스 스테이션

이 외에도 지금까지 써온 애플 제품이 2007 아이맥, 2011 맥북프로, 2010 맥미니, 아이패드 등등 여럿 더 있다.  이 정도면, 그래도 나름 애플제품 써볼만큼 써봤다고 말할 수 있지않나 싶다.



맥에 빠져들다

2007년으로 거슬러 올라가, 왜 내가 애플 제품에 매료됐는지를 서술해본다.

그때까지 나는 리눅스만을 최고라고 생각하던 일종의 리눅스 빠돌이었다.  사실, 리눅스를 제대로 쓸 줄 아는 것도 아니면서 그냥 좀 뭔가 특별한 걸 써보고싶어하는 그런 어중이 떠중이 수준이었는데, 그럼에도 불구하고 늘상 염원해오던 것은 "쓰기 쉽고 예쁜 리눅스 배포판"이었다.  한때 네이버 지식인의 리눅스 디렉토리에서 2위를 하던 시절 (대략 2003년에서 2005년 사이; 심지어 대략 2007년 이후 지식인 활동을 아예 안하고 있음에도 불구하고 이 글을 쓰는 2016년 12월 지금도 무려 15위에 랭크되어있다), 지식인에서 답변을 달고나면 반드시 붙이던 문구가 "한 명이라도 리눅스 유저가 늘어나길 바라며" 였다.



꿈꾸던 운영체제

그런데, 아이맥을 처음 접하고나서는, 내가 그토록 원하던 운영체제를 보게됐다.  리눅스 기반은 아니지만, 그래도 그 뿌리가 같다고 볼 수 있는 BSD 커널 기반의 POSIX 규격을 만족시키는, UNIX-like인 리눅스와는 다른, 진짜 Unix였던 것이다 (현재 El Capitan은 어떤지 모르겠다).  내가 꿈꾸던 운영체제를 보게된 것이다.  왜 여태 이걸 몰랐을까 하는 생각이 들면서 동시에, 이렇게 예쁘고 쓰기 쉽게 만들어진 유닉스가 있으니 이제 리눅스 쓸 일은 없어지겠구나 싶었다.  테마를 바꾸거나 하는건 허용되지 않았으나, 어차피 맥 OS X의 기본테마 자체가 수정할 필요없이 이미 충분히 아름다웠으며, GNU의 binutils를 비롯한 대부분의 GNU툴들이 전부 포팅되어있어서 터미널에서도 큰 어려움이 없었다.  아니, 사실상 아예 문제가 없었다.  여기에 MacPorts라는 일종의 패키지 관리자까지 있어서, 부족한 툴까지 전부 해결이 가능했다.  다만 좀 개인적으로 문제가 됐던 부분은, 일부 BSD 툴들의 사용법이 GNU 것과는 좀 달라서 쉽게 익숙해지지 못했다는 점과, 내가 너무 리눅스에 익숙해있던 나머지 맥OSX의 시스템 데몬 제어 방식, 운영체제를 구성하과 있는 각종 레이어 등이 이해가 잘 되지않았다는 점이 있었다.



맥이 변화시킨 나

내가 아이맥을 쓰면서 변하게 된 가장 큰 것은, 소프트웨어를 돈을 주고 구입하게 됐다는 점이었다.  부끄러운 얘기지만, 나 역시도 윈도우를 불법다운로드해서 사용해왔으며, MS-Office 등의 프로그램들을 불법으로 다운로드해서 써오고 있었다.  지금 생각해보면 사실 당시에는 나에게 별로 필요없는 소프트웨어였는데, 1990년대 말에서 2000년대 중반까지는 다들 그렇듯 별로 죄의식없이 써왔다보니 그게 그냥 당연하고 자연스러웠었는데, 내가 아이맥을 쓰면서 이게 변하게 된 것이었다.  당시 인식이 전환된 계기가, 쓰고싶은 소프트웨어의 불법복사 버전을 찾느라 인터넷 여기저기를 돌아다니며 시간을 허비하느니, 그냥 정당하게 구입해서 시간도 아끼고 내 소유의 소프트웨어도 가져보자 하게 됐던 것 같다.  비싼 소프트웨어를 구매했던 건 아니였으며 사실 그런 프로그램들이 나에게 필요했던 것도 아닌지라, 보통 한 달에 $20에서 $30 정도를 정기적으로 지출했으며 지금도 이 금액이 생활에 큰 비중을 차지하는 액수는 아니라고 생각한다.  잘만들어진 소프트웨어라면 언제나 돈을 주고 구입할 의향이 있으며, 그래야한다고 생각한다.  심지어 그게 오픈소스로 만들어진 프로그램이더라도, Synergy처럼 오픈소스로 시작된 프로그램이더라도  좀 더 나은 서비스를 제공하겠다는 조건으로 판매한다면 그 역시도 충분히 구입하겠다는 생각을 갖게된 것이다.  뿐만 아니라, 2007년도에 아이맥을 처음 쓰면서 알게된 건, 맥용 소프트웨어가 내 생각보다 훨씬 많았다는 거다.  물론 그건 인텔로 이주하고나서 그리된 것이긴 하겠지만, 더 놀라웠던 점은 리눅스와 윈도우에는 없는 개념의 소프트웨어-예를 들면 DEVONthink-도 상당히 많았다는 거다.

맥을 쓰면서 느꼈던 여러가지 것들을 나열해보자면, 먼저 쓸데없는 곳에 시간을 쓰지않고 내가 할 일과 내가 하고싶은 일에만 집중할 수 있게 도와준다는 점이었다.  뭐 바이러스에 감염될 위험이 좀 적다는 부분도 나에게 아예 해당이 되지않는다고 얘기할 순 없겠지만, 리눅스와는 다르게 각각의 소프트웨어가 필요한 라이브러리를 전부 탑재한 상태로 나오다보니 소프트웨어의 관리가 쉽고 편하다는 점도 분명한 장점이었다.  처음 익스포제를 써봤을 때의 그 감동, 다국어 지원이 훌륭하고, 대부분의 유저들이 불편하다고 얘기하는 한글입력기도 나에게는 편하며 (Ctrl-Space 조합을 쓴다), 어떤 것이라도 맥에서는 더 아름답게 보인다는 점, 비록 폐쇄적이긴 하지만 오히려 폐쇄적이라는 것이 장점으로 다가올만큼 완벽한 경험을 사용자에게 제공해준다는 점, 하드웨어 퀄러티도 역시나 너무나도 훌륭하다는 점, 한국에서는 비난받지만 미국에서만큼은 최고인 애플케어, 맥-아이폰-아이패드의 계정연동에서 주는 편리함은 그야말로 애플제품만을 쓰게 만드는 등등 그동안 애플을 써오면서 이런 것들에 너무나도 행복해왔었다.



변하는 애플

그동안 쭉 애플 제품을 써오면서 불편하지 않았던 점은 없었지만, 딱히 실망한 적도 별로 없었다.  매 신제품이 나올 때마다 혁신은 없었다느니 했지만, 내 개인적으로 지금까지 애플 제품들에게 실망한 적은 없었다.  남들과는 관심분야가 많이 달랐기 때문인데, 내가 정말로 바래왔던 것들이나 실망스러웠던 것들의 생각울 좀 적어보자면,


1. 예전에는 iLife랑 iWork 때문에 맥을 쓴다는 말을 할 정도로 애플이 제작하는 소프트웨어의 품질이 매우 훌륭했는데, 지금은 그 누구도 얘네들을 언급하지 않는다.

2. MacPorts가 MacOSX로 편입될 거란 기사를 보고 그걸 너무나도 바래왔으며

3. ZFS가 취소된 게 너무나도 안타까웠다.  만악의 근원 오라클.

4. 기본으로 장착된 서비스 데몬들의 버전이나 기능이 너무나도 형편없다.  예를 들면 Apache2, PHP, MySQL 등.  특히 PHP는 gd가 빠진채로 컴파일되서 나온다는게 이해가 안간다.

5. 여전히 멀티 디스플레이에 관련된 기능은 형편없을 정도로 엉망이다.  맥에 듀얼 모니터를 연결해서 사용할 때, 무비스트 등의 영화 프로그램을 실행해서 전체화면으로 놓고 영화를 보게되는데 이때 옆에 모니터는 끌 수 없다.  꺼진 것처럼 보이지만, 실은 까만색 화면을 띄우고있을 뿐.

6. 애플 썬더볼트 디스플레이는 지금까지 구입한 애플 제품 중 가장 후회하는 제품이다.  전원을 켜고끄는 버튼이 없으며, 전원이 켜진지 알 수 있는 표시등조차 없는데다, 밝기조절이 모니터 자체적으로는 불가능하다.  물론 썬더볼트 디스플레이 화면 자체의 품질은 여전히 우수한 편인데, 다른 모니터를 사볼려고 아마존 아무리 뒤져봐도 비슷한 사이즈에 같은 해상도-2560x1440-를 가진 제품이면 가격이 별 차이 없었다.


그외

7. 그놈의 TextEdit은 첫 실행시 왜 매번 어디다 저장할건지 왜 묻는지, Stickies는 왜 모니터 연결이 끊어질 때마다 내가 시간들여서 배치해놓은걸 싸그리 초기화시키는지...  짜증나서 Stickies는 안쓴다.

8. 문제가 생기는 소프트웨어들은 시스템 로그만 보고 원인을 파악하는게 너무나도 힘들다.  고치려는게 아니라, 그냥 단지 뭐가 문제인지가 알고싶을 뿐인데...

9. 대체 니들은 OpenLDAP 놔두고 왜 OpenDirectory라는걸 만들어서 니네만 쓰는거냐.  독자 규격 좋아하는건 알겠는데, 시스템 어드민 입장에서 늘 문제가 되는건 맥 니네들 뿐이다.  아니면 적어도 OpenLDAP이라도 좀 지원하던가.

10. 타임머신은 어찌나 느린지 한 3년치 모아놓으니까 엄청나게 느리더라.  게다가 증분백업 구현하려고 파일들 죄다 하드링크로 구성하는 바람에 타임머신 하드디스크 들어가면 당최 용량계산이 안된다 (결국은 이게 다 만악의 근원 오라클 때문).

12. 마우스 커서는 대체 왜 자꾸 사라지는데!


아마도 5번의 경우는 컴쟁이 입장에서 생각해보면, 저걸 여태 못고치는건 멀티 디스플레이 작동방식을 MS-Windows처럼 하게하려면 OS의 디스플레이 레이어를 통째로 재설계해야한다거나하는 문제가 있기 때문에 그럴 거라고 추측한다.


하지만, 내가 이 글을 쓰게된 결정적인 계기는 따로 있었는데,

1. 타이거-레퍼드-스노우 레퍼드 당시에는 폐쇄적이라는 애플의 단점을 오히려 장점으로 만들만큼 운영체제가 견고했다.  운영체제 자체의 업그레이드는 자주 나오지 않았지만, 오히려 그것이 OS를 더 견고하게 만들었다는 점은 이견이 없을 거다.  우분투/데비안, FreeBSD만 해도 LTS 기간이 끝날 때까지 사용하는 서버 시장만 봐도 OS의 긴 업그레이드 주기는 확실히 OS가 견고하게 되는데 도움이 된다.  그런데 최근의 맥OS를 보면, 많은 기능 추가를 원하는 유저들의 바램을 들어주는 것인지는 몰라도 OS의 판올림이 너무 빠르고, 그로 인해 생겨나는 알 수 없는 문제들, 물론 기능이 많아질수록 여기저기서 문제가 생길 여지는 당연히 늘어나겠지만 판올림 주기가 너무 빠른 건 둘째치고, 애플의 예전 버전에 대한 지원이 아예 없는 정책을 봤을 때, 앞으로 나올 macOS가 점점 더 걱정된다.  OS 안정성에 대한 문제는 Back To The Mac이라는 유명 블로그에서 이미 여러차례 언급했으며, 나무위키의 macOS 페이지 잘 설명되어있다. 

이외에도, 운영체제의 버전이 자주 업그레이드 됨으로써, 일부 소프트웨어가 그걸로 좀 심하게 장사를 한다는 점... 예를 들자면 패러럴즈 같은 부류인데, 솔직히 가상화 소프트웨어가 운영체제 버전업 됐다고 뭐 달라질 게 있나... 시스템 라이브러리나 드라이버 등은 그대로일거고, CPU 내부 가상화 지원 명령어 쓸텐데 그게 운영체제 버전업이랑은 크게 상관이 없어보임에도 불구하고 매년 이걸로 버전업 하면서 자꾸 구입하게 만든다는 점...


2. 터치바 맥북프로.  정말 결정적인 계기다.  직업상 ESC키를 비롯한 F키들이 필수적으로 필요한데, 이걸 없애버렸다는 점-아무리 소프트웨어로 구현해도 물리적으로 입력이 되는 키와는 다른거다-과, 그 ESC키의 위치가 좀 다르다는 점은 나에게는 정말 심각한 문제가 된다.  하지만 더 큰 문제는 바로 가격인데, 키보드야 뭐 그냥 기계식 키보드 연결해서 쓰면 된다치지만, 15인치의 경우 터치바 장착과 그래픽카드를 무조건 강제한다는 거다.  터치바는 뭐 적응하면 된다고쳐도 사실 가격문제는 아무리 봐도 좀 어이가 없을 정도인데, 15인치에 SSD 256기가에 그것도 램 16기가 달린게 무려 $2,399나 한다.  더군다나 미니디스플레이포트 형태의 썬더볼트 1,2 포트도 없애버리고, 기존의 USB 2/3 포트도 없애버리고 오로지 USB-C 타입의 USB-C/TB3 포트만 넣어버렸는데, 기존에 쓰던 미니디스플레이포트를 쓰는 모니터들이 변환 커넥터랑 작동이 안되서 현재 말이 많다.  이 맥북프로를 보면서 내가 느낀건, "이미 맥에 익숙해질대로 익숙해진 유저들은, 다음번 맥북프로 살 때 무조건 여지없이 엄청난 돈을 내야하겠구나"라는 것이었다.

수많은 사람들이, 같은 가격이면 더 좋은 스펙의 컴퓨터를 구입할 수 있는데 왜 맥을 사냐고 한다.  그동안 맥을 써온바, 맥은 충분히 가치가 있다고 생각했다.  하지만, 그럼에도 불구하고 이번 맥북프로의 16기가 램은 이해하고 넘어갈 수 있는 수준을 넘어섰다.


3. 얼마 전, 사용하던 맥북프로의 uid를 바꿔야할 일이 생겨서 구글링해서 나온 글의 가이드라인을 따라서 uid를 바꿨다.  그리고나서, 수많은 소프트웨어들이 오작동하기 시작했다.  결국, OS를 재설치하기로 마음먹고, /Users에 있는 내 홈디렉토리 전체와 ~/Library를 백업해뒀다.  재설치를 하고 ~/Library/Caches를 제외한 ~/Library 디렉토리 전체를 덮어썼는데, 맥OS 자체 프로그램인 캘린더와 리마인더가 아무 이유없이 크래쉬되는 거다.  해당 프로그램을 다시 열어도 똑같이 크래쉬 되는데, 3번을 Re-Open해서야 실행이 되는데다, 그마저도 쓰다보면 갑자기 죽어버린다.  문제는, 로그가 전혀 남지않는다는 거다.  지금까지도 해결이 안되서, OS를 다시 재설치해야하나 심각하게 고민 중이다.  뭐가 문제인지는 몰라도, OS의 퍼포먼스가 제대로 안나온다.  내 추측으로는, 아무래도 macOS의 각종 소프트웨어 설정들이 uid에 착 달라붙어있는 것 같은데, 일단 캘린더와 리마인더는 무조건 크래쉬가 난다.  로그도 안남는다.  그래서 구글링조차 하기도 힘들다.


4. 11월에 삼성에서 나온 Gear S3라는 시계를 구입했는데, 이게 아이폰에서 지원이 제대로 안된다.  사유를 대충 구글링해서 알아보니, 애플 앱스토어 측에서 일부 함수들에 대한 접근을 보안 이유 때문에 등록을 거절했다고 한다.  사실, iOS든 안드로이드든 각자가 가진 규정과 절차는 분명히 준수해야하고 그걸 지켜야하는 것이 원칙이라, 앱 등록이 거절됐다는 점에 대해서는 충분히 인정하고 괜찮다고 생각한다.  진짜 문제는, 내 스스로에게 있다는 점인데, 이것을 계기로 내 스스로가 특정 회사 제품이나 플랫폼에 너무 심하게 종속되어있어서, 원하는 제품이나 원하는 무언가를 하려고 할 때 이것이 내 발목을 잡는다면 제품이 제공하는 기능의 100%를 사용은 고사하고 접근조차 안된다면, 돈을 지불하는데에 있어서 상당한 낭비가 된다고 생각하게 됐다는 점이다.  즉, 애플제품과 비 애플제품을 같이 쓰는건 상당한 스트레스를 준다는 거다.  

안드로이드는 2010년에 처음 써보고 너무나도 실망한 나머지, 리눅스를 사랑한다고 말하는 유저 입장에서 쓰지말아야할 제품으로 낙인을 찍어버렸다.  최근 삼성 갤럭시 S6 Edge+를 써보게 됐는데, 예전보다 많이 나아지긴 했지만 솔직히 말해서 안드로이드 앱을 사는데 돈을 쓰고싶지 않다는 생각은 여전히 갖고있다.  안드로이드 역시 구글이라는 회사에 종속되어 통제/관리받는 플랫폼이지만, 태생이 오픈소스라는 부분에서 타 기기와 연결하는 것에 인색하지 않다는 점은 애플과는 좀 많이 다른 것 같다.  애초에 애플은 처음부터 애플제품과 타 제품의 연결 자체를 고려하지 않고 만들테고, 그러한 제품의 개발정책을 벗어나려는 유저의 성향이 충돌되서 생기는 문제이므로 어찌보면 지극히 개인적인 문제일 수 있겠지만, 다시 얘기하자면 내 스스로가 특정회사 제품에 종속되는 상황 자체가 그 경험을 계속 유지하기 위해 꾸준히 그리고 보다 더 큰 지출을 요구당한다는 생각을 갖게됐다는 점이다.  2007년 아이맥을 쓰면서 한 회사의 제품만 계속 쓰는 것이 어떻게 보면 장점이 될 수 있다고 생각했던 나였다.  다른걸 자꾸 배우거나 적응해야할 필요가 없으니.  아마도 애플은 앞으로도 삼성 기어 S3 앱 등록을 허가하지 않을 것 같고, 난 그 부분에서는 이미 포기했다.  애플 와치 안사고 삼성 와치사서 그걸 아이폰이랑 연결하려던 게 내 잘못이겠지.


결국 정리해보면, 원래 애플 제품들이야 기본 바닥에 깔린 개념 자체부터가 이미 애플 제품끼리만을 같이 사용하는 것으로 가정하고 만들어져왔을테고, 애플 제품을 구입하는 행위 자체가 이러한 제조사의 경영방침에 암묵적으로 동의를 하고 구입하는 것일테다.  따라서, 애플 제품에 다른 기기를 연결하려는 시도는, 작동이 되지않더라도 그건 당연한 것이고, 그럴 목적이라면 애플 제품을 사지 말았어야하는 거다.  하지만, 원래도 충분히 가능한 걸 일부러 굳이 못하게 막는다면 그건 좀 너무하지 않나 하는 생각도 들지만, 일단 그건 놔두고서라도 내가 내 스스로를 애플 제품에 종속시켜서 컴퓨터를 살 때는 무조건 맥만 사야되고, 시계를 사게되면 무조건 애플 와치만 사야하며, 핸드폰을 사도 무조건 아이폰만 사야하는 상황에 내몰게 했다는 거다.  이게, 예전에 Mac OS X의 모든 것이 튼튼하고 좋았을 당시에는 이것 자체는 문제가 되지 않았고, 오히려 더 장점이 될 수도 있다라고 생각했었는데, 갈수록 떨어지는 품질과 감당하기 힘든 가격상승은 오히려 짐이 됐다는 거다.


대안, 혹은 더 나은 길

이번 터치바 맥북프로, 삼성 기어 S3를 통해 이걸 어떻게 해결해야할까 며칠을 고민했다.  내린 결정은, 결국은 그 어디에도 종속되지 않는 플랫폼으로 가야한다는 점이었다.  좀 과대해석일 수도 있겠지만 이런게 왜 그토록 유럽 사람들이 리눅스를 선호하는지, 자유라는 것에 대해 왜 그리 중요하게 생각하는지 약간은 이해가 됐다.

예전부터 아주 인기가 좋은 프로그래밍 에디터 중 Sublime Text라는 것이 있다.  이걸 데모를 받아서 처음 써보고는 완전히 반해버려서 바로 결제를 해서 쓰게됐는데, 어느날 하루는 예전에 같이 근무했었던 독일인 직원이, Vim이나 Emacs 같은 오픈소스 놔두고 왜 그런걸 사서 쓰냐고 물어본 적이 있었다.  때마침 그때, Sublime Text의 버전 3이 공개됐는데, 내가 구입했을 당시 버전 2의 가격은 $39였고 충분히 합당한 가격이라고 생각해서 구매했는데, 버전 3은 $79가 됐다.  솔직히 너무 비싸다고 생각해서 구입을 하지않았고, 오히려 버전 2를 구매한 것을 후회하게 됐다.  나름 새로운 에디터에 익숙해졌기 때문.  그래서 그 직원의 말을 듣고 나름 바뀐 사고방식이, 될 수 있으면 오픈소스를 쓰자는 것이었다.  이후, Sublime Text는 삭제하지않고 놔뒀지만, Vim을 더 잘쓰기 위해 시간을 많이 투자했고 지금은 아주 잘 쓰고 있다.

앞으로 써야할 IT기기의 플랫폼은 무조건 오픈소스를 기반으로 쓰기로 결정했다.  나에게 나름 "차세대 컴퓨터 운영체제"로서는 데비안, 젠투, FreeBSD 이 셋 중에서 오랫동안 고민하다가, 젠투로 낙점했다.  하루 시간을 들여서 사무실 컴퓨터에 젠투에 KDE 5 Plasma를 설치했고, 상당히 만족스럽게 쓰고있다.  이제는 현재 사용 중인 맥프로와 맥북프로에도 젠투를 설치해서 쓰려고 계획 중인데, 아무리 생각해도 iMessage를 대체할 프로그램이 없어서 고민 중이다.  딴건 다 그럭저럭 대체가 되는데, 컴퓨터와 키보드로 폰에 문자 메시지를 보내는 건 애플 제품만이 유일하다보니 이건 어떻게 해결이 안되겠더라.  안드로이드 폰에서도 이런 기능이 있으면 좀 알려주시라.


다음 번 맥북프로가, 터치바 이전 모델처럼 바뀌고 하드웨어 스펙이 올라가면, 그때는 분명 맥북을 쓸 것 같다.

아이폰, 아이패드는 솔직히 못버리겠다.  안드로이드는 왜 그렇게 마음에 안드는지...

블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

예전에 작업환경과 건강이라는 제목으로 글을 하나 포스팅한 적이 있다.

http://jswlinux.tistory.com/202


요약하자면, 사실 결국은 나이탓이긴 한데, 마우스의 키보드의 배치, 자세, 그리고 모니터 크기에 따라서 책상에서 작업하는 것만으로도 상당히 몸에 무리가 많이 올 수도 있다.


현재 애플 썬더볼트 디스플레이를 2대를 사용하고 있는데, 이 애플 썬더볼트 디스플레이는 딱 한 종류로, 27인치 사이즈에 2560x1440이라는 해상도를 갖고있다.  애플빠들에게 썬더볼트 디스플레이는 나름 갖고싶은 궁극의 아이템 중 하나이므로 나는 기왕사는거 듀얼로 쓰겠다고 해서 2대를 구입했다.


사실 지금 생각하면 정말 후회스럽다.  돈이 아까운 것보다는, 썬더볼트 디스플레이는 내가 지금껏 써온 애플 제품 중에서 구입을 가장 후회하는 제품이었으며, 그 누구에게도 추천해주기 힘든 제품이다.  불편한 점을 나열하자면 몇 가지가 있는데, 

1. 전원버튼이 없다.  영화볼 때 한 쪽 스크린을 전체화면으로 해놓아도 옆의 모니터가 그냥 켜져있는데, 이걸 끌 방법이 없다.  이 점이 가장 불편했다.

2. 모니터의 높낮이 조절이 불가능하다.

3. 상상 이상으로 무겁다.


하지만 가장 큰 문제점은, 27인치급 모니터 두 대를 나란히 세워두면 목에 상당한 통증이 온다.  이 점에 대해서는 위에 언급한 작업환경과 건강이라는 글에 설명해뒀으니 궁금하신 분은 보시길.


저 글을 포스팅한 이후로도 역시 자꾸만 뭔가가 불편하다는 느낌이 계속 들어서, 뭔가를 이래 바꾸고 저래 바꾸고 해봐도 역시 결론은, 모니터가 너무 길다는 것이었다.  그래서 썬더볼트 디스플레이를 옆으로 세울 방법을 알아봤더니, 왠 책상에 고정시키는 쇳덩어리로 된 지지대를 결합해서 사용하는 제품들 밖에 없더라.  내 책상은 유리라 그런걸 부착할 수도 없고, 그런 제품들이 대부분 사무실에서 쓸법하게 나온 거라 가격도 비싸다.


일단 테스트 삼아, 두대를 그 자리에서 한 번 돌려봤다.


역시 비싼값을 하는지, 좌우 시야각이 상당히 좋았다.  사무실에서도 모니터 하나를 옆으로 세워놓고 쓰는데, 그건 싸구려라 고개를 조금만 돌려도 화면이 번들번들거렸는데, 이건 전혀 그런 점이 없었다.


작업 개시.

일단 디스플레이를 분해한다.  분해방법은 아이맥과 같다.  자세한 건 인터넷 찾아보시고

(https://www.ifixit.com/Teardown/Apple+Thunderbolt+Display+Teardown/6525)

간단히 설명하자면,

이렇게 생긴 형태의 압착고무 용품 중에서 힘이 좀 쎄고 튼튼해보이는 것을 화면에 부착시킨 뒤 살살 잡아당기면 디스플레이 겉에 붙어있는 플라스틱 덮개가 들려나온다.  강력한 자석으로 부착되어 때문에 힘이 쎈걸 사용해야한다.  나는 이렇게 생긴 것을 썼다.

그렇다.  그냥 면도기 걸어놓는 욕실용품이다.




분해를 해서 디스플레이를 들어내면 이렇게 생겼을 거다.



여기서 분해를 해야할 부분은 바로 여기인데



분해하다 정신이 없어서 사진을 찍지 못했는데, 사진에 보이는 나사를 풀지말고,

이 부분을 보면 나사가 대략 8개 정도 박혀있다.  그것을 풀면 된다.  


물론 사진에 보이는 나사를 풀어도 상관없다.  스탠드가 잘 안빠지기 때문에, 사진에 보이는 경첩처럼 생긴 저 부분의 나사를 다 풀어서 빼면 된다.



빼고나면 이렇게 생겼다.



내 계획은, 모니터를 세울 받침대로 저 스탠드를 활용할 계획이라, 알루미늄의 날카로운 부분을 천으로 감싸 혹시 모를 손상을 막고자 했다.  애플제품 사면 하나씩 주는 액정 닦는 극세사 천이 하도 남아도는 관계로 그것을 감싸서 케이블 타이로 묶었다.



그리고나서, 모니터의 바닥 부분이 닿는 부분의 손상 역시 방지하기 위해 이렇게 생긴 고무로 된 충격방지제를 붙였다.



이것을 디스플레이가 스탠드에 닿는 부분에 접착시킨다.



완성된 모습





블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,



ssllabs.com에서 A+ 받은 Apache / NginX SSL 설정을 공유해드린다.


Apache:

<IfModule mod_ssl.c>

<VirtualHost *:443>

....

SSLEngine on

SSLProtocol all -SSLv2 -SSLv3

SSLHonorCipherOrder on

SSLCipherSuite "-ALL EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EDH+aRSA+AESGCM EECDH+ECDSA+AES EECDH+aRSA+AES EDH+aRSA+AES RSA+3DES"

SSLCertificateKeyFile   /etc/ssl/private/your_website.key

SSLCertificateFile /etc/ssl/certs/your_website.crt

</VirtualHost>

</IfModule>


<IfModule mod_headers.c>

Header add Strict-Transport-Security "max-age=15768000"

</IfModule>


ServerTokens ProductOnly

ServerSignature Off

TraceEnable Off


저장 후  headers 모듈을 활성화하고나서 아파치 서버를 재시작해주면 된다.

sudo a2enmod headers && sudo service apache2 restart



NginX:

server {

        listen   443 default_server;

        server_name yourwebsite.com;


        ssl on;

        ssl_session_cache shared:SSL:20m;

        ssl_session_timeout 180m;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        ssl_prefer_server_ciphers on;


        ssl_certificate /etc/ssl/certs/yourwebsite.pem;

        ssl_certificate_key /etc/ssl/private/yourwebsite.key;


        ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

        ssl_dhparam /etc/nginx/cert/dhparam.pem;

        add_header Strict-Transport-Security "max-age=31536000";


        ......

}


저장 후, 2048비트 길이의 safe prime을 담은 DH prarmeter 파일을 생성하기 위해 다음의 명령어를 실행해준뒤 엔진엑스를 재시작한다.

sudo mkdir -p /etc/nginx/cert && sudo openssl dhparam 2048 -out /etc/nginx/cert/dhparam.pem

sudo nginx restart





블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

사실 좀 쓸데없는 포스팅이긴 한데, 좋은 작업환경을 갖게되면서 오히려 몸이 안좋아졌다.  일단 내 작업환경부터 보자.



왼쪽엔 그렇게 갖고싶었던 애플의 최신형 워크스테이션인 맥프로

모니터는 역시 그렇게 갖고싶었던 애플의 27인치 썬더볼트 디스플레이 2대

Filco 마제스터치 닌자2 흑축 기계식 키보드

애플 트랙패드


일단 맥프로부터 보자.

맥프로에 탑재된 그래픽카드인 FirePro D시리즈에는 사용자마다 무작위로 충돌현상이 일어나는 이슈가 있는데, 처음엔 이유도 모르고 반복되는 다운현상에 엄청 스트레스 받아가면서 사용해왔다.  나중에 맥프로 사용자들 사이에서 그래픽 이슈가 제기되면서 문제가 확대된 케이스라 결국 애플스토어를 방문했고 그쪽 직원들도 이미 잘 알고있는 사항이더라...

그래픽카드를 통째로 교환하고와서도 여전히 다운되는 현상이 있어서 더더욱 스트레스를 받아왔는데, 이것 때문에 무작정 애플스토어를 방문하기엔 또 다시 컴퓨터 없이 1주일 넘게 살아야하는 상황이 불편해서 어떻게든 원인을 알아내보려고 노력했다.  그 결과, 최근까지 정말 인기있는 맥용 IRC 클라이언트인 Linkinus2가 상당한 양의 에러메시지를 내보내는 것이 포착되어 그것의 사용을 중단하니까 다운현상이 싹 사라졌다.

나랑 비슷한 상황을 겪는 사람이 있나싶어서 Linkinus 홈페이지를 찾아가려고보니 회사가 없어졌더라...  정말 애용하는 앱이었는데 슬프네...


모니터를 보자.  사실 내 몸이 아프게 된 주범 2개 중 하나가 바로 모니터다.

예전에는 무조건 모니터 사이즈가 크면 클수록 좋다고 생각했고, 여유가 되자마자 지른게 바로 썬더볼트 디스플레이 2대이다.  24인치와 27인치는 정말 비교가 안될 정도로 차이가 많이 나는데, 27인치 두 대를 붙여놓으니까 목에 무리가 많이 왔다.  화면 양 끝을 보고있으면 목에 통증이 오는데, 그렇다고 한 대를 정중앙에 메인으로 두고 다른 한 대를 45도 각도로 꺾어서 놓더라도 결국 그 모니터를 볼 때면 목에 통증이 왔다.

사실 개인적으로, 모니터와 눈의 거리는 약 50cm 정도가 작업하기 가장 적당하고 편안하다고 생각해서(50cm면 상당히 가깝다) 최대한 내가 작업하는데 편안한 거리에서 작업하려고 했지만, 이 정도 거리면 각 모니터 가로사이즈 약 60cm * 2 = 120cm나 되는 길이를 눈동자만 굴려서는 편안하게 볼 수 없다. 반드시 목을 돌려야 양 끝을 볼 수 있고, 목을 돌린 상태에서 단 1분만 있어도 목이 아프다.

정말이지, 이렇게도 배치해보고 저렇게도 배치해보고 오만가지 방법을 다 해봤는데, 최종적으로 결론을 내린건, 모니터가 클수록 모니터와 내 눈의 거리가 멀어야 편안하다는 것이다.  그런데, 그렇게하면 또 문제가, 화면의 글씨가 작아져서 나도 모르게 몸을 앞으로 밀게된다는 점이다.

그래서 해결책을 내린건, 내가 사용하는 앱들의 폰트크기를 늘린 것.  웹브라우저는 크롬의 경우 125%, 터미널은 14pt로 확대해서 사용하는데, 그나마 이렇게 하니까 거리가 멀어도 글씨가 다 보이니까 편안해졌다.  지금은 대략 모니터와 눈의 거리가 약 90cm에서 1m 정도 떨어진 상태에서 보는데 그래도 여전히 눈동자만 굴려서는 화면 왼쪽 끝과 오른 쪽 끝을 편안하게 볼 수 없다.  어느정도는 목을 돌려야한다는 것...  이렇게 쓰다가 또 불편하다고 느끼면 어떻게든 또 바꾸겠지...


다음은, 키보드가 눈에 들어오겠지만 마우스 얘길 좀 해보자.  내 몸에 무리가 온다고 느끼게된 최초의 하드웨어가 바로 마우스다.  키보드 옆에 있는 까만 물체가 바로 버티컬 마우스인데, 저걸 쓰기까지 무수히 많은 마우스를 사왔다.  현재 내 손목 상태는, 손목을 한바퀴 돌리면 뼈에서 소리가 나는데, 컴퓨터를 일정시간 이상 사용하면 심한 피로를 느끼게 된다.

이 원흉의 시작은 바로 애플의 매직마우스다.


처음 발매되자마자 바로 구매해서, 내 개인적으로 "환불"을 요청한 최초의 애플 제품이 됐다.  아시다시피 이 매직마우스는 높이가 상당히 낮은데, 높이가 낮은 마우스의 버튼을 클릭하기 위해서는 손가락이 항상 긴장상태에 있어야한다.  설명하기가 좀 어려운데, 로지텍의 유명한 마우스들을 보면 다들 하나같이 덩치가 크다는 걸 알 수 있다.  로지텍 마우스들은 자세히 보면 마우스에 손을 얹어서 힘을 빼고 쓸 수 있어서 상당히 편하다.

그리하여 이때부터 시작된 내 손목 통증은 어떤 마우스를 써도 손이 피곤하게 됐는데, 이 과정에서 여러가지 마우스를 사용해봤다.  심지어는 켄싱턴의 유명한 트랙볼인 슬림블레이드까지 사용해봤다.


이 마우스는 높이가 너무 높아서 손가락을 계속 들고있다보니 힘들더라.  얼마 못써서 봉인하게 됐다.  그 다음에 구입하게된 것이 애플의 트랙패드.


매직마우스와 같은 이유로, 너무 낮아서 손에 무리가 오는 형태.  결국 최종적으로 구매해서 지금까지 쓰고있는 것이 저렴한 가격의 버티컬 마우스다.


사실 이거라고 손목이 그렇게 편한 건 아닌데, 다른 애들을 쓰면 확실히 피로가 오는데 이건 좀 덜해서 그나마 아직까지 사용하고 있는 중이다.


그런데 사실 손목 통증 때문에 이거 써보고 저거 써보고 하면서 깨닫게 된 것이 2가지 있는데, 하나는 책상의 높이와 키보드 사이즈가 상당한 역할을 한다는 것이다.


일단, 책상높이는 정말 상당히 중요한데, 이런 류의 그림이 괜히 있는 것이 아니다.


진짜로 저렇게 팔꿈치가 90도 각도가 나오는 자세에서 키보드를 쳐야 몸에 무리가 안온다.  나도 저렇게 낮은 높이의 책상을 구입하고싶어서 많이 돌아다녀봤는데, 사는 곳의 특성상 가구가 너무 비싸서 사무용 가구를 판매하는 곳에 가서 저렴한 사무용 책상들만 사게되고 그렇다보니 높이가 너무 높아서 어깨와 손목 동시에 무리가 많이 오게됐다.  나름 높이를 맞춘다고 머리를 굴린게 의자의 높이를 높인건데, 그렇게하니까 그것 역시 나름대로 불편하더라.  사실, 사무용 책상과 가정용 책상이 뭐가 다르냐고 생각할 수 있는데, 사무용 책상은 신발을 신은 상태에서 적절한 높이로 맞춰진 거라 가정용 책상보다 약간 높다.


맞지않은 높이의 책상과 더불어 몸에 무리가 오게하는 또 다른 범인은 바로 키보드다.  사진에 보다시피 나는 풀사이즈 키보드를 사용한다.  숫자키패드는 반드시 있어야한다는 생각 때문에 풀사이즈를 사게됐는데, 쓰다보니 키보드에서 마우스로 손을 왔다갔다하는 거리가 너무 멀고, 이게 계속 반복되면 무리가 온다.  괜찮으신 분들도 있겠지만, 나처럼 손목에 한 번 통증이 오기시작하면, 아주 사소한 것에서도 통증이 오기 시작한다.  그래서 맨 위 사진에 보면 애플 알루미늄 미니 키보드와 기계식 키보드가 같이 놓여있는데, 기계식 쓰다가 손목 아프면 미니 키보드 쓰려고 저렇게 해놓은 것이다.  그래서 지금은, 키보드를 하나 더 산다면, 최소의 넓이로 된 기계식 키보드를 사고싶다.


컴쟁이 입장에서 필요할 물건들은 거의 다 있어서 이제는 더 이상 필요한 것이 없는 해탈의 경지에 가까이 가긴 했는데, 몸에 무리가 오니까 그걸 해결하기위한 다른 물건들에 눈이 가기 시작하네...











블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

리눅스에서 SSH를 통해 MySQL 서버를 마스터-슬레이브간 동기화하는 방법에 대해 작성한다.


1. 먼저 SSH로 접속할 유저를 생성하고 SSH키를 만든다.


2. SSH 터널을 생성한다.  MySQL을 위한 포트번호는 33061로 정한다.

sudo -u username ssh -f ServerIPAddress -L 33061:127.0.0.1:3306 -N


3. 접속확인을 해본다.

$ mysql -h 127.0.0.1 -P 33061 -u root -p

4. /etc/mysql/my.cnf 파일을 열어 server-id=1 항목을 주석해제하고 아이디를 넣어준다.


5. 마스터 노드에서, 레플리케이션용 슬레이브 유저를 생성한다.

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@% 'IDENTIFIED BY 'your_password';

mysql> GRANT ALL PRIVILEGES ON `your_database` . * 'slave_user'@'127.0.0.1' WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;


여기서 mysql 서버를 재시작해주는 것을 권장한다.

$ sudo service mysql restart

$ mysql -u root -p

mysql> show master status;

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |     5946 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

여기서 File과 Position을 잘 기록해놓는다.  숫자는 상황에 따라 다르다.


6. 이번엔 슬레이브 노드에서, 마스터 노드에 접속하기위한 설정을 한다.

mysql> stop slave;
mysql> CHANGE MASTER TO MASTER_HOST='master_address', MASTER_USER='slave_user', MASTER_PASSWORD='your_password', MASTER_LOG_FILE=’mysql-bin.000001‘, MASTER_LOG_POS=5946;
mysql>start slave;


7. 테스트 해본다.  특히, 로그파일 /var/log/mysql/error.log 에서 ERROR가 있으면 안된다.

예)

150427 14:17:05 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000001' at position 107, relay log './mysqld-relay-bin.000001' position: 4
150427 14:17:05 [Note] Slave I/O thread: connected to master 'slave_user@127.0.0.1:33061',replication started in log 'mysql-bin.000001' at position 107




블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

맥에서 내부 아이피를 차단해야할 일이 있어서 /etc/hosts.deny에 아이피를 넣어줬는데 여전히 ssh 접속을 받더라.  뭔가 이상하다싶어 알아보니, 맥에서는 조금 다르다.  설정은 간단하니, 아래의 명령어를 사용하면 된다.


먼저, /etc/pf.conf 파일을 열어, 가장 아래에 차단하고 싶은 IP를 다음과 같은 식으로 추가해준다.


block in from 10.0.1.22


다음의 명령어를 실행한다.


sudo pfctl -e -f /etc/pf.conf





블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

2014년 7월 11일 맥프로를 구입했다.  구입한 사양은, 제온 옥타코어, 램 32기가, SSD 512G, 그래픽 D700 정도.  한국 가격으로는 880만원이더라.  환율 바가지...  여기서 구입한 가격은 교육할인 받아서 $6,200이었다.


사진이나 자세한 하드웨어 사양, 리뷰, 사용기 등은 구글에서 검색하면 수도없이 검색되므로, 글쓴이의 포스트는 그외의 것들을 다루려고 한다.  일단 아래의 그림을 보자.

 


겉 재질이 금속이기 때문에, 그림과는 달리 빛 반사와 광택이 있다.  다른 리뷰에서 수많이 언급했지만, 보이는 것보다 많이 무겁다.


1번은 자물쇠 표시가 되어있으면 케이스가 잠겨있다는 의미이다.  반대방향으로 밀면 자물쇠가 풀려있는 모양이 나오는데, 그 상태에서 맥프로를 들어올리면 케이스만 빠진다.  내부의 부품을 교체하거나할 수 있다.

 

썬더볼트 단자는 두번째 버전인 Thunderbolt 2이다.

2번은 Thunderbolt Bus 1.

3번은  Thunderbolt Bus 2.

4번은 마지막으로 Thunderbolt Bus 0

참고로, HDMI 포트는 썬더볼트 버스 0이라고 한다.

 

CPU는 일반형은 Xeon E5 1620 v2에서 시작하며, 선택 가능한 CPU의 옵션 목록은 다음과 같다.

E5 1650 v2 - 6 코어

E5 1680 v2 - 8 코어

E5 2697 v2 - 12 코어

 

램의 경우, 기본형은 12GB가 달려있는데 다행히도 (당연한 얘기지만 3G짜리 램은 없으므로 ) 4GB짜리 3개가 박혀있으므로 4G하나만 더 구매해서 넣으면 된다.  램의 타입은 DDR3-1866 (PC3-14900)이며 ECC이므로 가격이 좀 나간다.

 

듀얼 썬더볼트 디스플레이를 사용하는 경우, 어떤 버스에 연결하던 GPU 2개에 각각 하나씩 작동하게 하는 것은 현재로서는 불가능하다.  즉, 하나의 GPU가 모든 디스플레이의 입출력을 제어하는 것으로 보인다.  테스트용으로 일반 23인치짜리 모니터를 HDMI에 연결했지만, 이 역시 마찬가지로 하나의 GPU에서 모두 처리하는 것으로 나온다.  확실하진 않은데, 어쩌다 한 번씩 모니터가 깜빡거린다.

2014년 10월 24일 업데이트: 나같은 생각을 하는 사람이 있었는지, GPU 2개를 어떻게 모두 쓸 수  있는지 문의가 올라왔더라.  간략하게 쓰자면, 다른 GPU 하나는 모니터가 연결되게끔 설계된 것이 아니라 연산 전용으로만 동작한다는 얘기가 있다.  https://discussions.apple.com/thread/6483464



 

웹서핑과 음악감상 정도의 작업, 그러니까 CPU 사용률 5% 미만의 작업들만 할 경우에는 CPU를 비롯한 iStat으로 측정되는 전체적인 내부온도는 대략 45도이며, 팬 속도는 800 rpm에서 1000 rpm 정도를 보인다.

 

기가비트 네트워크 인터페이스는 브로드컴의 BCM5701이라는 모델이 2개 장착되어있다.  이 칩셋에 대한 성능이 어떤지는 잘 모르겠지만, 파일전송 테스트를 했을 때는 상당히 만족스러운 결과값을 보여줬다.  아래는 테스팅 환경

파일서버:
  - 우분투 14.04 서버
  - CPU: Xeon E3-1245
  - RAM: 램8기가
  - 하드디스크: SATA3 7200 RPM 3.5’
  - 이더넷: 인텔 i217-v 보드통합형

그외
  - 프로토콜: AFP
  - 파일크기: 5GB
  - 케이블: CAT 6
  - 공유기 및 스위치 허브: 에어포트 익스트림 베이스 스테이션, 넷기어 GS108T

 

테스트 결과: 평균 116.5 MB/s 

 

SSD 용량이 부족한 관계로, 아이튠즈에서 관리하는 음악파일과 아이폰/패드 앱은 SSD에 넣을 수가 없었는데, 이것은 어쩔 수 없이 네트워크로 해결하기로 했다.  NFS는,  root가 아니면 write하기가 곤란하고 쓰기를 했더라도 파일서버 측의 OS가 다르면 uid / gid 때문에 정작 서버 측에서 파일관리하는데 곤란한 문제가 발생한다는 경험이 있었다.  결국, 서버 측에 afp를 설치하고 fstab을 수정해서 부팅시 네트워크 스토리지를 마운트하는 식으로 해결하기로 했는데, 언제부터인지 맥OSX에서 fstab을 없애버렸다.  구글링해서 알아내고 테스트해본 결과를 공개한다.  이 글을 읽으시는 분이라면 기본적인 컴퓨터 네트워킹 및 리눅스를 다룰 줄 아는 분이라고 보고, 자세한 설명은 건너뛴다.

 

맥OSX에서는 automount라는 명령어가 /etc/auto_master라는 파일을 참조해서 서비스를 구동한다.  따라서, 처음 수정해야할 파일은 /etc/auto_master이다.  열어서 다음의 라인을 추가한다.

/-     auto_afp     -nosuid

 

이번에는 /etc/auto_afp라는 파일을 작성한다.  퍼미션은 600이며 소유자는 root:wheel 이다.  퍼미션이 600인 이유는, afp 마운트를 하기위해서 비밀번호를 plain text로 넣어야하기 때문이다.  형식은 다음과 같다.

Mount_Point     -fstype=afp     afp://Username:Password@IP_Address/Dir_Name

 

여기서 Dir_Name은 서버측 netatalk 설정파일을 참고해야한다.  글쓴이의 설정을 보여드린다면,

$ tail /etc/netatalk/AppleVolumes.default
/home/jswlinux/HardBox/Media/Music/iTunes     iTunes     allow:jswlinux

이렇게 해두면, 다른 사용자는 마운트할 수 없으므로 보안에 좀 더 좋다.  보시면 아시겠지만, 첫번째 필드는 서버 측의 경로이며, 두번째 필드는 클라이언트가 마운트를 시도할 때 사용하는 이름이며, 세번째 필드는 옵션이다.  여기서 Dir_Name은 두번째 필드에 해당한다.  글쓴이의 /etc/auto_afp 파일을 보여드린다.

/Users/jswlinux/Music/iTunes -fstype=afp    afp://jswlinux:password@10.0.1.3/iTunes

 

이해가 가실 거라고 생각한다.  이렇게 수정을 마치고 나면 아래의 명령어를 입력한다.

sudo automount -vc

-v는 예상하시는대로 verbose이며, -c는 캐싱된 내용을 비우라는 뜻이다.  이것으로, automount는 데몬 형식으로 작동하는 것을 추측해볼 수 있다.

 

그 외로는, 전에 사용하던 맥북프로에서 ~/Library를 그대로 옮겨왔는데, 뭔가 좀 이상하다.  일단 호스트네임이 바뀌질 않고, 바꾸더라도 다시 돌아온다.

 


블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,