2021年6月30日水曜日

Apple Watch Series 3(GPSモデル)- 42mmシルバーアルミニウムケースとホワイトスポーツバンド

 Apple Watch Series 3(GPSモデル)を買った。

 ここ30年弱——携帯電話を持つようになって腕時計などつけなくなっていたので、バンドがベタついてしかたがないけれど、実をいうと、目的はApple Watchよりもワイヤレス充電器だった。iPhoneのワイヤレス充電に使おうと。
 きてすぐに試してみたのだが、全然、iPhoneが充電モードにならない。
 あれ?

AirPodsやiPhone 8以降のiPhone、Apple Watchはワイヤレス充電が出来ますが、規格が異なります。Apple Watchは初代から最新のSeries 5まで独自のワイヤレス充電を採用しており、AirPodsやiPhone 8から採用されているQi規格の充電パッドでは充電することはできません。

    – Apple Watch充電器・充電スタンドおすすめ12選

 ググってみたらいきなりヒットした。
 買う前にちゃんと調べろよ、自分……。

2021年6月29日火曜日

BeelinkS1でmicroSDカードを(5)

 結局、microSDカードのスロットが空いてしまっている。
 予定ではそこからbootして、うひょひょひょひょっ、と喜色満面の予定だったのだが。
 ただこのスロットは埋めておきたい。
 いつもの貧乏性からだけでなく、何もいれていないと、FreeBSDの起動に時間がかかるからだ。なぜだか、知らないが——WindowsもUbuntuもだいじょうぶだったのに、bootのときに、このスロットを確認しにいくのである。何度もTimeoutしてもしつこく。
 なのでとりあえず、microSDカードをいれておきたい。
 ところが壊れたmicroSDカードも手元にないし、使えるものをただ、いれておくというのも忍びない。

 そうだ。
 mirrorにしよう。
 microSDカードを使おうと試行錯誤していたとき、USBメモリとmicroSDカードをstripeにしたことはあるのだけど、これはうまくいかなかった。bootの途中で、microSDカードを認識できないので、stripeに失敗するからだと思う。mirrorならうまくいくんじゃないか。

 そこでmirror用にmicroSDカードを購入した。
 boot用のmicroSDカードと同じ128Gのものである。mirrorは同じサイズにしなければ、いけないからだ。なんか、貧乏性でいろいろ、工夫しているのに、金が出ていくな。

 届いたmicroSDカードにFreeBSD12をinstall。
 インストールディスクからbootしたあと、zroot2をimportして

$ sudo zpool attach zroot2 da0p4 mmcsd0p4

 しばらくしてエラーがでた。
 smallなんとかかんとか。
 あれ?

$ gpart show da0
=>       40  250560432  da0  GPT  (119G)
         40     409600    1  efi  (200M)
     409640       1024    2  freebsd-boot  (512K)
     410664        984       - free -  (492K)
     411648    4194304    3  freebsd-swap  (2.0G)
    4605952  245952512    4  freebsd-zfs  (117G)
  250558464       2008       - free -  (1.0M)

$ gpart show mmcsd0
=>       40  249737136  mmcsd0  GPT  (119G)
         40     409600       1  efi  (200M)
     409640       1024       2  freebsd-boot  (512K)
     410664        984          - free -  (492K)
     411648    4194304       3  freebsd-swap  (2.0G)
    4605952  245129216       4  freebsd-zfs  (117G)
  249735168       2008          - free -  (1.0M)

 同じ128GのmicroSDカードなのにサイズがちがうじゃないか。
 しかも新しく購入した方が小さい。逆ならリサイズしてなんとか、なったのに。mmcsd0p4をいくら拡張してもda0p4のサイズにならない——頭を抱えてしまった。da0の方が破損したときに、mmcsd0のmicroSDカードからbootできるようにしたいので同じような構成したのだが。
 あきらめることも含めて検討した結果、swap領域を小さくしてmmcsd0p4をサイズ拡張した。

$ sudo gpart delete -i 4 mmcsd0
mmcsd0p4 deleted

$ sudo gpart delete -i 3 mmcsd0
mmcsd0p3 deleted

$ gpart show mmcsd0
=>       40  249737136  mmcsd0  GPT  (119G)
         40     409600       1  efi  (200M)
     409640       1024       2  freebsd-boot  (512K)
     410664  249326512          - free -  (119G)

$ sudo gpart add -a 4k -t freebsd-swap -s 1G mmcsd0
mmcsd0p3 added, but partition is not aligned on 4194304 bytes
$ gpart show mmcsd0
=>       40  249737136  mmcsd0  GPT  (119G)
         40     409600       1  efi  (200M)
     409640       1024       2  freebsd-boot  (512K)
     410664    2097152       3  freebsd-swap  (1.0G)
    2507816  247229360          - free -  (118G)

