1月 142023
 

このブログでは何回か VRF について書きました。 FreeBSD の VRFubuntu の VRF など。 FreeBSD のポリシールーティングのネタも書いたこともありました。

そのとき CentOS7 はカーネルがまだ VRF に対応していなくて、CentOS8 まで VRF は実質利用できない状態だったのだけど、今の時代、AlmaLinux8 を利用すればカーネル的に VRF が利用できるので、試してみました。

ubuntu のネットワーク設定より Red Hat Linux 系のネットワーク設定のほうが楽と、いうか、個人的にも直感的に設定できるような状態ですしね(^^;;。今回は由緒正しく /etc/sysconfig/network-scripts/ 配下のファイルを用意して VRF の設定をしてみたいと思います。

 
と、いうことでまずは構成図などを。



 
基本的に FreeBSD の VRF も同じ構成で組んでいます。セグメントは全部で 3 個。

  • Service-Segment: 外部からのアクセス用
  • Access-Segment: MySQL とか SNMP とかバックヤード系
  • mgmt: ssh でサーバにログインする用

 
今回のルーティングテーブルは合計二つ。Service-Segment と Access-Segment で一個のルーティングテーブル。 mgmt が VRF で設定するもう一個のルーティングテーブルになります。

FreeBSD で VRF するときに痛感したのですが、自分から出すパケットは default のルーティングテーブルからしか出ていきません。VRF で追加したルーティングテーブルの mgmt セグメントの 192.168.1.0/24 に ssh しようとしても default のルーティングテーブルから出ていきます。

例えば 192.168.52.201 で動作している MySQL にアクセスしようとした場合、default のルーティングテーブルから出ていくのですが Access-Segment で利用しているセグメントがローカルネットワークになっているのでそこから出ていきます。
MySQL サーバが 172.16.52.201 にあった場合、 default gateway の設定のある Service-Segment から出ていきますが、 MySQL のアクセスは Access-Segment から出ていきたいので route add -net 172.17.52.0/24 gw 192.168.52.1 とか Access-Segment にルーティング設定をしてあげる必要があります。

 
と、いうことで VRF を設定して本当に幸せになるのかよくわかりませんが、とりあえず設定して行ってみましょう。

上記の構成図に合わせて /etc/sysconfig/network-scripts/ にファイルを用意していきます。

ifcfg-eth0
ifcfg-eth1
ifcfg-eth2
ifcfg-vrf.eth2
route-vrf.eth2
route6-vrf.eth2

実際に中を見てみましょう。

Service-Segment: ifcfg-eth0

TYPE=Ethernet
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6ADDR=2001:470:fe36:face::217:1
IPV6_DEFAULTGW=2001:470:fe36:face::1
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPV6_PRIVACY=no
MACADDR=permanent
IPADDR=192.168.22.217
PREFIX=24
GATEWAY=192.168.22.1

 
Service-Segmet に接続する eth0 には default gateway を設定しています。

 
Access-Segment: ifcfg-eth1

TYPE=Ethernet
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6ADDR=2001:470:fe36:cafe::217:1
#IPV6_DEFAULTGW=2001:470:fe36:cafe::1
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPV6_PRIVACY=no
MACADDR=permanent
IPADDR=192.168.52.217
PREFIX=24
#GATEWAY=192.168.52.1

 
こちらは内部のアクセス用ネットワークなので、default gateway は設定していません。実際には route add -net でネットワークごとにルーティング情報を追加するんだろうなぁ。と、いう気配です。

 
mgmt: ifcfg-eth2

TYPE=Ethernet
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6ADDR=2405:6580:aa40::217:1
IPV6_DEFAULTGW=2405:6580:aa40::1
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth2
DEVICE=eth2
ONBOOT=yes
IPV6_PRIVACY=no
MACADDR=permanent
IPADDR=192.168.1.217
PREFIX=24
GATEWAY=192.168.1.1

 
マネージメント用ネットワークで外部から ssh でログインするときに利用します。これが VRF を利用するインターフェースなので default gateway が設定してあります。でもって次のファイルも必要です。

 
mgmt-VRF: ifcfg-vrf.eth2

TYPE=Ethernet
DEFROUTE=yes
BOOTPROTO=none
IPADDR=192.168.1.217
PREFIX=24
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6ADDR=2405:6580:aa40::217:1
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=vrf.eth2
DEVICE=eth2
ONBOOT=yes
VRF=mgmt0

 
NAME= と VRF= で VRF で動作の設定です。ifconfig -a したときに mgmt0 というインターフェースが生えてきます。

 
mgmt-route-IPv4: route-vrf.eth2

ADDRESS=0.0.0.0
NETMASK=0.0.0.0
GATEWAY0=192.168.1.1

 
VRF 側の IPv4 のルーティングテーブルの設定です。

mgmt-route-IPv6: route6-vrf.eth2

::/0 via 2405:6580:aa40::1

 
こちらが VRF 側の IPv6 のルーティングの設定。

 
で、これで準備ができたので一応再起動してみます。がっ!!

これがまた正しく動作しないのですよなぁ・・。 orz。

 
と、いうことで、追加で /etc/rc.local に設定を記載して、ちゃんど動作するようにコマンドを羅列します。 orz

ip link add dev mgmt0 type vrf table 10
ip link set dev mgmt0 up
ip link set dev eth2 master mgmt0
ip addr add dev eth2 192.168.1.217/24
ip link set dev eth2 up
ip route add default via 192.168.1.1 table 10
ip route add ::/0 via 2405:6580:aa40::1 table 10

route delete default
route delete default
route add default gw 192.168.22.1

ip route del ::/0 via 2405:6580:aa40::1
ip route del ::/0 via 2001:470:fe36:face::1
route -6 add default gw 2001:470:fe36:face::1

sysctl -w net.ipv4.tcp_l3mdev_accept=1
sysctl -w net.ipv4.udp_l3mdev_accept=1

 
最後の sysctl コマンドは /etc/sysctl.conf に記載しても良いですね。
問題はその上です。

上から順に、

  • インターフェース mgmt0 を vrf として作成し table 10 とします
  • インターフェース eth2 と mgmt0 をくっつけます
  • table 10 (VRF 側) に default route を設定します
  • default のルーティングテーブルが壊れているようなので default gateway を二回削除してからつけ直します (ほんとうにこれしないとダメだった・・orz)

 
ルーティングの情報は IPv4 と IPv6 両方で実施します。これで大丈夫みたい。

確認方法は以下です。

# ip route show
default via 192.168.22.1 dev eth0 
192.168.1.1 dev eth2 proto static scope link metric 102 
192.168.22.0/24 dev eth0 proto kernel scope link src 192.168.22.217 
192.168.52.0/24 dev eth1 proto kernel scope link src 192.168.52.217 

# ip -6 route show
::1 dev lo proto kernel metric 256 pref medium
2405:6580:aa40::/64 dev eth2 proto kernel metric 102 pref medium
2001:470:fe36:face::/64 dev eth0 proto kernel metric 100 pref medium
2001:470:fe36:cafe::/64 dev eth1 proto kernel metric 101 pref medium

# ip route show table 10
default via 192.168.1.1 dev eth2 
broadcast 192.168.1.0 dev eth2 proto kernel scope link src 192.168.1.217 
local 192.168.1.217 dev eth2 proto kernel scope host src 192.168.1.217 
broadcast 192.168.1.255 dev eth2 proto kernel scope link src 192.168.1.217 

# ip -6 route show table 10
local 2405:6580:aa40::217:1 dev eth2 proto kernel metric 0 pref medium
local fe80::751c:3cc8:a2c0:2fcb dev eth2 proto kernel metric 0 pref medium
multicast ff00::/8 dev eth2 proto kernel metric 256 pref medium
default via 2405:6580:aa40::1 dev eth2 metric 1024 pref medium

# ip -d link show type vrf
6: mgmt0:  mtu 65575 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 12:c4:f9:dc:1f:bf brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 1280 maxmtu 65575 
    vrf table 10 addrgenmode none numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 

 
なんか良さげな感じがしています。

192.168.22.1 から eth2 のアドレスに対してアクセスした場合、戻りパケットはちゃんと eth2 から出ていきます。 19.268.1.50 から eth0 のアドレスに対してアクセスした場合、ちゃんと eth0 から戻っていきます。ある意味 VRF が機能している。と、いう感じです。やりたかったことはこれですね。

 
ただ、自分から出ていくパケットについてが問題です。default のルーティングテーブルから出ていくのが基本で、別のルーティングテーブルを利用したい場合は ping -I eth2 192.168.1.40 みたいにインターフェースを指定する必要があります。明示的にコマンドを打つなら良いですが、例えば php から MySQL にアクセスするために VRF 側のルーティングテーブルを利用して外に出ていきたい。などというのはほぼ不可能です。

使い方が非常に限られる VRF ですが、機能的には一応、動作する。と、いうことですなぁ。

 
さてと。今回構築したこの AlmaLinux release 8.7 の環境ですが、もうしばらく利用したいと思います。次のエントリは今回作成した環境を利用します。が、直接的・動作的には全く関係ないですが、好ご期待;-)。

