こんにちは!
今回はArch LinuxをノートPCにインストールしたので、手順とポイントを備忘録として残しておこうと思います。

今まではManjaro Linuxを使用していたのですが、色々いじくっていたら起動できなくなりまして…(笑)
日々勉強ということで、今回はArch Linuxに挑戦です!

【目次】

スポンサーリンク




参考にしたサイト

Arch Linuxは公式wikiがとても充実しているので、まずはwikiを見てみるといいと思います。
Arch wiki: https://wiki.archlinux.org/index.php/installation_guide

以下は、その他参考にさせていただいたサイトです。
Qiita: https://qiita.com/TsutomuNakamura/items/b60518f8788e5e998744
クロの思考ノート: http://note.kurodigi.com/archlinux-uefi-install/
普段使いのArch Linux: https://www.archlinux.site/2016/03/arch-linux-uefi-gpt-xfs.html

Arch Linuxのインストール

今回は、UEFI+GPT環境にインストールを行っていきます。
ブートローダーにはGRUBを選択しました。

isoをダウンロード

まずは以下のサイトからお好みのサーバを選択し、isoファイルをダウンロードしてきます。( “archlinux-2020.06.01-x86_64.iso”みたいなファイルです )

日本のサーバ一覧: https://www.archlinux.jp/download/

Boot USBを作成

次にBoot USBを作成します。
Windowsマシンで作成する場合は、”Rufus”が有名かなと思います。

以下のサイトから最新バージョンをダウンロードしてください。
Rufus: https://rufus.ie/

ダウンロードが完了したらRufusを起動し、
USB, isoファイル, パーティション構成を選択します。

今回はUEFI+GPT環境にインストールする予定なので、パーティション構成には”GPT”を選択してください。

次に、スタートをクリックすると書き込み方法を聞かれます。
通常はISOイメージとして書き込んで問題ないですが、上手く起動できない環境ではDDイメージとして書き込むと上手くいきます。

keymapを設定

無事に起動出来たら、CLIが表示されていると思います。
まずは、操作しやすいようにキーマップを変更します。

# loadkeys jp106

その他のkeymapを使用したい場合は、
“/usr/share/kbd/keymaps/”に一覧があります。

インターネットへ接続

後々システムクロックの更新や、パッケージのインストールを行うため、インターネットに接続できるようにしておきます。

まずは有効なインターフェイスを確認します。

# ip link

1: lo:<LOOPBACK,UP,LOWER_UP>...
2: enp0s25: <...>
3: wlan0: <...>

僕は無線でインターネットに接続したかったので、wlan0に対して設定を行いました。(そこそこ手間なので、有線がおすすめです。)

無線接続

参考: https://wiki.archlinux.jp/index.php/WPA_supplicant

まずは、設定ツールである”wpa_cli”を使用するための準備をします。

# vi /etc/wpa_supplicant/wpa_supplicant.conf
------------------------------
ctrl_interface=/run/wpa_supplicant
update_config=1
------------------------------
# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf

これでwpa_cliが使えるようになります。
対話形式でSSIDとPSK(パスフレーズ)を入力します。

# wpa_cli
>
> add_network
0
> set_network 0 ssid "SSIDを入力"
> set_network 0 psk "パスフレーズを入力"
> enable_network 0

SSIDとPSKが正しければ、successメッセージが表示されるはずです。
設定を保存してツールを終了します。

> save-config
OK
> quit

最後に、DHCPでIPアドレスを取得して完了です。

# dhcpcd wlan0

システムクロックを更新

以下のコマンドでシステムクロックを更新します。

# timedatectl set-ntp true

パーティショニング

参考: https://wiki.archlinux.org/index.php/Partitioning

まずは現在のパーティションを確認してみましょう。
 ※表示は一例です。

# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0  21.9T  0 disk
├─sda1   8:1    0 488.3M  0 part /boot
├─sda2   8:2    0  11.5G  0 part [SWAP]
└─sda3   8:3    0  21.8T  0 part /

今回は既存のパーティションは全部無視して、新たに1から作成します。
次の表ように設計してみました。

パーティション 用途 容量 フォーマット マウント場所
sda1 UEFIブート 512MB FAT32 /boot
sda2 swap 1GB swap
sda3 root 30GB ext4 /
sda4 var 12GB ext4 /var
sda5 home 残り全部 ext4 /home

では、実際にパーティショニングしていきます。
今回は”gdisk”でGPTを操作します。

