古いmixed mode CDをバックアップする

CD EXTRAができる前にはmixed mode CDというのがあったはずで、私の持っているCDの中にはこのmixed mode CDの仕様に従っているものがある。 例えばWindows 11では、オーディオCDとして再生もできるし、写真の含まれたCD-ROMとしても同時に認識される。 これをNetBSDで再生したいのだが、全てを同時に満足するような方法は見付けられなかった。 だが、結果としてcdrdaoでバックアップしておけば、バックアップしたことになるようだ。

cdrdaoでバックアップする

cdrdaoでバックアップする方法は前回説明した通りで良い。 ただ、第1トラックはオーディオではなくデータが入っている。 cdrdaoコマンドを実行した時の表示で、それを見ることができる。

$ cdrdao read-cd --datafile file.bin --driver generic-mmc:0x20000 --device /dev/
cd0 --read-raw file.toc
Cdrdao version 1.2.4 - (C) Andreas Mueller <andreas@daneb.de&be;
/dev/cd0: PIONEER BD-RW   BDR-XD08      Rev: 1.02
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x20000)

Reading toc and track data...

Track   Mode    Flags  Start                Length
------------------------------------------------------------
 1      DATA    4      00:00:00(     0)     02:36:34( 11734)
 2      AUDIO   0      02:36:34( 11734)     02:42:02( 12152)
 3      AUDIO   0      05:18:36( 23886)     04:31:63( 20388)
 4      AUDIO   0      09:50:24( 44274)     04:04:02( 18302)
 5      AUDIO   0      13:54:26( 62576)     04:38:10( 20860)
 6      AUDIO   0      18:32:36( 83436)     06:09:15( 27690)
 7      AUDIO   0      24:41:51(111126)     04:32:10( 20410)
 8      AUDIO   0      29:13:61(131536)     06:06:04( 27454)
 9      AUDIO   0      35:19:65(158990)     03:51:03( 17328)
10      AUDIO   0      39:10:68(176318)     03:56:04( 17704)
11      AUDIO   0      43:06:72(194022)     06:12:16( 27916)
12      AUDIO   0      49:19:13(221938)     00:06:04(   454)
Leadout AUDIO   0      49:25:17(222392)

PQ sub-channel reading (data track) is supported, data format is BCD.
Raw P-W sub-channel reading (data track) is supported.
PQ sub-channel reading (audio track) is supported, data format is BCD.
Raw P-W sub-channel reading (audio track) is supported.
Copying data track 1 (MODE1_RAW): start 00:00:00, length 02:34:34 to "file.bin"...

データトラックを抽出する

これをmplayerで再生すると、第1トラックはホワイトノイズのような内容になってしまう。 それは避けようがないとして、第1トラックを抽出したい。 bchunkコマンドを使えば良いようだ。 まず、以下のようにインストールする。

# /usr/pkgsrc/sysutils/bchunk
# make install

これで、各トラックをファイルとして抽出する。 これにより、tracl01.isoと第2トラックからのtrack02.cdrといったファイルが生成される。

$ bchunk file.bin file.cue track

この第1トラックの分のISOファイルは、以下のようにマウントすれば良い。

# vndconfig vnd0 ./track01.iso
# mount_cd9660 /dev/vnd0a /mnt/cdrom

一方で、オーディオトラックの分のcdrファイルは以下のように再生できる。

$ mplayer -demuxer rawaudio -rawaudio rate=44100:channels=2:samplesize=2:format=0x10001 track02.cdr

オーディオCDをバックアップして再生する

私は何かをしながら音楽をきくと全く音楽を無視してしまうので、音楽を聞く習慣がなく、オーディオCDもほとんど持っていない。 だが、持っているものはあって、それらは20世紀のものなので、いつ劣化して再生できなってもおかしくない気がする。 と言うことで、バックアップしたいと思う。 全く知識がないのだが、binまたはimgというイメージファイルと、tocまたはcueファイルを組み合わせるのが一般的なようだ。 ウェブを調べても新しい情報はあまりないが、もうオーディオCDを扱いたいという人がいなくなって来ているのかもしれない。

pkgsrc/sysutils/cdrdaoでbin+cueを作る

cdrdaoコマンドを使えばbinファイルとtocファイルを作ることができ、toc2cueコマンドを使えばtocファイルをcueファイルに変換できるようだ。 と言うことで、cdrdaoパッケージをインストールする。

# cd /usr/pkgsrc/sysutils/cdrdao
# make install

以下のように実行すれば、binファイルを作ることができる。 ここで、--driver generic-mmc:0x20000を付けたのは、このbinファイルをそのままでmplayerで再生できるようにするためだ。 続けてtocファイルをcueファイルに変換する。

$ cdrdao read-cd --datafile file.bin --driver generic-mmc:0x20000 --device /dev/cd0 --read-raw file.toc
$ toc2cue file.toc file.cue

これをmplayerで再生するとする。 まずはmplayerをインストールする。

