キーボード修理

イメージ
前回 調子が悪くなったと書きましたが、部品が手配できて時間が取れたので直しました。 茶軸のスイッチを購入 Cherryの茶軸は 10個で1,399- ということで購入。 本当は1個で充分なんだけど、仕方なく残りは予備部品として保管。 作業手順 キーボードの裏側ネジを3箇所外します。 左右と中央の丸シールの下。 左右はパッドを貼っているので、少しめくって外します。 (あとで綺麗に戻るので心配なしです) ケーブルが出ている方は、スッと外れ、手前(下側)は、内部に爪が有るので、ピックやカード、マイナスドライバなどで少し隙間を開けるようにして広げれば外れます。 自分は親指の爪で空きました。 今回は「E」が調子悪いので、該当のピン2箇所をハンダ吸いで綺麗に取り除いて、裏側から引き抜いて完了。 基板にしっかりとどのキーかがプリントされているので分かりやすいですねぇ 入手した新品の茶軸を差し込んでハンダ付けします。 この時点で動作確認が可能になるので、直したキーとその周辺が正しく入力できるのをチェック。 問題なく、無事に動作しました。 最後にカバーを取り付けて完了! 残ったのは9個の茶軸…。 今回の費用 Cherryの茶軸10個セット :1,399- キーキャップ引き抜き工具 : 475-  ちなみに10個セットには、簡易引き抜きがついてきますが、ちゃんとしたもののほうが楽に作業できます。(昔買ったのに、どこかに行ってしまったので再購入)  ということで、1900円ほどで完治しました。  手間賃考えると買ったほうが安いかも(笑)

conky設定変更

環境表示ツールの再設定

 SSDを増設したが、NVMe M.2 は発熱が酷く、あまり温度が上がると、速度低下を起こすことが知られている。

ということで、自前のディスクも監視した結果を表示するようにした。


conkyというツールを、これまでも使用していてCPUの負荷状況、メモリの使用状況などをデスクトップに表示させていた。

でもって、自分の設定ファイルを紹介。

homeフォルダに [.conkyrc]というファイルを作成し、以下のような内容を記述

conky.config = {
  use_spacer = 'left',
  pad_percents = 3,
  background = false,
  double_buffer = true,
  draw_shades = true,
  font = 'Migu 1M DejaVu Sans Mono:bold:size=10',
  use_xft = true,
  alignment = 'top_right',
  gap_x = 10,
  gap_y = 40,
  own_window_argb_visual = true,
  own_window_argb_value = 50,
  own_window_type = 'normal',
  own_window_hints = 'undecorated,below,skip_taskbar,skip_pager,sticky',
  own_window = true,
  update_interval = 5.0,
}

conky.text = [[
${color orange}Hostname: ${color}${nodename}
${color orange}Kernel:   ${color}${sysname} ${kernel} on ${machine}
${color orange}Uptime:   ${color}${uptime}
${exec /usr/lib/update-notifier/apt-check --human-readable}
${hr}
${color orange}CPU:${color} ${freq_g} GHz
${color orange}CPU Temp:${color} ${execi 5 sensors | grep Tdie | cut -c 15-19} ℃
${color orange} 1:${color} ${cpu cpu1}% ${cpubar cpu1}
${color orange} 2:${color} ${cpu cpu2}% ${cpubar cpu2}
${color orange} 3:${color} ${cpu cpu3}% ${cpubar cpu3}
${color orange} 4:${color} ${cpu cpu4}% ${cpubar cpu4}
${color orange} 5:${color} ${cpu cpu5}% ${cpubar cpu5}
${color orange} 6:${color} ${cpu cpu6}% ${cpubar cpu6}
${color orange} 7:${color} ${cpu cpu7}% ${cpubar cpu7}
${color orange} 8:${color} ${cpu cpu8}% ${cpubar cpu8}
${color orange} 9:${color} ${cpu cpu9}% ${cpubar cpu9}
${color orange}10:${color} ${cpu cpu10}% ${cpubar cpu10}
${color orange}11:${color} ${cpu cpu11}% ${cpubar cpu11}
${color orange}12:${color} ${cpu cpu12}% ${cpubar cpu12}
${cpugraph}
${color orange}Name $alignr PID   CPU%   MEM%
${color lightgrey} ${top name 1} $alignr ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} $alignr ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} $alignr ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} $alignr ${top pid 4} ${top cpu 4} ${top mem 4}
${color lightgrey} ${top name 5} $alignr ${top pid 5} ${top cpu 5} ${top mem 5}
${color orange}Load average: ${color}${loadavg}
${color orange}Processes: ${color}${processes}
${color orange}Running:${color} ${running_processes}
${hr}
${color orange}RAM:  ${color}${mem}/${memmax}
${memperc}% ${membar 4}
${color orange}Swap: ${color}${swap}/${swapmax}
${swapperc}% ${swapbar 4}
${memgraph}
${hr}
${color orange}/     ${color}${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color orange}SSD0:  ${execi 5 nvme smart-log /dev/nvme0 | grep temperature | cut -c 38-40 } ℃
${color orange}/home ${color}${fs_used /home}/${fs_size /home} ${fs_bar 6 /home}
${color orange}SSD1:  ${execi 5 nvme smart-log /dev/nvme1 | grep temperature | cut -c 38-40 } ℃
${hr}
${if_up enp9s0}
${color orange}IP:   ${color}${addr enp9s0}
${color orange}Up:   ${color}${upspeed enp9s0} ${color orange}Down:{color}${downspeed enp9s0}
${upspeedgraph enp9s0 32,140 000000 ffffff} ${downspeedgraph enp9s0 32,140 000000 ffffff}
${endif}
${if_up enxbc5c4c5be981}
${color orange}IP:   ${color}${addr enxbc5c4c5be981}
${color orange}Up:   ${color}${upspeed enxbc5c4c5be981} ${color orange}Down: ${color}${downspeed enxbc5c4c5be981}
${upspeedgraph enxbc5c4c5be981 32,140 000000 ffffff} ${downspeedgraph enxbc5c4c5be981 32,140 000000 ffffff}
${endif}
]]

