/proc/mdstatのデバイス名でのソート [Linux]
しかし、/proc/mdstat はデバイス名でソートされておらず、少々見づらい。
このため、/proc/mdstat をデバイス名でソートするスクリプトを作成した。
詳細は、以下の通りである。
1. スクリプト (mdstat)
#!/bin/sh # # Get status of MD devices sorted by device name. # usage: mdstat # # - MD is an abbreviation for "multiple device". # - The most common use case is commonly known as "Software RAID". # export LC_ALL=C # sort status of MD devices by device path sort_md_status() { local info=$1 local first_line last_line md_dev local i # get first line, last line, list of MD device first_line=`echo "$info" | sed -n 1p` last_line=`echo "$info" | sed -n \\$p` md_dev=`echo "$info" | grep '^md[0-9]\+ :' | sed 's/ :.*//' | sort -n` # sort data by device path echo "$first_line" for i in $md_dev; do echo "$info" | grep -A2 $i done echo "$last_line" } sort_md_status "`cat /proc/mdstat`" exit $?
2. 使用方法
% mdstat
3. 実行例
% mdstat Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] \ [raid10] md0 : active raid1 sda5[0] sdb5[1] 20971456 blocks [2/2] [UU] md1 : active raid1 sda6[0] sdb6[1] 20971456 blocks [2/2] [UU] md2 : active raid1 sda7[0] sdb7[1] 204736 blocks [2/2] [UU] md3 : active raid1 sda8[0] sdb8[1] 204736 blocks [2/2] [UU] md4 : active raid1 sda9[0] sdb9[1] 41942976 blocks [2/2] [UU] md5 : active raid1 sda10[0] sdb10[1] 204736 blocks [2/2] [UU] md6 : active raid1 sda11[0] sdb11[1] 204736 blocks [2/2] [UU] md7 : active raid1 sda3[0] sdb1[1] 83886016 blocks [2/2] [UU] unused devices:
% cat /proc/mdstat Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] \ [raid10] md2 : active raid1 sda7[0] sdb7[1] 204736 blocks [2/2] [UU] md5 : active raid1 sda10[0] sdb10[1] 204736 blocks [2/2] [UU] md1 : active raid1 sda6[0] sdb6[1] 20971456 blocks [2/2] [UU] md3 : active raid1 sda8[0] sdb8[1] 204736 blocks [2/2] [UU] md7 : active raid1 sda3[0] sdb1[1] 83886016 blocks [2/2] [UU] md6 : active raid1 sda11[0] sdb11[1] 204736 blocks [2/2] [UU] md4 : active raid1 sda9[0] sdb9[1] 41942976 blocks [2/2] [UU] md0 : active raid1 sda5[0] sdb5[1] 20971456 blocks [2/2] [UU] unused devices:
LinuxでのWebカメラの使用 [Linux]
調査結果は、以下の通りである。
(尚、動作確認を行っていないため、購入は自己責任でお願いします。)
1. USB 接続でドライバーのイストールが不要な製品については、ほぼ Linux で使用できる。
このような製品の場合、ほとんどが UVC(USB Video Class) 仕様に対応した製品である。
2. UVC 仕様に対応した製品の場合には、Linux でも問題なく使用できる。
3. 下記の製品については、UVC 仕様に対応しており Linux で使用できる。
・ELECOM UCAM-C310FBBK (マイク内蔵) 参考価格: 2,170円(税込)/家電量販店 ・ロジクール C270 (マイク内蔵) 参考価格: 2,310円(税込)/家電量販店
KVM環境でのコピー・ペースト [Linux]
使用目的は、サーバー機能のテストのためである。
このため、ゲスト OS には X 関連のパッケージをインストールしない。
(KVM ホスト側には、X 関連のパッケージをインストールしている。)
[ソフトウェアのバージョン]
・OS: CentOS 7
・qemu-kvm-1.5.3-175.el7_9.3.x86_64
・virt-manager-1.5.0-7.el7.noarch
以下は、このような環境でのコピー・ペーストの実施方法についてまとめたものである。
1. ゲスト OS への接続に Serial Console を使用する場合
ウィンドウ間、およびウィンドウ内でのコピー・ペーストが可能である。
また、Serial Console で接続には、下記のいずれかの手順を実施する。
(1) Terminal Emulator での virsh の実行
# virsh console <domain-name>
(2) Terminal Emulator での virt-manager の実行
# virt-manager
・VM(ドメイン) を選択した状態で右クリックし、[Open] を選択する。
この時点では、Graphical Console が選択されている。
・メニューで、[View] -> [Text Consoles] -> [Serial 1] を選択する。
・表示された Serial Console の任意のポイントをクリックする。
(補足)
ゲスト OS での Serial Console の設定については、備考を参照。
2. ゲスト OS への接続に Graphical Console を使用する場合
コピー・ペーストはできない。
ただし、下記の手順により、ウィンドウ内でのコピー・ペーストが可能となる。
(1) gpm のインストール
# yum install gpm
下記の依存パッケージもインストールされる(CentOS 7 の場合)。
・SDL, gpm-libs, linuxconsoletools
(2) gpm の起動 (初回のみ)
# systemctl start gpm
rsyslogのタイムスタンプのフォーマット変更 [Linux]
不便を感じることが度々あるため、年(西暦 4桁)が出力されるように設定の変更を行った。
[ソフトウェアのバージョン]
・rsyslog 8.1901.0-1 (on Debian 10)
・rsyslog-8.24.0-52.el7_8.2.x86_64 (on CentOS 7)
1. 対応方法
/etc/rsyslog.conf にテンプレートの定義を追加し、これを使用する。
尚、タイムスタンプは、下記のように変更する。
(変更前) Jan 2 11:22:33 (変更後) 2020-01-02 11:22:33
2. 実施手順
(1) テンプレートの定義
下記のテンプレートを定義する(注1)。
$template custom_timestamp,"%timestamp::10:date-rfc3339% %timestamp:12:19:date-rfc3339% %hostname% %syslogtag% %msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
・%msg:::drop-last-lf%
メッセージの最初の文字がスペースでない場合に、スペースを返す。
・%msg:::sp-if-no-1st-sp%
メッセージを取得し、最後の改行を取り除く。
(2) デフォルト・テンプレートの変更
(変更前) $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat (変更後) $ActionFileDefaultTemplate custom_timestamp
(3) rsyslog の再起動
# systemctl restart rsyslog
3. 備考
(1) $ActionFileDefaultTemplate の代表的な設定値
(a) RSYSLOG_TraditionalFileFormat
・デフォルトの設定値である。
・タイプスタンプに年が含まれない。
(例) Jan 2 11:22:33
・フォーマットは、下記の通り(注1)。
"%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp% %msg:::drop-last-lf%\n"
(b) RSYSLOG_FileFormat
・高精度のタイプスタンプとタイムゾーン情報が含まれる。
(例) 2020-01-02T11:22:33.123456+09:00
・フォーマットは、下記の通り(注1)。
"%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag% %msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
(注1)
複数行として表示しているが、設定は一行で行う(単純に行を連結する)こと。
MewのSummaryモードでのローカルタイムへの変換 [Linux]
尚、これまでは変換せず、日時とタイムゾーンを表示していた。
編集するファイルは ~/.mew.el であり、手順は、以下の通りである。
(ソースの詳細は、備考を参照。)
1. 変数 mew-summary-ctz の追加
(defvar mew-summary-ctz t "*If mew-summary-ctz is t, use local time zone in Summary mode.")
変数 mew-summary-ctz が t の場合、ローカルタイムゾーンでの日時を表示する。
それ以外の場合、メールヘッダーの日時をそのまま表示する。
2. mew-summary-form-year2 関数の作成
mew-summary-form-year 関数をコピーし、下記の変更を行う。
(1) 変更箇所
下記の when を if に変更し、else 部分を追加する。
(when (or (string= s "") (not (string-match mew-time-rfc-regex s))) ...)
(2) 変更内容
下記のコードを追加する。
(when mew-summary-ctz (setq s (timezone-make-date-arpa-standard s)))
(補足)
mew-summary-form-year は、mew-scan.el で定義されている。
3. mew-summary-form-date2 関数の作成
mew-summary-form-date 関数をコピーし、下記の変更を行う。
(1) 変更箇所
mew-summary-form-year2 関数と同様。
(2) 変更内容
mew-summary-form-year2 関数と同様。
(補足)
mew-summary-form-date は、mew-scan.el で定義されている。
4. mew-summary-form-time2 関数の作成
mew-summary-form-time 関数をコピーし、下記の変更を行う。
(1) 変更箇所
mew-summary-form-year2 関数と同様。
(ただし、元々 when ではなく、if が使用されている。)
(2) 変更内容
mew-summary-form-year2 関数と同様。
(補足)
mew-summary-form-time は、mew-scan.el で定義されている。
5. mew-summary-form-tmzn 関数の作成
(defun mew-summary-form-tmzn () "A function to return the time zone of message time, [+-]HHMM." (let ((s (MEW-DATE))) (if (or (string= s "") (not (string-match mew-time-rfc-regex s))) (setq s (mew-time-ctz-to-rfc (mew-file-get-time (mew-expand-msg (MEW-FLD) (MEW-NUM))))) (when mew-summary-ctz (setq s (timezone-make-date-arpa-standard s)))) (if (not (string-match mew-time-rfc-regex s)) "" (setq s (mew-time-rfc-tmzn)) (format "%+03d%02d" (/ s 3600) (/ (% s 3600) 60)))))
6. 変数 mew-summary-form の設定変更
year2、date2、time2、tmzn を表示するように変更する。
(defun mew-summary-form-num () "A function to return a message number." (MEW-NUM)) (defvar mew-summary-message-number t "*If mew-summary-message-number is t, display message number in Summary mode.") (setq mew-summary-form (if mew-summary-message-number ;; display message number '((-4 num) " " type (4 year2) "-" (5 date2) " " (8 time2) " " (5 tmzn) " " (16 from) " " t (0 subj)) ;; display no message number '(type (4 year2) "-" (5 date2) " " (8 time2) " " (5 tmzn) " " (16 from) " " t (0 subj))))
7. ローカルタイムへの変換以外の変更点
今回行った変更以外に、下記の変更を行っている。
・日付フォーマットの変更 (YYYY/MM/DD から YYYY-MM-DD へ変更)
・時刻フォーマットの変更 (HH:MM から HH:MM:SS へ変更)
・タイムゾーンの表示
・メッセージ番号の表示 (変数 mew-summary-message-number で表示の有無を制御)
ClamAVの除外するパスの指定で使用できる正規表現の仕様 [Linux]
しかし、どのレベルの正規表現が使用できるのかが不明確なため、検証を行った。
(Debian 9、Debian 10、CentOS 7 で検証を実施。)
詳細は、以下の通りである。
1. .(ピリオド)
任意の 1 文字を表す。
2. *(アスタリスク)
直前の文字の 0 回以上の繰り返しを表す。
よって、すべての文字列を表すには、'*' ではなく、'.*' を使用する。
3. +(プラス)
直前の文字の 1 回以上の繰り返しを表す。
4. ^(キャレット、ハット)
先頭を表す。
5. $(ドル、ダラー)
末尾を表す。
6. [] での範囲指定
サポートされている。
(例) # clamdscan の場合 ExcludePath ^/tmp/data[1-3]/ # clamscan の場合 --exclude-dir='^/tmp/data[1-3]/'
7. [^] での範囲の除外
サポートされている。
(例) # clamdscan の場合 ExcludePath ^/tmp/data[^1-3]/ # clamscan の場合 --exclude-dir='^/tmp/data[^1-3]/'
8. () でのグループ化
サポートされている。
(例) # clamdscan の場合 ExcludePath ^/(mnt|misc|net|media)/ # clamscan の場合 --exclude-dir='^/(mnt|misc|net|media)/'
9. {} でのグループ化
サポートされていない。
(例) # clamdscan の場合 ExcludePath ^/{mnt,misc,net,media}/ # clamscan の場合 --exclude-dir='^/{mnt,misc,net,media}/'
ClamAVのclamscanからclamdscanへの移行 [Linux]
受信メールのウイルスチェックに ClamAV(clamscan コマンド) を使用している。
ただし、契約している ISP でチェック済のものについては、対象外としている。
また、最近 ISP のメールサーバーの高負荷時に誤認識が多発することが分かり、ISP でのウイルスチェックを無効化した。これにより、常に ClamAV でのチェックが実施されるようになった。
ここで問題となったのが、clamscan コマンドの処理が非常に遅いことである。原因は、起動時のウイルス定義ファイルの情報解析に多大な時間を要するためのようである。
このため、単独コマンドの clamscan から、サーバー・クライアント形式の clamdscan への移行を行った。
デーモン(サーバー)の起動時にのみウイルス定義ファイルの情報解析が実施されるようになるため、ウイルスチェック(クライアント)の所要時間を短縮できる。
2. パッケージのインストール
(1) Debian 9 の場合
# apt-get install clamav-daemon
・依存関係により、clamdscan パッケージがインストールされる。
(2) CentOS 7 の場合
# yum --enablerepo=epel install clamd
(3) CentOS 6 の場合
# yum --enablerepo=epel install clamd
3. 基本的な設定
インターネット上に情報が豊富なため、詳細な説明は割愛する。
3-1. Debian 9 の場合
(1) clamd の設定
/etc/clamav/clamd.conf を編集する。
・socket ファイルの所有者グループ、ファイル・パーミションの設定
・実行ユーザーの設定
・ログファイルの最大サイズの指定
・除外するディレクトリの指定
# diff clamd.conf clamd.conf.org 6,7c6,7 < #LocalSocketGroup clamav < #LocalSocketMode 666 --- > LocalSocketGroup clamav > LocalSocketMode 666 10c10 < #User clamav --- > User clamav 84,85c84 < #LogFileMaxSize 0 < LogFileMaxSize 100K --- > LogFileMaxSize 0 89,97d87 < < # Don't scan files and directories matching regex < ExcludePath ^/proc/ < ExcludePath ^/sys/ < ExcludePath ^/dev/ < ExcludePath ^/mnt/ < ExcludePath ^/misc/ < ExcludePath ^/net/ < ExcludePath ^/media/
3-2. CentOS 7 の場合
(1) /run/clamd.scan/ のパーミション変更
・/run/clamd.scan/ のパーミションを変更する。
・下記の内容で、/etc/tmpfiles.d/clamd.scan.conf を作成する。
# chmod 755 /run/clamd.scan # cat /etc/tmpfiles.d/clamd.scan.conf d /run/clamd.scan 0755 clamscan virusgroup -
(2) clamd の設定
/etc/clamd.d/scan.conf を編集する。
・設定の有効化
・ログファイルのパスの設定
・ログファイルの最大サイズの設定
・ログへの日時情報の出力
・syslog の使用の有無の設定
・ログ・ローテーションの有無の設定
・socket ファイルの設定
・除外するディレクトリの設定
・SelfCheck の実施間隔の設定
・実行ユーザーの設定
# diff scan.conf scan.conf.org 8c8 < #Example --- > Example 14c14 < LogFile /var/log/clamd.scan --- > #LogFile /var/log/clamd.scan 32d31 < LogFileMaxSize 100K 36c35 < LogTime yes --- > #LogTime yes 45c44 < #LogSyslog yes --- > LogSyslog yes 58c57 < LogRotate yes --- > #LogRotate yes 94c93 < LocalSocket /var/run/clamd.scan/clamd.sock --- > #LocalSocket /var/run/clamd.scan/clamd.sock 106c105 < FixStaleSocket yes --- > #FixStaleSocket yes 178,184c177,178 < ExcludePath ^/proc/ < ExcludePath ^/sys/ < ExcludePath ^/dev/ < ExcludePath ^/mnt/ < ExcludePath ^/misc/ < ExcludePath ^/net/ < ExcludePath ^/media/ --- > #ExcludePath ^/proc/ > #ExcludePath ^/sys/ 205d198 < SelfCheck 3600 214c207 < #User clamscan --- > User clamscan
(3) clamd@scan の自動起動
# systemctl enable clamd@scan
3-3. CentOS 6 の場合
(1) clamd の設定
/etc/clamd.conf を編集する。
# diff clamd.conf clamd.conf.org 31,32c31 < #LogFileMaxSize 0 < LogFileMaxSize 100K --- > LogFileMaxSize 0 45c44 < #LogSyslog yes --- > LogSyslog yes 58c57 < LogRotate yes --- > #LogRotate yes 110c109 < #TCPSocket 3310 --- > TCPSocket 3310 118c117 < #TCPAddr 127.0.0.1 --- > TCPAddr 127.0.0.1 178,184c177,178 < ExcludePath ^/proc/ < ExcludePath ^/sys/ < ExcludePath ^/dev/ < ExcludePath ^/mnt/ < ExcludePath ^/misc/ < ExcludePath ^/net/ < ExcludePath ^/media/ --- > #ExcludePath ^/proc/ > #ExcludePath ^/sys/ 205d198 < SelfCheck 3600 214c207 < #User clam --- > User clam
4. 問題点への対応
4-1. Debian 9 の場合
(1) syslog への出力の無効化
clamd.conf の設定だけでは、syslog への出力を無効化できない。
(/var/log/syslog に出力され、LOG_LOCAL6 ファシリティでの出力ではない。)
このため、/etc/rsyslog.conf のルールの先頭に、下記の設定を追加する。
# Discard messages of clamd. :programname, isequal, "clamd" stop
(補足)
変更内容の反映のため、rsyslog の再起動、またはシステムの再起動を行う。
4-2. CentOS 7 の場合
(1) 起動時のタイムアウト発生への対応
下記の手順で、clamd@scan の Unit ファイルを編集する。
(/lib/systemd/system/clamd@.service の直接編集でも対応可能。)
(a) /etc/systemd/system/clamd@scan.service の作成
# cd /etc/systemd/system # cp -p /lib/systemd/system/clamd@scan.service .
(b) /etc/systemd/system/clamd@scan.service の編集
# diff /etc/systemd/system/clamd@scan.service /lib/systemd/system 3,5d2 < [Service] < TimeoutStartSec=5min ← これがポイント <
(補足)
停止時にも同様の設定が必要な場合には、下記のように設定する。
TimeoutSec=5min
(c) 変更内容の反映
# systemctl disable clamd@scan # systemctl enable clamd@scan
4-3. CentOS 6 の場合
(1) clamd の起動方法の変更
clamd の起動が完了するまでには、3 分程度を要する。
また、起動スクリプトの終了までブート処理が待ち状態となる。
このため、clamd の起動スクリプトをバックグラインドで実行する。
(a) 自動起動の無効化
自動起動が有効化されている場合には、無効化する。
# chkconfig --list | grep clamd # chkconfig clamd off
(b) /etc/rc.d/rc.local の編集
ファイルの最後に、下記の設定を追加する。
# start clamd if [ -x /etc/init.d/clamd ]; then (/etc/init.d/clamd start &) >/dev/null 2>&1 fi
5. 備考
(1) clamd の起動が完了する前の clamdscan の実行
clamd の起動が完了するまでは、clamdscan はエラーとなる。
(2) ウイルス情報を更新した後の clamd への反映
下記のいずれかの方法で対応できる。
(a) clamdscan コマンドの実行
# clamdscan --reload
(補足)
・ウイルス情報の再読み込みには、210 秒程度を要する。
・スクリプト内で実行する場合には、下記のように実行する。
(clamdscan --reload &) >/dev/null 2>&1
(b) freshclam コマンドの clamd との連携
freshclam の設定で、NotifyClamd を有効にする。
(c) clamd でのセルフチェック
一定の時間間隔でウイルス情報を確認し、必要なら再読み込みを行う。
設定項目は SelfCheck、初期値は 600(s) である。
(3) clamdscan のオプション指定
ほとんどのオプションは、clamd の設定ファイルで指定する。
コマンドラインで指定できるのは、一部のオプションのみである。
(ログファイルのパス、等)
(4) clamd の監視
clamdtop コマンドを使用する。
CentOS 7上のxawtvでノイズが発生することへの対応 [Linux]
・xawtv-3.105-2.el7.x86_64
・alsa-lib-1.1.6-2.el7.x86_64
・alsa-plugins-pulseaudio-1.1.6-1.el7.x86_64
・alsa-utils-1.1.6-1.el7.x86_64
・pulseaudio-10.0-5.el7.x86_64
・kernel-3.10.0-957.10.1.el7.x86_64
(saa7134 モジュール、saa7134_alsa モジュールを使用)
1. 発生事象
xawtv の音声にノイズが発生する。
・起動直後にはノイズは発生しない。
・しばらく使用しているとノイズが発生する。
(30〜60 分程度の連続使用で、音がこもる/割れる。)
・xawtv を再起動すると改善される。
・xawtv の機能により、ミュートの設定/解除を行うと改善される。
・改善された後も、しばらく使用していると再発する。
・ノイズが発生する場合には、下記のようなメッセージが出力される。
ALSA lib pcm.c:8424:(snd_pcm_recover) overrun occurred
(ただし、当該メッセージが出力されてもノイズが発生するとは限らない。)
(補足)
・/dev/mixer の存在しない状態で使用している。
・xawtv の画像に関しては、問題は発生していない。
2. 対処方法
現時点では、根本的な解決方法は不明である。
また、取り敢えず、下記の手順により対応可能である。
(1) ~/bin/xawtv-patch の作成
下記の処理を行うスクリプトを作成する。
(a) xawtv の機能により、mute の状態を取得する。
v4lctl show mute
(注意)
xawtv-remote に同じ引数(同じコマンド)を指定しても何も出力されない。
(b) mute されていない場合、xawtv の機能により mute/unmute を実施する。
xawtv-remote volume mute on sleep 0.1 xawtv-remote volume mute off
・mute の実施により、一時的に音声出力が途切れる。
・mute と unmute の間に sleep を入れた方が、より効果が得られる。
(注意)
v4lctl に同じ引数(同じコマンド)を指定しても求める効果が得られない。
(2) cron への ~/bin/xawtv-patch を実行する設定の追加
・例えば、20 分毎に ~/bin/xawtv-patch を実行する。
・再発した場合には、手動で mute の設定/解除を実施することで対応する。
Firefoxの中間CA証明書の期限切れへの対応 [Linux]
現時点でサポートされているバージョンについては、修正プログラムや更新バージョンのインストールで対応可能である。しかし、サポートの終了したバージョンについては、別途対応が必要である。
以下は、備忘録として、サポートの終了したバージョンへの対応方法をまとめたものである。
1. 発生事象
中間 CA 証明書の期限切れにより、署名の必要なアドオンが使用できない状態となる。
(例)
Firefox ESR 52.9.0、ESR 45.9.0 では、下記のアドオンが使用できない状態となる。
・Classic Theme Restorer 1.7.7.2
・Tab Mix Plus 0.5.5.0
2. 対処方法
(1) 証明書のダウンロード
http://yahoogeocities.g1.xrea.com/signingca1addonsmozillaorg.crt
(2) 証明書の Firefox へのインストール
(a) 証明書マネージャー画面を表示
・メニューから [編集] -> [設定] を選択
・左側の一覧から [詳細] -> [証明書] を選択
・下側の [証明書を表示] を選択
(b) 証明書マネージャー画面で証明書をインストール
・[認証局証明書] タブを選択
・[インポート] を選択
・ダウンロードした証明書を選択
・[証明書のインストール] 画面では、[OK] のみを選択
・[OK] を選択し、証明書マネージャーを終了
(3) アドオンの状態を強制的に再チェック
(a) F12 を押下し、開発者ツールを起動
(b) ブラウザーとアドオンのデバッガーを有効化
・右上のギアのアイコンを選択
・[ブラウザーとアドオンのデバッガーを有効化] を選択
(c) CTRL+Shift+J でブラウザーコンソールを起動
(d) 下記の 2 行をコピー・ペーストし、Enter を押下
# 1 行目
var { XPIProvider } = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {});
# 2 行目
XPIProvider.verifySignatures();
(補足)
・一行ずつの入力、マルチステートメントでの入力とも可能である。
・複数行を 1 度に入力することも可能である。
(途中の行の行末では Shift+Enter、最終行の行末では Enter を入力)
(e) ブラウザーコンソールを終了
(f) ブラウザーとアドオンのデバッガーを無効化
上記 (b) での変更を元に戻す。
(g) 開発者ツールを終了
(4) Firefox の再起動
3. 備考
(1) 更新された証明書
[認証局証明書] -> [Mozilla Corporation] -> [signingca1.addons.mozilla.org]
(2) 参考にした情報
http://yahoogeocities.g1.xrea.com/MozillaFirefoxAddonCorruptionHotfix.html
https://nandakke.hatenadiary.com/entry/2019/05/06/043752
Firefox Quantumの使用感 [Linux]
cf. https://dan-project.blog.so-net.ne.jp/2018-09-07
現時点では、予想していた以上に、いい感じである。
なお、上記のインストール後に、下記の設定を追加した。
WebExtensions の制限への対応、Tab Mix Plus が使用できないことへの対応のためである。
1. Browser の UI へのスタイルシートの設定
<profile_dir>/chrome/userChrome.css へ設定を追加する。
2. ビルトインページ(about:addons 等) へのスタイルシートの設定
<profile_dir>/chrome/userContent.css へ設定を追加する。
3. タブバーのカスタマイズ
(1) 新しいタブを作成するボタンの削除
・ツールバー右端のメニューボタンをクリックし、[カスタマイズ] を選択
・該当するアイテムをツールバーから削除
(2) タブの一覧を表示するボタンの常時表示 - userChrome.css への設定の追加
/* always display button to display tab list */ #alltabs-button { visibility: visible !important; }
(3) [タブを閉じる] ボタンの表示の制限 - userChrome.css への設定の追加
/* show close button on only selected tab */ .tabbrowser-tab:not(:hover) .tab-close-button { display: none !important; } .tabbrowser-tab:not([pinned]):hover .tab-close-button { display: block !important; }