続・Raspberry Pi で録画システムを構築してみたけれど

先日「Raspberry Pi で録画システムを構築してみたけれど」というエントリを作りましたが、その後いろいろ模索したあとでとりあえず安定して録画できるようになりました。

おそらく、不安定さは録画ファイルを保存する領域にしていたストレージをUSBメモリにしていたんですけど、そのメモリがそれほどUSB3ではあるもののあまり早いものではなかったので書き込みが追い付かず、1chなら問題ないけど多ch同時録画になると保存が追い付かなかったんだろうなと推測。代わりに古いけどそこそこのHDDに変えたところ安定して保存できるようになりました。

その後、テスト運用を続けていますが、変更後ここまでは多ch録画で処理が追い付かないことが原因と思しき不安定さは出ていません。

一点だけ、おそらくEPGがらみで番組情報がややこしいものになっているものっぽい番組予約は、今でも0KBのファイルが出来上がっていることがあるんですよね・・・(NHKの「あさイチ」)、国会中継とか入っているときの「あさイチ」は十割0KBでした。

おそらくこれはChinachu+Mirakurunの問題なんだろうなぁ・・・。

 

カテゴリー: PC関連, テック | コメントする

Raspberry Pi で録画システムを構築してみたけれど

先の週末、手元にあるRaspberry Piに用途が定まっていないものがあるので、Chinachuを使って録画システムを構築したみた。

とりあえずMirakurunとChinachu構築が終わって動くようになったけど、どうにも動作が不安定で困ってる・・・。

はじめは1ch~2chだけ視聴とか録画は問題なくて3ch以上同時に録画しようとするとデータの取りこぼしが発生する状況だったけど、今は1chだけでもダメな感じ。映像は真っ黒で音声が途切れ途切れな状況に。

多ch同時録画で処理が追い付かない状況でもなさそうだし、どこがおかしいのかな?

カテゴリー: PC関連, テック | コメントする

続・EPSON Endeavor NP12 に Debian Buster

調べた結果、NP12に乗っているNICの蟹チップが使わない方が良いものであるらしいことが分かった。ということでオンボードのNICは諦めてUSBのNICを用意してそちらを使うことにした~

色々使おうと調べたりしたんだけど、手間に見合うリターンが得られそうにないのです。

あと、NICの件とは別にNP12のAtom 230がとても動作がもっさり・・・。
Atom 330のマシンはそれなりに動作するんだけどね~。

【追記】
タイトルにはDebian Busterってありますが、試行錯誤の中で実際に試したのはUbuntu 16.04をアップグレードしたUbuntu 18.04でした。

カテゴリー: PC関連, テック | コメントする

EPSON Endeavor NP12 に Debian Buster

友人某O氏から以前ネット上にサーバとして利用していたEPSON Endeavor NP12という今となってはとても古い超小型PCを譲ってもらったんですよ。

PCの中の160GBのHDDを500GBのSSDに交換して、Debianをインストールしたんですが、インストールの途中で存在しているはずのDHCPからなぜかIPアドレスが取れなかったり、(手動でIPアドレス等を設定したのち)パッケージリポジトリへの接続段で通信ができなかったり、と何やら通信がおかしい。

PCとスイッチの間のケーブルは直前まで通信ができていた別のマシンのケーブルを差し替えてつかっており、さらにスイッチのリンクアップのLEDはちゃんと点灯していてなぞ。

一通りインストールが終わった後で改めてマシンのログインして確認するとどうやらNICのドライバがロード出来ずにエラーが出てる・・・。

なぜ、昔のDebianで通信出来ていたのに、最新のDebianで通信できなくなるのか・・・、簡単には解決できなかったので継続調査で。

 

カテゴリー: PC関連, テック | コメントする

VMware Workstation 15 Player の仮想マシンに Linux Mint LMDE3 をインストール

VMware Workstation 15 Player の仮想マシンに何かをインストールしたシリーズ第2段で、今回はLinux Mint LMDE(Linux Mint Debian Edition)3をインストール。

選択理由はLinux のデスクトップを触りたくなったので。

インストールは画面解像度がインストール中の画面解像度が微妙に小さいサイズで固定されていて、選択メニューの項目を決めたあとに確定させて次に進む際のボタンのほとんどが画面範囲外に出ていて押しづらい事以外は問題もなく詰まることなく進行して完了。CentOSの時のように最初の再起動後にNICがONBOOT=noになっていることもなく、apt update/upgradeも大きな問題なく完了。

