4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PONOSAdvent Calendar 2020

Day 12

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

Last updated at Posted at 2020-12-11

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 にマウントします。

# mkdir /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さんの記事です!

4
2
2

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
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?