# gdisk /dev/sda

GPT fdisk (gdisk) version 0.8.6

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y

Command (? for help): n
Partition number : 1
First sector: (未入力でエンター)
Last sector: +512M
Hex code or GUID: ef00  (UEFIブート用なのでef00)

Command (? for help): n
Partition number: 2
First sector: (未入力でエンター)
Last sector: +1G
Hex code or GUID: 8200 (swap用なので8200)

Command (? for help): n
Partition number: 3
First sector: (未入力でエンター)
Last sector: +30G
Hex code or GUID: (未入力でエンター)

Command (? for help): n
Partition number: 4
First sector: (未入力でエンター)
Last sector: (未入力でエンター)
Hex code or GUID: (未入力でエンター)

Command (? for help): w 
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed?: y 
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.

これで作成完了です。

パーティションのフォーマット・マウント

先ほどの表に従って、フォーマットしていきます。

# mkfs.vfat -F32 /dev/sda1
# mkswap /dev/sda2
# swapon /dev/sda2
# mkfs.ext4 /dev/sda3
# mkfs.ext4 /dev/sda4
# mkfs.ext4 /dev/sda5

次に、各ファイルシステムを”/mnt”配下にマウントしていきます。
マウントする前に、”mkdir”でファイルを作成する必要があるので注意してください。

# mount /dev/sda3 /mnt (rootをマウント)
# mkdir /mnt/var
# mount /dev/sda4 /mnt/var
# mkdir /mnt/home
# mount /dev/sda5 /mnt/home
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot

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

インストール完了後に必要な初期パッケージをインストールしていきます。

ここでは、基本的なパッケージ(base, base-devel, linux linux-firmware)の他に、GRUB(grub, dosfstools, efibootmgr)や無線関係のパッケージ等をインストールしています。

# pacstrap /mnt base base-devel linux linux-firmware grub dosfstools efibootmgr netctl iw wpa_supplicant networkmanager dialog xfsprogs vi nano

fstabを作成

fstabは、マウントするファイルシステムの情報を記述したファイルです。
“genfstab”を使用して作成できます。

# genfstab -U /mnt >> /mnt/etc/fstab

新システムへ移動(chroot)

ここで、作業場所を新システムに移動します。
Arch Linuxでは”arch-chroot”コマンドが用意されています。

# arch-chroot /mnt /bin/bash

Localeを設定

参考: https://wiki.archlinux.org/index.php/Locale

まずは使用するLocaleを、設定ファイルで有効化(コメントアウト)します。

# vi /etc/locale.gen
----------------------------------------
en_US.UTF-8 UTF-8  ←#を削除。
ja_JP.UTF-8 UTF-8   ←#を削除。

編集が完了したら、Localeを生成します。

# locale-gen

次に、環境変数を設定します。

# echo LANG=en_US.UTF-8 > /etc/locale.conf
# export LANG=en_US.UTF-8 

インストール完了後に日本語設定に戻します。

タイムゾーンを設定

タイムゾーンを日本(東京)に設定し、ハードウェアクロックのズレを調整します。

# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --utc

ホスト名を設定

任意のホスト名を設定します。
まずは、”/etc/hostname”に書き込み。

# echo ホスト名を入力 > /etc/hostname

次に”/etc/hosts”を編集。

# vi /etc/hosts
# Add settings
127.0.0.1 localhost.localdomain localhost ホスト名
::1  localhost.localdomain localhost ホスト名
# End

Rootパスワードを設定

ルートユーザのパスワードを設定します。

# passwd

GRUBをインストール

今回は、ブートローダーとしてGRUBを使用します。
先ほどダウンロードした”grub”を使ってインストールしていきます。

# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck
# mkdir /boot/EFI/boot
# cp /boot/EFI/arch_grub/grubx64.efi /boot/EFI/boot/bootx64.efi
# grub-mkconfig -o /boot/grub/grub.cfg

以上で設定は終了です!
元のシステムに戻り、再起動をしましょう!

# exit
# reload

おわりに

いかがでしたでしょうか?

今回は個人的な備忘録の面が強く、コマンド中心の記事になってしまいました…
機会があればLinuxのシステムについてもっと勉強して、詳しい解説なんかも書けたらいいなと思います(笑)

Ubuntuのようなディストリビューションに比べて、インストールが少し大変ですが、Linuxの勉強にはもってこいだと思いました。

最後までありがとうございました!