Edited at

MacBook AirにOSXとデュアルブートでArch Linuxを入れる

More than 3 years have passed since last update.

MacBook - ArchWikiArch Linux Installation with OS X on Macbook Air (Dual Boot)を参考にしている。

自作PCにArch Linuxをインストールして環境構築すると重複する部分が多い。


Macでの準備


OSXのクリーンインストール

OSXとArchを共存させる場合はOSXをクリーンインストールしておくのが無難らしい。

OSXのインストールディスクを作成してOptを押しながら起動し、ディスクユーティリティでディスク全体をフォーマットした後OSXをインストールする。

その後、AppStoreでソフトウェア・アップデートをやって再起動する。

ついでに、システム環境設定 > サウンド から内蔵スピーカーの音量を0にしておくと起動音を無効にできる。


EFI bootable USBメモリを作る

https://www.archlinux.org/download/ からisoを落としておく。

hdiutil convert -format UDRW -o arch archlinux-2016.04.01-dual.iso

diskutil list # 焼きたいUSBメモリのパスを確認 (/dev/disk2 だったとする)
df # /dev/disk2 の Mounted on を確認 (/Volumes/Arch だったとする)
diskutil umount /Volumes/Arch
sudo dd if=arch.dmg of=/dev/disk2 bs=1m


パーティショニング


ディスクユーリティでOSX用のパーティションを小さくする

OSX用のパーティションを適当に小さくしておく。余った分は次のステップで削除する。


インストールメディア(USBメモリ)からパーティションを切る

$ cgdisk /dev/sda

でパーティションを切る。Mac用の3つのパーティションの後には128Mの空きを作ることに注意し、大体以下のような構成にすれば良い。

partition  mountpoint  size       type  label

/dev/sda1 /boot/efi 200MiB vfat EFI
/dev/sda2 - ? hfs+ Mac OS X
/dev/sda3 - ? hfs+ Recovery
/dev/sda4 - 100MiB hfs+ Boot Arch from the Apple boot loader
/dev/sda5 /boot 100MiB ext4 boot
/dev/sda6 / ? ext4 root


フォーマット

/dev/sda4 は AppleのブートローダーからArchを起動するためのもの。便宜上、OSXの方を起動してディスクユーティリティで「Mac OS 拡張(ジャーナリング)」でフォーマットする。これはHFS+のこと。

インストールメディアに戻ってきて以下を実行する。

$ mkfs.ext4 /dev/sda5

$ mkfs.ext4 /dev/sda6


インストール


インターネットに接続する

$ wifi-menu

$ ping google.com


パーティションのマウント

$ mount /dev/sda6 /mnt

$ mkdir /mnt/boot
$ mount /dev/sda5 /mnt/boot


パッケージのインストール

vim /etc/pacman.d/mirrorlist # 適当にミラーを選ぶ

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


SSDを使っている場合

fstabのパラメータを変える必要がある。vim /mnt/etc/fstabして、以下のように内容を変更する。

/dev/sda5      /boot  ext4  defaults,relatime,stripe=4    0 2

/dev/sda6 / ext4 defaults,noatime,discard,data=writeback 0 1


システムの設定

arch-chroot /mnt /bin/bash

echo archlinux > /etc/hostname # 適当に決める

ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
hwclock --systohc --utc

sudo vi /etc/locale.gen # 必要なロケールのコメントアウトを外す
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8

mkinitcpio -p linux
passwd # rootパスワードの設定


ブートローダー


GRUBのインストール

pacman -S grub-efi-x86_64

/etc/default/grubを以下のように修正する。

GRUB_CMDLINE_LINUX_DEFAULT="quiet rootflags=data=writeback"

その後、以下のようにしてカレントディレクトリに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メモリとかにいれておく。

$ dmesg | tail # USBメモリのデバイス名を調べる。仮にsdd1とする

$ mkdir /mnt/usbdisk && mount /dev/sdd1 /mnt/usbdisk
$ cp boot.efi /mnt/usbdisk/
$ umount /mnt/usbdisk

今後Wi-Fiが使えるようにするため、以下のものをいれておく。

$ pacman -S iw wireless_tools wpa_supplicant dialog networkmanager


再起動してMacで設定をする

$ exit

$ reboot

HFS+フォーマットはすんでいることとして、以下の作業をMacで行なう。

cd "/Volumes/Boot Arch from the Apple boot loader"

mkdir System mach_kernel
cd System
mkdir Library
cd Library
mkdir CoreServices
cd CoreServices
vim SystemVersion.plist

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>

あと、CoreServicesに先ほどのboot.efiをコピーする。

その後以下のようにblessでパーティションを起動可能にする。

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

ただしEl Capitanだと失敗するので、OS X 10.11 El Capitanにアップグレードするとblessに失敗するに書いてあるとおりcsrutil disableでSIPを切ってからblessする。

すると、Mac起動時にArch Linuxがたちあがるようになる。