酒と機械とときどき読書

PCいじりやウイスキーについて書くブログ。ほとんど自分用備忘録

Raspberry PiのUSBメモリの自動マウント無効化メモ

USBメモリを挿した時にオートマウントして自作のスクリプトを走らせたかった。
/etc/udev/rules.d/以下にルールを作っておいたけどうまくいかず、ちょっと調べたところ勝手にマウントされていた。

https://ifritjp.github.io/blog/site/2020/02/21/raspberrypi-mount.html
こちらを参考にしたけど~/.configにpcmanfmの設定ファイルが無かった。

dpkg -L pcmanfm
でインストールされるファイルを調べたところ、/etc/xdg/pcmanfm/LXDE-pi/pcmanfm.confを書き換えれば良さそうだった。
上の記事通り
mount_on_startup
mount_removable
を0に変更し、再起動したら自動マウントはされなくなった。

iptablesのルールをリセットしたい

※この記事のままだとすべてACCEPTするルールも消えてしまうっぽいので注意。後で書き直す

自宅のLANに立てたサーバーを外部に公開したいと思ってiptablesを設定したが、間違えてしまっていた。ルーターなので再起動しないでルールを設定し直したかったので調べてみた。自分用メモ。

$iptable -t nat -F
$iptables -X

こんな感じでいけるらしい。今回はNATの設定をリセットしたかったので-Fオプションに-t natを追加してNATテーブルのルールを削除した。nat以外もリセットしたければ

$iptables -F
$iptables -t mangle -F

これもやっとくと良さそう。

-F

チェインの内容を全消去する。何も指定しないとテーブル内の全ルールを消去する。

-X

ユーザー定義チェインを消去する。何も指定しないと組み込みチェイン以外を全消去する。

こういう記事書くたびにググるよりmanページ見たほうがいいと思ってしまう。だがなぜかネットには劣化manみたいな情報が山程転がってる。

RadeonでOpenCLしたい

ちょっと深層学習を試したくて転がっていたRadeon RX470とあまりのパーツを使って1台PCを組んだ。 PlaidMLを通してTensorflowが使えれば目的のソフトが使えるはずなのだが、意外と道のりが長そうなので記事にすることにした。

Dockerでやりたい

結論から言うと無理だった。Dockerコンテナの中でRadeonを使うのは無理らしい。GeForceなら割と簡単にできそうだった。

Ubuntu 19.10でやりたい

これも無理そうだった。Pythonを使うなら新しい方が便利だろうと最新のUbuntuをインストールし、環境をセットアップしてみた。いざplaidml-setupを走らせると、GPUが見つからない。

Default Config Devices:
   No devices.

Experimental Config Devices:
   llvm_cpu.0 : CPU (LLVM)

Using experimental devices can cause poor performance, crashes, and other nastiness.

lspciでは認識されているが、clinfoでは見えない。

$ lspci | grep Radeon
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (rev cf)
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]

$ clinfo
Number of platforms                               0

調べてみるとプロプライエタリなドライバが必要らしい。amdgpu-pro linuxで検索すると色々出てくるが、結構古いVerのリリースノートが上に出てくるので注意。 2020年1月現在、19.50が最新っぽいのでそれを落としてきて、展開、インストール。

$ wget https://drivers.amd.com/drivers/linux//19.50/amdgpu-pro-19.50-967956-ubuntu-18.04.tar.xz
$ tar -xf amdgpu-pro-19.50-967956-ubuntu-18.04.tar.xz
$ sudo amdgpu-pro-19.50-967956-ubuntu-18.04/amdgpu-pro-install

色々言われるのだが、要は

ERROR: This package can only be installed on Ubuntu 18.04.

とのことでUbuntu18.04じゃなきゃだめなようだ。

Ubuntu 18.04でやりたい

Ubuntu 18.04で上記の手順でやってみたらすんなり動いた。やっぱり公式がやれって言うことは余程の理由がなければ守っといたほうが良い。

いつの間にかBusterがstableになってた

