2013년 9월 7일 토요일

2013년 맥북에어에 우분투 13.04 + 리눅스 3.11 커널 설치(OSX과 듀얼 부팅)

얼마 전, 별생각 없이 kernel.org 들어가보니 리눅스 3.11 official version이 릴리즈 되었더군요.

그렇잖아도 지난 6월 사온 2013년 맥북에어에 리눅스를 깔아야지 깔아야지 하면서 깔지 않고 있었는데, 3.11도 나왔겠다 싶어 우분투 13.04를 설치하고 그 위에 리눅스 3.11을 컴파일해 설치했습니다.

설치 과정 자체는 매끄럽지만 이후 문제가 몇가지 있고 이걸 하나하나 해결하는게 조금 귀찮기에, 설치과정부터 문제들을 해결한 과정을 기록 / 공유해 볼까 합니다.


0. 설치 환경
제 맥북에어는 2013년형 11" 모델(6,1)이며, cpu와 RAM, SSD 용량을 모두 업그레이드했습니다.

1. ubuntu 설치 이미지 받아 cd 굽기
우분투는 맥용 이미지를 따로 배포하고 있습니다. 다음의 링크를 가서 13.04 for mac 이미지(ubuntu-13.04-desktop-amd64+mac.iso)를 받아 cd를 굽습니다.
http://releases.ubuntu.com/raring/
라이브 usb로 만들어도 될 것 같은데, 제 경우는 usb가 망가졌는지 제대로 진행이 되지 않아 라이브 CD를 굽고 USB CD 드라이브를 연결해서 설치를 진행했습니다.

2. SSD 파티션
우분투를 설치하기 위한 파티션을 남겨줘야 합니다. 맥OSX으로 부팅된 상태에서 disk utility를 열고(찾기 어려우면 spotlight를 활용합시다) SSD를 선택하고 Partition 탭으로 들어가 Macintosh HD 파티션을 원하는 만큼만 남기고 파티션 크기를 줄여줍니다.
어렵다면 다음 링크를 참고합니다. 움짤로 영어 몰라도 알 수 있게 설명해 줍니다.
http://osxdaily.com/2009/11/20/resize-partitions-in-mac-os-x-with-disk-utility/

3. 설치 이미지로 부팅
앞서 만든 라이브 CD 또는 라이브 USB를 꽂고, 맥북을 껐다 켜면서 Option(alt)키를 눌러 줍니다. 파워 버튼을 누르자마자 눌러줘야 합니다. 잘 안되면 파워 버튼 누르자마자부터 계속해서 Option 키를 강타해 줍니다. 그러면 사진과 같이, 어떤 파티션 또는 USB 또는 CD에서 부팅할지 선택할 수 있습니다.

Mac OSX은 다른 매체에서 부팅하려 하면 무조건 Windows로 생각하는 모양인데, 좀 아니꼽지만 선택해 주면 라이브 CD에서 우분투가 부팅됩니다.

사실 좀 이따 설명할 rEFIt를 설치하면 option 키 누를 필요 없는데, 제가 깜빡하고 그렇게 진행했으니 그냥 제가 한 순서대로 설명합니다.

4. 우분투 설치
설치는 기존에 하던대로 진행합니다.
다만, 중간에 Mac OSX을 발견했는데, 그거 지우고 설치할지 그거 놔두고 옆에다 설치할지 물어봅니다만, 듀얼부팅 할 생각이시라면 당연히 놔두고 옆에다 설치해 달라고 하셔야 합니다.

5. rEFIt 설치
설치가 완료되고 재부팅을 하면 OSX으로 부팅됩니다. 우분투로 부팅하려면 3번 과정에서처럼 다시 파워를 켜자마자 option 키를 눌러 부팅할 파티션을 선택해 줘야 합니다.
아무래도 귀찮으므로, rEFIt를 설치합니다. rEFIt는 부트 옵션 선택/관리 프로그램으로, 다음 링크에서 받을 수 있습니다.
http://refit.sourceforge.net/#download
다운로드된 rEFIt를 실행하고 설치 파일을 실행하면 rEFIt가 설치됩니다. 이제 껐다 켜면 기존처럼 무작정 OSX으로 부팅하지 않고, 어느 파티션으로 부팅할지 물어봅니다.

