HP ProLiant ML110 G7に32GBのメモリーを搭載する

HP ProLiant ML110 G7 Server Maintenance and Service Guideの62ページ目には、以下のように記載されている。

General DIMM slot population guidelines

  • The server has four memory slots.
  • The server supports two channels with two UDIMM slots per channel.
  • Memory channel A consists of the two UDIMMs that are closest to the processor.
  • Memory channel B consists of the two UDIMMs that are located farthest from the processor.
  • Different types of processors have different types of memory support.
  • The server supports dual-rank, 1,333 MT/s ECC UDIMMs.
  • The server supports up to 16 GB (4x4-GB) for UDIMMs.

つまり、4GBのECC Unbuffered DIMM 4枚で、16GBがメモリー上限容量ということになっている。 だが、8GBのECC Unbuffered DIMM 4枚を挿してみたことろ、32GBのメモリーとして問題なく認識された。 PC3とPC3Lそれぞれ2枚ずつしか手元になかったのだが、この構成でも問題なかった。 もちろん、PC3 2枚、PC3L 2枚で、それぞれ組にして挿してある。

CPUも、購入時にIntel CeleronからIntel Xeon E31220に換装してある。 高負荷になるマシンではないのだが、手頃な価格で入手できたので、まだしばらく使い続けられそうだ。 NetBSD/amd64 11のdmesgは以下のようになった。

Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
    2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
    2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
    2024, 2025, 2026
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 11.0_STABLE (GENERIC) #0: Thu Sep 24 00:37:32 JST 2026
	ryoon@ruthenium:/usr/world/11/amd64/obj/sys/arch/amd64/compile/GENERIC
