僕がArch LinuxをインストールするMacBookは、Appleのホームページにも載っていない古い機種で、機種IDが「MacBook 4,1」というものだ。ArchWikiにも機種別の情報は載っていない。
しかし、基本的にArchWikiのMacBookに書かれていることを参考にすれば大丈夫である。そこで解決しない問題は、ネットで探すことになる。
ArchWikiで推奨されているインストール方法は、「Mac OS Xとのデュアルブート」である。macOSを残しておく方がMacBookのファームウェアを書き換えたり、Macの設定を変えたりする時に便利である。したがって、ここではその方法を紹介したいと思う(実際は、Ubuntuを新規に入れていたので、Mac OS X Snow Leopardを再度インストールするところから始めることになったが)。
1.Arch Linuxをインストールするパーティションを作成する
この作業はMac OS Xで行う。ディスクユーティリティを立ち上げ、Macintosh HDを選択し、「+」ボタンを押して、新規にパーティションを作成する。僕の場合は、ハードディスクを2分割することにした。
名前やフォーマット形式はArch Linux側で作成し直すので何でもかまわない。
パーティションを作成し、デスクトップに表示されるのを確認する。
2.インストールCDで起動する
Arch LinuxをダウンロードからISOイメージをダウンロードして、適当なアプリでCDに焼く。CDをセットし、MacBookをオプションキーを押しながら起動すると「Windows」というCDのアイコンが現れる。それを選択してしばらく待つと以下のような画面が表示される。
「Boot Arch Linux」を選択してエンターキーを押すと、ブートが始まる。無事に起動を確認したら、次の作業に移る。
3.Arch Linux側でパーティションを作成する
そのままでは日本語キーボードの設定になっていないので、以下のコマンドを打つ。
# loadkeys jp106
ArchWikiのMacBookを参考にして、Mac OS Xで作成したパーティションを削除して、Arch Linux用に再度パーティションを作り直す。
(注)Mac OS Xのパーティションのルールとして、最後のパーティションの後に「128MB」の空き領域が必要である。詳しくはArchWikiを見てほしい。
なお、メモリが4GB以上ある時には、swapを作成しない方が速くなるとあったので、swapパーティションは作成しなかった。
# cgdisk /dev/sda
cgdiskの画面が表示されるので、「コントロールキー」+「矢印キー」で、Arch Linux用のパーティション番号を選択し、「Delete」と「New」を使い、パーティションを作成していく。
以下の例は、「Mac OS Xとのデュアルブート用のパーティション:100MB」「Arch Linuxのbootパーティション:100MB」「Arch Linuxのrootパーティション:残り全部」を作成したものである。
4.Arch Linuxをインストールする
インストール自体は他のPCと同じである。
ArchWikiのインストールガイドに従ってインストールする。
ただし、MacBook 4,1は無線LANのドライバが有効にならないので、有線で繋いでインストールしなければならない。
インストールガイドにある「起動モードの確認」で、UEFIモードではないとなるが、気にせず先に進む。
インストールが終了したら、ブートローダーの設定に移る。
ブートローダーの設定が終わるまで、chrootしたままでいるようにする。
5.ブートローダーの設定
以下のやり方は、MacBook AirにOSXとデュアルブートでArch Linuxを入れるを参考にした。
まず、GRUBをインストールする。
# pacman -S grub-efi-x86_64
/etc/default/grubを以下のように修正する。エディタにはviやnanoが使える。
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にコピーしておく。僕はたまたまそばにあった「ATOK for Mac」のUSBを使ったが、問題なくコピーできた。
# dmesg | tail # USBメモリのデバイス名を調べる。仮にsdd1とする
# mkdir /mnt/usbdisk && mount /dev/sdd1 /mnt/usbdisk
# cp boot.efi /mnt/usbdisk/
# umount /mnt/usbdisk
MacBookを再起動して、Mac OS X側の設定に移る。
# exit
# umount -R /mnt
# reboot
6.Mac OS Xでのブートローダーの設定
Mac OS Xで起動したら、デスクトップに「Boot Arch from the Apple boot loader」というボリュームがマウントされているはずである。ターミナルを起動して、以下のようにブート用のディレクトリと「SystemVersion.plist」を作成する。
# cd "/Volumes/Boot Arch from the Apple boot loader"
# mkdir System mach_kernel
# cd System
# mkdir Library
# cd Library
# mkdir CoreServices
# cd CoreServices
# vi 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にUSBのboot.efiをコピーする。これはFinderでやった方が簡単である。
その後、blessして「Boot Arch from the Apple boot loader」バーティションを起動可能にする。
# sudo bless --device /dev/disk0sX --setBoot
(注)Xに入る数字はディスクユーティリティで確認する。
これで再起動したら、GRUBの画面が表示されて、Arch Linuxが立ち上がるはずである。
7.トラブルシューティング
僕の場合、機種が古いせいか、以下のようなトラブルに遭遇したので、参考に解決方法を加えておく。
(a)起動してもArch Linuxをインストールしたデバイスが見つからず、「new_root」でしかログインできない
これにはかなり苦戦したが、ネットを探し回って、次のようなサイトを見つけた。
“Unable to find root device” on a fresh ArchLinux install
ここにあるように、/etc/mkinitcpio.confのHOOKSの順番を変えると解決した。blockをautodetectの前に記述するのである。以下の通り。
【変更前】
HOOKS="base udev autodetect block modconf filesystems keyboard fsck"
【変更後】
HOOKS="base udev block autodetect modconf filesystems keyboard fsck"
そして、以下のコマンドを打って、ramdiskを作り直す。
# mkinitcpio -p linux
これでrootでログインできるようになる。
(b)ルートディレクトリのマウントに失敗する
起動中のプロンプトを見ると、「ルートのマウントに失敗した」というエラーが表示されるのだが、システム自体は立ち上がり、ルートでのログインもできる。気持ちの悪いエラーだが、いろいろ調べてみると、fstabの記述に問題があることがわかった。
先に、GRUBを設定した時に「rootflags=data=writeback」と設定したが、それがfstabに反映されていなかった。
/etc/fstabを開き、「data=writeback」に書き換えたらエラーが表示されなくなり、fsckもちゃんと働くようになった。ext4のジャーナリングを有効にするために、必要な設定なのかも知れない。
Recent comments