ヘッデンを探す

先日日が落ちてから自転車のメカトラブルに遭遇しました.前照灯は2つあったのですが,ヘッデンを持っていなかったので手元を照らすのに片手が取られて作業がしにくかったです.やっぱりヘッデン持ち歩きたいなと思いました.
New photo added to gallery
手持ちのヘッデンは PETZL Zipka の初期の頃のモデル.結構満足していたのですが,ボディーが割れていて持ち運ぶのに躊躇します.軽くぶつけたりするとバラけて電池やパーツが散らばってしまいます.10年ほど前に横浜のmyXで買ったものなのでしょうがないというかまだ使えてるのがすごいと考えたほうがいいかな?

IMG_20180903_024654

日本カタログで後継を探すと同じ名前のモデルがありました.

ZIPKA® ジプカ
¥4,200 (税込 ¥4,536)
近距離照射や短時間の活動に適した超コンパクトヘッドランプ
レッド/ブラック
200 lm 60 m 240 h 66 g
単四アルカリx 3
IP X4 防滴型

巻取りリールもそのままでだいたい同じスペックです.赤LEDと防滴機能が増えて点滅機能がなくなっている感じ.点滅機能は点滅感覚が長くて自転車にはあまり使えなかったのでなくなっても大丈夫そう.
オプションでリチャージャブルバッテリーも存在するようです.長時間の活動には便利そうだけど主に非常用なのでいらないかな?

e+LITE というモデルも気になります.

e+LITE® イーライト
¥3,600 (税込 ¥3,888)
超コンパクトエマージェンシーヘッドランプ
ホワイト/ブラック
50 lm 10 m 12 h 26 g
2x lithium CR2032
IP X7 防水型

光量が少ないけれど非常時に手元を照らすだけなら十分そう.軽量で防水や点滅機能があるので自転車のヘルメットにつけっぱなしにするのもいいかもしれません.
ただ,前モデルまでは巻取りコードだったのがこのモデルではヘッドバンドに変わっています.巻取りコード式は頭だけでなく手首やヘルメット,ハンドルバーなどいろいろなところに簡単に取り付け取り外しできるのが気に入っているのでできれば巻取り式が使いたいです.
巻取りコード式の前モデルが売っているところもあるのですが,定価より高くなっているので手を出しづらいです.

他のメーカーも探してみるといいのかもと思いましたが,巻取りリール式は見当たらないです.PETZL が権利を持っているのかもしれないですね.

  • PETZL(ペツル) E93AB ジプカ レッド

  • PETZL(ペツル)ヘッドライト ジプカ E93ABA

  • Petzl ペツル CORE コア ハイブリッドモデル専用バッテリー  新製品 (※充電式バッテリー)

  • PETZL(ペツル) e+LITE イーライト E02 P4

  • PETZL(ペツル) ヘッドライト イーライト E02P3e+ライト (※巻取り式旧製品)

補修するのもありかな?でもBONDICだとお店によっては e+LITE が変える値段…….接着剤でもいいかな?

Google Chrome からエクスポートしたパスワードリストを KeepassXC にインポート

人に説明するのに手元で試したのですがせっかくなのでblogに

Google Chrome のパスワードマネージャは使っているけれど,汎用的なKeepassXC に移行なメモです.

Google Chrome からパスワードのエクスポート

「設定」→「パスワードとフォーム」→「パスワードを管理」
若しくは chrome://settings/passwords にアクセス.

「︙」を押して「パスワードをエクスポート」から「パスワードをエクスポート…」から適当な場所にパスワードを保存します.

42595980870 d5446a65ee

30536920508 8d62cb50bd

KeepassXC へのインポート

KeepassXC を起動して,「CSVからインポート」を選びます.

43503758335 aa7e31c143

列のレイアウトを以下のようにしてインポートします.

  • Title : 列1

  • Username : 列3

  • Password : 列4

  • URL : 列2

44404975011 57f063d488

ウェブブラウザへの拡張機能の導入

利用するウェブブラウザに拡張機能を導入する.

KeepassXC の「ツール」→「設定」の「ブラウザー統合」で利用するウェブブラウザを有効にする.

42603172110 1770a7e23f

後はよしなに.

環境
$ dpkg-query -W keepassxc google-chrome-stable
google-chrome-stable    68.0.3440.106-1
keepassxc       2.3.1+dfsg.1-1
$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64

DNSキャッシュサーバなアドブロッカーのPi-holeを試す

2018-08-18 の鹿児島Linux勉強会 2018.08 で発表したものに加筆修正したもの.

アドブロッカー?

  • 広告をブロック

  • ブラウザの拡張機能などで実現するのが一般的(重い&ブラウザ毎に設定が必要)

    • uBlock Origin

    • プライベートブラウジングモードでは(基本的に)利用できない

  • スマートフォンは?

    • rootなどが必要(ウェブブラウジングは拡張機能や広告ブロック機能のあるウェブブラウザなどで回避可能)

Pi-hole

29084865297 4f02afec31

  • DNSキャッシュサーバとして動作して広告をDNSベースでブロック

    • PC側では設定不要 or DNS設定のみ

    • 軽い

  • Webベースの管理画面が利用可能

  • DNS以外にDHCPサーバ機能も利用可能

動作要件

名前にPiとついているし事例が多いがRaspberry Pi以外でも動作する

Hardware
Pi-hole is very lightweight as it only handles DNS queries and returns a blank HTML file so it doesn’t need much processing power.

~52MB of free space
512 MB RAM
Software
Pi-hole will run on most Debian-based distro’s and is the preferred platform for it.

We officially support the following:

Raspbian: Jessie/Stretch
Ubuntu: 16.04 / 16.10
Debian: 8 / 9
Fedora 26
CentOS: 7 (not ARM)

導入例

お手軽なインストールscriptが用意されている
公式ページでは,

curl -sSL https://install.pi-hole.net | bash

とはいえ怖いので,こんな感じで入れた

