OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

Ubuntu Server 20.04をROCK 4C Plusへインストール後の初期設定

カテゴリ:OSSセットアップ | ソフトウェア:Linux | タグ:
最終更新日: | 公開日:2023/01/15

目次

概要

 2022年は半導体不足の影響でRaspberry Piが常時品薄状態で、なかなか手に入りませんでした。 代替になるようなシングルボードコンピュータがないか探していたところ、中国のRadxaがリリースしている「ROCK 4C Plus」という製品を見つけました。 採用されているSoCはラズパイとは異なるRockchip RK3399-Tですが、ボードのサイズやインタフェース(USB、HDMI等)のレイアウトがラズパイに似ています。 スペックはほぼ同等のように見えますが、ストレージとしてmicroSDカードだけでなくM.2 SSDやeMMCを搭載できる点が面白そうだったので試しに1枚購入してみました。

 ROCK 4C Plusをラズパイ4Bと並べて家庭内サーバの1機能(何を入れるかは未定)を担わせるために公式のOSイメージの中から Ubuntu Server 20.04 LTSを選択してインストールしました。 インストール後に最低限の初期設定を行ったので、その時の作業履歴を元に手順書として残しておきます。

構成

サーバ構成

ハードウェア

 ハードウェアはROCK 4C Plusのメモリ4GBモデルを利用しました。 ハードウェアスペックは以下のとおりです。 PoE Hatはラズパイ4B用のものを流用しています。

■ハードウェアスペック
項目内容
SoCRockchip RK3399-T
CPUDual Cortex-A72, frequency 1.5GHz
Qual Cortex-A53, frequency 1.0GHz
GPUMali T860MP4
メモリ64bit dual channel LPDDR4@3200Mb/s 4GB
有線ネットワークGbE LAN with Power over Ethernet (PoE)
ストレージmicroSDカード , NVMe SSD 128GB , eMMC 64GB
ディスプレイLG 24ML600S-W
キーボードFILCO FKBC91MRL/JB2
マウスLogicool M325

OS

Ubuntu Server 20.04 LTS arm64

ソフトウェア・パッケージ

 使用したOSイメージファイルは以下のファイル名です。

  • rockpi4c_ubuntu_focal_server_arm64_20210126_0004-gpt.img.gz

環境構築

インストール

ROCK 4C Plusのシステムディスク作成

 RadxaのWikiで公開されている公式のOSイメージをWindows PCにダウンロードして、RufusでmicroSDカードに書き込みました。 公式WikiではEtcherというツールでOSイメージを書き込む手順が掲載されていますが、Rufusで書き込んだ場合でも問題なくUbuntuが起動したので やっている処理としては同じなのだと思われます。なお、使用したUbuntu Server 20.04のOSイメージは下記URLからダウンロードしました。

 Official Images Ubuntu 20 Server(Linux 4.4)

 Rufusを使用してOSイメージをmicroSDカードへ書き込む手順は以下のページに掲載しています。

 CentOS 7.8.2003をRaspberry Pi 4のmicroSDカードへインストール

設定

パッケージ情報の更新

 パッケージを最新化する前段階としてリポジトリのパッケージ一覧を最新化します。

