📑

私的Arch Linuxインストール講座

2022/09/10に公開
5

身内ネタてんこ盛りのArch Linux布教記事を書いたら、Arch LinuxでGoogle検索すると何故か上から5番目ぐらいに出てくるようになってたので、身内ネタを極力削いで書き直したいと思います。

あと、なんか最近archinstallなるものが付属するようになったらしいですが、正直そっちはあまり触ってないので普通のインストール方法で行きます。

そもそもArch Linuxとは?

シンプル、軽量なディストリビューション

Arch Linux のウェブサイトにようこそ。Keep It Simple を標榜する、軽量で柔軟性に優れた Linux® ディストリビューションです。

公式パッケージは x86-64 アーキテクチャに最適化されています。さらに公式パッケージを補足するものとしてコミュニティによって運営されているパッケージリポジトリがあり、日々、その質量ともに成長しています。

Arch Linux の強固なコミュニティは多様かつ助けになり、広範なスキルセットと、それによって Arch を利用していることに誇りを持っています。フォーラムメーリングリストを見て参加してみて下さい。Slack で Arch ユーザーと会話することもできます (誰でも自由に参加できます)。また、Arch について知識を深めたいと考えたのであれば、ArchWiki も覗いてみましょう。

Arch Linux JP Projectより抜粋。

ざっくり言うと、軽量さとシンプルさを売りにしているLinuxディストリビューションです。
その売り文句に疑いなく、インストールディスクから必要なものだけを抜粋してインストールする形式を採用しており、文字通り不要なもの、余計なものは入れない、必要なものだけをインストールする、というスタイルになっています。

また、Arch LinuxはUbuntuなどのディストリビューションとは異なり、ローリングリリースという形式を取っています。
これは、いわゆるメジャーアップデートのようなもの(Ubuntu 20.04→22.04みたいなやつ)が存在せず、更新が必要なパッケージを都度更新していくことによって、段階的にアップデートしていくという形式です。
これの良いところは、大規模な更新が無いので、半永久的にOSを使い続けられるというメリットがあります。

更に、Arch Linuxには標準リポジトリに加え、ユーザーによって運営されるArch User Repository(通称AUR)と呼ばれるものが存在し、標準リポジトリにないパッケージはだいたいそこにあります。

ということで早速インストールしていきます。

布教はもう前述の記事でやったので、手っ取り早くインストールに取り掛かりましょう。
まずはArch Linuxの公式ページのダウンロードリンクからArch Linuxのインストールディスクを落としてきましょう。
日本語版ページもあります。

色々出てきますが、とりあえずarchlinux-[日付]-x86_64.isoってなってるやつをダウンロードすればおkです。

あとはddコマンドなりRufusなりで適当にisoを焼きます。
isoの焼き方に関してはググってください。
すぐ出てきます。
今のArch Linuxのインストールディスクだと800MBぐらいあるので、CDは厳しいですがDVDでも焼けます。
Blu-rayじゃないとディスクにインストールディスクが焼けない最近のWindowsとかmacOSとは大違いですね。

さて、インストールディスクを焼いたら、BIOSなりUEFIなりでブート順の設定を行って起動しましょう。
これも探せば腐るほど出てくる&&環境によって設定箇所が異なるので割愛します。

インストールディスクの起動

起動すると、UEFIかBIOSかで若干表示は異なりますが、上のような表示になると思います。
BIOSの場合はArch Linux install medium (X86_64, BIOS)
UEFIの場合はArch Linux install medium (x86_64, UEFI)
を選択して起動します。

色々出てきますが、しばらく待つと、archisoの画面が立ち上がるはずです。
archisoは、Arch Linuxのインストールに必要な、必要最低限のパッケージが詰まった環境で、ここからインストールを進めていきます。

まず、JISキーボードを使用している場合は

# loadkeys jp106

でキーレイアウトを日本語レイアウトに変更します。

なお、ここからはインターネットに接続されていることを前提とします。
今使っている環境がインターネットに接続されているかは

# ping archlinux.jp

で確認できます。
基本的にはイーサネットケーブルさえ接続されていれば自動的に接続されているはずです。

