コンテンツにスキップ

迷いなし!ArchLinuxのインストール

1.はじめに

以前書いてあったものが古くなっていたので、全面的に修正しました。ArchWikiの記載は大幅に変更されておりますが、ここではあくまで自分用に、しかも迷わずどんどんインストールできるようにするための覚書です。いっぱい選択肢が書いてあっても迷うだけ。

以下のインストール方法はUEFI下の、しかも複数ディスクを使った場合です。インストールする前に決めておくのは「ディスクのパーテーションをどのような構成にするか」だけ!後記5(2)を参考にしてください。

2.インストールディスクの作成

例のごとく最新版をダウンロードし、これをCDやUSBメモリ、(USB変換アダプターを使用する場合はSDカードも可)に焼きます。dd コマンドの活用が一番楽チン。例えば以下のように。

# dd if=saved_directory_filename of=/dev/sdx(target_directory) bs=4096 && sync

3.インストールディスクから起動

表示された画面でしばらく待っていると、 rootでログインされます。

なお、直接インストールするPCで操作する場合は、4を飛ばし5に進んでください。

4.rootパスワード設定と時刻合わせ

ここでネットワークが確立されていなければなりませんが、もしも有線LANの環境がなく無線LANを使うしかない、あるいは有線LAN 環境もあるが、無線LANで頑張るという場合の無線LANの設定はこちら。

# passwd

システムクロックを更新します。

# timedatectl set-ntp true

ここまで来たらリモートPCからssh接続します。

$ ssh root@Ip_address #先ほど設定したパスワードを入力します。

5. インストール

コピペでやってください。

(1)キーボードレイアウトの変更

デフォルトはUSキーボードなので、使用しているキーボードが日本語の場合は、

# loadkeys jp106  

(2)ドライブのバーティショニング

この作業だけは慎重にやったほうが良いです。後で変更するのは非常に面倒(G-partdのようなパーテーションツールを使う手がありますが・・・)だからです。

特に/home と /var は使用量が増えますし、書き込みが激しいからです。

以下のように領域を確保しました。

ディスク名 確保した領域 容量 フォーマット マウントポイント
/dev/sda[SSD]124G /dev/sda1 512M fat /boot
/dev/sda2 10G swap [swap]
/dev/sda3 残りすべて ext4 /
/dev/sdb[HDD]2T /dev/sdb1 1T ext4 /home
dev/sdb2 1T ext4 /var

【注】なぜ、このような領域確保になったかというと

Note

スピードが命のSSDですが、耐久性にいまいち不安をもっており、書き込みが激しいデータ領域はHDDに確保。 /HOMEと/VARは、データがどこまでも膨れ上がってくる可能性があり、また書き込みが激しいので、HDDこそ出番。 こうすればSSDが124Gでも十分だからです。

それでは領域確保からスタート。まずは、/dev/sdaから

# cgdisk /dev/sda
  1. [new]を選択し、512メガバイトをUEFI領域として割り当てる。パーティションタイプにはef00を割り当てる。
  2. [Free Space]を選択して、スワップ領域分(搭載メモリと同量)を確保、パーティションタイプ8200を設定する。
  3. また[Free Space]を選択して、残り全てを、パーティションタイプ8300に設定。
  4. 最後に[Write]→[Quite]を選択し、終了。

もう一つのHDDを/homeと/varで使うので、同じ要領で領域を確保し、書き込み、終了します。

# cgdisk /dev/sdb

説明は省略

(3)HDDのフォーマットとマウント

/dev/sda3のフォーマットとマウント

# mkfs.ext4 /dev/sda3
# mount /dev/sda3 /mnt

/dev/sdb1のフォーマットとマウント

# mkfs.ext4 /dev/sdb1  
# mkdir -p /mnt/home  
# mount /dev/sdb1 /mnt/home   

/dev/sdb2のフォーマットとマウント

# mkfs.ext4 /dev/sdb2  
# mkdir -p /mnt/var  
# mount /dev/sdb2 /mnt/var

