Macbook AirにUbuntu 18.04を入れてみたときのメモ(OSインストール編)
MacBook Air (13-inch, Early 2014)にUbuntu 18.04を入れてみたときのメモです。試行錯誤しながら進めたメモを整理しながら書いているので、正しさについてはあまり保証できません。ご参考ということで。 メモリは4GB、SSDが128GBというさみしい環境なので、デュアルブートにはせずUbuntuオンリーにしました。VirtualBox+Vagrantで仮想マシンを動かしたりする程度は問題ないようです。
もっといいやり方あったらぜひ教えていただけるとうれしいです。
あらすじ
まずは普通にUbuntuをインストールしますが、EFIパーティションがFAT32でフォーマットされていてGRUBが正常にインストールできないので、HFS+でフォーマットし直してGRUBをインストールしなおします。Wi-Fiもそのままでは認識されませんが、ツールをインストールするために途中でネットにつなぐ必要があるので、強引に認識させます。 準備
rEFInd使って済むならそうしておけ
起動音を消したいなら今のうちに消しておく(Mac OSからでないと消せない)
SSDはまるごと消してしまうのでデータはバックアップしておけ
Mac OS Xのリカバリディスクを作成しておけ
なお私はOSを消してからこの記事を見つけたのでデータのバックアップ以外できてません。
インストールUSBメモリの作成
これはWindows上で行いました。
Ubuntuのインストール
失敗しますがとにかくインストールします。
USBメモリをMBAに差し、Optionを押しながら起動
EFI Bootを選択して「Install Ubuntu」
ライブセッションのデスクトップで「Ubuntuをインストール」を実行してもたぶん同じ
キーボードの選択では、「日本語」を選択
「日本語(Macintosh)」はカナ入力になってしまう
ここで選ばなくても「日本語(Mozc)」が入る
このへんで、ナショナル配置とラテン配置の切り替えを・・・と言われてなんとなくCaps Lockを選んだんだけれども、もしかすると後で出たCaps Lockで日本語入力になるっていう減少の元凶になったかもしれない
デフォルトのままにしておくか、いっそのこと何も割り当てないほうがいいかもしれない
「グラフィックスとWi-Fiハードウェアと・・・」はチェックする
でもインストール中は無線LANは認識されない模様
そのせいで後の手間が増えているような気がする
認識させる方法があるといいのだけれども
チェックし忘れてたという可能性もなくはない
USB有線LANアダプタなどで認識されればそのほうが楽かも
ディスクを削除してインストール
GRUBのインストールに失敗する
Ubuntu自体は入っているのですが、GRUBが入っていないため正常に起動しません。
Ubuntuの起動(手動)
USBメモリを差したままにして、USBメモリ側からGRUBを起動した後、手動でUbuntuを起動させます。
手順は上の「Ubuntu + Mac: Pure EFI Boot」に記載されていますが、こんな感じ。
メニューが出たところでcを押してgrubのシェルに入る
lsでhomeの場所を確認 → ls (hd2,gpt2)/home
lsで/boot/grubの場所を確認 → ls (hd2,gpt2)/boot/grub
rootを設定 → set root=(hd2,gpt2)
UUIDを表示 → ls -l (hd2,gpt2)
linux /boot/vmlinuz<Tabキー> .efi.signed root=UUID=<上のUUID>
initrd /boot/initrd<Tabキー>
boot
ディスクの識別子は異なる可能性があります。
「<TABキー>」は、TABキーを押して補完を効かせるという意味です。
Wi-Fiを認識させる
この状態ではまだWi-Fiが認識されていませんでした。ネットにつながらなきゃドライバも取れないしどうしようUSBにコピーしてインストールする?などと考えましたが実はWi-Fiを動作させるためのドライバはインストールUSBに含まれているので、手動でインストールします。まずはWi-Fiのネットワークインタフェースの機種を確認します。
code:wifi-nic.log
$ lspci -nn -d 14e4:
03:00.0 Network controller 0280: Broadcom Inc. and subsidiaries BSM4360 801.11ac Wireless Network Adapter 14e4:43e0 (rev 03) BSM4360というインタフェースでした。これを動作させるために必要なのは以下の4つのパッケージですが、依存関係があるので、さらに多くのパッケージをインストールする必要があります。
dkms: Dynamic Kernel Module Support Framework
bcmwl-kernel-source: Broadcom 802.11 Linux STA wireless driver source
b43-fwcutter: utility for extracting Broadcom 43xx firmware
fakeroot: tool for simulating superuser privileges
これらは例えば
/media/<ユーザ名>/UBUNTU1804/pool/
/main/d/dkms/dkms_2.3ubuntu9.2_all.deb
/restricted/b/bcmwl-kernel-source_6.30.223.271+bdcom-0ubuntu4_amd64.deb
といったディレクトリに保存されています。sudo dpkg -iしてみると、まず依存するパッケージをインストールしろと出てきますので、次々と辿ってインストールします。たくさんありますが、ちゃんとすべての依存先がそろっているのでいつかは終わります。すべてインストールし終わるとWi-Fiに接続できるようになります。
・・・が、ちょっとこれが正しいやり方だとは思えないので、もっと楽なやり方があるんだと思います。ディレクトリも何かの規約に従っている雰囲気だし、依存関係をまとめてインストールするコマンドとか。教えてください。
mactelツールをインストールする
EFIパーティションのフォーマットを書き換えるためのツールをppa:detly/mactel-utilsからインストールしますが、現時点ではUbuntu 16.04までしか対応してないようなのでファイルを書き換えて強引にインストールします。どうやら大丈夫な模様。
まずはppaを追加します。
code:add-ppa.log
$ sudo add-apt-repository ppa:detly/mactel-utils
Releaseファイルがなくて更新が無効、と怒られます。apt updateしてもmactel-bootが見つからないと言われます。
/etc/apt/sources.list.d/detly-ubuntu-mactel-utils-bionic.listというファイルに情報が保存されているようですので、これを書き換えて騙します。
code:/etc/apt/sources.list.d/detly-ubuntu-mactel-utils-bionic.list
この、bionicをxenialに書き換えたところ(ファイル名はそのまま)、インストールが成功しました。
code:install-mactel.log
$ sudo apt update
$ sudo apt install mactel-boot hfsprogs gdisk grub-efi-amd64
EFIパーティションをHFS+に変更する
「Ubuntu + Mac: Pure EFI Boot」にあるとおり進めることができました。
sudo mountで/boot/efiのデバイスを確認してsudo umount
sudo gdisk </boot/efiのデバイス>
pコマンドでEF00のパーティションを確認
dコマンドで上記パーティションを削除
nコマンドで上記パーティションにHFS+のファイルシステムを作成
First Sector、Last Sectorはデフォルトのまま
ファイルシステムにはAF00を指定
wで実行
sudo mkfs.hfsplus </boot/efiのデバイス> -v Ubuntuでパーティションをフォーマット
ブートパーティションの定義
ここも問題ありません。
/etc/fstabから/boot/efiの定義を削除
新しい/boot/efiの定義を追加
$ sudo bash -c 'echo $(blkid -o export -s UUID /dev/sda1) /boot/efi auto defaults 0 0 >> /etc/fstab'
マウント
$ sudo mount /boot/efi
GRUBのインストール
もう少しです。
Ubuntu 18.04用のディレクトリを作成
$ sudo mkdir -p "/boot/efi/EFI/$(lsb_release -ds)/"
GRUBのバグ回避
$ sudo bash -c 'echo "This file is required for booting" > "/boot/efi/EFI/$(lsb_release -ds)/mach_kernel"'
$ sudo bash -c 'echo "This file is required for booting" > /boot/efi/mach_kernel'
GRUBのインストール
$ sudo grub-install --target x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi --bootloader-id="$(lsb_release -ds)"
おまじない
$ sudo hfs-bless "/boot/efi/EFI/$(lsb_release -ds)/System/Library/CoreServices/boot.efi"
これで起動するはずなんですがうまくいかなくて、update-grubを実行したらうまくいきました。
が、メモが不完全で、ここでやったかどうかちょっと自信がありません。
code:update-grub.log
$ sudo update-grub
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Linux イメージを見つけました: /boot/vmlinuz-4.18.0-17-generic
Found initrd image: /boot/initrd.img-4.18.0-17-generic
Found Mac OS X on /dev/sda1
Mac OS Xを見つけたってのはなんですかねえ。
あと、ブートメニューにUbuntuのアイコンが出るようにします。やらなくても可。
$ sudo apt-get install mactel-boot-logo
$ sudo cp /usr/share/mactel-boot-logo/ubuntu.icns /boot/efi/.VolumeIcon.icns
そのあとefibootmgrで起動時の選択画面の表示を短くする設定もできます。
関連リンク