ラベル Ubuntu の投稿を表示しています。 すべての投稿を表示
ラベル Ubuntu の投稿を表示しています。 すべての投稿を表示

2023/03/21

MQTTの導入


背景


IoTデバイスの接続環境構築のため、MQTT(mosquitto)の導入を行った。

記事の目的


MQTT(mosquitto)をUbuntuに導入する

mosquitto


ここではmosquittoについて記載する。

MQTT

MQTT(Message Queueing Telemetry Transport)とは、マシン間の通信に使用される標準ベースのメッセージングプロトコル、または一連のルールを指す。スマートセンサー、ウェアラブル、および他のモノのインターネット (IoT) デバイスは通常、帯域幅が制限されたリソースに制約のあるネットワークを介してデータを送受信する必要がある。これらの IoT デバイスは、実装が簡単で、IoT データを効率的に通信できるため、MQTT を使用してデータを送信する。MQTT は、デバイスからクラウドへ、およびクラウドからデバイスへのメッセージングをサポートしている。

mosquitto

Eclipse Mosquittoは、MQTTプロトコルバージョン5.0、3.1.1、3.1を実装したオープンソース(EPL/EDLライセンス)メッセージブローカーである。Mosquittoは軽量で、低消費電力のシングルボードコンピュータからフルサーバーまで、あらゆるデバイスでの使用に適している。 MQTTプロトコルは、パブリッシュ/サブスクライブモデルを使用したメッセージングを実行する軽量な方法を提供している。このため、低消費電力のセンサーや電話などのモバイル機器、組み込みコンピュータ、マイクロコントローラなど、モノのインターネットを利用したメッセージングに適している。 Mosquittoプロジェクトは、MQTTクライアントを実装するためのCライブラリや、非常に人気のあるmosquitto_pubおよびmosquitto_subコマンドラインMQTTクライアントを提供している。

Ubuntuへの導入法

Ubuntuへのmosquitto導入方法について記載する。
  1. mosquittoのインストール
  2. aptを使用してインストールすることができる
  3. aptによるインストール
    1. apt install
    2. $ sudo add-apt-repository ppa:mosquitto-dev/mosquitto-ppa
      $ sudo apt install mosquitto mosquitto-clients
    3. 設定
    4. $ sudo vim /etc/mosquitto/mosquitto.conf
      # Place your local configuration in /etc/mosquitto/conf.d/
      #
      # A full description of the configuration file is at
      # /usr/share/doc/mosquitto/examples/mosquitto.conf.example
      
      pid_file /var/run/mosquitto.pid
      
      persistence true
      persistence_location /var/lib/mosquitto/
      
      # ログの出力先
      log_dest file /var/log/mosquitto/mosquitto.log
      
      # 別の設定(port以下を書いたconfファイル)を下記フォルダに追加すると反映される
      include_dir /etc/mosquitto/conf.d
      
      # mosquittoの接続先ポート
      port 8883
      
      # SSL通信を使用する際に必要
      # CA証明書
      cafile /etc/mosquitto/certs/ca.crt
      # 秘密鍵
      keyfile /etc/mosquitto/certs/server.key
      # サーバ証明書
      certfile /etc/mosquitto/certs/server.crt
      
      # 接続時にパスワードを設定する場合
      # ユーザー名を必須にする
      allow_anonymous false
      # パスワードの設定ファイル
      password_file /etc/mosquitto/password.txt
      
      SSLの証明書作成方法はMosquittoを用いてMQTT+SSL/TLS通信を試してみるを参照。
      パスワードの設定方法は、Mosquitto で Username と Password を使うを参照。
    5. サービスに登録
    6. サービス起動
      $ sudo systemctl start mosquitto
      起動状態確認 (起動失敗している場合は、confファイルを見直し)
      $ sudo systemctl status mosquitto
      自動起動に設定
      $ sudo systemctl enable mosquitto
  4. mosquitto-clientsで起動状況の確認
    • mosquitto_pubで送信する
    • $ mosquitto_pub -d -t test/topic -m "Hello world!"
      トピック名の一番元に/(スラッシュ)は不要。
      -d はデーモンで起動。
    • mosquitto_subで受信する
      $ mosquitto_sub -d -t test/topic
      Hello world!が受信できる


