んたのブログ

週末になると出没します。

Arch LinuxのE495へのインストール手順まとめ

これまで4回に分けてArch LinuxThinkPad E495にインストールしてGNOMEで日本語を使えるところまで書いてきたんですが、コマンドは1ページに通して書いておかないと読み返しても分かりづらいよなあ、と思ったのでまとめてみようかと思います。理解が甘いのと自分向けなので割と適当になるでしょうが、まあそれはそれで。タイムスタンプ的には2021年8月1日のisoイメージを利用しています。 

 

流れとしてはこうなります。
 
【1.CUI環境インストール】
まずはCUIで動くところまで。ブートモードはUEFIブートローダーはsystemd-bootを利用します。
【2.環境設定】
CUI環境でキーボードやら時間やらユーザやらの設定とGNOMEの導入まで実施してます。
【3.GUI環境(GNOME)の設定】
最後にGNOME環境で日本語が使えるようになるところまで。
 
四苦八苦しながらもどうやらArch Linuxを使える状態にまでできるようになりました。
ここからあとの日常的な環境作成もやらなきゃなあ。主にブラウザ周り。
 
《改版》
2021.8.13 初版
2021.8.14 3-15〜3-19 追加
 
《目次》

  

【前提条件】

  • 2021年8月1日のisoイメージを使いました。
  • インストール先のPCは Thinkpad E495です。
  • インストール先のストレージはNVMe M.2です。
  • コマンドのプロンプトですが
# …rootユーザ(主に1章と2章)
$…一般ユーザ(主に3章)
とそれぞれ実行ユーザが異なります。
 

【1.CUI環境インストール】

1-1.インストーラ作成

まずは
に記載されているリンク先からisoファイルをダウンロードしてUSBメモリに書き込み。ここは環境によるので特に記載はしません。今回自分はMacOS上でbalenaEtcherを使って32GBのUSBメモリに書き込みました。
 

1-2.USBメモリを挿して起動

E495にUSBメモリを挿して起動。起動時に「F12」を押してboot menuに移行します。その際一番上に表示される
Arch Linux install medium(x86_64, UEFI)
を選択してEnterキーを押下して先に進むと、rootでログインした状態でインストーラが起動します。
 

1-3.日本語キーボードの設定

# loadkeys jp106
 
起動時はキーボードが英語配列で認識されていますが、このコマンドで一時的に日本語キーボードとして認識させます。
 

1−4.インストール先のデバイス確認

# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0 465.8G  0 disk
├─sda1        8:1    0    16M  0 part
└─sda2        8:2    0 465.7G  0 part
nvme0n1     259:0    0 232.9G  0 disk
 
今回のインストール先はM.2 SSDなので、デバイスはnvme0n1がターゲットです。環境によってターゲットの名前は変わると思いますので、その際は置き換えてください。
 

1−5.ブートモードの確認

# efivar -l | head -3
ここでリストが表示されればブートモードはUEFIだそうです(このあたりまだ良くわかってない)。
 

1−6.無線LANのインターフェース名を確認

# ip link
 
今回のインターフェース名はwlan0でした。
 

1−7.アクセスポイントの確認

#  iwlist wlan0 scan | grep "SSID"
 
これでアクセスポイント名が表示されますので、お使いになるものをメモしてください。
 

1−8.アクセスポイントに接続

# wpa_supplicant -B -i [Interface] -c <(wpa_passphrase [SSID] [password])
 
これでアクセスポイントにIPv6で接続できます。なお、[Interface] [SSID] [password]の括弧部分は入力不要です。注意点としては”-c”の後のリダイレクションと括弧の間にスペースがいらないこと。離れてるとエラーになります。
IPv4での接続が必要な方は上記に続けて
 
# dhcpcd
 
と入力することでIPv4のアドレスを取得できます。
 

1−9.導通確認

pingが通れば正常です。
 

1−10.パーティション作成

# gdisk /dev/nvme0n1
手順1−4.で確認した /dev/nvme0n1 にパーティションを切ります。
 