今年の2月の頭頃から10ヶ月間、ほとんどゲームしかしていないオタクになっていた。主にオンラインゲーム(だいたいLoLと黒い砂漠)をやっていてWindowsしか使っていなかったため、Linuxを起動することもほぼ無かった。最近になってようやく創作意欲が湧いてきたので久しぶりにノートPCのDebianを起動した。溜まりに溜まったアップデートを適用するのに時間がかかるだろうなというのは覚悟して

apt-get update

してみると、

N: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Version' value from '' to '10'
E: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'testing' to 'stable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
N: Repository 'http://ftp.jp.debian.org/debian buster InRelease' changed its 'Version' value from '' to '10.2'
E: Repository 'http://ftp.jp.debian.org/debian buster InRelease' changed its 'Suite' value from 'testing' to 'stable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
E: Repository 'http://ftp.jp.debian.org/debian buster-updates InRelease' changed its 'Suite' value from 'testing-updates' to 'stable-updates'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

こんな感じのメッセージがでてきてそもそもアップデート出来なかった。ハードウェアが割と新しかったり、使いたい新機能があったりでDebian testingを使っていたのだが、知らない間(2019年7月)にDebian 10が正式リリースされていたらしい。明示的に変更をacceptしないといけないらしいが、manページをみてもよくわからなかったのでググった。どうやら、

apt-get update --allow-releaseinfo-change

でアップデート出来るようになるそうだ。
続いて、

apt-get upgrade

しようとしたが、

libcuda1 : Depends: nvidia-alternative (= 418.74-1)
            Recommends: nvidia-smi but it is not going to be installed

このような依存関係のせいで止まってしまう。これは普通に

apt-get install nvidia-smi

でなんとかなった。ただ、nvidia-smiの依存パッケージのインストール中に、古いGeForce(たぶんFermi世代以前)を使ってる人はインストールするなよ的なメッセージが出てたのでハードが古い人は気をつけたほうがいいかもしれない。GPUドライバの更新があったので念の為ここで再起動を挟んだ。
再度

apt-get upgrade

すると、700MBほどのファイルをダウンロードし始めた。途中、libpamのアップデートで再起動するサービスを適宜選べと言われるが、そのまま進んだ。ディスプレイマネージャーも再起動しとけと言われた。
その後はなにか聞かれることもなく順調だったが、

update-initramfs: Generating /boot/initrd.img-4.19.0-2-amd64
Errors were encountered while processing:
 minissdpd
E: Sub-process /usr/bin/dpkg returned an error code (1)

こんなエラーで止まってしまった。minissdpdはUPnPの高速化用のデーモンらしい。何が悪いのかよくわからないので

apt-get remove minissdpd

で削除してしまうことにした。

スマホをWebカメラとして使いたい

2月頃からLoLを始めたらただただゲームをするだけのオタクに成り果ててしまった。
最近ようやくLoL以外のことをする気になってきたので久しぶりにブログを書くことにした。

フェイストラッキングを試してみたくてWebカメラを探したのだが、中々見つからなかったのでAndoroidスマホWebカメラとして使う方法を探してみた。
https://play.google.com/store/apps/details?id=com.dev47apps.droidcam&hl=ja
このアプリをAndroidにインストールし、PC側にもクライアントをインストールすることでUSB接続・WiFi経由のどちらでもWebカメラとして使えるようになる。
Windowsでしか試していないが、Linux用クライアントもありそうなので今度試してみたい。

USBでつないで試してみたが、かなり実用的な速度で遅延なく動くように感じた。

我が家のサーバーについて

最近、ブログで書きたいことはあるがなかなか検証が出来なかったりで記事に出来ない。うかうかしていると記事を書かないまま1月が終わりそうなので自宅のサーバーについての記事を書くことにした。というのも、個人的に、他の人が運用しているサーバーのスペックを見たりするのが好きなのでもしかしたら需要があるかなと思ったからだ。

サーバーたち

現在、自宅ではx86のサーバーが2台とルーターとして使っているRaspberry Pi 2が常時起動している。

  • メインサーバー
    • 主に録画サーバー、ストレージサーバーとして使っている。録画したデータのエンコードもしているためそこそこのスペック
  • 仮想マシンサーバー
    • Proxmox 4.4が入っていて、いくつかの仮想マシンを動かしている。DLNAサーバーとか。
  • ルーター