まとめ


  • Ubuntuのmosquitto導入方法について調査、記載した

参考文献




変更履歴


  1. 2023/03/21: 新規作成

2019/09/26

CUDAの導入方法(Ubuntu編)

背景


GPUで並列処理を行うために、CUDAの導入が必要となった。

記事の目的


UbuntuにCUDAを導入する

CUDA


ここでは、CUDAの導入方法について記載する。

CUDAとは

CUDAは、nvidia社が提供する並列処理ライブラリである。

利点

  • 実装に関する情報が豊富である
  • TensorflowやOpenCVなど、機械学習や画像処理に関するツールはが基本的に対応している
  • C言語ライクな記述でプログラミングできる

導入方法

OSやマシンにあったCUDAのインストーラ方法は、公式ページから調べることができる。
今回は、Ubuntu16.04へCUDAを導入する手順について記載する。
  1. CUDAのアーカイブをダウンロードし、aptに登録する
  2. $ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-ubuntu1604.pin
    $ sudo mv cuda-ubuntu1604.pin /etc/apt/preferences.d/cuda-repository-pin-600
  3. OSやマシンにあった承認キーをダウンロードページから探す(今回は、/ubuntu1604/x86_64/7fa2af80.pub)
  4. 承認キーをダウンロードする
  5. $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
  6. CUDAのレポジトリを登録する
  7. $ sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/ /"
  8. CUDAをインストールする
  9. $ sudo apt-get update
    $ sudo apt-get -y install cuda
  10. PCを再起動する
  11. $ sudo reboot

CUDAのサンプルプログラム

CUDAのサンプルプログラムのmake方法は、下記の通りである。
$ /usr/local/cuda-10.1/bin/cuda-install-samples-10.1.sh ~
$ cd ~/NVIDIA_CUDA-10.1_Samples
$ make
上記の場合、~/NVIDIA_CUDA-10.1_Samples内にサンプルプログラムの実行ファイルが作成される。

アンインストール方法

CUDAのアンインストール方法について記載する。
$ sudo apt remove cuda-10-1
$ sudo apt autoremove
$ sudo apt remove libcudnn7 libcudnn7-dev libcudnn7-doc
$ rm -rfv ~/NVIDIA_CUDA-10.1_Samples/

まとめ


  • UbuntuにCUDAを導入する方法ついて調査、記載した

参考文献



変更履歴


  1. 2019/09/26: 新規作成

2019/09/21

UbuntuへのJupyter notebookの導入方法

背景


仕事で、データ解析や機械学習の学習環境用に可読性の高いプログラミング環境を構築する必要があった。


記事の目的


Jupyter notebookを導入する

Jupyterの導入


ここでは、Jupyter notebookの導入方法と使用方法について記載する。

Jupyter notebookとは

Jupyter notebook
Jupyter notebookとはブラウザ上で実行し、実行結果を記録しながらプログラミングを進めるためのツールである。データ分析の現場や、研究機関などでも頻繁に使われている。

利点

  • PythonやRubyなど多様な言語に対応している
  • markdownでメモ、コメントが記述できる
  • グラフや表を表示できる

導入方法

Jupyter notebookの導入手順は、下記の通りである。

Pyenv+Anacondaの場合

  1. Pyenvを導入する
  2. 最新のAnaconda (Python3系) のバージョンを確認する
  3. $ pyenv install -l | grep anaconda3
      anaconda3-2.0.0
      anaconda3-2.0.1
      anaconda3-2.1.0
      anaconda3-2.2.0
      anaconda3-2.3.0
      anaconda3-2.4.0
      anaconda3-2.4.1
      anaconda3-2.5.0
      anaconda3-4.0.0
      anaconda3-4.1.0
  4. 最新のAnaconda (ここでは4.1.0) をインストールし、デフォルトとして設定する
  5. $ pyenv install anaconda3-4.1.0
    $ pyenv global anaconda3-4.1.0
    $ echo 'export PATH="$PYENV_ROOT/versions/anaconda3-4.1.0/bin:$PATH"' >> ~/.bashrc
    $ echo 'alias activate="source $PYENV_ROOT/versions/anaconda3-4.1.0/bin/activate"' >> ~/.bashrc
    $ source ~/.bashrc
  6. Pythonの環境を確認する
  7. $ python --version
    Python 3.5.1 :: Anaconda 4.1.0 (64-bit)