12月 312022
 

多分今年最後のエントリーです。今年一年ありがとうございました。

そもそも、ちょっと前のエントリで「キーボード色々購入。」と、いうのを書いていますな。それに追加で、キーボードを更に購入してしまっている自分がいるので、以前のエントリの『その後』を書いてみたいと思います。

と、いうことでまずはこんな感じ。

ふむー。ここにあるのは全部赤軸。以前は HHKB の USB モデルを使っていたのだけど、もう発売が停止になった新製品はカナ刻印なしなモノになったので、どうしようか悩んでいた。

macOS で Wiondows キーボードを。」のエントリで書いたエレコムのキーボードも良かったのだけど、赤軸使い始めたらどうももなじまない。困ったのぉ・・。みたいな感じ。

写真は上から順に、(安いものばかりなんだけど・・)一応赤軸のやつ。

で、今回は真ん中のやつを購入。これはドスパラの “問屋系” のキーボードで、製品名は「上海問屋 日本語 73 キー配列コンパクトメカニカルキーボード (TTC静音赤軸Ver.) DN-916082」ですな。静音なちょっとランクが高いのを購入してみました。確かに良い感じ。

矢印キー付いていて、GAMDIAS の HERMES S1R よりもちょっと小型で、机の上は広々利用可能です。けど、これ、カナ刻印ないんですな。その点が不安だったのですが、えいやっ!!と、購入してみました。

一番下のは以前のエントリで書いた 60% キーボードの「WENRUI メカニカルキーボード 日本語配列 キーボード」ですな。ここに、今回は新たに USB 無線接続のテンキーを追加してみました。
要は『矢印キーさえなんとかできれば使えるんじゃね?』と、いうことで格安で売っていたテンキーを矢印キーとして使えるようにしてみました。

 
以前のエントリで書いた通り、FreeBSD では ~/.xmodmaprc で、 macOS の場合は Karabiner-Elements で矢印キーを設定できたのですが、WindowsOS の場合は Microsoft PowerToys では他の OS と同様の設定が出来なかったので、一番下の組み合わせはお蔵入りになったのであります。 orz

それにしても、赤軸で無線でキー入力を飛ばせるキーボードってあんまり多くなくて、結構、継続的に使ってみたいキーボードだったのだけど、矢印キーが使えないのが本当にザンネンです・・。

 
と、いうことで、今は問屋のキーボードをメインで利用しております。カナ刻印なしなので、どうなるのか非常に心配だったのだけど・・。

ふむー。そもそも日本語かな入力はもう 30 年近く(超え? あ。間違い。越え?)て、打ち続けているので、これがまぁ・・。俗に言う『ブラインドダッチ』というのでしょうな。カナ刻印のないキーボードでも日本語がスラスラス打てているのが、自分でもチョー驚きというか、ある意味 “当然っ!!” というか。そんな感じなのでありました。

「キーボードは刻印にとらわれる必用はない。」と思えるようになると対象となる製品はドドドと開けてきますなぁ。ふっふっふっ。

 
と、いうことで、今年最後のエントリーは自画自賛で終わりを迎えるような気がしないでもないですが、今年は記事が前年より多く書けたような気がします。

最近は本当にもう、モチベーションが下がっている状態ですが、読んで頂きありがとうございました。来年もまたひとつ宜しくお願いします。

11月 102022
 

僕が持っている色々な PC は WindowsOS と FreeBSD でマルチブートしています。デスクトップ PC の場合は M2.SSD の他に SATA 2.5 インチ SSD と、更に USB HDD を接続して、全てのストレージは NTFS と UFS (ZFS ではない;-) に分割して、どちらの OS でも高速アクセスと、ビッグデータ蓄積領域を確保している状態です。

普段は FreeBSD を利用しているのだけど、たまに Windows11 を起動してアプリを利用したり、蓄積していたデータをファイルサーバにアップして、再度 FreeBSD を起動してファイルサーバから取ってくる。とかしていましたが、今後はそーいう動作は必要なくなります。

FreeBSD 13.1-RELEASE (正確には 13.0-R 辺りからかな?) では NTFS 領域がマウントできて、かつ FreeBSD から rw アクセスが可能となりました。 sysctl で vfs.usermount=1 などとすると、一般ユーザ権限でマウントして、かつ、設定によっては自動的にマウントできたりします。

そして KDE5 などを使っていると dolphin (KDE5 のファイルマネージャ) から簡単にアクセスできるようになります。

設定方法について、順番に見ていきましょう。

 
1. ports からインストール
まずは ports から sysutils/fusefs-ntfs をインストールします。そして /boot/loader.conf に以下の行を書きます。

fusefs_load=”YES”

 
これで完了です。

 
2. 実際にマウント
僕のデスクトップ PC の場合、 FreeBSD の起動時に以下の SSD と HDD が認識されています。

$ dmesg | grep nvd
nvd0:  NVMe namespace
nvd0: 488386MB (1000215216 512 byte sectors)
Trying to mount root from ufs:/dev/nvd0p5 [rw]...
$
$ dmesg | grep da0
ada0 at ahcich1 bus 0 scbus1 target 0 lun 0
ada0:  ACS-4 ATA SATA 3.x device
ada0: Serial Number S5RRNF1R566155H
ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes)
ada0: Command Queueing enabled
ada0: 953869MB (1953525168 512 byte sectors)
da0 at umass-sim0 bus 0 scbus6 target 0 lun 0
da0:  Fixed Direct Access SPC-3 SCSI device
da0: Serial Number DCC77FFFFFFF
da0: 40.000MB/s transfers
da0: 3815447MB (7814037168 512 byte sectors)
da0: quirks=0x2
$
$ gpart show /dev/nvd0
=>        34  1000215149  nvd0  GPT  (477G)
          34        2014        - free -  (1.0M)
        2048      532480     1  efi  (260M)
      534528       32768     2  ms-reserved  (16M)
      567296   629467136     3  ms-basic-data  (300G)
   630034432    20971520     5  freebsd-ufs  (10G)
   651005952   167772160     6  freebsd-ufs  (80G)
   818778112   125829120     7  freebsd-ufs  (60G)
   944607232    41943040     8  freebsd-ufs  (20G)
   986550272    12124160     9  freebsd-swap  (5.8G)
   998674432     1529856     4  ms-recovery  (747M)
  1000204288       10895        - free -  (5.3M)
$
$ gpart show /dev/ada0
=>        34  1953525101  ada0  GPT  (932G)
          34       32734     1  ms-reserved  (16M)
       32768   819200000     2  ms-basic-data  (391G)
   819232768  1134292367     3  freebsd-ufs  (541G)
$
$ gpart show /dev/da0
=>        34  7814037101  da0  GPT  (3.6T)
          34       32734    1  ms-reserved  (16M)
       32768  4096000000    2  ms-basic-data  (1.9T)
  4096032768  3718004360    3  freebsd-ufs  (1.7T)
  7814037128           7       - free -  (3.5K)

 
nvd0 が M2.SSD で / パーティション他がある、メインの SSD です。
ada0 は SATA SSD で da0 は USB HDD です。全て WindowsOS と FreeBSD で半分ずつ (NTFS と UFS で半分ずつ) 利用しています。

 

実際に NTFS をマウントしてみるには以下のコマンドを利用します。

# ntfs-3g -o rw /dev/ada0p2 /mnt/
#  ls -l /mnt/
total 0
drwxrwxrwx  1 root  wheel  0 Nov 18  2021 $RECYCLE.BIN/
drwxrwxrwx  1 root  wheel  0 Nov 24  2021 Hyper-V/
drwxrwxrwx  1 root  wheel  0 Apr  3  2022 Data/
drwxrwxrwx  1 root  wheel  0 Nov 23  2021 Recovery/
drwxrwxrwx  1 root  wheel  0 Nov 18  2021 System Volume Information/
#
# umount /mnt

 
ports から sysutils/fusefs-ntfs をインストールすると ntfs-3g というコマンドがインストールされ、そのオプションに -o rw を指定しているので FreeBSD から書き込みもできるようになります。

これで NTFS の中のデータを取り出すために WindowsOS を起動することがなくなりました;-)。

 
3. automount しちゃうよ
KDE5 を利用している場合、 sddm からログインすると、ログインした段階で色々なファイルシステムを一般ユーザ権限でマウントしてくれる機能があります。

一般ユーザのアカウント takachan でログインすると、自動マウントさせたい場合には上にも書いた通り /etc/sysctl.conf に以下の設定をします。

vfs.usermount=1

 
この他に「KDE システム設定」でちょっと設定します。

「KDE システム設定」を起動して「起動と終了」→「Background Services」をチョイスすると、その中に [Removable Device Automounter] という項目があるのでこれにチェックを入れて更に再生ボタンを押してステータスを『実行中』にします。