正直、3台動かす必要性は薄いので上手いことまとめたいと思っているのだが、中々腰があがらない。今回はメインサーバーの構成について書いていく。

メインサーバーの構成

6年ほど前に組んだ自作PCで、ちょくちょく手を入れながら使っている。

  • CPU
    • Xeon E3 1225V2
      • 自宅にXeonあったら楽しいなという浪漫で選んでしまった。Ivy世代の4C4Tで定格3.2GHz。
  • RAM
    • どこのメーカーか忘れた8GB*2
      • 組んだ当時はメモリが安かったのでそんなに使う予定はなかったが16GB積んだ。案の定50%も使うことはない。
  • マザーボード
    • ASRock B75 Pro3-M
      • SATAの本数で選んだ気がする。あと、当時はVT-dを使いたかったのでVT-d対応が確認できているマザーにした。
  • ストレージ
    • ADATA 60GB SSD
      • 余っていたSSDを組み込んだが60GBもいらなかった。
    • Seagate,TOSHIBA,WesternDigitalのHDDを計16TB分
      • 足りなくなったときに都度買い足していたのでメーカーも容量もバラバラ。RAIDを組んだりはしていない。
  • 電源
    • Silverstone 450W
      • 細かいスペックは忘れてしまった。思い出したら追記する。
  • ケース
    • ミドルタワーケース
      • これも型番を忘れた。
  • 拡張ボードなど
    • アースソフト PT3
      • 言わずとしれた録画用。安かった時代に買えたのでラッキー。
    • NTTCom SCR3310
      • これも録画用。今買おうとすると高くてびっくり。
    • Intel
      • マザーのNICが調子悪いので挿した。2ポートは必要なかった。
  • OS
    • Debian Stretch つい最近までJessieだったが更新した。使い慣れているのでDebian系が良く、サーバーということで安定性をとってUbuntuではなくDebianにした。

運用

24時間365日稼働しているが、契約に余裕がなく、たまにブレーカーを落としてしまうのでUPSの導入も検討中。 Samba、NFSを使ったストレージサーバーやChinachuで録画したデータのエンコードさせるのが主な用途。VPSへ常時VPN接続していたり、Docker使っていくつかサービスを動かしている。ちょっとしたデータをやり取りしたりGitwebを動かすためにApacheも動かしている。Gitリポジトリも兼ねている。なにかやらせたいことがあったら大体こいつにやらせているが、止まると困るので、物によっては別のサーバーに仮想マシンを立ててテストしてから導入する。

雑感

パーツはかなりオーバースペック気味だが、作りたかったからしょうがない。今後も好きなだけ仕事を増やせるだろう。現在HDD6台,SSD1台が繋がっているのでSATAポートが多いマザーを選んだのは正解だった。そこそこのスペックで自由に使えるサーバーが常時稼働していると何かやりたいことが出来たときにすぐ使えるので便利。録画はVPSじゃ出来ないし。今はやっていないが、MineCraftサーバーを立ててたりもした。最近流行りのクラウドも便利だが、ストレージサーバーは自宅にあったほうが便利だろうし手元にマシンがあったほうが楽しいと思う。

Debian testingで依存関係のせいでupgrade出来ない

最近、Debianのtesting(buster)を常用し始めた。今まではstableを使っていたが、パッケージの古さに困ることがたまにあったからである。具体的にはffmpegの新機能を使いたい時、kicad5を使いたい時に困った。testingにしたことによってこれらの悩みはなくなったが、新たに困ったことが出てきた。
パッケージのアップデートをしようとすると、特定のバージョンのパッケージに依存しているパッケージのせいで、apt-get upgradeができなくなってしまった。依存されているパッケージをアップデートしなければ大丈夫そうなので、パッケージをアップデートしないようにする設定方法を調べた。どうやら、

apt-mark hold パッケージ名

で更新しないように設定できるらしい。また、

apt-mark unhold パッケージ名

でこの設定を解除できる。