これで、次のような表示がデスクトップ上に。

内容を解説すると
初めの、.config={ ... } に表示位置やフォントなど基本的な設定を記述。
.text = [[ ... ]] に、表示内容を設定

CPUの温度表示


${execi 5 sensors | grep Tdie | cut -c 15-19} ℃

の部分は、sensors コマンドの結果を、grepで検索(Tdieを含む行)
でもって、15桁目から19桁目を5秒毎に出力 という意味になります。

そもそも、sensorsコマンドは、lm-sensorsをインストールしないと使用できないので以下の手順が必要

$ sudo apt install lm-sensors
$ sensors
k10temp-pci-00c3
Adapter: PCI adapter
Tdie:         +52.4°C  (high = +70.0°C)
Tctl:         +52.4°C  

nct6779-isa-0290
Adapter: ISA adapter
Vcore:                 480.00 mV (min =  +0.00 V, max =  +1.74 V)
in1:                     1.28 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
AVCC:                    3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
+3.3V:                   3.38 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in4:                     1.87 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in5:                     1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in6:                     1.22 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
3VSB:                    3.44 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
Vbat:                    3.26 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in9:                     0.00 V  (min =  +0.00 V, max =  +0.00 V)
in10:                  944.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in11:                    1.08 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in12:                    1.70 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in13:                  312.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in14:                    1.84 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
fan1:                   636 RPM  (min =    0 RPM)
fan2:                  1672 RPM  (min =    0 RPM)
fan3:                     0 RPM  (min =    0 RPM)
fan4:                   653 RPM  (min =    0 RPM)
fan5:                     0 RPM  (min =    0 RPM)
SYSTIN:                 +30.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor
CPUTIN:                 +39.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor
AUXTIN0:                +14.0°C    sensor = thermistor
AUXTIN1:                +29.0°C    sensor = thermistor
AUXTIN2:                +22.0°C    sensor = thermistor
AUXTIN3:                -27.0°C    sensor = thermistor
SMBUSMASTER 0:          +52.5°C  
PCH_CHIP_CPU_MAX_TEMP:   +0.0°C  
PCH_CHIP_TEMP:           +0.0°C  
PCH_CPU_TEMP:            +0.0°C  
intrusion0:            ALARM
intrusion1:            ALARM
beep_enable:           disabled


この結果の初めの方にある、「Tdie:         +52.4°C  (high = +70.0°C)」の温度部分を取り込んで表示することになるわけです。


SSDの温度表示

${execi 5 nvme smart-log /dev/nvme0 | grep temperature | cut -c 38-40 } ℃

こいつは、nvmeコマンドで、SSD0(/dev/nvme0)の結果から、温度(temperatue)の行を取り出し、その行の38から40桁目を出力させています。5秒毎…。

$ sudo nvme smart-log /dev/nvme0
Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning                    : 0
temperature                         : 27 C
available_spare                     : 100%
available_spare_threshold           : 5%
percentage_used                     : 9%
data_units_read                     : 129,187,397
data_units_written                  : 49,560,539
host_read_commands                  : 1,198,407,322
host_write_commands                 : 1,036,537,291
controller_busy_time                : 4,550
power_cycles                        : 18
power_on_hours                      : 18,311
unsafe_shutdowns                    : 12
media_errors                        : 0
num_err_log_entries                 : 127
Warning Temperature Time            : 0
Critical Composite Temperature Time : 0
Thermal Management T1 Trans Count   : 0
Thermal Management T2 Trans Count   : 0
Thermal Management T1 Total Time    : 0
Thermal Management T2 Total Time    : 0


nvmeコマンド自体は、nvme-cliをインストールする必要があるので以下のように…。

$ sudo apt install nvme-cli

ところが、このnvmeコマンドは、管理者権限がないと正常に情報が取得できない。
でも、conkyはユーザ権限で実行している。
表示するためにはsudoで管理者として実行しないといけない
そのためには、パスワードの入力が必要…
バックグラウンドで実行しているコマンドに定期的にパスワードを入れるなんて無理です。

そのためにLinuxには特殊なアクセス権が存在していて…。

SUIDと言います。

$ sudo chmod u+s /usr/sbin/nvme

と実行すると、nvmeコマンドにSet User ID(SUID)フラグを設定するわけです。
これは、ファイル所有者の権限で実行してくれる。
nvmeの所有者がrootなので、root権限(管理者権限)で勝手に実行してくれることになるわけですな…。

$ ls -l /usr/sbin/nvme

として、確認してみると…

$ ls -l /usr/sbin/nvme
-rwsr-xr-x 1 root root 436120  9月  7  2020 /usr/sbin/nvme*

最初のユーザのところは、本来「rwx」なんだけど 「rws」と表示が変更されているのが確認できる。

これで、パスワード入力無しで、管理者としてこのコマンドを実行可能になる。
(何でもかんでもこの設定をしてはいけないです…)

念の為、

$ nvme smart-log /dev/nvme0

と、sudo無しで実行して、同じように表示されればOK。



設定は、分かり難い箇所もあるでしょうが、1つ1つの意味を理解する作業をしていけば、すんなり納得できるでしょう。
自分なりに変更などもできるようになるので、お勧めです。


時々、このような解説を行なっていこうかと思案中。

コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Ubuntu24.04 でGUIが死んだ