20200702のLinuxに関する記事は8件です。

FcitxとZoomを共存 ~日本語化を添えて~

この記事はFcitxとZoomを共存させようと初心者が奮起し、成功した覚え書きです。
ご存じのようにFcitxを使用中の環境にZoomをインストールすると、Zoomがibusを連れてきて、Fcitxが使えなくなりますが、
ZoomとFcitxの共存に成功しました。 (一部機能は使えませんが)
使用中の環境はDebianとArchですが、ここではDebianのみ書いておきます。(Archでも同じようにすることは可能)

$ uname -a 
  Linux kali 5.6.0-kali2-amd64 #1 SMP Debian 5.6.14-2kali1 (2020-06-10) x86_64 GNU/Linux

Fcitxのインストール

一応書いておきます。

Debian(系)でのFcitxインストール方法

$ apt install fcitx fcitx-mozc (fcitx-qt5)

あとは、input-methodでfcitxを選択して、fcitx-configtoolで設定するだけ。

Zoomのインストール

Fcitx関係なしに、通常のZoomインストールを書いておきます。

Debian(系)でのzoomインストール方法

$ dpkg -i zoom_amd64.deb
$ apt -f install

共存化するためには

同じ環境にインストールされてしまうという現象を回避するには、仮想化すればいいと
いうことで使うのはdockerです。
ということでインストールしていきます。

Debian(系)でのdockerインストール方法

$ apt install docker.io (docker-ce)
$ gpasswd -a {user} docker 
$ systemctl start docker.service

使用頻度が高ければ systemctl enable docker.serviceも入れておくと便利

docker hubmdouchement/zoom-usがあるのでこれを使います。

DockerにZoomをインストールする

まずはドキュメント mdouchement/zoom-us を参考にして

pull

$ docker pull mdouchement/zoom-us

ドキュメントをこのまま進めても起動には何の問題もないのですが、このままでは日本語フォントが入っていないので
日本語がすべて豆腐になります。
なのでGithubからファイルを落としてきます。

~/Download
$ git clone https://github.com/mdouchement/docker-zoom-us

日本語フォントをインストールするように

Duckerfileを書き換え

pulseaudiのあとに使いたいフォントを入れます。
今回はfonts-noto-cjk-extraを入れてますが、一部反応しないフォント有? cjk-extraは使えるので困ったらこれで。

docker-zoom-us/Dockerfile
$ vim docker-zoom-us/Dockerfile

# References:
#   https://hub.docker.com/r/solarce/zoom-us
#   https://github.com/sameersbn/docker-skype
---省略---
  libxcb-keysyms1 libxcb-xtest0 ibus ibus-gtk \
  libnss3 libxss1 xcompmgr pulseaudio `fonts-noto-cjk-extra`

ARG ZOOM_URL=https://zoom.us/client/latest/zoom_amd64.deb

# Grab the client .deb
---省略---

書き換えたファイルを元に

build

~/Download
$ docker build -t mdouchement/zoom-us docker-zoom-us

mdouchement/zoom-usのところは自分で名前を設定することが可

あとは

run

$ docker run -it --rm --volume /usr/local/bin:/target mdouchement/zoom-us:latest install

これで終わり...ですが、

ZoomとFcitxの共存に成功しました。 (一部機能は使えませんが)

と書きましたができないのは日本語入力です。入力メゾットを入れて動くのか、どうしたらいいのか全くわかりません(泣)

小ネタ(?)

Zoomをインストールして、いざ使おうとすると
「ん? なんかUIでかくね??」なんてことがありました。
それも修正できたので書いておきます。 まあ、Zoomのconfigいじるだけなんですが

元のconfigがこれ↓ですが、

~/.config/zoomus.conf
[General]
GeoLocale=system
SensitiveInfoMaskOn=true
asBarTopMargin=30
autoPlayGif=false
autoScale=true
bForceMaximizeWM=false
blockUntrustedSSLCert=false
captureHDCamera=true
chatListPanelLastWidth=230
conf.webserver=https://zoom.us
currentMeetingId=
deviceID=
enable.host.auto.grab=true
enableAlphaBuffer=true
enableCloudSwitch=false
enableLog=true
enableMiniWindow=true
enableQmlCache=true
enableScreenSaveGuard=false
enableStartMeetingWithRoomSystem=false
enableTestMode=false
enableWaylandShare=false
fake.version=
flashChatTime=0
forceEnableTrayIcon=true
forceSSOURL=
host.auto.grab.interval=10
isTransCoding=false
logLevel=info
newMeetingWithVideo=true
playSoundForNewMessage=false
scaleFactor=1
sso_domain=.zoom.us
sso_gov_domain=.zoomgov.com
system.audio.type=default
upcoming_meeting_header_image=
useSystemTheme=false
userEmailAddress=

