誰でも失敗なし、迷いない ArchLinuxのインストール

1.はじめに

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

以下のインストール方法はUEFI下の、しかも複数ディスクを使った場合です。

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

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

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

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

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

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

4.sshの起動とrootパスワード設定

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

# ip a

Pアドレスが割り振られているはずなので、それを覚えておきます。

2023/02/09 追記

現在のインストールディスクでは、SSHがデフォルトで起動していますので、この項目は不要になりました。すぐにパスワードの変更に移ってください。

# systemctl start sshd

# passwd

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

# timedatectl set-ntp true

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

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

5. インストール

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

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

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

#  loadkeys jp106  

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

この作業だけは慎重にやったほうが良いです。後で変更するのは非常に面倒だからです。

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

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

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

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

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

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

# cgdisk /dev/sda

  • [new]を選択し、512メガバイトをUEFI領域として割り当てる。パーティションタイプにはef00を割り当てる。
  • [Free Space]を選択して、スワップ領域分(搭載メモリと同量)を確保、パーティションタイプ8200を設定する。。
  • また[Free Space]を選択して、残り全てを、パーティションタイプ8300に設定。
  • 最後に[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.vfat -F32 /dev/sda1

2022/12/24修正

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

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

https://wiki.archlinux.jp/index.php/Arch_%E3%83%96%E3%83%BC%E3%83%88%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9#.E3.83.96.E3.83.BC.E3.83.88.E3.83.AD.E3.83.BC.E3.83.80.E3.83.BC

# mkdir -p /mnt/boot

# mount /dev/sda1 /mnt/boot

(6)mirrorlistの修正

これをやらないとダウンロードにメチャ時間がかかります。

2022/07/24追記

現在はこの作業が不要になったようです。

ライブ環境では、インターネットに接続した後に、reflector が 20 個の最も最近同期された HTTPS ミラーを選択し、ダウンロード速度で並べ替えを行ってミラーリストを更新します。

ArchWiki

2022/12/24追記

デフォルトでは日本のミラーの記載ありません。どうしても日本のミラーという場合はhttps://archlinux.org/mirrorlist/から検索して、以下をなるべく上位に挿入します。

# nano /etc/pacman.d/mirrorlist

開いたリストからjapanの行をみつけ、そのURIを先頭にコピーして保存します。

## Japan
Server = http://mirrors.cat.net/archlinux/$repo/os/$arch
Server = https://mirrors.cat.net/archlinux/$repo/os/$arch
Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch
Server = http://ftp.jaist.ac.jp/pub/Linux/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 efibootmgr nano openssh dhcpcd intel-ucode

※ amdの場合はamd-ucode

以上は最低必須と思われるものだけ。サブドメインを使用する場合は ddclient を入れておいたほうが良いです。

2022/12/24修正

デフォルトでインストールされる systemd-networkd を使用できるので dhcpcd のインストールは必要なくなりました。可変アドレスでは dhcpcd の起動だけですので、こっちのほうが楽かも。

(9)fstab の作成

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

(10)chroot環境下で作業

# arch-chroot /mnt

[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 NasebanaruLinux > /etc/hostname  ※ホスト名は好きな名称に変更してください。

# nano /etc/hosts

127.0.0.1 localhost nasebanarulinux.localdomain
::1 localhost nesebanarulinux.localdomain

(12)日本語環境の設定

 # nano /etc/locale.gen

開いたファイルの次の2行の#を削除し、有効にして下さい。  

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

(14)Grubのインストール

2022/12/24 修正

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

https://wiki.archlinux.jp/index.php/GRUB#.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB_2

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

見づらいかもしれませんが、 target efi-directory bootloaderの前は、それぞれ–(ダブルハイフン)です。

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)一般ユーザの追加とそのパスワードの設定

# nano /etc/sudoers

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

defaults env_keep += “HOME”
%wheel ALL=(ALL) ALL  

# useradd -m -G wheel taro ※ここではユーザ名をtaroとしましたが、自由に変更してください。  

# passwd taro

(18)アドレスの設定

dhcpcd での設定

可変アドレスで良ければ、

# systemctl enable dhcpcd.service

固定アドレスにするのであれば

# nano /etc/dhcpcd.conf

interface eth0
static ip_address=xxx.xxx.xxx.xxx24
static routers=xxx.xxx.xxx.1
static domain_name_servers=xxx.xxx.xxx.1 8.8.8.8

# systemctl enable dhcpcd.service

2022/12/24追記

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=xxx.xxx.xxx.1 8.8.8.8

有効化します。

# systemctl enable systemd-networkd

2023/05/29 修正

以前はこの時点でresolv.confの修正を記載しておりましたが、resolv.confは再起動により書き換えられますので、再起動後に実施します。

(19)SSHDの有効化

# systemctl enable sshd.service

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

# exit

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

# reboot

6.再起動後

$ ssh taro@IP_address  #一般ユーザで接続

(1) resolv.conf への追記(2023/02/08追記)

(これを設定しないと、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 xxx.xxx.xxx.xxx

(2)システムクロックの更新( 2023/03/25追記 2023/0918 修正)

「再起動後実行」に修正

# timedatectl set-ntp true

参考

単一のドライブ構成で、もっと簡単にインストールしたいという場合は、スクリプトを使用する方法があります。ググれば複数見つかります。自分も作ってみました。でも、何回も何回も苦労していると今何をやっているか?わかってきます。苦労は無駄になりません。

より使いやすくするためのでスプトップ化はこちら

コメント

タイトルとURLをコピーしました