$ wget -O basic-install.sh https://install.pi-hole.net
$ lv basic-install.sh
$ sudo porg -lp pi-hole bash ./basic-install.sh
  • インストーラはTUIでいくつかの選択肢が表示される

  • 設定はこのあたりに/etc/pihole/setupVars.conf

  • アンストーラーもついているが,パッケージ周りとか面倒(導入済みだったかどうか関係なく関連パッケージを1つづつ確認しないといけない)なのでchroot環境などで試したほうが良い

44003211731 7da5e55b53

DNSの選択

  • Public DNS各種もしくはCustomから任意のDNSが指定可能

  • 今回は自分の家のUnboundを指定

  • 必要なパッケージは自動で導入される

43284561304 664a4c6675
44003212211 af3c239901

ad listの選択

43284561514 57f8f88c59

Protocolの選択

44003212531 6105935e3a

Web管理画面有効無効

43284561704 abff464168
44003212851 7e3c626b79

ログ

43284561874 54e4f14dbd

インストール完了

この画面はメモしておきましょう

44003213001 bbcd67ffcd

もしパスワードを忘れたら

$ pihole -a -p
Enter New Password (Blank for no password):
Confirm Password:
  [✓] New password set

端末のDNSをPi-holeに向けて試す(adhoc)

ネットワークのDNSをPi-holeのipにします

nm-applet

42224130270 b14c28b364

/etc/resolv.conf
nameserver 192.168.2.211

ネットワーク全体に反映

  • DHCPサーバからリリースされるDNS情報をPi-holeのものに差し替える

or

  • DHCPサーバをPi-holeに切り替える

    • Pi-holeのDHCPDは管理画面のSettings → DHCPから有効にできる

から有効にできる

VPN の nameserver に指定

自分は外では VPN を使うが,そのときこの nameserver を指定すると携帯回線でもパケットの消費が抑えられる効果もある

DNSが切り替わったか確認

確認例
$ dig example.com|grep -i server
;; SERVER: 192.168.2.211#53(192.168.2.211)

管理画面

ダッシュボード

43115604235 f07c9c9060

log

43973290462 5af9c902d5

システム情報

29084598777 90979e5772

広告ブロックリスト管理

43303343644 0e3b2de779

DNS設定

30153543558 3e368f177f

DHCP設定

30153549218 78f1098ff5

API/Web管理画面設定

42212991130 cc6ea1e357

プライバシー設定

43973382062 ca95d2fd21

テレポーター(設定のインポートエクスポート)

43973387132 fed8d96213

ログからホワイトリストブラックリストに

ログからドメインをホワイトリスト,ブラックリストに移動できる

43301172114 e220a2a2bc
43113907005 3561309f64

WebIFはoption

pihole commandが存在する

help
$ pihole --help
Usage: pihole [options]
Example: 'pihole -w -h'
Add '-h' after specific commands for more information on usage

Whitelist/Blacklist Options:
  -w, whitelist       Whitelist domain(s)
  -b, blacklist       Blacklist domain(s)
  --wild, wildcard     Wildcard blacklist domain(s)
  --regex, regex       Regex blacklist domains(s)
                        Add '-h' for more info on whitelist/blacklist usage

Debugging Options:
  -d, debug           Start a debugging session
                        Add '-a' to enable automated debugging
  -f, flush           Flush the Pi-hole log
  -r, reconfigure     Reconfigure or Repair Pi-hole subsystems
  -t, tail            View the live output of the Pi-hole log

Options:
  -a, admin           Web interface options
                        Add '-h' for more info on Web Interface usage
  -c, chronometer     Calculates stats and displays to an LCD
                        Add '-h' for more info on chronometer usage
  -g, updateGravity   Update the list of ad-serving domains
  -h, --help, help    Show this help dialog
  -l, logging         Specify whether the Pi-hole log should be used
                        Add '-h' for more info on logging usage
  -q, query           Query the adlists for a specified domain
                        Add '-h' for more info on query usage
  -up, updatePihole   Update Pi-hole subsystems
                        Add '--check-only' to exit script before update is performed.
  -v, version         Show installed versions of Pi-hole, Web Interface & FTL
                        Add '-h' for more info on version usage
  uninstall           Uninstall Pi-hole from your system
  status              Display the running status of Pi-hole subsystems
  enable              Enable Pi-hole subsystems
  disable             Disable Pi-hole subsystems
                        Add '-h' for more info on disable usage
  restartdns          Restart Pi-hole subsystems
  checkout            Switch Pi-hole subsystems to a different Github branch
                        Add '-h' for more info on checkout usage

Pi-hole アップデートの確認とアップデート

Pi-holeのアップデート確認
$ pihole -up --check-only
[i] Checking for updates...
[i] Pi-hole Core: up to date
[i] Web Interface: up to date
[i] FTL: up to date
[] Everything is up to date!
Pi-holeのアップデート
$ pihole -up
広告ドメインリストの更新
$ pihole updateGravity
  [i] Neutrino emissions detected...
  [✓] Pulling blocklist source list into range

  [i] Target: raw.githubusercontent.com (hosts)
  [✓] Status: Retrieval successful

  [i] Target: mirror1.malwaredomains.com (justdomains)
  [✓] Status: No changes detected

  [i] Target: sysctl.org (hosts)
  [✓] Status: No changes detected

  [i] Target: zeustracker.abuse.ch (blocklist.php?download=domainblocklist)
  [✓] Status: No changes detected

  [i] Target: s3.amazonaws.com (simple_tracking.txt)
  [✓] Status: No changes detected

  [i] Target: s3.amazonaws.com (simple_ad.txt)
  [✓] Status: No changes detected

  [i] Target: hosts-file.net (ad_servers.txt)
  [✓] Status: No changes detected

  [✓] Consolidating blocklists
  [✓] Extracting domains from blocklists
  [i] Number of domains being pulled in by gravity: 157918
  [✓] Removing duplicate domains
  [i] Number of unique domains trapped in the Event Horizon: 134681
  [i] Number of whitelisted domains: 0
  [i] Number of blacklisted domains: 0
  [i] Number of regex filters: 0
  [✓] Parsing domains into hosts format
  [✓] Cleaning up stray matter

  [✓] Force-reloading DNS service
  [✓] DNS service is running
  [✓] Pi-hole blocking is Enabled
