はじめに
Arch Linuxのインストールは、Arch Linuxに興味のある人はもちろん、Linux一般やコンピューターの仕組みを深く知りたい人は一度試してみることをオススメします。ほかのLinuxディストリビューションやOSのインストールでは隠されている、興味深い技術や知識を体験するよい機会になります。たとえば、chrootやブートローダの設定などです。
また、Arch LinuxはブートモードUEFIやシステムサービスマネージャーsystemdなど新技術にも積極的に対応しています。Arch Linuxのインストールは、こうした新技術に触れるよい機会にもなります。
OSのインストールにあたってはさまざまな設定を行います。ですが、ここではSSDやハードディスクなどのドライブからArch Linuxを起動できるようになるまでの最小限のインストール手順を説明します。たとえばユーザーの作成やネットワークの設定などといったインストールと一緒に行われることが多い作業も後回しにします。
インストールの対象は、実機と、QEMU/KVMの仮想マシン、VirtualBoxの仮想マシンの3種類です。QEMU/KVMやVirtualBoxを使うとを気軽にArch Linuxのインストールを試せますし、インストールを繰り返し練習することもできます。
なお、デュアルブートは、ここでは扱いません。
準備と確認
インストール要件の確認
Arch Linuxのインストール要件は、次のとおり。
- 機種: x86_64 互換
- メモリ: 512MB以上
- インターネット接続
- ドライブ容量: 2GiB以上
意外と高い要件が求められるので、注意してください。
ブートモードとパーティション方式の確認
ブートモードはコンピューターに電源が入ってからOSがブート(起動)するまでの間に動作するもので、主にBIOSとUEFIが用いられます。かつてはBIOSがブートモードの代名詞でしたが、最近のマシンではUEFIが一般的です。実機では、マシンによりブートモードが決まります。QEMU/KVMやVirtualBoxでは、仮想マシン作成時などにBIOSかUEFIかを設定します。
また、ドライブを管理するときのパーティション方式は、かつてはMBR(Master Boot Record)が代名詞でした。最近は、とくにブートモードがUEFIの場合、GPT(GUID Partition Table)が用いられます。
ここでは、ブートモードはUEFI、パーティション方式はGPTでインストールします。
ISOファイルのダウンロード
Arch Linuxのインストールに必要なISOファイルは、Arch Linux をダウンロードに記載されたサーバーからダウンロードします。日本国内の場合、日本のサーバーからダウンロードするといいでしょう。ISOファイルは、archlinux-2018.10.01-x86_64.iso
のような「archlinux-<日付>-x86_64.iso」という形式の名前のISOファイルで、容量は600MB程度です。
インストールメディアへのコピー
実機にArch Linuxをインストールする場合は、CD-ROMやUSBメモリーなどのリムーバブルメディアにISOファイルをコピーしてください。可能な場合は、USBメモリーを使うのがオススメです。
マシンのブートと状態の確認
マシンのブート
実機の場合は、USBメモリを挿すなどしてインストールメディアからマシンをブートさせてください。QEMU/KVMやVirtualBoxの仮想マシンの場合は、ダウンロードしたISOファイルからブートするように設定し、ブートさせてください。
マシンがブートすると、次のようなzshシェルの画面になります。
この画面からArch Linuxをインストールします。硬派だねぇ。
インストール中のキーボードの設定
初期設定では英語キーボードレイアウトが設定されるため、日本語キーボードを使っていると記号などの入力がむつかしいかもしれません。その場合は、次のコマンドで日本語キーボードレイアウトに変更します。
root@archiso ~ # loadkeys jp106
詳細は、ArchWikiを参照してください。ただし、ここでの変更はインストールのときだけ有効です。永続的な設定は、インストール完了後にあらためてやります。
作業記録の開始
script
コマンドで、シェルに入力したコマンドや出力結果などの作業を記録し、ファイルに保存できます。引数を指定しない場合、カレントディレクトリのtypescriptファイルが作業記録の保存先になります。
root@archiso ~ # script
Script started, file is typescript
こうした作業記録は必須ではありませんが、あとからインストール手順を検証できるるため、保存しておくことをオススメします。とくにインストールが失敗した場合には、失敗した原因を調べるために役立ちます。
作業記録を止めるには、exit
コマンドを実行します。保存したファイルは、そのままではインストール完了時の再起動で失われてしまうため、あとでドライブにコピーする必要があります。
接続デバイスの確認
マシンに接続されているドライブなどのデバイスをlsblk
で確認します。
root@archiso ~ # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 446.8M 1 loop /run/archiso/sfs/airootfs
sr0 11:0 1 556M 0 rom /run/archiso/bootmnt
sda 254:0 0 50G 0 disk
この場合、sda
ドライブがArch Linuxインストールの対象となります。
KVM/QEMUでvirtioドライバーを用いた仮想ドライブを使っている場合は、ドライブがsda
のかわりにvda
と表示されます。
ブートモードの確認
ブートモードをefivar
コマンドで確認します。efivar
はUEFIについての変数を設定・確認するためのコマンドで、-l
オプションで変数一覧を表示します。このコマンドで変数名のリストが表示される場合のブートモードは、UEFIです。
root@archiso ~ # efivar -l
8be4df61-93ca-11d2-aa0d-00e098032b8c-BootOrder
8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0003
8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0002
... // 以下略
インターネット接続の確認
マシンがインターネットに接続していることをping
コマンドで確認します。
root@archiso ~ # ping -c 4 archlinux.jp
PING archlinux.jp (160.16.119.98) 56(84) bytes of data.
64 bytes from tk2-235-27344.vs.sakura.ne.jp (160.16.119.98): icmp_seq=1 ttl=50 time=7.73 ms
64 bytes from tk2-235-27344.vs.sakura.ne.jp (160.16.119.98): icmp_seq=2 ttl=50 time=5.43 ms
64 bytes from tk2-235-27344.vs.sakura.ne.jp (160.16.119.98): icmp_seq=3 ttl=50 time=5.36 ms
64 bytes from tk2-235-27344.vs.sakura.ne.jp (160.16.119.98): icmp_seq=4 ttl=50 time=6.15 ms
--- archlinux.jp ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3858ms
rtt min/avg/max/mdev = 5.363/6.168/7.731/0.956 ms
パーティションの設定
インストールメディアからブートした直後の状態では、ドライブへのデータの読み書きはできません。次の3つの作業でパーティションを設定することでデータの読み書きができるようになります。
- パーティションの作成
- ファイルシステムの構築
- ファイルシステムのマウント
パーティションの作成
ドライブのパーティションをgdiskで設定します。gdiskは、MBRのパーティション設定で用いられていたfdiskとよく似た、コマンドライン上のGPTパーティション設定ツールです。
sda
ドライブに対するgdiskを次のコマンドで開始します。
root@archiso ~ # gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
Command (? for help):
gdiskのプロンプトが表示されました。?
コマンドで、コマンド一覧が表示されます。
Command (? for help): ?
b back up GPT data to a file
c change a partition's name
d delete a partition
i show detailed information on a partition
l list known partition types
n add a new partition
o create a new empty GUID partition table (GPT)
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit
x extra functionality (experts only)
? print this menu
p
コマンドで現在のパーティションを表示します。パーティションが空の場合、次のように表示されます。
Command (? for help): p
Disk /dev/sda: 104857600 sectors, 50.0 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 8EC9B916-FFB9-46A8-81DB-C845CE21CAEA
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 104857566
Partitions will be aligned on 2048-sector boundaries
Total free space is 103811004 sectors (49.5 GiB)
Number Start (sector) End (sector) Size Code Name
n
コマンドを実行した後、パーティション番号、先頭セクター、最終セクター、パーティションタイプを指定し、EFIシステムパーティション(ESP)を1つめのパーティションとして作成します。ます。
First Sector
、Last Sector
、type
(Hex code or GID)を設定します。パーティションサイズを推奨値である512MB、パーティションタイプは必ずEFI System(ef00)にします。HexCode or GIDは、L
コマンドで確認できます。
Command (? for help): n
Enterキーを押します。パーティション番号「1」が指定されます。
Partition number (1-128, default 1): // Enterキーを押す
Enterキーを押します。ドライブ全体で利用できる先頭のセクターが自動的に先頭セクターとして設定されます。
First sector (34-104857566, default = 2048) or {+-}size{KMGTP}: // Enterキーを押す
512M
と入力してEnterキーを押します。サイズが512MBになるように最終セクターが設定されます。
Last sector (2048-104857566, default = 104857566) or {+-}size{KMGTP}: 512M
パーティションタイプを16進数番号のリストを表示します。
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L // HexCode or GIDの確認
0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE
3000 ONIE boot 3001 ONIE config 3900 Plan 9
4100 PowerPC PReP boot 4200 Windows LDM data 4201 Windows LDM metadata
... // 中略
af01 Apple RAID af02 Apple RAID offline af03 Apple label
Press the <Enter> key to see more codes: // Enterキーを押す
af04 AppleTV recovery af05 Apple Core Storage af06 Apple SoftRAID Statu
af07 Apple SoftRAID Scrat af08 Apple SoftRAID Volum af09 Apple SoftRAID Cache
b300 QNX6 Power-Safe bc00 Acronis Secure Zone be00 Solaris boot
... // 中略
e101 ONIE config ea00 Freedesktop $BOOT eb00 Haiku BFS
ed00 Sony system partitio ed01 Lenovo system partit ef00 EFI System
ef01 MBR partition scheme ef02 BIOS boot partition f800 Ceph OSD
f801 Ceph dm-crypt OSD f802 Ceph journal f803 Ceph dm-crypt journa
f804 Ceph disk in creatio f805 Ceph dm-crypt disk i fb00 VMWare VMFS
fb01 VMWare reserved fc00 VMWare kcore crash p fd00 Linux RAID
パーティションタイプEFI Systemに対応する16進数番号ef00
を入力してEnterキーを押します。
パーティションタイプがEFI Systemに設定されます。
Hex code or GUID (L to show codes, Enter = 8300): ef00
Changed type of partition to 'EFI System'
p
コマンドで現在のパーティションを表示します。
Command (? for help): p
Disk /dev/sda: 104857600 sectors, 50.0 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 8EC9B916-FFB9-46A8-81DB-C845CE21CAEA
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 104857566
Partitions will be aligned on 2048-sector boundaries
Total free space is 103811004 sectors (49.5 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 1048576 511.0 MiB EF00 EFI System
2つめのパーティションは、ルートファイルシステムのパーティションとして設定します。今回は、EFIシステムパーティション以外のパーティションは分割しないことにします。また、パーティションタイプはLinuxファイルシステムをまとめてみましたに記載されているようなさまざまなLinuxファイルシステムから選べます。ここでは、もっとも一般的なLinuxファイルシステムであるExt4にします。結果として、Enterキーを押していけばルートファイルシステムのパーティションが設定されます。
Command (? for help): n
Enterキーを押します。パーティション番号が2に設定されます。
Partition number (2-128, default 2): // Enterキーを押す
Enterキーを押します。既存のパーティション(EFIシステムパーティション)の直後のセクターが自動的に先頭セクターとして設定されます。
First sector (34-104857566, default = 1050624) or {+-}size{KMGTP}: // Enterキーを押す
Enterキーを押します。ドライブ全体の最終セクターが自動的に最終セクターとして設定されます。
Last sector (1050624-104857566, default = 104857566) or {+-}size{KMGTP}: // Enterキーを押す
Enterキーを押します。パーティションタイプが自動的にLinux filesystemに設定されます。
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): // Enterキーを押す
Changed type of partition to 'Linux filesystem'
再び、パーティションテーブルを表示します。
Command (? for help): p
Disk /dev/sda: 104857600 sectors, 50.0 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 8EC9B916-FFB9-46A8-81DB-C845CE21CAEA
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 104857566
Partitions will be aligned on 2048-sector boundaries
Total free space is 4061 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 1048576 511.0 MiB EF00 EFI System
2 1050624 104857566 49.5 GiB 8300 Linux filesystem
問題がなければ、w
コマンドを実行します。設定されたパーティションテーブルが実際に反映され、gdiskが終了します。
Command (? for help): w
既存のデータが削除されることの確認を求められるので、y
を入力します。
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
パーティションテーブルが書き込まれ、シェルに戻ります。
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.
シェルでlsblk
コマンドを実行し、改めてデバイスとパーティションを表示します。作成したパーティションsda1とsda2が表示されていることを確認してください。これらのパーティションはこの後の作業で/dev/sda1
や/dev/sda2
と指定します。
root@archiso ~ # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 446.8M 1 loop /run/archiso/sfs/airootfs
sr0 11:0 1 556M 0 rom /run/archiso/bootmnt
sda 254:0 0 50G 0 disk
├─sda1 254:1 0 511M 0 part
└─sda2 254:2 0 49.5G 0 part
ファイルシステムの構築
作成したパーティションごとにフォーマット(初期化)し、ファイルシステムを構築します。sda1はEFIシステムパーティションとし、sda2にルートファイルシステムを構築します。
EFIシステムパーティションには、mkfs.fat
コマンドでFAT32形式のファイルシステムを構築します。FATはMS Windowsなどで用いられてきたファイルシステムの総称で、MS DOSやWindows 95で使われたFAT16やWindows 98で使われたFAT32などが含まれます。-F32
はFAT32を指定します。
root@archiso ~ # mkfs.fat -F32 /dev/sda1
mkfs.fat 4.1 (2017-01-24)
ルートファイルシステムはmkfs.ext4
コマンドを用いて、EXT4形式で構築します。ドライブのサイズが大きい場合は、ちょっと時間がかかります。
root@archiso ~ # mkfs.ext4 /dev/sda2
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 12975867 4k blocks and 3244032 inodes
Filesystem UUID: c00d997e-3b71-4e59-89fc-aa47d478cd33
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
ファイルシステムのマウント
構築したファイルシステムをマウントし、データの読み書きができるようにします。
まず、ルートファイルシステムをマウントします。マウントするディレクトリーは、/mnt
にします。/mnt
は、インストールメディアからブートしたArch Linuxによりすでに作成されたディレクトリーです。ルートファイルシステムは構築直後完了直後で空なので、マウント完了後の/mnt
の下も空になります。
root@archiso ~ # mount /dev/sda2 /mnt
なお、/mnt
にマウントするパーティションがsda2
であり、sda1
ではないことに注意してください。
次に、EFIシステムパーティションをマウントします。マウントするディレクトリーは、/mnt/boot
です。
/mnt/boot
を作成します。
root@archiso ~ # mkdir /mnt/boot
EFIシステムパーティションを/mnt/boot
にマウントします。
root@archiso ~ # mount /dev/sda1 /mnt/boot
マウントが正常にできたかどうかを、mount
コマンドで確認します。
root@archiso ~ # mount | grep /mnt
/dev/sda2 on /mnt type ext4 (rw,realtime)
/dev/sda1 on /mnt/boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
mount
コマンドを引数なしで実行すると、現在マウントされているファイルシステム(パーティションなど)が一覧表示されます。パイプ(|)とgrep
コマンドで、/mnt
以下のディレクトリーにマウントされているパーティションを絞り込んで表示します。
sda2が/mnt
、sda1が/mnt/boot
にマウントされていることを確認してください。もし誤ったマウントをしていた場合は、次のコマンドで/mnt
以下をすべてアンマウントできます。
root@archiso ~ # umount -R /mnt
必須パッケージグループのインストール
マウントが完了したら、ルートファイルシステムへ次の3種類の必須パッケージグループをインストールします。
- base - Arch Linuxを使う上で最小限必要とされている基本的なパッケージ群
- linux - ブートに必要な
vmlinuz-linux
やinitramfs-linux.img
を生成するために必要 - linux-firmware - 一般的なハードウェアのためのファームウェア
パッケージグループに含まれるパッケージは、Package Groups Overviewで確認できます。
必須パッケージのインストールは、ミラーリストを設定してから実行します。
ミラーリストの設定
Arch Linuxでは、pacmanを用いてパッケージを管理しており、インストール時のbaseグループなどのパッケージのダウンロードとインストールにpacmanを内部的に用います。pacmanは、コピー元のサーバーをミラーリスト設定ファイル/etc/pacman.d/mirrorlist
で決定しています。このファイルは初期設定では世界中のミラーサーバーが記述されているため、遠方のサーバーに接続されてダウンロードに時間がかかってしまいます。
そこで、ミラーリスト設定ファイルを編集し、近くにあるミラーサーバーを使うようにします。日本国内の場合、日本のサーバーを一番上に移動させます。
Arch Linuxのインストール時にはファイル編集のために、vim、nanoなどのテキストエディタが利用できます。もともとの世界中のサーバーが記載されたファイルを上のような形に編集するのは、viの面白い練習課題だと思います。
pacstrapの実行
ミラーリスト設定ファイルを編集したら、pacstrap
コマンドを実行します。途中で、インストールするパッケージを選択するように聞かれる場合もあるので、画面の案内に従ってください。
root@archiso ~ # pacstrap /mnt base linux linux-firmware
==> Creating install root at /mnt
==> Installing packages to /mnt
:: Synchronizing package databases...
...
fstabの設定
/etc/fstab
は、Linux(と、そのほかのUnix系OS)がブートするときなどにマウントするファイルシステムを決める重要な設定ファイルです。pacstrap
は、実行時に/mnt/etc/fstab
を次の内容で作成します。
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
/mnt/etc/fstab
は後でarch-chroot
するときに/etc/fstab
となります。ただし、このままでは実質的に何も設定されておらず、Arch Linuxは正常にブートできません。
genfstabの実行
Arch Linuxのインストール時はgenfstab
コマンドで、/mnt
以下にマウントされたファイルシステムを反映し、fstab
ファイルを作成できます。
# genfstab -U /mnt >>/mnt/etc/fstab
実行後の/mnt/etc/fstab
の一例です。
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda2
UUID=c00d997e-3b71-4e59-89fc-aa47d478cd33 / ext4 rw,relatime,data=ordered 0 1
# /dev/sda1
UUID=2A0A-CBEA /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2
なお、genfstab
の-U
オプションは、パーティションを/dev/sda1
のようなデバイス名ではなく、UUID=2A0A-CBEA
のようなUUIDで指定することを意味します。/dev/sda1
などのデバイス名は、新しい周辺機器の接続などといったなにかのはずみで別のパーティションやデバイスに代わってしまい、ブートできないトラブルが発生することがあります。UUIDでパーティションを指定すればそうしたトラブル発生を防げます。
ブートローダーの設定
インストールしたLinuxなどのOSをブートするためには、ブートローダーの設定が必要です。Linuxでのブートローダーの設定にはGRUBが用いられることが一般的でした。しかし最近は、ブートモードがUEFIの場合にはsystemdに含まれるsystemd-bootも多く用いられています。
ここでは、systemd-bootを用いてブートローダーを設定します。
arch-chrootの実行
arch-chroot
を実行してchrootし、/
(ルートディレクトリー)を/mnt
にします。
root@archiso ~ # arch-chroot /mnt
chrootにより、/mnt
、すなわちドライブにインストールされた設定が用いられるようになります。一方で、今まで使っていたインストールメディアのプログラムやデータにはアクセスできなくなります。たとえば、ここまで使ってきたpacstrap
やgenfstab
、arch-chroot
はドライブにはインストールされていないため、使えなくなります。
chrootは、今回のようなインストール時のほか、システム復旧時にも用いられます。また、ftpやDNSなどのセキュリティを確保するために用いられる場合もあります。さらに、近年多く用いられているDockerはchrootを進化させたものでもあります。
systemd-bootのインストール
bootctlは、systemd-bootを用いたブートローダー管理に用いるコマンドです。bootctl install
でsystemd-bootのブートローダーをEFIシステムパーティションにインストールします。
[root@archiso /]# bootctl install
Created "/boot/EFI".
Created "/boot/EFI/systemd".
Created "/boot/EFI/BOOT".
Created "/boot/loader".
Created "/boot/loader/entries".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/boot/EFI/systemd/systemd-bootx64.efi".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/boot/EFI/BOOT/BOOTX64.EFI".
Created EFI boot entry "Linux Boot Manager".
ローダーの設定
systemd-bootを用いる場合、/boot/loader/loader.conf
ファイルでローダーを設定します。ローダーでは、ブート時に表示されるブートメニュー画面について設定します。viなどのテキストエディタで、/boot/loader/loader.conf
を次のように編集し、保存します。
default arch
timeout 3
editor no
この設定では、デフォルトで選択されるローダーエントリーをarch
にしています。ブート時に、対応するローダーエントリーファイルarch.conf
が/boot/loader/entries
ディレクトリーにあることが必要になります。
timeout
は、ブートメニュー画面が表示される秒数を指定します。timeout=0
とすると、Spaceキーを押さないとブートメニュー画面が表示されなくなります。
editor
は、ブートメニュー画面でカーネルパラメーターの編集ができるかどうかを指定します。セキュリティのため、editor=no
が強く推奨されています。
ローダーエントリの追加
ローダーの設定に対応するローダーエントリーファイル/boot/loader/entries/arch.conf
を作成します。
このファイルでは、title
でOS(Linuxディストリビューション)などの名前、linux
でlinuxファイル、initrd
で起動時に用いられるRAMディスクファイルを指定し、さらにoptions
でルートファイルシステム/dev/sda2
を指定します。linuxファイル、RAMディスクファイル、ルートファイルシステムの設定は、Linuxをブートするために必須です。
linuxファイルとRAMディスクは、pacstrapの実行のなかでlinuxパッケージがインストールされるときに/boot
ディレクトリに作成されます。また、ローダーエントリーファイルでは/boot
は/
と記述します。
実在するlinuxファイルのパスを、sedで/boot
から/
に置換し、ローダーエントリーファイルに入力します。
[root@archiso /]# ls /boot/vmlinuz-linux | sed s~/boot~~ >/boot/loader/entries/arch.conf
実在するRAMディスクファイルのパスを、sedで/boot
から/
に置換し、ローダーエントリーファイルに追加入力します。
[root@archiso /]# ls /boot/initramfs-linux.img | sed s~/boot~~ >>/boot/loader/entries/arch.conf
options
でのルートファイルシステム/dev/sda2
の指定では、/etc/fstab
と同様の理由でUUIDを用います。/dev/sda2
のUUIDをローダーエントリーファイルに入力します。
blkidは、ドライブなどのデバイス情報をさまざまな形式で出力します。-o export
は行ごとに「<設定項目>=<設定値>」の出力形式を指定するオプションです。blkid
コマンドではほかの情報も出力されるので、パイプとgrepで絞り込みます。^UUID
は、行の先頭が「UUID」ではじまることをあらわす正規表現です。
[root@archiso /]# blkid -o export /dev/sda2 | grep ^UUID >>/boot/loader/entries/arch.conf
その結果、ローダーエントリーファイル/boot/loader/entries/arch.conf
は次のようになります。UUID
は、/etc/fstab
のルートファイルシステムに指定したのと同じ値です。
/vmlinuz-linux
/initramfs-linux.img
UUID=c00d997e-3b71-4e59-89fc-aa47d478cd33
このファイルをテキストエディタで編集し、titleの行を追加するとともに、入力されている内容がlinux、initrd、optionsの設定値になるように編集し、保存してください。optionsでのルートファイルシステムの指定では、パーティションを読み書き可能な状態にすることを表すrwを追加します。
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=UUID=c00d997e-3b71-4e59-89fc-aa47d478cd33 rw
bootctl list
コマンドでローダーとローダーエントリーの設定が正しく反映されているかどうかを確認できます。ただし、linuxやinitrdのファイルやoptionsのUUIDが実在するかどうかはチェックされません。
[root@archiso /]# bootctl list
Available boot entries:
title: Arch Linux (default)
linux: /vmlinuz-linux
initrd: /initramfs-linux.img
options: root=UUID=c00d997e-3b71-4e59-89fc-aa47d478cd33 rw
rootユーザーのパスワード設定
passwd
コマンドで、rootユーザーのパスワードを設定します。パスワードが設定されていないと、再起動後にArch Linuxにログインできなくなります。
[root@archiso /]# passwd
同じパスワードを2回入力して、設定します。再起動後はこのパスワードを使ってrootユーザーとしてログインします。
New password:
Retype new Password:
パスワードが設定されると、次のメッセージが表示されます。
passwd: Password updated successfully
インストールの終了と再起動
arch-chrootの終了
ブートローダーの設定が完了したら、exit
コマンドでchrootを終了します。
[root@archiso /]# exit
作業記録の終了
script
コマンドで作業を記録していた場合は、もういちどexit
コマンドを実行して終了します。
[root@archiso /]# exit
Script done, file is typescript
作業記録ファイルのドライブへのコピー
作業を記録していた場合は、記録していたファイルをドライブにコピーします。ここでは、ドライブの/root
ディレクトリーにarch_linux_install.log
というファイル名で保存されるようにしています。
[root@archiso /]# cp typescript /mnt/root/arch_linux_install.log
コピーしないと、コンピューターを再起動したときに作業記録はなくなります。
再起動
コンピューターを再起動します。
[root@archiso /]# reboot
起動が開始するまでに、インストールメディアを取り外してください。
インストールに成功していて正常に起動できた場合は、Arch Linuxのログイン画面が表示されます。
ここまでの手順できちんと設定ができている場合、archlinux login:
にroot
、Password:
に設定したパスワードを入力することでログインできます。お疲れ様でした! QEMU/KVMやVirtualBoxの場合、この時点でスナップショットを作成しておくのもいいと思います。
うまくいかなかった場合は、作業記録などをもとに原因を探ってください。
インストール後の作業
ここまでの作業では、通常はインストール時に行うさまざまな設定を省略しています。参考資料などをもとに、環境や用途に応じた設定をしてください。多くの場合、時間や言語などの設定と、ユーザーの作成、ネットワークの設定と設定は必要になるでしょう。
-
ロケールとキーボードの設定
- キーボードレイアウトの設定
- ロケールの設定
-
日時の設定
- タイムゾーンの設定
- NTPサーバーとの同期の設定
- ユーザーの作成と設定
- ユーザーの作成
useradd -m -G wheel <username>
- sudoの設定
visudo
- rootユーザーのロック
- ユーザーの作成
- ホスト名の設定
hostnamectl set-hostname <hostname>
- ネットワークの設定
- systemd-networkdの設定と起動
- systemd-resolvedの設定と起動
- swapの設定
- sshのインストールと設定
- デスクトップ環境の設定
- X Window Systemのインストールと設定
- デスクトップ環境のインストールと設定
- フォントの設定
- 日本語入力システムのインストールと設定
- LTS版カーネルのインストールと設定
Arch LinuxなどのOSのインストールとシステム設定の作業は、モジュール化することを提案します。モジュール化とは、複雑なものごとを、一連のものごとに分割して考えることを意味し、プログラム作成時などに特に重要な考え方です。インストール作業はモジュール化することで、作業の理解と効率化につながるはずです。ここまで述べた最小限インストールの手順が、モジュール化のよい道しるべになってほしいです。
参考資料
Arch Linuxインストール時に真っ先に参照すべきは、ArchWikiにあるインストールガイドです。
ほかにも、ブログなどにArch Linuxのインストールについての記事があります。私は、次の記事が役立ちました。
- Arch LinuxをUEFI + GPT環境にインストールする - クロの思考ノート
- Arch Linuxのインストール後の環境設定まとめ - クロの思考ノート
- Arch Linux の KVM へのインストール
- Arch Linux で KVM/qemu (環境構築から VM の作成まで) - 私をペロペロするがよい
Qiitaの記事
Qiita上にも、すでに多くの解説記事があります。私は特に、1. が役立ちました。
- VirtualBoxにArchLinuxをインストールする
- arch linux + LVM + UEFI + GPT なインストール手順
- ArchLinuxをGPTなUEFIのGRUBで起動する
- Arch Linux インストール俺々式完全版
- ArchLinuxのインストール(3つのブート方式ごとの設定)
- ArchLinuxを久々にインストールしたらハマった話
まとめ
今回実行したコマンドをまとめると、次のようになります。
script
gdisk /dev/sda
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
mount /dev/sda2 /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
vi /etc/pacman.d/mirrorlist
pacstrap /mnt linux
genfstab -U /mnt >>/mnt/etc/fstab
arch-chroot /mnt
bootctl install
vi /boot/loader/loader.conf
ls /boot/vmlinuz-linux | sed s~/boot~~ >/boot/loader/entries/arch.conf
ls /boot/initramfs-linux | sed s~/boot~~ >>/boot/loader/entries/arch.conf
blkid -o export UUID /dev/sda2 | grep ^UUID >>/boot/loader/entries/arch.conf
vi /boot/loader/entries/arch.conf
passwd
exit
exit
cp typescript /mnt/root/arch_linux_install.log
reboot