Raspberry Pi 4にArch Linux 64bit入れてみた

Arch Linux

我が家には2台のラズパイがあり、以下の通り運用しています。

①Nextcloudサーバー
②WordPressサーバー、sambaサーバー、ウィルススキャンサーバー



両方ともRaspberry Pi OSなのですが、Arch Linuxにしてみようと思い立ちました。
 Arch Linuxは結構好きだったりする。
 このPCもEndeavour OSだし

↓の記事では躓いて諦めたのですが、その後解決して使える状態になったので、まとめます。

Arch Linux 64bitインストール

↑の記事にも書いてありますが、改めて。

まずこのサイトの手順に従い、Arch Linux 64bitをmicroSDか何かに入れます。
 以降microSDとして説明

Raspberry Pi 4 | Arch Linux ARM



このInstallationに書いてあるとおりやれば問題なくインストール作業が完了すると思います。



自分の環境では以下の通り/etc/fstabに追記が必要でした。
追記しないとReadOnlyになってしまうのですが、
真因はまだわかっていないです…

$ sudo vi /etc/fstab 
# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
/dev/mmcblk0p1  /boot   vfat    defaults        0       0
/dev/mmcblk0p2  /   ext4    defaults        0       0 # <- 追記

rpi-updateでファームウェア更新

お次はrpi-updateでファームウェアを更新。
元情報は↓のYoutubeに書いてあるコメント。



具体的には以下の通り。
rpi-updateはRaspberry Pi上でないと動かないので注意。

$ git clone https://github.com/Hexxeh/rpi-update
$ cd rpi-update
$ sudo BOOT_PATH=$HOME/boot ROOT_PATH=$HOME/root ./rpi-update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
 *** Performing self-update
 *** Relaunching after update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
FW_REV:ecb31dc9a698ff9d17d9a5a24550ea5b9aaea7eb
 *** We're running for the first time
 *** Backing up files (this will take a few minutes)
 *** Remove old firmware backup
 *** Backing up firmware
 *** Backing up modules 6.1.21-v8+
WANT_32BIT:0 WANT_64BIT:1 WANT_PI4:1
#############################################################
WARNING: This update bumps to rpi-6.1.y linux tree
See: https://forums.raspberrypi.com/viewtopic.php?t=344246
'rpi-update' should only be used if there is a specific
reason to do so - for example, a request by a Raspberry Pi
engineer or if you want to help the testing effort
and are comfortable with restoring if there are regressions.
DO NOT use 'rpi-update' as part of a regular update process.
##############################################################
Would you like to proceed? (y/N)
 *** Downloading specific firmware revision (this will take a few minutes)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  116M    0  116M    0     0   9.9M      0 --:--:--  0:00:11 --:--:-- 10.9M
 *** Updating firmware
 *** Updating kernel modules
 *** depmod 6.1.25-v8+
 *** Updating VideoCore libraries
 *** Using SoftFP libraries
 *** Updating SDK
 *** Running ldconfig
 *** Storing current firmware revision
 *** Deleting downloaded files
 *** Syncing changes to disk
 *** If no errors appeared, your firmware was successfully updated to ecb31dc9a698ff9d17d9a5a24550ea5b9aaea7e

起動

microSDをRaspberry Piに装着して起動します。

ログインは、
 ユーザー名 alarm
 パスワード alarm

もしくは、
 ユーザー名 root
 パスワード root

で入れます。

とりあえずpacmanで最新に。

$ sudo pacman-key --init
$ sudo pacman-key --populate archlinuxarm
$ sudo pacman -Suy

ここまでで素のArch Linuxが動く状態になりました。

素のviだときついのでvimを入れます。

$ sudo pacman -S vim



後々使うであろうyayも。
 参考記事

$ sudo pacman -S base-devel git go
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -si

# 後始末
$ cd ..
$ rm -rf yay

タイムゾーン設定

タイムゾーンをAsia/Tokyoに設定。
 参考記事

$ sudo timedatectl set-timezone Asia/Tokyo

IPアドレスの固定

デバイス名を確認すると、end0であることがわかります。

$ ip a show
(略)
2: end0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 12:34:56:78:90:ab brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.94/24 brd 192.168.1.255 scope global end0
       valid_lft forever preferred_lft forever
(略)



end0用の設定ファイルを作成。

$ sudo vim /etc/systemd/network/end0.network 
[Match]
Name=end0

[Network]
Address=192.168.1.23/24
Gateway=192.168.1.1
DNS=192.168.1.1

# もともとen*向けの設定ファイルがあったので削除
$ sudo rm /etc/systemd/network/en*.network

# 設定反映のため再起動
$ sudo reboot

ホスト名設定

初期状態ではホスト名がalarmなので、変更しておきます。

$ sudo vim /etc/hostname
nextcloud-server

# 設定反映のため再起動
$ sudo reboot

rootユーザーのパスワード変更