次に同じく「KDE システム設定」の「リムーバブルストレージ」→「Removable Devices」をチョイスして、一番下にある [Automatically mount removable media that have never been mounted before] にチェックを入れて [適用]ボタンを押します。

これで、一旦ログアウトして再度ログインするか、service sddm restart してからログインしてみます。

と、いうか、sddm を再起動したあと、リモートから ssh でログインして df -k とかたたいて確認して、そのあとで sddm から一般ユーザでログインするとログイン後に様々なファイルシステムがマウントできることが確認できます。

僕のデスクトップ PC の場合はこんな感じになります。

$ df -k
Filesystem    1024-blocks      Used      Avail Capacity  Mounted on
*** 一部略 ***
/dev/ada0p3     549341012 187462520  317931212    37%    /opt
*** 一部略 ***
/dev/fuse       409599996  44718652  364881344    11%    /media/Samsung_SSD_870_QVO_1TB_S5RRNF1R566155H_p2
/dev/fuse      2047999996 534627440 1513372556    26%    /media/WDC_WD40_EZRZ-00GXCB0_DCC77FFFFFFF_p2
/dev/da0p3     1800630836 892226780  764353592    54%    /media/WDC_WD40_EZRZ-00GXCB0_DCC77FFFFFFF_p3
/dev/fuse       314733564  69794920  244938644    22%    /media/WDC_PC_SN730_SDBPNTY-512G-1006_213240808600_p3
/dev/fuse          764924    604264     160660    79%    /media/WDC_PC_SN730_SDBPNTY-512G-1006_213240808600_p4

 
/media/ ディレクトリのは以下にデバイス名付きで自動的に、一般ユーザ権限でマウントされます。デバイス名の後ろは p2,p3 とありますがパーティション名ですね。
Windows11 の C:\ や リカバリ領域なども自動マウントします。あと、UFS なファイルシステムも自動マウントしてしまいます。

Filesystem が /dev/fuse の場合は NTFS か FAT で /dev/da0p3 と表示されている場合は UFS ですね。 /media/Samsung_SSD_870_QVO_1TB_S5RRNF1R566155H_p3 は UFS ですが、これは /dev/ada0p3 で既に /opt にマウントしているので自動マウントされません。

 
KDE5 を利用した場合は opendesktop.org 由来の UDisks2 が利用されます。 FreeBSD 的かつ ports 的には sysutils/bsdisks が動作して plasmashell から dbus を経由して自動マウントしてくれるようです。
NTFS ファイルシステムを自動マウントしたくない場合は kldload fusefs.ko をやめれば良いです(あとで別件で説明します)。 UFS はもう完全に自動マウントしてしまうので止められない。自動マウント自体を停止したい場合は「KDE システム設定」の [Removable Device Automounter] を停止するしか手はないです。

 
KDE5 を利用している場合には KDE5 側で自動マウントしてくれますが、KDE5 を利用していな場合、 sysutils/dsbmd をイントールして /etc/rc.conf に dsbmd_enable=YES を書く必要があるかもしれません。

詳細については以下の URL を参照してください。

https://github.com/mrclksr/DSBMD

上記の dsbmd は ports のコンパイル時の make onfig で様々なファイルシステムを検知、自動マウントしてくれるようです。裏を返すとそれだけ色々な fusefs をインストールする。と、いうことになると思いますが。 ext4 とか HFS+ とかすげーな。みたいな・・。

一般ユーザ権限で色々なファイルシステムを自動マウント。遊んでみてください;-)。

 
4. 注意制限事項
注意点は二つ。

  • Bitlocker で保護されている NTFS はマウントできない
  • USB HDD の場合、スピンドルが止まっている場合がある

 
順番に見ていきましょうか。

Lenovo の ThunkPad X13 は Windows11 と FreeBSD のマルチブートですが、 Windows11 の NTFS は Bitlocker で保護されているので ntfs-3g ではマウントできません。以下のようになります。

# ntfs-3g -o rw /dev/nvd0p3 /mnt/
NTFS signature is missing.
Failed to mount '/dev/nvd0p3': 無効な引数です
The device '/dev/nvd0p3' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

 
上記のようなエラーが出た場合は WindowsOS 側で「コンピュータの管理」→「ディスクの管理」を開いて当該パーティションが『Bitlocker で保護されてます。』と、いう表示があるか確認してみましょう。
この場合 kldload fusefs.ko していても意味ないです。リカバリ領域が見えても意味ないし・・。

 
次の USB HDD の場合ですが、SSD と違い外付け USB HDD の場合、ケースの機能によっては HDD の回転を停止するものがあります。自動マウントしている状態で HDD のスピンドルが停止していた場合、 cd /media/USB-HDD/ とか ls /media/USB-HDD/ すると、そこから HDD のスピンドルが回り始めます。この場合、ほぼほぼ CAM status: SCSI Status Error が出ます。そして、マウントしている状態だけど ls しても表示してくれない・・。 orz

外付け HDD の場合は cd とか ls でアクセスする前に以下のコマンドを打つ必要があります。

$ sudo camcontrol start /dev/da0

 
上記コマンドを打った段階で停止していた HDD (/dev/da0) のスピンドルが回り始めます。そのあとで cd とか ls でアクセスするようにしましょう。

 
以上、FreeBSD で NTFS に対するアクセスと、ファイルシステムの一般ユーザ権限での自動マウントについて書いてみました。

マルチブートしている PC の場合、もう一方の OS の中へアクセスしたい。と、いうことは多々あるのですが、今回は FreeBSD 側から WindowsOS の NTFS に対して簡単にアクセスする方法を書いてみました。

皆さんの環境でも是非、導入してみてください;-)。自動マウントはらくちんですよ。

10月 242022
 

その昔購入した Lenovo V525 は Windows10 から Windows11 にアップデートして、 2022/10 の Windows Update を実行したら、画面がデスプレィに表示してくれなくなった・・。

回復 USB から青いメンテナンス画面を出して以前のバージョンに戻したり、適用した Windows Update を消したりして、なんとか復活したけど、この PC 、一番安いの購入したので CPU が AMD A6-9500 で、メモリ 4GB を 8GB にパワーアップして利用していたけど、最近は遅すぎてお話にならない。まぁ、最近は Ryzen7 の 8Core / 16 スレッドな PC を利用しているので、遅さにうんざり。って、感じでしょうか。

 
新しい PC を探していたのだけど、手頃で小型な PC が良い。と、いうことで、そーなると、AMD の Ryzen 搭載 PC はちと高め・・。
Intel の第11世代プロセッサである Intel Celeron N5095 を搭載している PC であれば、アーキテクチャが ATOM とはいえ、そこそこ速いであろうということで、Beelink MINI S を購入してみました。

メモリは 8GB 、 SSD は 128GB です。ただ、 M2.SSD ではなく SATA に接続されたモノなので、NVNE よりは遅いのと、買い換えるとしたらちょっと高価になるかな・・。と、いう状態。

amazon で購入しましたが 24,800yen のところクーポン 3,000yen 分がついていたので 21,800yen という、非常に格安な部類の PC が手に入りました;-)。

 
ただ、以前 Beelink SER4 を購入したとき、OS が怪しすぎたので返品しました。今回は継続して利用してみようかと・・。

ただ、やっぱり、不要なドライバがインストールされていたりするので、 Microsoft から Windows11 の ISO イメージダウンロードして、プレインストールの OS はサクっと、削除しました。

 
プレインストールされた OS は一応回復 USB を作成し、 c:\ 直下にあるドライバ類をバックアップしました。

Windows11 クリーンインストール後は Intel Serial IO I2C Host Controller が 7 個くらいあり、これらは認識しなかったので、バックアップしたドライバが入っていたディレクトリからインストールしました。
必要なドライバは全て入っているので、デバイスマネージャーで確認すると ! マークは一個もない状態になりました。

最近は AMD の PC ばかりが手元にあるので Intel プラットームの PC の状況はいまいち把握できていません。この Serial IO は FreeBSD でも根こそぎ認識していません。 pciconf -lv はほぼほぼ none です。

 
今回の PC 購入時に Windows のライセンスについてちょっと調べたのですが、「MAK ライセンス」というのがあるらしいですね。「マルチプルアクティベーションキー」の略だとか。これをメーカが利用すると、出荷する PC はドドドとライセンスを提供できるかな?

 
と、いうことで届いた MINI S はこんな感じ。 iPhone8 との比較ですが、随分と小さいです。これだと、カバンに入れて持ち運べそうです。例えばデータセンタに行けばディスプレーとキーボード・マウスがあるので NotePC を持ち運ぶ必要はないかもですね。

中身はこんな感じです。