rock@rock-4c-plus:~$ sudo apt update
[sudo] password for rock: ←これが表示された場合はrockユーザのパスワードを入力
Get:1 http://apt.radxa.com/focal-stable focal InRelease [2359 B]
Err:1 http://apt.radxa.com/focal-stable focal InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9B98116C9AA302C7
Get:2 http://ports.ubuntu.com/ubuntu-ports focal InRelease [265 kB]
Get:3 http://ports.ubuntu.com/ubuntu-ports focal-security InRelease [114 kB]
Get:4 http://ports.ubuntu.com/ubuntu-ports focal-updates InRelease [114 kB]
Get:5 http://ports.ubuntu.com/ubuntu-ports focal-backports InRelease [108 kB]
Get:6 http://ports.ubuntu.com/ubuntu-ports focal/main arm64 Packages [940 kB]
Get:7 http://ports.ubuntu.com/ubuntu-ports focal/main Translation-en [506 kB]
Get:8 http://ports.ubuntu.com/ubuntu-ports focal/restricted arm64 Packages [1300 B]
Get:9 http://ports.ubuntu.com/ubuntu-ports focal/restricted Translation-en [6212 B]
Get:10 http://ports.ubuntu.com/ubuntu-ports focal/universe arm64 Packages [8458 kB]
Get:11 http://ports.ubuntu.com/ubuntu-ports focal/universe Translation-en [5124 kB]
Get:12 http://ports.ubuntu.com/ubuntu-ports focal/multiverse arm64 Packages [114 kB]
Get:13 http://ports.ubuntu.com/ubuntu-ports focal/multiverse Translation-en [104 kB]
Get:14 http://ports.ubuntu.com/ubuntu-ports focal-security/main arm64 Packages [1351 kB]
Get:15 http://ports.ubuntu.com/ubuntu-ports focal-security/main Translation-en [316 kB]
Get:16 http://ports.ubuntu.com/ubuntu-ports focal-security/restricted arm64 Packages [4416 B]
Get:17 http://ports.ubuntu.com/ubuntu-ports focal-security/restricted Translation-en [200 kB]
Get:18 http://ports.ubuntu.com/ubuntu-ports focal-security/universe arm64 Packages [710 kB]
Get:19 http://ports.ubuntu.com/ubuntu-ports focal-security/universe Translation-en [151 kB]
Get:20 http://ports.ubuntu.com/ubuntu-ports focal-security/multiverse arm64 Packages [3068 B]
Get:21 http://ports.ubuntu.com/ubuntu-ports focal-security/multiverse Translation-en [5464 B]
Get:22 http://ports.ubuntu.com/ubuntu-ports focal-updates/main arm64 Packages [1655 kB]
Get:23 http://ports.ubuntu.com/ubuntu-ports focal-updates/main Translation-en [399 kB]
Get:24 http://ports.ubuntu.com/ubuntu-ports focal-updates/restricted arm64 Packages [4608 B]
Get:25 http://ports.ubuntu.com/ubuntu-ports focal-updates/restricted Translation-en [213 kB]
Get:26 http://ports.ubuntu.com/ubuntu-ports focal-updates/universe arm64 Packages [940 kB]
Get:27 http://ports.ubuntu.com/ubuntu-ports focal-updates/universe Translation-en [235 kB]
Get:28 http://ports.ubuntu.com/ubuntu-ports focal-updates/multiverse arm64 Packages [8200 B]
Get:29 http://ports.ubuntu.com/ubuntu-ports focal-updates/multiverse Translation-en [7408 B]
Get:30 http://ports.ubuntu.com/ubuntu-ports focal-backports/main arm64 Packages [45.3 kB]
Get:31 http://ports.ubuntu.com/ubuntu-ports focal-backports/main Translation-en [16.3 kB]
Get:32 http://ports.ubuntu.com/ubuntu-ports focal-backports/universe arm64 Packages [24.3 kB]
Get:33 http://ports.ubuntu.com/ubuntu-ports focal-backports/universe Translation-en [16.3 kB]
Reading package lists... Done
W: GPG error: http://apt.radxa.com/focal-stable focal InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9B98116C9AA302C7
E: The repository 'http://apt.radxa.com/focal-stable focal InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

アップデート可能なパッケージの更新

 最新化したパッケージ一覧を元にアップデート可能なパッケージを更新します。

rock@rock-4c-plus:~$ sudo apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  libubootenv-tool libubootenv0.1 uuid-runtime
The following packages will be upgraded:
  adwaita-icon-theme alsa-utils apt apt-transport-https avahi-daemon avahi-utils base-files bash bind9-host bind9-libs binutils binutils-aarch64-linux-gnu
  binutils-common blueman bluez bluez-obexd bsdutils busybox-initramfs ca-certificates cpio dbus dbus-user-session dirmngr distro-info-data dpkg e2fsprogs
  fdisk gcc-10-base gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-gtk-3.0 gir1.2-nm-1.0 gir1.2-packagekitglib-1.0 glib-networking
  glib-networking-common glib-networking-services gnupg gnupg-l10n gnupg-utils gnupg2 gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm gpgv
  gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-x gtk-update-icon-cache gzip initramfs-tools initramfs-tools-bin
  initramfs-tools-core isc-dhcp-client jq klibc-utils kmod libapparmor1 libapt-pkg6.0 libasn1-8-heimdal libasound2 libasound2-data libatk-bridge2.0-0
  libatopology2 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-core7 libavcodec58 libavutil56 libbinutils libblkid1 libbluetooth3 libbrotli1
  libc-bin libc6 libcaca0 libcom-err2 libcryptsetup12 libctf-nobfd0 libctf0 libcups2 libcurl3-gnutls libdbus-1-3 libdns-export1109 libdpkg-perl libdrm-common
  libdrm2 libexpat1 libext2fs2 libfdisk1 libflac8 libfreetype6 libfribidi0 libgcc-s1 libgcc1 libgcrypt20 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common
  libgirepository-1.0-1 libglib2.0-0 libglib2.0-bin libglib2.0-data libgmp10 libgnutls30 libgomp1 libgssapi-krb5-2 libgssapi3-heimdal libgssdp-1.2-0
  libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer-plugins-good1.0-0 libgstreamer1.0-0 libgtk-3-0 libgtk-3-common libgupnp-1.2-0
  libharfbuzz0b libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed5 libhx509-5-heimdal libicu66 libisc-export1105 libjbig0
  libjpeg-turbo8 libjq1 libjson-c-dev libjson-c4 libk5crypto3 libkeyutils1 libklibc libkmod2 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libksba8
