2018年10月28日日曜日

カーネルアップデート時のドライバーモジュールアップデートの自動化

2018 Dec. 31.
2018 Dec. 23.
2018 Nov. 14.
2018 Oct. 28.

【TVチューナー PT2 の例】

dkmsパッケージインストール

# apt update && apt install dkms

ソースファイル配置

$ cd PT2/DRIVER/SOURCE/driver/
$ make clean
$ sudo cp -r ./* /usr/src/pt1-17b4f7b5dccb/

dkms設定

/usr/src/pt1-17b4f7b5dccb/dkms.conf を次の内容で作成する。
PACKAGE_NAME="pt1"
PACKAGE_VERSION="17b4f7b5dccb"
CLEAN="make clean"
MAKE="make"
BUILT_MODULE_NAME="pt1_drv"
DEST_MODULE_LOCATION="/kernel/drivers/video/"
AUTOINSTALL="YES"
 

ドライバーインストール

"# make install"でインストールされたファイルを削除する。
  PT2/DRIVER/SOURCE/driver/Makefileに記述された "install: $(TARGET)"セクションの
  install -m 644 $(TARGET) /lib/modules/`uname -r`/kernel/drivers/video
  でインストールされた
  /lib/modules/`uname -r`/kernel/drivers/video/pt1_drv.ko
  を削除する。
 
# dkms install -m pt1 -v 17b4f7b5dccb 
 

インストール確認

# dkms status | grep pt1
pt1, 17b4f7b5dccb, 4.15.0-38-generic, x86_64: installed

ドライバーファイルの配置場所
 /lib/modules/`uname -r`/updates/dkms/pt1_drv.ko 
 

ドライバ読み込み確認

$ lsmod | grep pt1_drv
$ ls -l /dev/pt1*

ドライバ読み込み

# modprobe pt1_drv
 

アンインストール

# dkms uninstall -m pt1 -v 17b4f7b5dccb
 

ソースパッケージの登録削除

# dkms remove -m pt1 -v 17b4f7b5dccb --all

2018年10月26日金曜日

"ls -l"出力からファイルサイズ列を取り出す

2018 Oct. 26.


$ ls -l | awk 'NR > 1 ' | sed -e "s/[ $'\t'][ $'\t']*/ /g" | cut -d " " -f 5

  [ $'\t'] : スペースもしくはタブ($'\t')

2018年10月21日日曜日

mysql select結果をcsvファイルに書き出す

2018 Oct. 21.


csvファイル書き出し

ユーザにfile権限を付与する

        $ mysql -u root -p DATABASE

        mysql> grant file on *.* to 'USER'@'localhost' ;

当該ユーザー でmysqlに接続してファイル出力する

$ mysql -u USER -p DATABASE

(カンマ区切り、二重引用符囲みで/var/lib/mysql-files/ディレクトリに出力)
    --secure-file-priv が設定された状態であれば
     SELECT @@secure_file_priv; を実行し
     出力表示されたディレクトリにCSVファイルを保存するようにする。

mysql> select * from TABLE WHERE CONDITION INTO OUTFILE "/var/lib/mysql-files/TEXTFILENAME" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n";

(列名を先頭行につけて出力)
mysql> select 'col1','col2', ... union select * from TABLE WHERE CONDITION INTO OUTFILE "/var/lib/mysql-files/TEXTFILENAME" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n";
     
書き込み先はmysqlユーザが書き込み権限のあるディレクトリでないと
いけない。
    /tmpディレクトリが無難。
    書込先ファイルの上書きはできない。ので、同名ファイルは削除しておく。

Output csv-file for standard-output.(二重引用符囲み無し。カンマ区切り)
$ mysql -u USER --password='PASSWORD' -e "SELECT *  from TABLE" DATABASE | sed -e 's/\t/,/g' > outfile.csv