total memory = 32733 MB
avail memory = 31640 MB
timecounter: Timecounters tick every 10.000 msec
Kernelized RAIDframe activated
timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100
mainbus0 (root)
ACPI: RSDP 0x00000000000F4F00 000024 (v02 HP    )
ACPI: XSDT 0x00000000F1E34A80 0000A4 (v01 HP     ProLiant 00000002 ??   0000162E)
ACPI: FACP 0x00000000F1E34B80 0000F4 (v03 HP     ProLiant 00000002 ??   0000162E)
Firmware Warning (ACPI): Invalid length for FADT/Pm1aControlBlock: 32, using default 16 (20241212/tbfadt-850)
Firmware Warning (ACPI): Invalid length for FADT/Pm2ControlBlock: 32, using default 8 (20241212/tbfadt-850)
ACPI: DSDT 0x00000000F1E34C80 001A41 (v01 HP     DSDT     00000001 INTL 20030228)
ACPI: FACS 0x00000000F1E34100 000040
ACPI: SPCR 0x00000000F1E34140 000050 (v01 HP     SPCRRBSU 00000001 ??   0000162E)
ACPI: MCFG 0x00000000F1E341C0 00003C (v01 HP     ProLiant 00000001      00000000)
ACPI: HPET 0x00000000F1E34200 000038 (v01 HP     ProLiant 00000002 ??   0000162E)
ACPI: FFFF 0x00000000F1E34240 000064 (v02 HP     ProLiant 00000002 ??   0000162E)
ACPI: SPMI 0x00000000F1E342C0 000040 (v05 HP     ProLiant 00000001 ??   0000162E)
ACPI: ERST 0x00000000F1E34300 0001D0 (v01 HP     ProLiant 00000001 ??   0000162E)
ACPI: APIC 0x00000000F1E34500 000252 (v01 HP     ProLiant 00000002      00000000)
ACPI: FFFF 0x00000000F1E34780 000176 (v01 HP     ProLiant 00000001 ??   0000162E)
ACPI: BERT 0x00000000F1E34900 000030 (v01 HP     ProLiant 00000001 ??   0000162E)
ACPI: HEST 0x00000000F1E34940 0000BC (v01 HP     ProLiant 00000001 ??   0000162E)
ACPI: DMAR 0x00000000F1E34A00 000070 (v01 HP     ProLiant 00000001 ??   0000162E)
ACPI: SSDT 0x00000000F1E36700 000125 (v03 HP     CRSPCI0  00000002 HP   00000001)
ACPI: SSDT 0x00000000F1E36840 000573 (v03 HP     riser0   00000002 INTL 20030228)
ACPI: SSDT 0x00000000F1E36DC0 00014B (v01 HP     pcc      00000001 INTL 20090625)
ACPI: SSDT 0x00000000F1E36F40 0008D4 (v01 INTEL  PPM RCM  80000001 INTL 20061109)
ACPI: 5 ACPI AML tables successfully acquired and loaded
ioapic0 at mainbus0 apid 8: pa 0xfec00000, version 0x20, 24 pins
cpu0 at mainbus0 apid 0
cpu0: Use lfence to serialize rdtsc
cpu0: Intel(R) Xeon(R) CPU E31220 @ 3.10GHz, id 0x206a7
cpu0: node 0, package 0, core 0, smt 0
cpu1 at mainbus0 apid 2
cpu1: Intel(R) Xeon(R) CPU E31220 @ 3.10GHz, id 0x206a7
cpu1: node 0, package 0, core 1, smt 0
cpu2 at mainbus0 apid 4
cpu2: Intel(R) Xeon(R) CPU E31220 @ 3.10GHz, id 0x206a7
cpu2: node 0, package 0, core 2, smt 0
cpu3 at mainbus0 apid 6
cpu3: Intel(R) Xeon(R) CPU E31220 @ 3.10GHz, id 0x206a7
cpu3: node 0, package 0, core 3, smt 0
acpi0 at mainbus0: Intel ACPICA 20241212
acpi0: X/RSDT: OemId <HP    ,ProLiant,00000002>, AslId <  <2147483602>^D,0000162e>
acpi0: MCFG: segment 0, bus 0-63, address 0x00000000f4000000
acpi0: SCI interrupting at int 9
acpi0: fixed power button present
timecounter: Timecounter "ACPI-Fast" frequency 3579545 Hz quality 1000
hpet0 at acpi0: high precision event timer (mem 0xfed00000-0xfed00400)
timecounter: Timecounter "hpet0" frequency 14318180 Hz quality 2000
ipmi_acpi0 at acpi0 (MI0, IPI0001-0): io 0xca2-0xca3
ipmi0 at ipmi_acpi0
attimer1 at acpi0 (TIME, PNP0100): io 0x40-0x43 irq 0
pcppi1 at acpi0 (BEEP, PNP0800): io 0x61
spkr0 at pcppi1: PC Speaker
wsbell at spkr0 not configured
midi0 at pcppi1: PC speaker
sysbeep0 at pcppi1
com0 at acpi0 (COMA, PNP0501-0): io 0x3f8-0x3ff irq 4
com0: ns16550a, 16-byte FIFO
pckbc1 at acpi0 (KBD, PNP0303) (kbd port): io 0x60,0x64 irq 1
pckbc2 at acpi0 (PS2M, PNP0F13) (aux port): irq 12
acpitz0 at acpi0 (THM0): cpu0
acpitz0: levels: critical 31.3 C, passive 9.8 C, passive cooling
apei0 at acpi0: ACPI Platform Error Interface
apei0: BERT: OemId <HP    ,ProLiant,00000001> AslId <  <2147483602>^D,0000162e>
apei0: BERT: 0x40 bytes at 0xf1e3e000
apei0: BERT: no boot errors recorded
apei0: ERST: OemId <HP    ,ProLiant,00000001> AslId <  <2147483602>^D,0000162e>
apei0: ERST: 0 records in error log 0 bytes @ 0x0 attr=0#
apei0: HEST: OemId <HP    ,ProLiant,00000001> AslId <  <2147483602>^D,0000162e>
apei0: HEST: 3 hardware error sources
apei0: autoconfiguration error: HEST[0, Id=6]: unimplemented type: 0x0006
apei0: autoconfiguration error: HEST[1, Id=7]: unimplemented type: 0x0007
apei0: autoconfiguration error: HEST[2, Id=8]: unimplemented type: 0x0008
attimer1: attached to pcppi1
pckbd0 at pckbc1 (kbd slot)
pckbc1: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard
pms0 at pckbc1 (aux slot)
pckbc1: using irq 12 for aux slot
wsmouse0 at pms0 mux 0
pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
pchb0 at pci0 dev 0 function 0: Intel Sandy Bridge (server) Host Bridge (rev. 0x09)
ppb0 at pci0 dev 1 function 0: Intel Sandy Bridge (desktop) PCIe Root port (rev. 0x09)
ppb0: PCI Express capability version 2 <Root Port of PCI-E Root Complex> x16 @ 5.0GT/s
pci1 at ppb0 bus 4
pci1: i/o space, memory space enabled, rd/line, wr/inv ok
ppb1 at pci0 dev 6 function 0: Intel product 010d (rev. 0x09)
ppb1: PCI Express capability version 2 <Root Port of PCI-E Root Complex> x4 @ 5.0GT/s
pci2 at ppb1 bus 7
pci2: i/o space, memory space enabled, rd/line, wr/inv ok
ehci0 at pci0 dev 26 function 0: Intel 6 Series Chipset Family USB (rev. 0x05)
ehci0: 64-bit DMA
ehci0: interrupting at ioapic0 pin 21
ehci0: BIOS has given up ownership
ehci0: EHCI version 1.0
ehci0: Using DMA subregion for control data structures
usb0 at ehci0: USB revision 2.0
ppb2 at pci0 dev 28 function 0: Intel 6 Series Chipset Family PCIe Root Port 1 (rev. 0xb5)
ppb2: PCI Express capability version 2 <Root Port of PCI-E Root Complex> x4 @ 5.0GT/s
pci3 at ppb2 bus 10
pci3: i/o space, memory space enabled, rd/line, wr/inv ok
ppb3 at pci0 dev 28 function 4: Intel 6 Series Chipset Family PCIe Root Port 5 (rev. 0xb5)
ppb3: PCI Express capability version 2 <Root Port of PCI-E Root Complex> x1 @ 5.0GT/s
ppb3: link is x1 @ 2.5GT/s
pci4 at ppb3 bus 2
pci4: i/o space, memory space enabled, rd/line, wr/inv ok
wm0 at pci4 dev 0 function 0, 64-bit DMA: Intel i82574L (rev. 0x00)
wm0: for TX and RX interrupting at msix0 vec 0 affinity to 1
wm0: for TX and RX interrupting at msix0 vec 1 affinity to 2
wm0: for LINK interrupting at msix0 vec 2
wm0: PCI-Express bus
wm0: 2048 words (8 address bits) SPI EEPROM, version 2.1.2, Image Unique ID ffffffff
wm0: ASPM L0s and L1 are disabled to workaround the errata.
wm0: RX packet buffer size: 20KB
wm0: Ethernet address XX:XX:XX:XX:XX:XX
wm0: 0x224040<SPI,PCIE,ASF_FIRM,WOL>
makphy0 at wm0 phy 1: Marvell 88E1149 Gigabit PHY, rev. 1
makphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
ppb4 at pci0 dev 28 function 5: Intel 6 Series Chipset Family PCIe Root Port 6 (rev. 0xb5)
ppb4: PCI Express capability version 2 <Root Port of PCI-E Root Complex> x1 @ 5.0GT/s
ppb4: link is x1 @ 2.5GT/s
pci5 at ppb4 bus 3
pci5: i/o space, memory space enabled, rd/line, wr/inv ok
wm1 at pci5 dev 0 function 0, 64-bit DMA: Intel i82574L (rev. 0x00)
wm1: for TX and RX interrupting at msix1 vec 0 affinity to 1
wm1: for TX and RX interrupting at msix1 vec 1 affinity to 2
wm1: for LINK interrupting at msix1 vec 2
wm1: PCI-Express bus
wm1: 2048 words (8 address bits) SPI EEPROM, version 2.1.0, Image Unique ID ffffffff
wm1: ASPM L0s and L1 are disabled to workaround the errata.
wm1: RX packet buffer size: 20KB
wm1: Ethernet address XX:XX:XX:XX:XX:XY
wm1: 0x224040<SPI,PCIE,ASF_FIRM,WOL>
makphy1 at wm1 phy 1: Marvell 88E1149 Gigabit PHY, rev. 1
makphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
ppb5 at pci0 dev 28 function 6: Intel 6 Series Chipset Family PCIe Root Port 7 (rev. 0xb5)
ppb5: PCI Express capability version 2 <Root Port of PCI-E Root Complex> x1 @ 5.0GT/s
pci6 at ppb5 bus 13
pci6: i/o space, memory space enabled, rd/line, wr/inv ok
ppb6 at pci0 dev 28 function 7: Intel 6 Series Chipset Family PCIe Root Port 8 (rev. 0xb5)
ppb6: PCI Express capability version 2 <Root Port of PCI-E Root Complex> x1 @ 5.0GT/s
ppb6: link is x1 @ 2.5GT/s
pci7 at ppb6 bus 1
pci7: i/o space, memory space enabled, rd/line, wr/inv ok
Hewlett-Packard iLO3 Slave (miscellaneous system, revision 0x05) at pci7 dev 0 function 0 not configured
vga0 at pci7 dev 0 function 1: Matrox MGA G200eH (rev. 0x00)
wsdisplay0 at vga0 kbdmux 1: console (80x25, vt100 emulation), using wskbd0
wsmux1: connecting to wsdisplay0
drm at vga0 not configured
Hewlett-Packard iLO3 Management (miscellaneous system, revision 0x05) at pci7 dev 0 function 2 not configured
uhci0 at pci7 dev 0 function 4: Hewlett-Packard iLO3 Virtual USB (rev. 0x02)
uhci0: interrupting at msi2 vec 0
usb1 at uhci0: USB revision 1.0
ehci1 at pci0 dev 29 function 0: Intel 6 Series Chipset Family USB (rev. 0x05)
ehci1: 64-bit DMA
ehci1: interrupting at ioapic0 pin 20
ehci1: BIOS has given up ownership
ehci1: EHCI version 1.0
ehci1: Using DMA subregion for control data structures
usb2 at ehci1: USB revision 2.0
ppb7 at pci0 dev 30 function 0: Intel 82801BA Hub-PCI Bridge (rev. 0xa5)
pci8 at ppb7 bus 19
pci8: i/o space, memory space enabled
ichlpcib0 at pci0 dev 31 function 0: Intel C204 LPC (rev. 0x05)
timecounter: Timecounter "ichlpcib0" frequency 3579545 Hz quality 1000
ichlpcib0: 24-bit timer
tco0 at ichlpcib0: TCO (watchdog) timer configured.
tco0: autoconfiguration error: TCO timer reboot disabled by hardware; hope SMBIOS properly handles it.
tco0: Min/Max interval 1/367 seconds
ahcisata0 at pci0 dev 31 function 2: Intel 6 Series Chipset Family AHCI 1 (rev. 0x05)
ahcisata0: 64-bit DMA
ahcisata0: AHCI revision 1.30, 6 ports, 32 slots, CAP 0xff32ff45<EMS,PSC,SSC,PMD,SPM,ISS=0x3=Gen3,SCLO,SAL,SALP,SSS,SMPS,SSNTF,SNCQ,S64A>
ahcisata0: interrupting at msi3 vec 0
atabus0 at ahcisata0 channel 0
atabus1 at ahcisata0 channel 1
atabus2 at ahcisata0 channel 2
atabus3 at ahcisata0 channel 3
atabus4 at ahcisata0 channel 4
atabus5 at ahcisata0 channel 5
isa0 at ichlpcib0
com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, 16-byte FIFO
acpicpu0 at cpu0: ACPI CPU
acpicpu0: C1: FFH, lat   1 us, pow  1000 mW
coretemp0 at cpu0: thermal sensor, 1 C resolution, Tjmax=94
acpicpu1 at cpu1: ACPI CPU
coretemp1 at cpu1: thermal sensor, 1 C resolution, Tjmax=94
acpicpu2 at cpu2: ACPI CPU
coretemp2 at cpu2: thermal sensor, 1 C resolution, Tjmax=94
acpicpu3 at cpu3: ACPI CPU
coretemp3 at cpu3: thermal sensor, 1 C resolution, Tjmax=94
timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
timecounter: Timecounter "TSC" frequency 3092973000 Hz quality 3000
IPsec: Initialized Security Association Processing.
uhub0 at usb0: NetBSD (0x0000) EHCI root hub (0x0000), class 9/0, rev 2.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
uhub1 at usb2: NetBSD (0x0000) EHCI root hub (0x0000), class 9/0, rev 2.00/1.00, addr 1
uhub1: 2 ports with 2 removable, self powered
uhub2 at usb1: NetBSD (0x0000) UHCI root hub (0x0000), class 9/0, rev 1.00/1.00, addr 1
uhub2: 2 ports with 2 removable, self powered
ahcisata0 port 0: device present, speed: 6.0Gb/s
ahcisata0 port 1: device present, speed: 6.0Gb/s
ahcisata0 port 2: device present, speed: 3.0Gb/s
ahcisata0 port 3: device present, speed: 3.0Gb/s
ahcisata0 port 5: device present, speed: 3.0Gb/s
uhub3 at uhub1 port 1: vendor 8087 (0x8087) product 0024 (0x0024), class 9/0, rev 2.00/0.00, addr 2
uhub3: single transaction translator
uhub4 at uhub0 port 1: vendor 8087 (0x8087) product 0024 (0x0024), class 9/0, rev 2.00/0.00, addr 2
uhub4: single transaction translator
uhub3: 6 ports with 6 removable, self powered
uhub4: 6 ports with 6 removable, self powered
wd0 at atabus0 drive 0
wd0: <LITEONIT LCS-128M6S>
wd0: drive supports 16-sector PIO transfers, LBA48 addressing
wd0: 119 GB, 248085 cyl, 16 head, 63 sec, 512 bytes/sect x 250069680 sectors
wd0: GPT GUID: 9c5f3319-b7f3-4f30-ade0-d98e9c91d02d
dk0 at wd0: "ROOT", 233292397 blocks at 64, type: ffs
dk1 at wd0: "SWAP", 16777167 blocks at 233292480, type: swap
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133), NCQ (32 tags)
wd0(ahcisata0:0:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133) (using DMA), NCQ (31 tags)
wd1 at atabus1 drive 0
wd1: <WDC WD80EFAX-68KNBN0>
wd1: drive supports 16-sector PIO transfers, LBA48 addressing
wd1: 7452 GB, 15504021 cyl, 16 head, 63 sec, 512 bytes/sect x 15628053168 sectors (4096 bytes/physsect)
wd1: GPT GUID: 6c8c32f9-0ba2-4656-a829-43cda8d023e0
dk2 at wd1: "b2", 15628053101 blocks at 34, type: ffs
wd1: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133), WRITE DMA FUA, NCQ (32 tags) w/PRIO
wd1(ahcisata0:1:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133) (using DMA), NCQ (31 tags) w/PRIO
wd2 at atabus2 drive 0
wd2: <ST16000NE000-2RW103>
wd2: drive supports 16-sector PIO transfers, LBA48 addressing
wd2: 14902 GB, 31003729 cyl, 16 head, 63 sec, 512 bytes/sect x 31251759104 sectors (4096 bytes/physsect)
wd2: GPT GUID: dd462515-2c6b-4dae-b9d0-2753fee78541
dk3 at wd2: "a3", 31251759037 blocks at 34, type: ffs
wd2: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133), WRITE DMA FUA, NCQ (32 tags)
wd2(ahcisata0:2:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133) (using DMA), NCQ (31 tags)
wd3 at atabus3 drive 0
wd3: <WDC WD120EFBX-68B0EN0>
wd3: drive supports 16-sector PIO transfers, LBA48 addressing
wd3: 11176 GB, 23251756 cyl, 16 head, 63 sec, 512 bytes/sect x 23437770752 sectors (4096 bytes/physsect)
wd3: GPT GUID: 1b5551e4-a0bc-4700-bd7c-e19d6f92e67e
dk4 at wd3: "c", 23437770685 blocks at 34, type: ffs
wd3: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133), WRITE DMA FUA, NCQ (32 tags) w/PRIO
wd3(ahcisata0:3:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133) (using DMA), NCQ (31 tags) w/PRIO
wd4 at atabus5 drive 0
wd4: <Synology HAT3310-16T>
wd4: drive supports 16-sector PIO transfers, LBA48 addressing
wd4: 14902 GB, 31003729 cyl, 16 head, 63 sec, 512 bytes/sect x 31251759104 sectors (4096 bytes/physsect)
wd4: GPT GUID: ccc36f52-cb33-4402-a6b9-37671161b92d
dk5 at wd4: "d", 31251759037 blocks at 34, type: ffs
wd4: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133), WRITE DMA FUA, NCQ (32 tags) w/PRIO
wd4(ahcisata0:5:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133) (using DMA), NCQ (31 tags) w/PRIO
swwdog0: software watchdog initialized
WARNING: 4 errors while detecting hardware; check system log.
boot device: wd0
root on dk0 dumps on dk1
root file system type: ffs
kern.module.path=/stand/amd64/11.0/modules
ipmi0: version 32.0 interface KCS iobase 0xca2/0x2 spacing 1
ipmi0: ID 19.1 IPMI 2.0 Available
ipmi0: Additional Chassis FRU SEL SDR Sensor
ipmi0: Manufacturer 0000b Product 200b
ipmi0: Firmware 1.94
wsdisplay0: screen 1 added (80x25, vt100 emulation)
wsdisplay0: screen 2 added (80x25, vt100 emulation)
wsdisplay0: screen 3 added (80x25, vt100 emulation)
wsdisplay0: screen 4 added (80x25, vt100 emulation)