実は U95 の写真をウェブで見ていて、メモリスロットが 2 つあると思い、別途 8GB のメモリを購入してしまいました。が、実際に開けてみるとメモリスロットは一個しかあふりません。 Beelink MINI S はメモリスロットは一個です。なので、メモリを増やす場合は 16GB の SO-DIMM を一枚購入する必要があります。 メモリの形式は SO-DIMM DDR4 2400MHz 1.2V です。

SSD は上にもかいた通り M2.SATA SSD です。増設は 2.5 インチ SATA SSD が増設できます。僕は FreeBSD をインストールするために SATA SSD 480GB (余り物) を増設しました。

上の写真だとアップですね。下のほうに M2.SATA SSD 上が、メモリモジュールを外したメモリスロット。一個しか無いです。

無線 /Bt チップは Intel Dual Band Wireless-AC 3165 を利用しているようですが、中を開けてみると M2.SATA SSD の右側にハンダでオンボードに固定のようです。ずいぶんとちっこいチップが写真の右側に見えると思います。

しかし、Dual Band Wireless-AC 3165 は速度出ないですね。 802.11ac で接続して通信確認しましたが 100Mbps 程度しか出ません。 筐体が小さい中に張り巡らせたアンテナの影響もあるのかな?

 
これでほぼ準備完了。 OS も新規に再インストールしたし、気分もドライバもすっきりっ!! ;-)。

実際に使ってみると ATOM の割には速いです。 Intel Celeron N5095 は比較的新しいアーキテクチャだからでしょうかね。まぁ、今まで v525 で利用していた AMD A6-9500 は 2Core でもありますしね。そこそこ頑張ってくれる PC が手に入ってラッキーでした;-)。

今回購入した Beelink MINI S は Windows11 で利用するための PC です。テレビに接続して、色々楽しみたいと思います。

 
と、いいつつ、当然 FreeBSD/amd64 13.1-RELEASE もインストールしました。

本当はこんなことやる必要ないのかもしれないのですが、 EFI 領域がどうなるのか解らなかったので、ちょっとトリッキーにインストールしました。
M2.SATA の Windows11 領域を 20GB ほど小さくして、そこに FreeBSD 用の / パーティションを準備して、/home /usr /var SWAP などは 2.5インチ SATA SSD 側にインストールしました。

サクっと起動して、 X11 まで起動して KDE5 が動作して suspend/resume します。 Dual Band Wireless-AC 3165 は iwm0 で認識します。 802.11a で通信できます。

まぁ、 一応デアルブートにしましたが Windows11 をメインで利用するので、これくらいで。最後に pciconf -lv をつけておきます。

hostb0@pci0:0:0:0:      class=0x060000 rev=0x00 hdr=0x00 vendor=0x8086 device=0x4e24 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = bridge
    subclass   = HOST-PCI
vgapci0@pci0:0:2:0:     class=0x030000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4e55 subvendor=0x8086 subdevice=0x2212
    vendor     = 'Intel Corporation'
    device     = 'JasperLake [UHD Graphics]'
    class      = display
    subclass   = VGA
none0@pci0:0:4:0:       class=0x118000 rev=0x00 hdr=0x00 vendor=0x8086 device=0x4e03 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Dynamic Tuning service'
    class      = dasp
xhci0@pci0:0:20:0:      class=0x0c0330 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4ded subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = serial bus
    subclass   = USB
none1@pci0:0:20:2:      class=0x050000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4def subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = memory
    subclass   = RAM
none2@pci0:0:21:0:      class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4de8 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Serial IO I2C Host Controller'
    class      = serial bus
none3@pci0:0:21:1:      class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4de9 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Serial IO I2C Host Controller'
    class      = serial bus
none4@pci0:0:21:2:      class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dea subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = serial bus
none5@pci0:0:21:3:      class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4deb subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = serial bus
none6@pci0:0:22:0:      class=0x078000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4de0 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Management Engine Interface'
    class      = simple comms
ahci0@pci0:0:23:0:      class=0x010601 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dd3 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = mass storage
    subclass   = SATA
none7@pci0:0:25:0:      class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dc5 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = serial bus
none8@pci0:0:25:1:      class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dc6 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = serial bus
pcib1@pci0:0:28:0:      class=0x060400 rev=0x01 hdr=0x01 vendor=0x8086 device=0x4dbc subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = bridge
    subclass   = PCI-PCI
pcib2@pci0:0:28:5:      class=0x060400 rev=0x01 hdr=0x01 vendor=0x8086 device=0x4dbd subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = bridge
    subclass   = PCI-PCI
none9@pci0:0:30:0:      class=0x078000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4da8 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = simple comms
none10@pci0:0:30:3:     class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dab subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = serial bus
isab0@pci0:0:31:0:      class=0x060100 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4d87 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    class      = bridge
    subclass   = PCI-ISA
hdac0@pci0:0:31:3:      class=0x040300 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4dc8 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Jasper Lake HD Audio'
    class      = multimedia
    subclass   = HDA
none11@pci0:0:31:4:     class=0x0c0500 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4da3 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Jasper Lake SMBus'
    class      = serial bus
    subclass   = SMBus
none12@pci0:0:31:5:     class=0x0c8000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x4da4 subvendor=0x8086 subdevice=0x7270
    vendor     = 'Intel Corporation'
    device     = 'Jasper Lake SPI Controller'
    class      = serial bus
iwm0@pci0:1:0:0:        class=0x028000 rev=0x81 hdr=0x00 vendor=0x8086 device=0x3165 subvendor=0x8086 subdevice=0x8010
    vendor     = 'Intel Corporation'
    device     = 'Wireless 3165'
    class      = network
re0@pci0:2:0:0: class=0x020000 rev=0x15 hdr=0x00 vendor=0x10ec device=0x8168 subvendor=0x10ec subdevice=0x0123
    vendor     = 'Realtek Semiconductor Co., Ltd.'
    device     = 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller'
    class      = network
    subclass   = ethernet

 
NotePC のかわりにモバイルで持ち出すのもアリな雰囲気です。ちっこくて、ほどほど速い (ベンチ取らずに体感でのコメントで申し訳ない(^^;) し値段も手頃なので、まぁ『あり』なのかなぁ;-)。

9月 182022
 

自宅のデスクトップ機自宅サーバに HP ProDesk 405 SFF/CT を購入しました。時期的にデスクトップ機は G6 、自宅サーバは G8 というタイミングです。

で、この二台は AMD Ryzen7 PRO CPU が搭載されています。 BIOS (UEFI) メニューを見ると AMD DASH というのに対応しているようです。

そもそも “AMD DASH” とはなんぞや?

簡単に言うと iLO みたいにリモートで BIOS を管理でる機能らしい。あくまで『らしい』のであります;-)。

AMD DASH を利用するためには PC 側に AMD DASH で利用するための IPv4 アドレスの設定が必要です。これは iLO と一緒ですね。

そして、管理用のマネージャーが必要です。マネージャーは以下の URL にアクセスしてダウンロードすることができます。

https://developer.amd.com/tools-for-dmtf-dash/

『AMD MANAGEMENT CONSOLE』ってのがそれにあたります。

確認してみると Windows 用の GUI と CLI 、各種 Linux 対応の CLI がダウンロードできるようです。
まぁ、『手元の Linux で CLI』より『手元の Windows で GUI』のほうが楽だろうと思い AMC-setup-7.0.0.956-AMD.exe をダウンロードし、手頃な WindowsOS にインストールします。

これでマネージャー側の準備は完了。では早速、デスクトップ機にアクセスしてみることにしましょうっ!! ってんですが、これが大変。

PC 側で AMD DASH を有効にして IP を付加させるまでの工程は随分と苦労するので、今回はそちらをメインに書いてみます。

 
1. BIOS (UEFI 画面。以降 BIOS 画面と記載) で AMD DASH を有効化
その通りですね。 BIOS 画面で [詳細設定] -> [システムオプション] を選択して下から二番目にある「AMD DASH」にチェックを入れます。



 
2. UEFI ドライバーからの「他社製オプション ROM の管理」へアクセス
「AMD DASH」にチェックを入れたあと、次に BIOS 画面で [UEFI ドライバー] を選択し、そこに表示されている「他社製オプション ROM の管理」の項目を選択します。 選択したあと、保存して終了します。そのタイミングで再起動します。

再起動して起動してくるタイミングで F3 キーを押してください。画面の左下に以下のように表示され、その後「他社製オプション ROM の設定」画面が表示されます。

F9 はブートセレクト画面、 F10 は BIOS 設定画面が表示されますが、 F3 キーを押すと「他社製オプション ROM の管理」画面が表示されます。これは裏技か? どこにも書かれてないぞぉー。

 
3. AMD DASH のネットワークと認証設定
「他社製オプション ROM の管理」画面にはいりました。青ベースの画面になりますね。

僕の場合はオンボードの Realtek の NIC と PCI-e x16 スロットに HP 純正の Intel の 2Port NIC のカードが入っているので MAC アドレスが 3 個見えますが、ここから Realtek の NIC の設定画面に入ります。Realtek は一番下の NIC ですね。

