ArchLinuxのインストール手順.

おおまかに云うと,Live環境で起動したArchLinuxから次の3つのスクリプトを実行する.

  1. pacstrap.パッケージをインストールする.
  2. genfstab.fstabを作る.
  3. arch-chroot.Live環境からchange rootする.

ロケール,ネットワーク,ブートローダーの登録はスクリプトとは別に行う.

順を追って見ていく. まず,Live環境を起動する.公式サイトからISOをダウンロードし,メディアに書き込む.

: USB
dd if=<iso-file> of=<device-file> status=progress bs=8192
#CD
cdrecord -v -sao dev=<device-file> <iso-file>

Windowsとのデュアルブートを行う場合,PCのBIOS設定でUEFIセキュアブートと高速ブートアップを無効にしておく.

パーテーションを確認する.

fdisk -l
...
    Device         Start       End   Sectors   Size Type
    /dev/sda1       2048    534527    532480   260M EFI System
    /dev/sda2     534528    567295     32768    16M Microsoft reserved
    /dev/sda3     567296 211264823 210697528 100.5G Microsoft basic data
    /dev/sda4  211265536 212512767   1247232   609M Windows recovery environment

lsblk
     NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
     sda      8:0    0 465.8G  0 disk
     ├─sda1   8:1    0   260M  0 part
     ├─sda2   8:2    0    16M  0 part
     ├─sda3   8:3    0 101.1G  0 part
     └─sda4   8:4    0   609M  0 part
     sr0     11:0    1  1024M  0 rom

lsblkの結果から,ドライブ(sda)の容量は465.8GBうち102.985GB(101.1+0.26+0.016+0.609)が施用済みで空きが363.815GB(465.8-102.985). ここに,新たなパーテーションsda4sda5sda6を作成する. sda4は32GBのスワップ専用パーテーション,sda5は60GBで/home/をマウントし,sda6は40GBで/をマウントし,fdiskの結果からsda1は,EFIのシステム領域であるため,ここに,/boot/をマウントする. /home/boot/ 以外がsda6のパーテーションにマウントされることになる.

スワップのサイズは,搭載RAM(8GB)の4倍にあたる容量(32GB)を確保する. 60GBのdev/sda4を作成し/homeを割りあて,40GBのdev/sda5を作成し,/を割り当てる.この空きに/homeとそれ以外を別々のパーテーションとして作成する.そのうえでまた空いている232GiBは別のOSをいれたり,足らなくなったら拡張するように置いておく.

gdiskでpartitionを作成する.

  1. gdisk /dev/sda
  2. Command (? for help): p
    Disk /dev/sda: 976773168 sectors, 465.8 GiB
    ...
    Number Start (sector) End (sector)  Size      Code Name
       1           2048       534527   260.0 MiB  EF00 EFI system partition
       2         534528       567295   16.0 MiB   0C01 Microsoft reserved ...
       3         567296    212514815   101.1 GiB  0700 Basic data partition
    
  3. 番号4で新しいパーテーション(sda4)を追加する
    1. Command (? for help): n
    2. Partition number (8-128, default 4): 4
    3. First sector (34-976773134, default = 212514816) or {+-}size{KMGTP}: (何も入力しない)
    4. Last sector (493533184-976773134, default = 976773134) or {+-}size{KMGTP}: +32G
    5. Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): L
      Type search string, or <Enter> to show all codes: Linux
      8200 Linux swap                          8300 Linux filesystem
      8301 Linux reserved                      8302 Linux /home
      ...
      
    6. Hex code or GUID (L to show codes, Enter = 8300): 8200
      Changed type of partition to 'Linux swap'
      
  4. 同じ手順で40GiBと60GiBのLinux領域(8300)のpartitionを追加する. パーテーションのタイプには 8302 Linux /home のように用途にあわせたものもあるが汎用的に利用できる 8300 Linux filesystemを指定している.
  5. Command (? for help): pで,パーテーションテーブルを表示する. テーブルの内容をディスクに書きこむ前に,swap領域とLinuxファイルシステム領域が2個追加されているか最終チェックを行う.
    Disk /dev/sda: 976773168 sectors, 465.8 GiB
    ...
    Total free space is 487436269 sectors (232.4 GiB)
    
    Number Start (sector) End (sector)  Size     Code  Name
       1           2048       534527   260.0 MiB EF00  EFI system partition
       2         534528       567295   16.0 MiB  0C01  Microsoft reserved ...
       3         567296    212514815   101.1 GiB 0700  Basic data partition
       4      212514816    279623679   32.0 GiB  8200  Linux swap
       5      279623680    363509759   40.0 GiB  8300  Linux filesystem
       6      363509760    489338879   60.0 GiB  8300  Linux filesystem
    
  6. Command (? for help): wでパーテーションテーブルの内容をディスクに書き込む

