Arch Linux インストールの流れ

BIOS/MBRUEFI/GPTのうち、より優れたUEFI/GPTを使う。

 

全体の流れ

1. インストール作業のための一時的な設定

2. パーティション分け

3. Linux自体のインストール

(chroot)

 4. 今後使う上で必要な設定

 5. 次回起動時のブートローダのインストールと設定

 6. 再起動

 7. 諸設定

 

Arch Linuxのインストールメディアは牛肉屋を営む牛のようなものである。牛が仕入れて客に提供するのは牛肉だが、牛が自らを捌いて売るわけではない。同様に、Arch Linuxのインストールメディアはインターネット上からArch Linuxをダウンロードしてコンピュータにインストールするが、インストールメディアの中のArch Linuxがコピーされるわけではない。また、ユーザーは初めのうちは売る方の牛に指示を出すが、途中からは売られた方の牛を調理するようになる。この切り替えがchrootである。

インストール作業の中でテキストエディタviが登場する。慣れないうちは操作が大変なのでnanoを代わりに使ってもよい。ただ今後のためにviを使うことを推奨する。

 

以上のことを押さえた上でインストール作業に取り掛かる。

 

インストールメディアの入ったUSBメモリーを刺し、有線でインターネットに繋ぎ、PCの電源ボタンを押して即座にF2、Boot List Optionで[UEFI]、Boot Option #1で[UEFI: (USBメモリの名前)]を選択、Save Changes and Reset。表示される選択肢の中からArch Linux archiso x86_64 UEFI USBを選択して起動、Welcome to Arch Linux! に続いてコンソールに文字が流れる。

 

tty1でroot自動ログインが行われ、入力を受け付ける状態になる。

archiso login: root (automatic login)

root@archiso ~ # _

 

1. インストール作業のための一時的な設定

Dvorakユーザなのでloadkeysを使って切り替える。

loadkeys dvorak-programmer.map

 

pingを使ってインターネット接続を一応確認する。

ping -c3 www.google.com

 2. パーティション分け

ディスク/dev/sdaのパーティションを決める。UEFIなのでgdiskまたはcgdiskを使う。僕はどちらかというと対話型のgdiskの方が使いやすいように感じた。/dev/sdaはコマンドライン引数と標準入力のどちらでも指定できる。

gdisk /dev/sda

コマンド入力を受け付けるようになる。

oで新しいパーティションテーブルを作成し、ここにパーティションを書いてゆく。

Command (? for help): o

This option deletes all partitions and creates a new protective MBR.

Proceed? (Y/N): Y

UEFIの場合まず/boot用のEFI System パーティション(ESP)を作る必要がある。Hex CodeとしてEF00を指定することでLinux filesystemではなくEFI systemとし、512M用意する。デフォルトのままのところは何も打たずにエンターを押せば良い。

Command (? for help): n

Partition number (1-128, default 1):

First sector () or {+-}size{KMGTP}:

Last sector () or {+-}size{KMGTP}: +512M

Current type is 'Linux filesystem'

Hex code or GUID (L to show codes, Enter = 8300): EF00

Changed type of partition to 'EFI System'

残りはすべて/用のrootパーティションとした。ここで/homeを分けてしまうと後でブートローダがエラーを吐く(指定の仕方を間違えたのだろうか)。

Command (? for help): n

Partition number (1-128, default 2):

First sector () or {+-}size{KMGTP}:

Last sector () or {+-}size{KMGTP}:

Current type is 'Linux filesystem'

Hex code or GUID (L to show codes, Enter = 8300):

Changed type of partition to 'Linux filesystem'

メモリが1GB以下だとswapも作ることが多いが、幸い4GB(十分!)もあったので作らなかった。swapを作るとしたらHex codeは8200になる。

そしてwriteで作成したパーティションテーブルをハードディスクに書き込む。

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!!

Do you want to proceed? (Y/N): Y

これで/dev/sda1(後の/boot)、/dev/sda2(後の/)の2つのパーティションが作られた。

 

ESPはF32でフォーマットする。

mkfs.vfat -F32 /dev/sda1

他はext4でフォーマットする。

mkfs.ext4 /dev/sda2

swapを作るならここでmkswap /dev/sdaXとswapon /dev/sdaXを行う。 

/dev/sda2(後の/)を/mnt自体にマウントする。

mount /dev/sda2 /mnt

 /dev/sda1(後の/boot)は/mnt/bootを作ってマウントする。

mkdir /mnt/boot

mount /dev/sda1 /mnt/boot

 3. Linux自体のインストール

viを起動してミラーリスト(どのサーバーから優先的に落とすか)を設定する。

vi /etc/pacman.d/mirrorlist