初期値ではパスワードがrootなので、忘れずに変更しておきます。

$ sudo -s 
passwd
New password: (パスワードを入力)
Retype new password: (パスワードを入力)
passwd: password updated successfully

新規ユーザー作成

新規ユーザーyasuを作成。
adduserがなかったのでuseraddで作成。
ついでに/etc/sudoersにも追加。

$ sudo useradd yasu

$ sudo passwd yasu
New password: (パスワードを入力)
Retype new password: (パスワードを入力)
passwd: password updated successfully

$ id
uid=1000(alarm) gid=1000(alarm) groups=1000(alarm),998(wheel)
$ id yasu
uid=1001(yasu) gid=1001(yasu) groups=1001(yasu)

$ visudo
(略)
yasu ALL=(ALL:ALL) ALL # 末尾に追加



もともとあったユーザーalarmは不要になったので、消します。

$ sudo userdel -r alarm
$ ls /home/
yasu
$ id alarm
id: 'alarm': no such user



もしuserdelでエラーが出た場合は、↓の記事に書いたとおり再起動すると良いです。

SSHログインに公開鍵認証を使うようにする

これはこちらの記事ほぼそのままなので、解説を譲ります。

ロケールの設定

まずロケールを追加します。
自分はen_US.UTF-8で使うことが多いですが、日本ロケールの場合はja_JP.UTF-8で。

$ sudo /etc/locale.gen
(略)
# en_JS.UTF-8 # <- 先頭の # を削除する
(略)

# ロケール生成
$ sudo locale-gen

# 起動時の設定
$ sudo vim /etc/locale.conf
LANG=en_US.UTF-8

argononedのインストール

自分はこのケースを使っているので、ファン及びスイッチ制御用のargononedを入れます。
Raspberry Pi OSだとaptで入れられますが、Arch Linuxでは自分で入れる必要があります。
 参考ページ

$ sudo pacman -S i2c-tools lm_sensors python
$ mkdir argonone
$ cd argonone
$ curl -o PKGBUILD https://raw.githubusercontent.com/Elrondo46/argonone/master/PKGBUILD
$ curl -o argonone.install https://raw.githubusercontent.com/Elrondo46/argonone/master/argonone.install
$ makepkg --install

$ sudo systemctl daemon-reload
$ sudo systemctl enable argononed



記事執筆時点ではargononed.pyに不具合がありまともに動かないので、修正しておきます。
 try節の直後にあるbus.write_byte()のところ。

$ sudo vim /opt/argonone/bin/argononed.py
(略)
def temp_check():
    fanconfig = ["65=100", "60=55", "55=10"]
    tmpconfig = load_config("/etc/argononed.conf")
    if len(tmpconfig) > 0:
        fanconfig = tmpconfig
    address = 0x1a
    prevblock = 0
    while True:
        temp = os.popen("cat /sys/class/thermal/thermal_zone0/temp").readline()
        val = float(temp) / 1000
        block = get_fanspeed(val, fanconfig)
        if block < prevblock:
            time.sleep(30)
        prevblock = block
        try:
            bus.write_byte(address,block) # もとは bus.write_byte_data(address,0,block)
        except IOError:
            temp = ""
        time.sleep(30)
(略)



設定して動作確認します。
一度「1」に設定して、ファンが全力で回ることを確認しておきましょう。

$ sudo argonone-config 
--------------------------------------
Argon One Fan Speed Configuration Tool
--------------------------------------
WARNING: This will remove existing configuration.
Press Y to continue:Y
Thank you.

Select fan mode:
  1. Always on
  2. Adjust to temperatures (55C, 60C, and 65C)
  3. Customize behavior
  4. Cancel
NOTE: You can also edit /etc/argononed.conf directly
Enter Number (1-4):2

Please provide fan speeds for the following temperatures:
55C (0-100 only):10
60C (0-100 only):50
65C (0-100 only):100
Configuration updated.

# 後始末
$ cd ..
$ rm -rf argonone

docker, docker-composeのインストール

自分はNextcloud環境でdockerを使うので、dockerとdocker-composeを入れます。

$ sudo pacman -S docker docker-compose



Nextcloudをdockerで動かす方法はこの記事で解説しているので、ご興味あればどうぞ。

vpnclientのインストール

自分はAWSにあるLightSailとでSoftEtherによるVPNを構築しているので、vpnclientを入れます。
ほぼこの記事そのままです。



証明書による認証に変更。



電源ON時にvpnclient自動起動してvpnserverに自動接続するよう設定。



以上でだいたい初期設定は終わりです。
あとはお好みに合わせていじっていけばいいと思います。

ちなみにこれがhtopしたときの画像です。
メモリは265M使用ということで、だいぶ軽いことがわかります!

終わりに

いかがでしたか。

PCでのノウハウがほぼそのまま使えるので、意外にササッと設定できますよ!

Comments

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