Zenn
👽

古い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の入手

下記サイトから入手しましょう。個人的には日本のサーバが良いと思います。
https://archlinux.org/download/
入手したら好きな方法でブートメディアを作ります。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
# /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

ログインするとコメントできます