2014年7月19日に新潟の山奥で開催された、Kernel/VM探検隊メンバーによるハッカソンに参加していました。 そのなかでふと「Linux実機もほしいのよー」と言ったところ「デュアルブート環境作ろう!」といわれて、@kotatsu_mi 氏全面協力の下、Arch Linux Install Battleが始まった。
rEFIndのインストール
から、「A binary zip file」を取得して、解凍する。
なかには install.sh
というファイルがあるので、こいつを実行してインストールを開始する。
$ ./install.sh
これでインストール完了。 再起動して、ブート時にrEFIndの画面が立ち上がること、そしてMacのシステムが立ち上がることを確認する。
インストール領域の確保
Macのディスクユーティリティーを使ってパーティションを縮小する。
パーティションタブを開き、右端をつかんで移動させると、パーティションの大きさを変更できる。 変更が終わったら「適用」ボタンを押して、しばらく待つ。 体感では1時間近くかかった気がするので、とにかく待つ。
インストールディスクの作成
以下を参考に、インストールメディアを作成する。
- [https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface(%E6%97%A5%E6%9C%AC%E8%AA%9E)#ISO.E3.81.8B.E3.82.89_UEFI.E3.83.96.E3.83.BC.E3.82.BF.E3.83.96.E3.83.AB_USB.E3.82.92.E4.BD.9C.E6.88.90.E3.81.99.E3.82.8B:title]
インストールディスクの起動
インストールメディアを刺してからシステムを再起動し、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
最後にrEFIndのインストーラーに同梱されているドライバをコピーして入れれば設定は完了。
$ sudo cp -R driver_x86 /EFI/refind/driver
後は煮るなり焼くなり……