1−10−1.現状確認

Command (? for help): p
〜〜
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1048576   511.0 MiB   EF00  EFI system partition
   2         1050624       488397134   232.4 GiB   8300  Linux filesystem
 

Commandにpを入力することで現状を表示

 
1−10−2.古いパーティションの削除
Command (? for help): d
Partition number (1-2): 1
 
Command (? for help): d
Using 2
 

古いパーティションを削除する場合Commandにdを入力します。削除の必要がなければ1-10−3.へ。

 
1−10−3.EFIパーティション作成
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-488397134, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-488397134, default = 488397134) or {+-}size{KMGTP}: 512M
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): ef00
Changed type of partition to 'EFI system partition'
 
Commandにnと入力してEFI用のパーティションを作成します。推奨値は512M(らしい)。Hex Codeはef00。
 
 1−10−4.root用パーティション作成
Command (? for help): n
Partition number (2-128, default 2):
First sector (34-488397134, default = 1050624) or {+-}size{KMGTP}:
Last sector (1050624-488397134, default = 488397134) or {+-}size{KMGTP}:
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
 
Commandにnと入力してroot用のパーティションを作成します。推奨値は好きなだけ。Hex Codeは8300(default値なので、エンターキー叩くだけ)。
  
1−10−5.パーティションの確認
Command (? for help): p
〜〜〜〜〜〜〜〜〜〜
Total free space is 4061 sectors (2.0 MiB)
 
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1048576   511.0 MiB   EF00  EFI system partition
   2         1050624       488397134   232.4 GiB   8300  Linux filesystem
 
パーティションが作業通りの結果になっているか確認します。
 
1−10−6.パーティション情報の書き込み
Command (? for help): w
 
Commandにwと入力して、デバイスパーティションの情報を書き込みます。ほんとに実施するか聞かれるので「y」を入力してエンターキーを押下します。「n」と入力すれば書き込みは回避できます。
 

1−11.パーティションの確認

# lsblk /dev/nvme0n1
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0 232.9G  0 disk
├─nvme0n1p1 259:1    0   511M  0 part
└─nvme0n1p2 259:2    0 232.4G  0 part
 
nvme0n1の下に nvme0n1p1/nvme0n1p2 が作成されたことを確認します。
 

1−12.EFI用のファイルシステム作成

# mkfs.fat -F32 /dev/nvme0n1p1
mkfs.fat 4.2 (2021-01-31)
 
EFI用のパーティションFAT32形式でフォーマットします。
 

1−13.root用のファイルシステム作成

# mkfs.ext4 /dev/nvme0n1p2
mke2fs 1.46.3 (27-Jul-2021)
/dev/nvme0n1p2 contains a ext4 file system
last mounted on / on Wed Aug 11 08:37:15 2021
Proceed anyway? (y,N) y
 
root用のパーティションをフォーマットします。続けるかどうか聞かれるので「y」を入力してエンターキーを押下します。
 

1−14.root用のファイルシステムをマウント

# mount /dev/nvme0n1p2 /mnt
 
root用のファイルシステムを/mnt にマウントします。
 

1−15.EFI用のデバイスをマウントするディレクトリを作成

# mkdir /mnt/boot
 
EFI用のデバイスをマウントするディレクトリを作成します。
 

1−16.EFI用のファイルシステムをマウント

# mount /dev/nvme0n1p1 /mnt/boot
 
EFI用のファイルシステムを/mnt/boot にマウントします。
 

1-17.マウント確認

# mount | grep /mnt
/dev/nvme0n1p2 on /mnttype ext4 (rw,realtime)
/dev/nvme0n1p1 on /mnt/boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
 
/dev/nvme0n1p1 が /mnt/boot 、 /dev/nvme0n1p2 が  /mnt にマウントされていることを確認します。
OKなら手順1−19.へ。
 

1−18.アンマウント

# umount -R /mnt
 
1−17.でマウントを間違えていた場合はアンマウントして手順1−14.からやり直します。
 

1−19.パッケージをインストール