スワップ領域を作成する.

mkswap /dev/sda4
swapon /dev/sda4

/および /home用にXFSファイルシステムを作成する.

mkfs.xfs /dev/sda5
mkfs.xfs /dev/sda6

/dev/sda5/dev/sda6をマウントする. このあとの手順でチェンジルート(arch-chroot)を行うため,対象ディレクトリは/mnt/以下に作成する.

mount /dev/sda5 /mnt
mkdir /mnt/home
mount /dev/sda6 /mnt/home
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

パッケージのインストールからチェンジルートまで

パッケージをインストールするためにインターネット接続を確認する.

  1. lspci -k | lessでNICのドライバを確認する. -kはカーネルドライバーを表示するオプションである.
    ...02:00.0 Network controller: Intel Corporation Dual Band Wireless-AC 3165 Plus Bluetooth (rev 99)
        Subsystem: Intel Corporation Dual Band Wireless-AC 3165
        Kernel driver in use: iwlwifi
    
  2. ip link | grep "w.*" | head -1 でネットワークインターフェースを確認する.
    3: wlan0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 1500 qdisc noqueue state DOWN mode DORMANT group default qlen 1000
    
    wからはじまるネットワークデバイスは無線LANで,通常wlan0wlp2s0などの形式になっている.wlan0: <...UP,...>となっていない場合は,ip link set wlan0 upで起動しておく.
  3. dmesg | grep iwlwifi | grep firmwaregで,カーネルドライバfirmwareがロードされているかを確認する.
     [4.632145] iwlwifi 0000:02:00.0: loaded firmware version 29.198743027.0 7265D-29.ucode op_mode iwlmvm
    
  4. iw dev wlan0 linkで無線LANの状態をみる.
     Not Connected.
    
  5. iw dev wlan0 scan | grep <SSID>でお目当てのSSIDを見つける
  6. Wi-Fi環境に接続する. 無線LAN用のユーティリティコマンドwpa_supplicantで設定を行う. 他にもいくつかのユーティリティコマンドがある1
    wpa_passphrase <SSID> <passphrase> > /etc/wpa_supplicant.conf
    wpa_supplicant -D nl80211,wext -i wlan0 -c /etc/wpa_supplicant -B
    
  7. iw dev wlan0 linkで無線LANの接続状態を見る. iwコマンドはLinuxの無線LAN向けのユーティリティである.devでネットワークデバイスを指定,linkで状態を確認する.scan で利用可能なアクセスポイントをスキャンする.
    Connected to xx:xx:xx:xx:xx:xx (on wlan0)
     ...
    

キーボードレイアウトを指定する. 例ではls /usr/share/kbd/keymaps/**/*.map.gz | lessで選択可能なキーマップを確認,/usr/share/kbd/keymaps/qwerty/us.map.gzから,usを指定している.

loadkeys us

NTPを有効にする.

timedatectl set-ntp true

パッケージをインストールする. 最低限base linux linux-firmwareをinstallする. ビルドやスクリプトを実行するためのbase-develvimなど使いやすいエディタもinstallしておく.ガイドにはman-dbman-pagestexinfoなど, マニュアル(maninfo)を読むためのパッケージも必要に応じてinstallするように,としている.

pacstrap -i /mnt base base-devel linux linux-firmware vim

Live環境のマウント状態を/mnt/etc/fstabに書き込む.

genfstab -U /mnt >> /mnt/etc/fstab

/mntにチェンジルートする.

arch-chroot /mnt

各種設定とブートローダーのインストール

ロケール[^locale]を設定する. /etc/locale.genをエディタで開きja_JP.UTF-8 UTF-8en_US.UTF-8 UTF-8のコメントを外して保存し,locale-genでロケール情報を作成する.

vim /etc/locale.gen && locale-gen
echo LANG=en_US.UTF-8  > /etc/locale.conf

キーマップを設定する. vconsole.confはコンソール環境(X環境の起動前の端末)の設定で,デフォルトのキーマップはusだが明示的に設定する. あわせてフォント情報も追記している. 設定可能なフォントは/usr/share/kbd/consolefonts/のファイルを見ることで確認できる.

echo KEYMAP=us >> /etc/vconsole.conf
echo FONT=Lat2-Terminus16 >> /etc/vconsole.conf