Android用の楽天LinkアプリでBluetooth LE Audio LC3なヘッドホンを通話に利用できない

62,700円で購入したGoogle Pixel 7a 128GBを3年半ほど利用していた。 ふとGoogle Storeを見ると、Google Pixel 11 256GBを購入すると、60,000円でGoogle Pixel 7aを下取りしてくれることになっていた。 3年半利用して差額2,700円であれば、下取りに出した方が良いと思い、Google Pixel 11 256GBを購入することにした。 他にも割引きを受ける方法があったので、63,120円で購入した。

Pixel 7aで不満だったことはあまりないのだが、1つ気になるのは、Bluetooth LE Audio (LC3コーデック)を利用してヘッドホンを接続できないことだった。 私はSONY WH-1000XM6を日常的に利用しているので、LC3で接続できて欲しかったが、私がWH-1000XM6を購入した時点では、Pixel 7aでLC3コーデックは利用できなかった。 Pixel 11になってLC3で接続できるようになった。 しかし、Pixel 11ではBluetooth absolute volumeを無効化できなくなってしまったようなので、そこは大変不便ではある。

LC3の場合には、classic Bluetoothで言うHFPに当たるものでも音質が良いという話を聞いたので試してみたが、Pixel 11にインストールされた楽天モバイルの楽天Linkアプリ バージョン4.0.1は、LC3による通話には対応していないようだった。 Pixel 11でclassic Bluetooth HFP接続の場合には通話に利用できたので、楽天Linkアプリの制限なのだと思う。

