※ 内部接続 NVMe または USB 接続 SSD 等 から立ち上げる事を想定しています。
※ インストール作業は前回の『 Raspberry Pi5 で動く ArchLinux(CUI環境)を MicroSD カードにインストールする https://qiita.com/FukudaGyuuen/items/984c3418cc530302643f 』の MicroSD カードを使用します
※『 Raspberry Pi5 』に SSD / NVMe を接続して新規インストールします
※ 前回の方法で Windows PC の仮想環境下、または他の Linux PC に SSD / NVMe 等を接続してインストールする場合は、 config.txt / cmdline.txt / fstab の設定をする箇所だけ追加して見て下さい。
※ ファイアウォールの設定の説明はしていません
※ 公開・秘密鍵の作り方は説明していません
※ SSH による遠隔操作をしない時は、それらは全て読み飛ばして下さい
※ 下記のサイトを参考にしています
https://archlinuxarm.org/forum/viewtopic.php?t=16659
https://qiita.com/tyokai/items/38886c6c359ab0d98552
※ 作業環境:Raspberry Pi5( SSH 接続時の説明のみ Windows )
◆ Raspberry Pi5 に ArchLinuxARM がインストールされた MicroSD カードを挿入して立ち上げ root でログインしてください
login:root
password:パスワードの入力
◆ アップデート
# pacmann -Syu
◆ インストールに必要なパッケージをインストール
# pacman -S gdisk f2fs-tools base base-devel devtools dosfstools ntfs-3g
◆ インストールメディアの名称を確認
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 8:0 1 115.4G 0 disk
|-mmcblk0p1 8:1 1 767M 0 part
`-mmcblk0p2 8:2 1 114.7G 0 part
nvme0n1 259:0 0 476.9G 0 disk
├─nvme0n1p1 259:1 0 511M 0 part
└─nvme0n1p2 259:2 0 476.4G 0 part
※ 例は NVMe で、USB接続の場合は sda 等と表示されると思います(以下必要に応じて読み替えて下さい
◆ パーティション等の作成
# gdisk /dev/nvme0n1
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y
Command (? for help): n
Partition number (1-128, default 1): 1
First sector : エンターキー押す
Last sector : 512MiB
Hex code or GUID : EF00
Changed type of partition to 'EFI system partition'
Command (? for help): n
Partition number (2-128, default 2): 2
First sector : エンターキー押す
Last sector : エンターキー押す
Hex code or GUID : 8300
Changed type of partition to 'Linux filesystem'
Command (? for help): w
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/nvme0n1.
The operation has completed successfully.
◆ フォーマット・マウント
# mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 -F /dev/nvme0n1p2
# mkfs.vfat -F 32 /dev/nvme0n1p1
# mount /dev/nvme0n1p2 /mnt
# mkdir /mnt/boot
# mount /dev/nvme0n1p1 /mnt/boot
◆ 必要なパッケージのインストール
# pacstrap /mnt base base-devel linux-rpi linux-firmware raspberrypi-bootloader firmware-raspberrypi archlinuxarm-keyring f2fs-tools dosfstools openssh nano dhcpcd
◆ マウントポイントの生成
# genfstab -U /mnt >> /mnt/etc/fstab
◆ マウントポイントが生成されたか確認
# cat /mnt/etc/fstab
◆ マウントポイントの修正(必要に応じて)
$ sudo nano /mnt/usb/etc/fstab
※下記のように修正(修正されていれば不要です)
# <file system> <dir> <type> <options> <dump> <pass>
#/dev/mmcblk0p1 /boot vfat defaults 0 0
/dev/nvme0n1p1 /boot vfat defaults 0 0
※ USB 接続の SSD 等にインストール場合は『 nvme0n1p1 』を『 sda1 』等に読み替えて下さい
◆ 見掛けのルートディレクトリの変更
※この作業を行わないと、MicroSD カードに変更を加える事になります
# arch-chroot /mnt
◆ 時刻の設定
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc
# hwclock
※正しい時刻が表示されたら成功です
◆ ロケール
# nano /etc/locale.gen
en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8
※ Ctrl+w で上記をそれぞれ検索して先頭の # を削除して保存 Ctrl+o 終了 Ctrl+x
# locale-gen
# nano /etc/locale.conf
LANG=en_US.UTF-8
#LANG=ja_JP.UTF-8
※現時点では日本語入力環境を使用しないので先頭に # を入れます
◆ キーボード
# nano /etc/vconsole.conf
KEYMAP=jp106
※上記を記述して保存終了して下さい Ctrl+x で 保存するかに y と答える
◆ ホスト名の設定
# nano /etc/hostname
HOSTNAME
※ ホスト名を記述して保存終了( HOSTNAME は例です )
# nano /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 HOSTNAME.localdomain HOSTNAME
※ 上記を記述して保存終了
◆ ネット環境の設定
● ネットワークの確認
# ip link
● DHCPクライアントの有効化
# systemctl enable dhcpcd@end0.service
※例は『 end0 』で、前述の『 ip link 』で表示されたご自身の有線 LAN に読み替えて下さい
● Systemd サービスの有効化(遠隔操作しない場合は次の root パスワードの設定に進んで下さい)
# systemctl enable systemd-networkd.service
# systemctl enable systemd-resolved.service
● SSH サービスの有効化(遠隔操作しない場合は次の root パスワードの設定に進んで下さい)
$ systemctl enable sshd.service
● SSH の設定(遠隔操作しない場合は次の root パスワードの設定に進んで下さい)
$ sudo nano /etc/ssh/sshd_config
※設定を有効化するために、下記の項目の先頭の # を外します
ポートの設定
Port 22
使用する鍵
HostKey /etc/ssh/ssh_host_ed25519_key
ログインに鍵を使用
PubkeyAuthentication yes
※一旦これで保存終了します
◆ root パスワードの設定
# passwd
New password:
Retype new password:
◆ config.txt の設定
# nano /boot/config.txt
※一番下に追記( usb 接続の場合は nvme を usb に読み替えて下さい)
[all]
dtparam=nvme
※ RTC用バッテリーを接続している場合は以下も記述して下さい
#### Enabling battery charging ####
dtparam=rtc_bbat_vchg=3000000
◆ cmdline.txt の設定
# nano /boot/cmdline.txt
※下記のように変更します(usb 接続の場合は nvme0n1p2 を sda2 等に読み替えて下さい)
#root=/dev/mmcblk0p2 rw rootwait console=serial0,115200 console=tty1 fsck.repair=yes
root=/dev/nvme0n1p2 rw rootwait console=serial0,115200 console=tty1 fsck.repair=yes
◆ chroot を抜けて再起動
# exit
# shutdown -h now
◆ MicroSD カードを抜いて再度起動
◆ root でログイン
login:root
password:パスワードを入力
◆ アップデートの実行
# pacman -Syu
※上記のアップデートに失敗した時は下記を試してください
◆ pacman-key の初期化(アップデートに失敗した場合)
# pacman-key --init
# pacman-key --populate archlinuxarm
# pacman -Syu
◆ ユーザーを追加・パスワード設定
# useradd -m -s /bin/bash USERNAME
# passwd USERNAME
New password:
Retype new password:
※ USERNAME は例です(以下同文)
◆ ユーザーに sudo 権限を与える
# EDITOR=nano visudo
※一番下に追記します
※なお、先頭に # を付けると、その行はすべてがコメント扱いになります
#### My Setings ####
USERNAME ALL=(ALL) ALL
◆ 再起動してユーザーとしてログイン
# exit
login: NSERNAME
password:パスワードの入力
◆ sudo 権限の確認
$ sudo pacman -Syu
※一番最初に色々文言が出ますが、エラーでなければパスワード入力を求めて来ます
※パスワード入力後もエラーが出なければ成功です
◆ SSH 設定の続き(遠隔操作をしない場合は、上記で作業終了です)
● SSH サービスの設定ファイルに変更を加える(接続先) ArchLinux
$ sudo nano /etc/ssh/sshd_config
※以下の内容を変更・追記
root によるログインを拒否
#PermitRootLogin prohibit-password の直下に追記
PermitRootLogin no
ログインの試行回数
#MaxAuthTries 6 -> MaxAuthTries 4
空のパスワードによるログインを拒否
PermitEmptyPasswords no
◆ SSH 接続
※既に接続元( 例は Windows )で公開・秘密鍵を作っているものとします
※インストールしたてで接続先( Raspberry Pi5 )に .ssh フォルダが無いので、下記のコマンドを Windows のターミナルから入力
PS C:\Users\username> cd .ssh
PS C:\Users\username> type id_ed25519.pub | ssh USERNAME@HOSTNAME "mkdir /home/USERNAME/.ssh; cat >> /home/USERNAME/.ssh/authorized_keys"
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes と入力してリターンキーを押します
なお、 y では通りません
※パスワードの入力を求められますが、この時点では入力するパスワードは『接続先ユーザーのパスワード』です
● Raspberry Pi5 に鍵が登録されたか確認します
$ cd .ssh
$ ls
authorized_keys
※上記が表示されたら鍵の登録は成功しています
※以後、SSH で遠隔操作する時に入力するパスワードは『鍵認証用のパスワード』になります
● 鍵以外ではログインできないようにします
※ これを設定しないと、最終的に普通のパスワードでのログインが出来てしまいます
$ sudo nano /etc/ssh/sshd_config
以下の場所の下に、追記をして通常のパスワードによる接続を拒否します
#PasswordAuthentication yes
PasswordAuthentication no
保存終了します
● sshd のサービスを再起動させます
$ systemctl restart sshd.service
これで終了です
公開・秘密鍵の作成方法( Windows )やファイアウォールの設定は、機会があれば別の項目を作る予定です(必ずやるとは言ってない)
(/・ω・)/ コロコロコロ =〇