NIC を選択すると設定画面に突入。

右上には「AMD DASH の設定をしているよー。」って、表示されています。

ネットワークの設定については、まぁ、ややこすぃーのでとりあえず DHCP の設定をしてから抜けます。
個別の IP アドレスを指定しても良いと思いますし VLAN-ID を設定しても良いと思います。が、一番最初は勝手がわからないので DHCP でアドレスを取得するようにします。
この画面、良く見てみるとネットワークの設定するところが二ケ所あるんですよ。どっちが AMD DASH 用か良くわからない。なので、両方のネットワーク設定で DHCP の設定としました。

Realtek RealManage Setup のところで Setup and Configuration の中に入ると Security 関係の ID とパスワードが求められます。これには Administrator/Realtek で認証が通過します。

AMD MANAGEMENT CONSOLE からアクセスする際の認証に利用されます。 Administrator/Realtek は default 値です。

完了したら「他社製オプション ROM の設定」画面を抜けて再起動します。

 
4. しかし、実際の IP アドレスの割当は?
今回はデスクトップ機の HP ProDesk 405 G6 SFF/CT 側で AMD DASH を設定したので、こちらを利用します。 PC 上で動作している OS は FreeBSD/amd64 13.1-RELEASE です。

まず、自分のネットワークの網内に dhcpd を起動します。 FreeBSD 的ですが tail -f /var/db/dhcpd/dhcpd.leases して、 Realtek の NIC がどの IPv4 アドレスを取得するか確認します。

PC の電源を入れた段階でただちに IPv4 が取得されると思います。

『オンボードの Realtek の NIC は FreeBSD でも利用するのに AMD DASH で IPv4 アドレス取得して FreeBSD でも IPv4 使うの、無理じゃね?』

となるのであります。

その昔、HP DL320G5p 辺りに iLO とオンボード NIC が一緒のポートで VLAN で IP アドレスを使い分けろ。とかいうのがありました。その後、この仕様はなくなり iLO と OS が利用する NIC は別ポートなのが主流になりましたが・・。

「他社製オプション ROM の設定」画面で VLAN の設定もできるので、そこで PC セグメントと AMD DASH 用管理セグメントを分けた VLAN-ID を設定する。と、いうのも一つの手ではあります。

と、いうことで、この部分の IP アドレスの使い分けが非常にややこしい。自宅に Cisco 891FJ があるとはいえ・・。既に VLAN を利用して自宅のネットワークを構築しているとはいえ・・。

 
と、いうことでオンボードの re0 は AMD DASH 専用ポートに、PCI-e の 2Port NIC を FreeBSD 側で利用 (em0・em1 で認識している)することにします。

FreeBSD ではオンボードの Realtek の NIC は /boot/kernel/if_re.ko では動作しません。 ports から net/realtek-re-kmod をイントールした /boot/modules/if_re.ko を利用する必要があります。

 
PC に電源を入れて DHCP で取得した IP アドレスに ping を打ち続けるのですが、 FreeBSD が起動して re0 が認識した時点で ping が止まります。 AMD DASH と FreeBSD の IP アドレスがグチャグチャになるのでしょうなぁ。

それにしても AMD DASH 対応の NIC のために FreeBSD の標準 if_re.ko では動作しないのかな?
まぁ、FreeBSD は em0 を利用して通信するので re0 を認識させる必要さえありません。

 
ちなみに、自宅サーバ側の HP ProDesk 405 G8 SFF/CT は VMware ESXi 7.0 が動作していますが、ESXi7 はそもそも Realtek の NIC を認識しないので、こちらは問題なく AMD DASH で利用できますね。ただ、もう ESXi7 が起動している状態なので AMD DASH の設定してませんが・・f(^^;;。

 
オンボードの Realtek NIC の IP アドレスの設定について FreeBSD のみで動作確認したので WindowsOS ではどういう振る舞いをするのか確認さえしていません。もしかしたらドライバが優秀なのかもしれませんが、僕は見ようとも思ってません;-)。

と、いうことで AMD DASH 用に IPv4 アドレスが付いたでしょうか?

では次に進みましょう;-)。

 
5. AMC Console を起動
Windows にインストールした AMD MANAGEMENT CONSOLE を起動します。
一番最初にセットアップ画面が表示され、認証用 IP とパスワードを指定するように求められます。先程の default 値の Administrator/Realtek を指定します。
次に AMD DASH 対応 PC をネットワークから探査します。一番左にある “DISCOVER” と書かれたアイコンをクリックします。

  • hostname
  • IP Address
  • TCP/IP Range
  • Active Directory

 
上記で探査可能ですが、dhcpd のログを確認して IPv4 アドレスは解っているので素直に IP Address で探査します。

探査できるとこんな感じです。

 
6. AMC Console を使い込んで行こう
一旦認識されると All Systems というコンピュータグループに登録されるので、確認します。
探査された PC の状況や BIOS の情報を表示してくれます。色々見て楽しんでください;-)。

あとは AMC Console の上のアイコンにあるメニューを順に確認していく。と、いう感じでしょうか。機能的に色々試す。と、いう感じです。

 
僕的には右から 4 番目の “REMOTE ACCESS” がえらい気になったですが・・。 iLO5 だと HTML5 コンソールとか起動して、 PC の画面が表示できるのですか、『AMD DASH もできるのかっ!?』うひっ!! ・・。 まぁ、甘かったですね・・。orz

ちょっと使ってみたのですが、 BIOS 設定など表示できるのはうれしいです。が、その程度かなぁ・・。 iLO にはほど遠いみたいな雰囲気でしょうか。まぁ、CPU メーカがここまでよくやった。うんうん。

 
あ。ここまで書いて、思い出したっ!! AMD DASH は iLO の対抗ではなかったですね。 Intel の vPro 対抗の機能だったっ!! 失礼しましたっ!!

と、いうことで機能的には Intel vPro と同等なのかな?

 
興味がある方は色々試してみてください。