pacmanのミラーリストを更新する. reflectorは最新のミラーリストを収集してくれるPythonのスクリプトで,ここでは日本とアメリカを指定して直近で同期された20個のミラーサイトをダウンロード速度順に並び変え設定ファイルに保存している. もし満足しなればあとで設定ファイルを修正してもよい.

reflector -c JP -c US --protocol https --sort age --latest 20 --save /etc/pacman.d/mirrorlist

タイムゾーンを設定する. 設定したいタムゾーンを/usr/share/zoneinfo/以下から見つけ/etc/localtimeにシンボリックリングを作成している.

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

ハードウェアクロックの設定をする.システムクロックで書き換えるようにしておく.

hwclock -u -w

ネットワークの設定を行う. hostnameはネットワークでPCを識別するための名前. RFC1178を参考に決定する. hostnameの設定方法の代替方法としてhostnamectl set-hostnameで設定したり,hostnameを実行しても良い.

echo <host_name> > /etc/hostname
cat << 'END' > /etc/hosts
>  127.0.0.1 localhost
>  ::1   localhost
>  127.0.1.1 myhostname.localdomain  myhostname
END

ネットワークインターフェースの状態を確認.

ip link

インターネットに接続できるかを見る.

ping -w 3 archlinux.org

無線LAN環境への接続ができていないときはwpa_supplicantコマンドにwpa_passphrase <SSID> <passphrase>の結果を-cでコマンドラインから読み込ませて指定し接続を実行する.-B はバックグラウンド実行の指定である. wpa_supplicant -B -i wlan0 -c <(wpa_passphrase <SSID> <passphrase>) ルートユーザーのパスワードを設定する.

passwd

一般ユーザーを追加する.

useradd -m -g users -G wheel -s /bin/bash <username>
passwd <username>

sudoを実行できるグループを登録する. visudoで/etc/sudoersファイルを修正できる. 通常のviと同じく:wqでファイルを保存して終了するが,設定ファイルの内容が間違っている場合はvisudoから修正を求められる.

visudo

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL

wheelグループに所属するユーザーはsudoでroot権限でのコマンドが実行できる.

GRUBと関連ツールをインストールする.

pacman -S grub efibootmgr dosfstools os-prober

関連ツールの要旨.

  • efibootmgr
    • grubが作成したイメージをEFIシステムパーテーションに格納する
  • dosfstools
    • トラブルが起きたときのためのFAT32システム用ユーティリティ
  • os-prober
    • windows OSがinstallされたパーテーションを自動的に見つける

GRUBをブートローダーとして設定する.

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug

grub-installでデバイスにブートマネージャーをinstallする.--targetでUEFIを指定(マニュアル参照). --efi-directoryでEFIシステムパーテーション(/boot)を指定している. --bootloader-idはGRUBメニュー上の識別子となるので,分かりやすいもの(arch_gru)を指定しておく. その他のトラブルに対応するため,UEFIシステムへのインストール時のトラブルシューティングを一読しておく.

GRUBの設定ファイルを作成する. grub-mkconfig GRUBの設定ファイルを自動的に生成する. -oオプション引数なしで指定することで,結果を標準出力する. lessにパイプして結果を確認している. 出力結果の内容が問題ないことを確認してから/boot/grub/grub.cfgに設定を書き出している.

grub-mkconfig -o /boot/grub/grub.cfg

チェンジルートを抜ける(Live環境に戻る).

exit 

リブートする. Live環境を起動しないようにinstallメディアは取り出しておく.

reboot

再起動後ArchLinuxがログイン待ちの状態になるので,追加した一般ユーザーでログインする.

以上でインストールが完了する[^x_im]. X環境や,日本語入力環境はインストールの狭義からはずれるものとして別の手順とする.

まとめ

ArchLinuxのインストールはpacstrapfstabarch-chrootの3つのスクリプトの実行で完結しており,ロケール,ネットワーク,ブートローダーの登録はそれとは別の付随する設定となる. 付随する設定は日々行う作業の延長だ.

用意されたインストールウィザードを進めていくよりも,作業として何をしているかを分かることを優先している. インストールの作業の延長がそのまま日々のOSのメンテナンス作業につながる. こういった作業を通じて,ArchLinuxに慣れ親しんでいくことになる.


  1. ユーティリティリスト

    software package WEXT nl80211 WEP WPA/WPA2
    [wireless_tools][wireless_tools] wireless_tools Yes No Yes No
    iw iw No Yes Yes No
    [wpa_supplicant][wpa_supplicant] wpa_supplicant Yes Yes Yes Yes
    iwd iwd No Yes No Yes
     ↩︎