コンテンツへスキップ

Raspberry Pi 3 B+ のOSカーネルバージョンアップ

Jetson Nano のUbuntuやIntel NUCに入れたUbuntuを整備していて、Raspberry PiのOSバージョンが気になったので、ファームウェアのアップデートとOSカーネルのアップグレードを実施。
ちなみにJetson Nanoには、Ubuntu 18.04.3 LTS、Intel NUCにも18.04.3 LTSが導入されています。CPUがことなるので、それぞれaarch64,とx86_64版が入ってます。
同じ世代のOSだと、同じ管理方法となり扱いが楽です。

Raspberry Pi OSアップグレード方法

  1. sudo rpi-update ファームウェアとOSのアップグレード
  2. sudo reboot 再起動
  3. sudo apt update 更新パッケージ更新
  4. sudo apt dist-upgrade -y パッケージアップデート
  5. sudo apt autoremove -y 不要パッケージ削除
  6. sudo apt autoclean 不要ファイル削除
  7. sudo reboot 再起動

sudo rpi-update

Raspberry Pi のOSアップグレードの最初のステップ。Raspberry PiのファームウェアとOSのカーネルをバージョンアップします。

@raspberrypi:~ $ sudo rpi-update
[sudo] パスワード:
*** 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
*** We're running for the first time
*** Backing up files (this will take a few minutes)
*** Remove old firmware backup
*** Backing up firmware
*** Remove old modules backup
*** Backing up modules 4.19.75-v7+
Partition size 94M may not be sufficient for new Pi4 files
This could result in a system that will not boot.
256M FAT partition is recommended. Ensure you have a backup if continuing.
Would you like to proceed? (y/N)
#############################################################
WARNING: 'rpi-update' updates to pre-releases of the linux
kernel tree and Videocore firmware.

'rpi-update' should only be used if there is a specific
reason to do so - for example, a request by a Raspberry Pi
engineer.

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
100 168 0 168 0 0 556 0 --:--:-- --:--:-- --:--:-- 556
100 115M 100 115M 0 0 4125k 0 0:00:28 0:00:28 --:--:-- 5130k
*** Updating firmware
*** Updating kernel modules
*** depmod 4.19.85-v7+
*** depmod 4.19.85+
*** depmod 4.19.85-v7l+
*** depmod 4.19.85-v8+
*** Updating VideoCore libraries
*** Using HardFP 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 77dcda76ee94df7fd87cb956ece906812e059c66
*** A reboot is needed to activate the new firmware

Raspberry Piに導入しているOS

Linux raspberrypi 4.19.85-v7+ #1279 SMP Fri Nov 22 15:41:04 GMT 2019 armv7l GNU/Linux

Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster

Jetson Nanoに導入しているOS

Linux jetson 4.9.140-tegra #1 SMP PREEMPT Tue Jul 16 17:04:49 PDT 2019 aarch64 aarch64 aarch64 GNU/Linux

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

Intel NUCに導入しているOS

Linux Intel-NUC 4.15.0-1064-oem #73-Ubuntu SMP Tue Nov 12 12:25:21 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

USBのブートディスクをSD Cardに変更

USBブート構成にしていたUSB HDDの領域をSD Cardにコピーしました。
通常の記事は、別方向(ノーマルのSD CardからUSB HDDへクローン作成)ですが、
この記事は、逆方向となります。
実は、Intel NSCが不安定だったり、USB Cameraカメラが不安定だったりと、実は、USB接続機器が不安定な事象が続きました。
この手順でSD Cardブート構成に戻すと安定稼働となりました。

Raspberry PiにSD Card Copierを導入し、ディスクコピー/クローンを作成しました。

  • 小さい容量のSDカードにコピー
  • USB HDDでブート中のシステムで実施(稼働中システムのブート領域をコピー)

コピー元ディスク(USB HDDディスク)

/sda1がブート領域、/sda2がルート領域です。

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: SPZX-00Z10T0
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: 0x5d7437c0

Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 194559 192512 94M c W95 FAT32 (LBA)
/dev/sda2 194560 976773119 976578560 465.7G 83 Linux

