/home/tnishinaga/TechMEMO

日々行ったこと、面白かったことを書き留めます。

MacBookAir(early 2011) にArch Linuxのデュアルブート環境を作った

2014年7月19日に新潟の山奥で開催された、Kernel/VM探検隊メンバーによるハッカソンに参加していました。 そのなかでふと「Linux実機もほしいのよー」と言ったところ「デュアルブート環境作ろう!」といわれて、@kotatsu_mi 氏全面協力の下、Arch Linux Install Battleが始まった。

rEFIndのインストール

デュアルブートのためのブートローダーを入れる。

から、「A binary zip file」を取得して、解凍する。 なかには install.sh というファイルがあるので、こいつを実行してインストールを開始する。

$ ./install.sh

これでインストール完了。 再起動して、ブート時にrEFIndの画面が立ち上がること、そしてMacのシステムが立ち上がることを確認する。

インストール領域の確保

Macのディスクユーティリティーを使ってパーティションを縮小する。

f:id:tnishinaga:20140720023314p:plain

パーティションタブを開き、右端をつかんで移動させると、パーティションの大きさを変更できる。 変更が終わったら「適用」ボタンを押して、しばらく待つ。 体感では1時間近くかかった気がするので、とにかく待つ。

インストールディスクの作成

以下を参考に、インストールメディアを作成する。

インストールディスクの起動

インストールメディアを刺してからシステムを再起動し、rEFIndでインストールメディアのなかのloaderから起動する。

パーティションの作成とフォーマット

インストールメディアからArch Linuxが起動するので、 gdisk コマンドを使って、Mac上で開けた部分に新しくパーティションを作る。 操作方法は基本的にfdiskと同じなので省略。

パーティションを書き終わったら、以下のコマンドでフォーマットする。

# mkfs.xxx /dev/sdaX

xxxは使用したいファイルシステム、Xは使用するパーティション番号。 今回はxxxにはbtrfs、Xは4とした。

最後にマウントコマンドで、/mntにでもマウントする。

# mount /dev/sda4 /mnt

基本システムのインストール

以下のコマンドでArch Linuxの基本システムをMBAのディスクにインストールする。

# pacstrap /mnt base base-devel

様々な初期設定

resolv.confのコピー

# cp /etc/resolv.conf /mnt/etc/resolv.conf

ホストネームの設定

# echo "hoge" > /mnt/etc/hostname

fstab

# genfstab /mnt >> /mnt/etc/fstab

各種パッケージのインストール

# arch-chroot /mnt
# pacman -S dhclient git mercurial subversion emacs vim tmux openssh

ロケール設定

# arch-chroot /mnt
# emacs -nw /etc/locale.gen

必要なやつのコメントアウトを外す。

# locale-gen
# echo "LANG=en_US.UTF-8" > /etc/locale.conf
# exit

タイムゾーンの設定

/usr/share/zoneinfo 以下にいろいろあるので、Tokyoのシンボリックリンクを/etc以下にはる。

# rm -rf /etc/localtime 
# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

ネットワークの設定

有線の場合

特にやることがない。

無線の場合

まずは無線関係の色々なパッケージを追加する。

# pacman -S iw wpa_supplicant dialog wpa_actiond

次に ip link コマンドで無線インターフェース(私の場合はwlp2s0)を調べて、以下のコマンドを実行する。

# wifi-menu wlp2s0

しばらくするとTUIな画面に切り替わるので、指示に従ってネットに接続する。

最後に登録したネットワークに勝手に接続するように、以下のコマンドを実行する。

# systemctl enable netctl-auto@wlp2s0.service

DHCP接続

以下のコマンドでネットワークにDHCPで勝手に接続するようにする。

# systemctl enable dhcpcd.service

SSHを有効にする

# pacmans -S openssh
# systemctl enable sshd.service

一般ユーザーの追加

以下のコマンドでユーザーを追加する。

# useradd -m -s /bin/bash ユーザ名

パスワードも設定する

# passwd ユーザ名

ついでにsudoを入れて、sudoerにも追加する。

# pacman -S sudo
# visudo

root ALL=(ALL) ALL のあたりに ユーザ名 ALL=(ALL) ALL を加える。操作はviで行うことになるので注意。

rEFIndの設定

# pacman -Sy install refind
# cp /mnt/share/refind/refind_linux.conf.sample /mnt/boot/refind_linux.conf
# emacs -nw /mnt/boot/refind_linux.conf

ここでファイルシステム(btrfs)とPARTUUID(XXXXXXXXX)を入力する。

## This file should be present in the same directory as the EFISTUB kernel and initramfs files
## More info at http://www.rodsbooks.com/refind/linux.html , http://www.rodsbooks.com/efi-bootloaders/efistub.html

"Boot with defaults"    "root=PARTUUID=XXXXXXXXX rootfstype=btrfs rw add_efi_memmap"
"Boot to terminal"      "root=PARTUUID=XXXXXXXXX rootfstype=btrfs rw add_efi_memmap systemd.unit=multi-user.target"

UUIDは以下のコマンドで調べられる。

# blkid /dev/sda4

Mac側のrEFIndの設定

一旦システムを再起動して、Macに入ってrefindの設定をする。

% sudo sed -i -e "s/#scan_all_linux_kernels false/scan_all_linux_kernels true/" /EFI/refind/refind.conf

これでLinuxカーネルを勝手に探すようになる。

最後にrEFIndのインストーラーに同梱されているドライバをコピーして入れれば設定は完了。

$ sudo cp -R driver_x86 /EFI/refind/driver

後は煮るなり焼くなり……

参考文献