TechsMex

技術エンジニア C++/Python/Java

Arch Linuxのインストール方法、解説

背景

C++開発用に古いノートPCにubuntuを入れていたが、最近動作が遅くなってきてしまった。
そこで以前より興味のあったArch Linuxを導入した。その際の備忘録を残す。
基本的には英語版の公式wikiを見つつ、各種ブログを見ながらインストールした。

環境

ThinkPad X230

事前準備

インストールメディアの作成

Arch Linuxのイメージを入手し、署名による改竄検証を行う。
インストールメディア作成に当たっては、rufusを用いてUSBに書き込んだ。

UEFIの設定

大半の解説サイトがUEFIモードでのインストールを前提としていたため、
下記のUEFI設定をチェックする。
特に自分の環境はUEFI/LegacyがBIOS優先になっていたのため、当初はUEFIに入れなかった。

  • secure boot
  • fast boot
  • UEFI/Legacy boot(BIOS/UEFIどちらでbootするか)

USB boot

ここからはUSB起動後の話。

ログ記録

scriptコマンドによって、実行したコマンドが記録される。
オプション無しならカレントディレクトリにtypescriptと呼ばれるログができる。
インストールには直接関係ないが、念のため。

script

キーボードレイアウト

US配列を使用しているので割愛

boot modeチェック

以下のディレクトリがあればUEFI。無ければBIOS。起動画面でも判別可能。

ls /sys/firmware/efi/efivars

ネットワーク接続

無線wifiのため、iwctlコマンドで接続。
念のためping確認もしておく。
余談だがこれはusbには入っているコマンドであり、
インストールされるArch Linuxには入っていない。
別途ネットワーク関連のコマンドのインストールが必要(2敗)。

iwctl
[iwd] device list
[iwd] station hoge_device scan
[iwd] station hoge_device get-networks
[iwd] station hoge_device connect hoge_SSID
[iwd] exit
ping archlinux.org

system clockの更新

timedatectl set-ntp true

パーテーション

良く知らなかったが、linuxはパーテーション分割するのが常識らしい。公式WikiUEFI with GPTを参考にした。

  • boot 起動に必要
  • root 各種システムファイル
  • swqp メモリ領域の拡張。一応作った

diskの確認

まずdiskを確認する。

fdisk -l

fdisk対話モード開始

上記で確認した対象のdiskを対象に操作を行う。ここからはfdiskの対話モードで設定

fdisk /dev/sda

パーテーションテーブル

パーテーションテーブルはGPTが良さげなのでそれにする。コマンドはg

g

パーテーションの追加

それぞれの容量はこの以下とした。swap領域の目安は8GB RAMの場合は4GB~10GBらしいので最大値にしておいた。

  • boot /dev/sda1 512MB
  • root /dev/sda2 残り全部
  • swap /dev/sda3 10GB

nでパーテーション追加。以下のコマンドは割愛。領域は+512Mや-10GBなど相対指定可能。

n

パーテーションタイプ

tでパーテーションタイプ設定。
その後対象パーテーションとタイプを指定する。
タイプの番号はboot領域はuefi(1)、swap領域はswqp(19)

t

設定書き込み

wで設定を書き込み、対話モード終了。qだと書き込まず終了

w

フォーマット

mkfsコマンドでフォーマットしていく。
wiki曰くEFI system partitionはfat32が推奨らしい。
rootはext4が一般的。
サイトによってはmkfsを利用していたが、
wikiに倣ってmkswapを用いた。

mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
mkswqp /dev/sda3

マウント

これもwikiに倣いEFI system partitionは/mnt/bootに、rootは/mntにマウントする。
/mnt/bootの作成を忘れないこと。swapはswaponコマンドで有効化するらしい。

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

--追記(2021/11/5) /mnt/bootの作成とマウントは/mntのマウント後でないとまずいようだ

ミラーサイトの更新