コピー先SDカード

Disk /dev/sdb: 119.1 GiB, 127865454592 bytes, 249737216 sectors
Disk model: Flash Reader
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: 0x00032c03

SD Card Copierでデータコピー実施

SD Card Copierを起動し、Copy From Device(コピー元)とCopy To Device(コピー先)を選択して、データコピーを行います。

コピー後のブート関係およびマウント関係のデバイスパス変更

コピーして作成した/dev/sdb1のcmdline.txtと、/dev/sdb2の /etc/fstabを変更。

cmdline.txt変更

root@raspberrypi:~# mkdir /mnt/temp_mnt
root@raspberrypi:~# mount /dev/sdb1 /mnt/temp_mnt/
root@raspberrypi:~# cd /mnt/temp_mnt/
root@raspberrypi:/mnt/temp_mnt# vi cmdline.txt

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
変更前:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
変更後:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

/etc/fstab変更

root@raspberrypi:/mnt/temp_mnt# cd
root@raspberrypi:~# umount /mnt/temp_mnt
root@raspberrypi:~# mount /dev/sdb2 /mnt/newboot/
root@raspberrypi:~# cd /mnt/newboot/
root@raspberrypi:/mnt/newboot# vi /etc/fstab
変更前:
proc            /proc           proc    defaults          0       0
/dev/sa1        /boot           vfat    defaults          0       2
/dev/sda2       /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that
変更後:
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that

bootしてこない場合などは、fstabの設定を確認してください。
上手く変更出来ていない事があるようです。

Tensorflowのインストール

Tensorflowは、Kerasのバックエンドに使われていたり、各種機械学習のフレームワークを利用する際に、よく出てきます。
個人的には、GPU対応パッケージが準備されており、そのサポート範囲が広いので重宝しております。

使用できるパッケージ

  • tensorflow - 最新の安定版リリース、CPU のみ(Ubuntu、Windows 用)
  • tensorflow-gpu - 最新の安定版リリース、GPU サポートを含む(Ubuntu、Windows 用)
  • tf-nightly - ナイトリー ビルドのプレビュー、CPU のみ(不安定)
  • tf-nightly-gpu - ナイトリー ビルドのプレビュー、GPU サポートを含む(不安定、Ubuntu と Windows 用)

Pip/Pip3コマンドでTensorFlow/TnesorFlow-GPUをインストール

インストールコマンドのサンプルを記載しておきます。

# Current stable release for CPU-only
pip3 install tensorflow

# Preview nightly build for CPU-only (unstable)
pip3 install tf-nightly

# Install TensorFlow 2.0 Beta
pip3 install tensorflow==2.0.0-beta0

以下が、Windows環境にGPU対応版をインストールした場合です。

@windows>pip3 install tensorflow-gpu
...
Successfully installed setuptools-41.0.1 tensorflow-gpu-1.14.0

参考にさせて頂いたサイト

pip での TensorFlow のインストール

NVIDIA Jetson Nano

NVIDIA CUDA Toolkit 10.0 に対応しcuDNN 7.3など、機械学習時にデファクトスタンダートとなっているライブラリやフレームワークが、利用可能になっています。
TensorFlow や PyTorch、Caffe、Keras、MXNet などの機械学習 (ML) フレームワークに対応しています。ネイティブにインストールすることができます。

Raspberry Pi with NCS2 VS Jetson

導入時に気になったのは、開発者コミュニティーです。
Raspberry Piは、歴史もあり、世界中の方々が同じような悩みを持ち、各種解決策がWEBに公開されています。一方で、NVIDIA Jetson Nanoは、どの程度このようなコアユーザーによる情報公開などがされているのか気になりました。

