Arch Linux インストールガイド（Dell XPS13 9340向け）

このガイドでは、Dell XPS13 9340 (2024)にArch Linuxをインストールする手順を詳しく説明します。各ステップで必要なコマンドと設定を示し、説明を日本語で提供します。とりあえず、現時点までの覚書ですが、随時更新します。

目次

1. [BIOS設定](#bios設定)
2. [Arch Linux インストールメディアの起動](#arch-linux-インストールメディアの起動)
3. [ネットワーク接続](#ネットワーク接続)
4. [ディスクのパーティショニング](#ディスクのパーティショニング)
5. [ファイルシステムの作成とマウント](#ファイルシステムの作成とマウント)
6. [ミラーリストの更新](#ミラーリストの更新)
7. [ベースシステムのインストール](#ベースシステムのインストール)
8. [システムの基本設定](#システムの基本設定)
9. [ブートローダのインストールと設定](#ブートローダのインストールと設定)
10. [ユーザーの作成と権限設定](#ユーザーの作成と権限設定)
11. [ネットワークの設定](#ネットワークの設定)
12. [デスクトップ環境のインストール](#デスクトップ環境のインストール)
13. [日本語入力とフォントの設定](#日本語入力とフォントの設定)
14. [その他の設定](#その他の設定)
15. [プリンター設定](#プリンター設定)
16. [その他のアプリインストール](#その他のアプリインストール)

---

## BIOS設定
Arch Linuxをインストールする前に、BIOS設定を以下のように変更します。
    - SATA Operation を AHCI に設定します。
    - BIOSメニューで [System Configuration] → [SATA Operation] を選択し、[Advanced Host Controller Interface (AHCI)] を選択します。
    - Secure Boot を無効化します。
    - BIOSメニューで [Secure Boot] → [Secure Boot Enable] を選択し、[Disabled] に設定します。

## Arch Linux インストールメディアの起動
公式のArch LinuxインストールISOをダウンロードし、USBメモリに書き込みます。USBメモリから起動し、Arch Linuxのインストール環境に入ります。

## ネットワーク接続
Wi-Fiへの接続 インストール環境でWi-Fiを使用する場合、iwd を使用して接続します。
```
    # iwctl
    [iwd]# device list
    [iwd]# station <デバイス名> scan
    [iwd]# station <デバイス名> get-networks
    [iwd]# station <デバイス名> connect <SSID>
    [iwd]# exit
    
    <デバイス名> は通常 wlan0 などです。
    <SSID> は接続したいWi-Fiネットワークの名前です。
```
    
## ディスクのパーティショニング
ディスクの確認やパーティションの作成手順です。
```
    // ディスクの確認 インストール先のディスクを確認します。通常、NVMeディスクは /dev/nvme0n1 として表示されます。
    # lsblk
    
    // パーティションの作成 gdisk を使用してGPTパーティションテーブルを作成します。
    # gdisk /dev/nvme0n1
    
    // EFIシステムパーティションの作成
    Command (? for help): n
    Partition number (1-128, default 1): <Enter>
    First sector (...): <Enter>
    Last sector or +size{K,M,G,T,P} (...): +512M
    Hex code or GUID (L to show codes, Enter = 8300): ef00
    
    // ルートパーティションの作成
    Command (? for help): n
    Partition number (2-128, default 2): <Enter>
    First sector (...): <Enter>
    Last sector (...): <Enter>
    Hex code or GUID (...): 8300
    
    // 変更の書き込み
    Command (? for help): w
    
    注：これでパーティションテーブルがディスクに書き込まれます。
```

## ファイルシステムの作成とマウント
ファイルシステムの作成およびマウントポイントの設定について説明します。
```
    // ファイルシステムの作成 EFIシステムパーティションのフォーマット
    # mkfs.fat -F32 /dev/nvme0n1p1
    
    // Btrfsファイルシステムの作成
    # mkfs.btrfs /dev/nvme0n1p2
    
    //サブボリュームの作成 ルートパーティションを一時的にマウントします。
    # mount /dev/nvme0n1p2 /mnt
    
    // サブボリュームを作成します。
    # btrfs subvolume create /mnt/@
    # btrfs subvolume create /mnt/@home
    
    // マウントポイントを再設定します。
    # umount /mnt
    
    # mount -o noatime,compress=zstd,subvol=@ /dev/nvme0n1p2 /mnt
    # mkdir /mnt/home
    # mount -o noatime,compress=zstd,subvol=@home /dev/nvme0n1p2 /mnt/home
    
    // EFIパーティションのマウント
    # mkdir /mnt/boot
    # mount /dev/nvme0n1p1 /mnt/boot
```
    
## ミラーリストの更新
日本の高速なミラーサーバーを使用するための設定手順です。
```
    // 日本の高速なミラーサーバを使用するように設定します。
    # reflector --country Japan --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
    
    注：reflector がインストールされていない場合は、pacman -Sy reflector でインストールします。
```
    
## ベースシステムのインストール
必要なパッケージのインストールおよびfstabの生成について解説します。
```
    // パッケージのインストール
    
    # pacstrap /mnt base linux linux-firmware intel-ucode btrfs-progs networkmanager
    
    注：必要に応じて他のパッケージを追加できます。
    
    // ファイルシステムテーブルの生成
    # genfstab -U /mnt >> /mnt/etc/fstab
```

## システムの基本設定
```
    // chroot環境に入る
    # arch-chroot /mnt
    
    // タイムゾーンの設定
    # ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
    # hwclock --systohc
    
    // ロケールの設定 /etc/locale.gen を編集し、以下の行のコメントを外します。
    en_US.UTF-8 UTF-8
    ja_JP.UTF-8 UTF-8
    
    // ロケールを生成します。
    # locale-gen
    # echo "LANG=ja_JP.UTF-8" > /etc/locale.conf
    
    // キーボードレイアウトの設定（オプション）
    // 日本語キーボードを使用している場合、/etc/vconsole.conf を作成します。
    # echo "KEYMAP=jp106" > /etc/vconsole.conf
    
    // ホスト名の設定
    # echo "arch-xps13" > /etc/hostname
    
    // /etc/hosts を設定します。
    
    # cat << EOF > /etc/hosts
    127.0.0.1   localhost
    ::1         localhost
    127.0.1.1   arch-xps13.localdomain arch-xps13
    EOF
    
    // ルートパスワードの設定
    # passwd
    
    // 初期RAMディスクの生成
    # mkinitcpio -P
```

## ブートローダのインストールと設定
systemd-bootを利用したブートローダの設定手順です。
```
    // systemd-bootのインストール
    # bootctl install
    
    // ブートローダの設定 /boot/loader/loader.conf を編集します。
    ===
    default  arch
    timeout  5
    editor   no
    console-mode 1
    ===
    
    // ブートエントリの作成 /boot/loader/entries/arch.conf を作成します。
    ===
    title   Arch Linux
    linux   /vmlinuz-linux
    initrd  /intel-ucode.img
    initrd  /initramfs-linux.img
    options root=/dev/nvme0n1p2 rootflags=subvol=@ rw transparent_hugepage=never zswap.enabled=0 elevator=noop nvme_core.default_ps_max_latency_us=0 scsi_mod.use_blk_mq=1 quiet loglevel=3 nmi_watchdog=0 scsi_mod.use_blk_mq=1 i2c_i801.disable_features=0x10
    ===
    注：blkid -s PARTUUID -o value /dev/nvme0n1p2 コマンドでルートパーティションのPARTUUIDを取得します。
    
    // systemd-bootの自動更新設定
    # mkdir -p /etc/pacman.d/hooks
    # cat << EOF > /etc/pacman.d/hooks/100-systemd-boot.hook
    [Trigger]
    Type = Package
    Operation = Upgrade
    Target = systemd
    Target = systemd-libs
    Target = systemd-bootctl
    
    [Action]
    Description = Updating systemd-boot...
    When = PostTransaction
    Exec = /usr/bin/bootctl update
    EOF
```

## ユーザーの作成と権限設定
新規ユーザーの作成およびsudoの設定手順について説明します。
```
    // ユーザーの追加
    # useradd -m -G wheel -s /bin/bash <ユーザー名>
    # passwd <ユーザー名>
    
    // sudoの設定
    
    visudo コマンドでsudoersファイルを編集します。
    # visudo
    
    // 以下の行のコメントを外します。
    
    %wheel ALL=(ALL) ALL
```

## ネットワークの設定
NetworkManagerを利用してネットワークを有効化する方法を解説します。
```
    // NetworkManagerの有効化
    # systemctl enable NetworkManager
    
    注：再起動後、自動的にネットワークが管理されます。
```

## デスクトップ環境のインストール
GNOME環境および関連ツールのインストール手順です。
```
    // 必要なパッケージのインストール
    // X
    # pacman -S --needed xorg-xwayland xorg-xlsclients glfw-wayland
    // Gnome
    # pacman -S --needed gnome gnome-tweaks  gnome-nettool gnome-usage gnome-multi-writer adwaita-icon-theme xdg-user-dirs-gtk fwupd arc-gtk-theme networkmanager
    // GDM
    # pacman -S --needed gdm
    
    // GDMの有効化
    # systemctl enable gdm
```

## 日本語入力とフォントの設定
日本語入力システムやフォントの設定方法について解説します。
```
    // フォントのインストール
    # pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji ttf-hack ttf-jetbrains-mono
    
    //日本語入力システムのインストール

    # pacman -S fcitx5-im fcitx5-mozc fcitx5-configtool

    //環境変数の設定 /etc/environment に以下を追加します。
    ==
    GTK_IM_MODULE=fcitx5
    QT_IM_MODULE=fcitx5
    XMODIFIERS=@im=fcitx5
    ==
```
    日本語入力には下記の設定を行う
    - 「Fcitx Confuguration」-「Input　Method」の「Current Input　Method」に「Mozk」を追加
    - 「Fcitx Confuguration」-「Global Config」の「Hotkey」で「Trigger Input Method」キーを「CTRL + ESCAPE」に変更


## その他の設定
AURヘルパーやBluetooth設定など、追加の便利な設定を紹介します。
```
    // AURヘルパーのインストール（paru） ユーザーアカウントでログインし、git を使用して paru をインストールします。
    $ sudo pacman -S --needed base-devel git
    $ git clone https://aur.archlinux.org/paru.git
    $ cd paru
    $ makepkg -si

    // オーディオの設定
    sudo pacman -S pipewire pipewire-alsa pipewire-pulse pipewire-jack wireplumber
    sudo systemctl --user enable --now pipewire pipewire-pulse wireplumber
    sudo systemctl daemon-reload
    sudo systemctl --user daemon-reload
    journalctl --user -u pipewire.service -b

    // Bluetoothの設定
    # pacman -S bluez bluez-utils
    # systemctl enable bluetooth
    
    // スワップ領域の設定
    paru zramd
    # systemctl enable --now zramd
```
    
## プリンター設定
プリンターの設定手順を説明します。
```
    sudo pacman -S avahi nss-mdns
    sudo systemctl enable --now avahi-daemon.service
    
    vim /etc/nsswitch.conf 
    ==
    hosts: files mymachines mdns_minimal [NOTFOUND=return] dns mdns
    ==
    
    $ lpinfo -v
    
    sudo lpadmin -p home_epson -E -v "dnssd://EPSON%20EP-882A%20Series._ipp._tcp.local" -m everywhere
```

## その他のアプリインストール
便利なツールやユーティリティのインストール手順を紹介します。
```
# 基本的な圧縮ユーティリティ
paru -S --needed \
    zip \
    unzip \
    unrar \
    p7zip \
    lzop \
    lrzip \
    tar \
    bzip2 \
    gzip \
    xz \
    zstd \
    lz4 \
    lzip \
    arj \
    unarj \
    unarchiver \
    pigz \
    pbzip2

# 基本的なシステムユーティリティ
paru -S --needed \
    base-devel \
    mlocate \
    tree \
    wget \
    curl \
    rsync \
    strace \
    lsof \
    htop \
    iotop \
    ncdu \
    duf \
    bat \
    exa \
    fd \
    ripgrep \
    fzf \
    tmux \
    screen \
    mc \
    ranger

# テキスト処理・編集ツール：
paru -S --needed \
    vim \
    sed \
    awk \
    grep \
    jq \
    yq \
    gawk \
    dos2unix \
    unix2dos

# ネットワークツール：
paru -S --needed \
    net-tools \
    bind \
    whois \
    traceroute \
    nmap \
    wireshark-qt \
    tcpdump \
    iperf \
    mtr \
    speedtest-cli \
    nethogs \
    ethtool \
    inetutils \
    openssh

# システム診断・モニタリング：
paru -S --needed \
    sysstat \
    glances \
    bpytop \
    powertop \
    acpi \
    lm_sensors \
    stress \
    inxi \
    neofetch \
    hwinfo \
    dmidecode \
    smartmontools

# 開発関連ツール：
paru -S --needed \
    git \
    clang \
    gcc \
    gdb \
    make \
    cmake \
    pkgconf \
    autoconf \
    automake \
    yarn \
    npm

# マルチメディアツール：
paru -S --needed \
    ffmpeg \
    imagemagick \
    exiftool \
    mediainfo \
    handbrake

```