Chap-33. Arch Linux の試用

 Arch 系 Linux の総本山に始めて手を出します。 2022-08
どっちかと言うとインストールの面倒なものには手を出さない方針でしたが、気が変わりました。
どっちかと言うとインストール記事は載せない方針でしたが、それについても気が変わりました。
割合とよく気が変わるタイプです。
ほとんど Arch 初心者の自分が書くトピックです。イメージとしては「初心者がやるとこうなる」って感じです。そのつもりで読んでください。



Sec-1.前提
Sec-2.ディスク準備及びリポ不調の備え
Sec-3.CUIにインストール
Sec-4.GUI化する
Sec-5.CUI インストールしたものをサーバ化
Sec-6.GUI インストールしたもののお試し
Sec-7.全体の印象




Sec-1.前提

 以下の事柄を前提とします。

こんなところです。概ねいつもの感じ。
面倒なことはやらない方針なのでディスクのパーティションは EndeavourOS等 のインストール ISO を立ち上げ GUI 状態で gparted を使って行います。gparted を使うのに ArcoLinux-D の ISO でも良いです。

準備として EndeavourOS等 のインストールメディア(USB)、Arch Linux のインストールメディア(USB)、ipa フォントのファイル、の3つをあらかじめ用意します。





Sec-2.ディスク準備及びリポ不調の備え

1) ディスク準備
 ディスクとして 120GB ぐらいの SSD を用意しました。いつもの調子で BIOS 互換モードで使います。
EndeavourOS などのインストールメディアを立ち上げてから gparted を立ち上げます。
前に別のディストリに使われていた SSD と仮定します。
最初に全てのパーティションを消した後、edit --- apply all operations やります。
その後で念の為、いったん device --- create partition table --- (MSDOS type)でapply やります。
念の為というのは、gdisk で処理された SSD の場合 BIOS モード用の MBR を書き込むスペースが取られていない可能性があるためです。
MSDOS type でパーティションテーブルを作っておくとこの領域が確保される・・・らしいです。よく知りませんが、笑。
次に Arch Linux のためのパーティションを切っておきます。この場合

とします。ラベルは何でも良いです。swap は適当です。
このように処理すると、sda1、sda2、sda3 についてそれぞれ、mkfs.ext4、mkfs.ext4、mkswap の処理がされますので、すぐ使えます。

注:sda sdb とかは使用している環境によると思います。以下の記述はインストール対象の SSD が /dev/sda と仮定します。



2) リポ不調の備え
 どうやらかって Arch Linux あるあるだった事柄が、2022-07 頃時点で改善が図られている模様です。言ってみればちょうど過渡期。
Arch や ArcoLinux だとシステム運用中に pacman -S hoge とかしても署名(キー)がおかしくてインストール出来ない事態が割合と発生しがちです。
この場合一つの方法として

(a)
# pacman -Sy archlinux-keyring

参照もと
https://nanxiao.me/en/update-keyring-first-if-your-arch-linux-is-old-enough/

という方法があるようです。

 また、Archwiki から得た情報では以下のようにやっても良いようです。
「Archwiki  pacman-key  トラブルシューティング  全ての鍵のリセット」を見てください。

(b)
# rm -rf /etc/pacman.d/gnupg
# pacman-key --init
# pccman-key --populate archlinux

とやります。いずれの方法も keyring だか署名だかを更新します。で、そのあと # pacman -Syy を一度やります。そうすると普通にパッケージのインストール等ができるようになります。(なるようです)

 もう一つ、思いっきり強引な方法も思いつきました。良いか悪いかは別として、以下のようにやってもイケます。
つまり、pacman がまともに動いているマシンの /etc/pcaman.d/gnupg の中身を tar 玉にしておきます。まともに動いている Arch linux のマシンで

(c)
# cd /etc/pacman.d/gnupg
# tar /hogehoge/gnupg.tar *  .g*

とやります。最後の .g* はそんな名前のファイル(大きさゼロ)がたまたまあるからです。一応w
こんな具合に tar 玉を作っておいてリポ不調のマシンで /etc/pacman.d/gnupg を入れ替えます。


運用中の Arch Linux システムでリポ不調が発生した時に試したところ、上記3つともうまく行きました。



* keyring 関係のことの経緯
 どうも「あるある」だった事柄について、2022-07 時点のいま改善を図りつつある模様です。