/etc/pacman.d/mirrorlistにミラーサーバの設定が書いてあり、日本サーバーが優先になるように設定する。
本来ならば、上記のファイルの順番を変えるだけで対応可能である。
が、自分の環境では日本サーバーの設定がなかったため、日本サーバー情報を取得した。
以下は日本サーバにおいて24時間以内にhttpsで接続されたサーバ情報を通信速度順にソートをかけて保存するコマンド。

reflector --country 'Japan' --age 24 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

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

いよいよパッケージインストール。最低でも以下が必要。

また、このタイミングで以下のパッケージも入れておいた方が良い。
入れ忘れたパッケージがあっても、
後述のchroot後にpacmanコマンドで入れてもよい。

  • テキストeditor : vim/emacs/nano等
  • ネットワーク関連 : iw/dhcpなど

自分の環境では以下とした

pacstrap /mnt base linux linux-firmware vim iw wpa_supplicant dhcpcd

Note

上記以外のパッケージはOSインストール後でも間に合う。
archlinux的考え方で行けば上記すら不要かもしれないが、
以下の理由で先に導入した。
linux力が高ければ不要だと思う。
* テキストeditorがなく、OSインストール後のシステムファイルを変更できなかった。
* ネットワークコマンドの使い方がわからず、パッケージ更新を行えなかった。

fstabの書き出し

linuxのファイルマウントの定義のことらしい。
UUIDと呼ばれる一意に定まるIDを用いてパーテーションをマウントする設定を書き出す。

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

なお、UUIDは以下のコマンドで確認可能。/mnt/etc/fstabと比較するのも良いだろう。

lsblk -f

ルートディレクトリの変更

ルートディレクトリを変更することによってインストールしたシステムを操作していく、のだと思う。

arch-chroot /mnt

timezoneの設定

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

localeの設定

/etc/locale.genのen-US.UTF-8 UTF-8とja_JP.UTF-8 UTF-8をアンコメントする。

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

次のコマンドを実行し、設定を反映

locale-gen

また、以下の設定ファイルを作成

LANG=en_US.UTF-8

ホストネームの設定

以下で設定。

hogehoge

また、ホスト名とipアドレス設定ファイルを作成する

127.0.0.1 localhost
::1       localhost
127.0.1.1 hogehoge.localdomain hogehoge

initramfsの設定

RAM Filesystem、つまり、メモリ上のファイルシステムのこと。
/etc/mkinitcpio.confをいじって下記コマンドで反映させる。基本的には不要らしいが、一応実行しておいた。

mkinitcpio -P

rootのパスワード設定

passwd

ブートローダ

ブートローダーの設定も必要らしい。
今回はwikiを見て良さげだったのでGRUBを採用した。
UEFI systemの場合、efibootmgrのインストールも必要。

pacman -S grub
pacman -S efibootmgr

efi-directoryはEFIをマウントした、/bootを指定
bootloader-idはUEFIから確認できる名前っぽい。

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=hoge

以下のコマンドでconfig fileを作成する。
-oは出力する設定ファイル名を指定するオプション。

grub-mkconfig -o /boot/grub/grub.cfg

マイクロコード

マイクロコードはプロセッサのファームウェアと同義らしい。 intel製CPUなので、intel-ucodeをインストール

pacman -S intel-ucode

上記のloadタイミングは色々選べるようだが、 GRUBにより起動時のloadを選択した。

grub-mkconfig -o /boot/grub/grub.cfg

終了処理とログの書き出し

ルートから抜け出す。

exit

次のexitでscriptを終了し、ログを終了する。

exit

usb内のデータは削除されるので、これをbootに移す

cp typescript /mnt

再起動する。自動でアンマウントされるので、マウント処理は割愛。

Hello Arch Linux

起動することを確認する。

その他

後日、ArchLinuxインストール後の処理を書く予定

参考

本家wikiが日本語版・英語版共に役に立った。内容は英語>日本語で参考にした。
ブログも大変参考になった。