rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

JavaをArch系のManjaro Linuxにインストール

2021 May 05.

JDKのインストール

# pacman -S jdk-openjdk

確認

$ archlinux-java status
Available Java environments:
  java-15-openjdk (default)

# archlinux-java set java-15-openjdk
(他のjavaをインストールしていないためか、これは不要の模様)

$ archlinux-java status 
Available Java environments:
  java-15-openjdk (default)

$ java --version
openjdk 15.0.2 2021-01-19
OpenJDK Runtime Environment (build 15.0.2+7)
OpenJDK 64-Bit Server VM (build 15.0.2+7, mixed mode)

$ javac --version
javac 15.0.2

OpenVPNサーバーをArch系のManjaro Linuxにインストール

2021 May 05.

出典 Arch Linux で OpenVPN サーバをセットアップ - Linearstar Blog

openvpn easy-rsaをインストールする

easy-rsaでのPKI(公開鍵基盤)の構築初期化

# cd /etc/easy-rsa
# easyrsa init-pki

認証局が署名した証明書ファイルca.crtの作成と配置

# cd /etc/easy-rsa
# easyrsa build-ca
# cp pki/ca.crt /etc/openvpn/server/

サーバ証明書の作成

# cd /etc/easy-rsa
# easyrsa gen-req SERVERNAME nopass    ## SERVERNAME部分は任意の文字列

(作成されたファイルの確認)
# ls /etc/easy-rsa/pki/reqs/SERVERNAME.req
# ls /etc/easy-rsa/pki/private/SERVERNAME.key

サーバー証明書への署名

# cd /etc/easy-rsa
# easyrsa sign-req server SERVERNAME

(作成されたサーバー証明書ファイルの確認)
# ls /etc/easy-rsa/pki/issued/SERVERNAME.crt

作成されたサーバー証明書秘密鍵サーバー証明書を配置

# cp /etc/easy-rsa/pki/private/SERVERNAME.key /etc/openvpn/server/
# cp /etc/easy-rsa/pki/issued/SERVERNAME.crt /etc/openvpn/server/

dh.pemとTLS認証鍵ta.keyを作成

dh.pem:セッションの共通鍵を安全に生成するため、暗号鍵を安全に転送するために使用されるDiffie-Hellman鍵交換ファイル