上にも書いた通り、ネットワーク設定が通過できると比較的容易に遊べるようになるかと思われます。

 
このエントリは AMC Console の利用方法について記載したものではなく、どこにもドキュメントが無い AMD DASH を利用する PC 側のネットワーク設定について書かれたモノなのであります。なので AMC Console の Linux CLI とか Windows GUI とか、そんなのはどうでも良いことなのでありますっ!! ;-P。

 
(参考にしたサイト: https://www.reddit.com/r/Amd/comments/ism4wg/trying_out_dash_remote_access_on_a_thinkpad_t14s/)
どこにもドキュメントが無いないわけではなかった・・。ほっ。

9月 162022
 

いよいよ楽天モバイルを解約しました。
1GByte 0yen 運用していたのですが、楽天の社長さんはそれが気に入らないみたいで・・。まぁ、テレワークになって外に出なくなったのでギガを使う頻度が下がった。と、いうのもあるのですが・・。

当初、『3GByte まで 1,078yen なのでそれを使い続けようか。今まで通り電話代は 楽天 Link アプリを使えば無料だし。』とか思っていたのですが、 8 月中にたまたま電話で話す機会が多かったのだけど、 楽天 Link アプリは音質が悪すぎる。ちゃんと聞き取りできない。と、いうことで、楽天 Link アプリも捨てることにしました。もしかしたら LINE 電話のほうが音が良いかもしんないけど LINE 持ってない人とは電話できないし・・。

 
これからも 楽天 Link アプリを利用して無料通話する方に、かかってきた電話の音質を良くする方法を書いておきます。あ。Android 端末の人用です。

楽天 Link アプリのアイコンを長押しして「アプリ情報」を開きます。そこで [強制終了] を押します。

こうすることでかかってきた電話は通常の電話アプリが受けてくれるので音がきれいです。自分から電話をかけるときは、まぁ、音質悪いけどしょうがない。楽天 Link アプリを使って通話料金 0yen にしましょう。で、通話が終わったらまた [強制終了] にすれば良いです。かかってくる電話のときは音がきれいな状態で利用できます。

 
さて。前置きはここまで、本題に入ります。

楽天モバイルから IIJmio に NMP しました。せっかく IIJmio に NMP するので端末も買ってしまえーっ!! ってんで、モトローラ moto g52j 5G をチョイス。IIJmio への NMP だと大体、相場の半額程度で購入可能。

そして、僕個人的にも、モトローラの端末の待ちに待った防水・おサイフケータイ機能搭載。と、いうことでいよいよゲットした。と、いう状態です。

 
で、ここからは使用感・レビューなどを。

まず、箱から取り出して思った、ファースト・インプレッション。『でかっ!!』

自分的に一番でかいと思ったは OPPO RenoA ですが、それよりもはるかにでかいです。驚きのデカさですっ!!

写真は左から AQUOS sense6 、 Reno A 、 moto g52j 5G 、 iPhone8 の順番ですが、モトローラ moto g52j 5G は頭ひとつ飛び抜けています。

重さはそんなに重くない雰囲気かな?うちには計りというのがないので解らないです。
AQUOS sense6 もずいぶんと重いですが、それと似たような感じかな?

電源入れてしばらく遊んでいたら、なんか GUI がビミョーに違う。今は AQUOS sense6 と Xperia 10 II には Android12 が降ってきているんだけど、それと比較しても GUI がビミョーに違う。『OPPO みたいに独自 OS だったかな?』とか思いつつ使い続けていたら Android のセキュリティバージョンアップが走ったので気が付きました。

『あら。 moto g52j 5G って、未だに Android11 なの?!』 頼むよー。モトローラさん。 OS のバージョンアップ権一回損しちゃったじゃん。
どうして新しく出たスマートフォンの OS のバージョンが Android11 なのさぁ・・。

ちょっとガッカリする点です・・。

 
使い勝手は、何から何まで AQUOS sense6 より上です。

  • 画面の明るさ・表示
  • 体感の CPU 処理速度
  • カメラで撮った写真の綺麗さ、カメラの機能のわかりやすさ
  • 手に取ってロック解除して画面が表示されるまでの時間
  • 指紋・顔認証の速さ
  • 動作が重くならないし、フリーズしない

 
などなど。良い点が目に付く感じ。 AQUOS sense6 は CPU が Qualcomm Snapdragon 690 5G で moto g52j 5G は Qualcomm Snapdragon 695 5G。違いは 5G NR の n79 が入らない点程度かな? と、思っているのだけど、そんなことはないのかな? やはり、新しい CPU はよくできているのか?

docomo では 5G は n79 がメインで Snapdragon 695 の端末 (AQUOS sense6s) ではなく今でも Snapdragon 690 の AQUOS sense6 のほうを売ってますね。

 
と、いうことで、僕もどうしようか悩んだのですが、AQUOS sense6 に IIJmio の SIM を入れて moto g52j 5G は Y-monile の SIM を入れることにしました。

iPhone8 はゲタを履かせて povo で利用し、 Xperia 10 II は自宅の Wi-Fi 専用端末となりました。

それにしても、これで、電波がちゃんと届く 3 キャリア揃い踏みなので、冗長化もばっちり。どこのキャリアが障害になっても大丈夫っ!!

 
『思ったよりサイズが大きい。』点を除けば概ね問題の無いスマートフォンです。 AQUOS sense6 との併用なので、お財布ケータイの情報を全部移すとかそう行った煩わしさがないのが、複数台持つときの利点ですが、 AQUOS sense6 はフリーズするとか、負荷が重いときがあるのか、再起動する必要あったりで、だいぶ辟易しているの状態です。アプリなどをドンドン moto g52j 5G 側にオプロードして行こうかと思っている状態です。

 
もうしばらく使い込んでいこうかなぁ。と、いう感じですね。

8月 282022
 

去年の 11 月にデスクトップ PC を新調しました。 CPU は AMD Ryzen7 PRO 4750G です。この環境において FreeBSD を起動 (当時は 13.0-RELEASE でしたが、今は 13.1-RELEASE が動作しています) しています。

素晴らしい CPUをチョイスしたので 8 Core/16 スレッドです。ports を make するとメモリが足りなくなって大変。みたいな・・。
この強力な CPU パワーを使い切るのは ports のコンパイル時しかないんかい?! になるのも悲しいので VirtualBox でもインストールして利用するべ。などと思っても、ちぃとも動作しない・・。

エラーとしてはこんな感じ。

文字列的には・・。

仮想マシン"WindowsServer2012_01"のセッションを開けませんでした。

VirtualBox can't enable the AMD-V extension. Please close all other virtualization programs. (VERR_SVM_IN_USE).

終了コード : NS_ERROR_FAILURE (0x80004005)
コンポーネント: ConsoleWrap
インターフェース: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}

 
まぁ、OS は Windows Server でなくとも良いんですが、 Windows11 だったり FreeBSD なども上記エラーメッセージが出力されて起動しない・・。 orz
せっかくの 8 Core/16 スレッドな CPU なのに・・。

たまに VirtualBox を起動して『あ。やっぱり動かないね。』になるのよねぇ・・。
BIOS (UEFI) で AMD-V (AMD SVM) が有効になっていることは何回も確認している。

上記メッセージは日本語的には

「VirtualBox は AMD-V 拡張機能を有効にできません。 他のすべての仮想化プログラムを閉じてください。 (VERR_SVM_IN_USE)。」

らしいんですな。 Linux 方面では kvm と VirtualBox がケンカしていて仮想化資源を取り合っているんだそうで、VirtualBox を起動する際は kvm のカーネルモジュールを rmmod すれば良いらしい。

 
では、 FreeBSD は何が仮想化資源を掴んでいるのだぁ!? と、なるのですが、原因が全くわかりません・・。

cat /var/log/messages してみると・・。

vboxdrv: XXXXXXXXXXXXXXXX VMMR0.r0
vboxdrv: XXXXXXXXXXXXXXXX VBoxDDR0.r0
VMMR0InitVM: eflags=40246 fKernelFeatures=0x2 (SUPKERNELFEATURES_SMAP=1)

 
んー。見覚えのある文字列がありますが、これはなんなんざんしょ(?_?) と、いう状態です・・。

でもって、閃いた。試しに vmm.ko を kldunload してみた。

$ sudo kldunload vmm.ko
ivhd0: detached
amdiommu0: detached
pci0:  at device 0.2 (no driver attached)

 
man vmm してみると以下のように表示されますな。

NAME
vmm.ko – bhyve virtual machine monitor

DESCRIPTION
vmm.ko provides the kernel portion of the bhyve(4) hypervisor.

An Intel CPU with VT-x/EPT or AMD CPU with SVM support is required.

PCI device passthrough to a virtual machine requires hardware with VT-d support.

なるほどねぇ・・。こいつと競合していたのねぇ・・。と、いうことで、以降はすんなりと VirtualBox の仮想マシンが無事に起動したのでありました。

 
と、いうことで、VirtualBox が仮想化資源をつかめない。上記のようなメッセージが出力されている場合は、競合が発生しているので、とりあえず vmm.ko がロードされていないか確認すると良いと思います。

僕は AMD の CPU しか使ったことないけど、 Intel 系の CPU も vmm.ko は kldload できるのかな?

8月 212022
 

FreeBSD で Xorg を利用していた場合、USB のキーボード、マウスを一回抜き差しすると、設定がぜぇーんぶ飛んでしまいます。

例えば僕は USB 切り替え機器で FreeBSD 、macOS 、WindowsOS の間を一個のキーボードとマウスを利用しています。
FreeBSD から macOS に USB 切替器で切り替えると、 FreeBSD から見ると USB のキーボードとマウスは一旦切り離された状態 (devd 的に言うと detatch された状態) になります。
そして macOS から FreeBSD に戻るときに USB 切替器で切り替えると今度は attach された状態になります。

アタッチされたとき、最近の Xorg ではキーボード、マウスの設定が全部飛んでしまうんですな。以前は設定情報がとんでしまうなんてことは無かった。しかし、今は飛んでしまう。 Xorg のデバイス検知の仕掛けが libinput とか xinput 、 evdev 辺りになった影響なのかもしれないですな。

 
では、USB キーボード・マウスの、どんな設定が detatch -> attach で飛んでしまうのか?

キーボードの場合、 2 個前のエントリで書いた ${HOME}/.xmodmaprc の内容が消えてしまう。毎回 USB キーボードを attach する毎に xmodmap コマンドを打つ必要がある・・。orz

打つコマンドとしては以下のような感じ。

$ xmodmap ~/.xmodmaprc

 

マウスの場合、俗に『ナチュラルスクロール』などと言っていますが、回転方向を macOS みたいにする設定ですね。
KDE の場合「KDE システム設定」->「入力デバイス」->「マウス」から『スクロール方向を反転』のチェックをはずして [適用] を押したあと、チェックをつけて再度 [適用] を押すともとに戻ります。

が、GUIベースでこんなことしないで、CLI 的コマンドが何個か用意されています。

# libinput list-devices
<略>
Device:           MOSART Semi. 2.4G Keyboard Mouse, class 0/0, rev 1.10/1.03, addr 15
Kernel:           /dev/input/event7
Group:            8
Seat:             seat0, default
Capabilities:     pointer 
Tap-to-click:     n/a
Tap-and-drag:     n/a
Tap drag lock:    n/a
Left-handed:      disabled
Nat.scrolling:    disabled
Middle emulation: disabled
Calibration:      n/a
Scroll methods:   button
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   flat *adaptive
Rotation:         n/a
<略>
$
$ xinput list
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                    id=4    [slave  pointer  (2)]
⎜   ↳ System mouse                                  id=6    [slave  pointer  (2)]
⎜   ↳ Compx 2.4G Wireless Receiver                  id=11   [slave  pointer  (2)]
⎜   ↳ MOSART Semi. 2.4G Keyboard Mouse              id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                       id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                     id=5    [slave  keyboard (3)]
    ↳ System keyboard multiplexer                     id=7    [slave  keyboard (3)]
    ↳ Power Button                                    id=8    [slave  keyboard (3)]
    ↳ AT keyboard                                     id=9    [slave  keyboard (3)]
    ↳ Compx 2.4G Wireless Receiver                    id=10   [slave  keyboard (3)]
    ↳ MOSART Semi. 2.4G Keyboard Mouse                id=12   [slave  keyboard (3)]

 