# pacstrap /mnt base linux linux-firmware wpa_supplicant dhcpcd dialog vi vim sudo
 
最小限の base linux linux-firmware  の3つだけだとE495ではインストール後無線LANでネットワークに繋げなかったので、無線LAN周りのコマンドとエディターとsudoを同時にインストールしてます。
エディターはviだけで良かったんですが、rootユーザでvisudo使うときはvi、一般ユーザでvisudoを使うときにvimが指定されたので両方入れてます。
ダウンロード先はできるなら日本のミラーサイトを指定したかったんですが、準備されていたミラーサイトのリストに日本のサイトが含まれていなかったのでそのまま使いました。それでも5分とはかからずにインストールできましたけども。
 

1−20.fstabの作成

# genfstab -U /mnt >> /mnt/etc/fstab
 
genfstabコマンドを使ってfstabを作成します。
 

1-21.chrootする

# arch-chroot /mnt
 
これでインストールしたパッケージの環境で作業できるようになります。
 

1-22.systemd-bootのインストール

# bootctl install
Created "/boot/EFI".
〜〜〜〜〜〜〜〜〜〜
Created EFI boot entry "Linux Boot Manager".
 
ブートローダーを/boot にインストールします。
 

1-23.ローダーの設定

/boot/loader/loader.conf を下記内容に編集します。timeoutの値はお好きな値でどうぞ。
 
/boot/loader/loader.conf
default arch
timeout 10
editor  no
 

1−24.ローダーに対するエントリーファイルの作成

1−24−1.vmlinuz-linux の文字列をエントリーファイルに書き込む
# ls /boot/vmlinuz-linux | sed s~/boot~~ >/boot/loader/entries/arch.conf
1−24−2.initramfs-linux.img の文字列をエントリーファイルに書き込む
# ls /boot/initramfs-linux.img | sed s~/boot~~ >>/boot/loader/entries/arch.conf
1−24−3.UUIDの文字列をエントリーファイルに書き込む
# blkid -o export /dev/nvme0n1p2 | grep ^UUID >>/boot/loader/entries/arch.conf
1−24−4.エントリーファイルを編集する
1−24−1〜1−24−3までで作成した /boot/loader/entries/arch.conf を以下の内容に編集します。
 
title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=UUID=c1da676d-287b-46ba-adce-31bd1643be03 rw
 
実際にやらかしたのが4行目の「options」の後に「root=」を追加するところを忘れて、この後のOS起動が正常にできなかったことがありました。あと、同じく4行目の最後に「rw」を追記するのも忘れがちでした。
 

1−25.ローダーの確認

# bootctl list
Available boot entries:
        title: Arch Linux (default)
        linux: /vmlinuz-linux
       initrd: /initramfs-linux.img
      options: root=UUID=c1da676d-287b-46ba-adce-31bd1643be03 rw
〜〜〜〜〜〜〜〜〜〜〜
 
1−24で作成したarch.confの内容が表示されればOKです。
 

1-26.rootユーザのパスワードを設定

# passwd
New password:
Retype new password:
 
rootユーザのパスワードを設定します。
 

1−27.chrootを終了

# exit
 

1−28.OS再起動

# shutdown -r 0
 
USBメモリを抜いてOSリブートします。これで正常に起動してくればCUI環境が出来上がりです。
 

【2.環境設定】

2-1.キーマップの設定

# localectl list-keymaps | grep jp
jp106
 
日本語配列が使えるか確認します。この時点で日本語キーマップを導入してないので”|”の入力に迷いますがShift+「む」で行けます。
 

2-2.キーマップを日本語配列に変更

# localectl set-keymap jp106
 
恒常的に日本語配列に設定します。
 

2-3.locale.genの編集

/etc/locale.gen をエディターで開き、以下2行をアンコメントします。
 
en_US.UTF-8 UTF-8 
ja_JP.UTF-8 UTF-8
 

2-4.編集内容の確認

# grep -v ^# /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がアンコメントされていることを確認します。
 

2-5.ロケールを生成

# locale-gen
 