crontabに登録
# Pi-hole広告ドメインリスト更新
7 3 * * * pihole updateGravity | tee >$(telegram-msg-cron)
# Pi-hole アップデートチェック
11 3 * * *      if [ $(pihole -up --check-only|tail -1|grep -c 'Everything is up to date!') ]; then echo ''; else echo "${HOSTNAME} : please Pi-hole update!" | tee >$(telegram-msg-cron) ; fi

日本向け広告リストを追加してみる

$ echo 'https://280blocker.net/files/280blocker_host.txt' | sudo tee -a /etc/pihole/adlists.list
https://280blocker.net/files/280blocker_host.txt
$ pihole -g

検索すると様々なドメインリストが存在する.用途に合わせて登録すると良さそう.

Pi-hole メリット,デメリット

  • メリット

    • 軽量で動作要件も低い

    • DNSベースなのでスマートフォンなどでもOK!(アプリ内の広告ブロックも)

    • ウェブブラウザの場合でも端末やブラウザ毎に個別に設定する必要がない

    • 設定も簡単で動作も管理画面で確認しやすい

    • 転送量も減る

  • デメリット

    • uBlock Originに比べると広告のブロック率が低い?(見ているsiteにも依るかも)

      • 拡張性があるので好みのリストを追加すれば良さそう

    • 今見えている広告をブロックしたいといったときにはブラウザの拡張機能のほうが便利

    • 広告の動きを確認するにはDNSを切り替える必要があり面倒

      • nm-appletだとPi-holeと通常DNSの設定をそれぞれ作っておくとワンタッチで切り替えられて便利
        43127431915 f050327120

        • PC → Pi-hole → Unbound → ISP

        • PC → Unbound → ISP

      • Wi-Fi AP を Pi-hole 利用とそうでないものの2つ用意する

家庭や小規模ネットワーク向け?

別解

Pi-holeのad listをそのままor整形して/etc/hostsに突っ込めばとりあえずblockできる
(UnboundやDnsmasqとかに入れても)

ad list
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://mirror1.malwaredomains.com/files/justdomains
http://sysctl.org/cameleon/hosts
https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
https://hosts-file.net/ad_servers.txt
listの内容
$ wget -q -O - https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts | lv
  :
0.0.0.0 1493361689.rsc.cdn77.org
0.0.0.0 30-day-change.com
0.0.0.0 2468.go2cloud.org
0.0.0.0 adservice.google.nl
0.0.0.0 adsmws.cloudapp.net
  :
$ wget -q -O - https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts|lv
amazon.co.uk.security-check.ga
autosegurancabrasil.com
dadossolicitado-antendimento.sad879.mobi
hitnrun.com.my
maruthorvattomsrianjaneyatemple.org
  :

別解?

ウェブブラウジング時に広告だけでなくトラッキングなども考慮
このあたりはこまめに設定が必要なので一括管理は難しそう

Pi-hole

  • 導入が簡単

  • リソース少なめ

  • 管理画面がわかりやすい

  • 家庭や小規模ネットワーク向け?

QA

*BSDとかでは動かせない?

パッケージの確認と導入周りとネットワーク設定あたりを合わせればいけるのでは?
でもhostsやUnboundなどで設定したほうがきっと楽

広告がdomainではなくipで配信されるようになったら?

ipアドレスを Pi-hole の Block list に登録してみたら登録できた.しかしブロックはできなかった.iptablesなどでブロックする感じ?

Intel SSD 8MB bug に遭遇して困る

2018-07-21 の 鹿児島Linux勉強会 2018.07 で発表したものに少し加筆修正したものです.

一昨日 Intel SSD 8MBバグに遭遇><

  • 多分cpufreqの設定が甘くて離席時にCPUの熱でpoweroff
  • 起動しなくなった
  • BIOSからはSSD見える
  • 別メディアで起動するとfdisk -l で総容量 8MB

8MB bug

  • 一部のIntel SSDにあるバグ(今回はINTEL SSDSA2CW600G3)
  • 強制電源断時などに発症?
  • 8MBの容量しか見えない&使えない
  • データは救えない
  • secure eraseでとりあえず復活(データは消える)
  • 2011年の話なので最近該当デバイス使っている人は少ないと思う

8MBのdiskとして使ってみる……

普通に8MBのdiskとして利用できる.

$ sudo fdisk /dev/sdc
$ sudo fdisk -l /dev/sdc
ディスク /dev/sdc: 8 MiB, 8388608 バイト, 16384 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xa3850bcb
 
デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ
/dev/sdc1 16 16383 16368 8M 83 Linux
$ sudo /sbin/mkfs.ext4 /dev/sdc1
$ sudo cp /boot/config-`uname -r` /media/mk/4a42767f-18bc-4250-9266-e61d41a47260/
$ ls -la /media/mk/4a42767f-18bc-4250-9266-e61d41a47260/
合計 229
drwxr-xr-x 3 root root 1024 8月 23 20:13 .
drwxr-x---+ 3 root root 4096 8月 23 20:11 ..
-rw-r--r-- 1 root root 216860 8月 23 20:13 config-4.15.0-32-generic
drwx------ 2 root root 12288 8月 23 20:11 lost+found
$ df /media/mk/4a42767f-18bc-4250-9266-e61d41a47260/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdc1 6899 289 6038 5% /media/mk/4a42767f-18bc-4250-9266-e61d41a47260
$ dd if=/dev/zero bs=4M | pv | sudo dd of=/media/mk/4a42767f-18bc-4250-9266-e61d41a47260/all
dd: '/media/mk/4a42767f-18bc-4250-9266-e61d41a47260/all' に書き込み中です: デバイスに空き領域がありません
12895+0 レコード入力
12894+0 レコード出力
6601728 bytes (6.6 MB, 6.3 MiB) copied, 0.0772058 s, 85.5 MB/s
6.36MiB 0:00:00 [73.4MiB/s] [ <=> ]
$ ls -la /media/mk/4a42767f-18bc-4250-9266-e61d41a47260/
合計 6676
drwxr-xr-x 3 root root 1024 8月 23 20:14 .
drwxr-x---+ 3 root root 4096 8月 23 20:11 ..
-rw-r--r-- 1 root root 6601728 8月 23 20:14 all
-rw-r--r-- 1 root root 216860 8月 23 20:13 config-4.15.0-32-generic
drwx------ 2 root root 12288 8月 23 20:11 lost+found
$ df /media/mk/4a42767f-18bc-4250-9266-e61d41a47260/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdc1 6899 6736 0 100% /media/mk/4a42767f-18bc-4250-9266-e61d41a47260

