Linux

参考

なにはともあれバックアップ

  • DM200_nand_backup_restore_v0.1.zip

インストール

  • DM200_debian_installer_v0.2.zip
  • Debianの初回起動でコケたのかログインプロンプトが出る前に通常pomeraの画面に戻ったが、再度トライしたら成功

コンソールでCaps LockをCtrlにする

  • /etc/default/keyboard
XKBOPTIONS="ctrl:nocaps"
  • # systemctl restart console-setup

RTCがローカルタイムなのでそういうことにする

  • # timedatectl set-local-rtc 1

Let’s Encryptの証明書が失効扱いされる

% wget https://letsencrypt.org/   
--2022-07-09 13:29:33--  https://letsencrypt.org/
letsencrypt.org (letsencrypt.org) をDNSに問いあわせています... 2406:da18:880:3802:371c:4bf1:923b:fc30, 2406:da18:880:3801:52c7:4593:210d:6aae, 54.255.56.197, ...
letsencrypt.org (letsencrypt.org)|2406:da18:880:3802:371c:4bf1:923b:fc30|:443 に接続しています... 接続しました。
エラー: `letsencrypt.org' の証明書は信用されません。
エラー: `letsencrypt.org' の証明書は失効しています

% dpkg -l ca-certificates
(略)
ii  ca-certificates         20200601~deb9u1  all              Common CA certificates

WMをi3に変える

  • i3 - ArchWiki
    • # apt install i3
  • ~/.xinitrc
    • 未だに.xsessionとの違いがよくわかってない
      • セッションマネージャからログインするようなケースだと.xsession?
      • 今回はstartxから起動するので.xinitrc
export LANG=ja_JP.UTF-8
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

ibus-daemon -drx &
keynav
exec i3
  • keynav は daemonize するので &は要らない

VNCで操作

# apt install tigervnc-scraping-server
% vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
% x0vncserver -display :0 -passwordfile ~/.vnc/passwd

USBホスト

Debian 9→10

  • 特に問題なさそう
  • 各所でオススメされている軽量ブラウザUzblは10(buster)以降には無いので注意

電源ボタンでシャットダウンしないようにする(Debian 11)

  • systemd (systemd-logind) が管理している
  • 電源管理 - ArchWiki
  • /etc/systemd/logind.conf
    • HandlePowerKey=ignore
  • # killall -HUP systemd-logind

systemd-logind経由で電源ボタンでサスペンドさせる(Debian 11)

  • /opt/bin/sus2ramがやっている内容をsystemdのサービスファイルでやる
[Unit]
Description=DM200 sleep hook
Before=sleep.target
StopWhenUnneeded=yes

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=-/opt/bin/sleep_hook suspend
ExecStop=-/opt/bin/sleep_hook resume

[Install]
WantedBy=sleep.target
  • # systemctl enable dm200-sleep.service
#!/bin/sh

case $1 in
    suspend)
        if [ -e /tmp/bton ]; then
            /opt/bin/bt_switch off
            touch /tmp/btresume
        fi
        if [ -e /tmp/wifion ]; then
            /opt/bin/wifi_switch off
            touch /tmp/wifiresume
        fi
        sleep 5
        ;;
    resume)
        if [ -e /tmp/btresume ]; then
            /opt/bin/bt_switch on
            rm /tmp/btresume
        fi
        if [ -e /tmp/wifiresume ]; then
            /opt/bin/wifi_switch on
            rm /tmp/wifiresume
        fi
        ;;
    *)
        echo "Usage: sleep_hook [suspend|resume]"
        exit 1
        ;;
esac
  • /opt/bin/wifi_switchは下記参考にして変更
  • dm200-sleep.serviceからsleep_hook経由でwifi_switchを呼び出した後、sleep_hook[1652]: Successfully initialized wpa_supplicantみたいなログは残っているが、wpa_supplicantが起動していない
    • sleep_hookの終わりで子プロセスが殺されている?
    • wifi_switchの中でwpa_supplicantを実行/killallする代わりにsystemctl start/stop wpa_supplicant@wlan0.serviceを呼ぶようにしてみる
    • 設定ファイルは/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
  • settermも(ターミナルからの起動でないからか?)うまく動いてないみたい

  • 電源ボタンでサスペンドするようにする
    • /etc/systemd/logind.conf
      • HandlePowerKey=suspend
    • # killall -HUP systemd-logind

/opt/bin/batteryで得られるバッテリ残量がpomera側と一致しない

  • /opt/bin/battery2remain_capacityを見るのが正解かもしれない
    • remain_capacityの値を4200(バッテリ容量mAh)で割るとpomera側とだいたい同じぐらいの値になる
  • Linux側で /sys/class/power_supply/BATTERY/capacity が 53 ぐらいのときに突然電源が落ちる
    • サスペンドして一晩経過した後、上記の状態になった
    • サスペンド中のバッテリ消費が反映されていないのかも?
  • 給電するとpomera側で起動、バッテリ残量0%のまま、20分ぐらい給電しても変わらず
  • この状態でLinuxを起動するにはAlt+右Shift+電源を押しながらUSB給電
POWER_SUPPLY_NAME=BATTERY
POWER_SUPPLY_STATUS=Charging
POWER_SUPPLY_CURRENT_NOW=85000
POWER_SUPPLY_VOLTAGE_NOW=3174000
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_HEALTH=Good
POWER_SUPPLY_CAPACITY=53
  • かなり電圧が下がっているように見える

しばらく(30分ぐらい)充電した後

POWER_SUPPLY_NAME=BATTERY
POWER_SUPPLY_STATUS=Charging
POWER_SUPPLY_CURRENT_NOW=1002000
POWER_SUPPLY_VOLTAGE_NOW=3633000
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_HEALTH=Good
POWER_SUPPLY_CAPACITY=63

さらにしばらく充電した後(30分後ぐらい)

POWER_SUPPLY_NAME=BATTERY
POWER_SUPPLY_STATUS=Charging
POWER_SUPPLY_CURRENT_NOW=1006000
POWER_SUPPLY_VOLTAGE_NOW=3715000
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_HEALTH=Good
POWER_SUPPLY_CAPACITY=70

ここでpomera側に戻ってバッテリ残量を見ると70%で一致している

pomera側で100%になったとき

POWER_SUPPLY_NAME=BATTERY
POWER_SUPPLY_STATUS=Full
POWER_SUPPLY_CURRENT_NOW=1007000
POWER_SUPPLY_VOLTAGE_NOW=3908000
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_HEALTH=Good
POWER_SUPPLY_CAPACITY=100

To Do

  • lid closeのイベントを取れないか(画面閉じてサスペンドしたい)
    • evtestをインストール
    • 別マシンからsshでログイン(キーをgrabするので)
    • % sudo evtest --grab /dev/input/event0
    • % sudo evtest --grab /dev/input/event1
    • 少なくともevent0/event1では画面閉じたイベントは取れなさそう
  • サスペンドからの復帰後、iwconfigでの設定を受け付けないことがある
% sudo iwconfig power off
Error for wireless request "Set Power Management" (8B2C) :
    SET failed on device wlan0 ; Interrupted system call.
% sudo iwconfig rate 12M fixed
Error for wireless request "Set Bit Rate" (8B20) :
    SET failed on device wlan0 ; Interrupted system call.
  • IPv6の通信が安定しない

その他