# cd /usr/pkgsrc/multimedia/mplayer
# make install

cueファイルに合わせてmplayerで各トラックを再生するのは、以下のようにすれば良い。 以下では、現在のディレクトリーにあるcueファイルを使ってbinファイルの2トラック目を再生する。

$ mplayer -demuxer rawaudio cue://file.cue:2

トラックに関係なく再生するのであれば、以下のようでも良い。

$ mplayer -demuxer rawaudio file.bin

binファイルを再生するのは、mplayerでは可能なのだが、手元にあるqmmp-1.7.11ではできなかった。 しかし、cueファイル自体はflacファイルに対しても利用できるようなので、以下のようにflacコマンドをインストールしてflacファイルに変換した。

# cd /usr/pkgsrc/audio/flac
# make install
$ flac --best --force-raw-format --endian=little --channels=2 --bps=16 --sample-rate=44100 --sign=signed --cuesheet=./file.cue --output-name=./file.flac ./file.bin

更に、cueファイル中のファイル名を更新しておく必要がある。

--- file.cue   2026-08-22 19:12:27.532711497 +0900
+++ file-flac.cue        2026-08-22 19:12:38.416281352 +0900
@@ -1,4 +1,4 @@
-FILE "file.bin" BINARY
+FILE "file.flac" BINARY
   TRACK 01 MODE1/2352
     INDEX 01 00:00:00
   TRACK 02 AUDIO

これであれば、qmmpでcueファイルを指定して再生することができる。

HP ProLiant ML110 G7のiLO3のリモートコンソールに、Windows 11 25H2からアクセスする

HP ProLiant ML110 G7のiLO3は、既にサポートが切れているので、リモートコンソールをウェブブラウザーから使うには、ActiveXかJava Web Startのいずれかが必要になる。

Windows 11では既にスタンドアローンのInternet Explorer 11は利用できないし、Microsoft EdgeでIEモードを有効化するのも、エンタープライズでなければ維持するのも面倒だ。もちろん、以下のようにVBScriptで書いておけばInternet Explorer 11を起動させることはできる。

> type ie.vbs
Dim ieLauncher
Set ieLauncher = WScript.CreateObject("InternetExplorer.Application")
ieLauncher.Visible = True
ieLauncher.Navigate "https://10.0.0.2/"

ここで、https://10.0.0.2/が、iLO3のウェブユーザーインターフェイスのURIである。リモートコンソール以外の設定をするには、このウェブユーザーインターフェイスは役に立つので、このVBScriptのスクリプトを用意しておく価値はある。

HPは、iLO3に接続するためのスタンドアローンのクライアントソフトウェアであるHPE Lights-Out Standalone Remote Console for Windowsを提供している。電源ボタン類の操作や、仮想ドライブも利用できる。

NetBSD上のLibreOffice CalcでVisual Basic for Application互換のスクリプティングを試してみる

以前に、「LibreOfficeでVBAプログラミング入門」藤井敏則著という本を電子書籍で読んだことがあって、その要点は、StarBasicの後継であるLibreOffice BasicをLibreOfficeのスプレッドシートであるCalcで使う場合にOption VBAsupport 1を最初に書いておけば、Visual Basic for Application (VBA)互換の文法が許容されるようになると言うことであった。LibreOfficeであれば、Windows用であればPythonインタープリターも付属していて自動的にインストールされるので、LibreOffice Basicを選ぶのが良いのかは分からないが、VBA互換というのは多くの人には良いものかもしれない。

しかし、この書籍には、この機能を使うにはJDKを利用できるようにしておかないといけないという記述があった。手元のNetBSD/amd64 11.99.7上のLibreOffice 26.2.5.2では、JDKを設定しておかなくてもVBA互換機能を利用することができた。この書籍は6.4.1.2の時点で書かれているので、もしかしたら変わったのかもしれないが、それなりの期間LibreOfficeを使って、pkgsrcパッケージを保守している感覚では、6.4.1.2より後にJDKが必要なくなったと考えるのは違うような直感もある。

いずれにしても、NetBSD上のLibreOfficeでもVBA互換機能は利用できるのが分かったので、何かの時には役立てられるかもしれない。

Firefoxのcontainer tabsを有効にする

最近のFirefoxは他のタブとcookie等と共有しないcontainer tabsという機能がある。 だが、私の使っているFirefoxでは有効になっていなかった。 NetBSDだけでなくWindowsでも同様である。 いずれにしても、利用したい機能ではあるので、about:configで以下の2つを設定して、有効化した。

privacy.userContext.enabled
privacy.userContext.ui.enabled

リモートのサーバーのバックアップを、ローカルネットワーク内のマシンに取得する

