自宅ルーター(RT2600AC)のインターネット接続再設定

はじめに

自宅ルーターのインターネット接続のトラブルシューティングが必要となったので、その備忘録です。

環境

  • プロバイダ/契約コース: BBexcite / BB.exciteコネクトIPoE接続プラン
  • ルーター: RT2600AC/Synology

前提

今までIPoE(DSLite)接続できてましたが、再起動したら接続できなくなりました。
再起動前に特に設定は変えてないはずなのですが...

変更内容

ルーターにログインした状態で、

  1. ネットワークセンター のアイコンをダブルクリック
  2. インターネット --> 接続のタブを開く
  3. AFTRアドレスをgw.transix.jp --> 2404:8e01::feed:100(NTT西日本の場合) と変更
  4. 画面右下の適用を押下
    インターネット接続画面

参考サイト

その他

  1. BBexciteサイトから、BB.exciteコネクト IPoE接続プランはDS-Lite(transix)を利用することがわかる。
  2. SynologyサイトにはAFTRアドレスの設定はgw.transix.jpとする、とだけ書いてあるが、それだけだとAFTRアドレスの解決に失敗しましたというメッセージが出て、依然インターネット接続できない状態となる。

postgreSQL サーバーのインストールとセットアップ

はじめに

postgreSQLサーバーのインストールとセットアップについて、実際にやったこととその記録です。

環境

$ cat /etc/os-release
NAME="GalliumOS"
VERSION="3.1 (Bismuth)"
ID=galliumos
ID_LIKE="ubuntu debian"
PRETTY_NAME="GalliumOS 3.1"
VERSION_ID="3.1"
  :
VERSION_CODENAME=bismuth
UBUNTU_CODENAME=bionic

インストール

バイナリ or ソースコードビルドのどちらかを実行します。

バイナリから

PostgreSQL情報ポータルサイトに従い、Synapticパッケージマネージャを利用しました。
以下の7つのパッケージをインストールするようです。少しバージョンが古いようですね。

  • libpq5
  • postgresql
  • postgresql-10
  • postgresql-client-10
  • postgresql-client-common
  • postgresql-common
  • sysstat

Synapticがなくても、これらをapt installすれば同じ状態になると思います。
アンインストールは上記のパッケージのうち、postgresql から始まるもの5つを$ sudo apt remove --purge postgresql... として順番に削除していき、PCを再起動してからsudo userdel postgresを実行します。アンインストール参考サイト

< その他インストール参考サイト>
- Ubuntu documentation / PostgreSQL

ソースコードからビルド

PostgreSQL文書の方法に基づいて、ver13.3をインストールします。

まず、こちらのサイトよりソースコードをダウンロードします。

$ cd ~/Downloads
$ echo -n "0b54a8a68dbfaf5dcddd89eb3922740143df50fbea02fefda8de743d8af99516  postgresql-13.3.tar.gz" | sha256sum -c
# OKがでればダウンロードデータは正しいデータである

ダウンロードしたデータを展開します。

$ mv ~/Downloads/postgresql-13.3.tar.gz ~/
$ cd ~
$ tar zxvf postgresql-13.3.tar.gz

以下のコマンドを実行してインストールします。

$ cd ~/postgresql-13.3

# 構成
# オプション設定は任意です
# デフォルトのインストール位置は `/usr/local/pgsql`です
$ ./configure --with-openssl


# 構築
$ make
# "All of PostgreSQL successfully made. Ready to install."
# が表示されれば成功
# 私は15分間くらいかかりました
 
# リグレッションテスト
$ make check

# install
$ sudo make install
$ sudo make install-docs

セットアップ

ここからはセットアップです。
以下はソースコードからのビルド後のセットアップです。

# postgresユーザー作成
# グループ名もpostgresです
$ sudo groupadd postgres
$ sudo useradd -g postgres -m postgres
$ sudo passwd postgres
# パスワードを決めて入力する
# postgresユーザーのデフォルトシェルをbashに設定する
$ sudo chsh -s /bin/bash postgres