さて、触ってみようか。

カテゴリー: PC関連, テック | コメントする

VMware Workstation 15 Player の仮想マシンに CentOS7/8 をインストールしたらyum updateが出来ない

やけに長いタイトルになりましたw

タイトルの通りで、CentOS8がリリースされて半月以上経過したし、そろそろ8を軽く触ってみようということで、比較の為のCentOS7とCentOS8のインスタンスを用意することにしたんですよ。

自宅のサーバ系マシンはRaspberry Piがほとんどになっていて、改めてCentOSを入れられる空いているPCがないという事で、ほんの少し思案したのち「VMware PlayerかVirtualBoxかをインストールして、その上にインスタンスを用意すれば良いじゃん!」という結論に。ここしばらくVMwareの方を触っていないということで、VirtualBoxではなくVMware Workstation 15 Playerをダウンロードして来てインストール。

最後にVMware Playerを触ったのはいつだったかな~?と思いながらCentOS7とCentOS8のISOイメージを用意して仮想マシンをセットアップ。
そう言えば、仕事の方でCentOSを触るときはだいたいAWSとかのクラウド環境なので、イメージからのインストールは久し振り。昔に比べるとずいぶんと導入手順とか減った気がします。

で、一通り両方ともイメージからのインストールが完了して、リブート後にrootでログインして、最初の yum update (dnf update)を実行するとエラーで止まってしまう。エラー内容を見ると「リポジトリキャッシュの読み取りができない(超意訳)」ですと。

先に試みたCentOS7の方の特有の何かかもしれない、と言う事でCentOS8の方でも試したけど、出力メッセージの細かい部分は違うけど大筋で同様のエラーで止まる。どうやらCentOS7とか8とかの問題じゃなくて、VMwareの方で何か見落としがあるんじゃないか?と思い、せっせとそっちの方の設定とかを注意して確認してみる。

しかし、仮想マシンのネットワークインターフェイスのモードはNATになっているし、変に込み入った設定をしている訳でもない。さらに、ホストPCのセキュリティ設定も特にブロックしていないし「なんでだ~?」状態。エラーメッセージをGoogle先生に確認してもらったけど、症状がぴったり一致するような解決策候補は(少なくとも1ページ目には)特に出てこない。困った!

こういうよく分からない時、そして過去にVMwareを触ったときの経験から改めて用意した仮想マシンの設定を確認することにする。「仮想マシンのコンソールはコピペとか出来ないから、設定を調べたり書き換えたりするのも面倒なんだよなぁ~」と思いながらrootでログインして設定を確認してみる。そう言えば、先にGoogle先生で調べた時にちょっと違う症状の例(IPv6設定が悪さをしているので完全にIPv6を無効にする)があったので、ひとまずIPアドレスを確認してみました。すると、なにやらビンゴに近いヒントが表示されていて、なんとNICにIPアドレスが設定されていないのを確認。え?インストーラーは変に設定変えずに実行したのに??デバイス名とMACアドレスの情報は出てくるけど、IPアドレス周りの設定はナッシング。

おや、おや、おや、おや~?と言う事で、まずはNICの設定が書き込まれたファイルを確認してみると、なんとそのファイルの記述に ONBOOT=no という1行を見つけてしまいました。そりゃ lo しか有効になっていないのなら、yum updateは実行できないよね・・・。

取り急ぎ、ONBOOTの設定をyesに書き換えてネットワークをリスタートしてみる。あ、この時はONBOOTの効果を確認したいこともあってリスタートではなくリブートでした。仮想マシンが再起動して立ち上がってきたところで、改めてログインしてyum updateを実行すると、予想通りにさっくりと処理が始まりパッケージの更新処理に。

わーい!直った!

と言うわけで、この記事の要約としては、VMware Workstation 15 Player の仮想マシンに CentOS をインストールした直後、yum updateが不可解なメッセージが出てきたらNICの設定がONBOOT=noになっていないか確認しよう!でした。

カテゴリー: PC関連, テック | コメントする

Raspberry PiにFreeBSD

久し振りにFreeBSDを触りたくなって、Raspberry Piにインストール出来ないかな?と思って調べてみたらSDカードのイメージが提供されている事を発見してインストールすることにした~

しかし、色々と手こずってしまってインストールに一苦労しました・・・

 

カテゴリー: テック, 雑談 | コメントする