最近 ArcoLinux の更新をやっていると自分で入れた覚えは無いですが archlinux-keyring てのが更新として入ってくるようです。
これは多分改善しているのかな・・・と想像しています。確かに ArcoLinux では更新エラーが発生しなくなっていますし。
今回の改善の動きで抜本的になおると期待したいですが、果たしてどうでしょうか?





Sec-3.CUIにインストール

このセクションは以下の2つのサイトを参考にしました。著者さんありがとうございます。

https://qiita.com/shiyzuha/items/d09a4930cc204087b08c

ArchLinux wiki 「インストール」のところ





1) キーボード設定
 マシンをBIOS互換モードにして Arch Linux のインストールメディア(USB)を立ち上げます。まず、以下のコマンドを打ちます。
私の使っているキーボードは日本語キーボード。しかも標準だとaの左は Capslock なので、これが Ctrl キーになるようにします。

# loadkeys jp106
# loadkeys caps-swap.map  

caps-swap.map というファイルの中身は以下のとおり。nano を使って入力するか別のマシンに用意しておいて sftp などでこっちに持ってきます。ようするに capslock と ctrl の入れ替えです。入れ替えなくても良い人はやらなくて良い作業です。

keymaps 0-1,4-5,8-9,12
keycode 29 = Caps_Lock
keycode 58 = Control



2)マウント
 以下のコマンドでマウントします。

# mount /dev/sda2 /mnt
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot
# swapon /dev/sda3




3) 時間の設定
以下のコマンドで時間設定します。とりあえず一旦 systemd-timesyncd を動かします。

# timedatectl set-ntp true
# timedatectl set-timezone Asia/Tokyo

 私は CUI インストールを完了後に chrony とか ntp とかに代えますけど。



4) mirror の設定(mirrorlist の編集)
 よくある例ではやるように書いてありますが、やらなくても良いです。やらなくてもインストールできます。面倒なことはやめます。




5) パッケージインストール
 以下のようにパッケージをインストールします。
linux-firmware はうちの場合には入れないとキー入力が受付られませんでした。入れずにやってみたら OS は立ち上がったけどログインできなかったと言う意味です。
openssh はいざという時リモートでログイン出来るようにしておきたい。networkmanager は無いと不便です。
nano は私が emacs 派だから入れます。


# pacstrap /mnt base linux linux-firmware openssh networkmanager nano

 2022-07-01 頃のインストールメディアを使って 2022-07-27 にインストール作業をやったらこの段階でインストールエラーが署名だかキーだかの関係で発生しました。それで上記の(a),(b),(c)いずれも試してみたところ、(c) はうまくいきました。 (a) (b)はだめでした。運用中のシステムだと (a) (b) ともうまく行くのですが、USB から立ち上げたインストール用の Arch ではうまくいきません。

インストーラを立ち上げた状態のまま力技の(c)処理をしてから、もう一度パッケージをインストールやりなおしました。


# pacstrap /mnt base linux linux-firmware openssh networkmanager nano

これでパッケージインストールがうまくいきました。

おそらく Arch の場合はインストールその日くらいに最新の ISO イメージをダウンロードしないとダメなんだろうと思います。私みたいに一月遅れくらいの古いイメージを利用するのは無理っぽくて、力技が必要になります、汗。
Debian とか Almalinux だと半年くらい前のインストールイメージでも全然問題無いんですけどね、笑。
LTS カーネルが好みなら linux のところを linux-lts とすると LTS カーネルがインストールされます。firmware についてはそのまま linux-firmware で良いです。



6) fstab 作成

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

後で、cat /mnt/etc/fstab やって確認しておきます。




7) chroot する


# arch-chroot /mnt



8) timezone と時間の設定

# ln -sf /usr/share/zoneinfo/Asia/Tokyo  /etc/localtime
# hwclock --systohc



9) 文字コードの設定
 /etc/locale.gen というファイルの中身を以下のとおりにする。

en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8

このあと、# locale-gen を実行する。

また、/etc/locale.conf というファイルの中身を以下のとおりにする。

LANG=en_US.UTF-8



10) ホストネーム等の設定
 /etc/hostname 及び /etc/hosts の設定。適当に。




11) パスワード設定
root パスワード設定。適当に。




12) ブートローダインストール及び組み込み

