古いintel MacBookにArchLinuxを入れて復活させる
事の始まり
MacBookAir(2017,12inch)をサイズとファンレスという点が気に入って使っていたのですが、アップデートとともに重くなり、ここ一年ぐらい使っていませんでした。なので、Linuxのみで運用し復活しようと思います。
スペックは下記
- MacBookAir(2017,12inch)
- CPU : i7-7y75 1.4GHz
- memory : 16GB
- SSD : 512GB
CTOでスペック最大にしたやつですね。
macOS + Windows + ArchLinuxでトリプルブートにしていましたが、ついにLinux一本になります。
Ubuntuであればインストールした瞬間に何不自由なく使えるでしょう。
しかし、今回はArchlinuxをインストールしrEFIndでブートします。
Arch Linuxにもインストーラが付属する時代ですが、使わずに進めます。
構成
今回のパーティションの構造は下記になります。
Device Start End Sectors Size Type
/dev/nvme0n1p1 256 275455 275200 1G EFI System
/dev/nvme0n1p2 275456 122137855 121862400 464.9G Linux filesystem
/dev/nvme0n1p1をboot、ほかは/dev/nvme0n1p2の簡単な二個だけのパーティションです。
今回swapパーティションは作りません。サスペンドできないので作っても意味がないからですね。
準備
パーティション分割について
普通はcgdiskなどで行うのでしょうが、私はこれでデータをふっとばした記憶があるのでいつもUbuntuからGPartedで編集します。なので今回は割愛。(GPartedでやってもふっとばした事があるので本当にこういうの向いてないと思います。)
OSの入手
下記サイトから入手しましょう。個人的には日本のサーバが良いと思います。
入手したら好きな方法でブートメディアを作ります。winがある方はrufusがいいと思います。USB Boot
作成したブートメディアをPCに繋いで電源を入れましょう。
optionを押しながら起動すると選択画面が出るので「EFI Boot」を選びましょう。
インストール前の準備
EFIか確認
多分EFIだと思います。下記コマンドでいろいろ出てきたらEFIです。
# ls /sys/firmware/efi/efivars
キーボードの設定
日本語キーボードの場合は下記。
# loadkeys jp106
インターネットへ接続
iwdが入っているのでiwctlを使って設定します。大文字部分は適宜変えてください
$ iwctl
[iwd]# station DEVICE connect SSID
DEVICEは下記で調べます。たいてい[wlan**]か[wlp*s*]になっていると思います。
$ iwctl
[iwd]# device list
インターネットに繋がっているかは下記コマンドで確認
# ping archlinux.jp
マウント
作成したパーティションをマウントします。
mount /dev/nvme0n1p2 /mnt
mount --mkdir /dev/nvme0n1p1 /mnt/boot
ダウンロードするサイトを選択
公式にはミラーの選択となっていますが、要はインストールに必要なものをダウンロードするサイトを選択します。
サイトは「/etc/pacman.d/mirrorlist」に記述されていて上から順に優先順位が高いです。なのでviなどで編集してダンロードするサイトを一番上にします。
いつからか、ミラーのサイトは速度順に20個のサイトを列挙するようになったようです。が、海外サイトからダウンロードした結果うまくいかなかったこともあるので、日本・信頼できる国からダウンロードすることをおすすめします。(日本サーバだからと言って万事うまく行くわけでなく、失敗したりしますが・・・)
インストール
下記コマンドで終了。
# pacstrap -K /mnt base linux linux-firmware
システム設定
fstab
ちゃんと起動できるようにfstabを生成します。
# genfstab -U /mnt >> /mnt/etc/fstab
chrootで設定
インストールしたシステムにchrootで入ります。
# arch-chroot /mnt
タイムゾーンとローカリゼーション
・タイムゾーンの設定
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc
・ローカリゼーション
/etc/locale.genを編集して使用するロケールを生成します。
# locale-gen
ユーザの追加
まずルートのパスワードを設定しましょう。
# passwd
ユーザを追加します。
# useradd -m -G wheel -s /bin/bash USERNAME
# passwd USERNAME
私は途中でzshを入れたので/bin/zshにしたりしています。
ブートローダ(rEFInd)
なんでもいいのですが、有名どころではGRUB、systemd-bootであれば追加でインストールするものもないのでそこら辺を選んでおけばいいのですが、macにはrEFIndという謎の先入観があるのでこれにします。
pacman -S refind
refind-install
残念なことに自動で見つけてくれないので手動でエントリを設定します。
$ blkid #(出てきたnvme0n1p2のPARTUUIDをメモする)
# /boot/EFI/refind/refind.conf下の方に下記のような部分があるので編集
# loaderやinitrdのパス、PARTUUIDの値を編集。intel-ucodeをインストールしていればinitrd=intel-ucode.imgも追記
menuentry "Arch Linux" {
icon /EFI/refind/icons/os_arch.png
volume "Arch Linux"
loader vmlinuz-linux
initrd initramfs-linux.img
options "root=PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw add_efi_memmap initrd=intel-ucode.img"
submenuentry "Boot using fallback initramfs" {
initrd initramfs-linux-fallback.img
}
submenuentry "Boot to terminal" {
add_options "systemd.unit=multi-user.target"
}
}
コマンドでかければいいんでしょうが私はそんな技術ないので「blkid」の出力を一旦保存してvimなどでコピペしてます。
これで再起動すればArchLinuxが起動します。
お疲れ様でした。
おまけ
インターネット接続するには
systemd-networkdでもいいですが、今回はNetworkManagerをインストールします。
$ sudo pacman -S netwokmanager
$ sudo systemctl start NetworkManager.service
#自動起動の設定
$ sudo systemctl enable NetworkManager.service
しかし、nwcliで設定しようとしましたが何故か接続できませんでした。
そこでnwtuiで設定したところ接続できました。なんで?
sudoの設定
sudoはインストールしただけでは使えません。ファイルの編集が必要になります。
visudoコマンドで編集します・・・が、 viが入っていないとひと手間かかります。
下記はneovimの例
# EDITOR=nvim visudo
yayのインストール
AURのインストールを簡単にするためにyayを導入します。
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
終わりに
数年に一度インストールするのですが、毎度忘れるので備忘録で残します。
久しぶりにUbuntuも起動してみましたが、本当に楽で便利ですね。macから移行しても何一つ不自由ないのではないでしょうか。
Discussion