2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ArchLinux Simple Install

Posted at

対象

  • 手元に降ってきたPCを最低限しっかり動く状態にしたい人
  • 手頃なサーバを建ててみたい人
  • ArchLinux Install Battleにさくっとケッチャコつけたい人

目的

内蔵メディアから起動できる状態にする
ウィンドウマネージャは(まだ)入れない

検証環境

  • UEFI仮想環境(qemu)
  • 日本語配列キーボード

手順

ライブ環境の起動

https://archlinux.org/download からisoをダウンロードしてUSBフラッシュに書き込む
電源ボタン押下直後からF10等を連打してブートメニューを表示
UEFI: USB等を選択してUSBフラッシュからUEFIで起動

キーマップ読込

現在のキーボードが日本語配列であることをシステムに知らせる

loadkeys jp106

WiFi接続

WiFi経由でネットワークに接続する
LANケーブルでも良し

iwctl
station wlan0 connect SSID
exit

パーティション構築

起動に必要なデータの入るEFIパーティションとそれ以外のデータの入るルートパーティションを作成する

lsblkで現状確認

NAME  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0   7:0    0 794.4M  1 loop /run/archiso/airootfs
sda     8:0    0    32G  0 disk 
sr0    11:0    1   1.1G  0 rom  /run/archiso/bootmnt

パーティション切り

cfdiskでパーティションを切る
2つのパーティションを作成し、それぞれ用途に合ったtypeを設定する
例では/dev/sdaだが、ほとんどのPCは/dev/nvme0n1のはず

cfdisk /dev/sda
  • GPTフォーマットを選択
  • EFIパーティションの作成 [ New ] size: 550MB, type: EFI Partition
  • ルートパーティションの作成 [ New ] size: 任意 type: Linux Filesystem
  • 変更の適用 [ Write ] yes
  • [ Quit ]

lsblkで現状確認

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0 794.4M  1 loop /run/archiso/airootfs
sda      8:0    0    32G  0 disk 
 ├─sda1   8:1    0   550M  0 part 
 └─sda2   8:2    0  31.5G  0 part 
sr0     11:0    1   1.1G  0 rom  /run/archiso/bootmnt

フォーマット

作成したパーティションをフォーマット、つまりファイルシステムの初期化を行うことでOSの記憶領域として使えるようにする

EFIパーティションをFAT32でフォーマット
以後sda1,sda2は適宜読み替えて

mkfs.fat -F32 /dev/sda1
mkfs.fat 4.2 (2021-01-31)

ルートパーティションをbtrfsでフォーマット
既存のデータがある場合は-fを付ける必要がある

mkfs.btrfs /dev/sda2 
btrfs-progs v6.10.1
See https://btrfs.readthedocs.io for more information.

Performing full device TRIM /dev/sda2 (31.46GiB) ...
NOTE: several default settings have changed in version 5.15, please make sure
      this does not affect your deployments:
      - DUP for metadata (-m dup)
      - enabled no-holes (-O no-holes)
      - enabled free-space-tree (-R free-space-tree)

Label:              (null)
UUID:               0d61db70-6f59-4228-b520-fa9af06a91c3
Node size:          16384
Sector size:        4096	(CPU page size: 4096)
Filesystem size:    31.46GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP             256.00MiB
  System:           DUP               8.00MiB
SSD detected:       no
Zoned device:       no
Features:           extref, skinny-metadata, no-holes, free-space-tree
Checksum:           crc32c
Number of devices:  1
Devices:
   ID        SIZE  PATH     
    1    31.46GiB  /dev/sda2

マウント

作成したパーティションを現在の環境から操作するためマウントする

mount /dev/sda2 /mnt
mount --mkdir /dev/sda1 /mnt/boot 

lsblkで現状確認

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0 794.4M  1 loop /run/archiso/airootfs
sda      8:0    0    32G  0 disk 
├─sda1   8:1    0   550M  0 part /mnt/boot
└─sda2   8:2    0  31.5G  0 part /mnt
sr0     11:0    1   1.1G  0 rom  /run/archiso/bootmnt

キーリングの更新

パッケージの整合を取るためのデータベースの更新を行う
古いisoを使っている場合、この操作無しではパッケージのインストールができない

