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

  • 12
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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がたちあがるようになる。