[AS]
showframewindow=true

[CodeSnippet]
lastCodeType=0
wrapMode=0

[chat.recent]
recentlast.session=

[zoom_new_im]
is_landscape_mode=false
main_frame_pixel_pos_narrow="376,680"
main_frame_pixel_pos_wide="810,680"

大きいと感じたら6行目のautoScalefalseにするだけで小さくなります。
いらないとは思いますが使ってみたかったのでDockerfilezoomus.confGit hubにあげておきます。

~/Download
$ git clone https://github.com/fzmyshion/zoom_jp_conf

Dockerは初めてだったので、なにか良い方法か、別の方法があるよ!って時はそっと教えてくださるとありがたいです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Pulseaudio上のSteam/Discord/任意のチャットでノイズが入る問題への対処

たぶんChromium系のエンジンを使っているとダメ。Electronとかもダメ。
どこのバグなのか分からないですが、以下の設定を導入してpulseaudioを再起動すると直ったので、備忘録しておきます。

調査したPulseaudioのバージョン: 13.0

以下のようにしてリングバッファのサイズを小さく変更します。

/etc/pulse/daemon.conf
default-fragment-size-msec = 2

さらに、以下のように設定を変更してタイマーベースの動作からポーリングベースへ変更します。

/etc/pulse/default.pa
load-module module-udev-detect tsched=0

設定ファイルの変更後、pulseaudio -kしてPulseaudioを再起動します。

手元の環境ではこれで直りました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ubuntu/LinuxノートPCのWiFi問題

ことの発端

Ubuntu 18.04LTSのGUIの設定からWi-Fiが利用できないことに気がついた。
「No Wi-Fi Adapter Found」「Wi-Fiアダプターが見つかりません」と表示されてしまうのである。
Bluetoothの欄を見てみても同様に、Bluetoothデバイスが見つからない旨のメッセージが出る。
しばらく有線接続をしていたから、いつからそうなったのかはわからなかった。

調べてみると同じようなトラブルは多く発生しているみたいだが、原因が複数ありトラブルシューティングの方法がかなり多岐にわたることがこの問題を厄介にしているようだ。
この投稿では、原因を確認するためにコマンドをうち、症状別にどのような回復方法を行うべきなのかをまとめておく。
誰かの参考になれば幸いだし、自分の環境ではこうだったというコメントも嬉しい。

トラブルシューティング

  • AirPlaneモードではないか?
    • 判断基準
      • Ubuntu上部のメニューバーに飛行機✈マークが出ている
      • 「設定」の「Bluetooth」に明確に機内モードであることが書いてある
    • 回復手段
      • 「設定」の「Bluetooth」から機内モードを切る
  • Wi-FiがOFFになっていないか?
    • 判断基準
      • 「設定」の「Wi-Fi」を開いたとき、ウィンドウ上部のトグルスイッチが「OFF」になっている
      • ターミナルで$ rfkill listコマンドを打つと、SOFTの列がblockedになっている
    • 回復手段
      • 「設定」の「Wi-Fi」ウィンドウの上部のトグルスイッチをクリックして「ON」にする
      • ターミナルで$ rfkill unblock wlanと打つ
  • キーボードのWirelessキーが押されていないか?
    • 判断基準
      • ターミナルで$ rfkill listコマンドを打つと、HARDの列がblockedになっている
      • ターミナルで$ rfkill list bluetoothコマンドを打つと何も出ない
      • 「設定」を開くと、Wi-FiもBluetoothもデバイスが見つからないと出る
        • トグルスイッチを「ON」にしても戻ってしまう
    • 回復手段
      • キーボードのWirelessキーを探して打つ
        • 私の場合はこれだった。DELL XPS 13ではFnキーと一緒にPrtScrキー
        • ノートPCのメーカー・型番によって、Wirelessキーのマークも位置もかなり異なる
  • BIOSレベルで無効になっていないか?
    • 判断基準
      • BIOS画面からWi-Fi、Bluetoothの設定を確認する
        • BIOSの画面構成はPCによって異なるので自分のPCに合わせて調べる
    • 回復手段
      • 「Disable」になっているなら「Enable」にする
  • デバイスドライバが無いのではないか?
    • 判断基準
      • ターミナルで$ ip link showと打ちWi-Fiデバイスの名前(logical name)を確認する
        • wlan0、wlp1s0などの名前が自動で付けられている
        • MACアドレスで区別しても良い
      • ターミナルで$ sudo lshw -C networkと打ち、該当するnetworkのconfigurationdriver=hogeとなっていないか確認する
      • Wi-FiモジュールがPCIデバイスとして認識されている場合、$ lspci -nnkでも使用中のデバイスドライバ名が確認できる
    • 回復手段
      • driver=hogeとなっていない場合
        • lshwコマンドで確認したときのproductを手がかりにデバイスドライバを探す
        • RealtekのrtlXXXXシリーズはgithubなどからコンパイルしてインストールする
        • Broadcomのbcmシリーズは$ sudo apt install bcmwl-kernel-sourceでインストールする
      • driver=hogeとなっている場合
        • ターミナルで$ modinfo hogeと打ちデバイスドライバの情報を確認する
        • ターミナルで$ nmcli connectionを打つ
          • 利用したいWi-FiのSSIDが表示されない場合は設定からWi-Fiネットワークの設定を行う
        • ターミナルで$ nmcli deviceを打ちデバイスの名前を手がかりにSTATEを確認する
          • connectedならばWi-Fiに繋がっているはず
        • $ dmesg | less$ nano /var/log/syslogといったコマンドを使い、エラーメッセージが出ていないかを目視で確認する
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

