archLinux

ArchLinux Install Guide (restore)

既出ではありますが、せっかく書いたので公開することにしました。

そんなに暑くない夏の日。

そんな日々が続く中。

私はそんな日々の2日間をかけてArch LinuxとMacOSXのデュアルブートをMac Book Air Mid 2013で構築することに成功した。

今回は、インストールで自分が行ったことをつらつらと書いていくことにする。

警告

ここに記述したとおりにやってうまくいかない場合がある。

その時に、もしあなたのMacが破壊されたとしても私は一切の責任を負わない。

上の言葉は脅しというわけではないのだが、私には破壊されたMacを直せる自信もないし技術力もないので、そこのところのご理解をお願いしたい。

私もインストール時は壊れないものかとビクビクしながらやっていた。

使用したハードウェア

Mac Book Air Mid 2013 (OS X El Capitan)

USBメモリー 8GB

ブートUSBの作成

Arch Linux公式サイトからisoイメージをダウンロードする。

Macターミナル

1.書き込み先のUSBメモリーのデバイスIDを見つける。
$ diskutil list

2.書き込み先のUSBメモリーをアンマウントする。
$ sudo diskutil unmountDisk /dev/diskN
/dev/diskNを該当するデバイスIDに置き換える。

$ sudo dd bs=4m if=/path/to/archlinux.iso of=/dev/diskN && sync
/dev/diskNを該当するデバイスIDに置き換える。

しばらく、時間を置くと書き込みが終了する。

パーティショニング(Mac上での作業)

ディスクユーティリティを起動する。

今回はデュアルブートを行うのでAPPLE SSDのパーティショニングを行う。

どれくらいの大きさにするかは自由であるが、最低でも10GBくらいは必要であると思う。

パーティショニングが終わったなら再起動をする。

再起動の際、起動音が鳴ったらaltを押しっぱなしにする。

すると、起動ディスクの選択画面が現れる。

次の作業ではArch Linuxインストーラーでの作業になるので、おそらく右側に表示されている[EFI Boot]のディスクをクリックする。

そうすればArch Linuxインストーラーが起動する。

キーボードレイアウトの変更

キーボードレイアウトはArch Linuxインストーラーを起動したら一番始めにやっておくべき作業だ。

ほぼ多くの日本語キーボードはjp106をロードすればOKである。

# loadkeys jp106

もちろん、Mac Book Air Mid 2013もこれで問題ない。

パーティショニング

まずは、インストール先のSSDのデバイスIDがどう割り当てられているのかを確認する。
# lsblk

cgdisk /dev/sdx
/dev/sdxは該当するデバイスIDに置き換える。

Mac上で作成したパーティションを[Delete]で削除して以下のパーティションを[New]で作成する。

デバイスID* サイズ パーティションタイプ パーティション名 フォーマット
/dev/sda4 128MB Apple HFS+(af00) Boot Loader Macで行う
/dev/sda5 256MB Linux Filesystem(8300) Boot ext4
/dev/sda6 4GB Linux Swap(8200) Swap space swap
/dev/sda7 残り Linux Filesystem(8300) Root ext4

*ここで示されているデバイスIDは説明を簡単にするためにつけた仮のものである。実際のものとは大きく違うことがある。

first sectorなどを聞かれるがデフォルトのままで良い。

作成し終わったら[Write]で書き込みをしてEscを押して退出する。

フォーマット

Linuxファイルシステムはたいていext4である。

mkfs.ext4 /dev/sda5
mkswap /dev/sda6
mkfs.ext4 /dev/sda7

マウント

マウントしなければArch Linuxインストーラーのシェルから中身をいじることができない。

# mount /dev/sda7 /mnt         #Rootパーティションのマウント
# mkdir /mnt/boot              #Bootパーティションをマウントさせるディレクトリを作成
# mount /dev/sda5 /mnt/boot    #Bootパーティションのマウント
# swapon /dev/sda6             swapの有効化

インターネット接続の設定

普通ならwifi-menuなどを使ってインターネットに接続させるのだが、私のMac Book Airの無線LANアダプタであるBroadcom bcm4360は素のままのArch Linuxでは動かない。

そのため、スマホでのUSBテザリングでインターネット接続をした。

接続されたUSBデバイスの確認。
# ip link

該当インターフェイスを使ったインターネット接続。
# dhcpcd enp?s??u?
enp?s??u?は該当するUSBデバイス名に置き換える。

ベースシステムのインストール

# pacstrap -i /mnt base base-devel