日本在住の場合Japanを検索して一番上に持ってくる。キーボード操作としては「/Japan(エンター)」で検索、「2dd{p」でコピー&ペースト、「n」と「N」で次を検索&前を検索、終わったら「:wq(エンター)」で保存&終了。

 

pacstrapでLinuxをインストールする。

pacstrap -i /mnt base base-devel

エンターを押し続け、言われたものを全てインストールする。

 

fstabを生成する。

genfstab /mnt >> /mnt/etc/fstab

次回起動時に/mntが/、/mnt/bootが/bootになる。ここでfstabが書き込まれた/mnt/etc/fstabを確認する(cat /mnt/etc/fstab)と、/dev/sda2がext4で/に、/dev/sda1がvfatで/bootになるという趣旨の表があるはずだ。genfstabに-Uオプションを付けていると左の列がUUID=(数字とアルファベットの羅列)になる。

 

肉屋で牛肉を買い終えた。このあとは肉屋を出て、受け取った牛を調理する。

arch-chroot /mnt

家に帰って牛肉を調理台に置いた。

 4. 今後使う上で必要な設定

viで/etc/locale.genを開く。

vi /etc/locale.gen

 「/en_US」などとして「n」「N」を使いながら「# en_US.UTF-8 UTF-8」と書かれた行を探し、「0x」でコメントアウト。同様に「/ja_JP」などとして「# en_US.UTF-8 UTF-8」を探し、「0x」でコメントアウト。「:wq」で保存終了。そして変更を反映。

locale-gen

 

locale.confで言語を設定する。

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

 

次回起動時のキーボードレイアウトとフォントを設定する。

vi /etc/vconsole.conf

 「i」で入力を開始、Escで入力を終了。

KEYMAP=dvorak-programmer.map
FONT=Lat2-Terminus16

とした。

 

場所の設定。

ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

時刻の設定。

 hwclock -u -w

ホスト名の設定。

echo (ホスト名) > /etc/hostname

 

インターネット接続にはdhcpcdを使う。systemctlコマンドを使い、起動時にdhcpcdが自動でインターネットに接続するようにする。systemctlの後に続けてオプションを指定する:その場で立ち上げるにはstart、その場で止めるにはstopを使い、enable↔disableは起動したときに立ち上がるかどうかを選ぶ。次回起動時に繋がらなかった場合はまたsystemctlを使ってdhcpcdの状態を確認する。

systemctl enable dhcpcd

 

パスワードを設定する。

passwd

 5. 次回起動時のブートローダのインストールと設定

Arch Linux自体の設定は完了した。現在Arch Linuxは起動した状態であり、ここからこのOSをずっと起動したままで使い続けることが可能である。いわば暖炉の中で薪が燃えている状態である。あなたはその火を使ってさまざまなことができる。

しかしあなたはまだマッチを持っていない。今燃えている火は、USBメモリのarchisoが点火してくれた火である。暖炉と薪は整ったが、マッチが無いことには火を付けることができない。

マッチとなるのはブートローダである。ブートローダには数種類あるが、今回はsystemd-boot(旧称gummiboot)を使う。インストール。

bootctl --path=/boot install

この後いくつかの設定を行い、USBを抜いて再起動する。設定に失敗すると次の再起動ができなくなる。その場合は慌てずUSBを挿し直して起動し、/dev/sda1と/dev/sda2のマウントを上と同じように行い、ここからやり直す。

 設定するのは/boot/loader/entriesディレクトリと/boot/loader/loader.confファイルの2つである。

まず/boot/loader/entriesに移動する。

cd /boot/loader/entries

/boot/loader/entriesには起動モードの選択肢1つごとに1つのファイルを拡張子confで作る。arch.conf(普段)とarch-fallback.conf(Fallback、何かあったとき用)の2つを用意する。

ルートパーティション/dev/sda2の固有PARTUUIDを調べる。

blkid -s PARTUUID -o value /dev/sda2

arch.confを編集して次のようにする。

title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=PARTUUID=(PARTUUID) rw

PARTUUIDのところにblkidで調べたPARTUUIDを書く。長い文字列なので、メモするのが面倒ならblkidの最後に> arch.confと付け加えておくとPARTUUIDが表示される代わりにarch.confに出力される。

arch-fallback.confは

title Arch Linux Fallback
linux /vmlinuz-linux
initrd /initramfs-linux-fallback.img
options root=PARTUUID=(PARTUUID) rw

次に、既に存在する/boot/loader/loader.confを編集する。

cd ..

vi loader.conf

このファイルに一行ずつ設定を書いていく。必ず書かなければならないのは「editor no」の一行である。これを書かないと、「スペースキーを押しながら起動→eを押してinit=/bin/bashを書き加えた状態でArch Linuxを起動→パスワード無しでroot権限が手に入る!ガハハ!」なのでまずい*1。何も書かないとデフォルトでeditor yesになってしまう。

僕は、電源ボタンを押したら即座にArch Linux(fallbackでない方)が選択されて起動するようにした。そのためには「タイムアウト:0」と「デフォルト:Arch Linux」の2つを指定する。タイムアウトの方は何も書かなくても自動で0になる。書くとしたら「timeout 0」。デフォルトのローダは「default (ファイル名)」と書いて指定する。ファイル名のところにはさっき作ったファイル名arch.confの拡張子を除いた部分(つまりarch)を書く。「i」で入力開始、Escで入力終了。

最終的にloader.confの中身は次のようになる:

editor no
default arch

:wq」で保存終了。他の設定例:

editor no
timeout 3
default arch

起動してから3秒間選択肢が表示され、その間に何もしないとArch Linuxが起動する。ここで表示される選択肢をtimeout 0でも表示するには起動時にスペースキーを押す。

6. 再起動

exitしてUSBを抜いて再起動。

exit

reboot

起動したら

login: root

password: (パスワード)

でログイン。

  7. 諸設定

ユーザを追加する。

useradd -m -G wheel (ユーザ名)

作ったユーザのパスワードを設定する。

passwd (ユーザ名)

sudoersファイルを設定する。

visudo

# %wheel ALL=(ALL) ALL と書かれた行を探し、コメントアウト

さらに一度入力したパスワードが一定時間有効なままなのが嫌なのでDefaults timestamp_timeout=0を追記した。別に構わないならしなくて良い。

そうしたら今作ったユーザでログインし直す。

exit

*1:やってみた。Welcome to Arch Linux! の代わりに[root@archlinux /]# と表示され、パスワードが変更できた。