DeepCool AK620-DIGITALとAORUS ELITE AX-WのLED周りをUbuntu上でいい感じにする方法

メインマシンを新しくしたのでUbuntuをインストールした。

その際にできればLED周りをWindowsと同様に設定したいと思いゴニョゴニョ調べたら出てきたのでやってみた。

GitHub - raghulkrishna/deepcool-ak620-digital-linux

Adam Honse / OpenRGB · GitLab

DeepCool AK620-DIGITAL

参考リンクのdeepcool-ak620-digital-linuxを使う。

中身は単純にPythonスクリプトとsystemd用のserviceファイル、あとインストール用のスクリプトが入っている。

Pythonスクリプトの中身を見るとCPUの温度、使用率を取得してハードウェアにwriteしているだけのように見える。

インストール用スクリプトで書かれているインストール先がなんか気持ち悪いので変更。

以下フォークリポジトリにpushした。

github.com

動作する。

マザボ(AORUS ELITE AX-W)のLED

これはOpenRGBを使う。

普通に入れようとするといらないudevルールも入るのでlsusbで該当のデバイスのベンダーID、プロダクトIDを取得して、そのudevルールを抽出。

これを/etc/udev/rules.d/60-openrgb.rulesに入れ込む。

AppImageを起動すると普通に使えるのでよしなに設定する。

devcontainerでssh-addやgit configが引っ張ってこれない問題 on WSL2 windows11

自分は普段wsl2上で作業しているのですが、会社の先輩からdevcontainerはいいぞと教えていただいたので試してみました。

しかし、git pushはおろかgit commitすらもできない状況で困っていました。

結論は、wsl2上のssh-agentやgit configを引っ張ってくるにはdevcontainerの設定をしないといけないということでした。

これでOKです。

github.com

実行中のプロセスを後からscreenに移動させる方法

実行中のプロセスを後からscreenに移動させる方法について紹介します.

reptyrパッケージが必要になりますのであらかじめインストールしておいてください.

$ sudo apt install reptyr

次に,何かしら時間がかかりそうなプロセスを走らせておきましょう.

$ <時間がかかるコマンド>

これで準備完了です.

では,screenに移動させてみましょう.

1 . Ctrl+Zでプロセスを一時停止

[1]+  Stopped <時間がかかるコマンド>

2 . jobsコマンドで該当プロセスのPIDを見つけてメモします.

$ jobs -l
[1]+ 7597 <時間がかかるコマンド>

3 . ptrace_scopeのモードの変更

Ubuntuでは他のプログラムにプロセスを奪わることを避けるためにptrace_scopeによりプロセスが操作できないようになっています.

https://www.kernel.org/doc/Documentation/security/Yama.txt

今回,プロセスを別のプロセスに移動させる操作をしたいので,

そのモードを変更する必要があります.

そのためには以下のコマンドを実行します.

$ echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
0

4 . screenを実行

5 . screen上でreptyrを用いてプロセスの親を切り替え

$ reptyr 7597

ちなみに,screenに移行したいプロセスが子プロセスを走らせていたりするときは,Tオプションを追加します.

このTオプションはターゲットの端末セッション全体を移動させるものです.

$ reptyr -T 7597

6 . fgコマンドで停止しているプロセスをフォアグラウンドで実行

$ fg
... プロセスの出力 ...

7 . ptraceによるロックを有効化

$ echo 1 | sudo tee /proc/sys/kernel/yama/ptrace_scope
1

参考

https://datawookie.netlify.app/blog/2017/12/moving-a-running-process-to-screen/

コンテキストメニューで手軽にdebパッケージのインストールをしたい。

Visual Studio Codeを使ってると定期的にアップデートが来ますよね。

Windowsだと自動でアプデしてくれた気がするんですけど、

Ubuntuだとdebパッケージダウンロードしてきてインストールする作業が必要になります。

Ubuntu Softwareでインストールがうまくいけばよいのですが、うまくいかなかったときはエラーメッセージを何も吐いてくれなかったりするので少し嫌いです。

そんなことが何回かあったので自分はdpkgコマンドを使ってのインストールを使うのが常になってます。

しかし、これもまた面倒くさい。