とあるVPSサービスを使ったサーバーがあるのだが、これはディスクの残容量が非常に少ない。 なので、そのVPSのディスクにtarballを作って、それを手元にコピーして来るということができない。 しかも、sshでログインできないユーザーだけが読み込みできるディレクトリーやファイルも存在する (rootが所有者で、パーミッションが700なディレクトリーや600なファイルがあると思えば良い)。 ryoonというユーザーがsshでログインできるユーザーであり、 rootユーザーがsshでログインできないユーザーである。

ここで、バックアップ元のVPSのホスト名をremoteserverとし、バックアップ先のサーバーのホスト名をlocalnetserverとしよう。 remoteserverはグローバルIPアドレスを持ち世界中のどこからもアクセスできるが、localnetserverは自宅のローカルネットワーク内にあるサーバーで外部からはアクセスできない。 つまり、localnetserverからremoteserverへsshで接続できるが、逆は不可能である。

以下のようにremoteserverで設定した上で、localnetserverで操作すれば、rootユーザーとしてtarballを作って手元にパイプ経由で取得できる。 以前はssh portforwardingを使って複雑な操作をしていたのだが、そのようなことは不要にできる。

まず、sshでログインできるryoonユーザーのログインパスワードを返すシェルスクリプトを用意しておく。 これはryoonユーザーだけが内容を見ることができ、実行もできるべきである。
remoteserver$ cat /home/ryoon/sudo-askpass
#!/bin/sh

echo "sudoコマンドへ渡すryoonユーザーのログインパスワード"

remoteserver$ chmod 700 /home/ryoon/sudo-askpass

このsudo-askpassコマンドを使って、sudoコマンドにryoonユーザーのログインパスワードを渡すようにして(つまりsudoコマンドに-Aオプションを与えて)、tarコマンドを実行させる。 また、remoteserverにはUTF-8なファイル名を持つファイルがあり、BSD tarコマンドはこれに対して警告メッセージを表示する。 これがlocalnetserverにパイプ経由で送られて来るtarballに含まれていると不正なtarballになってしまうので、標準エラー出力は/dev/nullに捨てる。

/path/to/parent/directoryというディレクトリー内にあるbackuptargetdirectoryというディレクトリーをバックアップするとすれば、以下のようにlocalnetserverで実行すれば良い。

localnetserver$ ssh ryoon@remoteserver "SUDO_ASKPASS=/home/ryoon/sudo-askpass sudo -A tar cfp - -C /path/to/parent/directory backuptargetdirectory" > backup.tar

私はremoteserverlocalnetserverも非力なマシンを利用していて、転送量へは課金されない環境なので、圧縮せずtarアーカイブのまま扱っている。 CPUもストレージもパワフルなマシンに移動させた後にxz -T 0 -9で圧縮することになる。

第11世代のIntel Core i7-1180G7というCPUを搭載したPC上のWindows 11で、Intel QSVを使ってFFmpeg 8.1.1でH.264からH.265にトランスコードする

NetBSD-currentでは、IntelのIntegrated GPUはKabyLake Refreshの世代までしかサポートされていないはずである。 もちろん、KabyLake Refresh以前の世代でもFFmpegでH.265にエンコードできる。 だが、思ったより速く処理できない。 NetBSD上だと、VA-API経由なのがいけないのかもしれないし、他の要因なのかもしれない。 Fedora Linuxでも変わったようには見えなかったので、そもそも思ったより速く処理はできるのかもしれない。

と言うことで、手元にある最新のIntel CPUで試してみることにした。 だが、そのCPUを搭載したマシンは他の仕事もあるので、Windows 11 Pro 25H2がインストールされている。 この環境のままで、FFmpegでH.264のビデオファイルをH.265にトランスコードすることにした。

具体的には、CODEX FFMPEGからFFmpeg 8.1.1 (ffmpeg-8.1.1-full_build.7z)をダウンロードして展開し、 以下のようなコマンドでトランスコードすれば良い。 どうやら、-sharedの方の配布物ではちゃんと動かないようだった。

/path/to/ffmpeg-8.1.1/bin/ffmpeg.exe \
      -hwaccel qsv \
      -hwaccel_output_format qsv \
      -i input.mp4 \
      -c:a copy \
      -c:v hevc_qsv \
      -tag:v hvc1 \
      -preset veryfast \
      -vf vpp_qsv=deinterlace=2 \
      -global_quality 30 \
      output.mp4

H.264形式のファイルであるinput.mp4は、インターレースなファイルなのだが、そうであっては不便なので、 -vf vpp_qsv=deinterlace=2を指定して、Intel QSVのデインターレースフィルターを使って解消している。

ちなみに、これだと実時間の5から7倍の速度でトランスコードできる。 また、ディスプレイがオフになると、場合によってはエラーが発生する。 ディスプレイを常時オンにする設定をしておけば、エラーは発生しない。

古いmixed mode CDをバックアップする

CD EXTRAができる前にはmixed mode CDというのがあったはずで、私の持っているCDの中にはこのmixed mode CDの仕様に従っているものがある。 例えばWindows 11では、オーディオCDとして再生もできるし、写真の含まれたCD-ROMとしても...