8MB bug 対処

  • secure erase により元の容量に復旧
  • もちろんデータは救えない……

secure erase の用意

$ sudo apt update
$ sudo apt install hdparm

状態確認

$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 8 MiB, 8388608 bytes, 16384 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

8MB><

$ sudo hdparm -I /dev/sdb
 
/dev/sdb:
 
ATA device, with non-removable media
        Model Number:       INTEL SSDSA2CW600G3
        Serial Number:      BAD_CTX     0000013F
        Firmware Revision:  4PC10362
        Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6
Standards:
        Used: unknown (minor revision code 0x0029)
        Supported: 8 7 6 5
        Likely used: 8
Configuration:
        Logical         max     current
        cylinders       16383   256
        heads           16      1
        sectors/track   63      63
        --
        CHS current addressable sectors:       16128
        LBA    user addressable sectors:       16384
        LBA48  user addressable sectors:       16384
        Logical  Sector size:                   512 bytes
        Physical Sector size:                   512 bytes
        device size with M = 1024*1024:           8 MBytes
        device size with M = 1000*1000:           8 MBytes
        cache/buffer size  = unknown
        Nominal Media Rotation Rate: Solid State Device
Capabilities:
        LBA, IORDY(can be disabled)
        Standby timer values: spec'd by Standard, no device specific minimum
        R/W multiple sector transfer: Max = 16  Current = 16
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4
             Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
        Enabled Supported:
                Security Mode feature set
           *    Power Management feature set
           *    Write cache
           *    Look-ahead
           *    Host Protected Area feature set
           *    WRITE_BUFFER command
           *    READ_BUFFER command
           *    NOP cmd
           *    DOWNLOAD_MICROCODE
                SET_MAX security extension
           *    48-bit Address feature set
           *    Device Configuration Overlay feature set
           *    Mandatory FLUSH_CACHE
           *    FLUSH_CACHE_EXT
           *    General Purpose Logging feature set
           *    WRITE_{DMA|MULTIPLE}_FUA_EXT
           *    64-bit World wide name
           *    IDLE_IMMEDIATE with UNLOAD
           *    WRITE_UNCORRECTABLE_EXT command
           *    {READ,WRITE}_DMA_EXT_GPL commands
           *    Segmented DOWNLOAD_MICROCODE
           *    Gen1 signaling speed (1.5Gb/s)
           *    Gen2 signaling speed (3.0Gb/s)
           *    Phy event counters
           *    Software settings preservation
           *    SMART Command Transport (SCT) feature set
           *    SCT Write Same (AC2)
           *    SCT Error Recovery Control (AC3)
           *    SCT Features Control (AC4)
           *    SCT Data Tables (AC5)
           *    Data Set Management TRIM supported (limit 8 blocks)
           *    Deterministic read ZEROs after TRIM
Security:
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
                frozen
        not     expired: security count
                supported: enhanced erase
        2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 500151795957940c
        NAA             : 5
        IEEE OUI        : 001517
        Unique ID       : 95957940c
Checksum: correct

症状

  • Serial Number: BAT_CTX
    8MBバグ中
        Serial Number:      BAD_CTX     0000013F
  • Security: frozen
    frozen状態ではこれ以上操作できないので解除の必要がある
                frozen

frozen 状態を解除

  • 起動した状態のまま SSD のデータケーブルを物理的に切断,接続
    LENOVO ThinkPad X201i / T430s(NotePC)ではデータケーブルだけの切断は出来ず,電源も同時に切断,接続したがOKだった.

    or

  • サスペンド,レジュームを行う
    LENOVO ThinkPad X201i / T430s(NotePC)で問題なかった.
    $ sudo sh -c "echo mem > /sys/power/state"

  • hdparm コマンドで not frozen になるっているのを確認

$ sudo hdparm -I /dev/sdb
   :
Security:
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
        not     frozen
        not     expired: security count
                supported: enhanced erase
   :

SSDにパスワードを設定

  • 一時的なパスワード(secure eraseで消去される)だが次の手順で必要なのでメモしておく
    ここでは SOMEPASS
$ sudo hdparm --user-master u --security-set-pass SOMEPASS /dev/sdb

パスワードを解除する場合は以下のように一旦アンロックしてから解除する

$ sudo hdparm --user-master u --security-unlock SOMEPASS /dev/sdb
$ sudo hdparm --user-master u --security-disable SOMEPASS /dev/sdb

パスワードがわからなくなった場合メーカ規定値のマスターパスワードで解除できる場合がある.
その場合 --user-master m とマスターパスワードを指定する

再度ドライブの状態を確認

  • Securityセクションが以下のようにnot enabled から enabled になっていること
$ sudo hdparm -I /dev/sdb
   :
Security:
        Master password revision code = 65534
                supported
                enabled
        not     locked
        not     frozen
        not     expired: security count
                supported: enhanced erase
   :

Secure Erase

  • データの消去を行う