$ sudo gpart add -a 4k -t freebsd-zfs -s 117G mmcsd0
mmcsd0p4 added, but partition is not aligned on 4194304 bytes
$ gpart show mmcsd0
=>       40  249737136  mmcsd0  GPT  (119G)
         40     409600       1  efi  (200M)
     409640       1024       2  freebsd-boot  (512K)
     410664    2097152       3  freebsd-swap  (1.0G)
    2507816  245366784       4  freebsd-zfs  (117G)
  247874600    1862576          - free -  (909M)

$ sudo gpart resize -s 245952512 -i 4 mmcsd0
mmcsd0p4 resized
$ gpart show mmcsd0
=>       40  249737136  mmcsd0  GPT  (119G)
         40     409600       1  efi  (200M)
     409640       1024       2  freebsd-boot  (512K)
     410664    2097152       3  freebsd-swap  (1.0G)
    2507816  245952512       4  freebsd-zfs  (117G)
  248460328    1276848          - free -  (623M)

$ gpart show da0
=>       40  250560432  da0  GPT  (119G)
         40     409600    1  efi  (200M)
     409640       1024    2  freebsd-boot  (512K)
     410664        984       - free -  (492K)
     411648    4194304    3  freebsd-swap  (2.0G)
    4605952  245952512    4  freebsd-zfs  (117G)
  250558464       2008       - free -  (1.0M)

 これでmmcsd0p4とda0p4は同じサイズになったのでattach。

$ sudo zpool attach zroot2 da0p4 mmcsd0p4

Make sure to wait until resilver is done before rebooting.

If you boot from pool  'zroot2', you may need to update
boot code on newly attached disk  'mmcsd0p4'.

Assuming you use GPT partitioning and  'da0' is your new boot disk
you may use the following command:

        gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0

$ 
$ zpool status zroot2
  pool: zroot2
 state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
         continue to  function, possibly  in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver  in progress since Mon Jun 21 13:13:29 2021
        21.7G scanned at 208M/s, 1.19G issued at 11.4M/s, 21.7G total
        1.18G resilvered, 5.48% done, 0 days 00:30:45 to go
config:

        NAME          STATE     READ WRITE CKSUM
        zroot2        ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            da0p4     ONLINE       0     0     0
            mmcsd0p4  ONLINE       0     0     0

errors: No known data errors

 同期してしまうのにしばらくかかった。

2021年6月25日金曜日

BeelinkS1でmicroSDカードを(4)

 かなりはまった。
 最大の原因は作成したインストールメディアがFreeBSD13だったことだ。移行予定のHDのFreeBSDは12だったのである。安易にだいじょうぶだろう、と考えたのがまちがいだった。インストールメディアから作成したmicroSDのFreeBSDにHDの中身をいれると、bootしなくなるのである。
 ZFSのバージョンとか、色々、あるらしい 1
 お得意のddディスク丸ごとコピーもだめで、うまくいくこともあるのだが、HDを作成したときにすでにおかしくなっているところがあることに気づき、FreeBSD12のインストールディスクをつくりなおすことにした。

 以下の手順は記憶にたよって書いているのでまちがいがあるかもしれない。

・インストールメディアからmicroSDにFreeBSDをinstall。このとき、pool名をでデフォルトではなく、zroot2に。

 HDの中のFreeBSDのpool名がzrootになっているからである。

・インストールメディアからインストールメニューを立ち上げ、shellへ。

・zroot、zroot2をimport

zpool import -fN zroot

zpool import -fN zroot2

・zrootにsnapshotを作成。

zfs snapshot -r zroot@snap999

・HDの中身をZFSのsend/resvで、microSDへ流しこむ。

zfs send -pR zroot@snap999 | zfs recv -uvdF zroot2

>> 参考先

・microSDから起動を確認。

 ただし、/etc/fstabの中のswapのデバイス定義がHDになっているのでswapなしの状態になっている。

Footnotes:

1

12と13で作成したbootディスクはBIOS(EFI?)から見え方がちがっていたので、ずいぶんかわっていたのかもしれない。

2021年6月24日木曜日

Type-C

単純に、microSDカードを突っこんだUSBアダプタからbootすれば、いいだけじゃね?

 それなら、と考えたのはType-Cにしようか、ということだった。
 BeelinkS1にはType-Cの口がある。MacBookAirにもある。それだったらType-Cでしょ。

 というわけで、百均へ行ったのだけれど、見当たらない。普通のUSBの口のやつも。
 もう100円では作れないということなのだろうか。
 しかたないのでAmazonをたよった。
 物色しているうちに、ピンキリだということもわかってきた。Type-Cなのに転送速度がUSB2.0相当とか、ありえんだろ。そうすると、そこそこの値段のものになった。予算100円のつもりだったのに。

 ユーザのコメントにかなり熱くなるというのが、かなり不安材料だ。
 HDの過熱が嫌でやっていることなのに。