今回やりたいことはマウスの逆回転をコマンドで設定したいということで、表示された内容を確認するには pointer をチェックします。すると “MOSART Semi. 2.4G Keyboard Mouse” と、いうマウスデバイスになります。

このマウスの回転方向を逆転するには以下のコマンドを利用します。

$ xinput list-props "pointer:MOSART Semi. 2.4G Keyboard Mouse"
<略>
$ xinput set-int-prop "pointer:MOSART Semi. 2.4G Keyboard Mouse" "libinput Natural Scrolling Enabled" 8 1

 
一行目のコマンドで対象となるマウスの内容を一旦表示してみました。二行目のコマンドでマウスの回転方向を逆にします。オプションの “libinput Natural Scrolling Enabled” 8 1 がそれになります。
前半部分はマウスのデバイス名になるので、マウスが変わるとデバイス名が変わります。

 
と、いうことで、ここまでが前ふり部分のお話です。

  • キーボードのキーマップを変えたいときはキーボードの attach 後に毎回 xmodmap コマンドを投入
  • マウスのホイールを逆回転にしたいときはマウスの attach 後に毎回 xinput コマンドを投入

 
detatch -> attach 後に毎回上記コマンドを打つとなると、それなりにイヤになりますね。
USB 機器の attach を検知して自動的にコマンドを実行してくれないものか・・。

そーいうときのために devd という機能がありましたっ!! 早速 /etc/devd/keybord.conf という設定ファイルを書いて devd を restart してみます。

notify 100 {
        match "system"          "USB";
        match "subsystem"       "DEVICE";
        match "type"            "ATTACH";
        match "vendor"          "0x25a7";
        match "product"         "0xfa70";
        action "/home/takachan/bin/KeybordOn.sh";
};

 
USB デバイスの vendor と product を usbconfig -d ugen0.5 show_ifdrv コマンドで拾ってきて設定します。 USB デバイスが attach されたときに action に記載されたスクリプトが実行されます。

なんか、無事に USB デバイスの検知はしているようですが、スクリプトの動いている感が全くありません。
なんでか、悩んだのですが、そもそも devd は root 権限で動作しております。それが一般ユーザの takachan のために Xorg のキーボードの設定やマウスの設定なんてしてくれるはずが無いのです。 $DISPLAY とかどうなっているのだ?! 的発想です。
まぁ、当たり前と言えば当たり前ですが・・。

ちなみに devd には /var/run/devd.seqpacket.pipe のいうのがあって、この pipe を一般ユーザ権限で動作するプログラムが受けると、一般ユーザ権限でイベントが受けられらしいですが、あまりドキュメントが無い・・。 devd-rs というのがヒントになります。

 
一般ユーザがもっと気軽に USB デバイスのイベントを拾えるようなものはないのか? 探してみると ports にあるようです。x11/inputplug になります。 コンパイル時には rust がいるかな? (大変だぁ・・)

inputplug は、例えば ~/.xsession に記載しておくことにより Xorg へのログイン時に一般ユーザ権限のデーモンとして起動します。起動後は xinput のイベントを拾うことができるようになります。

$ echo 'echo "$@"' > xishow; chmod 755 xishow
$ inputplug -d -c ./xishow

 
とりあえず xinput のイベントを拾って表示する xishow スクリプトを用意して inputplug を起動します。 -d はデーモンモードにならないオプションで -c はスクリプトを指定します。 -d を指定しないとバックグラウンドで動作してしまって、仮に情報が拾えていても tty に表示してくれないので、最初の試験中はほぼほぼつけていたほうが良いです。

上記の状態で USB 機器を detatch -> attach してイベントが拾えていれば OK。 あとはスクリプトの部分を作成していくことになります。
それにしてもこれで一般ユーザ権限でようやっと USB 機器のイベントが拾えるようになったぁ。ふぅ・・。

 
と、いうことで、僕が作成したスクリプトはこんな感じ。大急ぎの perl であまり美しくないですけどねぇ・・f(^^;;。

#!/usr/local/bin/perl

use strict;

my $pointer = "MOSART Semi. 2.4G Keyboard Mouse";
#my $pointer = "Telink Wireless Receiver";

my $cmd1 = "/usr/local/bin/xmodmap ${HOME}/.xmodmaprc";
my $cmd2 = "/usr/local/bin/xinput set-int-prop ";
$cmd2   .= "\"pointer:${pointer}\" ";
$cmd2   .= "\"libinput Natural Scrolling Enabled\" 8 1";
my $cmd3 = "loggder -t USB-keybord and mouse Ready.";   


my @opt = ();

for (my $c = 0;$c < 11; $c++) {
    push(@opt,shift);
}

my $f1 = 0;
my $f2 = 0;
my $f3 = 0;

foreach my $data (@opt) {
    $f1++ if ($data eq "XIDeviceEnabled");
    $f2++ if ($data eq "XISlaveKeyboard");
    $f3++ if ($data eq $pointer);
#    print "DEBUG: $f1 / $f2 / $f3 : $data" . "\n";
}

if ($f1 && $f2 && $f3) {

# デバイスを認識する前にコマンドを実行してまうので 5 秒ほどスリープ
    sleep 5;
    print "CMD1: " . $cmd1 . "\n";
    print "CMD2: " . $cmd2 . "\n";
    print "CMD3: " . $cmd3 . "\n";
    system("$cmd1");
    system("$cmd2");
    system("$cmd3");
}

exit 1;

 
これで、USB 機器接続後に xinput のイベントを拾ったあと、xmodmap と xinput set-int-prop のコマンドを実行してくれるようになりました。
やりたいことがようやっとできました。そこはかとなく長い道のりだったのであります。

が、今の時代、 FreeBSD でここまでがっつりと Xorg 使っている人、居るんかいな?
このエントリが無駄にならないことを切に願うのであります・・。

8月 132022
 

いやぁ。自宅のサーバを更新しました。富士通の PRIMERGY MX130 S2を使い続けて約 10 年。そろそろ潮時だろうと・・。

小型の PC を探していたのだけど、中々良いのがない。自宅のサーバとはいえ、VMwareESXi7.0 を起動させるので RealTek の NIC では無理。PCI-e スロットがあって、 2Port NIC なんかが内蔵できるようなやつが必要。

と、いうとこで、最近は PC 高いし、納品遅いのですが、以前購入したデスクトップ機と同様の HP ProDesk 405 G6 SFF/CT にしました。ただし時代は変わっているので今回購入したモデルは G8 になります。

CPU は AMD Ryzen7 PRO 5750G で 8Core/16 スレッド。サーバにはバッチリ。 HP から購入したときの構成は 4GB のメモリと 500GB の HDD でだいたい 62,000yen くらいでした。「価格.com 限定モデル」にすると相場より 10,000yen くらい安く買えるようです。

ここに別途 64GB のメモリっ!! 大体 25,000yen くらい。
3TB の HDD と 1TB SSD は今年の頭くらいに購入したものがあったのでそれを使い回しします。
PCI-e x2 接続の 2Port NIC は家に腐るほどあるので、Broadcom と Intel どちらにしようか悩んだけど、Intel の em0 にしました。

と、いうことで 8Core/16 スレッドで、メモリ 64GB 、ネットワーク 2NIC と、それはもう VMware ESXi7.0 を動かすのにはバッチリな環境が整ったのであります。

 
今回メモリは Crucial DDR4-3200 288pin UDIMM 64GB(32GB×2枚) CT2K32G4DFD832A をチョイスしました。『 PayPay モールで初めてお買い物』で 1,500yen 引き。その他 PayPay ポイントが 5,400 ポイントくらい付いたので、実質 22,000yen くらいでの購入でした。
HP ProDesk 405 G8 SFF/CT とも相性は良いみたいで、特に問題もなく 64GB を認識してくれました。うひひ;-)。

 
さてと。まずは default で入っている WindowsOS のアクティベーションを行います。が・・。 orz

画面がまともに映らないではないか・・。 orz。