今日の月齢を絵文字で表示するシェルスクリプト

Unicode絵文字が表示可能なフォントが設定されたターミナル上で実行すると、本日のおおよその月齢を計算して対応する絵文字を出力するシェルスクリプトです。

moonage.sh
#!/bin/bash

year=`date +%Y`
month=`date +%m`
date=`date +%d`

#簡易月齢計算法第1表
array=(0 2 0 2 2 4 5 6 7 8 9 10)

#西暦年数から11を引き、その値を19で割った余りを求め、11を掛ける。この値をaとする。
a=$((($year-11)%19*11))

#月数から、表に従って値を求める。この値をbとする。
b=$((${array[$(($month-1))]}))

age=$((($a+$b+$date)%30))

if [ "$age" = 0 ] || [ "$age" = 29 ]; then
    echo -n "?新月"
elif [ "$age" -ge 1 ] && [ "$age" -le 6 ]; then
    echo -n "?三日月"
elif [ "$age" -ge 7 ] && [ "$age" -le 9 ]; then
    echo -n "?上弦の月"
elif [ "$age" -ge 10 ] && [ "$age" -le 13 ]; then
    echo -n "?十三夜月"
elif [ "$age" -ge 14 ] && [ "$age" -le 15 ]; then
    echo -n "?満月"
elif [ "$age" -ge 16 ] && [ "$age" -le 20 ]; then
    echo -n "?寝待月"
elif [ "$age" -ge 21 ] && [ "$age" -le 24 ]; then
    echo -n "?下弦の月"
elif [ "$age" -ge 25 ] && [ "$age" -le 28 ]; then
    echo -n "?二十六夜月"
fi
echo "(月齢:"$age")"

実行結果

~% chmod +x moonage.sh
~% date
2020年  7月  2日 木曜日 14:47:54 JST
~% ./moonage.sh
?十三夜月(月齢:11)

参考にしたサイト
月齢 - Wikipedia
月齢計算
Googleカレンダーに月齢を表示する

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iperf でネットワークパフォーマンス測定

事前説明

iperfとは、serverとclientでトラフィックを受け渡し、どれだけのトラフィックが流れたかを確認するツール。
iperf用のserverとclientを立てて、その間をプロトコルを指定して通信させながらスループットを測定する。
異なるOS間での測定も可能(これが便利)。

iperf 公式ドキュメント

環境

今回は二つのPCの間にswiching hubを置き、その間のスループットを測定した。

iperf version: 3.1.3
iperf server: Ubuntu server 18.04 LTS
iperf client: Windows10
switching hub: netgear GS105E

目的

switching hubを挟んだ際の、2つのPC間のスループットを測る。

準備

下記のようなネットワークを作る。

iperf_test.png

実際の写真は以下のよう。

まだ、iperfにはバージョンがあり、バージョンが違うとスループットを測ることができない。

apt install iperf # version 2系
apt install iperf3 # version 3系

実測

terminal
$ iperf3 -s
cmd/pwd
$ iperf3 -c 192.168.0.2

server側、client側両方に詳細情報が出てくる。
例えば、client側のログはこんな感じ。