次のトピックは

次のトピックは監視系で行こうとだいぶ前からユーザとして触ったりして気になっていた Prometheus と Grafana で監視を組もうと考えて手を出してみた。

Prometheus本体のインストールと監視対象にNode Exporterの仕込みはそんなに大変じゃないけど、Grafanaでグラフを用意するのがとても面倒だった~

Node Exporterのバージョンがバイナリパッケージでダウンロードしたもの、バージョン違いのUbuntu/Debianでaptでインストールしたもので違っていてmetricsの名前が微妙に違っていてそこに気がつくまでにも少し時間がかかったのと、それによるGrafanaのグラフの定義にまごついたのが面倒だった要因。

 

カテゴリー: その他, テック | コメントする

Pythonの環境が壊れた?

先日、とあるサーバで実行していたPythonの環境がなぜだかおかしくなって、ある日を境にPythonを一部に使って動いているスクリプトが正常動作しなくなったんですよ。おかしいなと思って、同様にPythonで動いているaws cliのコマンドを叩いてみると、単に実行しただけなのにStack吐いてエラーになってしまう状況。

何かでPythonの環境が壊れたかと考えてaptで修復しようと考えて、改めてaptでPythonをインストールしようとしても、こんどはaptの中の処理でPythonが動くところでエラーになりaptも正常に動作しない。これ以上環境を変更するような作業をすると、修復できない状況に陥りかねないのと、幸いPythonが絡んでいないコマンド関係は特に問題が起きていないので、該当する処理は別のサーバに移動させたりして当面の問題は回避。

とは行っても壊れたままだと色々問題が起こりかねないので解決の為の調査は継続。

しばらくして、改めて修復しようとaptを実行してみたり、単にPythonを起動してみたりして出てくるエラーメッセージを検索にかけて調べてみると、出てくる記事の1つに光明が。そのエラーメッセージは

EOFError: marshal data too short

というもので、その記事の中には「.pycファイルが原因で、削除すれば解消できる」旨が書かれていました。「そうか実行時の中間キャッシュファイルか!」と言う事でエラーになる状況を(何となく)理解。

というのも上記の環境がおかしくなったサーバで、丁度エラーが出始めたのと同じタイミングに一回ディスクフルの障害をやらかしていて、そのタイミングでPython関連のスクリプトが実行されていたらキャッシュも壊れていてもおかしくはない。ただ、この情報を見るまでは、ディスクフルになったとしても逆にそのタイミングで環境を変更するようなapt update/upgradeは実行していないし、それに準ずるような作業などもしていないのでPythonの実行環境がおかしくなるなんてことは通常は考えられないと調査の線から少し話しておいたんですよ。実行時の中間キャッシュであれば実行のタイミングによっては更新されることもあるだろうし、更新のタイミングでディスクフルになったら変な状態のキャッシュファイルなってしまう事もありそう。

早速.pycフィあるを削除する準備に。確認したところ、このファイルはとりあえず削除しても問題ないらしく、仮に問題のない.pycを消したところでその後実行されるときに再度作られそうなので副作用もキャッシュが消えたことで若干実行に時間がかかるかもしれない程度。そういうわけで、早速サーバ全体で.pycファイルを探して削除!

sudo find / -name *.pyc | sudo xargs -I {} rm {}

で、改めてPythonを空実行してみると、先に出ていたエラーメッセージは出なくなり、別のエラーが・・・。と行っても見慣れたエラーでモジュールが足りないというやつでこれは多分aptを-fつけて実行すれば大丈夫!?な筈。

sudo apt-get -f upgrade

ついでにupgradeもしちゃう勢いで実行すると.pycファイルを消す前は途中でエラーがでて実行できなかった処理が止まる事無く処理完了。

おそるおそる今度はaws cli(awsコマンド)を空実行してみると、何のエラーもでず情報が表示されて正常終了。止めていたPythonを利用するスクリプトも問題でないし、aws cliも使える!ということで回復、一件落着!

いやぁ~、キャッシュって怖いですねw

 

カテゴリー: テック | コメントする

Redmine を Respberry Pi にインストール

Redmine内蔵のWikiが個人的に一番馴染むという理由で、低コストでWikiを使いたい時にRedmineを使っているのですが、これまで使ってきたRedmineのバージョンが古くて新しくしたいという理由で、Raspbian(Respberry Pi)にRedmineをインストールした時の作業記録です。