# 設定ディレクトリのオーナーの変更
$ sudo chown -R postgres:postgres /usr/local/pgsql

# ログファイルの作成
$ sudo touch /var/log/postgresql.log
$ sudo chown postgres:postgres /var/log/postgresql.log
$ sudo chmod 644 /var/log/postgresql.log

# ユーザーの変更
$ su - postgres
# postgresユーザーのパスワードを入力する
# これ以降のコマンドはpostgresユーザーで実行する必要があります

# 環境変数設定
# 以下(5行)を~postgres/.bash_profile に追加
$ vi ~/.bash_profile
export PGHOME=/usr/local/pgsql
export PGDATA=$PGDATA/data`
export PATH=$PATH:$HOME/bin:$PGHOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGHOME/lib
. ~/.bashrc

# 環境変数設定の反映
$ . ~/.bash_profile

# データベースクラスタの作成
# --no-locale オプションは日本語表示を正しく行うため
$ mkdir -p $PGDATA
$ initdb --no-locale

# DBサーバーの起動
# $PGDATAを設定しておくことにより、Dオプションの設定が不要となる
$ pg_ctl -l /var/log/postgresql.log start

# データベースの新規作成
$ createdb test

# データベース名の変更
$ psql -c "ALTER DATABASE old_name RENAME TO new_name"

# データベースへのログイン
$ psql test

# DBサーバーの終了
$ pg_ctl stop

# postgresユーザーを終了する
$ exit

次回以降PC起動時の操作

非postgresユーザーであるとします。

# DBサーバー起動
$ su - postgres -c 'pg_ctl -l /var/log/postgresql.log start'
# postgresユーザーのパスワードを入力

# DBサーバー停止
$ su - postgres -c 'pg_ctl stop'
# postgresユーザーのパスワードを入力

# DBサーバー動作状態の確認
$ su - postgres -c 'pg_ctl status'
# postgresユーザーのパスワードを入力

参考サイトなど

< セットアップ部の参考サイト>

上記2つのサイトにかかれているchkconfigコマンドは現在(2021年8月)はもう使えないようなので(Ubuntu で chkconfig の代わりに update-rc.d を使う)、こちらのコメントに従って、su - postgres -c 'pg_ctl' で制御することにします。postgresユーザーとしてDBサーバーの起動・停止を行う必要があるので、postgresユーザーのパスワードを入力する必要があります。

< 監視項目部の参考サイト >

その他

ソースビルド時のpostgresのアンインストール

Makefileがあるディレクトリにて、sudo make uninstallを行う。

# DBサーバーの停止
$ su - postgres -c 'pg_ctl stop'

$ cd ~/postgresql-13.3
$ sudo make uninstall

# データディレクトリを削除
$ sudo rm -rf /usr/local/pgsql

# ログファイルの削除
$ sudo rm /var/log/postgresql.log

# postgres ユーザーの削除
$ sudo userdel -r postgres

< 参考サイト >

つまづきポイント1

postgresユーザーのホームディレクトリを作成せずに、ユーザー作成してしまった。postgresユーザーのホームディレクトリは必要。~/.bash_profileなどを登録するため。
ユーザー作成後にホームディレクトリを作成する方法はmkhomedir_helper関数を用いる。参考サイト
上記セットアップコマンドでは useraddコマンドの-mオプションにてホームディレクトリを作成するようにしている。

$ sudo mkhomedir_helper postgres

つまづきポイント2

postgresユーザーの元々のシェルがbashになっていなかった。(元々/bin/shになってた)
なので、postgresユーザーになったときに、~/.bash_profileに記載した環境変数の設定が自動で読み込まれず、DBサーバーが起動しなかった。
ユーザーのデフォルトシェルの変更はchshコマンドで可能。
新規ユーザー作成時のシェル設定は useradd -D で確認・設定可能。

# 現在の設定状態を表示する
$ sudo useradd -D

# シェルの変更
$ sudo useradd -D -s /bin/bash

2022.03.06追記

ubuntu20.04上にてapt コマンドによるインストールを行うときは以下となる。

Ubuntu documentation / PostgreSQL

# apt コマンドによるインストール
$ sudo apt install postgresql postgresql-contrib
# start コマンド
$ pg_ctlcluster 12 main start
# stop コマンド
$ pg_ctlcluster 12 main stop
# もしくは
# systemctl によるstart / stop / status
$ sudo systemctl start postgresql@12-main
$ sudo systemctl stop postgresql@12-main
$ sudo systemctl status postgresql@12-main

systemctl statusのメッセージで、起動時のコマンドや設定ファイルがわかります。

またsystemctl startを実行して起動できた時点で、postgresのinitdbコマンドで実行するデータベースクラスタの作成はすでに完了しているようです。

elixirのwebフレームワークであるphoenixのセットアップのmix ecto.setpにて以下のエラーが発生する場合は、
postgresqlでのpostgresユーザーのパスワードをpostgresに設定します。

# エラー内容
$ mix ecto.setup
23:18:07.344 [error] GenServer #PID<0.290.0> terminating
** (Postgrex.Error) FATAL 28P01 (invalid_password) password authentication failed for user "postgres"
    (db_connection 2.4.2) lib/db_connection/connection.ex:100: DBConnection.Connection.connect/2
    (connection 1.1.0) lib/connection.ex:622: Connection.enter_connect/5
    (stdlib 3.17) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
Last message: nil
State: Postgrex.Protocol

23:18:07.352 [error] GenServer #PID<0.297.0> terminating
** (Postgrex.Error) FATAL 28P01 (invalid_password) password authentication failed for user "postgres"
    (db_connection 2.4.2) lib/db_connection/connection.ex:100: DBConnection.Connection.connect/2
    (connection 1.1.0) lib/connection.ex:622: Connection.enter_connect/5
    (stdlib 3.17) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
Last message: nil
State: Postgrex.Protocol
** (Mix) The database for Realworld.Repo couldn't be created: killed
$ sudo -u postgres psql postgres
postgres=# \password postgres
(パスワードを2回入力)
postgres=# \q
$ mix ecto.setup
The database for *** has been created
00:00:00.000 [info]  Migrantions already up
$

以上です。

ソフトウェアのバージョン管理ツール

はじめに

ソフトウェアのバージョン管理が必要になるケースがあるので、ソフトウェアのバージョン管理ツールを試しました。

まとめ

lang tool ref site remark
erlang kerl link ---
elixir kiex link asdfなどもあるようです
node.js volta link ---

環境

  • OS: GalliumOS3.1
  • machine: Chromebook14 / CB3-431

kerl/kiexを使ってelixirのインストール

備忘録です。 こちらのサイトの内容そのままです。 note.com

バージョン管理ツールは、以前asdfでうまくいかなかった記憶あり。
こちらを試したところ迷わず成功し、かつerlangのバージョン管理もあるので、便利かと思いました。

環境

  • OS: GalliumOS3.1
  • machine: Chromebook14 / CB3-431

kerl インストール

$ sudo apt install build-essential libncurses5-dev \
openssl libssl-dev git-core curl
$ sudo apt install automake autoconf

$ sudo curl \
https://raw.githubusercontent.com/kerl/kerl/master/kerl \
--output /usr/local/bin/kerl
$ sudo chmod a+x /usr/local/bin/kerl

# helpの表示
$ kerl

# インストール可能なバージョンの表示
$ kerl list releases

# インストール可能なバージョンの情報の更新
$ kerl update releases


# ビルド
# 私の環境では23:00ごろに始めて約45分間かかりました
# いろいろmissingしていると言われますが、プロンプトが返るまでひたらすら待つ
$ kerl build 24.0 24.0

# ビルド済のバージョンリストを表示
$ kerl list builds

# 特定バージョンのインストール
$ kerl install 24.0 ~/kerl/24.0

# インストール済のバージョンリストを表示
$ kerl list installations

# ~/.bashrc に以下を追加
`source $HOME/kerl/24.0/activate`

# 新しいターミナルを開けばerlangが使用可能。

kiexインストール

$ curl -sSL \
https://raw.githubusercontent.com/taylor/kiex/master/install \
| bash -s

# 以下を~/.bashrc に追加
`test -s "$HOME/.kiex/scripts/kiex" && source "$HOME/.kiex/scripts/kiex" `

# helpの表示
$ kiex

# インストール可能なバージョンの表示
$ kiex list known

# elixir のインストール
$ kiex install 1.12.2

# 選択するelixirバージョンの指定
$ kiex use 1.12.2

# 以下を~/.bashrc に追加
`source $HOME/.kiex/elixirs/elixir-1.12.2.env`

コマンドまとめ

erlang / kerl

# helpの表示
$ kerl

# インストール可能なバージョンの表示
$ kerl list releases

# ビルド
$ kerl build 24.0 24.0

# ビルド済のバージョンリストを表示
$ kerl list builds

# 特定バージョンのインストール(ビルドしたバージョンのみインストール可能)
$ kerl install 24.0 ~/kerl/24.0

# インストール済のバージョンリストを表示
$ kerl list installations

# バージョンのアクティベート
$ source ~/kerl/24.0/activate

# バージョンのディアクティベート
$ source ~/kerl/24.0/deactivate

# REPL実行
$ erl

elixir / kiex

# helpの表示
$ kiex

# インストール可能なバージョンの表示
$ kiex list known

# elixir のインストール
$ kiex install 1.12.2

# インストール済のバージョンの表示
# kiex list

# 選択するelixirバージョンの指定
$ kiex use 1.12.2

# REPL実行
$ iex

voltaでnode.jsをインストール

備忘録です。
このサイトの内容そのままです。アレンジなし。

dev.classmethod.jp

環境

  • OS: GalliumOS3.1
  • machine: Chromebook 14 / CB3-431

volta インストール

$ curl https://get.volta.sh | bash

node インストール

$ volta install node@14.17.3

最後に

  • voltaについてわかったら更新します。

M5stickC + ENV HAT で温湿度+気圧センサ

はじめに

M5stickC とENV HATで気温と気圧を簡単に表示したいなと思いました。
ENV HAT = DHT12 + BMP280 + BMM150

内容

M5StickCで小型環境センサ端末を作るのサイト記事の前半部分そのままですが、 1点だけ変更点あり。

// 17行目
-  Wire.begin();  // I2C初期化
+ Wire.begin(0, 26);  // I2C初期化

元記事のままだとBMP280の初期化で失敗し、M5stickCの画面に"BMP init fail"が連続して表示されましたが、上記のように変更するとうまく表示されました。 恐らく元記事がGROVE接続のセンサを用いているのに対し、当方はHATを用いているためかと思います。 lang-shipさんの記事を参考にさせてもらいました。
データ更新は10秒おきです。

注意点

M5stickC + ENV HATの組み合わせでは気温は高めに出るようなので(lang-shipさんの記事参照。M5stickC本体もそこそこ発熱します。)、延長ケーブルを使ってHATをM5stickC本体から少し離すようにしました。HATはgroveボードよりも比較的値段が安い傾向があるので、HATが準備されている機能ならHATで実現する方がいいかもしれません。

f:id:ellechien:20210112183531j:plain
温湿度/気圧/Vbat表示状況
f:id:ellechien:20210112183617j:plain
ENV HATとM5stickC本体とを延長ケーブルで接続

personal tips

personal tips links

NoCode

Elixir on docker

start docker container

コンテナIDを調べる。

$ sudo docker container ls -a

"-a": 起動中・停止中も含めてすべてのコンテナを表示する

$ sudo docker container start {container ID} -a -i

"-a": 標準出力/標準エラーを開く
"-i": コンテナの標準入力を開く

micropython

elixir

raspberrypi GPIO

M5stack

windows

windowsの上部が画面外に出てしまって、windowの移動・最大化・最小化のいずれもできない場合の対処

  • windowsの中にフォーカスを持っていく。
  • [alt] + [space] を押す。
  • [m] を押す。
  • 矢印キーのいずれかを押す。
  • windowがマウスの矢印にくっついてくるので、それでwindowを移動する。

others