PCのACアダプターのDC出力をUSB PDに変換するアダプター

ふとAmazon.co.jpを見ていると、ラップトップのACアダプターをUSB Power Delivery (USB PD)の電源に変換するアダプターというのが得られているのに気付いた。 ラップトップのACアダプターは数多く持っており、古いものは当然のようにUSB PDではない独自のACアダプターなので、そのほとんどは独自のACアダプターである。 3つ試してみた。 当然だが、ACアダプターの出力する電圧・電流以上を供給はできない。

SinLoon PD 140W DC4530-タイプC充電アダプター DC4.5mm x 3.0mmメス(4.5 x 0.6mm)入力-USB Cオスコネクター PDオートIDチップ付き 携帯電話、タブレット、ラップトップ用(DC4530メス M)は、HPの新しい細いコネクター用で、140Wまで出力できるらしい。 私は45Wと65WまでのACアダプターでしか試していない。 実際には19.5Vの出力のACアダプターなので、19.5V程度の出力となった。 だた、すぐ壊れて、USB Type-Cのコネクター部分が取れてしまった。

ノートパソコン充電器をType-Cに変換 Type-C USB PD 65Wコンバーター 電源変換アダプター 7.4×5.0mm プラグ 対応 (外径7.4mm 内径5.0mm Dell/HP 電源用) ノートPC 充電アダプター トリガープラグ USBタイプC DCプラグは、HPの古い太いコネクター用で、65Wまで出力できるということだった。 私は65WのACアダプターしか試していないが、18.5Vと19.5Vのものいずれでも使えた。