結論からするとNVIDIAの社員や関係者が協力にサポート、情報発信。
さすが、大手ですね、ハードの共有体制もRaspberry Pi と比べて感心しましたが、開発コミュニティーへの社員の書き込みが、本当にすごい。
オープンコミュニティの新しい形にも見えました。ハードでビジネスは成立し、技術者が率先して、コミュニティに参加。これは、弱点と感じた部分を、むしろ強み(正しい情報、責任感ある素早い対応)にしております。
あとは、ケースやファンなど、市場の大きさに合わせて、周辺のアクセサリーメーカーが追従してくれば、IoTにおけるローエンドエッジデバイスの筆頭になりそうです。
個人的には、Intel NCS2も引き続き注目して行きます。OpenCVのDNNに対応していたりと、まだまだ一長一短があるように感じます。
ただし、機械学習や推論を目的としたIoTデバイスの本命は、Jetson Nanoになりそうです。IntelのNCSはベアボーン系のミニPCかな。

関連記事:

NVIDIA Jetson Nanoで機械学習(推論)

Movidius Neural Compute Stick2とRaspberry Pi 3B +も利用しておりますが、GPU/推論向けデバイスが一体化されており、少しサイズは大きいです。
USB3.0などI/Fに差分もあるので、Raspberry Pi 4Bと比較したほうが良いかもしれません。ただし、Raspberry Pi 4B と NCS2を同時導入すると考えると、Jetson Nanoのほうがコストパフォーマンスが良いと思いますし、便利なフレームワーク利用により、開発時の手間(コスト)も考えると、機械学習にはNVIDIA Jetson Nanoがベストな選択と思います。NVIDIAですから。

Jetson Nano、Raspberry Pi 3B + with NCS2 速度比較

めざましじゃんけん時に取得したWEBカメラ画像を216枚で画像認識エンジンを動作させた際の性能比較です。
以前同じテストを用いて、NCS2(Movidius Neural Compute Stick 2)導入により十分高速化された結果となりました。今回は、その結果と比べても十分に魅力的なJetson Nanoの結果が出ました。

参考記事:ディープラーニング向けUSBアクセラレーターNeural Compute Stick 2ー

Windows(GPU未使用)
Core i7 6700/(Skylake) クロック周波数:3.4GHz
15秒 opencv.dnn
Raspberry Pi 3
Model B+
ARM Cortex-A53 1.4GHz
785秒 opencv.dnn
Raspberry Pi 3
Model B+
ARM Cortex-A53 1.4GHz
+  Movidius Vision Processing Unit(Myriad 2)
105秒 opencv.dnn
NVIDIA Jetson Nano
Quad-core ARM A57 @ 1.43 GHz
109秒 opencv.dnn
NVIDIA Jetson Nano
Quad-core ARM A57 @ 1.43 GHz
+ 128-core Maxwell
46秒 Keras-YOLO
2019-08-14 20:34:48,460:202:INFO:ループ開始:D:\pic4ml\Janken_Target_Test\20190806_055717_102196_1.jpg 処理回数:1
2019-08-14 20:35:03,389:256:INFO:ジャンケン結果判定 Len(total_results): 3 List Values: 0,2,5
019-08-14 20:35:03,390:289:INFO:ジャンケン結果:Chokiを出してLose、相手はGoo
2019-08-15 12:11:10,292:202:INFO:ループ開始:/home/miki/cronScript/Janken_Target_Test/20190806_055717_102196_1.jpg 処理回数:1
2019-08-15 12:24:15,786:256:INFO:ジャンケン結果判定 Len(total_results): 3 List Values: 0,2,5
2019-08-15 12:24:15,787:289:INFO:ジャンケン結果:Chokiを出してLose、相手はGoo
2019-08-24 12:16:09,419:202:INFO:ループ開始:/home/miki/cronScript/Janken_Target_Test/20190806_055717_102196_1.jpg 処理回数:1
2019-08-24 12:17:54,200:256:INFO:ジャンケン結果判定 Len(total_results): 3 List Values: 0,2,5
2019-08-24 12:17:54,201:289:INFO:ジャンケン結果:Chokiを出してLose、相手はGoo
created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)

関連記事:NVIDIA JETSON NANO