$ sudo hdparm -–user-master u –-security-erase-enhanced SOMEPASS /dev/sdb
  • うまく行かない場合( hdparmでsupported: enhanced eraseが無い場合 )以下のコマンドを試す
$ sudo hdparm --user-master u --security-erase SOMEPASS /dev/sdb

※–-security-erase-enhanced は代替処理された不良セクタも消去される.対応している場合こちらを使ったほうが確実にデータ消去が行える.

エラー

USB変換アダプタ経由の場合以下のようなエラーとなった.

$ sudo hdparm --user-master u --security-erase SOMEPASS /dev/sdb
security_password: "SOMEPASS"
 
/dev/sdb:
 Issuing SECURITY_ERASE command, password="SOMEPASS", user=user
The running kernel lacks CONFIG_IDE_TASK_IOCTL support for this device.
SECURITY_ERASE: Invalid argument

恐らくUSB変換部分で全ての機能がサポートされていないせい.
この状態でSATA接続すると起動時にHDD PASSWORDを尋ねられる.しかし,--security-set-passで設定したパスワードでは通らない.一旦USB変換アダプタに戻し,--security-disable でパスワードを消去した後SATA接続で再度やり直したらうまく行った.

hdparmコマンドで確認

  • Serial Number が正しくなっている :)
  • もちろん600GB全領域利用できる
$ sudo hdparm -I /dev/sdb
 
/dev/sdb:
 
ATA device, with non-removable media
        Model Number:       INTEL SSDSA2CW600G3
        Serial Number:      CVPR1206005W600FGN
        Firmware Revision:  4PC10362
        Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6
    :

これでとりあえず復活

SSD の寿命確認

フラッシュメモリー自体はまだ健康に見える

$ sudo smartctl --all /dev/sda |grep -E '232|233'
232 Available_Reservd_Space 0x0033   100   100   010    Pre-fail  Always       -       0
233 Media_Wearout_Indicator 0x0032   100   100   000    Old_age   Always       -       0
E8 Available Reserved Space Normalized 10 予約領域の残っている数を表す。正規化した (Normalized) 値は、100 パーセントを表す 100 から始 まる。正常の範囲は 10 パーセントまで。
E9 Media Wearout Indicator Normalized 記録メディアであるフラッシュメモリーの使い込んだ程度 を表す。平均消去回数が増えるにつれ、正規化した (Normalized) 値が 100 から 1 へ減少していく。

再発防止(完全ではない)

  • firmwareを最新にする
  • 以下のページから入手する
    FirmwareUpdateTool_v3_0_1.zipissdfut_64_3.0.1.iso が入手可能
    前者の中にはドキュメントと後者のisoファイルが含まれていた

  • mkusb で USB memory に書き込んで起動

  • LENOVO T430s では起動に失敗した
  • LENOVO X201i では正常起動
  • 実際にアップデートできるかはもともと最新だったので未確認

最新のファームウェアバージョンは以下のページで確認できる

なお,最新にしてもこのバグは再発する可能性がある……(実際最新fwで2回このbugが発生した)

これ以上は,

  • バックアップをこまめに取る
  • サスペンドなどを行わない
  • なるべく電源のon/offを行わない
  • 安定した電源を利用する
  • バックアップをこまめに取る
  • バックアップをこまめに取る
  • バックアップをこまめに取る

現在はデイリーバックアップだけでなく /home は Lsyncd + rsync している

根本的な対処

SSDを交換する
TLCだと大分安い

その後

1月ほどで再発したorz
2回目は利用中に急にdiskが見えなくなったX201s/X220/X200で何年も使っていて起こらず,T430sにSSDを差し替えてから立て続けに起こっているのでマシンとの相性もありそう.

参考URL

Debian sid に Ubuntu の source.list から JOSM を導入

以前は OpenStreetMap 編集ツールの JOSM を wget で定期的に取得していましたが,更新されてないときも取得したりとかがいまいちでした.

<追記>

今試すと以前はJOSMサーバでは --timestamping option が効かなかったと思うのですが今は効くようになっていました.

$ wget -SN https://josm.openstreetmap.de/josm-latest.jar
--2018-09-08 00:21:26--  https://josm.openstreetmap.de/josm-latest.jar
josm.openstreetmap.de (josm.openstreetmap.de) をDNSに問いあわせています... 78.47.65.34, 2a01:4f8:c17:2906::2
josm.openstreetmap.de (josm.openstreetmap.de)|78.47.65.34|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 
  HTTP/1.1 304 Not Modified
  Date: Fri, 07 Sep 2018 15:21:29 GMT
  Server: Apache/2.4.18 (Ubuntu)
  Connection: Keep-Alive
  Keep-Alive: timeout=5, max=100
  ETag: "ca0f12-57529dee345c4"