(sample)
$ mysql --user epgrec --password='PASSWORD' -e 'SELECT path,starttime,title,description,type,channel from Recorder_reserveTbl where complete = 1 and dirty = 0 order by starttime desc' epgrec | sed -e 's/\t/,/g' > ~/video_list.csv


  sql結果のファイル出力

  $ mysql --user epgrec --password='epgrec106' epgrec > OUTFILE
  SQL文の入力待ちになったところで
  select path from Recorder_reserveTbl order by path asc ;
  \q
  と入力するとファイルが作成される。

2018年10月20日土曜日

mysql ファイル書き込みディレクトリ制約の解除

2018 Oct. 20.

https://qiita.com/bohebohechan/items/207e87786b1e30f60abe より

概要

secure-file-priv に設定されたディレクトリのみに書き込みができる。
secure-file-privの設定がNULLであれば書き込み制約されない。
書き込み属性が、mysqlユーザーを許可するディレクトリであること。

secure-file-privの確認

mysql> SELECT @@global.secure_file_priv;
 

secure-file-privの設定

/etc/mysql/conf.d/my.cnfを編集し、mysqlサーバーを再起動する。

(/etc/my.cnfでのNULL設定)
 [mysqld]
secure-file-priv = ""
 
 
 

git リモートのbranchの確認、ローカルブランチとの確認

2018 Nov. 11.
2018 Oct. 20.

リモートのbranchの確認

次の2つのコマンドを実行する
$ git fetch
$ git branch -a

リモートブランチとローカルブランチの比較

$ git diff master origin/master
 

2018年10月14日日曜日

cron 起動するスクリプト・プログラムのライブラリパスを設定すること

2018 Oct. 14.

cronの@rebootで起動させるruby/sinatraが、RUBYLIB設定が無いので起動しないことに気づくまで随分時間を使ってしまった。

2018年10月8日月曜日

mysql パスワードポリシー変更/無効化

2019 Oct. 21.
2018 Oct. 21.
2018 Oct. 08.

永続的変更(こちらで運用中)

mysqlサーバー設定ファイル *.cnf を編集する[mysqld] validate_password_policy=LOW  上記を設定するとmysqlサーバーの起動に失敗するので、下記とした。 rootでmysqlに接続し、下記コマンドでvalidate_passwordプラグインを削除し、mysqlサーバーを再起動する mysql> uninstall plugin validate_password;

一時的変更(mysqlサーバーを再起動すると設定が消える)

 $ mysql -p -u root

(設定確認) 
mysql> SHOW VARIABLES LIKE 'validate_password%';

(ポリシー変更) 
 mysql> set global validate_password_policy=LOW;
 

2018年10月7日日曜日

OpenVPNインストール ルーティング方式 Easy-RSA3利用、TLS認証あり版

2019 Oct. 21.
2019 Apr. 27.
2018 Oct. 08.
2018 Oct. 07.
2018 Sep. 27.
2018 Sep. 02.

インストール