Intel Neural Compute Stick 2

Rapberry PiからPHPでメール送信(SSMTP経由)

PHPの利用するコンフィグファイルを確かめます。
コマンドラインで実行する場合は、WEBサーバで利用するコンフィグファイルは、通常異なります。

root@raspberrypi:~# php --ini
Configuration File (php.ini) Path: /etc/php/7.3/cli
Loaded Configuration File: /etc/php/7.3/cli/php.ini
Scan for additional .ini files in: /etc/php/7.3/cli/conf.d
Additional .ini files parsed: /etc/php/7.3/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.3/cli/conf.d/10-opcache.ini,
/etc/php/7.3/cli/conf.d/10-pdo.ini,
/etc/php/7.3/cli/conf.d/15-xml.ini,
/etc/php/7.3/cli/conf.d/20-calendar.ini,
/etc/php/7.3/cli/conf.d/20-ctype.ini,
/etc/php/7.3/cli/conf.d/20-curl.ini,
/etc/php/7.3/cli/conf.d/20-dom.ini,
/etc/php/7.3/cli/conf.d/20-exif.ini,
/etc/php/7.3/cli/conf.d/20-fileinfo.ini,
/etc/php/7.3/cli/conf.d/20-ftp.ini,
/etc/php/7.3/cli/conf.d/20-gd.ini,
/etc/php/7.3/cli/conf.d/20-gettext.ini,
/etc/php/7.3/cli/conf.d/20-iconv.ini,
/etc/php/7.3/cli/conf.d/20-imap.ini,
/etc/php/7.3/cli/conf.d/20-json.ini,
/etc/php/7.3/cli/conf.d/20-mbstring.ini,
/etc/php/7.3/cli/conf.d/20-mysqli.ini,
/etc/php/7.3/cli/conf.d/20-pdo_mysql.ini,
/etc/php/7.3/cli/conf.d/20-pdo_pgsql.ini,
/etc/php/7.3/cli/conf.d/20-pgsql.ini,
/etc/php/7.3/cli/conf.d/20-phar.ini,
/etc/php/7.3/cli/conf.d/20-posix.ini,
/etc/php/7.3/cli/conf.d/20-readline.ini,
/etc/php/7.3/cli/conf.d/20-shmop.ini,
/etc/php/7.3/cli/conf.d/20-simplexml.ini,
/etc/php/7.3/cli/conf.d/20-sockets.ini,
/etc/php/7.3/cli/conf.d/20-ssh2.ini,
/etc/php/7.3/cli/conf.d/20-sysvmsg.ini,
/etc/php/7.3/cli/conf.d/20-sysvsem.ini,
/etc/php/7.3/cli/conf.d/20-sysvshm.ini,
/etc/php/7.3/cli/conf.d/20-tokenizer.ini,
/etc/php/7.3/cli/conf.d/20-wddx.ini,
/etc/php/7.3/cli/conf.d/20-xmlreader.ini,
/etc/php/7.3/cli/conf.d/20-xmlwriter.ini,
/etc/php/7.3/cli/conf.d/20-xsl.ini

コマンドライン向けPHP構成ファイルphp.iniのsendmail_pathを変更

root@raspberrypi:~# vi /etc/php/7.3/cli/php.ini

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =
sendmail_path = /usr/sbin/ssmtp -t

PHPのメール送信サンプルスクリプト

メールヘッダーにマルチバイト文字を利用する際は、mb_encode_mimeheaderを用いて、エンコーディングを行います。

<?php

function send_notice($title, $message){
$to = "kenichi.miki@gmail.com";
$headers = "From:". mb_encode_mimeheader("メール通知") ."<notice@192.168.0.108>".PHP_EOL;
if(mb_send_mail($to, $title, $message,$headers)){
echo "メールを送信しました";
} else {
echo "メールの送信に失敗しました";
}
}

send_notice("テストRaspi","メッセージテスト");

SSMTP利用時のFromアドレス

