ArchLinuxのインストール手順.
メディアから起動したLive環境したArchLinuxから次の3つのスクリプトを実行する.
- pacstrap : パッケージをインストール
- genfstab : fstab作成
- arch-chroot : Live環境からchange root
ロケール,ネットワーク,ブートローダーの登録はスクリプトとは別に行う.
まずArchLinuxの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(0.26+0.016+101.1+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/sdaCommand (? for help): pDisk /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): nPartition number (8-128, default 4): 4First sector (34-976773134, default = 212514816) or {+-}size{KMGTP}:(何も入力しない)Last sector (493533184-976773134, default = 976773134) or {+-}size{KMGTP}: +32GCurrent type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): LType 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): 8200Changed 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 filesystemCommand (? 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: iwlwifiip link | grep "w.*" | head -1でネットワークインターフェースを確認する.3: wlan0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 1500 qdisc noqueue state DOWN mode DORMANT group default qlen 1000wからはじまるネットワークデバイスは無線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 iwlmvmiw 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