여기서 리눅스를 선택하면 grub 부트로더가 뜨고, 여기서 우분투를 선택하면 우분투로 부팅... 되어야겠지만 세상 일이 그렇게 쉽지 않고, 부팅 안되고 화면이 멈춥니다.

참고로, rEFIt는 더이상 개발자가 지원하지 않고 있고, rEFInd라는 프로그램으로 개발되고 있는데, 그걸 쓰는게 나을 것 같습니다. 전 쓰던 게 기억나서 그냥 rEFIt를 썼습니다.

6. linux parameter에 nosmp를 추가
grub 화면에서 e 키를 누르면 부트 패러미터를 조정할 수 있습니다.
여기서 패러미터에 nosmp를 추가해 주면 부팅할 수 있습니다.

밑에서 두번째 줄 정도에 다음과 같은 내용으로 시작하는 줄이 있을 텐데,
linux        /boot/vmlinuz-3.8.0 root=UUID=

줄의 마지막에 한칸 띄고 nosmp만 추가하면 됩니다.
그리고, f10 키를 누르면 이제 우분투로 부팅 됩니다.

7. nosmp를 영구 추가
이제 우분투로 부팅이 되었지만, 앞으로도 우분투로 부팅할 때마다 grub에서 nosmp를 입력해야 합니다. 번거로우니까, grub이 항상 nosmp를 추가해 부팅하도록 설정합니다.
/etc/default/grub 파일을 열면 GRUB_CMDLINE_LINUX_DEFAULT=" 으로 시작하는 줄이 있는데, 여기에 따옴표 안에 nosmp를 넣어줍니다. 이 파일은 관리자 권한으로만 수정되므로, 이에 유의합니다.
수정이 끝났으면 다음 명령으로 grub 설정을 업데이트 해줍니다.
$ sudo update-grub

8. 네트워크 되도록 수정
이제 부팅은 껐다 켜도 잘 되지만, 일단 네트워크가 안됩니다. 우분투 13.04에 맥북에어의 무선네트워크 장치 드라이버가 없기 때문입니다. 다음의 링크에서 deb를 받습니다.
http://launchpadlibrarian.net/138967184/dkms_2.2.0.3-1.1ubuntu3_all.deb
받은 deb 파일을 다음 명령으로 설치하고, 리부팅 하면 네트워크가 됩니다.
$ sudo dpkg -i 다운로드/받은/deb의/경로

9. EFI 모드로 수정
앞서 nosmp를 패러미터에 추가한 것은 맥북에어의 코어들 중 하나만 쓰겠다는 의미로, 맥북에어가 bios 방식의 부팅을 제대로 지원하지 않아 임시 처방으로 그렇게 한 것입니다.
멀티 코어 시대에 코어 4개짜리 컴퓨터에서 코어 하나만 쓰는 것은 아까운 일입니다. 리눅스를 EFI 모드로 부팅시키면 코어를 모두 쓸 수 있습니다.
다음 링크를 참고해 우분투를 EFI 모드로 변경해 줍니다.
https://help.ubuntu.com/community/UEFI#Converting_Ubuntu_into_EFI_mode

해당 링크의 내용을 간략히 설명하면, 다음 명령으로 boot-repair 라는 프로그램을 설치하고,
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && (boot-repair &)
이 프로그램을 실행해서 우분투를 EFI 모드로 변경하는 방식입니다.

이제 부팅하면 다음 그림과 같이 여러 부팅 옵션을 볼 수 있습니다.
EFI 모드로 우분투를 부팅합시다.

이제 네개의 코어를 모두 쓸 수 있습니다.
그리고, 부팅 시 에러메세지 같은게 보여서 조금 성가실 수 있는데, 그렇다면 다시 /etc/default/grub을 열고 이번엔 libata.force=noncq 라는 내용을 아까 nosmp 넣었듯이 넣어줍니다.
수정한 후에는 sudo update-grub을 잊지 않도록 합니다.

10. 3.11 커널 설치
아직 fn키가 제대로 인식되지 않고 트랙패드도 두손가락 스크롤링이 안되는등 문제가 있지만, 여기서 곧바로 3.11 커널로 넘어가 봅시다.

