'macosx'에 해당되는 글 3건

글쓴이의 맥북프로는 2011년 버전이며, 320기가 하드디스크에 DVD수퍼드라이브가 장착된 모델이다. 이 DVD드라이브를 거의 쓸 일이 없으며, SSD를 원했기 때문에 기존의 하드디스크를 제거하고 SSD를 달았으며, DVD 드라이브 역시 제거하고 1TB 하드디스크를 장착해서 2개의 디스크를 사용하고 있다.

문제는, 맥의 여러가지 프로그램들이 Native DVD Drive를 요구한다는 점인데, 부트캠프도 그렇고 DVD 플레이어도 역시 마찬가지로 내장 DVD드라이브가 없으면 작동이 되질않는다. 구글링을 해봤고, 쉬운 해결방법이 나와있어서 소개해드린다.

먼저 원본 바이너리 파일을 백업해둔다. cd /System/Library/Frameworks/DVDPlayback.framework/Versions/A sudo cp DVDPlayback DVDPlayback.bak

다음의 코드를 붙여넣어 패치한다. sudo perl -pi -e 's|\x49\x6E\x74\x65\x72\x6E\x61\x6C|\x45\x78\x74\x 65\x72\x6E\x61\x6C|g' /System/Library/Frameworks/DVDPlayback.framework/Versions/A/DVDPlayback

 

마우스 드래그를 막아놓은 관계로 파일을 첨부했다. 필요하신 분은 다운로드 하시면 되겠다.

DVDplayback_patch.sh

블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,
나는 맥빠다. 누차 내 블로그에 언급했지만 나는 맥을 사랑하는 맥빠다. 하지만 애플빠는 아니다.
애플빠와 맥빠는 분명 다르다. 다르다고 생각한다. 애플빠는, 애플에서 나오는 모든 제품을 열렬히 찬양하는 사람이라고 볼 수 있는 반면, 나는 오로지 MacOSX 하나만을 열렬히 사랑하는 맥빠다.
그럼에도 불구하고 애플에서 나오는 제품 다수를 갖고있다. ㅎㅎㅎ

뭐가 있는지 나열 좀 해볼까.
아이팟 나노, 아이팟 클래식
아이폰 2G 2대
2007년형 신형 아이맥 20"
2010년도 신형 맥미니서버
에어포트 익스트림 베이스 스테이션
매직 마우스

아이패드는 2달 후에 사기로 결정했다. 나보다는 와이프가 쓰고싶어하는 것이라서 구매하기로 했으면 분명 살 거다. 그러고보니 없는 것도 많네.
맥프로, 맥북, 맥북프로, 맥북에어, 아이팟터치, 아이팟 셔플, 시네마 디스플레이가 없다.
아이팟터치, 아이팟 셔플은 내가 가진 아이팟 클래식/나노와 아이폰에서 커버가 가능하니까 앞으로도 안살 것 같고, 맥북에어/맥북/맥북프로 중에서는 하나만 있으면 될 것 같고, 맥프로와 시네마디스플레이는 향후 5년 이내에 구매하는 걸로 목표를 세웠으니 이것도 언젠가는 살 것 같고...
본론으로 넘어가자.

맥은 엄연히 유닉스다. 인텔 맥에서 돌아가는 레퍼드부터 Single UNIX Specification, SUS에서 인증된 Open Brand Unix 03에 준하는 유닉스다. 그런데 리눅스만이 최고이고 리눅스만이 진리이신 분들이 그걸 용납하질 못하시겠단다. 참고로 나도 리눅스 빠라고 할 수 있는 사람이다.
리눅서들이 뭐라고 했을까?