まぎまぎ Type-C タイプC変換 PD対応 電源コネクタ変換アダプタ(NEC/Lenovo/東芝/富士通→Type-C,2個)は、東芝(dynabook)の古い太めのコネクター(dynabookには細いもの以外にも、いくつかあったはずだが、手元にある3種類のうち、一番数の多い太めのコネクターである)とPanasonic Let's Note用のコネクターに対応している。 65Wまで対応しているとのことである。 dynabook用では、19Vのもので利用できた。 Let's Note用のACアダプターは16Vなのだが、使えない訳ではなかったが、私のHP Envy 14 fa0000には16.6V/0.65Aでしか電源供給できなかった。iPhone 17eにも9.37V/1.43Aくらいでしか供給できなかった。

IBMのテレコン英会話小冊子

日本IBMの小集団活動の成果物だとかいう話だったと思うのだが、「テレコン英会話小冊子」というのがある。 かつては、http://www-06.ibm.com/businesscenter/jp/hitoiki/pdf/telecon_eng.pdfで公開されていたのだが、今はこのURIは404である。 今は、https://www.ibm.com/downloads/cas/95W7L0JLで公開されている。 これは、https://www.ibm.com/downloads/documents/jp-ja/107a02e95948f43bへリダイレクトされて、ダウンロードすると、77031077.pdfというファイル名でダウンロードできる。 最終ページを見ると、2021年にも更新されている。

GnuPG2で、revoke済みのUIDを表示させる

