https://blog.naskya.net/
Clone
HTTPS:
git clone https://code.naskya.net/repos/wzWnj
SSH:
git clone USERNAME@code.naskya.net:wzWnj
Branches
Tags
6h4tqyyx5xzh.md
これはなに
いつも Arch Linux のインストール方法を忘れてインストールにコケるので、備忘録としてインストール方法を書き残しておきます。かなり殴り書きです。
参考にした記事
私の Arch Linux のインストール方法は以下の 3 つの記事および ArchWiki から大きな影響を受けています。特に、全体の大まかな流れは 1 番目のページ{{< link https://gist.github.com/noghartt/8388f7d8543e3eb1777cb6ed4a3d7807
>}}に準拠しています。しかし、BTRFS の subvolume の構成が少し違ったり、記事に含まれるいくつかの誤りを修正していたりします。
- My Arch Linux installation - systemd-boot + LUKS + LVM + Btrfs + swapfile + xmonad
- Secured Arch Linux Installation
- Ubuntu Desktop 20.04: installation guide with btrfs-luks full disk encryption including /boot and auto-apt snapshots with Timeshift
Arch Linux のインストール
{{}}. Live USB の作成・起動
Ventoy を USB メモリにインストールし、Arch Linux の ISO イメージ をダウンロードして USB メモリに移します。ダウンロードした ISO イメージのチェックサムは必ず確認しましょう。
するとこの USB メモリから Arch Linux のインストール用環境を起動できるようになるので、ブートメニューから Ventoy をインストールした USB メモリのパーティションを選んで Arch Linux のイメージを grub2 モードで起動します。
起動時に、マリオがコインを獲得したときのような効果音が出ます。その後、(BIOS ではなく)UEFI で起動していることを確認するために /sys/firmware/efi/efivars
を確認します。
このディレクトリが存在しなかった場合には起動するモードを間違えているので再起動してやり直しです。
{{}}. 他の環境から SSH 接続
Live USB から起動した環境ではブラウザも何も無いので、コマンドの入力などが不便です{{<note 例えば、このページを開いてコマンドをコピー&ペーストすることができない
>}}。そこで、既に OS がセットアップされている他の PC などから SSH 接続して以降の操作を行います。他の環境が無い場合には仕方ないのでこの工程は飛ばします。
passwd
コマンドを実行し、root パスワードを設定します。このパスワードはここでしか使いません。ip addr
を実行し、ローカルの IP アドレスを確認します。console root@archiso ~ # ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.1.x/24 brd 192.168.1.255 scope global dynamic noprefixroute enp4s0 valid_lft 8476sec preferred_lft 6676sec inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 14063sec preferred_lft 12263sec inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link valid_lft forever preferred_lft forever
この場合には192.168.1.x
がローカル IP アドレスです。- ローカルネットワークの他の環境から SSH 接続します。さっき設定したパスワードを尋ねられます。
sh ssh root@192.168.1.x
{{}}. 基本設定
システムの時刻を更新します。
sh timedatectl set-ntp true
インターネットに接続されていることを確認します。
sh ping -c5 archlinux.org
## {{}}. ディスクの暗号化・マウントlsblk
を実行し、接続されているストレージを確認します。今回は/dev/nvme0n1
に Arch Linux をインストールします。console root@archiso ~ # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 795.7M 1 loop /run/archiso/airootfs sda 8:0 1 28.9G 0 disk ├─sda1 8:1 1 4.8G 0 part │ └─ventoy 254:0 0 1.1G 0 dm ├─sda2 8:2 1 32M 0 part ├─sda3 8:3 1 12G 0 part └─sda4 8:4 1 12G 0 part nvme0n1 259:0 0 3.6T 0 disk
パーティションを作成します。select label type という画面が出たら gpt を選択します。
sh cfdisk /dev/nvme0n1
root@archiso ~ # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 795.7M 1 loop /run/archiso/airootfs sda 8:0 1 28.9G 0 disk ├─sda1 8:1 1 4.8G 0 part │ └─ventoy 254:0 0 1.1G 0 dm ├─sda2 8:2 1 32M 0 part ├─sda3 8:3 1 12G 0 part └─sda4 8:4 1 12G 0 part nvme0n1 259:0 0 3.6T 0 disk ├─nvme0n1p1 259:3 0 500M 0 part └─nvme0n1p2 259:4 0 3.6T 0 part
/dev/nvme0n1p1
が 500 MiB の起動用パーティションで、/dev/nvme0n1p2
がメインのパーティションです。1 つ目の参考記事に従って LUKS でディスクを暗号化し、論理ボリュームを作成します。
sh cryptsetup --hash sha512 --use-random --verify-passphrase luksFormat /dev/nvme0n1p2 cryptsetup open /dev/nvme0n1p2 cryptlvm pvcreate /dev/mapper/cryptlvm vgcreate vg /dev/mapper/cryptlvm lvcreate -l 100%FREE vg -n root
起動用とメインのパーティションをそれぞれ FAT と BTRFS にフォーマットします。
sh mkfs.fat -F32 /dev/nvme0n1p1 mkfs.btrfs -L btrfs /dev/mapper/vg-root
BTRFS の subvolume を作成します。ここでは 1 つ目の参考記事の通りにはせず、3 つ目の参考記事の構成(
@
と@home
)を用います{{< noteそうしないと timeshift を使えないため
>}}。sh mount /dev/mapper/vg-root /mnt cd /mnt btrfs subv create @ btrfs subv create @home cd .. umount /mnt
引き続き、1 つ目の記事を参考に操作していきます。ただし、マウントのオプションから
space_cache
を抜いて、subvolume の名前もさっき作成したものに合わせます。sh SSD_MOUNTS='autodefrag,compress=lzo,discard,noatime,nodev,rw,ssd' mount -o subvol=@,"${SSD_MOUNTS}" /dev/mapper/vg-root /mnt mkdir -p /mnt/{boot,home} mount -o discard,noatime,nodev,noexec,nosuid,rw /dev/nvme0n1p1 /mnt/boot mount -o subvol=@home,nosuid,"${SSD_MOUNTS}" /dev/mapper/vg-root /mnt/home
{{}}. ソフトウェアのインストール
/etc/pacman.conf
を編集し、parallelDownloads
を 20 に変更します。- 基本的なソフトウェアをインストールします。Intel 製 CPU をお使いの場合は
amd-ucode
ではなくintel-ucode
をインストールします。sh pacstrap /mnt base base-devel linux-zen linux-firmware lvm2 amd-ucode btrfs-progs
/etc/fstab/
を生成します。sh genfstab -U /mnt >> /mnt/etc/fstab
- 新しい環境に
chroot
します。sh arch-chroot /mnt
- 基本的なソフトウェアをインストールします。
sh pacman -S helix git dhcpcd reflector zsh
{{}}. タイムゾーンやロケール、ホストの設定
ArchWiki{{<link
https://wiki.archlinux.org/title/Installation_guide
>}} を参考に、タイムゾーンなどを設定します。sh ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime hwclock --systohc helix /etc/locale.gen # en_US.UTF-8 から始まる行をアンコメント helix /etc/pacman.conf # color を有効化し、parallelDownloads を 20 に変更 locale-gen echo 'arch' > /etc/hostname echo 'LANG=en_US.UTF-8' > /etc/locale.conf echo 'KEYMAP=us' > /etc/vconsole.conf
/etc/hosts
を編集します。sh helix /etc/hosts
127.0.0.1 localhost ::1 localhost 127.0.1.1 arch.localdomain arch
ユーザーを追加し、パスワードを設定し、
sudo
コマンドを使えるようにします。sh useradd -mG storage,wheel -s "$(which zsh)" aria passwd aria EDITOR=helix visudo # %wheel ALL=(ALL:ALL) ALL をアンコメント
root
ユーザーのパスワードも設定しておいたほうがいい気がしますが、今のところ設定せずに困ったことがありません。
{{}}. 起動用の設定
1 つ目の記事を参考に操作していきます。
/etc/mkinitcpio.conf
を開き、HOOKS=
から始まる行を以下のように編集します。conf HOOKS=(base systemd autodetect keyboard sd-vconsole modconf block sd-encrypt lvm2 filesystems btrfs)
mkinitcpio
を実行します。sh mkinitcpio -p linux-zen
systemd-boot をインストールします。
sh bootctl install
ブートメニューの設定をします。
sh helix /boot/loader/loader.conf
default arch timeout 10 console-mode max editor no
参考記事の記述が一部間違っているので注意しながら Arch Linux のブートエントリーを作成します。
title Arch Linux linux /vmlinuz-linux-zen initrd /amd-ucode.img initrd /initramfs-linux-zen.img options rd.luks.name=xxxxxxxxxx=cryptlvm rd.luks.options=discard root=/dev/mapper/vg-root resume=/dev/mapper/vg-root rootfstype=btrfs rootflags=subvol=@ rw
ただし、
xxxxxxxxxx
の部分はblkid /dev/nvme0n1p2 -s UUID -o value
の結果に置換します。ドキドキしながら再起動します。
sh exit reboot now
{{}}. 起動後の設定
インターネットに接続できるようにします。
sh sudo systemctl enable --now dhcpcd systemd-resolved ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
AUR ヘルパーをインストールします。
sh git clone https://aur.archlinux.org/paru-bin.git cd paru-bin makepkg -si cd .. rm -rf paru-bin
好きなウィンドウマネージャーをインストールしたり、dotfiles を復元したりします(要追記)。
sh pacman -S xorg-server xorg-xinit xmonad xmonad-contrib echo 'exec xmonad' > ~/.xinitrc mkdir ~/.xmonad # ...
システムのバックアップ用に timeshift を設定します。
sh paru timeshift sudo timeshift-gtk
BTRFS モードにして、定期的に
@
と@home
ボリュームのバックアップを作成させます。ソフトウェアのインストールやアップデートの前に timeshift のバックアップを自動で作成させる pacman hook をインストールします。
sh paru timeshift-autosnap