ファイル `josm-latest.jar' はサーバ側で変更されていませんでした。ダウンロードを省略します。

</追記>

JSOM 公式で Ubuntu のパッケージを配布しているので,これを借りてみます.

Ubuntu の dists はこんな感じです.とりあえず近くて LTS な bionic(18.04 LTS)を使います.(alldist)でも良かったかも.

$ w3m -dump 'https://josm.openstreetmap.de/apt/dists/'|grep "^\[DIR\]"|awk {' print $2 '}
alldist/
artful/
bionic/
cosmic/
lucid/
natty/
oneiric/
precise/
quantal/
raring/
saucy/
trusty/
utopic/
vivid/
wily/
xenial/
yakkety/
zesty/

こんな感じで導入しました.

$ wget -q https://josm.openstreetmap.de/josm-apt.key -O- | sudo apt-key add - #鍵導入
$ sudo apt edit-sources josm  #source.list作成内容は以下のもの
$ cat /etc/apt/sources.list.d/josm.list
deb https://josm.openstreetmap.de/apt bionic universe
$ sudo apt update #パッケージ情報を最新に
$ sudo apt install josm-latest  #josm-latestを導入

起動して,以下のようにフォントにアンチエイリアスが効いていなくて汚い場合は,

42536121640 71d60ae6aa

環境変数 `_JAVA_OPTIONS=’-Dawt.useSystemAAFontSettings=lcd’ ` を設定するときれいになります.

43627752894 854fe912f8

とりあえず最低限のプリセットや,

43628727264 425999a29a

プラグインを設定.

43628723984 a3dbce049f

てことでこれで普通に使えそうです.

(新しいGPSロガーほしいですね)

awesome WM の設定内で ホームディレクトリを指定する

awesome WM での設定ファイルは Lua で書かないといけないのですが,Lua がよくわからずホームディレクトリのパスを指定するのに ~`や `${HOME} が利用できないので /home/USER な感じでフルパスで書いていたのですが,いつもと違うアカウント名の環境に clone していろいろと動かなくなりました.
またパスを書き換えるのもなーということでちゃんと確認してみると,os.getenv(HOME) が使えそうです.

os.getenv (varname)
Returns the value of the process environment variable varname, or nil if the variable is not defined.

ということで,こんな感じで別アカウントでも動作するようになりました :)
これで /home/* だろうが /export/home/* だろうがへっちゃらです!

rc.lua
diff --git a/rc.lua b/rc.lua
index 817937a..a564559 100644
--- a/rc.lua
+++ b/rc.lua
@@ -11,6 +11,8 @@ local naughty = require("naughty")
 local menubar = require("menubar")
 local hotkeys_popup = require("awful.hotkeys_popup").widget

+local home = os.getenv("HOME")
+
 -- Load Debian menu entries
 require("debian.menu")

@@ -276,14 +278,14 @@ globalkeys = awful.util.table.join(

     -- bind PrintScrn to capture a screen
-    awful.key({                   }, "Print", function () awful.util.spawn("/home/mk/.config/awesome/bin/ss-root.sh", false)   end),
-    awful.key({ "Mod1"            }, "Print", function () awful.util.spawn("/home/mk/.config/awesome/bin/ss-window.sh", false) end),
-    awful.key({ "Shift"           }, "Print", function () awful.util.spawn("/home/mk/.config/awesome/bin/ss-area.sh", false)   end),
+    awful.key({                   }, "Print", function () awful.util.spawn(home .. "/.config/awesome/bin/ss-root.sh", false)   end),
+    awful.key({ "Mod1"            }, "Print", function () awful.util.spawn(home .. "/.config/awesome/bin/ss-window.sh", false) end),
+    awful.key({ "Shift"           }, "Print", function () awful.util.spawn(home .. "/.config/awesome/bin/ss-area.sh", false)   end),

     -- Audio Controle
環境
$ dpkg-query -W awesome*
awesome 4.2-5
awesome-doc     4.2-5
awesome-extra   2018041201
$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64

awesome WM で Light を利用して輝度調整する

以前は awesome WM での輝度調整は xbacklight を利用していたのですが,動作しなくなっていました.

$ xbacklight -get
No outputs have backlight property

最近まで ThinkPad が1台だけになって持ち運びをしなくなっていたのもあり,以下のような感じで /sys/class/backlight/intel_backlight/brightness に投げていました.

$ echo 800 | sudo tee /sys/class/backlight/intel_backlight/brightness
800

しかし,最近 T430s/X201i のジャンクを入手して補修して持ち運べる ThinkPad が出来ました :)
そうなると場所により明るさが変わったり,輝度を下げてバッテリー持ちを良くしたりしたいという感じでこまめに起動調整がしたくなりました.
他のwmのpower managerを使うと一応輝度調整できるけどあまり嬉しくないなということでちょっと探してみると, Light というものを見つけました.

Arch Linux, Fedora にはパッケージがあるようです.今回はsourceからUbuntuとDebianに導入しました.

導入
$ git clone https://github.com/haikarainen/light
$ cd light
$ ./autogen.sh
$ ./configure
$ make
$ sudo checkinstall

とりあえずそのまま既定値でbuildしました.

実行例
$ light -G  #輝度取得
56.34
$ light -A 10 #輝度 10 Up
$ light -U 10 #輝度 10 Down

問題なく動きました.他にもオプションはありますが,とりあえずこれだけ動けば問題ありません.
awesome WM の ~/.config/awesome/lua.rc に書いてみます.

rc.lua
diff --git a/rc.lua b/rc.lua
index f9a7467..9f461b9 100644
--- a/rc.lua
+++ b/rc.lua
@@ -289,8 +289,12 @@ globalkeys = awful.util.table.join(

     -- Brightness Controle
---    awful.key({         }, "XF86MonBrightnessDown", function () awful.util.spawn("xbacklight - 5") end),
 --    awful.key({         }, "XF86MonBrightnessUp",   function () awful.util.spawn("xbacklight + 5") end),
+--    awful.key({         }, "XF86MonBrightnessDown", function () awful.util.spawn("xbacklight - 5") end),
+    -- 以下の light を利用
+    -- "haikarainen/light: GNU/Linux application to control backlights" https://github.com/haikarainen/light
+    awful.key({         }, "XF86MonBrightnessUp",   function () awful.util.spawn("light -A 10") end),
+    awful.key({         }, "XF86MonBrightnessDown", function () awful.util.spawn("light -U 10") end),

     -- lock screen
     awful.key({ "Mod1"  }, "l", function () awful.util.spawn( "xscreensaver-command -activate",false) end),

awesome WM の restart をして,輝度調整ボタンを押すとちゃんと輝度がUp/Downするようになりました.
これで外出先でも困りません :)

環境1
$ $ dpkg-query -W awesome*
awesome 4.2-4
awesome-doc
awesome-extra   2017110501
$ lsb_release -d
Description:    Ubuntu 18.04.1 LTS
$ uname -m
x86_64
環境2
$ dpkg-query -W awesome*
awesome 4.2-5
awesome-doc     4.2-5
awesome-extra   2018041201
$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64

SteamにWineの機能が加わったらしいので少し試す

ゲーミングプラットホームのSteamにLinux版のクライアントもあります.これにWindows版のゲームが遊べるようになる機能がベータ版に加わったらしいです.これはWindows互換レイヤーのWineにSteamを作っているValveSoftwareがゲーム向けの機能に手を加えたProtonというものを組み込んで実現しているようです.
今の所Wineで動作するものという括りではなく,Valveが指定したタイトルだけが動作するようです.
#設定で全てのゲームで有効にすることが可能だった.
動作するゲームのリストは以下のアナウンスページで確認できます.今の所27タイトルのようです.(これを知っていれば先日のセールでDOOMを……)

ということでベータを有効にして試してみました.

ベータへの参加を有効にします.

44213791731 9a4cd08d09.jpg
43495999044 c67b4a40fd.jpg

Steamの再起動を行います.

43308073705 9bf75145b2.jpg

ベータ版がダウンロードされ,起動します.

42405873910 5bceb6c319.jpg

対応のDOOMのデモ版を試してみようと思いましたが,デモの方はまだ対応していないようで駄目でした.

44213916001 0ef30bab4a.jpg

対応リストの中の「Doki Doki Literature Club!」は無料のようなのでこれで試してみます.

ページを開くとアイコン上はWindows/Macのみの対応ですが,「ゲームをプレイ」ボタンが有効になっています.そのまま通常の導入手順でダウンロードとインストールが始まり正常終了しました.

44213925501 18fd9a3b74.jpg

ライブラリに登録されました.見た目はネイティブのものと同じです.

44184862972 207d8776b3.jpg

そして普通に起動します.
起動中のプロセスを確認すると特にwineやprotonと名前の付いたプロセスは見当たらずSteamに組み込まれているように見えます.

追記)
「Doki Doki Literature Clug!」にはもともと`~/.steam/steam/steamapps/common/Doki\ Doki\ Literature\ Club/DDLC.sh`というshell scriptがあり,Steam Play を通さなくてもLinuxで動作するようです.
「FSteam:Fallout Shelter」で試すと,以下のようにそれらしいプロセス経由で動作しています.(うまく起動しないけど)

$ pstree -n 31976
bash─┬─bash───steam─┬─22*[{steam}]
     │              ├─steam───sh───steamwebhelper.───steamwebhelper─┬─21*[{steamwebhelper}]
     │              │                                               ├─steamwebhelper─┬─steamwebhelper───13*[{steamwebhelper}]
     │              │                                               │                └─steamwebhelper───12*[{steamwebhelper}]
     │              │                                               └─steamwebhelper───6*[{steamwebhelper}]
     │              └─SteamChildMonit───sh───python2.7───wineserver
     └─tee
$ ps aux| grep -i wine
matoken   1842  0.0  0.0   4240   940 pts/5    S+   15:25   0:00 grep -i wine
matoken   3005  0.2  0.0  55596 13052 ?        Ss   14:53   0:04 /home/matoken/.local/share/Steam/steamapps/common/Proton 3.7/dist/bin/wineserver
matoken   3012  0.0  0.2 2078348 37364 ?       Sl   14:53   0:00 C:\windows\system32\winedevice.exe
matoken   3028  0.3  0.2 2144476 39268 ?       Sl   14:53   0:06 C:\windows\system32\winedevice.exe
matoken   9450  0.0  0.2 1947276 35808 ?       Sl   14:30   0:00 C:\windows\system32\winedevice.exe
matoken   9464  0.3  0.2 2013404 37772 ?       Sl   14:30   0:10 C:\windows\system32\winedevice.exe
matoken  22254  0.0  0.2 2078348 38144 ?       Sl   14:40   0:00 C:\windows\system32\winedevice.exe
matoken  22270  0.3  0.2 2144476 39424 ?       Sl   14:40   0:08 C:\windows\system32\winedevice.exe
matoken  32709  0.0  0.1  45432 25808 ?        S    15:23   0:00 /home/matoken/.local/share/Steam/steamapps/common/Proton 3.7/dist/bin//wineserver -w
$ ps aux| grep -i proton
matoken   1916  0.0  0.0   4240   936 pts/5    S+   15:25   0:00 grep -i proton
matoken   3005  0.2  0.0  55596 13052 ?        Ss   14:53   0:04 /home/matoken/.local/share/Steam/steamapps/common/Proton 3.7/dist/bin/wineserver
matoken  32707  0.0  0.1  41048 24736 ?        S    15:23   0:00 /bin/sh -c '/home/matoken/.local/share/Steam/steamapps/common/Proton 3.7'/proton waitforexitandrun '/home/matoken/.local/share/Steam/steamapps/common/Fallout Shelter/FalloutShelter.exe'
matoken  32708  0.0  0.0  52044 14352 ?        S    15:23   0:00 python2.7 /home/matoken/.local/share/Steam/steamapps/common/Proton 3.7/proton waitforexitandrun /home/matoken/.local/share/Steam/steamapps/common/Fallout Shelter/FalloutShelter.exe
matoken  32709  0.0  0.1  45432 25808 ?        S    15:23   0:00 /home/matoken/.local/share/Steam/steamapps/common/Proton 3.7/dist/bin//wineserver -w

少し遊んだ感じでは特に違和感なく遊べています.(が,1時間ほどしか遊んでいないところでSSDが壊れてそれ以上は試せていません><)

43308551205 e4f9cf42a5.jpg

なお,「Doki Doki Literature Clug!」は英語版しかありませんが,有志による日本語化パッチが提供されているので日本語化して遊んでも良さそうです.

43496726104 221e9b9f27.jpg

追記)
以下の「Enable Steam Play for all titles」でWindows用のタイトルが全てProtonで起動できるようにできました.ただし実際に動作するかどうかはゲーム次第です.いくつか試してみましたが,Lutris経由のWine Steamで遊べるゲームでも動かなかったりしました.(Montaroとか)
20180826_07:08:32-9123

環境
20180826_14:08:02-28740

$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64

今回のSteamベータで対応していないものでWineで動作するゲームはLitrisでWine Steamを使うのもお手軽でおすすめです.

Raspberry Pi でHTML5版「艦これ」を試すも失敗

先日「艦これ」がHTML5になったと聞いて試してみました.確かにadobe Flashの導入されていないLinux端末でも問題なく動作します.

kankore html5

Linuxも言及されていますね.
ということはarmやなにやでも動作するはずってことでまずはRaspberry Pi 2 B で試してみました.結果から言うと失敗しました.

環境

試した環境はこんな感じです.

  • board : Raspberry Pi 2 B

  • OS : RASPBIAN STRETCH WITH DESKTOP 2018-06-27

  • SoC : BCM2837

  • CPU : ARMv7

  • RAM : 1GB

  • WebBrowser : Chromium 65.0.3325.181-0+rpt4

RASPBIAN STRETCH WITH DESKTOP 2018-06-27 を導入して,system を apt update && apt upgrade した状態です.あとは既定値のままで,ウェブブラウザは Chromium,操作はVNC経由で行いました.
解像度が大分上がっています.とりあえず F11 でフルスクリーン表示にして, Ctrl + – で画面を縮小してみました.
ログインしてスクリーンが黒く塗りつぶされるまで数分,「Weigh Anchor! Download Now…」の表示のプログレス画面ですごく時間がかかります.20分以上経ってからエラー画面(所謂猫った状態)になります.
3回試して毎回プログレスバーが8割ほどのところでコケます.
システムの状態を見ていると,黒い画面の頃からずっとCPUが100%で張り付いたままです.RAMには余裕があります.恐らくゲームデータをローカルにコピーして展開などの処理でCPUを使い切ってなかなか処理が終わらずタイ雨アウトしているのではないかと思います.
CPUがボトルネックのようなのでクロックをオーバークロックしてみましたが体感速度は変わらずやはりエラーとなります.2回試しても同じように失敗して駄目でした.

ということでRaspberry Pi 2 B で艦これは今のところ無理そうです.しばらく待って艦これ自体のチューニングが進んだり,CPUの強化されている Raspberry Pi 2 B v1.2(BCM2837)以降なら動くかもしれません.持っている人にはぜひ試して結果を教えてほしいです.

#ちなみに試すのに一回あたり30分ほどかかっているので動いたとしてもあまり現実的ではないかもしれません…….どうしてもやりたいなら母艦の画面を転送したほうが良さそう.

192.168.2.211 (raspberrypi) - VNC Viewer_045範囲を選択_048192.168.2.211 (raspberrypi) - VNC Viewer_046

SoC

cpu clock

RAM

Pi

BCM2836

4 x 900Mhz

1GB

2B

BCM2837

4 x 900MHz

1GB

2B v1.2

BCM2837

4 x 1.2GHz

1GB

3B

BCM2837B0

4 x 1.4GHz

1GB

3B+

GNU coreutils の dd に プログレスオプションがあった

dd の進捗は SIGUSR1 を投げると覚えていたのですが,man を眺めていると status=progress というオプションがあるのに気づきました.

manより
status=LEVEL
       The LEVEL of information to print to stderr; 'none' suppresses
       everything but error messages, 'noxfer' suppresses  the  final
       transfer  statistics,  'progress' shows periodic transfer sta‐
       tistics

2015-07-03 の GNU coreutils 8.24 で入ったようです.

dd accepts a new status=progress level to print data transfer statistics
on stderr approximately every second.

これまでも独自パッチでddにプログレスを出すようにするものなどはありましたがGNU ddに導入されていたんですね.気づきませんでした.

てことで試してみます.まずは従来の方法から.

dd開始
$ dd if=/dev/urandom of=/dev/null count=99999 &
[1] 19386
killコマンドで USER1 シグナルを投げる
$ kill -USR1 19522
2294+0 レコード入力
2293+0 レコード出力
2404384768 bytes (2.4 GB, 2.2 GiB) copied, 11.0258 s, 218 MB/s
killallコマンドでpidではなくプロセス名を指定
$ killall -USR1 dd
15648+1 レコード入力
15647+1 レコード出力
16407664896 bytes (16 GB, 15 GiB) copied, 76.1063 s, 216 MB/s

※pkillを使うと部分一致になるので意図しないプロセスにシグナルを送ってしまうことがあるので注意

$ pgrep dd
2
70
3937
$ ps 2 70 3937
  PID TTY      STAT   TIME COMMAND
    2 ?        S      0:00 [kthreadd]
   70 ?        I<     0:00 [ipv6_addrconf]
 3937 pts/9    R      0:13 dd if=/dev/urandom of=/dev/null bs=1M count=99999
watchコマンドで定期的に実行
$ watch killall -USR1 dd
98448+3 レコード入力
98447+3 レコード出力
103231407040 bytes (103 GB, 96 GiB) copied, 487.072 s, 212 MB/s
 :
ddコマンド実行時にpvコマンドを挟む
$ cat /dev/urandom | pv | dd of=/dev/null bs=1M count=99999
1.06GiB 0:00:06 [ 182MiB/s] [     <=>                                        ]
pvコマンドでファイル出力
$ pv /dev/urandom | dd of=/dev/null bs=1M count=99999
 502MiB 0:00:03 [ 170MiB/s] [  <=>                                           ]
ddの status=progress オプションを利用
$ dd if=/dev/urandom of=/dev/null bs=1M count=99999 status=progress
1910505472 bytes (1.9 GB, 1.8 GiB) copied, 9 s, 212 MB/s

流石に純正だけあっていい感じですね.問題はいざ使うときに思い出せるかという…….pvが覚えやすくて便利なんですよね.

そもそもdd使わずGNU ddrescue を使う?まあ大抵の用途ではそっちのほうが良いかもです.

試した環境
$ dd --version
dd (coreutils) 8.28
Copyright (C) 2017 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

作者 Paul Rubin、 David MacKenzie、および Stuart Kemp。
$ dpkg-query -W coreutils
coreutils       8.28-1
pv      1.6.6-1
$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64