もし、無線LANを使いたい場合はiwctlを、モバイルネットワーク回線を使いたい場合は、mmcliを利用することでインターネット接続が可能ですが、慣れていないならおすすめはしません。

システムクロックの設定

続けて、システムクロックの設定を行っていきます。

# timedatectl set-ntp true

これでシステムクロックの設定ができました。
正しい時刻になっているかは

# timedatectl status

で確認できます。

パーティションの割当

続けて、Arch Linuxのインストールに使用するパーティションを組んでいきます。

まず、PCに接続されているストレージの一覧を表示します

# lsblk

大抵の場合、ここに表示されるのはsdaとかnvme0n1とかmmcblk0とか、そんなんだと思います。
これは環境によって異なるので要確認。

また、パーティション構成はディスクのパーティションテーブルがMBRかGPTかによって若干異なります。
archisoには標準でfdisk,gdiskのTUIインターフェースであるcfdisk,cgdiskが入っているので、それを使うと楽です。
ディスクがMBRの場合はfdisk、GPTの場合はgdiskを使用します。
もしHDDがまっさらな状態で、パーティションテーブルが作成されていない状態である場合、Legacy BIOSブートであればMBR、UEFIブートであればGPTにするのが良いでしょう。

とりあえず、先程確認したデバイス名を使って

# cgdisk /dev/sda

# cfdisk /dev/sda

などでパーティションを割っていきます。
パーティションの割り方は人それぞれですが、Arch Wikiのインストールガイドの例を示すと以下のようになります。

UEFI GPT

マウントポイント パーティション パーティションタイプ 容量
/mnt/boot /dev/efi_system_partition EFIシステムパーティション 最低300MiB
sawp /dev/swap_partition Linux swap 512MiB以上
/mnt /dev/root_partition Linux x86_64 root (/) 残り容量すべて

BIOS MBR

マウントポイント パーティション パーティションタイプ 容量
sawp /dev/swap_partition Linux swap 512MiB以上
/mnt /dev/root_partition Linux 残り容量すべて

注 : 他のOSがインストールされている場合

Windows等が既にインストールされている場合、EFIシステムパーティションは既にあるはずなので、そこを使っても大丈夫ですが、大抵の場合容量が足りないので、リサイズしておくと後々面倒事が減って良いかもしれません。
また、Ubuntu等をすでにインストールしており、何らかのブートローダーがインストールされている場合、そちらのブートローダーを使用してOSをブートしたほうが良いでしょう。
そのような場合は、この先のbootパーティションのマウントを飛ばして、該当のブートローダーを管理しているOS側で設定してください。

今回は、以下のようなパーティション構成になりました。
以後、下記構成の元で勧めていくので、各自の構成に合わせて都度該当部分は書き換えていってください。

マウントポイント パーティション パーティションタイプ
/mnt/boot /dev/sda1 EFIシステムパーティション
/mnt /dev/sda2 Linux x86_64 root
swap /dev/sda3 Linux swap

パーティションの作成を終えたら、パーティションのフォーマットをしていきます。
既に何らかのOSがインストールされており、EFIシステムパーティションが既に存在している場合は、EFIシステムパーティションのフォーマットは不要です。

# mkfs.fat -F 32 /dev/sda1
# mkfs.ext4 /dev/sda2
# mkswap /dev/sda3

続けて、フォーマットしたパーティションをマウントしていきます。

# mount /dev/sda2 /mnt
# mount --mkdir /dev/sda1 /mnt/boot
# swapon /dev/sda3

これで、パーティション周りの設定は一旦完了です。
続けて、インストールへ進んでいきましょう。

インストール

ということでようやくOS本体をインストールしていきます。
archisoはデフォルトで、reflectorが自動的に速度が早く同期頻度の高いミラーを設定するようになっていますが、最近同期された直近20個から並べ替えるという性質上、近隣のミラーとは言い難いので、日本国内のミラーを優先するように変更します。

※正直かなり変なやり方だと思うので、もう少しスマートな方法とかあったら教えてほしいです。

2023/03/20追記 : ちょっと書き換えました