2021年6月23日水曜日

BeelinkS1でmicroSDカードを(3)

 microSDカードから直接、bootできないので色々、考えた。
 USBメモリからならboot可能なので、そちらでbootしてmicroSDカードのシステムに切り替えることはできないだろうか。あるいは最低でもuser領域をmicroSDカードに持つということはどうだろう。
 ところが試行錯誤していて気づいたのだが、どうもmicroSDカードの中を認識するタイミングがboot後でないとだめらしい。単純にはうまくいかない。
 ほとんど、あきらめていたのだけれど。
 よくよく考えたら。
 単純に、microSDカードを突っこんだUSBアダプタからbootすれば、いいだけじゃね?
 どうせUSBスロットはひとつ、消費されているわけなんだし。
 突っ伏してしまった。
 1週間近く、やっていたことは何だったんだ。

2021年6月22日火曜日

エアコン

 うちのエアコンには内部洗浄という設定があって動かしていると、自動で内部をきれいにしてくれているんだろうなぁ、と思っていたら。

内部清浄を設定していると、運転停止後、送風または暖房(乾燥)運転で、エアコン内部を乾かし、同時にプラズマクラスターイオンをエアコン内部に送り、カビの増殖を抑えます。(お買いあげ時は、運転停止後に自動で内部清浄が開始する設定になっています。)

エアコンの上手な使い方

 ということだった。
 いつもエアコンを停めると、風が吹き出していたのでなぜだろう、と思いつつ、停止させていた。
 しまった。まちがいだったのか。

 おかげで今や、エアコンを停めると、吹き出してくるのはカビ臭い風。
 くしゃみはでるわ、鼻水はでるわ、喉は痛くなるわ、頭痛はするわ。
 何をやっておるのか。

2021年6月18日金曜日

zpool import

 すっかり忘れていた。
 BeelinkS1でmicroSDカードを使おうと、HDからデータを移そうとして。
 ZFSのことである。
 コマンドを忘れたとか、というレベルではなく、概念そのものをすっかり失念していて、おかげで 以前、いじったときの記事を読んでも意味がさっぱりわからない。自分で書いたのに。
 そもそもzpool importをデータのimportだと勘違いしていた。

zpool export XXXXX | zpool import YYYYY

 とか、やって動かないなぁ、と。
 アホだ。
 zpool importはデータのimportではなく、システムに指定したpoolを認識させるためのものだった。それがわかってちょこちょこやっていたのだけど。
 単純にzpool importすると、mountされてしまう。
 どういうタイミングだったのか、よくわからないのだが、何度か、ルートをすっ飛ばして/binが消えてしまって身動きできなくなってしまった。
 zpool importしないと、poolにたいする操作ができないし。
 mountしないでimportする方法はないものか。グーグル先生にたずねてもわからず、ないものか、とあきらめかけたところ、真面目にmanマニュアルを読んでいったら見つけた。

zpool import -N XXXXXX

 「-N」ですか。
 これですこしは自由になれたかな。

2021年6月17日木曜日

BeelinkS1でmicroSDカードを(2)

 BeelinkS1のmicroSDカードの抜き挿しがままならない。
 それなら挿しっぱなしにするしかないか——というわけで、microSDカードにFreeBSDをinstallしてそこからbootしようと目論んだ。HDからFreeBSDを立ち上げると、過熱がひどいのだ。HDが排熱を邪魔しているからだろう。今までにも二台、 SSDをだめにしている
 ところがbootしなかった。
 BIOSのメニューを見ても、どうもmicroSDカードを認識していないようなのだ。
 いろいろやってみたが、解決せず。これは根本的にできないのではないか。そんな気がする。
 Ubuntuをいれていたときの残骸のGRUBから確認してみてもmicroSDカードの中のgpartを見ることができなかった。HDの方はちゃんと見えるのに。

 これはあれか?
 HDからFreeBSDを立ち上げてmicroSDカードを拡張ディスクとして使うという流れか?
 でも、それだと、過熱問題を解決できないんだよなぁ。

2021年6月16日水曜日

BeelinkS1でmicroSDカードを

 電源ケーブルの整理していたら唐突に BeelinkS1を分解していた。