fstabの生成/編集

fstabはパーティションなどをどのようにマウントするかを定義するファイルである。

SSDであるMac Book Airでは少し手を加える必要がある。

# genfstab -p /mnt >> /mnt/etc/fstab
#vim /mnt/etc/fstab

下のように編集する。

/dev/sda7               /           ext4        defaults,noatime,discard,data=writeback 0 1
/dev/sda5               /boot       ext4        defaults,relatime,stripe=4  0 2
/dev/sda6               none        swap        defaults    0 0

システムの設定

# arch-chroot /mnt /bin/bash
# echo hostname > /etc/hostname #hostnameは好きな名前に変えられる。
# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --utc 
# useradd -m -g users -G wheel -s /bin/bash username #usernameは好きな名前に変えられる。
# passwd username #usernameは好きな名前に変えられる。
# sudo pacman -S sudo vim

sudoersの編集
# visudo

%wheel ALL=(ALL) ALLをアンコメントする。

言語の設定

# vim /etc/locale.gen

en_US.UTF-8
ja_JP.UTF-8

の2つをアンコメントしてlocale-genで設定ファイルを生成する。

普段使う言語の設定(インストールシェル上では日本語を扱うことができないので英語で設定を行う。)

# echo LANG=en_US.UTF-8 > /etc/locale.conf
# export LANG=en_US.UTF-8

コンソールフォントとキーマップ
# vim /etc/vconsole.conf

KEYMAP=jp106
FONT=lat9w-16

/etc/mkinitcpio.confのautodetectのあとにkeyboardがなかったら追加する。

# mkinitpcio -p linux

ブートローダーのインストール

OSXのEFIブートローダーでブートできるようにするにはgrub-efi-x86_64をインストールする。
# pacman -S grub-efi-x86_64

/etc/default/grubのGRUB_CMDLINE_LINUX_DEFAULTを編集する。

# vim /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet rootflags=data=writeback"

boot.efiを生成する。

# grub-mkconfig -o boot/grub/grub.cfg
# grub-mkstandalone -o boot.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi --compress=xz boot/grub/grub.cfg

boot.efiはカレントディレクトリに生成されるため注意する。

boot.efiはこのあとMacで設定をするのに必要になるためUSBメモリーなどを使って外部に保存する必要がある。

USBメモリーのデバイスIDをsdbとしsdb1のパーティションがあると仮定する。

# mkdir /mnt/USB
# mount /dev/sdb1 /mnt/USB
# cp ./boot.efi /mnt/USB #boot.efiのコピー
# umount /dev/sdb1 #USBメモリーのアンマウント
# rm -r /mnt/USB   #ディレクトリの削除

ここまで来たら再起動する。

# exit
# reboot

再びMacでの作業

起動音が鳴ったらcommand+Rを押してリカバリーモードを起動させる。

リカバリーモードになったら、ターミナルを起動する。

El CapitanではSIPというシステム保護機能が有効となり、起動ディスクを変更するblessコマンドが使えないためcsrutilでSIPを無効化させる。

# csrutil disable

無効化させたあとは起動ディスクを選択して通常起動。

ディスクユーティリティを起動する。

cgdiskでパーティショニングした/dev/sda4(Apple HFS+)のパーティションをディスクユーティリティを使ってMac OSX拡張(ジャーナリング)としてフォーマットする。

フォーマットしたら下のようにディレクトリを作り、CoreServicesにUSBメモリーに保存したboot.efiをコピーする。

|___mach_kernel
|___System
       |
       |___Library
              |
              |___CoreServices
                      |
                      |___SystemVersion.plist
                      |___boot.efi

SystemVersion.plistの中身は以下のようにする。
コピーペーストをすると良いだろう。

<xml version="1.0" encoding="utf-8"?>
<plist version="1.0">
<dict>
    <key>ProductBuildVersion</key>
    <string></string>
    <key>ProductName</key>
    <string>Linux</string>
    <key>ProductVersion</key>
    <string>Arch Linux</string>
</dict>
</plist>

blessを使って起動ディスクを変更させる。

sudo bless --device /dev/disk0s4 --setBoot

再起動してリカバリーモードに入りSIP機能を再び有効化させる。

# csrutil enable

参考文献

-MacBook ArchWiki

-Arch Linux Installation with OS X on Macbook Air (Dual Boot)

-Arch on Air

-Installing Arch Linux on my 2013 Macbook Air

-Androidテザリング ArchWiki

-A cgdisk Walkthrough