端末開いて、ダウンロードフォルダに移動して、コマンド打ってインストール。

いや、書いてみたらそこまで工程が多くなかった。

まあ・・・、気にせず書き続けます。

とりあえず、こんな面倒くさい工程をもう少し簡単にしたいので、

コンテキストメニューからdebパッケージのインストールコマンドを走らせるようにしてみました。

下みたいな感じに。

手順

FileManager-Actionsをインストールして、設定をしただけです。

1. FileManager-Actionsのインストール

$ sudo apt install filemanager-actions
$ sudo apt install nautilus-extension-fma

2. 設定

新しい設定を追加して、以下のようにコマンドとどの種類に反映させたいかの設定を行います。

Command -> Command -> Pathにterminatorまたはgnome-terminalなど好きな端末エミュを開くコマンドを記述します。

Command -> Command -> Parametersに引数を書いていきます。

自分の場合はterminatorを指定使うので引数は以下のようになります。

-e "echo %f; sudo dpkg -i %f; echo 'press any key...'; read"

%fに右クリックしたときに選択したファイルのパスが入ります。

sudo dpkg -i %fはインストールコマンドです。

echo 'press any key...'; readは、キー入力してから端末を閉じるようにしています。これがないとエラーメッセージが出たときに見れないので・・・。

どの種類のファイルに反映させたいかの設定

Basename -> basename filterってところを*.debとするだけです。

こうすることで今回追加したメニューをdebパッケージファイルを選択したときだけ表示させることができます。

これで上記に貼り付けた動画のように動くはずです。

余談

今回はdebパッケージのインストールだけを行いましたが、他にもVisual Studio Codeコンテキストメニューから開くOpen with vscodeを追加するなどができますので試してみると良いと思います。

qiita.com

OpenSiv3dのインストール備忘録 (2020年8月インストール成功確認)

Twitterで意気揚々とOpenGLでマイクラのクローン作ってやるぜって言ってたけど、シェーダーとかなんやら面倒くさくなってOpenSiv3dに逃げることにしました。

許して

今回はその逃げ場であるOpenSiv3dのインストールの備忘録となります。

環境はUbuntu 18.04となります。

インストール方法調べてるとUbuntuでのインストールに苦戦してる人が多かったので書き記すことにしました。

基本的にやったことは以下の通り

必要パッケージのインストール

これは普通にaptでインストールするだけ、自分がインストールしたのは以下のパッケージ

  • libopenal-dev
  • libgif-dev
  • libwebp-dev
  • libogg-dev
  • libvorbis-dev
  • libudev-dev
  • libswresample-dev
  • libturbojpeg0-dev
$ sudo apt install libopenal-dev libgif-dev libwebp-dev libogg-dev libvorbis-dev libudev-dev libswresample-dev libturbojpeg0-dev 

これで必要なパッケージのインストールは完了

# OpenCV4の現在(2020/08/13)の最新版4.4.0のビルド

https://opencv.org/releases/から現在の最新版である4.4.0のソースをダウンロードしてunzipしておきます。

cmakeにちょっとしたオプションをつける以外は公式サイトに書いてあるインストール方法とほとんど変わりません。

OpenCV: Installation in Linux

まずはビルド用のディレクトリを作って・・・

$ cd opencv-4.4.0/ $ mkdir build && cd build/ 

cmakeを使ってビルドします。

ここでpkg-configのオプションをつけといてください。

$ cmake -D CMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local .. 

あとは公式のインストール行程に従ってやっていくだけです。

$ make -j7
$ sudo make install

boostの現在の最新版のビルド

aptでインストールしてきたboostだとバージョンが古く、Siv3Dをビルドする途中でboost/geometry/algorithms/densify.hppがないと怒られてしまいます。

aptでインストールしてきたboostは1.65.1で、Siv3Dが要求するdensifyは1.67.0で追加されているものでした。

そのため最新版をビルドします。

これはboostの日本語情報サイトに情報があるので、こちらに書いてある行程に従ってインストールしていきます。

Boostライブラリのビルド方法 - boostjp

$ git clone --recursive https://github.com/boostorg/boost.git
$ cd boost
$ ./bootstrap.sh
$ ./b2 install -j2 --prefix=/usr/local