20年以上利用して来たインターネット・サービス・プロバイダーの提供してくれている電子メールアドレスを廃止することにした。 近年は全く価値に見合うようなサービス品質ではないように考えられるアカウントもあったし、受信がほぼできなくなるような状態になったりすることもあった。 いずれにしても、近年の急激な値上げは、廃止しようという思いを強くさせていた。 ただ、なかなか廃止するのは大変であり、時折思いもしない所から、これらの電子メールアドレス宛てに届くこともある。 しかし、もう思い出すのも難しい所から以外から届くことはなさそうである。

と言うことで、長年メンテナンスをしていなかったPGP鍵をメンテナンスすることにした。 副鍵も暗号化のみであったので、sign、encrypt、authenticateの各capabilityのみを持つ副鍵を追加した。 主鍵にもCertifyの他にsignのcapabilityが設定されているし、年代物のencryptのみの副鍵もあるが、これらはとりあえずそのままにしている。

既に廃止することが決まっているUIDはrevokeした。 実際に解約したいが、PHPの脆弱性の影響らしく解約メニューは利用できない。 しかし、もうこの電子メールアドレスから発信することはないので、UIDはrevokeした。

UIDをrevokeしてしまうと、--list-keyでは表示されなくなってしまう。 もちろん、この動作で良いのだが、revokeされたUIDを表示させて確認もしたい。 以下のように--list-options show-unusable-uidsを指定すれば良かった。 2番目の副鍵が、remove済みのものである。

$ gpg --list-options show-unusable-uids --list-key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
pub   rsa4096 2004-07-12 [SC]
      82A2DC9176E0A10A8ABBFD1BF40427FAC7D115F3
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid           [ultimate] First1 Lastname1 <user1@domain1>
uid           [ revoked] First2 Lastname2 <user2@domain2>
uid           [ultimate] First3 Lastname3 <user3@domain3>
uid           [ultimate] First4 Lastname4 <user4@domain4>
sub   rsa4096 2004-07-12 [E]
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub   ed25519 2026-10-26 [S]
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub   cv25519 2026-10-26 [E]
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub   ed25519 2026-10-26 [A]
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

OpenPGPの鍵を公開する

はじめに

GnuPGを使っているが、積極的に電子メールに署名も暗号化もしていないので、あまり役立てているとは言えないかもしれない。 利用しない理由は、PGPを使っている相手が少ないというものである気がするが、本当は特に署名したい内容も暗号化したい内容も書いていないからかもしれない。 最も利用しているのはファイルの暗号化であり、それを共有するということである。

しかし、鍵をきちんと公開しておきたい気持ちはある。 もう放棄しようとしているインターネット・サービス・プロバイダーの提供する電子メールアドレスについてはどうでも良いが、利用している独自ドメインの電子メールアドレスでは探せるようにしておきたい。 DNSSECを採用する予定はないので、Internet Draft draft-koch-openpgp-webkey-service-22であるOpenPGP Web Key Directory (WKD)を採用してみた。

鍵情報を生成する

どういう仕組みなのかというのは、どこかで解説されているだろうから省略して、実際の手順を書いておく。 まず、gnupg2パッケージをインストールしておく。

# cd /usr/pkgsrc/security/gnupg2
# make install

WKDの様式に従った鍵情報を配置するディレクトリーを作成する。

$ mkdir -p wkd/.well-known/openpgpkey

今回ターゲットとするのは1つの電子メールアドレスだけなので、絞り込んで作成する。 他は自分のドメインではないので、作成してもそもそも探しに来てはもらえないだろう。 gnupg2パッケージに含まれているgpg-wks-clientコマンドがうまく生成してくれる。 とりあえず、電子メールアドレスとドメインだけ、spamを防止するためにマスクしておく。

$ gpg --list-options show-only-fpr-mbox --list-key MYUSER@MYDOMAIN | grep MYUSER@MYDOMAIN |  gpg-wks-client -v --install-key --directory wkd/.well-known/openpgpkey
gpg-wks-client: using key with user id 'MYNAME <MYUSER@MYDOMAIN>'
gpg-wks-client: directory 'wkd/.well-known/openpgpkey/MYDOMAIN' created
gpg-wks-client: directory 'wkd/.well-known/openpgpkey/MYDOMAIN/hu' created
gpg-wks-client: policy file 'wkd/.well-known/openpgpkey/MYDOMAIN/policy' created
gpg-wks-client: key 82A2DC9176E0A10A8ABBFD1BF40427FAC7D115F3 published for 'MYUSER@MYDOMAIN'

どのように生成されたか確認してみる。これをhttps://openpgpkey.MYDOMAIN/.well-known/openpgpkey/MYUSER@MYDOMAIN/hu/tfjzips9n54e1w4edgiska367yec1bkh?l=ryoとしてアクセスできるように公開すれば良い。

$ find wkd
wkd
wkd/.well-known
wkd/.well-known/openpgpkey
wkd/.well-known/openpgpkey/MYUSER@MYDOMAIN
wkd/.well-known/openpgpkey/MYUSER@MYDOMAIN/hu
wkd/.well-known/openpgpkey/MYUSER@MYDOMAIN/hu/tfjzips9n54e1w4edgiska367yec1bkh
wkd/.well-known/openpgpkey/MYUSER@MYDOMAIN/policy

wkd.dp42.devで確認できる。 この場合、Content-Typeはapplication/octet-streamにしておくべきであるようだった。