こちら(https://qiita.com/noraworld/items/2fe6be489e1d93c748b8) を参照

 

 プログラムインストール

# apt install openvpn
$ cd ~/YOUR-WORK-DIR
$ git clone https://github.com/OpenVPN/easy-rsa.git
 

初期設定

$ cd ~/YOUR-WORK-DIR/easy-rsa/easyrsa3
$ ./easyrsa init-pki

 

 CA証明書生成

以後入力するパスフレーズはすべて同じにしておいた方が楽。
CA名称は "ホスト名+OS名" にした。 
$ ./easyrsa build-ca
$ sudo cp pki/ca.crt /etc/openvpn/

 

サーバ証明書生成

$ ./easyrsa build-server-full server nopass
$ sudo cp pki/issued/server.crt /etc/openvpn/
$ sudo cp pki/private/server.key /etc/openvpn/

 

DH鍵生成

$ ./easyrsa gen-dh
$ sudo cp pki/dh.pem /etc/openvpn/
 

TLS鍵生成

$ openvpn --genkey --secret ./pki/ta.key
$ sudo cp ./pki/ta.key /etc/openvpn/
 

クライアント証明書生成

$ ./easyrsa gen-crl
$ sudo cp pki/crl.pem /etc/openvpn/
$ sudo chmod o+r /etc/openvpn/crl.pem

 

サーバー設定ファイル記述

# touch /etc/openvpn/server.conf
 
/etc/openvpn/server.confを編集
###########
port   1194
proto  udp
dev    tun
 
cipher AES-256-CBC
auth SHA512 
 
ca          ca.crt
cert        server.crt
key         server.key
dh          dh.pem
crl-verify  crl.pem 
 
tls-auth ta.key 0 
 
ifconfig-pool-persist ipp.txt

server 10.8.0.0 255.255.255.0

push "redirect-gateway def1 bypass-dhcp"
push "route 10.8.0.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"

client-to-client
keepalive 10 120
comp-lzo

user  nobody
group nogroup

persist-key
persist-tun

status      /var/log/openvpn-status.log
log         /var/log/openvpn.log
log-append  /var/log/openvpn.log

verb 3 
###########

 

ファイアウォール設定

# ufw enable 
# ufw allow 1194/udp
# ufw reload
 

IPフォワーディング設定

 /etc/default/ufw を編集する
  DEFAULT_FORWARD_POLICYをDROPからACCEPTに変更する
    - DEFAULT_FORWARD_POLICY="DROP"
    + DEFAULT_FORWARD_POLICY="ACCEPT"
 
 IPフォワーディングを有効化
  /etc/ufw/sysctl.confを編集する
   net.ipv4.ip_forward=1の一行をアンコメントする
    - # net.ipv4.ip_forward=1
    + net.ipv4.ip_forward=1
 

IPマスカレード有効化

 ifconfigでネットワークポート名を確認する( enp0s7 とか)
 /etc/ufw/before.rulesを編集する
  一番下の行にCOMMITと書かれているはずなので、この下に以下を追加する。
  ( *nat行の上のCOMMITは削除しない)
 
   COMMIT
   +
   + *nat
   + :POSTROUTING ACCEPT [0:0]
   + -A POSTROUTING -s 10.8.0.0/24 -o enp0s7 -j MASQUERADE
   + COMMIT
 
 # ufw reload
 

Logローテーション設定

こちら(https://gtrt7.com/blog/linux/ubuntu-openvpn) を参照
OpenVPNログローテーション設定ファイル新規作成
/etc/logrotate.d/openvpn を編集する。
/var/log/openvpn-status.log {
weekly
rotate 7
delaycompress
compress
missingok
notifempty
}
/var/log/openvpn.log {
weekly
rotate 7
delaycompress
compress  missingok
notifempty
sharedscripts
postrotate
systemctl restart openvpn@server 2>&1 > /dev/null || true
endscript
}

OpenVPN起動

# systemctl start openvpn@server.service

起動確認
$ ps ax -f | grep openvpn | grep -v grep
 
$ systemctl status openvpn@server.service
   Active: active (running) の表示を確認する
 

OpenVPN自動起動設定

# systemctl disable openvpn
# systemctl disable openvpn.service

# systemctl enable openvpn@server.service

確認 
$ systemctl is-enabled openvpn openvpn.service openvpn@server.service
 

クライアント用秘密鍵の生成

$ cd ~/YOUR-WORK-DIR/easy-rsa/easyrsa3 
 
(接続時パスワード無し) $ ./easyrsa build-client-full HOGE nopass
(接続時パスワード有り) $ ./easyrsa build-client-full HOGE

(HOGEは "サーバー名+サーバーOS+クライアント端末名" とした)

 

$ mkdir ~/CLIENT-FILE-DIR
$ sudo cp /etc/openvpn/ca.crt ~/CLIENT-FILE-DIR/
$ cp pki/issued/HOGE.crt ~/CLIENT-FILE-DIR/
$ cp pki/private/HOGE.key ~/CLIENT-FILE-DIR/
$ sudo chown USER:USER ~/CLIENT-FILE-DIR/ca.crt
$ chown USER:USER ~/CLIENT-FILE-DIR/HOGE.crt
$ chown USER:USER ~/CLIENT-FILE-DIR/HOGE.key
  USER: VPNサーバに現在ログインしているユーザのユーザ名 
 

接続するクライアントに鍵ファイルをダウンロード

$ scp ~/CLIENT-FILE-DIR/ca.crt CLIENT
$ scp ~/CLIENT-FILE-DIR/HOGE.crt CLIENT
$ scp ~/CLIENT-FILE-DIR/HOGE.key CLIENT
$ scp ./pki/ta.key CLIENT
  

VPN.ovpn を作る(ファイル名は任意だが、拡張子は .ovpn )

client
dev    tun
proto  udp
remote YOUR.GLOBAL.ADDRESS.HERE 1194
resolv-retry  infinite
nobind
tls-auth ta.key 1
persist-key
persist-tun
cipher AES-256-CBC
auth SHA512
ca    ca.crt
cert  CLIENTDEVNAME.crt
key   CLIENTDEVNAME.key
comp-lzo
verb 3

# persist-key, persist-tun, comp-lzo, verb はサーバ側と同じにする。サーバ側に設定してあればこちらにも入力し、設定していない場合は外す。

VPN.ovpn をクライアントにコピー

  $ scp VPN.ovpn CLIENT


android端末にOpenVPN for Androidをインストールする

OpenVPN for Androidを開き、「プロファイルの追加」アイコンをタップして、 .ovpnファイルをインポートし、他の3ファイルを読み込む。

OpenVPN for Android 設定

種別: 証明書
CA証明書 ca.crt
クライアント証明書  CLIENTDEVNAME.crt
クライアント証明書のキー CLIENTDEVNAME.key
ポート番号 1194
プロコトル UDP

TLS認証を使用する :  on
暗号化方式: AES-256-CBC



設定

WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this

This is nothing to worry about.
https://support.hidemyass.com/hc/en-us/articles/202720436-Auth-nocache-Warning-in-OpenVPN-connection-log


WARNING: cipher   local='cipher BF-CBC'  remote='cipher AES-256-CBC'

クライアントの暗号化方式を AES-256-CBS に指定する。
参考サイト

WARNING: No server certificate verification method has been enabled. 

クライアント設定で「TLSサーバー証明書を要求する」をオンにする。


VPN経由でアクセスするLAN内の各種サーバーの設定

http://rokkonet.blogspot.com/2018/05/openvpn.html


2018年10月3日水曜日

OpenVPN クライアントからサーバーに接続時のパスワード要否設定

2018 Oct. 07.
2018 Oct. 03.

クライアント秘密鍵の生成で
$ ./easyrsa build-client-full 設定ファイル名 nopass
とコマンドの最後にnopassオプションを指定すればパスフレーズが不要となる

2018年10月1日月曜日

TS-MPEG2ファイルをDVD-VIDEOに焼く

2018 Oct. 01.

TS-MPEG2ファイルをDVD-VIDEO用MPEG2ファイルに変換する

こちら を参照

DVD-VIDEO用MPEG2ファイルをDVD-VIDEO形式にオーサリングする

$ VIDEO_FORMAT=NTSC dvdauthor -t -o OutDir InFile.mpg

ビデオマネージャ (VMG) を作成する

$ VIDEO_FORMAT=NTSC dvdauthor -T -o OutDir

ディスクイメージを作成する

$ genisoimage -dvd-video -udf -V LABEL -o Dvd.iso OutDir

DVD-Rに焼き付ける 

Brasero でDvd.isoをDVD-Rに焼く

TS-MPEG2ファイルをDVD-VIDEO用MPEG2ファイルに変換する

2018 Oct. 1.

$ ffmpeg -i InFile.ts -target ntsc-dvd OutFile.mpg