[翻訳] MacBook Air に Arch Linux をインストールする（デュアルブート）

> [訳注] この文書は、Pankaj Kumar 氏による記事 [Arch Linux Installation with OS X on Macbook Air (Dual Boot)](http://panks.me/posts/2013/06/arch-linux-installation-with-os-x-on-macbook-air-dual-boot/) の翻訳です。
> Mac パーティションに損害を与えるかも知れない作業が含まれています。全て自己責任で行ってください。


2日かかって、やっと [Arch Linux](https://www.archlinux.org/) と OS X Mountain Lion を両方起動できるようになった。幸せのひととき。君が Windows ユーザーなら、この記事の残りの文章は何の役にも立たない（し退屈だ）と思うから、別の記事でも読むことをおすすめするよ。

...ふーっ。それじゃあ Windows ファンが居なくなったところでレベルを上げて行こうか。君は、仮想環境とかでそこそこ Linux を使ってるユーザー、もしくは [[ご自由に]untu](http://www.ubuntu.com/about/about-ubuntu/derivatives) のユーザーとかかな？ もしそうなら「こいつはなぜこんな記事を書いてるんだ？」って今ごろ不思議に思ってるに違いない。なぜなら90年代とちがって、最近の Linux インストールはすごく簡単になったからからね。

ちょっとその話をすると、僕は数年前から Ubuntu （とその似たやつ）のユーザーだった。そのどれもが、（主に Windows からの）新参ユーザーを惹き付けるためにどんどん・どんどん余計なモノを付け足した。その結果ひどく醜い OS が出来上がってしまったんだ。例えば unity launcher （みたいな何かカッコイイ名前のあれ）を開くのに数秒もかかってしまうような、ね。

この [なぜ Linux （というか Ubuntu） はクソか](http://www.youtube.com/watch?v=Sh-cnaJoGCw) って動画を暇つぶしにどうぞ。

*untu につまづいたもう一つの理由は、僕の大学に Ubuntu リポジトリのローカルサーバがあって、何でもあっと言う間にインストールできてしまったこと。なんとなく物足りなくってイライラ（*untus ユーザーなら「満ち足りて行った」って読んでね）して行くにつれ、ついにあの、最小パッケージかつ望みさえすれば何でも追加できる、剥き出しの GNU/Linux OS、 Arch Linux への移行を決めたんだ。真に DIY な OS。Arch Linux、イェー！

~~でも、大変なこともあった。ひとたび移行を決めたなら、パッケージリポジトリにインターネットでアクセスしなくちゃいけなかった（僕の大学では泣けるスピード）~~（こないだ友だちがついに[ミラー](ftp://ftp.iitm.ac.in/archlinux)を置いた！）。それでグズグズしてたんだけど、Microsoft India へのインターンのときに（今もデスクでこれを書いてるんだけど）ぶっとい回線が手に入って、やっと移行するこができたんだ。

*untu と違って、MacBook Air への Arch Linux インストール（今回はデュアルブート。ディスク全体へのインストールの話じゃない）はただ “次へ” をクリック、って訳にはいかない。全部自分で設定して行かなくちゃいけない。ハードディスクのパーティショニング、ネットワーク設定、ブートローダー。全部やるのに丸２日かかったよ。それで[未来の人](http://xkcd.com/979/)のために、ここに手順を書き留めておこうと思った。

始める前に言っておきたいんだけど、[Arch Linux の wiki](https://wiki.archlinux.org/index.php/Beginners'_Guide) はその界隈では最高のドキュメントを提供していることを指摘しておく。Gentoo のがベスト、って言う人がいるかも知れないけど僕は同意できないね。だからインストールするに当たって、ぜひ目を通して、自分の物にしてくれ。あれはもうほんとバイブルだから。

## 起動用のUSBを用意する

* [最新の Arch Linux ISO](https://www.archlinux.org/download/) をダウンロードする
* OS X で、`dd` コマンドで起動可能USBを作る

```
sudo dd if=<path to .iso file> of=/dev/<yourdevice> bs=1m
```

（デバイスIDは `diskutil` でわかる。OS X ターミナルで ```diskutil list``` と打ち込んで一覧を表示。）

> [訳注] `dd: /dev/<yourdevice>: Resource busy` などと表示されうまく行かない場合は、`diskutil umount /Volumes/<usb_name>` でアンマウントしてからもう一度 `dd` コマンドを試してみてください。参考：http://www.lifewithunix.jp/notes/2013/06/13/how-to-use-dd-command-on-snow-leopard/

USB を挿し、”alt/option” キーを押したまま起動するのを待つ。USB からのブートを選択。

> [訳注] 日本語キーボードの方は `loadkeys jp106` と実行してください。

## パーティショニング

`cgdisk` を使う。システムが起動したら `cgdisk` に入る。

```
cgdisk /dev/sda
```

既存のパーティションが一覧されると思う。Mac のパーティションをダメにしないこと（普通は 3 番目のはず）。フリー領域を使って、４つのパーティションを作成する（もっと作れるけど、僕はルートと home を同じパーティションにして、あと swap 領域を作った）。

矢印キーで free space を選択して、新しいパーティションを作って行く。Mac パーティションのあとの、最低でも128MB領域をそのままにしておく。

以下の4つを作る。

```
Size            Partition Type          Partition Name

128 MB          Apple HFS+              Boot Loader
256 MB          Linux filesystem        Boot
X MB            Linux Swap              Swap space
(残り全部）        Linux filesystem        Root
```

スワップ領域は物理メモリ（RAM）の２倍にしておこう。

## ネットワークの準備

これからたくさんのパッケージを落とすから、ネットワークに繋ぐ必要がある。アダプタ経由で LAN ケーブルを接続する。あるいはスマートフォン経由で USB テザリングしてもいい。

次のコマンドで、WiFi ネットワークに接続する。

```
wifi-menu
```

> [訳注] 手元では WiFi 接続できませんでした。イーサネット接続の方が問題が起きにくいと思います。

接続を確認するには：

```
ping google.com
```

## ディスクフォーマットとマウントパーティション

> [訳注] `/dev/sda<番号>` は連番で振られ、実際とは異なる番号になる可能性があります。`cgdisk /dev/sda` の `Part. #` で番号をもう一度確認しておくことをおすすめします。

```
mkfs.ext4 /dev/sda5
mkswap /dev/sda6
mkfs.ext4 /dev/sda7
mount /dev/sda7 /mnt
mkdir /mnt/boot && mount /dev/sda5 /mnt/boot
swapon /dev/sda6
```

## インストール

```
pacstrap /mnt base base-devel
genfstab -p /mnt >> /mnt/etc/fstab
```

**重要**、SSD ハードディスクの人は fstab ファイルのパラメータを変える必要がある。fstab ファイルを開いて、

```
nano /mnt/etc/fstab
```

下のように内容を変更する。

```
/dev/sda5      /boot  ext2  defaults,relatime,stripe=4    0 2
/dev/sda7      /      ext4  defaults,noatime,discard,data=writeback   0 1
```

## システムの設定

```
arch-chroot /mnt /bin/bash 
echo archer > /etc/hostname  # hostname を自由に決めてください
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime 
hwclock --systohc --utc 
useradd -m -g users -G wheel -s /bin/bash myusername && passwd myusername  # ユーザー名・パスワードを自由に設定してください
sudo pacman -S sudo
```

sudo 権限を与える。

```
nano /etc/sudoers  # wheel の行のコメントアウトを外す
```

ロケールを設定する。次のコマンドで設定ファイルを開いて、

```
sudo nano /etc/locale.gen
```

..必要なロケールのコメントアウトを外す。僕の場合はこれ：

```
en_US.UTF-8 UTF-8
en_CA.UTF-8 UTF-8
```

ロケールを生成する。

```
locale-gen
echo LANG=en_US.UTF8 > /etc/locale.conf
export LANG=en_US.UTF-8
```

`/etc/mkinitcpio.conf ` ファイルの `HOOKS` セクションの `autodetect` のあとに `keyboard` を挿入する。その後次のコマンドを実行。

```
mkinitcpio -p linux
```

> [訳注] インストール後にも日本語キーボードを使うためには `echo ‘KEYMAP=jp106’ >> /etc/vconsole.conf` と設定しておきます。

## いよいよブートローダー

いちばんハマりやすいところ。一気にやってしまおう。

やりたいのは、OS X ネイティブの EFI ブートローダーで Arch Linux を起動すること。grub-efi-x86_64 をインストールしよう。

```
pacman -S grub-efi-x86_64
```

`/etc/default/grub` を以下のように編集する。

```
GRUB_CMDLINE_LINUX_DEFAULT="quiet rootflags=data=writeback"
```

そしたら GRUB で `boot.efi` を生成する。

```
grub-mkconfig -o /boot/grub/grub.cfg
grub-mkstandalone -o boot.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi --compress=xz boot/grub/grub.cfg
```

さて、今いるディレクトリに `boot.efi` が作られたはずだ。然るべき場所にコピーして使おう。

でもどこに？

新しい USB をマウントして、そこにコピーしよう。

> [訳注] USBを差し込み、`dmesg | tail` でデバイス名を調べられます。私の場合SDカードでデバイス名は `/dev/sdc1` でした。

```
mkdir /mnt/usbdisk && mount /dev/sdb /mnt/usbdisk 
cp boot.efi /mnt/usbdisk/
```

もしくは他のマシンに SCP してもいい（SSH するには `openssh` パッケージが必要）。

あと、もし有線接続せず WiFi だけでやって行きたいなら、再起動する前に次のパッケージもインストールする必要がある。

```
pacman install iw wireless_tools wpa_supplicant dialog
```

あと `networkmanager` もインストールして有効化しておこう。詳しくは [Arch wiki](https://wiki.archlinux.org/index.php/NetworkManager) を読んでみて。

## 再起動（Mac の世界に戻る）

* `exit` コマンドで chroot を抜ける
* `reboot` でシステムを再起動
* `ディスクユーティリティー` アプリを開く
* boot 用に作ったパーティション `/dev/sda4` を、 `Mac OS 拡張 (ジャーナリング）` でフォーマットする
* 下記の階層のディレクトリを `/dev/sda4` に作っていく

```
|___mach_kernel
|___System
       |
       |___Library
              |
              |___CoreServices
                      |
                      |___SystemVersion.plist
                      |___boot.efi
```

上のことをやるコマンドがこちら。

```
cd /Volumes/disk0s4
mkdir System mach_kernel
cd System
mkdir Library
cd Library
mkdir CoreServices
cd CoreServices
touch SystemVersion.plist
```

`CoreServices` に先ほど生成した `boot.efi` をコピーする。加えて `SystemVersion.plist` を下の内容を書き込む。

```
<xml version="1.0" encoding="utf-8"?>
<plist version="1.0">
<dict>
    <key>ProductBuildVersion</key>
    <string></string>
    <key>ProductName</key>
    <string>Linux</string>
    <key>ProductVersion</key>
    <string>Arch Linux</string>
</dict>
</plist>
```

そうしたら `bless` コマンドでパーティションを起動可能にする。

```
sudo bless --device /dev/disk0s4 --setBoot
```

これで準備完了、`alt/option` キーを押しっぱなしで再起動し、Arch Linux を起動するために `disk0s4` を選べばOK。

## インストール後にやること

> [訳注] Network の節を先にします。

### Network

* `iwconfig ` でイーサネットデバイス名を確認し `systemctl start dhcpcd@eth0` を実行する （デバイス名を自分のものに置き換えて）
* wifi-menu で WiFiネットワークにつなげます

> [訳注] `systemctl enable dhcpcd@eth0` で `dhcpcd` を自動起動させます。
> [訳注] 私の場合、WiFi 接続には更に設定が必要でした。以前書いた記事が参考になるかも知れません。 http://pig.hatenadiary.com/entry/2014/02/09/223748

### Xorg

Xorg server をインストール

```
pacman -S xorg xf86-input-synaptics acpid
systemctl enable acpid
```

### Sound

* `pacman -S alsa-utils` で ALSA をインストールする
* `amixer sset Master unmute` でマスター音源の音量をあげる

### Screen Backlight

Works OTB

### Keyboard Backlight

`/sys/devices/platform/applesmc.768/leds/smc::kbd_backlight/brightness` に出力すると制御できる。

```
echo 40 > /sys/devices/platform/applesmc.768/leds/smc\:\:kbd_backlight/brightness
```

### GUI

本当にたくさんの選択肢がある。そもそもGUIなんていらないって人もいれば、軽量さを追求して [awesome](https://wiki.archlinux.org/index.php/Awesome) や [enlightenment](https://wiki.archlinux.org/index.php/Enlightenment) を選ぶ人もいる。でも今現在僕は [digiKam](http://www.digikam.org/) のあるプロジェクト のために [GSoC](http://www.google-melange.com/) 向けの学生のメンターをやっている。そのためにここでは [KDE](http://www.kde.org/) を入れることにするよ。

最小で動かすなら `kdebase`。 KDE の基本機能を全て入れるなら `kde` をインストールする。

```
pacman -S kdebase
```

KDE を立ち上げるには：

* xinitrc を使う
  * [訳注] `xorg-xinit` をインストール
  * `exec startkde` を ~/.xinitrc に追記する
  * ログイン後 startx コマンドをうち KDE GUI を起動
* KDM を使う
  * kdm をインストール （[訳注] パッケージ `archlinux-themes-kdm`）
  * `systemctl start kdm.service` で有効化する。次回の起動時にGUIでパスワードを聞かれるようになる。

### rEFInd

もし今までやってた「起動時に alt/option キーを押し続けて、起動 OS を選択して」って作業にイラッとしてたら、[rEFInd](http://www.rodsbooks.com/refind/) をインストールしよう。システム起動時に良い感じのGUIでどのOSを起動するか選ぶことができるようになる。

> [訳注] Mac OS がアップデートされるたびに、rEFInd の設定が無効になってしまいます。
> [訳注] 起動時にデフォルトでArchLinuxを選択するには、alt/option キーを押しながら起動しブートパーティションを選択する画面を表示して、Ctrlを押しながらディスクアイコンの下に表示される矢印をクリックします。参考：http://apple.stackexchange.com/a/73742/192868


## アプリケーションのインストールとか

パッケージのインストールは `pacman` で。

```
pacman -S <package name>
```

[このへん](https://wiki.archlinux.org/index.php/List_of_Applications)に行くと気に入りそうなアプリケーションの一覧があるから見てみて。

> [訳注] Arch Linux には pacman で入れられる公式リポジトリの他に、AUR というコミュニティベースの強力なリポジトリがあります。[こちらからパッケージマージャーを選んで利用してみてください](https://wiki.archlinux.jp/index.php/AUR_%E3%83%98%E3%83%AB%E3%83%91%E3%83%BC)。(yaourtは[開発が終了](https://github.com/archlinuxfr/yaourt/issues/382)してしまいました。)

えー、まあそんなところです。