MacBook Air Mid 2013 を入手したのでOSXを起動せずにGentoo入れてみた

ことはじめ

おやおや,こんなところに Mid 2013 な感じの MacBook Air がありますね.ふうむ,電源を入れようと思ったが,そのまま起動しても面白くないな.OSXのセットアップしてる時間があったらGentooが入るんじゃないか?そうだ,ここはGentooInstallBattleっぽく,OSXを起動せずにGentooを入れてみようじゃないか!いやぁ,我ながら良い考えだなあ.

ぶーと

皆さんも2-3本はGentooのインストール用USBスティックを持ち歩いていると思います.色々役に立つし,出張先や飮み屋でもGentooInstallBattleができて非常に便利ですからね.もちろん,一応手元にはGentooのLiveCDがありますから,まずはインストールメディアの選択から始めるわけです.いかにもGentooらしいですね.

さて,Optionキーを押しながら電源を入れるとbootするメディアを選択できるので,USBなり外付けCDドライブなりから起動します.起動してしまえばすんなり動いてくれる…と思っていた時期が僕にもありました.あいにく手元にUSBなEthernetがありませんし,無線LANはもちろん動かないわけですので,ちょっとだけ困るわけですね.でも時代はクラウドスマホの時代,テザリングができるじゃありませんか.ネットワーク接続を手に入れるために,おもむろにスマートフォンMBAを接続します.USBテザリングを有効にしたら,普通にNICが見えますので,dhcpcdを叩いてあげると繋がります.やったね.

ぱーてぃしょん

ネットワーク接続を手に入れたら,次はパーティションを切りたくなりますね.全部消しちゃいたくなりますよね.OSXの領域とかリカバリ領域とか,使わないのに残しておいてももったいないですからね.しかし,このまま全部消してしまうと,起動時の「じゃーんwww」という音が消せなくなってしまうので,とりあえず外付けHDDとかをつないでddしておきます.この際,パーティションごとにddしたほうが後々使い勝手が良いです.MBRも忘れずにddしましょう.

dd if=/dev/sda of=/path/to/backup/MBR.img bs=512 count=1
dd if=/dev/sda1 of=/path/to/backup/sda1.img bs=1M
dd if=/dev/sda2 of=/path/to/backup/sda2.img bs=1M
dd if=/dev/sda3 of=/path/to/backup/sda3.img bs=1M

になっている(と思う)ので,sda2に関してはサイズも大きいし別にいいかなーと思います.MBRとsda1とsda3はあとで使うので必ずddしておきましょう.

パーティションはGPTで作ります.僕はこんな感じで切りました.

% sudo parted /dev/sda
GNU Parted 3.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) print
Model: ATA APPLE SSD TS0128 (scsi)
Disk /dev/sda: 236978176s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 2048s 585727s 583680s fat32 non-fs bios_grub
2 585728s 1171455s 585728s ext4 ext4
3 1171456s 17172479s 16001024s linux-swap(v1) swap
4 17172480s 87171071s 69998592s ext4 ext4
5 87171072s 236976127s 149805056s ext4 ext4

インストールしてから気付いたのでもはや後戻りはしたくないですが,EFIだとISOイメージからブートできたりするので,/bootは大きめに切っておいたほうが良かったですね.あと,現状ではサスペンドしたあとにディスプレイ輝度が0%か100%の2択になってしまうので,必ずswap領域を作っておきましょう./etc/fstabはこんな感じです.
/dev/sda1   /boot/efi   vfat   noauto,errors=remount-ro                   0 2
/dev/sda2 /boot ext4 noauto,noatime,discard,errors=remount-ro 1 2
/dev/sda3 none swap sw 0 0
/dev/sda4 / ext4 noatime,discard,errors=remount-ro 0 1
/dev/sda5 /home ext4 defaults,discard,errors=remount-ro 0 0

いんすとーる

システムのインストールは何も考えなくていいです.普通にインストールして下さい.非常に簡単ですね.でもおそらく再起動できないので,UbuntuのライブCDとかからEFIでブートします.その後,

modprobe efivars
コマンドを叩いてブート用ディスクを作ります(この辺はググったら出てきます).EFIブートできたら,Gentooから同様の作業をするといい感じになると思います.また,grub2-installするときに多分失敗するので,自分でEFIの設定を書き換える必要があります.efibootmgrを使ってこんな感じにブートローダ周りを設定してあげる必要があります.
# efibootmgr -v
BootCurrent: 0000
Timeout: 5 seconds
BootOrder: 0000
Boot0000* gentoo HD(1,800,8e800,9b3bd77d-799f-46f7-a569-95a251a4f759)File(\EFI\gentoo\grubx64.efi)
Boot0080* ACPI(a0341d0,0)PCI(1c,5)PCI(0,0)03120a00000000000000HD(2,64028,e066090,553ed906-2f93-4629-a5e6-c90ddbcec833)File(\System\Library\CoreServices\boot.efi)
BootFFFF* ACPI(a0341d0,0)PCI(1c,5)PCI(0,0)03120a00000000000000HD(2,64028,e066090,553ed906-2f93-4629-a5e6-c90ddbcec833)File(\System\Library\CoreServices\boot.efi)

きどうおんをけす

起動するときの「じゃーんwww」はOSXの音量とリンクしているらしいですが,もはやそんなものはありません.どうやら,リカバリ領域から起動したりリカバリUSBから起動すると良いらしいです.でも,最近のMacにはリカバリUSBなどというレガシーなものは同梱されていないようです.僕はレガシーな人間なので,仕方なくUSBスティックを作ります.

まずは,USBにMBR.imgをddします.次に,partedでこんな感じにパーティションを割ります.イメージとしては,USBにMBRをddした段階でパーティションテーブルができているので,テーブルの2と3を消します.次に,3番目のテーブルがリカバリ領域と同じになるように2番目のテーブルを切ります.あとは,1番目と3番目のパーティションにsda1とsda3をそれぞれddします.簡単ですね.

% sudo parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) print
Model: silicon -power (scsi)
Disk /dev/sdb: 15654912s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 40s 409639s 409600s fat32 EFI System Partition boot
2 409640s 1000000s 590361s Customer
3 1000001s 2269536s 1269536s hfs+ Recovery HD

USBから起動したら,ターミナルを立ち上げてnvramを使ってブートサウンドを殺します.02で死ななかったら00や01や80なんかもあるらしいです.何のマジックナンバーかはよく知りません.
# nvram SystemAudioVolume=%02
# shutdown -h now
とか叩くといい感じになりました.

おわりに

あとで追記するか別記事で各項の詳細が書ければと思います