# pacman -S grub os-prober amd-ucode
# grub-install --target=i386-pc --recheck /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg

 うちの場合 AMD の CPU なので amd-ucode です。intel CPU の場合は intel-ucode です。
64 ビットモードで動いていても名前は i386-pc です、笑。




13) ネットワークマネージャ等設定

# systemctl enable NetworkManager
# systemctl enable sshd




14) キーマップ設定(CUI用)
 /etc/vconsole.conf の中身を以下のようにします。CUI 用です。GUI はこれを見てません。

KEYMAP=jp106



15) ログアウトして再起動

# exit                                                                                                            
# umount -R /mnt                                                                                                   
# reboot

これで CUI モードで立ち上がる・・・・はずです、笑。
ルータが DHCP サーバ機能をやっているでしょうから、自動的にIPアドレスを決めて立ち上がっていると思います。
CUI 作業量が多いなら key-caps.map (最初に説明したヤツ)を作っておいて、いつでもキーの入れ替えが出来るようにしておくと便利です。
なお、最初の作業としては nmcli を使って静的 IP address に変えておくことでしょう。他のマシンからログインすることもあるでしょうから、動的 IP address では作業がやりにくくて仕方ないです、笑。
静的IP address への変更は Chap-19. Sec-4. を見てください。


また、この段階でユーザ登録(ルート以外のユーザ)しておいたほうが良いと思います。当然の作業なので説明省略。







Sec-4.GUI 化する

1) GNOME インストール、GUI化
 GNOMEが動くようにします。とりあえず、以下のものが定番パッケージだと思います。

# pcaman -S gnome  gnome-control-center gdm gnome-shell-extensions gnome-menus gnome-tweaks

インストール完了したあと # systemctl enable gdm とします。これでリブートすると次は GUI で立ち上がります。

* GUI化のやり方
 以前 debian 等では systemctl コマンドを使って multi-user.target graphical.target とか指定してCUIとGUIを使い分けました。
でも今回はそうじゃないです。gdm を有効化するだけです、多分。



2) 画面表示の日本語化
 まず基本的に CUI インストールした際の /etc/locale.gen /etc/locale.conf /etc/vconsole.conf は全てそのままにしています。
GNOME を立ち上げて「設定」からキーボードを日本語にします。
また GNOME-tweaks を立ち上げて「キーボードとマウス」「追加のレイアウトオプション」「ctrl position」から ctrl と caps-lock を入れ替えます(私の場合)。
しかしここまでの作業は出来ても、ロケールをクリックすると英語しか選べません。なのでここでひと工夫します。
最初に用意すると言った ipa フォントをインストールします。インストールの仕方は Chap-28. Sec-6. EndeavourOS のところを見てください。
おもしろいことにフォントをインストール後にリブートすると、次はロケールで英語と日本語が選べるようになります。なので、ここで日本語指定します。いったんログアウトして再度ログインすると、画面の表示が基本的に全て日本語になります。
これでようやく普通の日本語表示で動く Linux + GNOME になりました。
日本語入力 IM のインストールと設定など、これ以降の作業は Sec-6. にて。

 どうやら、日本語フォントのインストールをすると、システム(ないしはDE)が「お、こいつ日本語使おうとしているな。それならロケールに日本語も選べるようにしよう」と忖度してくれるようです、笑。よく出来ています。
なので結局のところ /etc/locale.gen /etc/locale.conf /etc/vconsole.conf は CUI 状態の時のままにして、いじらずに済ませました。
なお、ipa フォントを入れる代わりに noto-fonts-cjk を pacman でインストールしてもロケールに日本語が選べるようになると思います。そっちのほうが良いかもしれません。






Sec-5.CUI インストールしたものをサーバ化

 チャプタをおこしましたが書くことはあまりありません、笑。
DMZにマシンをおいてネットワークセキュリティを施した上で、マシンは要塞ホスト化します。Chap-basic-1. ネットワーク構築のところを見てください。あのとおりです。
 また私の場合、外部に提供するネットワークサービス(SMTP、HTTP)のサーバソフトは自分でコンパイル・インストールしています。なので設定ファイルは使いまわし出来ます。Debian、AlmaLinux、SUSE、Arch 等のどれを使っても基本的にやることは一緒です。
 またファイアーウォールも自分でスクラッチから書いた設定を使っているので、どのディストリでやっても同じです。使いまわし出来ます。こういう点は個人宅サバの便利なところです。業務用だとそんなやり方は無理でしょう、笑。


 1ヶ月弱のお試し運転ですが、特に問題なくインターネットサーバが運転できました。ローリング・リリース形式のヤツでサーバ運転なんてやらないだろ、ってツッコミは止めてください。宅サバです、笑。




