satokaz / hitorigoto Goto Github PK
View Code? Open in Web Editor NEW独り言
独り言
Murayama-san's driver 健在!
お守り代わりに持っておくと、何かの時に役にたつ。
と言うわけで、Solaris 11.4 でも利用可能な USB Ethernet Adapter をメモ。
下記から:
といっても、選択肢は 2 つしかない感じ:
27. axf driver for ASIX AX88172/872 usb2.0 to fast ethernet controller
28. axg driver for ASIX AX88178/179 usb2.0/3.0 to giga bit ethernet controller
いずれも、最低限の通信ができていることしか確認しておらず。
Solaris で提供される network 機能がきちんと使えるかは確認していない。
GIgabit といいっても、iperf3 で計測では 300Mbps もでないので期待はしない方が良い。
pci14e4,1686
なので、標準の bge driver は attach させても利用できない:
pci bus 0x0003 cardnum 0x00 function 0x00: vendor 0x14e4 device 0x1686
Broadcom Inc. and subsidiaries NetXtreme BCM57766 Gigabit Ethernet PCIe
solaris-desktop をインストールしても、GUI はまともに使えず画面が壊れてしまうので、下記のパッケージを抜いておく。
依存関係を持っているので、必ずこの順番で実行すること:
# pkg uninstall xorg-video-intel
# pkg uninstall driver/graphics/drm
Apple PCI SSD は、ahci driver が attach するが、watchdog reset storm で使い物にならない。どのくらい使い物にならないかというと、mkfile 1g が 30 分くらいかかる。それくらい使いものにならない
NVMe に換装することで、Solaris 標準の nvme driver が attach する。
OS 標準の nvmeadm
コマンドは利用できない。
kazus@solaris:~$ prtconf -D
System Configuration: Oracle Corporation i86pc
Memory size: 16261 Megabytes
System Peripherals (Software Nodes):
i86pc (driver name: rootnex)
scsi_vhci, instance #0 (driver name: scsi_vhci)
pci, instance #0 (driver name: npe)
pci106b,141
display, instance #0 (driver name: vgatext)
pci106b,141, instance #0 (driver name: audiohd)
pci8086,7270, instance #0 (driver name: xhci)
device, instance #2 (driver name: usb_mid)
keyboard, instance #5 (driver name: hid)
mouse, instance #6 (driver name: hid)
input, instance #7 (driver name: hid)
hub, instance #0 (driver name: hubd)
keyboard, instance #1 (driver name: hid)
mouse, instance #2 (driver name: hid)
device, instance #0 (driver name: usb_mid)
input, instance #0 (driver name: hid)
storage, instance #0 (driver name: scsa2usb)
disk, instance #0 (driver name: sd)
hub, instance #1 (driver name: hubd)
device, instance #1 (driver name: usb_mid)
keyboard, instance #3 (driver name: hid)
input, instance #4 (driver name: hid)
pci8086,7270
pci8086,7270, instance #1 (driver name: audiohd)
pci8086,9c10 (driver name: pcieb)
pci8086,9c14, instance #1 (driver name: pcieb)
pci106b,13b
pci8086,9c16, instance #2 (driver name: pcieb)
pci14e4,1686, instance #0 (driver name: bge)
pci14e4,0, instance #0 (driver name: sdhost)
blkdev, instance #1 (driver name: blkdev)
pci8086,9c18, instance #3 (driver name: pcieb)
pci8086,156d, instance #5 (driver name: pcieb)
pci8086,156d, instance #6 (driver name: pcieb)
pci8086,156c
pci8086,156d, instance #7 (driver name: pcieb)
pci8086,1513, instance #0 (driver name: pcieb)
pci8086,1513, instance #11 (driver name: pcieb)
pci108e,7b11, instance #0 (driver name: ixgbe)
pci108e,7b11, instance #1 (driver name: ixgbe)
pci8086,1513, instance #12 (driver name: pcieb)
pci8086,1513, instance #13 (driver name: pcieb)
pci8086,156d, instance #8 (driver name: pcieb)
pci8086,156d, instance #9 (driver name: pcieb)
pci8086,156d, instance #10 (driver name: pcieb)
pci8086,9c1a, instance #4 (driver name: pcieb)
pcic0a9,540a, instance #0 (driver name: nvme)
disk, instance #0 (driver name: blkdev)
isa, instance #0 (driver name: isa)
motherboard
motherboard
pit_beep, instance #0 (driver name: pit_beep)
pci8086,7270
fw, instance #0 (driver name: acpinex)
cpu, instance #0 (driver name: cpudrv)
cpu, instance #1 (driver name: cpudrv)
cpu, instance #2 (driver name: cpudrv)
cpu, instance #3 (driver name: cpudrv)
sb, instance #1 (driver name: acpinex)
used-resources
fcoe, instance #0 (driver name: fcoe)
iscsi, instance #0 (driver name: iscsi)
options, instance #0 (driver name: options)
pseudo, instance #0 (driver name: pseudo)
vga_arbiter, instance #0 (driver name: vga_arbiter)
xsvc, instance #0 (driver name: xsvc)
agpgart, instance #0 (driver name: agpgart)
intel-iommu, instance #0 (driver name: intel_iommu)
intel-iommu, instance #1 (driver name: intel_iommu)
ISO から install できないので、.VHDX を利用する。
Technical Preview へのアクセスは、Parallels アカウントが必要。
https://www.parallels.com/blogs/parallels-desktop-apple-silicon-mac/
Forum:
Build 21286
Microsoft account での sing in が必要。
GitHubでは Issue に限定されたアクセス権限は存在しませんが、Issue 専用のリポジトリを作成すれば、実質的にそのようなアクセス権限を設定できます。
https://apps.apple.com/us/app/github/id1477376905
GitHub がリリースするスマートフォンアプリ。
Issues の編集/操作も可能。
また、1.4 で Discussions をサポート。
>- Introducing Discussions, a new way to connect with your community, team, and collaborators on GitHub! Share new ideas, ask questions, and find inspiration within your repository.
GitHub Issues や PR, Wiki などのエディタを拡張するブラウザ拡張。
#9 VS Code 上で GitHub Issues を検索する Notebook を作れる拡張機能
簡単に言うと、ZFS Storage Appliance の share (共有領域)を OCI Object Store に見立てて利用する事を目的とした機能。
ZFS Storage Appliance では、ZFS Storage Appliance Object API サービス
(OCI API mode) を提供する。
この機能を有効にすることで、ZFS Storage Appliance は、OCI オブジェクト・ストレージ互換の API を提供でき、Cloud サービスとして提供される OCI オブジェクト・ストレージ機能をオンプレ上に実装することができ、OCI オブジェクト・ストレージ native API を使用するアプリケーションを変更することなく、それらを利用し、ZFS Storage Appliance にデータを格納することが可能となる。
と言うわけで、必要なものは、ZFS Storage Appliance になる。
機能詳細については、下記のマニュアルを:
利用目的としては、実際のサービスコストを消費することなく、OCI オブジェクト・ストレージ native API を用いたアプリケーションの開発(Bandwidth: read/write limits の操作も可能)、OCI オブジェクト・ストレージと連携したバックアップをオンプレミス上に取得するなどが想定される。
例えば、OCI CLI を改変することなく、oci os
コマンドで基本機能の操作ができる。
サポートされる OCI Object Storage API は、下記のマニュアルを参照。Buckets と Object の操作、Multipart Upload のみをサポートしている:
OCI オブジェクト・ストレージ互換機能のための OCI 契約は必要ない。
が、OCI オブジェクト・ストレージ互換となるため、Oracle Cloud Infrastructure の概念や用語など、事前にいくつか理解しておく必要がある。
特に、下記の項目の用語は把握しておくこと:
OCI のサービスを理解する上でリソースの識別子
を覚えておくと良い。
特に、ほとんどの Oracle Cloud Infrastructure リソースに割り当てられる Oracle Cloud Identifier (OCID)
というものがあるということを覚えておく必要がある:
OCI Object Storage を利用するためには、テナンシとユーザーに割り当てられるリソース識別子である、下記の OCID を把握しておく必要がある:
この 2 つは、すぐに探せるように理解しておくこと:
OCI オブジェクト・ストレージについては、下記のドキュメントが役立つ:
ZFS Storage Appliance の Cloud Backup 機能では、OCI Object Storage の知識が必要になるので、下記のドキュメントを参照しておく。
特に、バケットやオブジェクト・ストレージのリソースの制限なども理解しておくこと:
ルート・コンパートメント当たりのオブジェクト・ストレージ・ネームスペースの数: 1
下記の例では、arhebq9xwolu
が、Tenancy に割り当てられたネームスペースになる:
Root compartment 配下に作成した bucket: satokaz-bucket
の URL:
Root 配下に作成される適当な compartment 配下に作成した bucket: bucket-20201022-2319
の URL:
上記のことから、Tenancy 内に、どれだけ compartment を切って、bucket を作成しても、ネームスペース: arhebq9xwolu
配下に bucket が配置されることがわかる。
一通り、OCI と OCI オブジェクト・ストレージの学習が済んだら、ZFS Storage Appliance 上に OCI オブジェクト・ストレージ互換機能を構成してみる。
ZFS Storage Appliance で OCI API mode を構成するための手順は、ざっと下記のような流れになる:
この手の仕組みは、時刻が重要になる。
必ず、ZFS Storage Appliance 側、クライアント側共に NTP サービスを利用するように構成し、時刻の差異による問題から開放されるようにしておくこと。
手動で同期しても、徐々にズレて行くので軽視してはいけない。
大事なことなので何度でも。NTP でしっかり時刻同期がされていることを確認すること。じゃないと、下記のようなエラーが出る。
これが、時刻のズレが原因と推測するのは初見では、ほぼ不可能...
ServiceError:
{
"code": "NotAuthenticated",
"message": "The required information to complete authentication was not provided",
"opc-request-id": "txa26c079985f54f68b5748-005ff95e2e",
"status": 401
}
Chrome 限定の話になってしまうが、ZFS Storage Appliance の BUI は、日本語対応のため項目が日本語表示される。
しかしながら、マニュアルなどは英語のものが多く、そのため、すぐにブラウザの表示言語を変更できるようにしておくと、色々と捗る気がする。
Chrom であれば、下記の拡張機能をインストールしておくことで簡単に実現することができる:
まずは、ZFS Storage Appliance 上にユーザーを作成する。share とその上に作成される bucket を読み書きするユーザーとなる。
Configuration > Users
Type: Local を指定し、ZFS Storage Appliance 上に作成してみる。
作成したユーザー名は、OCI CLI 利用時の ユーザー OCID
としても利用する。(やっと、OCID が出てきた)
ちなみに、初めから用意されている root
ユーザーは、利用できない。
下記のように NotAuthenticated
になるので、必ず専用のユーザーを作成しておくこと:
% oci os bucket create --endpoint http://192.168.100.166/oci -ns export/oci-project/oci-object-1 --compartment-id export/oci-project/oci-object-1 --name testbucket0
ServiceError:
{
"code": "NotAuthenticated",
"message": "The required information to complete authentication was not provided",
"opc-request-id": "txb7a4c32a5ae5452daa32a-0060176fc9",
"status": 401
}
ZFS Storge Appliance において、OCI オブジェクト・ストレージの器となる、bucket そのものの配置先は、share
となる。
これが、オブジェクトを格納するためのエンドポイントとなる。
既存の Project 配下に作成しても良いし、オブジェクト・ストレージ互換機能専用の Project を作成し、その配下に share を作成しても良い。
Project そのものを書き込み先として指定することはできない。Project 配下に必ず share
を作成し設定を行うこと。
そして、その share では必ず、share -> protocol -> HTTP の OCI API mode
を指定しておく必要がある。
例として、IP address: 192.168.100.166 がアサインされる、ZFS Storage Appliance 上に Project: oci-project
を作成、その配下に、share: oci-object-1
を作成してみる
Project: oci-project
OCI API mode
を設定しなくても良い。設定を継承させたい場合は、セットする。share: oci-object-1
2. 作成した share の Protocols で、HTTP の OCI API mode を設定すること
エンドポイントは、http://192.168.100.166/oci/n/export/oci-project/oci-object-1/
となる。
また、share は、OCI CLI の下記オプションに渡す値になる:
--namespace-name, --namespace, -ns [text]
oci-project
の mount point は /export/oci-project
に指定されているoci-object-1
の mount point は、/export/oci-project/oci-object-1
に指定されているこのような条件である場合、-ns へ渡される値は、export/oci-project/oci-object-1
となる
ZFS Storage Appliance の BUI にアクセスし、OCI オブジェクト・ストレージ互換機能を有効にする。
Default path は、オブジェクトを格納するデフォルトの場所となり、OCI API mode が有効になっている share のマウントポイント (/export/oci_satokaz みたいな感じ) を指定する。
クライアントでオブジェクトの場所を指定しない場合は、このパスが使用される。
Default Path にセットされた share のマウントポイントは、オブジェクトストレージサービスにアクセスするクライアントが使用するデフォルトのネームスペース (OCI で言うところの「ルート・コンパートメント当たりのオブジェクト・ストレージ・ネームスペース」)として使用される。
Default Path を設定しなくても、サービスは有効化できる。
Project を、Default path に設定する事もできるが、そのパス直下に bucket を作成することはできないみたいなので、必ず、Project 配下に share を作成し、その share を指定すること。
share が存在しない Project を Default Path に指定すると、下記のエラーが出力される:
Default path: Path does not exist: Check that there is a valid share configured for OCI
少し先の項目になってしまうが、OCI CLI からネームスペースを取得してみる。
OCI CLI の oci os ns get
コマンドの用途は、ネームスペースを取得するコマンドになる。
OCI オブジェクト・ストレージでは、ルート・コンパートメントに一意のネームスペースが割り当てられているため、必ず値が返ってくる。
ZFS Storage Appliance では、ネームスペースの替わりに、Default path
でなんとかしてるっぽい。
Default path に Project:/export/oci-project/oci-object-1
を指定して実行して見た結果:
% oci os ns get --endpoint http://192.168.100.166/oci
{
"data": "export/oci-project/oci-object-1"
}
Default path
に何も設定しない場合、OCI CLI の oci os ns get
コマンドは、何も返さない。これは、何も設定されていないので、返すべき値がないから。
OCI CLI で --compartment-id, -c [text]
と --namespace-name, --namespace, -ns [text]
に必ず値をセットして利用するのであれば、Default path
設定は空でも構わない。
認証は、PEM フォーマットの RSA キー・ペアを作成し、公開鍵を ZFS Storage Appliance に登録することで行う。
PEM フォーマット以外は、Key: Invalid RSA public key (not in PEM format)
と怒られるので使えない事に注意。
また、ssh-keygen だと、-m PEM を指定し PEM フォーマットで出力できる事になっているが、この方法で作成した鍵は PEM format として認めてくれないのでダメ。
openssl コマンドを利用して、キー・ペアを作成する。
詳細については、下記のドキュメントを参照:
% mkdir ~/.oci
% openssl genrsa -out ~/.oci/oci_api_key.pem 2048
% chmod go-rwx ~/.oci/oci_api_key.pem
% openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem
writing RSA key
% ls ~/.oci
./ ../ oci_api_key.pem oci_api_key_public.pem
作成した公開鍵を ZFS Storage Appliance へ登録する。
ここまで設定できれば、ZFS Storage Appliance は、OCI オブジェクト・ストレージとして振る舞える状態になっている。
あとは、クライアントから叩くだけ。
ちなみに、本物 OCI オブジェクト・ストレージのように、S3 互換のプロトコルを利用して、オブジェクトを操作することはできない。
ZFS Storage Appliance は、 S3 互換オブジェクトストレージの機能も提供しているが、この機能経由で、OCI オブジェクト・ストレージ互換機能で読み書きされたオブジェクトを扱うことはできない。
同じ、Share を利用することは可能だが、xattr か何かを使ってうまく干渉しないようにしている。
16:18:00-kazus@solaris~$ oci -v
2.20.1
bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
command line developer tools が必要になるので、必ずインストールしておく:
% sudo xcode-select --install
Apple M1 機 では、arm64 build できないので、arch -arch x86_64 /bin/zsh -l
とかして、x86_64 でインストールを実行すること。
homebrew でも、インストール可能。x86_64 でも arm64 でもインストールできる。
動かせた。
pkg set-mediator
で、利用する OpenSSL を 1.1.1d に切り替えてあげれば、1.0.2 利用時の Warning とは付き合う必要がないことがわかった。
mediator を openssl 1.1.1 を利用する [email protected]
に切り替え、PKG_CONFIG_PATH 環境変数をセットしてインストールを実行:
$ sudo pkg set-mediator --no-backup-be -I [email protected] openssl
$ export PKG_CONFIG_PATH=/usr/lib/64/pkgconfig
$ bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
Solaris 11.4 の OpenSSL については、下記の記事を参照。Solaris 11.4 SRU 21 から、OpenSSL 1.1.1 が提供されるようになっていた。
Solaris 11 の IPS には、あるアプリケーションの異なる実装へのリンクのセットを提供する mediation と言う考え方を提供する。
OpenSSL は、この medation がセットされており、1.0.2/1.1.1d/fips-140 対応と 3 つの mediator を持っている。
と言うわけで、openssl の mediator を OpenSSL 1.1.1 に切り替えて build してしまえば良い。と言うのを知った。
勉強になりました。
$ export CRYPTOGRAPHY_ALLOW_OPENSSL_102=1
$ oci -v
/export/home/kazus/lib/oracle-cli/lib/python3.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py:179: CryptographyDeprecationWarning: OpenSSL version 1.0.2 is no longer supported by the OpenSSL project, please upgrade. The next version of cryptography will completely remove support for it.
utils.CryptographyDeprecationWarning,
2.20.0
下記の CryptographyDeprecationWarning は、Solaris 11.4 で提供される OpenSSL がアップデートされるまでは消えない:
/export/home/kazus/lib/oracle-cli/lib/python3.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py:179: CryptographyDeprecationWarning: OpenSSL version 1.0.2 is no longer supported by the OpenSSL project, please upgrade. The next version of cryptography will completely remove support for it.
utils.CryptographyDeprecationWarning,
https://github.com/oracle/solaris-userland/tree/master/components/openssl/openssl-1.1 を見ると、SRU29 SRU 30 あたりで 1.1.1i に update されるかな?
driver: Realtek USB FE / GBE / 2.5G / Gaming Ethernet Family Controller Software
2.5GbE と Jumbo frame を利用するために、driver が必要。
driver なしだと、1GbE (MTU1 500 まで) のアダプタとして Intel でも M1 でも利用可能。
USB には期待しない方が良い
そして、この driver は Big Sur では効かないような気が・・・
macOS も標準機能として VNC Client を持っているので、使えるものは使ってしまいましょう。というお話。
Finder で ⌘+K
するか、画面共有.app (Screen Sharing.app) を実行
/System/Library/CoreServices/Applications/Screen Sharing.app
mDNS でネットワーク上にサービスがアドバタイズされていれば、Finder の ネットワーク
から、ホストが提供する 画面の共有...
でも可能。
すでに、VNC server が利用できるよう Solaris 上に構成されていることが前提。
また、画面共有.app (Screen Sharing.app) から接続するには、VNC への接続認証にパスワードが利用されるよう設定されている必要がある。
avahi を利用してサービスを登録し、Finder に Solaris マシンを表示させ、画面の共有...
ボタンで VNC に接続できるようにする。
LSARC/2007/464/ で avahi-daemon
を avahi-daemon-bridge-dsd
という名前に変えてやがった
# LSARC/2007/464/ -> rename avahi-daemon to avahi-daemon-bridge-dsd
/etc/avahi/services
ディレクトリはは存在していないが、手動で作成し、この配下にサービスが記載されたファイルを配置すれば daemon 起動時に読み取ってくれるので、avahi-daemon としての動きは問題ない感じ。
というわけで、Solaris でも Avahi は利用可能。
_rfb._tcp
が port 5900
で動作している事をアドバタイズするために Avahi サービスを作成# mkdir -p /etc/avahi/services
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_rfb._tcp</type>
<port>5900</port>
</service>
</service-group>
# svcadm enable dns/multicast
# svcadm restart avahi-bridge-dsd
こんな感じで、出てくれば良い
$ avahi-browse -a
+ net0 n/a solaris _rfb._tcp. local.
Big Sur をサポート。
userland での実装なのだろうか? Apple M1 MacBook Air でもうごいた。
手軽に iSCSI Initiator を用意できるが、遅い...
iSCSI Initiator 機能は、US $8.00
https://mac.daemon-help.com/images/iscsi/
有償で $89。14 日間の trial あり。
Kernel Extension として実装しているので、DAEMON Tools よりは速い。
MC/S はサポートしているが、MS/T はサポートしていない。
globalSAN iSCSI Initiator の MC/S 実装は、target と initiator 側に 2 つの NIC を用意して、それぞれ別のネットワークアドレスをアサインする方式。
trial を解除すれば、Persistent 機能が利用できるので、再起動しても自動で target に接続してくれる。
https://www.studionetworksolutions.com/globalsan-iscsi-initiator/
Catalina は大丈夫。
Big Sur では注意が必要。
また、Apple Silicon 対応ではないので注意。
US $195.
Big Sur は対応待ちっぽい。
ちょっとお高いので手が出せない。
https://www.atto.com/products/software/NONE/software/INIT-MAC0-001
ちょっと、ダメそうな気がする。。。
https://www.kernsafe.com/product/macos-iscsi-initiator.aspx
2017 年リリースの 1.0.0-beta6 が最終かな? 時が止まっている感じ。
Catalina まではいけるのかな?
こんなのあったのか・・・
Catalina でも、Big Sur でも performance mode のオプションは効くね。
Turn on performance mode for macOS Server
https://support.apple.com/en-us/HT202528
davidalger/Enable-macOS-Server-Performance-Mode.md
https://gist.github.com/davidalger/a3afa2410a40ce6ae59d4e6a3b18e5c7
確認方法は、kern.maxvnodes が 300000 になっていれば良いっぽい:
https://apple.stackexchange.com/questions/323525/is-server-performance-mode-enabled-or-not
Catalina on Mac Mini Server Late 2011 で試してみたところ、確かにパラメータが変更された。
3.0.72 released on 13th July 2022 で、これらの問題が解決しています。以降は読み物として取り扱いください
VS Code のエディタ上で macOS 内蔵の 辞書.app (辞書ユーザガイド)の仕組みを使ってスペルチェックを提供する Spell Right 拡張機能があったのでメモ。
Spell Right 拡張機能は、辞書との連携を SpellChecker Node Module で実現しているが、これは、AppKit が提供する NSSpellChecker を呼び出している。
良さげだねと思ったが、
insiders build では、extension host process を再利用するための仕様変更が行われ、
Disable Library Validation Entitlement が追加され、署名されていないバイナリの呼び出しを拒否する設定が入り Spell Right 拡張機能は、これに引っかかってしまっていた。
最新の insiders build では、修正されたので大丈夫。
SpellChecker Node Module の Apple Silicon バイナリが、含まれていない。
拡張機能は、process.arch
で返ってきた文字と一致する SpellChecker を起動する仕組みだが、Apple Silicon では、arm64
を返すので、そもそもバイナリが含まれていないため利用できないとなる。
/lib/bindings.js
const nodeFiles = glob(path.join(__dirname, `bin/${baseName}*${process.arch}*.node`), { sync: true });
そして、Apple Silicon 用の SpellChecker Node Module を build する修正とバイナリが PR され merge された。
というわけで、Apple Silicon な環境で、Spell Right 拡張機能を利用する方法となる。
Intel な環境では大丈夫な感じ。
source code としては、準備は整っているが、修正を反映したパッケージが作成されない...ので、手順を作成してくれた良い人現る。
ただ、最新の vsce は、node.js 14.x が必要だったり、npm v7 が必要だったり、環境が整っていないと build できないので、どうしたものかなぁと調べていたら、下記の方法で build することなく利用できるようになった。
SpellRight: Select Dictionary (Language)
を実行し、English
を選択すれば、英語のスペルチェックが有効になるextension host process 再利用の仕様変更によるものなのか、VS Code のインスタンス数分?のアイコンが生成され、ちょっとバウンドした後に居座るようになる。ので、気にしない・・・:
macOS 版 Total War: WARHAMMERの日本語化。Total War: WARHAMMER II の日本語化は、このような手順は必要ない。
MacBook Air (M1, 2020), macOS Monterey 12.5.1, Steam 版で動作を確認
Total War: WARHAMMER を購入してインストールする
Total War: WARHAMMER の Workshop にて、JAPANESE Language MOD に subscribe する
Total War: WARHAMMER
JAPANESE Language MOD
https://steamcommunity.com/sharedfiles/filedetails/?id=1225787764
subscribe すると、mod file が下記のディレクトリ配下に download される。
このディレクトリのどこかに、mod_wh_lan_jp.pack
ファイルがあるので探す。
この mod の Steam における管理 ID は、1225787764
となるので、その下にあるはず。
$HOME/Library/Application Support/Steam/steamapps/workshop/
mod_wh_lan_jp.pack
ファイルを $HOME/Library/Application Support/Feral Interactive/Total War Warhammer/VFS/Local/mods
ディレクトリにコピーする
$HOME/Library/Application Support/Feral Interactive/Total War Warhammer/VFS/User/AppData/Roaming/The Creative Assembly/Warhammer/scripts
に、user.script.txt
ファイルを作成し、下記を 1 行追加しておく。
mod mod_wh_lan_jp.pack
※同一ディレクトリにある、preferences.script.txt
は、write_preferences_at_exit true;
が有効になっているため、ゲームを終了する度に書き換えられてしまう。これを write_preferences_at_exit false;
にして、書き換えが発生しないようにさせ、起動時に mod を読み込ませる技を説明しているところもあるが、user.script.txt
を利用すれば回避できる
Total War: WARHAMMER を起動する。Launcher の MOD Manager では、mod_wh_lan_jp
が off になっているように見えるが、それとは関係なく有効になってゲームを始めることができる
基本的には高い。日本だと 3万円前後。
ホスト接続用の TB3 ポートのほか、もう 1 ポートを持っている製品。
たくさんあるが低価格なやつを。
これらに共通して言えることだが、とにかく電源アダプタがでかい。でかすぎる。
これを Mac Mini 2012 で利用している。やりすぎると、新しい Mac mini か中古の Mac mini を買った方が良いことになるので注意。人は絶えず、何かと闘っている。
目的は、dock が欲しいのではなく、Thunderboolt のディジーチェーンをしたいとなる。
Upstream port を Apple TB3 to TB2 アダプタで TB2 に変換し、TB2 しか持たないマシンに TB3 デバイスを接続したいだけだが、TB3 デバイスの中には、上位の TB3 ポートから給電を必要とするバスパワー駆動製品があり、単に TB2 に変換しただけでは電力供給がないので動作しないことを回避したいのが狙い:
Apple Thunderbolt 3 (USB-C) - Thunderbolt 2 アダプタについて
このアダプタは Thunderbolt では受電しないため、外付けの Thunderbolt ディスプレイや、Thunderbolt での給電に対応したその他のデバイスにつないで Mac を充電することはできません。
ちょっと仕様が古いから安いのかな?
WAVLINK ものだけど、このモデルは DisplayLink はサポートされないので注意。
Cuctus Ridge (2012) ものだった。
Amazon なんだが、多分、これが最安なんじゃないだろうか (2021/1 現在 ¥15,768):
dock ではないが、デイジーチェーン用の Thunderbolt 3 ポートを 1 つ持っている PCI-E エンクロージャでも良い。
この類も、日本では高価になってしまうので、Amazon.com あたりから購入するのも良いかもしれないが、送料などが追加されると、あまり効果的ではないかもしれないので注意:
この領域に入ってくると、Thunderbolt 4 製品になってくる。
Thunderbolt 4 製品は、別途、driver が必要になるので、これらは、Big Sur でなければ利用できない。Catalina では本当に動かない。TB2 の多くは、Catalina 止まりだと思うので注意が必要。
US $249
US $149
SIdecar の接続と解除をトグルする Apple Script (日本語ロケール用)
下記、英語環境用の workflow を参考に
tell application "System Preferences"
activate
set the current pane to pane id "com.apple.preference.sidecar"
get the name of every anchor of pane id "com.apple.preference.sidecar"
delay 1
tell application "System Events"
set target_button to a reference to (first button whose name is "接続解除") of (window "Sidecar" of application process "システム環境設定")
if target_button exists then
click target_button
else
click menu button "デバイスを選択" of window "Sidecar" of application process "システム環境設定"
count menu items of menu of menu button "デバイスを選択" of window "Sidecar" of application process "システム環境設定"
select item 1 of menu button "デバイスを選択" of window "Sidecar" of application process "システム環境設定"
key code 125
key code 76
end if
end tell
quit
end tell
Acronis True Image 2021 for Mac が 1ヶ月の trial 可能(ディスククローニングができない)なので試してみているが、良い感じかもしれない:
The best backup software for Mac 2020
https://www.acronis.com/ja-jp/support/documentation/ATIMAC2021/index.html#41398.html
バックアップ ファイルの形式
Acronis True Image 2021 では、ローカルストレージまたはネットワークストレージに Mac をバックアップすると、バックアップデータが独自の .tib 形式または .tibx 形式に圧縮されて保存されます。.tib または .tibx ファイルのバックアップのデータは、Acronis True Image 2021 を使用した場合にのみ復元できます。Acronis Cloud に Mac をバックアップする場合、Acronis True Image 2021 はデータを「現状のまま」保存します。インターネットに接続された任意の Mac コンピュータで、製品またはAcronis Cloud Web アプリケーションを使用してデータをリカバリできます。
地味に Parallels Desktop サポートが入っている
https://www.acronis.com/ja-jp/support/documentation/ATIMAC2021/index.html#38619.html
サポートドキュメント:
https://www.acronis.com/ja-jp/support/trueimage/2021mac/
Mac mini Late 2012 以降搭載される Broadcom BCM57766 を Solaris で利用できないかのメモ:
Broadcom BCM57766
Broadcom BCM57762
2013 年頃に、onnv b147 に含まれる bge source を Solaris 11.1 で動くように修正して使っていた。
記念に github にあげておく:
出来上がった binary は Solaris 11.4 でも動いている。
BCM57762/BCM57766 サポートはないが、これをベースに Solaris 11.4 でも bge を単体 build できそう。
onnv b147 ベースではなく、こちらに切り替えたい。
NOTE: This driver is for OS versions that are no longer supported by Broadcom
-xregs=no%float
を指定するQiita の記事を macOS で Visual Studio Code を使うためのアレコレ (2021/01/01) を更新。
https://qiita.com/satokaz/items/6a6a0d9b6489ec2d1803
Apple M1 搭載の MacBook Air を手に入れたのと、Big Sur への移行を開始したので、その変のお話を追加。
※ Comment に記事のソース貼っとくといいね!とか思ってやってしまったが、GitHub Issues の link が含まれていると、その issue に自動的に link が作成されてしまうの後から気がついてしまった・・・
ひとまず、Issue を削除すればリンクは消えるっぽいので、それで対処(Comment だけ削除しても消えない)
GitHub Pull Requests and IssuesPreview 拡張機能にも似たような機能がある
Originally posted by @satokaz in #9 (comment)
Catalina では動作しないので注意。
Big Sur であれば問題く。
https://eshop.macsales.com/shop/owc-thunderbolt-hub
https://owcdigital.jp/WP/thunderbolt-hub/
良いレビュー:
OWC Thunderbolt Hub with M1 MacBook Pro: First Impressions
https://twitter.com/satokaz/status/1345301567075876865?s=21
サポートされる構成ではないことに注意
MacBook Pro Late 2013 を Big Sur にしたので試してみた。
必要なものは、下記のアダプタとケーブルのみ:
Thunderbolt 3(USB-C)- Thunderbolt 2アダプタ
双方向アダプタなので、ThunderboltポートまたはThunderbolt 2ポートとmacOS Sierra以降を搭載したMacに、新しいThunderbolt 3対応デバイスを接続することもできます。
アダプタが双方向対応なのがポイント。他社のアダプタもいくつかあるが、双方向に対応していないものが多いので、純正買っておくのが一番です。
接続は、簡単で Thunderbolt Hub のアップストリームポートに Apple TB3 to TB2 アダプタの TB3 を差し込み、あとは、TB2 ケーブルで本体と接続するだけ:
というわけで、アダプタとケーブルのコストが上乗せされるけど、Thunderbolt 2 搭載機でも利用できました。
ただし、これを接続した状態だと起動時や再起動時、りんごマークが表示されるか手前でダンマリとなってしまうので、OS が起動したら手動でケーブルを差し込む作業が必要だった。
MacBook Pro 13/15 共に、2015 年モデルまでは Thunderbolt 2 搭載なので、どうしてもという場合は利用価値はあるかもしれない。
とりあえず、動作確認したもの。
TB3 を 2 つ持っている RocketStore 6661A に OWC Thunderbolt HUB を接続し、もう一つの口に Apple TB3 to TB2 アダプタを介して MBP15 に接続してみたところ:
MacBook Pro Late 2013 との間は TB2 なので 20Gbps になってしまうが、OWC Thunderbolt Hub とそれに接続した Anker Elite 13-in-1 とそれに接続される USB デバイスや USB HDD を認識して利用できてる
こんなことするくらいなら、Mac mini 2018 の中古を買った方が良い。Mac mini 2018 の中古を買った方が良い。大事なことなので何度でも
2021 年だけど、Mac min Late 2012 がそれなりに使えてしまうので、もう少しだけ延命させてみる。
(意訳: 買い替えたいが、Mac mini 2018 が思ったほど値段が下がらず、なんか悔しいので)
Thunderboltポート(最大10 Gbps)x 1
Mac mini (Late 2012) - 技術仕様
https://support.apple.com/kb/SP659?locale=ja_JP&viewlocale=ja_JP
ヤベェ、さっきまで、Mac mini Late 2012 は Thunderbolt 2 だと思ってた。
#20 の Thunderdock SP/Thunderdock SP IV - Thunderbolt™ 3 4K Display Docking Station
を利用して 10GbE アダプタを接続しているの図:
iMac や Mac mini 2018/2020 の 10GbE オプションで搭載されるものと同じ Aquantia AQC107-B0 搭載。
Apple TB3 to TB2 アダプタを利用して TB2 マシンに接続しても、この接続方式では電源の供給がデバイスへできないため利用できない。どうしても利用したい場合は、PD 対応の TB3 Dock などを間に挟む事で Dock のアップストリーム側を TB2 変換してもいける。
そして、クソ熱い!
Mac mini Late 2012 + Thunderdock SP + Thunderbolt 3 to 10 Gigabit Ethernet RJ45 LAN Adapter と X1109A-Z の iperf3 は、7.0Gbps 程度なので、こんなものかという感じなのかな。
MBP16 にした場合は、9.8Gbps 出てるので、単に HW か Thunderbolt の帯域がボトルネックなのかなと:
TCP
kazus@Mac-mini-Late-2012 ~ % iperf3 -c 192.168.222.9 -T `hostname` -V
Mac-mini-Late-2012.local: iperf 3.9
Mac-mini-Late-2012.local: Mac-mini-Late-2012.local: Darwin Mac-mini-Late-2012.local 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64 x86_64
Control connection MSS 8948
Mac-mini-Late-2012.local: Time: Fri, 15 Jan 2021 14:21:41 UTC
Mac-mini-Late-2012.local: Connecting to host 192.168.222.9, port 5201
Mac-mini-Late-2012.local: Cookie: p5gq4l6pbhc4ifgwmi4vlwrne4zgepwyzsay
Mac-mini-Late-2012.local: TCP MSS: 8948 (default)
Mac-mini-Late-2012.local: [ 5] local 192.168.222.185 port 50485 connected to 192.168.222.9 port 5201
Mac-mini-Late-2012.local: Starting Test: protocol: TCP, 1 streams, 131072 byte blocks, omitting 0 seconds, 10 second test, tos 0
Mac-mini-Late-2012.local: [ ID] Interval Transfer Bitrate
Mac-mini-Late-2012.local: [ 5] 0.00-1.00 sec 836 MBytes 7.01 Gbits/sec
Mac-mini-Late-2012.local: [ 5] 1.00-2.00 sec 838 MBytes 7.03 Gbits/sec
Mac-mini-Late-2012.local: [ 5] 2.00-3.00 sec 831 MBytes 6.97 Gbits/sec
Mac-mini-Late-2012.local: [ 5] 3.00-4.00 sec 828 MBytes 6.95 Gbits/sec
Mac-mini-Late-2012.local: [ 5] 4.00-5.00 sec 840 MBytes 7.05 Gbits/sec
Mac-mini-Late-2012.local: [ 5] 5.00-6.00 sec 836 MBytes 7.02 Gbits/sec
Mac-mini-Late-2012.local: [ 5] 6.00-7.00 sec 830 MBytes 6.96 Gbits/sec
Mac-mini-Late-2012.local: [ 5] 7.00-8.00 sec 830 MBytes 6.96 Gbits/sec
Mac-mini-Late-2012.local: [ 5] 8.00-9.00 sec 832 MBytes 6.98 Gbits/sec
Mac-mini-Late-2012.local: [ 5] 9.00-10.00 sec 831 MBytes 6.97 Gbits/sec
Mac-mini-Late-2012.local: - - - - - - - - - - - - - - - - - - - - - - - - -
Mac-mini-Late-2012.local: Test Complete. Summary Results:
Mac-mini-Late-2012.local: [ ID] Interval Transfer Bitrate
Mac-mini-Late-2012.local: [ 5] 0.00-10.00 sec 8.14 GBytes 6.99 Gbits/sec sender
Mac-mini-Late-2012.local: [ 5] 0.00-10.00 sec 8.14 GBytes 6.99 Gbits/sec receiver
Mac-mini-Late-2012.local: CPU Utilization: local/sender 29.5% (5.9%u/23.6%s), remote/receiver 0.9% (0.2%u/0.7%s)
Mac-mini-Late-2012.local: rcv_tcp_congestion newreno
Mac-mini-Late-2012.local:
Mac-mini-Late-2012.local: iperf Done.
UDP:
kazus@Mac-mini-Late-2012 ~ % iperf3 -c 192.168.222.9 -T `hostname` -V -u
Mac-mini-Late-2012.local: iperf 3.9
Mac-mini-Late-2012.local: Mac-mini-Late-2012.local: Darwin Mac-mini-Late-2012.local 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64 x86_64
Control connection MSS 8948
Setting UDP block size to 8948
Mac-mini-Late-2012.local: Time: Fri, 15 Jan 2021 14:22:05 UTC
Mac-mini-Late-2012.local: Connecting to host 192.168.222.9, port 5201
Mac-mini-Late-2012.local: Cookie: nttehdycecp753waeet2e6pyzvwkez2niqg5
Mac-mini-Late-2012.local: Target Bitrate: 1048576
Mac-mini-Late-2012.local: [ 5] local 192.168.222.185 port 52006 connected to 192.168.222.9 port 5201
Mac-mini-Late-2012.local: Starting Test: protocol: UDP, 1 streams, 8948 byte blocks, omitting 0 seconds, 10 second test, tos 0
Mac-mini-Late-2012.local: [ ID] Interval Transfer Bitrate Total Datagrams
Mac-mini-Late-2012.local: [ 5] 0.00-1.00 sec 131 KBytes 1.07 Mbits/sec 15
Mac-mini-Late-2012.local: [ 5] 1.00-2.00 sec 131 KBytes 1.07 Mbits/sec 15
Mac-mini-Late-2012.local: [ 5] 2.00-3.00 sec 122 KBytes 1.00 Mbits/sec 14
Mac-mini-Late-2012.local: [ 5] 3.00-4.00 sec 131 KBytes 1.07 Mbits/sec 15
Mac-mini-Late-2012.local: [ 5] 4.00-5.00 sec 131 KBytes 1.07 Mbits/sec 15
Mac-mini-Late-2012.local: [ 5] 5.00-6.00 sec 122 KBytes 1.00 Mbits/sec 14
Mac-mini-Late-2012.local: [ 5] 6.00-7.00 sec 131 KBytes 1.07 Mbits/sec 15
Mac-mini-Late-2012.local: [ 5] 7.00-8.00 sec 131 KBytes 1.07 Mbits/sec 15
Mac-mini-Late-2012.local: [ 5] 8.00-9.00 sec 122 KBytes 1.00 Mbits/sec 14
Mac-mini-Late-2012.local: [ 5] 9.00-10.00 sec 131 KBytes 1.07 Mbits/sec 15
Mac-mini-Late-2012.local: - - - - - - - - - - - - - - - - - - - - - - - - -
Mac-mini-Late-2012.local: Test Complete. Summary Results:
Mac-mini-Late-2012.local: [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
Mac-mini-Late-2012.local: [ 5] 0.00-10.00 sec 1.25 MBytes 1.05 Mbits/sec 0.000 ms 0/147 (0%) sender
Mac-mini-Late-2012.local: [ 5] 0.00-10.00 sec 1.25 MBytes 1.05 Mbits/sec 8141107.804 ms 0/147 (0%) receiver
Mac-mini-Late-2012.local: CPU Utilization: local/sender 3.8% (0.7%u/3.1%s), remote/receiver 0.0% (0.0%u/0.0%s)
Mac-mini-Late-2012.local:
Mac-mini-Late-2012.local: iperf Done.
vscode の GitHub Issue Notebooks 拡張機能で遊んでみた:
The VS Code GitHub Issue notebook extension enables you to run issue queries from within VS Code so that queries and results are displayed interleaved - just like in other notebook applications.
GitHub にリポジトリとか関係なく適当な場所に .github-issues
という拡張子を持つ適当な名前をつけたファイルを用意し、それを開くことで利用可能。
0.0.95 かで
New GitHub Issue Notebook
コマンドが追加されたので、実行すれば、Unitiled-x.github-issues
を作成してくれるようになった。
$xxx に repo:リポジトリ名
をセットして、以降は、$xxx に対して Qualifier してゆく。
下記は、satokaz/hitorigoto リポジトリで自分(author:@me)が立てた、まだ close されていない issue (is:open) を表示する例:
$hitorigoto=repo:satokaz/hitorigoto
$hitorigoto author:@me is:open
Issue およびプルリクエストを検索する に従って、Issue や PR を検索できる。
.github-issues
が置かれているリポジトリのみという事ではなく、それ以外も対象にできる:
下記は、microsoft/vscode リポジトリの issues の中身に "big sur" という keyword を含んで作成された Issue を新しい日付から順にソートして表示する:
$vscode=repo:microsoft/vscode
$vscode "big sur" sort:created-desc in:body
ちなみに、検索結果のところに Open 94 results
と見えるが、こいつをクリックすると検索にヒットした全ての Issue をブラウザの tab で開きにゆくので注意:
Originally posted by @satokaz #24 (reference)
OCI オブジェクト・ストレージ互換機能は、OCI オブジェクト・ストレージ native API を提供する。
そのため、OCI オブジェクト・ストレージ native API を叩けるクライアントが必要になるが、これを OCI CLI で代用する。
例えば、OCI CLI を改変する必要なく、oci os
コマンドで基本機能の操作ができる。
インストールについては、下記の記事で:
ここで説明する方法は、oci setup config
により、ZFS Storage Appliance の OCI オブジェクト・ストレージ互換機能を利用するためだけのセットアップとなる。
すでに、OCI CLI をインストールしていたり、使いこなしている場合は、プロファイルを手動で追加する。
OCI CLI のインストールは完了し、oci コマンドを叩ける状態になっていなら、下記を実行する:
% oci setup config
重要になるのは、下記:
ocid1.user.oc1..
)に沿った値を入力する必要がある上記を踏まえて、OCI オブジェクト・ストレージ互換機能を利用するために必要な入力項目は下記のようになる:
Enter a user OCID:
には、ocid1.user.oc1..kazus
(kazus の部分は、ZFS Storage Appliance に作成したユーザー名)Enter a tenancy OCID:
には、ocid1.tenancy.oc1..nobody
(nobody の部分は適当に)Enter a region by index or name(e.g.
には 適当なリージョンを選択
本物 user OCID を持っているなら、ocid1.user.oc1..
より後ろの値をユーザー名として ZFS Storage Appliance に登録するのもありのような気がするが、なんとも言えない。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.