# cat /etc/pacman.d/mirrorlist | cat <(curl -s "https://archlinux.org/mirrorlist/?country=JP" | sed -e 's/^#Server/Server/') - > /etc/pacman.d/mirrorlist

上記を実行したら、/etc/pacman.d/mirrorlistを開いて、Japanの下にあるServer先頭にあるコメントアウト(#)を外します。

# vim /etc/pacman.d/mirrorlist

続けて、必要パッケージ群をインストールしていきます

# pacstrap /mnt base base-devel linux linux-firmware linux-headers

今回は雑にbasebase-devellinuxlinux-firmwarelinux-headers
の5つをインストールしましたが、必要に応じて変更しても良いです。
たとえば、LTS版のLinuxカーネルを使いたければlinuxlinux-ltsに置き換えるなど。
公式リポジトリに存在しているカーネルの一覧はArch Wikiのカーネルから確認できます。

システム設定

ということで基本パッケージのインストールが終わったので、続けてシステム周りの設定をしていきます。
まずはfstabを生成します。
fstabは、パーティション情報等が書き込まれているファイルで、起動時にどのパーティションをマウントするかなどを指定します。

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

続けて、インストールしたシステムにchrootで入ります

# arch-chroot /mnt

chroot環境に入ったら、タイムゾーンの生成を行います。
今回は日本に住んでいることを前提にすすめていくので、東京を設定します。

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

続けて、ハードウェアクロックの設定を書き込みます。

# hwclock --systohc

注 : Windowsとのデュアルブート環境の場合

ここでは、ハードウェアクロックがUTCに設定されていることを前提として設定していますが、確かWindowsはデフォルトでハードウェアクロックの設定がUTCではなかったはずなので、その場合はWindows側のレジストリを書き換えて、システムの時計をUTCに合わせてください。

管理者コマンドプロンプトで以下を実行すればOKです。

> reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

ロケール設定の作成

続いて、ロケール設定を作成していきます。
と、今の状態だとテキストエディタがないので、とりあえずvimをインストールしておきましょう。

# pacman -Syyu
# pacman -S vim

勿論、emacsやnanoなど、自分の好きなエディタがあるならそれをインストールしても良いです。
あるいは、この先のテキスト編集作業をechoやcatやsedだけで行っても良いですが、おすすめはしません。

/etc/locale.genを開いて、最上行に

ja_JP.UTF-8 UTF-8
en_US.UTF-8 UTF-8

を追記します。

続けて、LANG環境変数の設定と、コンソールキーマップの設定(USキーボード以外を使用している場合)を行います。

# echo LANG=ja_JP.UTF-8 > /etc/locale.conf
# echo KEYMAP=jp106 > /etc/vconsole.conf

今回はメインのロケールをja_JPにしますが、この設定の場合、CUI(ランレベル3以下の)環境で日本語が表示できない関係上、ターミナルが豆腐だらけになる(sshで繋いで使うことを前提としている場合は、クライアント側のターミナルに依存するのでこの限りではない)ので、必要に応じて変更してください。
基本的にGUI環境で動かして、必要時(何らかの理由でGUIが死んだときとか)のみCUI環境を使うとかであれば、その都度export LANG=en_US.UTF-8してあげれば良いのでja_JPで大丈夫です。

ホスト名の設定

続けて、ホスト名を設定していきます。
ホスト名は使用する環境に合わせてお好みで設定してください。
今回は、archuserにします。

# echo archuser > /etc/hostname

続けて、/etc/hostsも設定していきます

/etc/hosts
127.0.0.1    localhost
::1    localhost
127.0.1.1    archuser.localdomain    archuser

静的ネットワークを用いる場合はまた少し設定が変わってくるので、Arch Wikiのネットワーク設定
を参考にしてみてください。

あとは、dhcpcdをインストールして有効化します。(動的IPを用いる場合)
Wi-Fi等を使っている場合は、NetworkManagerをインストールした方が色々設定しやすいので、そちらをおすすめします。

# pacman -S dhcpcd

でdhcpcdをインストールして

# ip l

でネットワークインターフェース名(今回はenp0s3)を指定して次回起動時にサービスを自動で有効化するようにします

# systemctl enable dhcpcd@enp0s3

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

さて、基本的な設定が済んだので、ブートローダーをインストールしていきます。
ブートローダーにも色々種類がありますが、今回は比較的メジャーなブートローダーであるGRUBをインストールしていくことにします。
ブートローダーのインストール手順は、BIOS MBRかUEFI GPTかによって異なるので注意してください

とりあえず、GRUBをインストールします

# pacman -S grub

もし、Windowsなど他のOSがすでに入っている場合はos-proberもインストールします。

# pacman -S os-prober

続けて、GRUBをブート領域にインストールしていきましょう。

UEFI GPT

# pacman -S efibootmgr
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
# grub-mkconfig -o /boot/grub/grub.cfg

BIOS MBR

/dev/sdaはお使いのストレージに合わせて変更してください

# grub-install --target=i386-pc /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg

ユーザーの作成

と、その前に、rootのパスワードが設定されていないので

# passwd

でrootのパスワードを設定しておきます。

さて、今の今までずっとrootユーザーで作業していたので、通常使用用のユーザーを作っていきましょう。
ユーザー名は任意ですが、今回はこちらもarchuserにしておきます。

# useradd -m -g users -G wheel -s /bin/bash archuser
# passwd archuser

さて、ユーザーを完全な非特権ユーザーとするならこれで問題ありませんが、sudoコマンドを使って一時的にroot権限を付与したい場合、sudoをインストールして、sudoersにwheelグループを追加します

# pacman -S sudo

でsudoをインストールして

# vim /etc/sudoers

でsudoersを開き、以下の部分をアンコメントします。

/etc/sudoers
(省略)

## uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL:ALL) ALL

(省略)

とりあえずこれで必要最小限のインストールはできした!
とりあえず、

# exit

でchrootから抜けて

# reboot

で一旦再起動します。
以降、インストールディスクは抜いても大丈夫です。

インストール後のセットアップ

インストールを終えて再起動すると、おそらくGRUBの画面が出てくると思います。
ここでもしインストールディスクの起動画面だったり、あるいはもともと入ってたOSが立ち上がったりした場合は、ブート順がおかしいので、UEFI(BIOS)から、GRUBをブート順の一番上にしておいてください。
(あるいは、かなり特殊な例として、CPUは64bit対応なものの、EFIは32bitで、64bit EFIが立ち上がらないという事例もありますが、その場合、ブートローダーのインストール で、targetをx86_64-efiからi386-efiに置き換えればなんとかなるはずです。)

さて、OSを立ち上げると、ログイン画面に進むはずなので、先ほど作成したユーザー名とパスワードを入力してログインします。

AUR ヘルパーのインストール

前述の通り、Arch LinuxにはAURと呼ばれる、ユーザー主体のリポジトリがあります。
これを通常のパッケージ同様に、コマンド一つで簡単にインストールできるようにしたのがAURヘルパーです。
AURヘルパーにも色々種類はありますが、今回は中でも比較的有名なyayをインストールしていきます。

$ sudo pacman -S git go
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -si

これでyayコマンドを用いることで、AURのパッケージ検索等が利用できるようになりました。

GUI環境のインストール

おそらく、多くの人がGUI環境を求めると思うので、GUI環境をインストールしていきます。
とりあえず今回はKDE PlasmaとSDDMをインストールしていきますが、お好みのデスクトップ環境やウィンドウマネージャー等があるなら(あるいはスペックの関係でより軽量なものが必要な場合は)それでも良いですし、そもそもデスクトップ環境をインストールしないという手もあります。

$ sudo pacman -S acpid xorg sddm plasma konsole
$ sudo systemctl enable sddm

これで再起動すれば、GUI環境が立ち上がるはずです。

日本語化

日本語環境を用いる場合は、これに加えて日本語フォントもインストールしておきましょう

$ sudo pacman -S noto-fonts-cjk

また、日本語入力を行えるように、fcitxを入れます。

$ sudo pacman -S fcitx5-im fcitx5-mozc

そして、/etc/environmentに、以下を追記します

/etc/environment
GTK_IM_MODULE=fcitx5
QT_IM_MODULE=fcitx5
XMODIFIERS=@im=fcitx5

続けて、Input MethodのAdd Input Methodから、日本語IME(Mozc)を有効化し、キーボードの種類に応じてInput Meethod Off時の入力メゾットと、mozcの横にあるキーボードボタンから、キーボードのレイアウトを選択します。
KDE Plasma以外のDEを使用している場合はfcitx5-configtoolで設定画面を開けます。

これで、再起動すればIMが自動的に有効になっているはずです(XDG互換環境の場合)

Multilibの有効化

Arch Linuxのリポジトリは、標準で64bitのパッケージのみですが、Multilibリポジトリを有効化することで32bitアプリケーション(Steamなど)の使用ができるようになります。
/etc/pacman.conf[multilib]の項をアンコメントしてください。

/etc/pacman.conf
(省略)

[multilib]
Include = /etc/pacman.d/mirrorlist

(省略)

これで32bitアプリケーションの使用ができるようになりました。

入れておきたいソフト色々

もし、「このソフト入れたい!」って思ったら。

$ sudo pacman -Ss [パッケージ名]

$ yay -Ss [パッケージ名]

で検索してみると高確率で幸せになれます。

ファイルマネージャ

KDE Plasmaの場合はDolphinがおすすめ

$ sudo pacmcan -S dolphin

GNOMEの場合はNautilus

$ sudo pcaman -S nautilus

XfceならThunar

$ sudo pacman -S thunar

LXDEならPCManFM

$ sudo pacman -S pcmanfm

その他、環境に合わせてお好みのファイルマネージャーを入れてください。

ブラウザ

$ sudo pacman -S firefox

これでおk

メーラー

$ sudo pacman -S thunderbird

ウイルス対策ソフト

$ sudo pacman -S clamav clamtk

clamtkはclamavのGUIフロントエンドなので、不必要なら入れる必要はないです。

ファイアウォール

$ sudo pacman -S ufw gufw

gufwはufwのGUIフロントエンドなので(ry

有効化するには以下のコマンド(外部からの接続全拒否、外部へのアクセス全許可設定の場合)

$ sudo ufw default deny
$ sudo ufw enable

携帯電話との連携

携帯電話(AndroidまたはLinux)との連携はKDE Connectです。
KDEとありますが、KDE Plasma以外の環境でも使えます。
GNOME環境の場合はGSConnectというKDE Connect互換のGNOME Shell Extensionがあるので、そちらをおすすめします。

$ sudo pacman -S kdeconnect

さいごに

これで、ひとまず使える環境にはなったはずです。
あとは都度必要なパッケージを好きなようにインストールして、自分好みにカスタマイズしていくと良いでしょう。
ということで皆様、良いArch Linuxライフを!

参考文献

Discussion

rihibrihib

archisoはデフォルトで、reflectorが自動的に速度が早く同期頻度の高いミラーを設定するようになっていますが、最近同期された直近20個から並べ替えるという性質上、近隣のミラーとは言い難いので、日本国内のミラーを優先するように変更します。

※正直かなり変なやり方だと思うので、もう少しスマートな方法とかあったら教えてほしいです。

「curl -s "https://archlinux.org/mirrorlist/?country=JP" | sed -e 's/^#Server/Server/' > /etc/pacman.d/mirrorlist」とかはいかがでしょう?ついでにServerの前の#も消すことができます。

ビデカメビデカメ

なるほど、sed使って置換する方法は確かにありですね!
参考にさせていただきます!

一応、(そうそう無いパターンだとは思いますが)日本鯖全滅しててもどこかしらのミラーにはつながるように、デフォルトのミラーリストの先頭に日本のミラーを追記したいという意図もあるので、それも踏まえて書き換えてみようと思います。

rihibrihib

あ、なるほど、そういうことなんですね、失礼しました、ありがとうございます。

rihibrihib

もしかしたら僕が意図を勘違いしてるのかもしれませんが

川野孝行川野孝行

質問失礼します🙇
インストール手順にて「# vim /etc/pacman.d/mirrorlist」を入力すると紫色の波線が画面左端に縦列したままコマンド打っても反応しなくなりました。解決策等御座居ましたらご教授願います。