****** 各種ソフトのコンパイルについて ************

  もしも postfix がうまくコンパイル出来ないなら $ make -f Makefile.init makefiles AUXLIBS=-lnsl でやってみるとイケると思います。


****** 注:インストールする時期によっては次のようになります。************

  postfix のためのリンク

# ln -s /usr/include/db5.3/db.h /usr/include/db.h
# ln -s /usr/lib/libdb-5.so /usr/lib/libdb.so

  Apache のためのリンク。上のリンクを貼った後で

# ln -s /usr/lib/libdb.so /usr/lib/libdb-6.2.so

  こうして3つのリンクを貼ることで postfix、apache がコンパイル出来ます。
  どうもインストールする時期によって pacstrap で入れる base パッケージの構成が異なっているようです。







Sec-6.GUI インストールしたもののお試し

 上記のように GUI 化できれば後は ArcoLinux と全く同じと言って良いと思います。なので実は書くことありません。
Chap-21. ArcoLinux のところを見てください。恐縮です。

 って書くとあまりにそっけないので、一つだけ追記。
ここまで文章ばかりで味気ないので写真も載せます、笑。

 二階のサーバールームで音楽聞いたりアマゾンプライム観たりするとき、デスクトップ機に USB Bluetooth ドングルを刺し Bletooth スピーカを使っていました。
最近になって、このドングルを刺しているとたまにうまく認識できずコケるディストリがあることに気づきました。このためスピーカを USB 接続で DAC 付きのものに変えました。送料込みで3000円程度でした。SANWA のヤツ。DAC もついて安いです!
アナログのヤツだと電源コードとアナログの音楽のコードの二本必要ですが、これだと USB 一本なので便利です。複数のマシンにつなぎ替えるのも簡単・便利です。


usb-sp


 そもそも何を書こうとしているかと言いますと、ネット見ていると Arch で音楽がブチブチ切れたり雑音が入るという記述をたまに見ます。なので無事に音楽が聞けるか、DVD再生などが無事に出来るか試してみました。その話です。
audacious、vlc、libdvdcss を入れてみました。
結論から言いますと、音楽がブチブチきれることは一切ありません。DVDも問題なくなめらかに再生出来ます。音も含めて。
GUI化したものも問題なく、良い感じです。

どうでも良い話ですが、安いスピーカーでもサーバールームで楽しむくらいなら十分イケると感じました、笑。



補足:yay のインストール
 ディストリによっては pacman で yay をいれるのもあるようです。Arch は pacman から入れるのではなく以下の参考サイトを見てやるのが良いです。著者さんありがとうございます。

https://qiita.com/Gen-Arch/items/ad7aef73cfc5a12b4e45

補足2:/etc/nsswitch.conf
 このディストリの /etc/nsswitch.conf は mdns が入っていません。それなりにセキュリティに配慮されているようです。確か EndeavourOS も同じでした。Arco は mdns の記述があるので、私は取りました。






Sec-7.全体の印象

 このセクションは私の独断的、個人的な印象のみです。

*まず使い方の3つの視点から見た評価です。
・サーバ系の利用について・・・・・・・・・十分に調子良いです。
・GUIでUNIXっぽい利用について・・・・・・・全然問題なく良好です。
・GUIでWinっぽい利用について・・・・・・・プリンタ設定はいろいろと作業が必要です。それ以外の事柄は良好です。

*次にセキュリティー上の視点からの評価ですが、Chap-26-2. に示すカテゴリ2なので問題は無いだろうと思います。

 それで、全体的にどう思うかということです。
 インストールが面倒すぎるので無条件におすすめディストリとは言いづらいです。
 ただし、その一方でOSの出来栄えは良好です。ArcoLinux で感じた堅固さとか安定感は同じです。出来栄えについては Arch Linux と ArcoLinux は似ていると思います。
 かって ArcoLinux で何度も経験したリポ不調、更新できないというエラー発生は、Arch Linux にもあったようです。しかしちょうど現時点(2022-08 )で両者とも改善が図られつつあるようです。