だいぶ前にインストールした時は、真面目にインストール手順を調べず、勢いだけでインストールして動かしてしまったので、今回は色々と確認してそれなりに手間はかかるけど色々応用が効きそうな手順を調べてみました。

0.前提&準備

  • Respberry Pi に Raspbian をインストール』の手順でRaspberry PiにRaspbianをインストールしたものを用意
  • Rubyより上のレイヤーは利用するバージョンを選択したいので、aptを使わずにインストール、今回初代のRaspberry Pi Model Bにインストールしたんですが、バイナリパッケージのインストール以外にもソースのコンパイルとか入るので初代Model Bだと時間がかかるかかる。さらにビルド途中で512MBのメモリを使い切ってしまってほぼフリーズ状態になり、Swapを増強する事に。
    • 因みにRaspberry Pi4で作業した時はある程度の時間はかかるけれど、Swap追加することもなく、想定よりはあっさり。
  • データベースはMySQLを使おうかと思いましたが、インストールする初代Raspberry Piはメモリが512MBしかないのでSQLiteを選択。個人的かつ限定的な用途でしか使わないし。
  • 参考URL

1.Ruby以外の必要ソフトウェアをインストール

  • aptでRuby関連(Ruby,Rails,Redmie)以外の必要なソフトウェアをインストール
    • postfixはとりあえずローカル配送を選択して、
      後で必要に応じてちゃんと設定してください
# apt install build-essential git subversion postfix \
 libsqlite3-dev apache2 apache2-dev libssl-dev \
 libreadline-dev libcurl4-openssl-dev libapr1-dev \
 libaprutil1-dev fonts-ipafont-gothic imagemagick \
 libmagickwand-dev

2.グループの作成

  • 深く考えずにグループ作成
# groupadd ruby
# usermod -a -G ruby your-account

3.rbenvのインストール

  • 任意のバージョンのrubyを楽してインストールするべくrbenvをインストール
  • 深く考えずにコマンドを叩く、あまり悩む必要のある分岐はない、と思う
# cd /usr/local/
# git clone git://github.com/sstephenson/rbenv.git rbenv
# mkdir rbenv/shims rbenv/versions rbenv/plugins
# cd rbenv/plugins/
# git clone git://github.com/sstephenson/ruby-build.git ruby-build
# cd ruby-build/
# ./install.sh

4.rbenvの設定

  • rbenvが宜しく動作してくれるように設定
  • 最後のechoでPATHに/usr/local/rbenv/binが入っていればここまでは大成功
# cd /usr/local/
# chgrp -R ruby rbenv
# chmod -R g+rwxX rbenv
# echo 'export RBENV_ROOT="/usr/local/rbenv"'     >> /etc/profile.d/rbenv.sh
# echo 'export PATH="/usr/local/rbenv/bin:$PATH"' >> /etc/profile.d/rbenv.sh
# echo 'eval "$(rbenv init -)"'                   >> /etc/profile.d/rbenv.sh
# source /etc/profile.d/rbenv.sh
# echo $PATH

4.rubyをインストール

  • rbenvを使って任意のバージョンのRubyをインストール
  • インストールできるRubyを確認
# rbenv install --list
  • リストからVer.2.6.4を選択してインストール
    • コンパイルがあるし、メモリ512MBだし、だいぶ時間かかります
# rbenv install -v 2.6.4
  • インストール出来たか確認して、それを(rbenv管理下のユーザが)全体で使えるように選択
# rbenv versions
# rbenv global 2.6.4
  • rehashして、選択が有効になっていることを確認
# rbenv rehash
# rbenv versions
  • さらにRubyを起動してバージョンを確認
    • Ver 2.6.4だよね?!
# ruby -v

5.Rails(Ruby on Rails)のインストール

  • まずはbundlerをインストール
  • 続いてインストールできるRailsのバージョンを確認
# gem install bundler
# gem query -ra -n "^rails$"
  • そしてRailsをインストール
    • SQLite3のモジュールもここでインストール
# mkdir /usr/local/rails_v5.2.3
# cd /usr/local/rails_v5.2.3
# bundle init
# echo 'gem "rails", "5.2.3"' >> Gemfile
# gem install sqlite3 -v '1.3.11'
# bundle install --without development test --path vendor/bundle