(4)スワップ領域の作成と有効化 (スワップ領域を確保するのではなく、スワップファイルで対応する方法もあり)

# mkswap /dev/sda2  
# swapon /dev/sda2  

(5)UEFI領域フォーマットとマウント

# mkfs.fat -F 32 /dev/sda1 

Note

EFI システムのマウント先は /mnt/boot が推奨されているようです。以前は、/mnt/boot/efi にマウントするよう記載されておりました。これでも支障なく運用できるようです。当サイトの記事の中にも以前のマウントで作成したものを前提としているものがあります。

ブートローダーはカーネルと initramfs イメージにアクセスできなければなりません。アクセスできなければシステムはブートしません。したがって、通常のセットアップでは、/boot へのアクセスをサポートしている必要があります。ArchWikiより

# mkdir -p /mnt/boot
# mount /dev/sda1 /mnt/boot

(6)mirrorlistの修正

現在はこの作業が不要になったようですが、これをやらないとダウンロードにメチャ時間がかかります。ぜひ修正することをお勧めします。

デフォルトでは日本のミラーの記載ありません。日本のミラー から検索して、以下をなるべく上位に挿入します。

# nano /etc/pacman.d/mirrorlist

    ## Japan
    Server = https://mirrors.cat.net/archlinux/$repo/os/$arch
    Server = https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
    Server = https://mirror.saebasol.org/archlinux/$repo/os/$arch

(7)ArchLinuxのベースシステムを導入

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

(8)追加パッケージを導入

# pacstrap /mnt grub[^1] efibootmgr[^1] nano openssh intel-ucode[^2] sudo dosfstools ufw cronie util-linux git gnupg mdadm[^3]

Warning

システム条件に依存するバッケージが存在します。

[^1] boot-loader に systemd-boot を使用する場合は、grub efibootmgr パッケージは必要ない

[^2] intel-ucode は amdの場合はamd-ucode

[^3] mdadm は FakeRAID の場合も必要です。

以上は最低必須と思われるもの。必要なものは人によって異なると思うので、私自身が必要だと思うものを日々更新しながら記載しておきます。

(9)fstab の作成

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

(10)chroot環境下で作業

# arch-chroot /mnt

Warning

[root@archiso /] # コマンドプロンプトが archiso に変化します

(11)タイムゾーン、日本語環境、ホストネームなどの設定

場合によっては、キーボードの配列が異なる場合があって、すごく不便を感じるようであれば再度 loadkeys jp106 を実行して下さい。

# ln -sf /usr/share/zoneinfo/Asia/Tokyo  /etc/localtime #タイムゾーンの設定  
# echo LANG=en_US.UTF-8 > /etc/locale.conf  
# echo KEYMAP=jp106 > /etc/vconsole.conf 
# echo fbcon=font:VGA8x16 > /etc/vconsole.conf

これを設定しないと、WARNING: errors were encountered during the build. The image may not be complete. が出る場合があります。https://bbs.archlinux.org/viewtopic.php?id=295325 参照

# echo NasebanaruLinux > /etc/hostname 

ホスト名は好きな名称に変更してください。

# nano /etc/hosts
    127.0.0.1 localhost nasebanarulinux.localdomain
    ::1 localhost nesebanarulinux.localdomain

(12)日本語環境の設定

開いたファイルの次の2行をコメントアウトして、有効にして下さい。

 # nano /etc/locale.gen
    en_US.UTF-8 UTF-8
    ja_JP.UTF-8 UTF-8 
# locale-gen
    Generating locales…
    en_US.UTF-8… done
    ja_JP.UTF-8… done
    Generation complete.

日本語だけにする手もあるが、これだと文字化けする場合がある。

(13)Linuxイメージの作成

mkinitcpio -p linux