ロケールを生成します。
 

2-6.ロケールの確認

# locale -a
C
en_US.utf8
ja_JP.utf8
 
ロケールにen_US.utf8とja_JP.utf8 が追加されていることを確認します。
 

2-7.ロケールの変更

# localectl set-locale en_US.utf8
 
この時点ではターミナルに日本語は表示できないので、ロケールにen_US.utf8 をセットします。
 

2-8.ログオフ&ログイン

一度ログアウトしてログインし直します。
 

2-9.ロケールの確認

# locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
〜〜〜〜〜〜〜〜〜〜
LC_ALL=
 
ロケールが「LC_ALL=」以外「en_US.utf8」に変更されていることを確認します。
 

2-10.インターフェース名を確認

# ip link
 
インストール後の無線LANのインターフェース名はwlp4s0でした。
 

2-11.アクセスポイントに接続

# wpa_supplicant -B -i [Interface] -c <(wpa_passphrase [SSID] [password])
 
SSIDの確認は1-7.で確認してるので割愛してます。
 

2-12.dhcpcd起動

# dhcpcd
 
dhcpcdを起動します。
 

2-13.導通確認

 

2-14.マイクロコードをインストール

# pacman -S amd-ucode
 
CPUに対するパッチを適用します。E495はAMDのCPUなので上記コマンド。Intel CPUの場合は
 
# pacman -S intel-ucode
 
です。
 

2-15.時刻の確認

# timedatectl
               Local time: Thu 2021-08-12 01:19:10 UTC
           Universal time: Thu 2021-08-12 01:19:10 UTC
                 RTC time: Thu 2021-08-12 01:19:10
                Time zone: UTC (UTC, +0000)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no
 
Local TimeとTime Zoneが「UTC」、System clock synchronizedが「no」、NTP serviceが「inactive」です。
 

2−16.Time Zoneの存在確認

# timedatectl list-timezones | grep Tokyo
Asia/Tokyo
 
Asia/Tokyo が表示されればOKです。
 

2−17.TimeZoneのセット

# timedatectl set-timezone Asia/Tokyo
 
コマンドが正常終了すればOKです。

2−18.Time Zoneの設定確認

# timedatectl
               Local time: Thu 2021-08-12 10:21:03 JST
           Universal time: Thu 2021-08-12 01:21:03 UTC
                 RTC time: Thu 2021-08-12 01:21:02
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no
 
Local Timeが「JST」、Time zoneが「Asia/Tokyo」に変更されていればOKです。
 

2−19.NTPサーバの設定

/etc/systemd/timesyncd.conf に以下の2行を追加します。
 
NTP=ntp.nict.jp
FallbackNTP=ntp.nict.jp ntp.jst.mfeed.ad.jp
 

2−20.NTPとの同期開始

# timedatectl set-ntp true
 

2−21.NTPとの同期確認

# timedatectl
               Local time: Thu 2021-08-12 10:21:49 JST
           Universal time: Thu 2021-08-12 01:21:49 UTC
                 RTC time: Thu 2021-08-12 01:21:48
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no
 
NTP serviceが「active」になっていればOKです。
 

2-22.一般ユーザ追加

# useradd -m -G wheel *******
 
普段使う一般ユーザを追加します。
-mでホームディレクトリ作成、ーG で追加するユーザに2つ目のグループwheelを付与してます。
 

2−23.一般ユーザのパスワード設定

# passwd *******
New password:
Retype new password:
 
追加した一般ユーザのパスワードを設定します。
 

2−24.sudoで権限追加

# visudo
〜〜〜〜〜〜〜〜〜
root ALL-(ALL) ALL
******* ALL = (ALL) ALL
 
一般ユーザの行を追加して権限を与えます。自分しか使わないのにあまり権限つけてもなあ、ということでグループではなくユーザ単位で設定しました。
 

2-25.一般ユーザでログイン

一度ログアウトして一般ユーザでログインしなおします。
 

2-26.GNOMEとNetworkManagerをインストール