SSMTPの設定によって、メールを送付するプログラムで指定したFromアドレスが無効化されます。プログラムで指定したFromアドレスを有効化するために、ssmtp.confの設定を確認します。

@raspberrypi:~/cronScript $ sudo vi /etc/ssmtp/ssmtp.conf

#
# Config file for sSMTP sendmail
#


(省略)

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

2019/10/08 EaseUS様より連絡いただき、ダウンロードサイトのURLを日本語ページに修正しました。

Raspberry Pi ブートUSB HDDから異音

SDカードブートから変更:Raspberry Pi 3B + SDカードブートからUSBブートへ変更

結論として、HDDブート構成で運用しておりました。
SSDとHDDでのブート構成を比較し、速度的にも理論上最速。USB2.0接続の時点で、HDD性能で十分(HDD以上の性能はUSB2.0がボトルネック)

SDカード
CLASS6
6MB/S
SDカード
CLASS10
10MB/S
USB2.060MB/S
SSD470MB/S
HDD140MB/S
USB3.0(参考)640MB/S

突然の異音、たしかにHDDとSSDを施行した際に、試行で利用した10年前ぐらいのHDDを利用しておりました。

Raspberry Pi ブートHDD交換方法

Raspberry Piに新規HDDを接続し、コピーする方法もありますが、前回Windowsの起動ディスクを交換する際に利用した「EaseUS Todo Backup」を用います。
EaseUS Todo Backup Free
関連記事:Windows起動ディスク交換

Raspberry Pi システム停止

動作中HDD情報を確認し、Raspberry Piを停止します。

root@raspberrypi:~# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 458G 40G 395G 10% /
devtmpfs 433M 0 433M 0% /dev
tmpfs 438M 0 438M 0% /dev/shm
tmpfs 438M 46M 392M 11% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 438M 0 438M 0% /sys/fs/cgroup
/dev/sda1 93M 40M 54M 43% /boot
tmpfs 88M 0 88M 0% /run/user/1001
root@raspberrypi:~# shutdown

Raspberry Pi ブートHDDのクローン作成

利用したいたRaspberry Pi ブートハードディスクと新規ハードディスクをWindowsに接続し、EaseUS Todo Backupを用いて、ディスクのクローンを作成します。

 

Raspberry Pi クローン後HDDで起動

root@raspberrypi:~# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 458G 39G 396G 9% /
devtmpfs 433M 0 433M 0% /dev
tmpfs 438M 0 438M 0% /dev/shm
tmpfs 438M 13M 425M 3% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 438M 0 438M 0% /sys/fs/cgroup
/dev/sda1 93M 40M 54M 43% /boot
tmpfs 88M 0 88M 0% /run/user/1001

root@raspberrypi:~# fdisk -l
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/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 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
Disklabel type: dos
Disk identifier: 0x00000000

Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 31116287 31108096 14.9G c W95 FAT32 (LBA)


Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: SPZX-00Z10T0
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: 0x5d7437c0

Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 194559 192512 94M c W95 FAT32 (LBA)
/dev/sda2 194560 976773119 976578560 465.7G 83 Linux

WESTERNDIGITAL HDD 内蔵ハードディスク 2.5インチ 1TB WD Blue WD10SPZX

WESTERNDIGITAL (WD)のHDDへ交換しました。
はじめは、TOSHIBA 東芝 2.5インチ 1TB HDD MQ04ABF100を購入予定でした。
各種口コミにおいて、SMR方式(プラッタあたり1TB、1TBのHDDならばプラッタ1枚)なので、ランダムアクセス時の性能が安定しないとの書き込みや、ベンチマークが多くみられました。比較的、最近リリースされた製品であり、価格も魅力的だったのですが、今回は、WDのHDDとしました。

Benfei SATA USB変換アダプターもHDDのクローンを作成する際に利用するのに同時に購入しました。

WESTERN DIGITAL WD Blue 2.5インチ内蔵HDD 1TB SATA6Gb/s 5400rpm 128MB 厚み7mm(WD10SPZX)
Benfei SATA USB変換アダプター 2.5インチSSD /HDD用 SATA3 ケーブル コンバーター 5Gbps 高速 SATA USB3.0変換ケーブル 給電不要[un]

