Raspberry Pi + Ubuntu + .NET Core で GPIO「Part1 OS 環境構築」

SD カードの準備

使用した OS イメージは Raspberry Pi 用の Ubuntu Server 22.04 LTS ubuntu-22.04-preinstalled-server-arm64+raspi.img.xz
ここから入手します。
https://ubuntu.com/download/raspberry-pi

書き込みは Raspberry Pi Imager
ここから入手します。
https://www.raspberrypi.org/software/

OS の構成

日本語キーボードレイアウト

以下のコマンドでツールを起動して

$ sudo dpkg-reconfigure keyboard-configuration

以下の順に選択していきます。
Generic 105-key PC
Japanese
Japanese
The default for the keyboard layout
No compose key
しばらく待って

$ sudo reboot

Wi-Fi 接続

/etc/netplan/ に設定ファイルを追加します。

$ sudo vi /etc/netplan/99-network-config.yaml

中身は以下のようなかんじ。

network:
    wifis:
      wlan0:
        optional: true
        dhcp4: true
        access-points:
          "MySSID":
            password: "PassW0rd!"
    version: 2

変更を反映します。

$ sudo netplan apply

IP アドレスの割り当てなどを確認します。

$ ip address show

諸々の更新

これはお決まりですね。

$ sudo apt update
$ sudo apt upgrade

ツール類

raspi-config

raspi-config をインストールします。以下のサイトを参考にさせて頂きました。
Raspberry Pi 4B を自宅 (Ubuntu) サーバにする - yamk blog

$ sudo su -
# echo "deb http://archive.raspberrypi.org/debian/ buster main" >> /etc/apt/sources.list
# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7FA3303E
# apt update
# apt install raspi-config
# exit
$

raspi-config で I2C の ON/OFF などの設定ができるらしいです。

i2c-tools

i2c-tools をインストールします。

$ sudo apt install i2c-tools

このように、接続を確認できて便利っぽいです。

$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- 5c -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

ASP.NET Core Runtime

インストール

  • ランタイムの .tar.gz ファイル を公式サイトから入手します。

    • x86-64 システムでは可能な apt による方式は、現時点で ARM64 非対応
    • ここで使用したのは以下のファイル
      • aspnetcore-runtime-6.0.7-linux-arm64.tar.gz
  • お好きなインストール先へ展開します。

$ sudo mkdir -p /bin/dotnet6
$ sudo tar zxf aspnetcore-runtime-6.0.7-linux-arm64.tar.gz -C /bin/dotnet6

環境設定

システムへのパス設定

  • /etc/profile.d 内に export-dotnet.sh ファイルを新規作成します。
export DOTNET_ROOT=/bin/dotnet6
export PATH=$PATH:$DOTNET_ROOT
  • 再起動。
$ sudo reboot
  • 確認。
$ dotnet --info

global.json file:
  Not found

Host:
  Version:      6.0.7
  Architecture: arm64
  Commit:       0ec02c8c96

.NET SDKs installed:
  No SDKs were found.

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.7 [/usr/bin/dotnet6/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.7 [/usr/bin/dotnet6/shared/Microsoft.NETCore.App]

Download .NET:
  https://aka.ms/dotnet-download

Learn about .NET Runtimes and SDKs:
  https://aka.ms/dotnet/runtimes-sdk-info

sudo のパス設定

  • sudo のときもパスが通るようにするため、 /etc/sudoerssecure_path にパスを書き加えます。/etc/sudoers を破壊するとたいへんな事になるので visudo を使うらしいです。
$ sudo visudo
  • /bin/dotnet6 を書き加えています。
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/bin/dotnet6"
  • 確認。
$ sudo dotnet --info

global.json file:
  Not found

...省略...