udevのイベントの確認

Read More

相変わらず Macbookのマウスを指したり抜いたりした際のtouchpadの有効無効がうまく行かないケースがある。
設定など見てもおかしいところがなくいつの間にか動いていたりするので原因がわからない。そもそも有効無効には以下のコマンドを利用するのだが単純に打っても有効にならないときがあるのでお手上げ。

udevイベントの発生の確認

❯❯❯ udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[1430.388672] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:045E:0797.000D/input/input23/mouse0 (input)
UDEV  [1430.405002] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:045E:0797.000D/input/input23/mouse0 (input)
KERNEL[1430.412388] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:045E:0797.000D/input/input23/event5 (input)
UDEV  [1430.415354] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:045E:0797.000D/input/input23/event5 (input)
KERNEL[1430.428202] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:045E:0797.000D/input/input23 (input)
KERNEL[1430.429470] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:045E:0797.000D/hidraw/hidraw0 (hidraw)
KERNEL[1430.429516] unbind   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:045E:0797.000D (hid)
KERNEL[1430.429556] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:045E:0797.000D (hid)
KERNEL[1430.429677] unbind   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0 (usb)
KERNEL[1430.429828] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0 (usb)
UDEV  [1430.432792] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:045E:0797.000D/input/input23 (input)
UDEV  [1430.433463] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:045E:0797.000D/hidraw/hidraw0 (hidraw)

このイベントを拾って自動的にスクリプトを動かすことが出来ます。設定は /etc/udev/rules.d 以下に

❯❯❯ more 01-touchpad.rules
SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ACTION=="add", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/hideaki/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=
1"
SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ACTION=="remove", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/hideaki/.Xauthority", RUN+="/usr/bin/synclient TouchpadO
ff=0"

これで抜き差しすると /usr/bin/synclient TouchPadOff= というコマンドが実行されることになります。
この結果はsystemdで起動させれている systemd-udevdのログで確認できます。

❯❯❯ systemctl status systemd-udevd
● systemd-udevd.service - udev Kernel Device Manager
   Loaded: loaded (/lib/systemd/system/systemd-udevd.service; static; vendor preset: enabled)
   Active: active (running) since Fri 2018-10-19 06:52:07 JST; 27min ago
     Docs: man:systemd-udevd.service(8)
           man:udev(7)
 Main PID: 325 (systemd-udevd)
   Status: "Processing with 12 children at max"
    Tasks: 1
   CGroup: /system.slice/systemd-udevd.service
           └─325 /lib/systemd/systemd-udevd

ジャーナルコマンドのログで確認できるので見てみると結構失敗しています。

10月 19 06:54:25 child systemd-udevd[442]: Process '/usr/bin/synclient TouchpadOff=1' failed with exit code 1.
10月 19 06:54:25 child systemd-udevd[439]: Process '/usr/bin/synclient TouchpadOff=1' failed with exit code 1.

が、突然動き始めるのでその現任は不明です。。。

iPhoneのCarPlay Googlemapの感想

最新版のiOS12になりついにCarPlayでサードパーティ製のアプリが動きます。以前から分かっていたのだがGoogle Mapはローカルの道を案内しすぎですね。家の近所に普段通りつつ絶対にナビで案内されないルートがあるのですがきちんとGoogle先生は示してくれるわけです。もうルート記録されてるのかと思うくらい。

で、これが知らない土地でも起こるわけですね。もう長時間神経尖らせて走らないといけません。マジで疲れます。長距離の移動には、簡単で広い道優先とか選択肢が欲しいものです。あとせめてピッチインアウトで拡大縮小出来て欲しい。

ちなみに最近Apple Map側のナビの音声が小さ過ぎて聞こえない問題が。

Amazon Workspaces Client をUbuntuで動かす

Read More

サービスが登場したときから Amazon Workspacesを利用しているのですが、最近家のPCでLinuxを利用したいと思ってみたら以外にもサポートされていませんでした。

LinuxにはWindowsのライブラリをエミュレーションするWineというソフトウェアがあります。Wineはかなり以前からあるWindows互換ライブラリですが最近は色々動きます。

  • Ubuntu 18.04.1 LTS
  • Wine 3.0-1ubuntu1

この新しいバージョンはDirectXなどにも対応しているとのことです。何が動くのかを調べるサイトがあり、大抵の人気のあるアプリケーションはDBに登録されています。今回の Workspaces も調べてみると登録されていました。

実際に導入してそのまま起動するとクラッシュするのですが上記のサイトに記載されている作業を行っておくことで無事に動作しました。

  • rm ~/.wine/drive_c/Program Files (x86)/Amazon Web Services, Inc/Amazon WorkSpaces/vchan_plugins/pcoip_vchan_remoteprintclient.dll

Wineもかなり便利になってきていますね。

Macbook Pro の水没修理

Read More

これまでPCを使い続けてきて初めて水没させてしましました。それも海外でMacbookを(T_T)

水没の経緯

  • バックパックのPC格納部分にMacbookを裸で入れる
  • その上からペットボトルを入れる(海外の500mlのペットボトルだったのですが上のキャップの部分が非常に小さいタイプだったのでそれが外れてしまったようです)
  • 気がつくまで10分位
  • 見事に浸水。経路的にはtype-cのコネクタからしっかりと内部に入った模様