Raspberry PiのApache2にドメイン名指定の仮想ホスト

サブドメインを用いて、Apache2のVirtualHostを設定します。
Raspberry Piで運用している「aaa.com」がApacheのメインサイトに設定されている環境で、「bbb.aaa.com」のサブドメインに新規WEBサーバーバーチャルホストを設定します。WEBリクエストのURLの違いにより、表示する/利用するWEBサーバーの切替が行われます。

前提条件など

VirtualHost向け設定ファイル

テンプレートファイル「000-default.conf」をコピーして、今回作成するVirtualHost設定ファイルの雛形を作成し、設定ファイルを作成します。

@raspberrypi:/etc/apache2/sites-available $ pwd
/etc/apache2/sites-available
@raspberrypi:/etc/apache2/sites-available $ sudo cp 000-default.conf  bbb.aaa.com.conf

コピーして作成したbbb.aaa.com.confファイルを編集。

<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.

ServerName bbb.aaa.com

ServerAdmin webmaster@bbb.aaa.com
DocumentRoot /var/www/bbb.aaa.com

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

VirtualHost設定の有効化とApache2への反映

a2ensite コマンドを用いて、作成した設定ファイルをAvailable からEnabelへ。

sudo a2ensite bbb.aaa.com.conf

Apacheを再起動して、VirtualHostは利用可能となります。
sudo service apache2 restart

NVIDIA Jetson NanoのCUDAが最適では?

4GB Raspberry Pi 4 Computer Model Bをついに導入かと秒読み状態でしたが、
そういえば、NVIDIAから気になるシングルボードNvidia Jetson Nano。
少し調べましたが、NVIDIA JETSON NANOが正解では?

「Raspberry Pi 4 model B」の発売日が、2019年6月24日。
「NVIDIA JETSON NANO」の発売発表が、2019年3月。
ほとんど差がありません。しかも、国内での発売状況を見ると、しっかりとリリースに向けて準備できているNVIDIA。更に数多くの上位機種。品質面も安心?

すべての機械学習や画像検出を、シングルボードコンピューターで動作させることを考えている方におすすめだと思います。

画像検出のFPSパフォーマンス

一目瞭然、ここまでの速度が達成出来るんだ。
しかも、こんなに多くのフレームワークに対応している。
たしかに、NVIDIA CUDAですものね。。

Raspberry Pi3やIntel Neural Compute Stick2などとの比較もバッチリです。
Raspberry Pi 4とIntel Neural Compute Stick2の組み合わせを考えましたが、おそらく、NVIDIA128CUDAコアに、数多くのフレームワークサポート。
どちらが安全な買い物かと考えると、答えは簡単と思います。

さて、Intel Neural Compute Stick2をすでに導入している私のシステムですが、そのような状況下でもNVIDIA Jetson Nanoの導入を判断しました。

NVIDIA Jetson Nano仕様

GPU128 基の NVIDIA CUDA® コアを実装した NVIDIA Maxwell アーキテクチャ
CPUクアッドコア ARM® Cortex®-A57 MPCore プロセッサ
メモリ4 GB 64 ビット LPDDR4
ストレージ16 GB eMMC 5.1 フラッシュ
ビデオ エンコード4K @ 30 (H.264/H.265)
ビデオ デコード4K @ 60 (H.264/H.265)
カメラ12 レーン (3x4 または 4x2) MIPI CSI-2 DPHY 1.1 (1.5 Gbps)
コネクティビティギガビット イーサネット
ディスプレイHDMI 2.0 または DP1.2 | eDP 1.4 | DSI (1 x2) の 2 つ同時
UPHY1 x1/2/4 PCIE、1x USB 3.0、3x USB 2.0
I/O1x SDIO / 2x SPI / 4x I2C / 2x I2S / GPIOs
サイズ69.6 mm x 45 mm
コネクタ260 ピン エッジ コネクタ