pipで直接インストールする場合

  1. 必要なパッケージをインストールする
  2. $ pip install numpy
    $ pip install scipy
    $ pip install matplotlib
    $ pip install Pillow
    $ pip install ipython[all]
  3. Jupyter Notebookをインストールする
  4. $ pip install jupyter

使用方法

Jupyter notebookの使用手順は、下記の通りである。
  1. ターミナル上で下記を実行する
  2. $ jupyter notebook

備考

  • matplotlibのグラフをインラインで表示するためには、はじめに下記を記述する
  • %matplotlib inline
    import matplotlib.pyplot as plt


まとめ


  • Jupyterの導入方法について調査、記載した

参考文献



変更履歴


  1. 2019/09/21: 新規作成

2019/09/19

黒画面でカーソルが点滅し、OSが起動しない場合の対処方法

背景


クローンしたUbuntuをIntel NUC上で起動させようとした際に、黒画面でカーソルが点滅した状態となり、OSが起動しない現象が生じた。

記事の目的


Boot Repairでブートローダーの問題を修復し、OSが起動できるようにする

Boot Repair


ここでは、Boot Repairでブートローダーの問題を修復する方法について記載する。

修復手順

Boot Repairでブートローダーの問題を修復する方法は以下の通りである。
  1. Ubuntuをメディアブートで起動する(言語は必ず「英語」を選択。日本語を選択すると、後述のBoot Repairがインストールできない場合がある)
  2. Boot Repairをインストールする
  3. [Ctrl]+[ALT]+[t]キーの同時押しでターミナルを立ち上げ、下記を入力する。
    $ sudo add-apt-repository ppa:yannubuntu/boot-repair
    $ sudo apt update
    $ sudo apt install -y boot-repair
  4. デスクトップ画面左上の「Activities」をクリックし、「Boot Repair」を検索、実行する
  5. 「Recommended repair」ボタンをクリックし、修復を実行する
  6. Boot Repair

まとめ


  • Boot Repairでブートローダーの問題を修正する方法について調査、記載した

参考文献



変更履歴


  1. 2019/09/19: 新規作成
  2. 2020/05/07: 修復手順に画像追加

2019/09/17

Xvfbで仮想ディスプレイを作成する方法

背景


映像出力の無い状況下で、WebRTCといった映像系のWebアプリケーションを動作させようとすると、正常に動作しない場合があったため、仮想ディスプレイを作成する方法を調査した。

記事の目的


Xvfbで仮想ディスプレイを作成し、アプリケーションの映像出力を仮想ディスプレイに設定する

Xvfb


ここでは、Xvfbで仮想ディスプレイを作成する方法について記載する。

Xvfbの導入方法

Xvfbの導入方法は以下の通りである。
  1. xvfbをapt installする
  2. $ sudo apt install xvfb 
  3. Ubuntu起動時にxvfbを自動起動するように設定する
  4. $ sudo nano /etc/rc.local
    ...
    Xvfb :99 -ac -screen 0 1024x768x16 &
    exit 0
    
    上記の設定で、ディスプレイ番号99が仮想ディスプレイとして設定される。
  5. PCを再起動する

仮想ディスプレイを映像出力先としてアプリケーションを実行する方法

実行方法は以下の通りである。(例としてFirefoxを使用)
$ env DISPLAY=:99.0 firefox

備考

  • 描画処理は動いているため、その分CPU(GPU)リソースは消費される

まとめ


  • Xvfbで仮想ディスプレイを作成した

参考文献



変更履歴


  1. 2019/09/17: 新規作成

2019/08/20

Pyenvの導入(Ubuntu)

背景


Ubuntu開発用PCで、Python2、Python3、Anacondaを使用しているため、手軽に切り替えられる方法が必要だった。

記事の目的


pyenvを導入する

Pyenv


ここでは、Ubuntuにおけるpyenvの導入方法と使用方法について記載する。

Pyenvとは

Pyenvは、Pythonの複数のバージョンを使い分けるコマンドラインツールである。