cmd/pwd
Connecting to host 192.168.0.2, port 5201
[  5] local 192.168.0.10 port 54178 connected to 192.168.0.2 port 5201
iperf3: getsockopt - Protocol not available
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  5]   0.00-1.00   sec   108 MBytes   901 Mbits/sec  1296506930   0.00 Bytes       
iperf3: getsockopt - Protocol not available
[  5]   1.00-2.00   sec   107 MBytes   898 Mbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Protocol not available
[  5]   2.00-3.00   sec   107 MBytes   899 Mbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Protocol not available
[  5]   3.00-4.00   sec   106 MBytes   893 Mbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Protocol not available
[  5]   4.00-5.00   sec   108 MBytes   911 Mbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Protocol not available
[  5]   5.00-6.00   sec   107 MBytes   898 Mbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Protocol not available
[  5]   6.00-7.00   sec   107 MBytes   896 Mbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Protocol not available
[  5]   7.00-8.00   sec   108 MBytes   902 Mbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Protocol not available
[  5]   8.00-9.00   sec   107 MBytes   895 Mbits/sec    0   0.00 Bytes       
iperf3: getsockopt - Protocol not available
[  5]   9.00-10.00  sec   108 MBytes   902 Mbits/sec  2998460366   0.00 Bytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  5]   0.00-10.00  sec  1.05 GBytes   900 Mbits/sec    0             sender
[  5]   0.00-10.00  sec  1.05 GBytes   900 Mbits/sec                  receiver

iperf Done.

(補足) 今回、本当に知りたかったこと

目的として、netgear のスイッチでローカルポートミラーリングの際にスループットが低下しないかを実際に測定して確認したかった。
調べたら分かることなんだけど、運用していく上で本当にそこがボトルネックにならないか気になって仕方が無くなり、どうしても実地実験の結果が気になった。

今回、switchにローカルポートミラーリングの設定をして、その先に実際にパケットを送ってもスループットが低下しなかった!
良かった。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ubuntu(linux)でkeychainを使ってSSHのパスフレーズをいちいち聞かれないようにする

SSHでssh-agentとssh-addを使ってパスフレーズレスログインをしているとちょっと面倒なのでkeychainを使っていい感じにする。

keychainのインストール

sudo apt-get install keychain

設定

~/.bashrcや、~/.zshrcに下記の設定を追記する。

/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/`hostname`-sh

公開鍵がないと登録できないので、秘密鍵しかない場合は、SSHの秘密鍵から公開鍵を生成する方法を参考に公開鍵を生成する。

id_rsaのような鍵名は適宜置き換える。

使う

source .zshrc
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SSHの秘密鍵から公開鍵を生成する方法

ssh-keygen -y -f ~/.ssh/id_ecdsa > ~/.ssh/id_ecdsa.pub

秘密鍵がパスフレーズで暗号化されている場合はパスフレーズの入力を求めるプロンプトが表示されるので入力する。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

シェルスクリプトでログローテートの世代管理を行う。

3世代残したい場合は、下記のスクリプトワンライナーでいけます。
(考え方としては、3世代残す→ファイル全部から残したい3世代以外のものを消すと読み替える)

(時間的に古いものから消す場合)
ls -1rt | head -n -3 | xargs rm -rf

(ログの文字列たとえばtestlog20200701等の日付の古いものから消す場合)
ls -1 | head -n -3 | xargs rm -rf


説明(ログの文字列から判断して古いものを消す場合)
1.ダミーのログを配置
# touch testlog2020070{1..9}

2.確認
# ls -la
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200701
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200702
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200703
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200704
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200705
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200706
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200707
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200708
-rw-r--r--. 1 root root 0 5月 17 16:40 testlog20200709

3.削除対象の抽出
20200707から20200709を残したい→(testlog20200701から20200706を削除したいと読み替える)
# ls -1 | head -n -3
testlog20200701
testlog20200702
testlog20200703
testlog20200704
testlog20200705
testlog20200706

4.抽出したログを削除
# ls -1 | head -n -3 | xargs rm -rf
確認
# ls -la
testlog20200707
testlog20200708
testlog20200709

目的の3世代を残せました。

※)(時間的に古いものから消す場合)については、ls --1rtにて行うことで実現している。
オプションt 時間順番で並び替える
オプションr 逆に並べ替える


ログのローテートそのものは、Linux標準のlogrotate.dを使用して行い、削除部分のみをシェルスクリプトにて行うことを想定しています。
(logrotate.dの削除スクリプトはx日前という形で処理してあり、削除スクリプトがなんらかの理由で動かなかった場合にログが残ってしまう場合があるため)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む