どういうわけか、うちのBeelinkS1はmicroSDカードが挿しこめないのだった。なんと不良品だったのか。今さらだが。

 という状況だったのだけど、 ということがあり、128GのmicroSDカードが余っている。
 分解してみて、スロットが思った以上に深いということがわかった。
 抜き出せなくなるのではないか、という不安を抑えてさらに押しこむ必要があったのだった。

 で、組み立てて試してみると、画鋲で押しこまないと、きちんと挿しこめなかった、という……。

2021年6月15日火曜日

pathname

 Windows環境ではなんだかんだとunzipが面倒臭い。
 Emacsから外部アプリケーションを起動してコマンドひとつで、unzipできるようにしているのだけど、外部アプリケーションは非同期で、動いているので、unzipしたあとの作業が自動化しづらい。できなくはないけれど、Emacsから同期してunzipができれば、それが一番だ。
 そこで slime-evalを使ってABCL経由でunzipすることにした。
 ABCLはjavaで作られていることもあって内蔵のunzipがあるのだ。

 で、やってみたら落ちた。
 slime-evalがエラーになっていた。
 ——なんで?
 調べてみると、どうやらABCLのunzipは展開したファイルのlistを返却してくれていてそれが原因らしい。というのもlistの中身はpathnameで「#P"/XXXX/XXX"」みたいになっているのだが、これをelispが解釈できなかった。
 目が点だ。
 pathnameって中身はstringじゃなかったの?

CL-USER> (stringp #P"/tmp/a")
NIL
CL-USER> (pathnamep #P"/tmp/a")
T
CL-USER> 

 ちがう。なんてこった。
 stringに変換する関数を探す。一番、時間がかかった。見つけた。
 ——namestring

CL-USER> (namestring #P"/tmp/a")
"/tmp/a"
CL-USER> 

 これさえあれば、listの中身を一括変換するのはmapcarで一発である。

2021年6月8日火曜日

PythonとLispのリストのことなど

 Windows版のEmacsを見ていたらPythonが同梱されていた。
 オライリーのPython本がでたとき、手をつけてみようと思ったのだけど、なんだかんだとやらなかったので、ちょっと心理的な敷居は高いのだけれど、LispハッカーのPeter Norvigも最近はPythonを使っているようだし。

 たとえば、PythonにもListがあるのだけれど。

>>>  wrk =[1,2,3,4]
 wrk =[1,2,3,4]
>>> wrk
wrk
[1, 2, 3, 4]
>>> 

 Listの途中の値を変更するにはこうするらしい。

>>>  wrk[2]=99
 wrk[2]=99
>>> wrk
wrk
[1, 2, 99, 4]
>>> 

 そういえば、lispには直接、Listを変更する構文はないなぁ。そのかわりにsetfというものがある。

( setq wrk '(1 2 3 4))
(1 2 3 4)

wrk
(1 2 3 4)

( setf (elt wrk 2) 99)
99

wrk
(1 2 99 4)

 どちらが読み易いか、というと、Pythonの方だろうなぁ。setfは変態すぎる。

(setq wrk  "ABCDEF")
 "ABCDEF"

wrk
 "ABCDEF"

(setf (substring wrk 2 3)  "Z")
 "ABZDEF"

wrk
 "ABZDEF"

 こんなことまでできるし。
 まぁ、この程度ならPythonでも文字列のあつかいがimmutableでなければ、できるんだろうけど。
 Pythonそのものがサポートしないといけない。
 ところが、setfってたしか、マクロだからLispが構文的にサポートしているわけじゃないんだよなぁ。

2021年6月4日金曜日

ワンダヴィジョン

 かなりの当りだった。
 マーベルのテレビドラマ。
 いやぁ、これを観る前にジョー・ルッソ/アンソニー・ルッソ監督「アベンジャーズ/エンドゲーム」を観ておいてよかった。
 おかしなことにブライアン・シンガー監督「X-MEN:フューチャー&パスト」を観ておいてもよかった、という。

2021年6月2日水曜日

ファイアボール ユーモラス

 「ファイアボール ユーモラス」がDisnney+で全話、観れるという。
 登録したら3話しかなかった。よもや! それで全話だった。

2021年6月1日火曜日

ホームボタン

 最近のiPhoneにはホームボタンがない。
 実はそれもなかなか、iPhoneを買い替えなかった理由のひとつだった。
 どうもソフトウェアスイッチを信用してなくて、ハード的なスイッチがないのは何かあったときににっちもさっちもいかなくなるような気がしてしかったなかったのだ。

 ところが、いざホームボタンのないiPhoneになれてしまうと、逆にホームボタンのあることがうざくなってしまった。というのも画面がスリープしている状態から復帰するとき、今のiPhoneだと、画面に触れるだけでいいのだが、 ホームボタンのあるiPad Proだと、画面にタッチしたあと、そうだった、とホームボタンを押しなおしている。
 人間、楽なことになれるともう後戻りできないのだった。