GnuPGのwikiページによると、Thunderbird 128以降はWKDを使って公開鍵を取得できるようだ。 Thunderbird 158.8.1はビルド待ちなので、今度試してみたい。

文化庁の自由利用マーク

文化庁の自由利用マークというのがあって、ITmediaの記事「文化庁、CCライセンスを支援へ 独自ライセンス構築は断念」によると、2013年の時点で普及はあきらめているらしい。 文化庁のウェブページを見ても、そもそも「コピーOK」「障害者OK」「学校教育OK」という区分も良いとは思えないし、どんな側面でも日本の法律に直結してしまっているのも、利用できる範囲が狭いのも、発展性がないような気がする。 しかし利用されてしまうと、説明のウェブページを維持しないといけないので、こういうのは失敗できない難しいことであるような気がする。

Android用のWikipedia appを使ってみた

Wikipediaをログインしないで使っていて、WikipediaのAndroid appがあるという通知が表示された。 これまでWikipedia appがあるとは知らなかったので、インストールしてログインしてみた。

これまでの編集や編集後の閲覧数をActivityとして閲覧できるのはおもしろいのだが、Firefox for AndroidでWikipediaのウェブページを開くと、appで開くか聞かれるのは煩雑かつ私には意味がない。

Firefoxでapp単位でこの機能を無効化できたか記憶がない。 また、外部サイトはあくまで外部のウェブブラウザーで開くことになるので、便利でもない。 どんなウェブページも開けるように作るのはセキュリティー的な面も考慮すると避けたいのかもしれないが…。 でもWikipediaほどのウェブサイトを表示できるのであれば、外部サイトをapp内で開いても大差ないような気もする。

いずれにしても、そこまで便利ではないと言うか不便になる方の影響が大きいのでアンインストールすることにした。

YubiKeyを使えないウェブサービスでYubiKeyを無理やり使う

PassKeysは明らかに私にとってのSingle Point Of Failureなので、なぜこんなものが流行しているのか、いまいち分からない。 技術的にはパスワードを入力してやりとりするより安全なのは間違いなさそうだが、もっと良い方法はないのだろうか。 いずれにしてもPassKeysを設定しないといけないサービスにFirefox for NetBSDからログインしたいので、選択肢はない。

Firefox for NetBSDを常用していてPassKeysを使おうとすると、ハードウェアセキュリティーキーを使う以外に方法はない。 私はYubiKey 5 NFCを買って使っている。 古いもの(ファームウェアバージョン5.4.3)はFIDO2の保管上限数が25であり、すぐにいっぱいになってしまう。しかも、脆弱性がある。 新しいもの(ファームウェアバージョン5.7.4)は100まで保存できる。しかし100しかないとも言える。 software FIDO2 authenticatorとでも呼ぶべきプログラムは存在するのだが、それをNetBSDで動くようにするのは、面倒な気がする。 やってみたらそうでもない可能性もあるので、勝手な印象ではあるが。 では、スマートフォンでQRコードを読み取る方式はどうかと言うと、これはBluetoothサポートが必要なので、到底実現できるとは思えない。

同じようなことを考える人はいるもので、Passkey DictatorというFirefox addonを作っている人がいる。 Mozilla Firefoxのaddon storeでも公開されている。 こういうソフトウェアを無条件に信頼してインストールするのは危険であるのは確かなので、良く吟味してから使わないといけない。

これを使うと、READMEに書いてあるようにPixivには問題なくPassKeysの登録もログインもできるようになる。Firefox for NetBSDでもWindowsでも同様に問題ない。user agent stringも変更する必要はない。

私の問題としているもう1つはdアカウントなのだが、これはFirefox for NetBSDでid.smt.docomo.ne.jpへ送るuser agent stringをGoogle Chromeにすると、PassKeysの登録もログインも両方が問題なくできる。 しかしFirefox for Windowsでは、PassKeysの登録はできるのだが、ログインの際にはQRコードのパターンにしかならない。 幸運なことにdアカウントには複数のPassKeysを登録できるので、YubiKeyとAndroidのGoogle Password Managerの2つのPassKeysを登録しておくことにすれば、最終的には問題にはならなかった。 dアカウントでのログインは、PassKeysが必要なサービスとそうでないサービスがあるので、面倒である。

もう少し勉強すれば、Firefox for Windowsでdアカウントにログインできるようにできるのかもしれない。

mixed mode CDのデータトラックをマウントする

以前に「古いmixed mode CDをバックアップする」と題してバックアップ方法を書いたが、実際のmixed mode CDのディスクについてはあまり触らなかった。 気になっていたのは、データトラックがNetBSDでマウントできるかを確認していなかったし、データトラックをマウントした状態ではCDDAのクラックは再生できないだろうが、それも実際には確認していなかった。 そもそも、CDDAの実際のディスクを再生する簡単な方法も分かっていなかった。pkgsrc/multimdia/vlcで/dev/cd0を再生すれば間違いはないのだが、mplayerやmpvではどうすべきか分かっていなかった。

まず、データトラックをマウントしてみる。 これは簡単で、普通にマウントすれば良い。

# mount_cd9660 /dev/cd0 /mnt/cdrom

予想通り、マウントしている最中にはCDDAのトラックは再生できなかった。

後はmixed mode CDを作る方法を調べてやってみれば、mixed mode CDに関する疑問は解消できそうだ。

2週間ごとにリリースされるようになるFirefoxの移植に取り組むべきタイミングを調べる