(========== 中略 ==========)
Setting up dbus-user-session (1.12.16-2ubuntu2.3) ...
Setting up gstreamer1.0-plugins-bad:arm64 (1.16.3-0ubuntu1) ...
Setting up packagekit (1.1.13-2ubuntu1.1) ...
Setting up gpg-wks-client (2.2.19-3ubuntu2.2) ...
Setting up blueman (2.1.2-1ubuntu0.3) ...
Setting up software-properties-common (0.99.9.8) ...
Setting up gnupg (2.2.19-3ubuntu2.2) ...
Setting up gnupg2 (2.2.19-3ubuntu2.2) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for libc-bin (2.31-0ubuntu9.9) ...
Processing triggers for mime-support (3.64ubuntu1) ...
Processing triggers for ca-certificates (20211016ubuntu0.20.04.1) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
Processing triggers for initramfs-tools (0.136ubuntu6.7) ...
ln: failed to create hard link '/boot/initrd.img-4.4.194-11-rk3399-rockchip-g1bb08d49cc40.dpkg-bak' => '/boot/initrd.img-4.4.194-11-rk3399-rockchip-g1bb08d49cc40': Operation not permitted
update-initramfs: Generating /boot/initrd.img-4.4.194-11-rk3399-rockchip-g1bb08d49cc40
Processing triggers for libgdk-pixbuf2.0-0:arm64 (2.40.0+dfsg-3ubuntu0.4) ...

OSのリブート

 パッケージの更新が終わったらOSをリブートします。

rock@rock-4c-plus:~$ sudo reboot

タイムゾーンの設定

 タイムゾーンは初期設定では「UTC(協定世界時)」が設定されていますので、「東京」に変更します。

rock@rock-4c-plus:~$ timedatectl
               Local time: Wed 2023-01-11 02:08:50 UTC
           Universal time: Wed 2023-01-11 02:08:50 UTC
                 RTC time: Wed 2023-01-11 02:08:50
                Time zone: Etc/UTC (UTC, +0000) ←初期設定は「UTC」
System clock synchronized: no
              NTP service: n/a
          RTC in local TZ: no
rock@rock-4c-plus:~$ sudo timedatectl set-timezone Asia/Tokyo
[sudo] password for rock: ←これが表示された場合はrockユーザのパスワードを入力
rock@rock-4c-plus:~$ timedatectl
               Local time: Wed 2023-01-11 11:09:29 JST
           Universal time: Wed 2023-01-11 02:09:29 UTC
                 RTC time: Wed 2023-01-11 02:09:29
                Time zone: Asia/Tokyo (JST, +0900) ←「東京」に変更した
System clock synchronized: no
              NTP service: n/a
          RTC in local TZ: no

キーマップの設定

 キーマップは初期設定では設定されていません。TeraTermで接続して操作する際には初期設定のままでも困ることはありませんでしたが、 コンソールで操作する際に日本語キーボードのキーマップどおりに入力されなくて少し面倒なので、設定を変更します。 設定変更後、ログアウト/ログインでは変更が反映されなかったので、リブートして設定を変更しました。

rock@rock-4c-plus:~$ localectl
   System Locale: LANG=C.UTF-8
       VC Keymap: n/a ←初期設定は「該当なし」
      X11 Layout: us
       X11 Model: pc105