$ sudo pacman -S gnome gnome-extra networkmanager
 
パッケージ gnomegnome-extraとNetworkManagerをインストールします。
 

2-27.GNOMEを有効化

$ sudo systemctl enable gdm
 
gdmがOS起動時に起動するよう有効化します。
 

2-28.NetworkManagerを有効化

$ sudo systemctl enable NetworkManager
 
NetworkManagerがOS起動時に起動するよう有効化します。
 

2-29.OS再起動

$ sudo shutdown -r 0
 
OSを再起動するとGNOMEのログイン画面が表示されるのでログインします。
 

【3.GNOME環境設定】

3−1.ネットワーク設定の呼び出し

f:id:ntaka1970:20210813202749p:plain

設定呼び出し
画面右上をクリックして設定画面を呼び出します。
 

3−2.アクセスポイントの選択

f:id:ntaka1970:20210813202851p:plain

アクセスポイント選択
Wi-Fiメニューからつなぎたいアクセスポイントを選択します。
 

3−3.passphrase の入力

アクセスポイントのパスフレーズを入力します。これでネットワークに接続できます。
 

3−4.ターミナルを起動

画面左上のActivityをクリック⇨画面右下の…からターミナルを選択します。
 

3−5.日本語フォントのインストール

$ sudo pacman -S otf-ipafont
 
ここではIPAフォントを選択してます。
 

3−6.ロケールを日本語に変更

$ localectl set-locale ja_JP.utf-8
 

3−7.ログアウト

ログアウトします。
 

3−8.ログイン

ログイン時の表記が日本語表記に変更されていることを確認します。
ログイン完了後に各種フォルダを日本語に変更するか聞かれるけど、そこはお好みで。
 

3−9.日本語入力関係をインストール

$ sudo pacman -S fcitx fcitx-mozc fcitx-configtool fcitx-im
 
インストール前にこれも入れるかあれも入れるかと聞かれますが、とりあえず全部インストールしました。
 

3−10. /etc/environment の編集

下記3行を /etc/environment に追記します。
 
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
 

3−11.ログアウト

ログアウトします。

 

3-12.ログイン

ログインします。
 

3−13.Mozc起動確認

ブラウザの検索バー等テキストを入力できるところにカーソルを合わせて
Ctrl+スペース
と押下して「Mozc」という小さいウィンドウが表示されることを確認します。
 

3−14.日本語入力の確認

テキストを入力できるところで、日本語入力が可能であるか確認します。
ただ、ブラウザやテキストエディタでは問題ないんですが、GNOMEの検索ボックスではうまく動いていないことを確認してます。まだなにか必要なのかな…
 

3-15.fcitx設定起動

このままだとキーボードが英語配列のままなので、日本語配列になるよう修正します。
アクティビティから「fcitx設定」 を起動します。
 

3-16.キーボード - 英語(US) を削除

f:id:ntaka1970:20210814200629p:plain

「キーボード - 英語(US)」を選択した状態で画面下の「-」をクリックして、「キーボード - 英語(US)」を削除します。

 

3-17.追加ボタンをクリック

f:id:ntaka1970:20210814200847p:plain

画面下の「+」をクリックします。

3-18.「キーボード - 日本語」を追加

f:id:ntaka1970:20210814201306p:plain

「キーボード - 日本語」を選択した状態で「OK」ボタンをクリックします。

3-19.キーボード - 日本語 の順位を上げる

f:id:ntaka1970:20210814202716p:plain

画面下の上矢印で「キーボード - 日本語」の順位を上にあげます。

 

 

【終わりに】

とりあえず記憶によらずArch Linuxを構築できる手順が作れました。途中何度も挫けて放り出しそうになりましたが、それでも面白そうと思い返して諦めなかったあたりは我ながらよくやったと思います(途中で飽きてUbuntuをインストールしてみたりしたのは内緒)。たまには知らないディストリビューション触るの、楽しいですね。
 

【謝辞】

最後になりますが、この手順を書くにあたり以下のブログを参考・参照させていただきました。ありがとうございました。