AMDベースのFreeBSDデスクトップを再構築
AMD Based FreeBSD Desktop Reloaded (vermaden.wordpress.com)
要約
筆者が子供用のPCとして以前のAMDベースFreeBSDデスクトップを譲ったため、新たなミニITXデスクトップを構築した経緯を詳述しています。特に、小型ケースへのGPU搭載における物理的な課題と、それを解決するための工夫、そしてFreeBSDでのハードウェア(特にGPUとBluetoothファームウェア)の動作確認とトラブルシューティングに焦点を当てています。
全文翻訳
AMDベースのFreeBSDデスクトップ再構築
以前のAMDベースのFreeBSDデスクトップはまだ稼働しており、子供たちのコンピューターとして使われることになった。そのため、新しいマシンが必要になったが、それほど大きなものではない。次のマシン用の新しいMini-ITXケースを探すのにかなりの時間を費やしたが、結局、必要な機能を持つ最小サイズのSilverstoneケースを選んだ。AI価格の時代に何を買うべきか、特に悩んだ。以前失敗したプロジェクト(いつか公開したいと思っている)のために、TDP 35Wながら8コア/16スレッドのAMD Ryzen 4750GE CPUをAMD4ソケットで使用していたので、DDR5とAM5のセットアップで価格/パフォーマンスの効率をすべて犠牲にするのではなく、まともなAM4オプションを選択した。
ケース
以前のビルドではSilverstone SG05ケースを使用したが、今回はSilverstone SG13を使用する。これはほぼ同じだ。
WHAT SG05 SG13
Width 218mm 222mm
Height 175mm 181mm
Depth 276mm 285mm
Volume 10.5L 10.8L
サイズはわずか5%の増加と言えるが、歓迎すべき必要な変更だった。
違い
新しいセットアップは、CPUで約25%、GPU部門ではワークロードに応じて40~60%高速化している。SSD/NVMeの速度は、まだ同じAM4プラットフォームなので同じだ。RAMもDDR4スティックなので、同様だろう。
組み立て
部品が約3ヶ月(そう、忙しかった)ほど手元にありましたが、息子がようやくビルドを強制してくれた。それは良い刺激になった。必要な部品をすべて揃えてダイニングテーブルに座り、息子がコンピューターを実際に組み立てるのがどんなものか、非常に興味津々にしながら組み立てを開始した。
まずCPUをマザーボードに、そしてNVMeをM.2スロットに取り付ける。
[画像: CPUとNVMeを取り付けたマザーボード]
次にCPUにサーマルペーストとファンを取り付ける。
[画像: CPUクーラーを取り付けたマザーボード]
正直に言うと、言うは易く行うは難しだった。Thermalight AXP-90 X47にはAMDとIntelの両方のソリューション用の取り付けオプションがあり、必要なネジとその付属品をすべて確認するのに少し時間がかかった。
[画像: CPUクーラーの取り付け部品]
次にマザーボードをケースに取り付ける。
[画像: ケースにマザーボードを取り付けた状態]
次にRAMまたはGPUを取り付ける。GPUはこのケースに数ミリの余裕で収まるように測定したので、GPUから始めた。
[画像: ケースにGPUを取り付けようとしている状態]
…どんなに試しても、どんな角度から試しても、GPUはケースに収まらなかった。
GPUの名前がChallengerだったのが面白かった。本当にケースに収めるのが挑戦的だった。
[画像: ケースに収まらないGPU]
このシステムを、その出来事からchallengerと名付けることにした。私はDodge Challenger車の大ファンだ。個人的にDodgeを所有しているが、まだChallengerは持っていない。
[画像: Dodge Challengerの写真]
GPUをあらゆる方向から検査し、一つのディテールが目に留まった。
[画像: GPUのファンカバーとPCBの比較]
ファンが付いているプラスチックカバーがPCBよりも約1cm幅広かったので、PCBの長さに合わせて正確にカットすることにした。
[画像: カットされたファンカバー]
これがカット後のプラスチックカバーの様子だ。約2~3分の作業だった。
[画像: カットされたファンカバーを取り付けたGPU]
その後、GPUをケースに収めようと試みたが、カットだけでは十分ではなかった。まだ収まらなかったので、戦略を変更した。GPUの拡張スロットブラケットを分解し、そのブラケットをケースの所定の位置に取り付けてから、カードを再度収めようとした。後でネジでGPUに固定できるはずだった。しかし、それらすべてを再度取り付けることができなかった。そこで次に「犠牲」になったのは、拡張スロットブラケットだった。下の写真の左側が加工前だ。
[画像: 加工前の拡張スロットブラケット]
…そして右側が加工後だ。
[画像: 加工後の拡張スロットブラケット]
それほど多くの加工は必要なかったが、このカットなしでは、そのChallengerをケースに収めることは不可能だった。
[画像: ケースに収まったGPU]
その後、ついにGPUをマザーボードに取り付けることができた。
[画像: GPUが取り付けられた状態]
大体こんな感じだった。
[画像: GPU取り付け後の内部]
…そして追加のブラケットカバーを取り付けた後だ。
[画像: GPU取り付け完了後の内部]
次にRAMスティックとSSD SATAドライブを取り付けた。特に変わったことはない。PSUを取り付けたら、ほぼ完成だった。
[画像: ほぼ完成したPC内部]
Thermaltake Toughpower Grand 750W PSUのケーブルが取り外し可能で、ケース内のケーブルを減らせたのは本当に良かった。<sarcasm/>
一般的に、私はすべてを構築するのが好きだ。コンピューターの構築もその一つだが、PCを構築する際にいつもイライラすることが一つある。それは、ケースのボタンからマザーボードへのケーブルだ。
[画像: ケースのフロントパネルコネクタ]
2006年に友人のためにゲーミングPCを構築したときは、下の写真のように、ネジでPCを起動していた。
違い
CPUパワーは古いAMD Ryzen 7 1700とAMD Ryzen 7 PRO 4750GEの間で約25%の違いがある。GPUに関しては、5700XT 8GBと7700XT 12GBの間で、40~60%の範囲だ。
「視覚的な」違いはほとんどない。まず古い方だ。
[画像: 古いFreeBSDデスクトップ]
…そして新しい方だ。
[画像: 新しいFreeBSDデスクトップ]
この記事の最も重要な部分は、これらの部品、特にGPUが、FreeBSD上でdrm-kmodとx11-drivers/xlibre-xf86-video-amdgpu XLibre AMD Radeon GPUドライバーで非常にうまく動作することだ。一部のRed Hat関係者がX11を無効にし、廃止しようとしたことを知って以来、私はXorg X11実装には戻らない。XLibre X11が私のホームであり、Waylandについては、そのトピックの詳細は200 MB RAM FreeBSD Desktopの記事にある。
ファームウェア
インストールと再起動の後、必要なすべてのファームウェアをFreeBSD用に取得するためにfwget(8)コマンドを実行した。
challenger # fwget -v
Trying to match device 0x747e in class video and vendor amd with pci_video_amd
Trying to match device 0x8168 in class network and vendor realtek with pci_network_realtek
Trying to match device 0x24fb in class network and vendor intel with pci_network_intel
Needed firmware packages: 'wifi-firmware-iwlwifi-kmod-7000'
しかし、それだけでは不十分だったようで、FreeBSDの起動ごとに以下のエラーメッセージが表示された。
iwmbftfw: iwmbt_fw_read: open: /usr/local/share/iwmbt-firmware/ibt-hw-37.8.bseq: No such file or directory
iwmbftfw: main: Firmware download failed!
…そこで問題の所在を調べ始めた。まず、/etc/rc.dサービスでiwmbtfwという名前をすべて検索した。
challenger # grep -r iwmbtfw /etc
/etc/devd/iwmbtfw.conf: action "/usr/sbin/iwmbtfw -d $cdev -f /usr/local/share/iwmbt-firmware";
challenger # ls /usr/local/share/iwmbt-firmware
ls: /usr/local/share/iwmbt-firmware: No such file or directory
/usr/local/share/iwmbt-firmwareが存在しないように見えるが、本来は存在するはずだ。
challenger # man iwmbtfw | grep firmware
Firmware files are available in the comms/iwmbt-firmware port.
OK… comms/iwmbt-firmwareパッケージをインストールしよう。
challenger # pkg search -o iwmbt
x11-drivers/xf86-video-amdgpu X.Org amdgpu display driver
x11-drivers/xlibre-xf86-video-amdgpu XLibre amdgpu display driver
challenger # pkg install iwmbt-firmware
Updating FreeBSD-ports repository catalogue...
FreeBSD-ports repository is up to date.
Updating FreeBSD-ports-kmods repository catalogue...
FreeBSD-ports-kmods repository is up to date.
Updating FreeBSD-base repository catalogue...
FreeBSD-base repository is up to date.
All repositories are up to date.
The following 1 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
iwmbt-firmware: 20251111 [FreeBSD-ports]
Number of packages to be installed: 1
The process will require 15 MiB more space.
5 MiB to be downloaded.
Proceed with this action? [y/N]: y
[1/1] Fetching iwmbt-firmware-20251111: 100% 4840 KiB 619.5 kB/s 00:08
Checking integrity... done (0 conflicting)
[1/1] Installing iwmbt-firmware-20251111...
[1/1] Extracting iwmbt-firmware-20251111: 100%
再起動後、このエラーメッセージは二度と表示されなかった。これが必要な修正だった。
ハードウェア
これは、EUR通貨での価格を含めた、私が購入した正確なハードウェアリストだ。一部は新品、一部は中古で購入した。
TYPE EUR WHAT
CASE 55 Silverstone SG13
PSU 55 Thermaltake Toughpower Grand 750W
MOBO 100 ASRock B550M-ITX/ac
CPU 145 AMD Ryzen 7 4750GE 8C/16T 35W TDP
GPU 340 ASRock ATI Radeon 7700XT 12GB Challenger
PASTE 10 Grizzly Thermal Kryonaut 2g
COOL 40 Thermalight AXP-90 X47
FAN 5 Savio BLADEX1 120mm PWM
SSD 45 ADATA SU650 512GB
NVME 50 Phison ESO512GYLCT-EP3-2L 512GB
RAM 150 2 x 16GB Goodram DDR4 3600MHz 1.35V CL18
PRICE 995 TOTAL
それだけの価値があったかは分からないが、とにかくやった。
その間に、古いHP E221c FullHDモニターをHP E271i FullHDモニターにアップグレードした。画面の下にはHPサウンドバーも追加した。正直言って、大したことではない。モニターは約70 EUR、サウンドバーは約15 EURだった。
XLibre X11
以下のパッケージをインストールした。
challenger # \
pkg install -y \
drm-kmod \
xlibre \
openbox \
xterm \
xinit \
mesa-demos \
scrot \
radeontop \
screen \
lsblk \
beadm \
smartmontools
次に、いつものようにXLibre X11を起動した。
vermaden@challenger % echo openbox > ~/.xinitrc
vermaden@challenger % xinit -- -dpi 75 -nolisten tcp
…そしてX11 XLibreディスプレイサーバーがいつものように起動したが、ログを確認すると、scfbドライバーを使用しており、videoグループに所属していなかった。そこで、自分自身をグループに追加した。
challenger # pw groupmod video -m vermaden
次にamdgpuドライバーを検索した。
challenger # pkg search -o amdgpu
x11-drivers/xf86-video-amdgpu X.Org amdgpu display driver
x11-drivers/xlibre-xf86-video-amdgpu XLibre amdgpu display driver
x11-drivers/xlibre-xf86-video-amdgpuをインストールすることが重要だ。なぜなら、もう一方をインストールするとXLibreをアンインストールしてXorgをインストールする必要が出てくるからだ。
次にAMD Radeon X11の設定を追加した。
challenger # cat /usr/local/etc/X11/xorg.conf.d/card.conf
Section "Device"
Identifier "Card0"
Driver "amdgpu"
Option "TearFree" "true"
EndSection
大したことではないが、期待通りに動作した。
/var/log/Xorg.0.logの詳細も確認した。
[2026-09-05 14:48:22] (II) LoadModule: "amdgpu"
[2026-09-05 14:48:22] (II) Loading /usr/local/lib/xorg/modules/xlibre-25/drivers/amdgpu_drv.so
[2026-09-05 14:48:22] (II) Module amdgpu: vendor="X.Org Foundation"
[2026-09-05 14:48:22] compiled for 1.25.1.9, module version = 25.1.2
[2026-09-05 14:48:22] Module class: X.Org Video Driver
[2026-09-05 14:48:22] ABI class: X.Org Video Driver, version 28.1
[2026-09-05 14:48:22] (II) AMDGPU: Driver for AMD Radeon:
All GPUs supported by the amdgpu kernel driver
そうだ、これが求めていたものだ。
pciconf(8)の出力におけるGPUの様子はこうだ。
challenger # pciconf -lv vgapci0
vgapci0@pci0:3:0:0: class=0x030000 rev=0xff hdr=0x00 vendor=0x1002 device=0x747e subvendor=0x1849 subdevice=0x5323
vendor = 'Advanced Micro Devices, Inc. [AMD/ATI]'
device = 'Navi 32 [Radeon RX 7700 XT / 7800 XT]'
class = display
subclass = VGA
FreeBSD上のX11 XLibreセッションでのリソース使用状況はこうだ。
challenger # top -b -ores
last pid: 5702; load averages: 0.08, 0.08, 0.02 up 0+00:30:16 14:35:51
34 processes: 1 running, 33 sleeping
CPU: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 99.9% idle
Mem: 92M Active, 101M Inact, 1512M Wired, 2056K Buf, 29G Free
ARC: 141M Total, 24M MFU, 113M MRU, 388K Anon, 670K Header, 2159K Other
88M Compressed, 207M Uncompressed, 2.35:1 Ratio
Swap: 4096M Total, 4096M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
90382 vermaden 16 0 0 319M 136M select 6 0:01 0.00% Xorg
92537 vermaden 2 0 0 50M 22M select 12 0:00 0.00% openbox
1117 vermaden 1 0 0 26M 14M select 13 0:00 0.00% xterm
77479 root 1 0 0 25M 10M select 14 0:00 0.00% sshd
17882 root 1 0 0 15M 4356K select 13 0:00 0.00% devd
89878 vermaden 1 1 0 16M 3808K wait 5 0:00 0.00% xinit
2151 vermaden 1 0 0 14M 3500K wait 2 0:00 0.00% sh
5702 root 1 0 0 15M 3492K CPU9 9 0:00 0.00% top
1924 root 1 0 0 14M 3280K wait 4 0:00 0.00% login
FreeBSDのメイン/etc/rc.conf設定はこうなっている。
challenger # cat /etc/rc.conf
hostname="challenger.local"
ifconfig_re0="inet 10.0.0.5/24 up"
defaultrouter="10.0.0.1"
kld_list="${kld_list} amdgpu amdtemp"
syslogd_flags="-ss"
sshd_enable="YES"
powerd_enable="YES"
dumpdev="AUTO"
zfs_enable="YES"
派手なものではなく、シンプルなものだ。
電力
電力測定は古いモデルと同様だが、わずかに小さいようだ。
POWER STATE
47W IDLE without amdgpu.ko loaded
39W IDLE with amdgpu.ko loaded
45W BUSY with 16 x 100% CPU Thread(s) @ 1.4GHz
80W BUSY with 16 x 100% CPU Thread(s) @ 3.1GHz
AMD Ryzen 7 4750GE CPUのTurbo周波数は4.3GHzだが、使用されているかは不明だ。例えば、私のラップトップのCPUには「最終」速度が2つ表示されるが、追加の「1」が付いている方がTurboモードの速度だ。しかし、このAMD Ryzen 7 4750GE CPUにはそのようなものはない。
また、C1状態しかサポートされていないのは残念だ。
challenger # sysctl dev.cpu.0
dev.cpu.0.temperature: 47.0C
dev.cpu.0.cx_method: C1/hlt
dev.cpu.0.cx_usage_counters: 259234
dev.cpu.0.cx_usage: 100.00% last 19092us
dev.cpu.0.cx_lowest: C1
dev.cpu.0.cx_supported: C1/1/0
dev.cpu.0.freq_levels: 3100/3778 1700/1615 1400/1277
dev.cpu.0.freq: 1400
dev.cpu.0.%iommu:
dev.cpu.0.%parent: acpi0
dev.cpu.0.%pnpinfo: _HID=ACPI0007 _UID=0 _CID=none
dev.cpu.0.%location: handle=\_SB_.PLTF.C000
dev.cpu.0.%driver: cpu
dev.cpu.0.%desc: ACPI CPU
このボックスでのsensors(8)の出力はこうだ。
challenger # sensors
BATTERY/AC/TIME/FAN/SPEED
------------------------------------
dev.cpu.0.cx_supported: C1/1/0
dev.cpu.0.cx_usage: 100.00% last 10882us
dev.cpu.0.freq: 1400
hw.acpi.cpu.cx_lowest: C1
powerd(8): running
SYSTEM/TEMPERATURES
------------------------------------
dev.cpu.0.temperature: 47.1C
dev.cpu.1.temperature: 47.1C
dev.cpu.2.temperature: 47.1C
dev.cpu.3.temperature: 47.1C
dev.cpu.4.temperature: 47.1C
dev.cpu.5.temperature: 47.1C
dev.cpu.6.temperature: 47.1C
dev.cpu.7.temperature: 47.1C
dev.cpu.8.temperature: 47.1C
dev.cpu.9.temperature: 47.1C
dev.cpu.10.temperature: 47.1C
dev.cpu.11.temperature: 47.1C
dev.cpu.12.temperature: 47.1C
dev.cpu.13.temperature: 47.1C
dev.cpu.14.temperature: 47.1C
dev.cpu.15.temperature: 47.1C
DISKS/TEMPERATURES
------------------------------------
smart.ada0.temperature_celsius: 34.0C
smart.nvme0.temperature: 39.0C
良くもない。悪くもない。
PKGBASE アップグレード
標準の15.1-RELEASEをインストールしたので、最新の15.1-pXリリースにアップグレードする。
challenger # pkg upgrade -r FreeBSD-base
Updating FreeBSD-base repository catalogue...
FreeBSD-base repository is up to date.
FreeBSD-base is up to date.
Checking for upgrades (53 candidates): 100%
Processing candidates (53 candidates): 100%
The following 52 package(s) will be affected (of 0 checked):
Installed packages to be UPGRADED:
FreeBSD-audit: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-autofs: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-bhyve: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-bsnmp: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-clang: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-clang-dev: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-clibs: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-clibs-dev: 15.1 -> 15.1p3 [FreeBSD-base]
FreeBSD-clibs-dev-lib32: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-clibs-lib32: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-console-tools: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-ctl: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-jail: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-kernel-generic: 15.1 -> 15.1p3 [FreeBSD-base]
FreeBSD-kernel-generic-dbg: 15.1 -> 15.1p3 [FreeBSD-base]
FreeBSD-lib9p: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-lib9p-dev: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-lib9p-dev-lib32: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-lib9p-lib32: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-libevent1: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-libevent1-dev: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-libevent1-dev-lib32: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-libevent1-lib32: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-mtree: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-natd: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-natd-dev: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-natd-dev-lib32: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-natd-lib32: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-ntp: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-openssl-dev: 15.1 -> 15.1p3 [FreeBSD-base]
FreeBSD-openssl-dev-lib32: 15.1 -> 15.1p3 [FreeBSD-base]
FreeBSD-openssl-lib: 15.1 -> 15.1p3 [FreeBSD-base]
FreeBSD-openssl-lib32: 15.1 -> 15.1p3 [FreeBSD-base]
FreeBSD-pmc: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-ppp: 15.1 -> 15.1p3 [FreeBSD-base]
FreeBSD-rescue: 15.1 -> 15.1p3 [FreeBSD-base]
FreeBSD-runtime: 15.1 -> 15.1p3 [FreeBSD-base]
FreeBSD-runtime-dev: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-runtime-dev-lib32: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-runtime-lib32: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-src: 15.1 -> 15.1p3 [FreeBSD-base]
FreeBSD-src-sys: 15.1 -> 15.1p3 [FreeBSD-base]
FreeBSD-syslogd: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-utilities: 15.1 -> 15.1p2 [FreeBSD-base]
FreeBSD-utilities-dev: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-utilities-dev-lib32: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-utilities-lib32: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-zfs-dev: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-zfs-dev-lib32: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-zfs-lib: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-zfs-lib32: 15.1 -> 15.1p1 [FreeBSD-base]
FreeBSD-zoneinfo: 15.1 -> 15.1p2 [FreeBSD-base]
Number of packages to be upgraded: 52
579 MiB to be downloaded.
Proceed with this action? [y/N]: y
…そしてすべてうまくいった。アップグレード完了後、再起動し、すべてが完璧に動作した。
オフトピック
ダイニングルームでビルドが行われてから半年後、10歳の息子が1ヶ月前に私にこう言った。「ねえ、お父さん、ChatGPTでこのPC Builderゲームを書いたんだけど、プレイしてくれる?」そして、それをチェックした後、私は本当に、良い意味でショックを受けた。私が10歳の頃は、AMIGA 600すら持っていなかった。安価なポーランド製のNESクローンであるPegasusで様々なゲームをプレイしていた。12歳頃(記憶は曖昧だが)にAMIGA 600を手に入れた。そして、まだSensible World of SoccerやCannon Fodderのようなゲームをプレイしていて、何かを創造することではなかった。これが、多くのイテレーションを経てAIで作られたPC Builderゲームの様子だ。
[画像: PC Builderゲームのスクリーンショット]
はい、ポーランド語だが、必要に応じて英語/ポーランド語に切り替えられるのは、おそらくプロンプト一つだろう。
息子は私を驚かせた。ある時、私が「ChatGPTだけじゃないんだ、PerplexityやClaude、Geminiなど、他にもたくさんあるんだよ」と言ったところ、彼は何度か「お父さん、トークンが尽きたから、持っていたものをコピーして別のAIに入れてみたんだ。そしたら、僕の作業を引き継いでくれて、望んでいた変更を加えてくれたよ」と言った。息子がこのようなことをしているのを見ると、学校のシステムはただの大きなジョークのように思える。数学/物理学/英語などは必要で役立つが、それ以外は?控えめに言ってもオプションだ。そして、学校にいた頃(そしてそれに応じて行動した)はそう感じていた。試験のために詰め込んで、成績を得るためにそのクソッタレをすべて忘れるのは、時間の無駄だ。
面白いのは、息子は私が書いたゲームを一度もプレイしたことがないのに、私は彼のゲームをすでに2つプレイしたことだ。すべての親が同じ経験をすることを願っている。