HP の PC は法人向け PC を購入した場合 HP wolf security というのが default でインストールされているそうです。個人向けの PC の場合はインストールされてないです。今回は HP で購入したとき「TAKANO Network Service.」として購入したので法人扱いになったようです。従業員 10 名未満f(^^;;。

 
で、これが悪さしているのか解らないのですが、画面の下半分に起動時の画面がそのまま残ってしまい、OS インストール時は画面が上半分しか表示されない状態です・・。orz

しかし、この状態で本当によく Windows11 のアクティベーションができたモノだ・・。原因がどこにあるのか、さっぱり解らない。UEFI(BIOS) 画面でセキュリティに関する項目を根こそぎ OFF にしたけどだめ。

純正メモリ 4GB を 64GB にしたからかぁ?などと思い、もとに戻したりもしたけど、ダメ。
PCI-e x16 スロットに nVidia のグラフィックスカードを接続してそっちから画面だそうとしたら真っ白に表示されるし・・。orz

が、原因が特定できました。

PCI-E x16 のスロットに何か刺していると画面が半分に表示されるようです。それも WindowsOS のときのみ。
VMwareESXi7.0 のインストーラは ESXi の画面では半分表示にならない・・。ひどい話だぁ・・。

と、いうことで、 500GB の未使用となる WindowsOS がインストールされている HDD は再利用されることもなく、そのままお蔵入りとなるのでありました。あ。Windows のライセンスは引っこ抜きましたけどねぇ。 ESXi 上で動作させるか;-)。

 
それでは本命の VMwareESXi7.0 をインストールですが、こちらは PCI-e スロットに接続した 2Port NIC も問題なく、メモリ 64GB もサクっと認識して無事に起動して動作するのでありました。

こちらはインストールしている最中の新旧サーバの図。 ESXi のインストールが完了したら、ネットワークの設定とか VMware vCenter Converter を利用して OS の引っ越しです。

 
ESXi 上に存在している仮想マシンは全部で 17 台。常時動作しているのは VyOS と TrueNAS 、 WindowsServer2019 を含めて 8 台。ってところでしょうか。
メモリジャブジャブ、FreeBSD ports のコンパイルなどで CPU 負荷かけても大丈夫。そして音も静か。

中々良い感じのリプレイスではないかなぁ。と、思った次第なのでありました。
PCI-e スロットが付いている小型の HP ProDesk 405 G8 SFF/CT 。サーバとしてもちょうど良い感じでした。

 
さてと。前回購入した自宅サーバは約 10 年利用しました。今回購入した自宅サーバは、特に問題もなく壊れないと想定して 10 年持ったとした場合、もしかしたら、これが最後の『自宅サーバ購入』になるのかもしれません・・。 ちなみに自宅サーバ、今回が 9 代目となります;-)。

どうなることやら。

8月 112022
 

以前のエントリで「macOS で Wiondows キーボードを。」というのを書きました。このときは、かな刻印のない HHKB Lite2 の後釜どうしよう。的な記事で、安めの エレコムの TK-FCM103XBK を購入して、Windows・FreeBSD・macOS で利用。って、感じの記事でした。

あれからしばらくして、有線ではない、無線の TK-FDM105TXBK と、いうのも購入しました。エレコムのこれ系のキーボードは都合 3 個購入して色々なシーンで利用しようと思いました。

 
が、しょせんは HHKB Lite2 と一緒でナイロンの弾力でベコベコ打つ。みたいな感じです。『赤軸とか青軸と呼ばれるちょっと高価なキーボード使ってみたいなぁ。』とか思い探してみることにしました。

あんまり高いのは買えないので、まず、そこはかとなく安価な GAMDIAS の HERMES S1R というの購入してみました。

やじるしキーがついていて日本語配列、かな刻印あり。
あ。下のキーボードについてはあとで説明します;-)。

僕に必要な機能は一通り付いていました。キー配列などはエレコムの TK-FCM103XBK と一緒なので問題ありません。
それにしても個人的には初めてのゲーミングキーボード。ゲーミングキーボードって、どうしてキーの根元が丸見えなんでしょうかねぇ?不思議です。僕は PC でゲームをやらないので良くわからないのですが、左側の Windows キーはジャマなんでしょうかねぇ?

キーを押したときに色が光るのはまぁ、よしとします。自分で色々なパターンや明るさを設定できるのも良い感じでしょうか。

 
赤軸なのでキーを押したときの感覚がなかなか良い感じです。そして打刻音もベコベコとした雰囲気が良い感じです。

これをしばらく使い続けていたのでありました。

 
そんな状況の中で『60% キーボード』という言葉を耳にしました。フルサイズのキーボードの 60% 程度の大きさで、サイズ的には HHKB くらいのサイズです。

へー。

とか、思いネットを色々さまよってみました。そしたら、WENRUI メカニカルキーボード 日本語配列 キーボードというのが目に止まりました。

日本語配列、かな刻印あり、有線 USB 接続、無線 USB 接続、Bluetooth での接続もできて、バッテリー搭載。と、いうもういたせりつくせりな感じ。

『無線 USB 接続』というのは FreeBSD では必須です。FreeBSD の Bluetooth はアテになりませんしね。USB 有線よりは無線のほうが良いという雰囲気。

このキーボードが 6,000yen を切る価格で販売されていたので購入してみました。

上が HHKB Lite2 で、下が今回購入した WENRUI メカニカルキーボード 日本語配列 キーボードです。

 
一点気になったのが、物理的な『矢印』キーが付いていない点でしょうか。
Fn キーを押しながら『め』『かな』『変換』『Menu』キーを同時押しすると『矢印』キーとして動作する。と、いう状態です。

物理的な問題としては他に、スペースバーの左側に『無変換』キーがありません。『Alt』キーと一緒になっています。macOSの場合、日本語オフ (裏を返すと英語入力のオンか) する場合 Fn との同時押しが必要かも。

『Esc』 キーは Fn キーを押さない場合は『全角/半角』キーになります。 Fn キーと同時押しで『Esc』キーが機能するとなると Emacs 使いには非常に厳しい・・。

機能的には他に Shift + → + Fn が動作しません。

僕の場合、仮想デスクトップを利用するときに、デスクトップを切り替えるのに Ctrl + 『矢印』キーを利用しているのですが、このキーボードは『矢印』キーがないので Fn を同時押しする必要があります。

KDE5 の konsole とか、タブのついているアプリのタブ切り替えは Shift + 『矢印』キー だったのですが、Shift + → + Fn が動作しないため Shift + ← + Fn を押してグルッと反対方向に一周させる必要があります。

Shift + → はキーが別のに取られているようで、どうしようもない。と、いうのが現状のようです。

 
では実際に色々な OS で正しく動作するように設定を入れてみました。

WindowsOS では『Esc』 キーを Fn との同時押しにしないようにするために Microsoft PowerToys をインストールしてキー設定しました。

VK244 が『Esc』 キーを Fn との同時押しにしないようにするための設定。
Apps/Menuの設定が Shift + → + Fn を有効にする設定。

 
macOS では以前も解説した(上記リンクを参照してください)ことのある Karabiner-Elements で設定しました。『無変換』キーも無いので日本語オン・オフは『変換』キーと『かな』キーに割り当てました。当然 Shift + → + Fn を有効にする設定も追加しました。

application はShift + → + Fn を有効にする設定です。
grrave_accent_and_tilde(`) の設定が『Esc』キーのみで Esc が動作する設定。
スペースバーの右側 2 つのキーを英数字オン・漢字オンに割り当てました。

 
FreeBSD の場合、僕は KDE5 を利用しているので「KDE システム設定」の「キーボード」→[詳細] タブでそれらしいのをチョイスしして『全角/半角』キーと『Esc』キーを入れ替えました。

昔の X の設定は ${HOME}/.xmodmaprc とかに色々書いたりしていましたが、今は、KDE5 を使うのであればそちらの設定に任せてしまったほうが楽ちんですね。

が、上に書いた Shift + → + Fn が機能しない件ですが、こちらは ${HOME}/.xmodmaprc で解決しました。必要ない。って言ったのに、やっぱり書いてみました・・;-P。
Shift + → + Fn は keycode 147 なので、これを Right の keycode 114 に変更します。 (xev で確認できるよー;-)
『Esc』は keycode 9 なので 49 を 9 に変更します。

! shift + -> 
keycode 147 = Right Right Right 

! Zenkaku_Hankaku -> Escape
keycode 49 = Escape Escape Escape

 
と、いうことで必要な設定は OS ごとに準備完了。あとはベコベコうち続け、経験値を積んていくだけです。

このエントリも WENRUI メカニカルキーボード 日本語配列 キーボードで打っています。『矢印』キーは Fn キーと同時押しなので、ちとめんどう。Emacs のカーソル移動ショートカットで回避 (C-n C-p C-f C-b) すると、やじるしキーの出番は少なくなりそうですね。
Windows でも xkeymacs 利用しているし macOS はそもそも emacs キーバインドなので、良い感じです。

 
テレワークで家で仕事する機会が多いので、文字入力環境を考えていたら、なんか、ずいぶんとキーボードが溜まってきたような気がしますf(^^;;。

自分にあったものを色々と見つけてみたいと思います。が、キーボードはさすがにしばらくもー良いかな。