USB DbC を使ったシリアルコンソール 20240716 版 [接続] USB3 に対応した 2台のマシンを、A-A クロスケーブルで接続する。 マシンA --- マシンB ケーブルは https://www.amazon.co.jp/dp/B00O4VPY7U より入手できる。 A がシリアルコンソールを提供する側、Bがアクセスに使う端末とする。 次の条件に注意すること。 ・AはUEFI で起動する 14.x 系の FreeBSD/amd64 でなければならない。 BはUEFI 起動でなくても良く、amd64 以外でも動作するが、 ダウンロード可能な tarball は amd64 版しか用意していない ・Aには直接クロスケーブルを接続すること。B に至る接続の途中は USB ハブを経由しても良い [準備] まず A, B 両方に 14.x のシステムを入れる。 https://people.allbsd.org/~hrs/FreeBSD/udbc/20240716/ から udbc-kernel-14-20240716.tar.gz udbc-loader-14-20240716.tar.gz をダウンロードする。amd64 版。7/13 時点の stable/14 のほぼ GENERIC なカーネル(DDB と udbcドライバを追加)。 マシンAは、kernel と loader を両方展開する。kernel は /boot/kernel.new に、loader は /boot/efi に展開される。ルートディレクトリで展開すると loader が上書きされてしまうので、事前にバックアップを取ること。 マシンBは、kernel の tarball に入っている udbc ドライバのみ必要で、loader は不要。loader プロンプトから boot kernel.new として起動すれば良い。 [使い方] B を起動し、udbc ドライバがロードされていることを確認する。確認したらケーブルを接続しておく。 % kldstat | grep udbc 16 1 0xffff000141da0000 22000 udbc.ko A を起動し、ローダプロンプトで止める。この時点でケーブルが接続されていれば、B の udbc ドライバが認識して /dev/cuaU0 が現れるはずである。B では、tip(1) 等のコマンドで cuaU0 に接続して待機する。 machine-B # tip ucom1 マシン A 側では、OK プロンプトが出たら console 変数を udbc にセットする。 OK set console="udbc efi" Enter を押下した直後から、入力・出力ともにマシン B 側の cuaU0 が使えるようになる。マシンBのキーボード・スクリーンも efi が指定されているので使用できる。 OK set console=udbc とすると、キーボードからの操作はできなくなり、マシンBのみになる。 カーネルを起動した直後に USB の接続が一度切れる。カーネル側の機能はコードそのものは入っているが、まだ正常に動作していない。 [EOT]