Firefoxが1カ月ごとではなく、2週間ごとにリリースをするようになるということなので、どの時点でpkgsrc/www/firefoxの更新作業をし始めるべきなのか確認してみた。

これまでは、b6までがbeta版ということになっていて、b6とb7の間ではビルドされるコードが違う。具体的には、#ifdefを使って違いが出るようになっていた。 Firefoix 155.0が2026年9月1日にリリースされるのはhttps://whattrainisitnow.com/calendar/を見ると分かるが、そのRelease dayの項目をクリックするとhttps://whattrainisitnow.com/release/?version=155のページへ移動することができる。 ここで、Beta 5の項目を見ると、Last beta uploftsと書かれていて8月26日にリリースされる予定になっている。

この後がb6になるのか、RCになるのかは分からないが、b5の次になったらpkgsrc/www/firefox-155に取り組み始めるスケジュールが良さそうだ。 ただ、これまでであれば、1週間前にはb9程度までは進んでいて時間はまだ足りないものの、どうにかできなかった訳ではないと思うが、リリースまで1週間を切ってから作業を始めないといけないのは大変かもしれない。

P.S. (2026-09-19)

155と156がリリースされたが、いずれでもb5の次がrc1のようなので、rc1が例えば156.0であればhttps://ftp.mozilla.org/pub/firefox/candidates/156.0-candidates/build1/に現れたら作業を開始するので良さそうだ。 でも、こうなると作業できる時間は短い。

古い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>
/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

私はremoteserverもlocalnetserverも非力なマシンを利用していて、転送量へは課金されない環境なので、圧縮せず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倍の速度でトランスコードできる。 また、ディスプレイがオフになると、場合によってはエラーが発生する。 ディスプレイを常時オンにする設定をしておけば、エラーは発生しない。

Firefoxで、ユーザー認証付きHTTPプロキシーサーバーへ自動的にログインする

about:configで、signon.autologin.proxy=trueと設定すると、ユーザー認証付きHTTPプロキシーサーバーへのログイン情報を保存している場合に、自動的にHTTPプロキシーサーバーにログインするようにできる。 つまり、ユーザーIDとパスワードを入力する画面(ログイン情報を保存しているので、いずれも入力済み)が表示され、ログインを明示的にする必要がなくなる。

DigitalOceanのSpaces Object Storageに、ソフトウェアをインストールせずにWindowsからアクセスする

はじめに

DigitalOceanのオブジェクトストレージであるSpacesにWindows 11からアクセスしたい。 だが、そのためのソフトウェアを、インストーラーでWindows 11にインストールのは避けたい。 単にアーカイブファイルを展開しただけで使いたい。 かつ、そのWindows 11マシンはユーザー認証付きHTTPプロキシーサーバーを経由しないとDigitalOceanにはアクセスできない。

このような条件で使えるものを探すと、Rcloneが条件を満足するものだった。

まず、Downloadページから、Intel/AMD - 64 BitのWINDOWS用のバイナリーをダウンロードする。 現在のバージョンは、1.74.3なので、rclone-v1.74.3-windows-amd64.zipをダウンロードすれば良い。 これの中にはrclone-v1.74.3-windows-amd64というサブディレクトリーがあるので、それを適当な場所に配置してPATH環境変数に設定しておく。

設定ファイルを作る

Rcloneにはインタラクティブに設定ファイルを生成する仕組みがあるが面倒である C:\Users\(ユーザーID)\AppData\Roaming\rcloneディレクトリーにあるrclone.confに以下のように記載すれば良い。 シンガポールリージョンを使うので、以下ように設定した。

[sg]
type = s3
provider = DigitalOcean
access_key_id = XXXXXXXXXXXXXXXXXXXX
secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
region = sgp1
endpoint = sgp1.digitaloceanspaces.com
acl = private

ここで、DigitalOcean SpacesのコンソールでBucketのAccess Keysを生成した際に表示される「Access Key ID」の値をaccess_key_idに設定し、secret keyの値をsecret_access_keyに設定する。 endpointには、Bucketの「Origin Endpoint」がhttps://BUCKETNAME.sgp1.digitaloceanspaces.comであれば、sgp1.digitaloceanspaces.comを設定する。 同様にregionはsgp1を設定する。

ユーザー認証付きHTTPプロキシーサーバーの情報を設定する

rcloneは、https://のURIへのアクセスには、HTTP_PROXY環境変数が使われないようである。 HTTPS_PROXY環境変数を定義しておく必要がある。 以下のように定義しておく。

HTTPS_PROXY=http://(ユーザーID):(パスワード)@10.11.12.13:8080

rcloneを使ってみる

ファイルをアップロードするには、以下のように実行すれば良い。

> rclone copy FILETOUPLOAD.txt sg:BUCKETNAME

Bucketにあるファイルを一覧する。

> rclone lsl sg:BUCKETNAME
       71 2026-06-25 13:44:06.694000000 FILETOUPLOAD.txt
  3255961 2026-06-05 15:23:56.000000000 rclone.1

ファイルをダウンロードする。

> rclone copy sg:BUCKETNAME/FILETOUPLOAD.txt .

HP ProLiant ML110 G7に32GBのメモリーを搭載する

HP ProLiant ML110 G7 Server Maintenance and Service Guide の62ページ目には、以下のように記載されている。 General DIMM slot population guidelines Th...