s: 독특하군요. 애플이랑 유닉스랑 관련도 없는데 ㅎㅎ
e: 유닉스 기반이어서 그러지 않을까요? ㅎ
s: bsd 기반이지
e: FreeBSD
s: 유닉스는 아니라는
e: FreeBSD도 유닉스 기반이니.. 뭐..
s: 유닉스는 아니죠
e: 그러니까 기반..
나: 맥은 유닉스인데요...
s: 누가 맥이 유닉스레요?
나: 링크를 드리죠.
나: http://ko.wikipedia.org/wiki/단일_유닉스_규격
s: 저 자료는.. 애매하네요.
나: 애매하시면 unix.org에 항의를...
s: 인증 받은거라고 하니
s: 유닉스도 아닌 것이 유닉스인양
s: 인증 받으면 다 유닉스인가 보네
s: 좀 웃긴 거긴하네
s: bsd 가져와서 포팅한건데
s: bsd는 아니고 자기는 인증해서 유닉스라!
b: 유닉스 커널 쓴다고 유닉스라고 보긴 힘들텐데
b: 한때 POSIX로 유닉스 구분하던 사람들도 있었는데 그러면 윈도우도 유닉스라죠.

이 대화에서 아무런 대답이나 항의 등은 하지 않았다. 온라인에서 말싸움 하는 게 귀찮을 뿐더러 그럴 시간도 없고 어차피 되도않하는 말싸움 해봤자 시간만 아까울 뿐이고...
먼저, 내가 알기로 윈도우 2000은 한때 POSIX를 준수하던 시절이 있었다. 물론 XP부터는 아니라고들 한다.

이 대화에서 내가 하고싶은 말은, 맥이라고는 어떻게 생겨먹은지 인터넷으로 밖에 본 적이 없는 인간들이 어떻게든 맥을 까고싶어서 안달이 났거나, 지들이 쓰는 OS가 얼마나 잘났는지 지들이 만든 것도 아니면서 왜 그렇게 남이 쓰는 걸 못까서 난리인 건지 이해가 안간다는 말이다.

맥이 유닉스 인증을 받았건 안받았건 간에 내가 하고픈 말은, 지들이 아니라고 생각하면 아닌 거야? unix.org는 폼으로 있는 단체인가? POSIX는 동네 슈퍼 이름이야? 그렇게 할 말이 많고 지들이 맞다고 생각하면 직접 따지지, 왜 irc에 처박혀있는데? 
인증 받으면 다 유닉스인가 보네 <- 그럼 자네가 인정해야 유닉스인가? 대체 인증을 누가 해야하는데? 국제기관에서 인증해도 인정 못하겠다굽쇼? 
레퍼드가 단일유닉스규격 받은 게 말이 안된다고 생각하면 왜 unix.org에 항의메일 안보내는데? 영어가 딸려서? 중학교 때부터 대학교 졸업할 때까지 뭐했는데?
맥서버는 리눅스 서버랑 비교하자면 뭐 전혀 고려할만한 가치가 없는 쓰레기라고 하는데, 누가 맥서버로 사업하겠대? 웹호스팅 하겠대? 집에서 홈서버로 쓰겠다는데 무슨 쓰레기니 가치가 없다느니 말들만 많은지...

멍석 깔아주면 한 마디도 못하는 게 한국사람이란 거 다들 잘 알고있는 사실이지만, 국제기관에서 인정해준 사실이 지들 앞에서는 다 말도 안되는 헛소리고 이해가 안되는 상식 밖의 일이라는 거다. 물론 국제기관에서 인정하는 것들이 100% 정확한 게 아니고, 또한 기관의 결정이 진리가 아니라는 것 역시 모를만큼 바보는 아니다. 하지만, 어디까지나 나름대로 국제적인 표준을 심의/규정하는 기관이고 전 세계적으로 인정하는 사항이니만큼 결정이야 어쨌든 따라야하는 게 상식 아닌가?

축구에서는 오심이 한 번씩 생기는데, 대부분의 선수들은 이렇게 말한다.
"심판의 판정도 경기의 한 부분이라고 생각합니다"