NVIDIA Jetson NanoとRaspberry Pi4との比較

Raspberry Pi 4NVIDIA Jetson Nano
CPUQuad-core ARM Cortex-A72 64-bit @ 1.5 GhzQuad-Core ARM Cortex-A57 64-bit @ 1.42 Ghz
GPUBroadcom VideoCore VI (32-bit)NVIDIA Maxwell w/ 128 CUDA cores @ 921 Mhz
Memory4 GB LPDDR4**4 GB LPDDR4
NetworkingGigabit Ethernet / Wifi 802.11acGigabit Ethernet / M.2 Key E (for Wifi support)
Display2x micro-HDMI (up to 4Kp60)HDMI 2.0 and eDP 1.4
USB2x USB 3.0, 2x USB 2.04x USB 3.0, USB 2.0 Micro-B
Other40-pin GPIO40-pin GPIO
Video EncodeH264(1080p30)H.264/H.265 (4Kp30)
Video DecodeH.265(4Kp60), H.264(1080p60)H.264/H.265 (4Kp60, 2x 4Kp30)
CameraMIPI CSI portMIPI CSI port
StorageMicro-SDMicro-SD
created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)

アダプタでの給電を利用する方は、ジャンパーピンが必要です。

created by Rinker
BULLET
¥420 (2024/03/18 21:43:26時点 Amazon調べ-詳細)

ラズベリーパイ4 コンピューターモデルB

基盤のパワーアップもしていたし、発表当初より気になっていた、Raspberry Pi4が手に入らないかと、Amazonを探したら、すでに発売されていますね。

以前の記事:1GB,2GB,4GBメモリサイズが選べるRaspberry Pi 4、3 +との比較情報

確かに、9月発売ぐらいが予想されていたから、ちょうど今のタイミングかもしれませんね。
残念ながら、公式のHPに4Bの日本での認証取得は掲載されておりませんでした。

https://www.raspberrypi.org/documentation/hardware/raspberrypi/conformity.md

Raspberry Pi 4 Computer Model Bの特徴

  • CPU
    Raspberry Pi 4 Model BのCPUは、高性能スマートフォンなどにも採用されている最新のARM Cortex-A72 アーキテクチャーを採用し、よりリアルPCへと進化しています。
    動作クロックもPi3の1.2GHzから1.5GHzになり、アーキテクチャーの更新と合わせて異次元のスピードとなっています。
  • RAM
    旧モデルまでの1GBに加え、2GB、4GBのモデルがラインナップに加わりました。
    AI、データベースなど、よりリッチなアプリケーションで応用いただけます。
  • ビデオ出力・GPU
    搭載GPUは、4Kp@60をサポートし、新たにH.265デコード、OpenGL ES 3.0などにも対応しました。
    ビデオ出力は、より小型なコネクターのmicro HDMIが2つ搭載され、2画面出力にも対応しました。
  • USB 3.0
    新しいSoCになり、I/O周りも高速化し、ついにUSB 3.0に対応しました。
    USBブートなどもより高速になり、さらに便利になりました。
  • ネットワーク
    Gigabit Ethernet(有線LAN)も、Pi 3B+の300Mbpsから、1000Mbps(論理値)に大幅スピードアップしました。
    また、Bluetoothも対応バージョンが5.0にアップし、2倍の転送速度となりました。
  • 電源入力コネクター
    電源入力コネクターがUSB type Cに変更されました。 micro USBに比べ使い勝手もよく、より大電流を確実に給電できるようになりました。
    なお、Raspberry Pi 4 Model Bの電源要件は5V 3.0Aと旧モデルより高くなっています。
  • ビジネス ユース向けサポート
    Raspberry Pi 4 Model Bの供給継続予定は少なくとも2026年1月まで、また動作温度範囲の目安が0~50℃と、ビジネス ユースでも安心してご採用いただけます。
  • 互換性
    Raspberry Pi 4 Model Bは、旧モデルからビデオ出力、電源入力コネクターなどが変更されたため、 ケース、電源など一部のオプションに互換性がなくなりました。
    ただ、サイズ、形状、GPIOピンの仕様などには変更がないため、ほとんどのHAT、モジュールなどは、 旧モデルと共通のものが使用できます。