初動

  • Macbook Proはディスプレイを開くとPower ONになるのでその段階で一回は通電
  • 画面にAppleマークが表示されてから起動せず
  • とりあえず本体を振って水を外に出す(結構水が出てきた・・)

なお、この状況は海外から帰国する時に発生したためもうどうしようもなくこのままとりあええずタオルでくるみ持って帰ることに。

故障修理までの流れ

結論から言えばMac修理さんで修理をしました。

  1. Apple での集配しての修理(ロジックボード交換)で 12万円(+税)
  2. Apple 公式のリセラー経由の修理(修理内容は同等+明細を忘れましたがなにか)で18万(+税)
  3. 非公式の修理(洗浄処理 4.5万 or ロジックボード交換 10万前後)

一連の流れ的にいえば今夏は Apple のサポートセンターに振り回されてなんか修理する気にならんかったというのが本音。とはいえ確実にこなすなら Apple での修理が一番だと思います。

  1. サポートセンターに水没を連絡したところ上記の2を紹介されました。「その段階で言って中を見てもらえるのでそこで部品があればその場で修理できます」的なことを言われたので予約して4日待ち。
  2. 持っていくと「水没」にかんしては中を見ることなく修理になる旨を伝えられしかも、Appleのほうが安いですと言われる
  3. 再度サポートに電話して状況法伝えるとやはり「2」と同様の回答、一体「1」は何だったのか。
  4. それでもと思い Mac修理.jp さんで修理を依頼

Mac修理.jpさん (http://mac-repair.jp/ )

  • http://mac-repair.jp/
  • 修理品を送付(これは有料)、その後見積りを知て頂きOKならそのまま修理
  • ものが到着してから4日後で戻ってきました。
  • 代金は銀行振込か代金引換での取引
  • 途中メールでやり取りをさせていただきましたが回答も早く安心できました。

今後数年間使っていく上ではAppleで修理したほうが安心だなという気は少ししていたのですがこの機種はキーボードが交換対象の機種なんですよね。
またMacbook proのtouchbarモデルは全て一体型なのでどこが壊れてもロジックボード交換になるので「Apple Care必須」の機種ですね。ここ半年で2回も修理しており辛いです。

さて、実は今回の件は海外で発生したので海外での物品保証対象になっています。私はセゾンアメックス(ゴールド)を持っていたのですがそのおかげて今回の修理費は全て補填されました。助かりました。

Ubuntu メモリ圧縮 zswap で少ないメモリを何とかする

Read More

いま使っているMacbook2,1は最大搭載量が2Gといういまだとかなり格安ノートでも備えている容量しか持っていません。
実際問題ブラウジングしてすこしプログラム書いてという程度であれば実際十分なのですがそれでもたまに固まります(スワップしている)

❯❯❯ free
              total        used        free      shared  buff/cache   available
Mem:        2028328     1045384      115460      174816      867484      890260
Swap:       2063356           0     2063356

という状況なので zswap を有効にしてみます。

zswap とは、仮想メモリ圧縮(英語版)を実現する Linux カーネルの機能で、スワップされたページを圧縮されたライトバックキャッシュ上に保持する。メモリページ(英語版)がスワップアウトされる際にスワップデバイス上に移動させるのではなく、システム RAM 上に動的に確保されるメモリプール(英語版)内に圧縮して保存する。実スワップデバイスへのライトバックは延期されるか完全に回避されるので、スワップが必要とされる Linux システム上の I/O を大きく低減させることができる。トレードオフとして、圧縮を実行するために CPU サイクルの消費は増加する – https://ja.wikipedia.org/wiki/Zswap

すでに今回のUbuntu18.04(32bit)ではカーネル上は利用可能になっています。

❯❯❯ cat /boot/config-`uname -r` | grep -i zswap
CONFIG_ZSWAP=y

設定としてカーネルモジュールの設定をします。

$ sudo sh -c "echo lz4 >> /etc/initramfs-tools/modules"
$ sudo sh -c "echo lz4_compress >> /etc/initramfs-tools/modules"
$ sudo /usr/sbin/update-initramfs -u

Grubの起動パラメータと、/etc/default/grunbに以下を追記しています。

GRUB_CMDLINE_LINUX_DEFAULT="text zswap.enabled=1 zswap.compressor=lz4"

これで再起動すれば利用可能になります。

❯❯❯ cat /sys/module/zswap/parameters/enabled
Y
❯❯❯ journalctl -k | grep -i zswap
 6月 21 07:24:10 child kernel: Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.17.2-041702-generic root=UUID=22564c24-a485-4cc2-9fd8-af65d431da9d ro text zswap.enabled=1 zswap.compressor=lz4
 6月 21 07:24:10 child kernel: zswap: loaded using pool lz4/zbud

入れたからと言って急にメモリが増えるわけでもないし挙動が早くなるわけではないですがメモリ不足で急激に落ちるというようなことはなくなったような気がします。おまじない程度で。