利点

  • shellで書かれていてPython自体に依存しない
  • pyenv install <Version>のように打つだけで好きなバージョンがインストールでき、切り替えも容易にできる
  • virtualenvへのバインディングを標準で搭載し、バージョンを切り替えるのと同じインターフェースでパッケージ環境も切り替えられる

導入方法

UbuntuへのPyenvの導入手順は、下記の通りである。
  1. 必要ライブラリをインストールする
  2. $ sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
    libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
    xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
  3. gitからPyenvのを取得する
  4. $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
  5. Pyenvにパスを通して有効化する
  6. $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
    $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
    $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
    $ source ~/.bash_profile

使用方法

Pyenvの使用方法は、下記の通りである。
  • Pythonのインストール
  • $ pyenv install <Version>
  • Pythonのアンインストール
  • $ pyenv uninstall <Version>
  • インストールされたPythonのバージョン確認
  • $ pyenv versions
    * system
      <Version>
  • Pythonのバージョン切り替え(全体)
  • $ pyenv global <Version>
  • Pythonのバージョン切り替え(現在のディレクトリのみ)
  • $ pyenv local <Version>

アンインストール方法

Pyenvのアンインストール方法は、下記の通りである。
  1. pyenvのアンインストール
  2. $ rm -rf $(pyenv root)
  3. (オプション)bash_profileかzshrcにpyenv関連の情報がある場合、削除
  4. $ nano ~/.bash_profile
    もしくは、
    $ nano ~/.zshrc
    下記を削除
    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
  5. 再起動

まとめ


  • Pyenvの導入方法と使用方法について調査、記載した

参考文献



変更履歴


  1. 2019/08/20: 新規作成
  2. 2020/05/04: アンインストール方法追記

2019/08/15

クローンしたUbuntuをIntel NUC上で起動した際に、OSが起動しなくなる問題の対処法

背景


Intel NUCへUbuntuをクローンして同一環境のPCを増やした際に、"no bootable devices found"のメッセージが表示され、OSが起動しなくなった。

記事の目的


Intel NUC上で、クローンしたUbuntu起動できるようにする

フォールバック起動に変更


ここでは、起動しない原因と対処法について記載する。

起動しない原因

クローンしたUbuntuが起動しない原因は下記の通りである。
  • EFI下では、OSを起動するブートローダーにはUbuntuなどのOS固有の名称が付けられる
  • マシンがブートローダーを検索できるように、ブートローダーをファームウェアのNVRAMに登録する必要がある
  • 通常のインストール時には、NVRAMへの登録も自動的に行われる
  • クローンした場合はNVRAMへの登録が行われないため、ブートローダーが見つけられず、OSを起動できない

対処方法

EFI下では、ブートローダーが見つからない場合、フォールバックとして起動するブートローダー名が設定されている。
そこで、フォールバック用のブートローダーを作成する。
  1. メディアブート等でOSを起動する
  2. 対象のOSがインストールされたメディア(SSD、HDD)の中のEFI System Partition (ESP)をマウントする
  3. EFI/BOOTディレクトリ(フォールバック用のブートローダーディレクトリ)を作成する
  4. EFI/ubuntu/*を、EFI/BOOT/*へコピーする

対処方法例(Ubuntuメディアブートの場合)

Ubuntuメディアブートを行った場合の対処方法は、下記の通りである。
$ sudo fdisk -l
Device        Start      End  Sectors  Size Type
/dev/sda1      2048  1128447  1126400  550M EFI System
/dev/sda2   1128448 79626398 78497951 37.4G Linux filesystem
/dev/sda3  79628288 85917854  6289567    3G Linux swap
$ sudo mount /dev/sda1 /mnt #「Type」が「EFI System」のものをマウントする
$ cd /mnt
$ sudo mkdir EFI/BOOT #フォールバック用のブートローダーディレクトリ
$ sudo cp EFI/ubuntu/* EFI/BOOT/

まとめ


  • EFI下のPCでクローンしたUbuntuを使用する場合、OSが起動しなくなる問題の原因と対策について記載した

参考文献



変更履歴


  1. 2019/08/15: 新規作成

MQTTの導入

背景 IoTデバイスの接続環境構築のため、MQTT(mosquitto)の導入を行った。 記事の目的 MQTT(mosquitto)をUbuntuに導入する mosquitto ここではmosquittoについて記載する。 MQTT MQTT(Message Qu...