仕様

基本仕様

SoCBroadcom BCM2711
CPU1.5GHz クアッドコア Cortex-A72(ARMv8、64bit)
GPUデュアルコア VideoCore IV®
OpenGL ES 3.0対応、ハードウェアOpenVG対応、1080p60 H.264 デコード、 4Kp60 H.265 デコード
メモリー1GB DDR2 450MHz 低電圧 SDRAM
2GB DDR2 450MHz 低電圧 SDRAM
4GB DDR2 450MHz 低電圧 SDRAM
電源USB type Cソケット 5V 3.0A / 2.54mm ピンヘッダー / PoE(要オプションPoE HAT)
サイズ85 × 56 × 18mm

インターフェース

イーサネット10/100/1000 Base-T RJ45 ソケット
無線LAN(WiFi)IEEE 802.11 b/g/n/ac  2.4/5GHz ディアルバンド
BluetoothBluetooth 5.0, Bluetooth Low Energy
ビデオ出力micro HDMI、コンポジット 3.5mm 4極ジャック(PAL、NTSC)、DSI
オーディオ出力3.5mm 4極ジャック、HDMI(ビデオ出力と共有)、I2Sピンヘッダー
USBUSB 2.0 × 2
USB 3.0 × 2
GPIO コネクター40ピン 2.54mm ピンヘッダー(GPIO×26 3.3V 16mA、UART、I2C、SPI、I2S、PWM、5V出力(使用電源に依存)、3.3V出力 50mA(GPIO信号との総和))
メモリー カード スロットmicro SDメモリーカード(SDIO)

Raspberry Pi 4のUSB Type-C充電不具合(eMaker)

動作検証出来ておりませんが、公式もこの不具合を認めており、導入時には注意が必要です。

不具合内容は、ケーブルの電気的特性などを記録するeMakerを内蔵したUSB Type-Cケーブルを利用すると、Raspberry Pi 4に給電が出来ません。Raspberry Pi 4側の設計がUSB Type-Cの仕様に準拠していないことが要因なので、eMakerを内蔵しない方法で電源を供給する必要があります。

eMakerに対応していないケーブルを探すのも良いのですが、スペックの低いケーブルを探すのも難しく、「USB-AのACアダプタ + A to Cケーブル」を使用する方法が簡単と思います。3A出せるUSB-AのACアダプタが必要になりますが、Amazonなどで感t何位見つけることが出来ます。

created by Rinker
Amazonベーシック(AmazonBasics)
¥771 (2022/04/04 07:19:52時点 Amazon調べ-詳細)

 

dnsutilsをRaspberry Piに導入

GMO とくとく BB 固定IPアドレスの逆引き設定などをしていると、ネットワークユーティリティnslookupやdigなどが利用したくなります。
Raspberry Piには、デフォルトで導入されておらず、自分でインストールする必要がありました。

sudo apt-get install dnsutils

nslookupとdig実行例

miki@raspberrypi:~ $ nslookup yahoo.co.jp
Server: 192.168.0.2
Address: 192.168.0.2#53

Non-authoritative answer:
Name: yahoo.co.jp
Address: 183.79.135.206
Name: yahoo.co.jp
Address: 182.22.59.229

miki@raspberrypi:~ $ dig yahoo.co.jp

; <<>> DiG 9.11.5-P4-5.1-Raspbian <<>> yahoo.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32231
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;yahoo.co.jp. IN A

;; ANSWER SECTION:
yahoo.co.jp. 159 IN A 182.22.59.229
yahoo.co.jp. 159 IN A 183.79.135.206

;; Query time: 41 msec
;; SERVER: 192.168.0.2#53(192.168.0.2)
;; MSG SIZE rcvd: 72