6.スワップを増強

  • ここで思い出したかのようにスワップを増強します
  • Raspbianをインストールしてそのままだと多分スワップは100MBしか確保されておらず、そのまま次のPassengerのインストールに進むとメモリ512MBのRaspberry Piだと途中でメモリ不足で止まります
  • ので、重くなっても処理が完了するようにスワップを1GB程度確保
  • /etc/dphys-swapfileを下の内容に修正して、おもむろにRaspberry Piをリブート!
    • 100MBしか確保していない CONF_SWAPSIZE の設定行をコメント
    • CONF_SWAPFACTORを3に設定(有効メモリの3倍のスワップを確保するという設定)
    • CONF_SWAPSIZEを1024(MB)に設定でも良いかもしれない
      • Passengerのビルド中、最高でもスワップの消費量はtopコマンドによる確認800MB程度だった
#CONF_SWAPFILE=/var/swap
#CONF_SWAPSIZE=100
CONF_SWAPFACTOR=3
#CONF_MAXSWAP=2048

7.Passengerのインストール

  • Passengerのインストールです
  • 今回の手順の中で最も時間がかかる処理だと思う、先ほどスワップを追加したとは言え、メモリは512MBだし、シングルコアの初代Raspberry Pi Model Bには過酷な処理です。
  • gem install passengerの処理時間は大したことないです、passenger-install-apache2-moduleが果てしなく時間がかかります。果てしなくと言っても半日あれば終わります、多分。
# cd /usr/local/
# gem install passenger
# passenger-install-apache2-module --auto

8.Redmineのインストール

  • インストールはSubversionのリポジトリをチェックアウトすれば良いので楽。あとは設定ファイルを二つほど用意して後、順にコマンド実行
# svn co http://svn.redmine.org/redmine/branches/4.0-stable /var/lib/redmine
# vi /var/lib/redmine/config/database.yml
# vi /var/lib/redmine/config/configuration.yml
# bundle update
# bundle exec rake generate_secret_token
# RAILS_ENV=production bundle exec rake db:migrate
# RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data
# chown -R www-data:www-data /var/lib/redmine
  • /var/lib/redmine/config/database.yml
production:
adapter: sqlite3
database: /var/lib/redmine/db/redmine_default
encoding: utf8
  • /var/lib/redmine/config/configuration.yml
    • your.domain は適当なものを設定
default:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: 127.0.0.1
    port: 25
    domain: your.domain

rmagick_font_path: /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf

9.Apacheの設定

  • 設定ファイルを新規作成or修正
    • 設定ファイルの内容は下にあります
  • 変更後Apacheをリスタート
    • リスタート前にapachectl configtestで設定のチェックするのもアリ
# vi /etc/apache2/mods-available/passenger.load
# vi /etc/apache2/conf-enabled/passenger.conf
# vi /etc/apache2/sites-available/000-default.conf
# a2enmod passenger
# a2enconf passenger
# systemctl restart apache2
  • /etc/apache2/mods-available/passenger.load
    • passenger-install-apache2-module –snippet を実行した時のLoadModule部
LoadModule passenger_module /usr/local/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/passenger-6.0.4/buildout/apache2/mod_passenger.so
  • /etc/apache2/conf-enabled/passenger.conf
    • passenger-install-apache2-module –snippet を実行した時のIfModuleブロック
    • 通常のサーバでは PassengerStartTimeout 設定は不要だけど(無くても基本的に問題ない)、Raspberry PiはPassengerの起動に時間がかかりすぎるのでTimeoutをかなり長くする為に追加設定
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/passenger-6.0.4
  PassengerDefaultRuby /usr/local/rbenv/versions/2.6.4/bin/ruby
  PassengerStartTimeout 600
</IfModule>
  • /etc/apache2/sites-available/000-default.conf
    • ServerNameが無いって怒られたら適当に設定してください
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/lib/redmine/public

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

    <Directory "/var/lib/redmine/public/">
        Options FollowSymlinks Includes
        AllowOverride All
        AddType text/html .html
        Require all granted
    </Directory>

</VirtualHost>

10.テストアクセス

  • http://[インストールしたRaspberry PiのIPアドレス or FQDN]/
  • 上のURLでアクセスしてRedmineへの動作&接続を確認
  • 遅いモデルだったりメモリ搭載量が少ないRaspberry PiだとApache起動直後はPassengerの反応が返ってくるまで落ちているんじゃないか?と思うほど時間かかる
  • インストール直後の管理ユーザ&パスワードはadmin/adminです

 

カテゴリー: PC関連, テック | コメントする