이 블로그에서 내가 맥빠라는 사실은 누구나 쉽게 알 수 있을만큼 맥에 대한 찬양을 많이하고있는 본인이지만, 그만큼 리눅스도 좋아한다. 이 블로그에 몇 번이나 얘기했지만 나는 예전 한컴리눅스 사로부터 "대한민국 리눅스 발전에 기여한 20인"에 선정된 적이 있을 정도로 리눅스 활성화에 열렬한 사용자였다. 현재 인천 리눅스 동호회 운영진이며 한국 우분투 포럼 운영진이고 동시에 우분투 커뮤니티 공인 한국 컨택터이다. 또한, 한국 우분투 포럼 IRC의 방장이기도 하다. 
나는 오로지 블로그를 통해 내 생각을 말하는 것 외에는 결코 주위 사람들에게 맥이 최고다라고 말하지 않으며, 리눅스를 쓰지 말라느니 하는 말 따위는 하지 않는다. 게다가 리눅스가 단일유닉스규격에 맞지않는 OS라고 해서 리눅스가 유닉스가 아니라는 생각도 결코 해본 적이 없다.

최근에는 리눅스 유저들이 더 꽉 막힌듯한 사고방식을 보이는 사람들이 많아졌다. 서버관리하는 분들이 그런 생각 많이 하시던데, 맥서버가 서버로서 최고이고 적격이며 아주 우수한 플랫폼이라고 얘기하는 게 아니다. 단지 맥이 단일유닉스규격을 준수하는 유닉스라고 하니까 그냥 그런갑다 하는 거지, 왜 그걸잡고 비아냥거리면서 기관에서 승인받은 사실조차 지네들이 인정하네마네 하냐는 거다.

 말이 나온 김에 자격증 얘기 좀 해보자.
이러한 한국의 사회가 자격증 소지자를 무시하게 되는 거다. 일례로, 새로 들어온 신입사원이 리눅스 마스터 자격증이 있다고 치자. 뭐라고 할 건가? 대부분 이렇게 답할 거라 생각한다. 
"그거 있으면 뭐해?"
"그래서 니가 나보다 더 많이 알아?"

후자의 경우, 물론 아무리 자격증이 있다고 해도 경험에서 나오는 실력이 절대적으로 우위라는 건 부정할 수 없는 진리다. 그런데 전자처럼 자격증을 있으나마나하는 식으로 대접하다보니 결국은 이 사람이 객관적인 평가에서 합격을 했다는 일종의 자격이 아무 쓸모없는 휴지조각이 되어버리는 거다. 아마 우리나라 서버관리자들, 자격증 있으신 분들 별로 없을 거다. 물론 그런 거야 따라면 당장이라도 딸 수 있으실테고, 오히려 자격증에서 요구하는 것 이상의 실력을 갖고계실 거다. 

말을 하다보니 열받아서 횡설수설하게 됐는데, 정리한다.
본인, 불과 3-4년 전만해도 리눅스 밖에 모르는 리눅스 빠돌이였다. 96년도부터 리눅스 써왔고 나름 리눅스를 발전시키기 위해서 혼자라도 많이 노력해왔다.
지금은 맥 쓴다. 맥 정말 사랑한다. 좋은 건 나만 쓰고싶기에, 주위 분들 맥 쓰라고 권유하지 않는다. 하고싶지도 않다.
나도 리눅스 써왔고 지금도 리눅스 쓴다. 여전히 리눅스 좋아하고 여전히 리눅스의 발전을 위해서 대외적으로 노력하고 있다.

맥 까는 분들, 맥 까건 말건 내가 알 바는 아니라서 별로 상관 안한다.
그런데, 맥에 대해서 뭔가 마음에 안드는 게 있으면 나같은 유저들한테 말하지 말고 직접 나서서 얘기 좀 해달라. 맥이 단일유닉스규격 인증받은 게 마음에 안들면 unix.org가서 좀 따져달라. 윈도우 2000이 POSIX인 게 말이 안된다고 생각하면, POSIX에 직접 메일 보내서 따져라. 리눅스랑 비교해서 맥서버 쓰레기라고 하시는 분들, 뭐라고 하던 별로 상관없지만 맥 써보긴 했나? /etc 어떻게 생겼는지 구경은 해봤나?
못하겠으면, 어느정도 수용하고 인정할 줄 아는 자세를 갖춰라.

잘 알지도 못하면서 까는 것도 모자라, 그렇다고 지들이 생(착)각하는 게 진리인양 우기지 말자. 짜증난다.
블로그 이미지

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의 잡동사니 보관소

,