ArchLinuxのインストール手順.
おおまかに云うと,Live環境で起動したArchLinuxから次の3つのスクリプトを実行する.
- pacstrap.パッケージをインストールする.
- genfstab.fstabを作る.
- 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).
ここに,新たなパーテーションsda4
,sda5
,sda6
を作成する. 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を作成する.
gdisk /dev/sda
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
- 番号
4
で新しいパーテーション(sda4)を追加するCommand (? for help): n
Partition number (8-128, default 4): 4
First sector (34-976773134, default = 212514816) or {+-}size{KMGTP}:
(何も入力しない)Last sector (493533184-976773134, default = 976773134) or {+-}size{KMGTP}: +32G
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 ...
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'
- 同じ手順で40GiBと60GiBのLinux領域(8300)のpartitionを追加する. パーテーションのタイプには
8302 Linux /home
のように用途にあわせたものもあるが汎用的に利用できる8300 Linux filesystem
を指定している. 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
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
パッケージのインストールからチェンジルートまで
パッケージをインストールするためにインターネット接続を確認する.
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
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で,通常wlan0
やwlp2s0
などの形式になっている.wlan0: <...UP,...>
となっていない場合は,ip link set wlan0 up
で起動しておく.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
iw dev wlan0 link
で無線LANの状態をみる.Not Connected.
iw dev wlan0 scan | grep <SSID>
でお目当てのSSIDを見つける- 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
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-devel
,vim
など使いやすいエディタもinstallしておく.ガイドにはman-db
,man-pages
,texinfo
など, マニュアル(man
,info
)を読むためのパッケージも必要に応じて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-8
とen_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のインストールはpacstrap
,fstab
,arch-chroot
の3つのスクリプトの実行で完結しており,ロケール,ネットワーク,ブートローダーの登録はそれとは別の付随する設定となる. 付随する設定は日々行う作業の延長だ.
用意されたインストールウィザードを進めていくよりも,作業として何をしているかを分かることを優先している. インストールの作業の延長がそのまま日々のOSのメンテナンス作業につながる. こういった作業を通じて,ArchLinuxに慣れ親しんでいくことになる.
-
ユーティリティリスト
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