LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

Arch Linux インストールの素振り

PONOS Advent Calendar 2020 の12日目の記事です。:gift:
昨日は@kenta-sanさんのVContainerという新しい選択肢 〜UnityのDIライブラリ〜でした。

はじめに

Arch Linuxとは

Arch LinuxはLinuxディストリビューションの1つです。
インストール直後の状態ではほぼ何も入っていない、硬派な作りになっています。

Arch Linuxのインストールは、メジャーなディストリビューションとは若干毛色が違い、インストールウィザード的なものがありません。
自分でコマンドを叩いて、ひとつずつ進めていく必要があります。

ざっくりこんな感じの手順です。

  1. USBメモリや光学ディスクでライブ環境を起動する
  2. ライブ環境上で、以下の操作を行う
    1. インストール先のディスクにパーティションを作る
    2. 必須パッケージをインストールする
    3. chrootでインストール先環境に入る
    4. 詳細な設定を行う
  3. マシンを再起動し、インストール先ディスクから立ち上げる

素振りの意義

前述の通り、Arch Linuxのインストールはほぼ手作業です。
また、ファイルシステムやブートローダーなどの構成要素は、それぞれ複数の選択肢があり、ユーザーが選択する必要があります。
「何を基準に選ぶの?」と思うところですが、ArchWikiにめちゃくちゃ充実した情報が載っていますので、これを見て自分なりに各構成要素を理解し、選択していくことになります。

というわけで、何かと手間はかかりますが、Linuxシステムに対する理解が深まることは確かです!
私は、何年かおきにArch Linuxのインストールをしていて、これを「素振り」と呼んでいます。(インストールするだけで使わないので。)

進め方

基本的に、ArchWikiのインストールガイドの手順を順番に進めていきます。
特につまづくことが無さそうな項目については、記事中では触れずに進んでいきますが、実際には全手順をこなしていると思ってください。

以下、雑に引用されている場合はインストールガイド本編からの引用です。

0. 仮想マシンの支度

VirtualBoxで仮想マシンをこしらえます。
ちゃんと(OS)タイプに「Arch Linux(64-bit)」が用意されているので、これを使いましょう。

Arch Linux は 530 MiB 以上のメモリが搭載された x86_64 互換のマシンで動作します。基本的なインストールで使用するディスク容量は 2 GiB 以下です。

こう書かれているので、メモリは4096MB・仮想ハードディスクは可変サイズで10GiBに設定しました。

作成後に、設定を一部修正します。
image.png
「システム」-「マザーボード」から、「EFIを有効化」をオンにします。

これはマザーボードのファームウェアとして、EFIを使うように指定しています。
オフの場合は、代わりにBIOSが使われます。

BIOSはかなりレガシーなファームウェアであり、あえて2020年に選ぶものではないので、EFIを指定しました。

1. インストールの準備

ライブ環境の起動

今回はVirtualBoxを使っているので、ライブ環境のISOファイルをそのまま使って起動します。

image.png

自動的にrootでログインされて、プロンプトが表示されます。

インターネットへの接続

VirtualBoxのデフォルト設定(NAT)のままなら、すでにネット接続できているはずです。
適当なホストにPingできることを確認しておきます。

後でインターネット上のホストからパッケージを取得するので、ネット接続は必須です。

パーティション

インストール先ディスクのパーティションを作ります。
実機でデュアルブートする場合は、失敗すると既存OSが立ち上がらなくなったりするので、一番神経を使うところです。

fdisk -lで、インストール先のデバイス名を確認します。
image.png
「/dev/sda」ですね。

インストールガイドには詳細が載っていないので、ここからはパーティショニングを参照しながら進めます。

GPTかMBRの選択

パーティションテーブルの形式が複数あるので、どれを使うか決めておく必要があります。
比較的新しいGPTと、レガシーなMBRの2つがメジャーな形式です。

あえて古い方を使う理由もないし、EFIとの親和性も考えて、GPTを使うことにします。

パーティショニング

gdiskコマンドを使って、パーティションを作成していきます。(gdiskはfdiskのGPT版です。)
今回はディスクが1つだけなので、細かく分けずに必要なパーティションだけ作ります。

用途 サイズ  ファイルシステム
EFIシステムパーティション 512MiB FAT32
/(ルート) 残り全部 ext4
スワップ 512MiB swap

インストールガイドの例をそのまま採用して、こういう設計にします。

gdiskは対話型のコマンドで、ここに操作内容を載せると長くなってしまうので、省略します。

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

各パーティションを、適切なファイルシステムでフォーマットしていきます。

EFIシステムパーティション

EFI System Partition (ESP や EFISYS とも呼ばれます) は FAT32 でフォーマットされた物理パーティション (ディスクのメインのパーティションディスクで、LVM やソフトウェア RAID などとは異なります) でここから UEFI ファームウェアは UEFI ブートローダやアプリケーションを起動します。
EFIシステムパーティション