# cd /etc/openvpn/server
# openssl dhparam -out dh.pem 2048
# openvpn --genkey secret ta.key
(旧 # openvpn --genkey --secret ta.key)

OpenVPN設定ファイル作成

サンプルファイルをコピー
# cp /usr/share/openvpn/examples/server.conf /etc/openvpn/server/server.conf

/etc/openvpn/server/server.confを編集

(失効クライアント証明書リストcrl.pemは設定せず)

port NNNN    ## port 1194 が標準。

# TCP or UDP server?
;proto tcp
proto udp

# network address for OpenVPN client
server 10.8.0.0 255.255.255.0

# encryption
cipher AES-256-CBC
auth SHA512

# For compression compatible with older clients use comp-lzo
# If you enable it here, you must also
# enable it in the client config file.
comp-lzo

# dhcp configuration
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"


/etc/openvpn/server/server.conf

port NNNN    ## port 1194 が標準。

proto udp

dev tun

ca ca.crt
cert SERVERNAME.crt  # Change to YOUR FILE NAME
key SERVERNAME.key  # Change to YOUR FILE NAME. This file should be kept secret

dh dh.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 8.8.8.8"

keepalive 10 120

tls-auth ta.key 0 # This file is secret

cipher AES-256-CBC
data-ciphers AES-256-CBC    # 後述のエラーにより後から追記した
auth SHA512

comp-lzo

persist-key
persist-tun

status openvpn-status.log

verb 3

explicit-exit-notify 1

ファイアウォール設定

IPフォワーディング、IPマスカレードの有効化はsystemd-networkdではなくufw設定ファイルにて行う

# ufw enable
# ufw allow 1194/udp    ## /etc/openvpn/server.confに記述したポート番号
# 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

旧書式
(net.ipv4.ip_forward=1の一行をアンコメントする)
# net.ipv4.ip_forward=1
net.ipv4.ip_forward=1

IPマスカレード有効化

ifconfigでネットワークポート名を確認する( enp0s7 とか)
/etc/ufw/before.rulesを編集

(一番下の行にCOMMITと書かれているはずなので、この下に以下を追加する)
COMMIT
(このCOMMITは元々書かれているもの。削除しない)

# START OPENVPN RULES
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -o enp0s7 -j MASQUERADE
COMMIT
# END OPENVPN RULES


ufw再読み込み

# ufw reload

ファイル属性を下記に変更する。

出典 [SOLVED] OpenVPN fail to start as service with systemd / Networking, Server, and Protection / Arch Linux Forums

# ls -l /etc/openvpn/server/ 
 -r-------- 1 openvpn network  1233  5月  4 23:53 ca.crt
 -r-------- 1 openvpn network   424  5月  4 23:26 dh.pem
 -rw------- 1 openvpn network     0  5月  5 09:12 ipp.txt
 -rw------- 1 openvpn network   526  5月  5 09:12 openvpn-status.log
 -r-------- 1 openvpn network  4699  5月  4 23:23 SERVERNAME.crt
 -r-------- 1 openvpn network  1704  5月  4 23:22 SERVERNAME.key
 -rw------- 1 openvpn network 10911  5月  4 23:50 server.conf
 -r-------- 1 openvpn network   636  5月  4 23:27 ta.key

OpenVPNの一時的起動、エラー出力確認、設定修正

# openvpn /etc/openvpn/server/server.conf

設定へのチェック状況が画面出力される。
無事起動され、
Initialization Sequence Completed
と表示されたら、Ctrl+cでOpenVPNを停止する。
画面出力に従って設定を修正する。

/etc/openvpn/server/server.confの修正

openvpn /etc/openvpn/server/server.confで下記が画面出力された。

DEPRECATED OPTION: --cipher set to 'AES-256-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM). Future OpenVPN version will ignore --cipher for cipher negotiations. Add 'AES-256-CBC' to --data-ciphers or change --cipher 'AES-256-CBC' to --data-ciphers-fallback 'AES-256-CBC' to silence this warning.


/etc/openvpn/server/server.confに"data-ciphers AES-256-CBC"を追加
参考ページ OpenVPN 2.5 のサイファの互換性 | OpenVPN.JP

cipher AES-256-CBC
data-ciphers AES-256-CBC
auth SHA512

OpenVPN自動起動設定

# systemctl enable openvpn-server@server.service

OpenVPNの起動

# systemctl start openvpn-server@server.service


クライアント用設定

クライアント用秘密鍵の生成
# cd /etc/easy-rsa

# easyrsa build-client-full CLIENTNAME nopass
Using SSL: openssl OpenSSL 1.1.1k  25 Mar 2021
Generating a RSA private key
..............................................................+++++
.................................+++++
writing new private key to '/etc/easy-rsa/pki/easy-rsa-3988.y4aJh1/tmp.T15VkU'
-----
Using configuration from /etc/easy-rsa/pki/easy-rsa-3988.y4aJh1/tmp.9kh5CA
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key: PASS-PHRASE-OF-ca.key-IN-SERVER
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'CLIENTNAME'
Certificate is to be certified until Aug  8 04:47:20 2023 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

(生成されたファイル確認)
# find ./ -name '*CLIENTNAME*'

(クライアントからサーバー接続にパスワードを要する設定にするならば)
# easyrsa build-client-full CLIENTNAME

クライアント内に配置するファイルをSSH通信できる一般ユーザーのディレクトリ(/home/USER/TMP/OVPNCLIENT)にコピーし、属性を設定する
$ mkdir ~/TMP/OVPNCLIENT
$ cd ~/TMP/OVPNCLIENT
$ sudo cp /etc/openvpn/server/ca.crt ./
$ sudo cp /etc/openvpn/server/ta.key ./
$ sudo cp /etc/easy-rsa/pki/issued/CLIENTNAME.crt ./
$ sudo cp /etc/easy-rsa/pki/private/CLIENTNAME.key ./
$ sudo chown USER:USER ca.crt ta.key CLIENTNAME.crt CLIENTNAME.key

~/TMP/OVPNCLIENT/内の4ファイルをクライアント内の所定の場所にコピーする


クライアント内に配置する設定ファイルを作成する

VPNCLIENT.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
data-ciphers AES-256-CBC

auth SHA512

ca    ca.crt
cert  CLIENTNAME.crt
key   CLIENTNAME.key
comp-lzo
verb 3
  • persist-key, persist-tun, comp-lzo, verbはサーバー側と同じにする。サーバー側に設定してあればこちらにも入力し、設定していない場合は外す。
  • remoteのポート番号はサーバー側と同じにする。

YOUR.GLOBAL.ADDRESS.HEREにはサーバーの属するネットワークのグローバルアドレスを指定。
CLIENTNAME.crt、CLIENTNAME.keyにはクライアントの証明書ファイル名・鍵ファイル名を指定。

VPNCLIENT.ovpnをクライアント内に配置する


クライアントのソフトに従って設定する


クライアントからの接続に成功したら、不要なファイルを削除する
$ rm -rf ~/TMP/OVPNCLIENT


Arch系のManjaro Linuxへのブラザープリンター&スキャナーDCP-J562Nインストール

2021 May 04.
2021 May 02.

 

印刷機能インストール

参照元
Arch LinuxでBrother製プリンターを使う | クロの思考ノート

パッケージインストール
# pacman -S rpmextract
# pacman -S cups ghostscript gsfonts cups-pdf poppler a2ps
# systemctl enable --now cups.service


プリンタドライバーダウンロード

ブラザーの下記ホームページから
dcpj562ncupswrapper-1.0.0-0.i386.rpmとdcpj562nlpr-1.0.0-0.i386.rpmをダウンロードし、任意のディレクトリ(ここでは~/tmp/とする)に置く。
https://support.brother.co.jp/j/b/downloadlist.aspx?c=jp&lang=ja&prod=dcpj562n&os=127

ドライバーの取得・修正
$ cd tmp/
$ rpmextract.sh dcpj562ncupswrapper-1.0.0-0.i386.rpm
$ rpmextract.sh dcpj562nlpr-1.0.0-0.i386.rpm

~/tmp/opt/brother/Printers/dcpj562n/cupswrapper/cupswrapperdcpj562n を次のように編集する。

--- cupswrapperdcpj562n-original 2015-05-19 08:57:23.000000000 +0900
+++ cupswrapperdcpj562n 2021-05-02 23:47:31.056018421 +0900
@@ -47,21 +47,25 @@
   rm -f /usr/lib64/cups/filter/brother_lpdwrapper_${printer_model}
   rm -f /opt/brother/${device_model}/${printer_model}/cupswrapper/brcupsconfpt1
 #  rm -f /usr/local/Brother/${device_model}/${printer_model}/cupswrapper/brcupsconfpt1
-if [  -e /etc/init.d/cups ]; then
-   /etc/init.d/cups restart
-elif [  -e /etc/init.d/cupsys ]; then
-   /etc/init.d/cupsys restart
-fi
+# if [  -e /etc/init.d/cups ]; then
+#    /etc/init.d/cups restart
+# elif [  -e /etc/init.d/cupsys ]; then
+#    /etc/init.d/cupsys restart
+# fi
+#systemctl restart org.cups.cupsd.service
+systemctl restart cups.service
 #  /etc/init.d/cups restart
   exit 0
 fi
 if [ "$1" = "-r" ]; then
   lpadmin -x ${printer_name}
-if [  -e /etc/init.d/cups ]; then
-   /etc/init.d/cups restart
-elif [  -e /etc/init.d/cupsys ]; then
-   /etc/init.d/cupsys restart
-fi
+# if [  -e /etc/init.d/cups ]; then
+#    /etc/init.d/cups restart
+# elif [  -e /etc/init.d/cupsys ]; then
+#    /etc/init.d/cupsys restart
+# fi
+#systemctl restart org.cups.cupsd.service
+systemctl restart cups.service
 #  /etc/init.d/cups restart
   exit 0
 fi
@@ -296,11 +300,14 @@
 fi
 
 
-if [  -e /etc/init.d/cups ]; then
-   /etc/init.d/cups restart
-elif [  -e /etc/init.d/cupsys ]; then
-   /etc/init.d/cupsys restart
-fi
+# if [  -e /etc/init.d/cups ]; then
+#    /etc/init.d/cups restart
+# elif [  -e /etc/init.d/cupsys ]; then
+#    /etc/init.d/cupsys restart
+# fi
+# systemctl restart org.cups.cupsd.service
+systemctl restart cups.service
+
 
 sleep 2s


ドライバーインストール
$ sudo cp -r ~/tmp/opt/* /opt/
$ sudo cp -r ~/tmp/usr/bin/* /usr/bin/
$ sudo /opt/brother/Printers/dcpj562n/cupswrapper/cupswrapperdcpj562n


プリンター登録

Webブラウザhttp://localhost:631/にアクセスし、管理 -> プリンター -> プリンターの追加
途中で認証を求められたら、ユーザーはrootとし、パスワードはrootユーザーのパスワードとする。

(設定状況)
説明: Brother DCP-J562N
場所: Living
プリンタードライバー: DCP-J562N - IPP Everywhere (カラー, 両面可)
接続: dnssd://Brother%20DCP-J562N._ipp._tcp.local/?uuid=e3248000-80ce-11db-8000-606dc719b036
デフォルト設定: バナー=none, none 用紙サイズ=iso_a4_210x297mm 両面指定=one-sided

スキャナー機能インストール

出典
SANE/スキャナー別の問題 - ArchWiki

ブラザー純正Linuxドライバー(本記事では利用していない)

ソフトウェアダウンロード | DCP-J562N | 日本 | ブラザー

ポート開放

上記ブラザーページに書かれていたので実行した。

# ufw enable
# ufw allow proto udp from MY.LAN.ADDRESS.0/24 to any port 54925
# ufw allow proto tcp from MY.LAN.ADDRESS.0/24 to any port 54921
# ufw reloa

AURパッケージダウンロード

DCP-J562N向けパッケージ:brscan4
AURページ: AUR (en) - brscan4
AURパッケージインストール手順
  • AURページの"Download snapshot"からbrscan.tar.tzを~/YOUR/WORKING/DIRにダウンロード
  • brscan.tar.tzをインストール
$ cd ~/YOUR/WORKING/DIR
$ tar -xvf linux-brjprinter-installer-2.2.1-1.gz
$ cd ./brscan4/
$ makepkg -si
$ sudo /opt/brother/scanner/brscan4/brsaneconfig4 -a name=SCANNER_DCP-J562N model=DCP-J562N ip=MY.SCANNER.IP.ADDRESS

  • 確認
$ sudo scanimage --list-devices
device `brother4:net1;dev0' is a Brother SCANNER_DCP-J562N DCP-J562N
device `escl:http://192.168.1.1:80' is a Brother DCP-J562N adf scanner
$ scanimage --list-devices    ## Segmentation fault (コアダンプ)

スキャナーソフトインストール

xsaneとかskanliteとかをインストールする。
残念ながら、root権限でしかスキャンできない。

$ sudo skanlite -d 'brother4:net1;dev0'    ## スキャンできる
$ sudo skanlite -d `escl:http://192.168.1.1:80'    ## 「不正な引数」エラー
$ skanlite -d 'brother4:net1;dev0'    ## Segmentation fault (コアダンプ)

$ SANE_DEBUG_DLL=5 scanimage -L
[23:27:35.216652] [dll] add_backend: adding backend `xerox_mfp'
[23:27:35.216666] [dll] add_backend: adding backend `brother4'
[23:27:35.216701] [dll] sane_get_devices
[23:27:35.216715] [dll] load: searching backend `brother4' in `/usr/lib/sane'
[23:27:35.216729] [dll] load: trying to load `/usr/lib/sane/libsane-brother4.so.1'
[23:27:35.216749] [dll] load: dlopen()ing `/usr/lib/sane/libsane-brother4.so.1'
[23:27:35.216942] [dll] init: initializing backend `brother4'
Segmentation fault (コアダンプ)

一般ユーザーでのスキャンを可能に

$ ls -ld /opt/brother
drwx------ 4 root root 4096  5月  3 19:01 /opt/brother
(ドライバーダウンロード・インストールしたユーザーのumaskが0077であるためか?)

$ sudo chmod 755 /opt/brother

$ skanlite -d 'brother4:net1;dev0'    ## スキャンできる

ext4ファイルシステムでの初期化/フォーマット

2021 May 02.

出典 大容量HDD/SDDを高速にフォーマットする方法 - pyopyopyo - Linuxとかプログラミングの覚え書き -

(ディスクパーティションの確認)
# fdisk -l

(/dev/sdXNをext4フォーマット)
# /sbin/mkfs.ext4 -E lazy_itable_init=0  /dev/sdXN

VLCの映像が映らない時の処置

2021 May 02.
2021 May 01.

出典 (解決)vlcでTVが映らない。pt3(dvb) / xubuntu18.04.5lts: ゆったりとLinux

Arch系のManjaro LinuxVLCでビデオ再生すると映像が映らなかったが、
VLCのメニューバーのツール → 設定 → ビデオ で、「ビデオの有効化」の下の「ディスプレイ」にある項目の「出力」で、デフォルト設定が「自動」になっているところを、プルダウンメニューから「XVideo出力(XCB)」を選択して設定を保存し、VLCを再起動すれば映像が映るようになった。

vim設定 ビジュアルモード選択文字列を自動的にクリップモードにコピーする

2021 Apr. 30.

出典 vimエディタからクリップボードを利用する。 — 名無しのvim使い

(~/.vimrc)

:set clipboard+=autoselect
:set clipboard+=unnamed