これで/usr/localにboostの最新版が入りました。

OpenSiv3Dのインストール

ここまで来ればあとは公式のREADMEに従ってインストールするだけです。

OpenSiv3D/README_JP.md at master · Siv3D/OpenSiv3D · GitHub

$ git clone https://github.com/Siv3D/OpenSiv3D.git
$ cd OpenSiv3D $ mkdir Linux/Build
$ cd Linux/Build

公式はninjaというビルドツール使ってますが、まあmakeでも大丈夫なので私はmake使いました。

$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make

これでlibSiv3D.aが生成されればOKです。

動作テストをしたければOpenSiv3D/Linux/Appの方に移動してサンプルをビルドします。

$ cd ../App/ $ cmake .
$ make
$ ./Siv3D_App

libSiv3D.aは他のプロジェクトでも使えるように/opt/OpenSiv3D/Linuxなどのディレクトリを作ってそこにコピーしておきましょう。

RAID1構成のHDDからデータ救出した話

家で運用しているNASが経年劣化らしくお亡くなりになったのでHDDからデータ救出しました。

使用したのはmdadmというソフトウェアRAIDのディスクを管理、構築するものらしいです。

参考にしたのはこちらのサイトというかPDF:

http://www.jaist.ac.jp/tech/archives/h27/pdf/17_fukushima

ほぼ同じような流れでやってますのでPDFの方を見たほうがよさげ。

 

以下実施した作業はUbuntu 18.04 LTS上で行っています

HDD接続

これは簡単、単にHDDをPCにつなげるだけ。

RAID1なので2つあるうちの1つだけでOKです。

SATAケーブルが余っていればマザボに繋げるとかしましょう。

私は以前密林で買っていたサンワサプライSATA-USB3.0変換ケーブルを持っていたのでそいつで繋げました。

安いし電源安定化のためにコンセントから電源取れるし、あったら便利な奴だなと思います。

サンワサプライ SATA-USB3.0変換ケーブル 0.8m USB-CVIDE3

サンワサプライ SATA-USB3.0変換ケーブル 0.8m USB-CVIDE3

  • 発売日: 2011/03/08
  • メディア: Personal Computers

データ救出準備

ソフトウェアRAIDディスク管理、構築用ソフトウェアであるmdadmをインストールします。

普通にUbuntuの公式リポジトリにあるのでaptで落としてきます。 

$ sudo apt install -y mdadm

私の環境ではインストールしたら自動的にHDDのRAIDが認識されたのでPDFみたいな面倒な手順は必要ありませんでした。

もしも以下の画像みたいにmd*みたいなものがそれぞれのパーティションにくっついてなければPDFの方を参考にやってみてください。

$ lsblk

sde 8:64 0 2.7T 0 disk 
├─sde1 8:65 0 4G 0 part 
│ └─md0 9:0 0 4G 0 raid1 
├─sde2 8:66 0 512M 0 part 
│ └─md1 9:1 0 512M 0 raid1 
└─sde3 8:67 0 2.7T 0 part 
└─md2 9:2 0 2.7T 0 raid1

おそらく容量が一番大きいmd2にデータがあると思うのでこれをマウントします。

しかし何かマウントできない。

$ sudo mount /dev/md2 /media/raid_disk/
mount: /media/raid_disk: 未知のファイルシステムタイプ 'LVM2_member' です.

LVM2_memberとあり、これはどうやらLVMパーティションがあるから出てくるエラー表示らしい。

とりあえずLVM扱うのでlvm2パッケージをインストールします。

sudo apt install lvm2

LVM論理ボリュームを確認します。

$ sudo lvscan
  inactive          '/dev/c/c' [2.71 TiB] inherit

inactiveであるので有効化します。

$ sudo lvchange --available y /dev/c/c

こうすればあとはマウントするだけです。

$ cd /media
$ mkdir raid_disk
$ sudo mount /dev/mapper/c-c /media/raid_disk/

データ救出

上の項目でマウントできたので、あとは普通のドライブと同じようにnautilusとかのファイルマネージャーで必要なデータを救出してください。

f:id:abc10946:20200731215159p:plain