3.11 커널 소스를 받고 이미 깔려 있는 우분투 13.04의 config 파일을 이용해 config 파일을 만들고 빌드, 설치해 줍니다.
커널 컴파일 방법에 대해서는 다른 글(http://dry-kiss.blogspot.kr/2014/01/debian-deb.html)을 참고해 봅시다.

11. 키보드 / 트랙패드, 내장스피커 문제 패치 적용
3.11 커널을 올려도 키보드 / 트랙패드 문제는 여전하고, 내장스피커가 동작하지 않습니다. 헤드셋을 연결하거나 해야만 음악 등을 들을 수 있습니다. 이에 대한 패치를 적용해야 합니다.
다음 링크들을 다운받아 적당한 이름으로 저장합니다. 그냥 텍스트 파일입니다. 그냥 링크를 열고 내용을 긁어서 적당한 텍스트 파일로 저장해도 됩니다.
http://www.miek.nl/downloads/2013/macbookair-3.11.patch
https://bugzilla.kernel.org/attachment.cgi?id=107811

아까 컴파일한 커널 소스 경로로 이동해서 다음 명령으로 각각의 패치를 적용합니다.
$ patch -p1 < 다운받은/패치의/경로

이제 커널 소스에 패치가 적용되었으니, 다시 컴파일, 설치하고 재설치된 커널로 부팅합니다.
이제 키보드, 트랙패드, 내장 스피커 모두 정상 동작합니다.

사진이 좀 흔들렸지만, 2013년 11" 맥북에어 모델에 3.11 커널이 돌아감을 인증샷 한번 찍어봤습니다 :)


남은 문제들
하지만 아직 문제가 하나 더 남아있는데요. 처음 부팅했을 때에는 모니터 밝기 조정 버튼이 잘 동작하지만, 한번 sleep에 빠졌다가 돌아오면 모니터 밝기가 가장 밝거나 가장 어둡거나 두가지로만 동작합니다.
사실 이정도면 사소한 문제 수준이라 전 큰 불편 없이 쓰고 있습니다만, 혹시 맥북에어에 리눅스 설치를 생각중인 분들은 고민해 보시기 바랍니다.


참고 웹페이지


댓글 8개:

  1. 말씀하신 sound 이슈는 3.12 kernel에 fix가 들어가 있네요, 아직 rc1 단계긴 하지만..

    commit be8cf44526d8972c2dbf6e561162dad924a712a5
    Author: Takashi Iwai
    Date: Mon Sep 9 13:57:57 2013 +0200

    ALSA: hda - Add CS4208 codec support for MacBook 6,1 and 6,2

    답글삭제
    답글
    1. 그렇네요, 감사합니다! 관련 패치 적용해보고 정상 동작함을 확인, 본문도 업데이트 했습니다. 감사합니다! :)

      삭제
  2. 슬립 이후 모니터 화면 밝기 조절 안되는것은 아직 해결이 안되었나요?

    답글삭제
    답글
    1. 네, 이건 아직 해결이 안되고 있군요...ㅜㅜ

      삭제
  3. Webcam이 PCI방식이라서 드라이버가 아직 없다고 하는데 웹캠 동작여부도 궁금합니다.

    답글삭제
    답글
    1. 이것도 말씀해주신 이유로 인식을 못하는 것 같군요... 웹캠 사용 프로그램에서 웹캠을 찾질 못하네요... 웹캠을 쓸일이 없다보니 이제야 알았군요.

      삭제
  4. 리눅스쓰려고 맥북에어를 구입 고려중인데 저 두개 문제때문에 망설이고 있습니다 ㅠㅠ 이런 문제도 보고되었다는데 해결이 되었는지 궁금합니다.
    Unresolved issues:
    - There is no driver for the Web Camera yet.
    - rEFInd uses 30 seconds to start booting. Using the bless trick stops rEFInd from loading, and it has to be re-installed.

    두번째는 무슨 말인지 모르겠는데 부팅시 딜레이 문제같습니다만.
    출처: https://wiki.archlinux.org/index.php/MacBook#Early_2014_11.22_-_Version_6.2C1

    답글삭제
    답글
    1. 첫번째 문제는 앞서 댓글 달았듯 여전히 해결되지 않은 문제 같구요...
      두번째 문제는 무슨 의미인지 저도 잘 모르겠네요... 전 저러한 문제 겪은 적이 없고, 부팅 금방 잘 됩니다.

      삭제