上記引用の通り、FAT32を使う仕様です。
# mkfs.fat -F32 /dev/sda1 ←こんな感じでフォーマットします。

/(ルート)パーティション

ファイルシステムの指定は特にないので、何を使ってもOKです。
ファイルシステムのタイプ を見ると色々載っているので、気になるものを試してみてもいいかも。

今回はext4にしておきます。
# mkfs.ext4 /dev/sda2

スワップ領域

スワップはmkswapコマンドで作成します。
# mkswap /dev/sda3

さらにスワップを有効にします。
# swapon /dev/sda3

image.png
こうなりました。

ファイルシステムのマウント

作成したパーティションを /mnt 配下にマウントしていきます。
後ほどarch-chrootを使って、ここをルートとして操作することになります。
なので、/(ルート)パーティションは /mnt に、EFIシステムパーティションは /mnt/efi にマウントします。

# mkfir /mnt/efi
# mount /dev/sda2 /mnt
# mount /dev/sda1 /mnt/efi

※ 初期状態では /mnt 以外のマウントポイントが存在しないので、適宜ディレクトリを作成します。

2. インストール

ミラーの選択

インストールされるパッケージは、 /etc/pacman.d/mirrorlist に定義されているミラーからダウンロードされます。

Arch Linuxのパッケージは、ミラーリストに書かれたサーバーから取得されます。
優先度はリストの順番通りなので、速いサーバーがリストの上位にくるように並べ替えておく必要があります。

手動で並べ替えてもいいんですが、せっかくなのでツールを使いましょう。
ライブ環境には Reflector というツールが同梱されているので、これを使います。

# reflector -country 'Japan' --sort rate -save /etc/pacman.d/mirrorlist
これで、日本のサーバーのみに絞り、レートが高い順にソートされた mirrorlist が生成され、上書きされます。

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

pacstrap スクリプトを使用して base パッケージと Linux カーネル、一般的なハードウェアのためのファームウェアをインストールしてください:

今回は仮想マシンを使っているので、ファームウェアは除外します。
あと、何かと必要になるので Vim を入れておきます。

# pacstrap /mnt base linux vim

3. システムの設定

fstabの生成

# genfstab -U /mnt >> /mnt/etc/fstab
現在のマウント状況から、fstabファイルを生成します。
マウントし忘れがあったりすると、当然fstabには書き込まれないので、ご注意ください。
(swapとか忘れがち。)

chroot

# arch-chroot /mnt
これで、/mnt直下が仮の /(ルート) として取り扱われます。

シェルから実行するコマンドも、/mnt配下のディレクトリから探索されるようになるので、ライブ環境にしか入っていないコマンドは使えなくなります。要注意。

ブートローダー

最後に、ブートローダーのインストールを行います。
ブートローダーのページに色々載っていますが、特にこだわりがないので GRUB を使います。

GRUB はBIOS・UEFI両方に対応したブートローダーで、インストール手順もそれぞれに分かれています。
今回はUEFIを使っているので、UEFIシステム向け手順を見ながら進めます。

GRUBのインストール

GRUBのインストールに必要なパッケージを入れます。
# pacman -S grub efibootmgr
いきなり登場しましたが、Arch Linuxでは pacman というパッケージマネージャを使います。
※ 先ほど chroot しているので、パッケージは /mnt 配下の然るべきディレクトリに入ります。

GRUBのインストールを行います。
# grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=grub

GRUBの設定

※ 実はここの工程を飛ばして再起動してしまい、ちょっと苦労しました。後述します。

GRUB の設定ファイルを生成します。
# grub-mkconfig -o /boot/grub/grub.cfg
ファイルの中には、どのLinuxカーネルを使ってブートするか みたいな設定が書かれています。

デュアルブートする場合、この設定をいじってOSを選択できるようにします。

再起動

ここまでで、最低限必要な設定は終わりました。再起動してみます。

image.png
GRUBのメニューでArch Linuxを選んで・・・。

image.png
キタ! 🎉
素振り成功です。

(おまけ) GRUBコンソールからLinuxを起動

GRUBのインストール後、設定ファイルの生成を忘れて再起動してしまいました。
そうすると、GRUBは起動するものの、OSが起動できなくなります。

実はGRUB自身にもコンソールがあり、コマンドを叩いてOSを起動することができます。
参考: 起動失敗してgrubプロンプト(grub >)が出た場合の対処

> set root=(hd0,gpt2)
> linux /boot/vmlinuz-linux root=/dev/sda2
> initrd /boot/initramfs-linux.img
> boot

1行目のset root=(hd0,gpt2)で、1台目のHDDの2つ目のGPTパーティション をルートに指定しています。(/dev/sda2に相当)
この状態でls /bootとかすると、ファイル名の確認くらいはできます。
そうやって調べたファイル名を、2・3行目で指定しています。

ミスのおかげで勉強になりました。✨


明日は@nissy_gpさんの記事です!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1