pacman -Sy archlinux-keyring
:: Processing package changes...
(1/1) upgrading archlinux-keyring                        [##############################] 100%
==> Appending keys from archlinux.gpg...
==> Disabling revoked keys in keyring...
  -> Disabled 1 key.
==> Updating trust database...
gpg: Note: third-party key signatures using the SHA1 algorithm are rejected
gpg: (use option "--allow-weak-key-signatures" to override)
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   5  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:   5  signed: 102  trust: 0-, 0q, 0n, 5m, 0f, 0u
gpg: depth: 2  valid:  78  signed:  20  trust: 78-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2025-07-01

確認のために適当なパッケージをインストールする

pacman -S brightnessctl

パッケージのインストール

マウントしたパーティションから起動できる状態にするため、必要なパッケージをインストールする

# Intel CPU + Intel GPU Example
pacstrap -K /mnt \
base linux linux-firmware sof-firmware \ # 動作に必要
efibootmgr dosfstools btrfs-progs \ # 記憶領域操作関連
sudo vim git openssh man-db \ # 実質必要なソフト
iwd bluez bluez-utils \ # 無線関連
linux-headers base-devel \ # AURで必要
intel-ucode \
intel-media-driver intel-gpu-tools vulkan-intel

デバイスベンダによって変更する必要があるパッケージ

  • マイクロコード
    • CPUがIntel: intel-ucode
    • CPUがAMD: amd-ucode
  • GPUドライバ
    • GPUがIntel
      • intel-media-driver
      • intel-gpu-tools
      • vulkan-intel
    • GPUがAMD
      • mesa
      • vulkan-radeon

ネットワーク設定のコピー

isoに含まれるネットワーク設定及び現在接続しているWiFiの情報を新規環境にコピーする
設定ファイル無しではWiFiは愚かLANケーブルですらネットワーク接続できない

cp /etc/systemd/network/* /mnt/etc/systemd/network

mkdir /mnt/var/lib/iwd
cp -r /var/lib/iwd/* /mnt/var/lib/iwd

ブートローダのインストール

OSが起動する前に必要なファイル群を読み込むために必要なソフト、ブートローダインストールする
ブートローダにはいくつか選択肢があるが、ここではsystemd-bootを使う
ブートローダのインストールはこの後のchroot環境下で行う方が主流だが、最近のsystemd-bootはarch-chroot下からインストールするとEFIエントリ作成してくれないため、ここで操作を行う

bootctl install --esp-path=/mnt/boot
Created "/mnt/boot/EFI".
Created "/mnt/boot/EFI/systemd".
Created "/mnt/boot/EFI/BOOT".
Created "/mnt/boot/loader".
Created "/mnt/boot/loader/entries".
Created "/mnt/boot/EFI/Linux".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/mnt/boot/EFI/systemd/systemd-bootx64.efi".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/mnt/boot/EFI/BOOT/BOOTX64.EFI".
⚠️ Mount point '/mnt/boot' which backs the random seed file is world accessible, which is a security hole! ⚠️
⚠️ Random seed file '/mnt/boot/loader/.#bootctlrandom-seed93c35ea251aad8ef' is world accessible, which is a security hole! ⚠️
Random seed file /mnt/boot/loader/random-seed successfully written (32 bytes).
Successfully initialized system token in EFI variable with 32 bytes.
Created EFI boot entry "Linux Boot Manager".

fstabの生成

起動時にマウントするパーティションを記述するファイル、fstabをgenfstabを使って生成する

genfstab -U /mnt |tee /mnt/etc/fstab
# /dev/sda2
UUID=0d61db70-6f59-4228-b520-fa9af06a91c3	/         	btrfs     	rw,relatime,discard=async,space_cache=v2,subvolid=5,subvol=/	0 0

# /dev/sda1
UUID=0714-9AD7      	/boot     	vfat      	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro	0 2

chroot

新規環境を起動したときにルートとなる階層に実際にルートを移して、あたかも新規環境を起動したような環境を用意できるコマンド
新規環境の起動に必要な設定、及び起動後に行う設定を行う

arch-chroot /mnt

タイムゾーンの設定

システムが地方時を扱ううえで必要
ちなみにlinuxカーネルが地方時を扱うことはない

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

RTCの同期

PC内部のリアルタイムクロック(RTC)にライブ環境が取得した時刻情報を保存する
ライブ環境は既に裏でネットワークと時刻を同期している
linuxはデフォルトでUTCを書き込むがWindowsはデフォルトでは地方時を書き込む

hwclock --systohc

ロケール生成

システムで表示したい言語のロケールを生成する

vim /etc/locale.gen

iで編集モードに入る
# en_US.UTF-8# ja_JP.UTF-8の頭の#を外す
:wで保存:qで終了

locale-genコマンドでlocale.genファイルにて指定した言語のロケールを生成する

locale-gen
Generating locales...
  en_US.UTF-8... done
  ja_JP.UTF-8... done
Generation complete.

locale.confにて今後使用するロケールを指定する
tty環境で日本語を表示すると豆腐になるので、ウィンドウマネージャを入れる予定がない場合は設定しない方がいい

echo LANG=ja_JP.UTF-8|tee /etc/locale.conf

キーマップとホスト名の設定

$HOST_NAMEにホスト名を入力

echo KEYMAP=jp106|tee /etc/vconsole.conf
echo $HOST_NAME|tee /etc/hostname

ブートローダの設定

ブートローダの更新

chroot前にインストールしたブートローダはisoに含まれているため、iso自体が古い場合はブートローダも古い場合がある

bootctl update

loader.conf

systemd-boot自身の挙動を設定する

vim /boot/loader/loader.conf

内容は以下

default arch.conf
timeout 3
console-mode keep
editor no

ブートエントリの作成

起動に用いるファイルやオプションを設定する
systemd-bootで用意されている例をコピーして一部をsedで書き換える

export $(blkid -o export /dev/sda2)
sed -e"/#.*/d" \
-e"s/root=.*/root=UUID=$UUID rw/" \
/usr/share/systemd/bootctl/arch.conf |\
tee /boot/loader/entries/arch.conf

ユーザ設定

rootアカウントのパスワード設定

passwd

ユーザアカウントの作成

$USER_NAMEにアカウント名を入力
wheelグループに入れてsudoできるようにする

useradd -m -g wheel $USER_NAME

ユーザアカウントのパスワード設定

$USER_NAMEにアカウント名を入力

passwd $USER_NAME

sudoers

wheelグループのメンバがsudoできるようにする

sudoedit /etc/sudoers

# Defaults env_keep += "HOME"# %wheel ALL=(ALL:ALL) ALLの頭の#を外す

resolv.confの設定

DNSとして機能させるsystemd-resolvedがresolv.confに干渉できるよう設定する

umount /etc/resolv.conf
ln -sf \
/run/systemd/resolve/stub-resolv.conf \
/etc/resolv.conf

各種デーモンの有効化

次回起動時から必要なデーモンが実行されるようにする

systemctl enable \
systemd-networkd \
systemd-resolved \
systemd-timesyncd \
iwd bluetooth

chrootを抜けて再起動する

exit
reboot
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?