rock@rock-4c-plus:~$ sudo localectl set-keymap jp106
rock@rock-4c-plus:~$ localectl
   System Locale: LANG=C.UTF-8
       VC Keymap: jp106 ←「jp106」に変更した
      X11 Layout: jp
       X11 Model: jp106
     X11 Options: terminate:ctrl_alt_bksp
rock@rock-4c-plus:~$ sudo reboot ←変更を反映するためにリブート

固定IPアドレスの設定

 ROCK 4C Plusの公式OSイメージを利用すると、Red Hat系でも標準でも採用されているNetworkManagerがインストール済みになっています。 初期状態はDHCPでIPが自動設定されていますが、これを固定IPに変更します。 nmcliコマンドでIPアドレス、デフォルトゲートウェイ、DNSサーバを設定します。 設定後にコネクションを再起動して変更を反映させます。(このタイミングでTeraTermは切断されました)

rock@rock-4c-plus:~$ dpkg --list | grep network-manager
ii  network-manager                                               1.22.10-1ubuntu2.3                arm64        network management framework (daemon and userspace tools)
rock@rock-4c-plus:~$ nmcli c
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  3ea7c401-0a6a-3178-9428-989b42209e6a  ethernet  eth0
rock@rock-4c-plus:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether b6:0e:2e:67:ea:d6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.206/24 brd 192.168.0.255 scope global dynamic noprefixroute eth0
       valid_lft 82491sec preferred_lft 82491sec
    inet6 fe80::2b81:4aa4:a02a:7243/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state DORMANT group default qlen 1000
    link/ether e8:fb:1c:34:a7:a1 brd ff:ff:ff:ff:ff:ff
rock@rock-4c-plus:~$ sudo nmcli c mod "Wired connection 1" ipv4.address 192.168.0.111/24
[sudo] password for rock: ←これが表示された場合はrockユーザのパスワードを入力
rock@rock-4c-plus:~$ sudo nmcli c mod "Wired connection 1" ipv4.gateway 192.168.0.1
rock@rock-4c-plus:~$ sudo nmcli c mod "Wired connection 1" ipv4.dns 192.168.0.1
rock@rock-4c-plus:~$ sudo nmcli c mod "Wired connection 1" ipv4.method manual
rock@rock-4c-plus:~$ sudo nmcli c down "Wired connection 1" && sudo nmcli c up "Wired connection 1"
(========== TeraTermは切断されるので新たに設定したIPアドレスに再接続する ==========)
rock@rock-4c-plus:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether b6:0e:2e:67:ea:d6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.111/24 brd 192.168.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::2b81:4aa4:a02a:7243/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state DORMANT group default qlen 1000
    link/ether e8:fb:1c:34:a7:a1 brd ff:ff:ff:ff:ff:ff

ディスク構成の確認

 ROCK 4C Plusには、microSDカード(システム用)、NVMeのSSD(空っぽ)、eMMC(空っぽ)を接続しています。 この状態でfdiskコマンドで一覧表示すると以下のように見えます。今後ディスク構成を考える上でのメモとして。。

rock@rock-4c-plus:~$ sudo fdisk -l
[sudo] password for rock:
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/nvme0n1: 119.25 GiB, 128035676160 bytes, 250069680 sectors ←NMVe SSD
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: E8BF9528-45B0-4433-8B38-D34BF170A52D


Disk /dev/mmcblk0: 59.49 GiB, 63864569856 bytes, 124735488 sectors ←microSDカード
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: D2A181A0-0987-4E6A-9B90-EDF27AC62F20

Device           Start       End   Sectors  Size Type
/dev/mmcblk0p1      64      8063      8000  3.9M Microsoft basic data
/dev/mmcblk0p2   16384     24575      8192    4M Microsoft basic data
/dev/mmcblk0p3   24576     32767      8192    4M Microsoft basic data
/dev/mmcblk0p4   32768   1081343   1048576  512M EFI System
/dev/mmcblk0p5 1081344 124733535 123652192   59G Linux filesystem


Disk /dev/mmcblk1: 57.63 GiB, 61865984000 bytes, 120832000 sectors ←eMMC
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xefb3d526




Disk /dev/mmcblk1boot1: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mmcblk1boot0: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

参考にしたサイト