※ RAID 構成した場合は、これを実行する前に /etc/mkinitcpio.conf を修正し、HOOK 行に mdadm_udev を追加すること。

    ==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
    ==> Using default configuration file: '/etc/mkinitcpio.conf'
      -> -k /boot/vmlinuz-linux -g /boot/initramfs-linux.img
    ==> Starting build: '6.18.2-arch2-1'
      -> Running build hook: [base]
      -> Running build hook: [systemd]
      -> Running build hook: [autodetect]
      -> Running build hook: [microcode]
      -> Running build hook: [modconf]
      -> Running build hook: [kms]
      -> Running build hook: [keyboard]
      -> Running build hook: [keymap]
      -> Running build hook: [sd-vconsole]
      -> Running build hook: [block]
      -> Running build hook: [mdadm_udev]
      -> Running build hook: [filesystems]
      -> Running build hook: [fsck]
    ==> Generating module dependencies
    ==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux.img'
      -> Early uncompressed CPIO image generation successful
    ==> Initcpio image generation successful

(14)Grubのインストール

ブートローダの識別子を選んでください、ここでは Arch とします。esp/EFI/ にあなたが選んだものと同じ名前のディレクトリが作成され、そこに EFI バイナリが格納されます。その名前が UEFI ブートメニューの GRUB ブートエントリの名前になります。

systemd-boot をブートローダに選択した場合はこちら

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


    Installing for x86_64-efi platform.
    Installation finished. No error reported.
    このようにエラーが出ていなければOK

(15)Grubの設定ファイルの作成

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

    Generating grub configuration file …
    Found linux image: /boot/vmlinuz-linux
    Found initrd image: /boot/intel-ucode.img /boot/initramfs-linux.img
    Found fallback initrd image(s) in /boot: intel-ucode.img initramfs-linux-fallback.img
    Warning: os-prober will not be executed to detect other bootable partitions.
    Systems on them will not be added to the GRUB boot configuration.
    Check GRUB_DISABLE_OS_PROBER documentation entry.
    Adding boot menu entry for UEFI Firmware Settings …
    done

(16)rootのパスワードの設定

# passwd  

(17)一般ユーザの追加とそのパスワードの設定

開いたファイルの次の2行の#を削除

# nano /etc/sudoers
    defaults env_keep += “HOME”
    %wheel ALL=(ALL) ALL  
# useradd -m -G wheel taro
# passwd taro

(18)アドレス(systemd-networkd)の設定と有効化

可変アドレスであれば

# nano /etc/systemd/network/10-wired.network
    [Match]
    Name=enp1s0

    [Network]
    DHCP=yes

固定アドレスでは

    [Match]
    Name=enp1s0

    [Network]
    Address=xxx.xxx.xxx.xxx/24
    Gateway=xxx.xxx.xxx.1
    DNS=8.8.8.8 8.8.4.4
# systemctl enable systemd-networkd

(19)各種サービスの有効化

# systemctl enable sshd.service
# systemctl enable fstrim.timer

(20)chrootを抜けて、マウント解除、再起動

# exit
# umount -R /mnt/home /mnt/var /mnt
# reboot

インストールメディアの取り出しタイミングが難しい場合があるので、shutdown -h now コマンドのほうが良いかもしれません。

6.再起動後

一般ユーザで接続

$ ssh taro@xxx.xxx.xxx.xxx

(1) resolv.conf への追記

これを設定しないと、fatal: unable to access ‘https://xxx.archlinux.org/xxxxx.xxx/’: Could not resolve host: xxx.archlinux.org のようなエラーが発生します。

# nano /etc/resolv.conf

    nameserver 8.8.8.8  8.8.4.4 xxx.xxx.xxx.xxx

# systemctl start systemd-resolved
# systemctl enable systemd-resolved

(2)システムクロックの更新

# timedatectl set-ntp true

ここまでやれば、あとは好きなように作り上げるだけです。

Note

単一のドライブ構成で、もっと簡単にインストールしたいという場合は、スクリプトを使用する方法があります。ググれば複数見つかります。