Mac
archLinux

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


[訳注] この文書は、Pankaj Kumar 氏による記事 Arch Linux Installation with OS X on Macbook Air (Dual Boot) の翻訳です。

Mac パーティションに損害を与えるかも知れない作業が含まれています。全て自己責任で行ってください。


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

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

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

この なぜ Linux (というか Ubuntu) はクソか って動画を暇つぶしにどうぞ。

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

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

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

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


起動用の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 番目のはず)。フリー領域を使って、4つのパーティションを作成する(もっと作れるけど、僕はルートと 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)の2倍にしておこう。


ネットワークの準備

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

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

wifi-menu


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


接続を確認するには:

ping google.com


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


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


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 を読んでみて。


再起動(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@eth0dhcpcd を自動起動させます。

[訳注] 私の場合、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なんていらないって人もいれば、軽量さを追求して awesomeenlightenment を選ぶ人もいる。でも今現在僕は digiKam のあるプロジェクト のために GSoC 向けの学生のメンターをやっている。そのためにここでは KDE を入れることにするよ。

最小で動かすなら 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 をインストールしよう。システム起動時に良い感じのGUIでどのOSを起動するか選ぶことができるようになる。


[訳注] Mac OS がアップデートされるたびに、rEFInd の設定が無効になってしまいます。

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



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

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

pacman -S <package name>

このへんに行くと気に入りそうなアプリケーションの一覧があるから見てみて。


[訳注] Arch Linux には pacman で入れられる公式リポジトリの他に、AUR というコミュニティベースの強力なリポジトリがあります。こちらからパッケージマージャーを選んで利用してみてください。(yaourtは開発が終了してしまいました。)


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