iMac G3の劣化したスピーカーを無理やり治す

さて、当方では先日メルカリでほぼコレクターアイテムとしてiMac G3を購入しました。全体的にこれといった不具合はなく正常に動いているのですが、スピーカーだけはゴムが劣化しきってしまっているという問題がありました。

iMac G3は発売からすでに20年以上が経つ骨董品なので、ゴムやプラスチックの劣化は避けられない部分があります。状態の良いパーツを探して交換することも考えましたが、すでに流通量も減っていてなかなか見つからないのと、見つかったとしてもそちらも劣化している可能性が高いので、なんとか自分で直せないかと考えました。

下のカバーを外して布団の上に転がしました。この機種はメンテナンス性は最悪(笑)で平らなところに置くと安定しないばかりか、プラスチック筐体に負担がかかるので布団状のものにおいたほうが良いです。

現状は左右このような状態です。

なんかカビのようなものもついてしまっていますし、ゴムは劣化してボロボロです。さてどうしたものか。。

一応、音は出ないわけではなく、これでも8割位はちゃんと聞こえるのですが、たまにビリビリという音が混じります。それにいつまともに聞こえなくなるかわかったものじゃありません。

スピーカーのパーツをバラして似たようなスピーカーを買ってきて入れ替えるとか、ゴム部品を3DプリンタでTPUで作って入れ替えるか?とかも考えましたが、ひとまず簡単に応急的にできる方法を試そうと思いました。

思いついたのは、ゴムの補修材を塗ってはどうか、ということで、以下の製品を買ってみました。

これを鉛筆削りで尖らせた割り箸で、丁寧にちょめちょめとスピーカーに塗っていこうと思いました。

しかし、やってみたものの粘度が高すぎて、うまくスピーカーになじませられませんでした。無理やり塗ろうとするとボロボロのゴムを破壊してしまいます。

さらに水かアルコールで薄めて粘度を低下させられないかと思いましたが、この補修材は溶けませんでした。

さてどうしたものか。

ふと、木工用ボンドがあることを思い出しました。木工用ボンドは水性なので水に溶かして使え、粘度を調整できます。それに、固まった状態でもビニールのようになるので弾性があります。こちらを試してみることにしました。

適当な皿にボンドと水を出し、絵の具のように粘度を調整しながら、ちょめちょめとスピーカーの破れた部分に塗っていきます。

試してみたところ、こちらはわりとうまくいきそうでした。水に溶かした木工用ボンドは、劣化したゴムの隙間によく染み込んでくれます。

文化財補修のような感覚で切れたところに塗っていくのと、切れていないところにも染み込ませていきます。油断するとすぐに崩れるので、慎重に作業していきます。

途中で何回かドライヤーで乾かすと、その部分は動かなくなるので作業しやすくなります。

ここで問題が一つ、左右で1箇所ずつ、大穴が空いてしまっている場所があります。それは大きすぎてボンドでは埋められません。さてどうするか。

考えた末、布状のものを貼り付けることにしました。

近所のスギ薬局に走り、ガーゼを買ってきました。

これをこのように小さく切り、

貼り付けてなじませます。かなり細かい作業です。ボンドの水溶液に浸してから貼り付けたほうがうまくいきました。

さて、これでだいたい良さそうなのですが、白いガーゼが目立ってカッコ悪いです。まあこの部分はスピーカーのグリルがあるので目立たないといえばそうなのですが、できればなんとかしたいです。

このため、手持ちの油性塗料で塗ることにしました。

こういうのは余計なところにはみ出すとカッコ悪いので、簡単にですがマスキングします。

だいぶいい感じに仕上がりました。

乾燥させた後コーン部分を指で押してみると、やっぱり木工用ボンドを使ったためか元の状態よりは硬くなった感じがしました。

いよいよ、スイッチを入れて音楽を聞いてみます。とりあえず起動音の「ボーン」は普通に聞こえました。前のようなビビリもありません。

iTunesで音楽再生してみると!全然違和感なく音楽を聞けました。元々の音質をよく知っているわけではないのですが、内蔵スピーカーということを考えると全く普通と言えるレベルで聞くことができました。

正直オススメできるというほどの方法ではないのですが、一応うまく行っているので紹介しておきます。ゆくゆくは何らかの方法で互換品に交換したいですね。

Debian 12を使う〜個人的ベストプラクティスまとめ

何故Debianを選ぶのか

私は元々、Ubuntuをメインで使ってきました。Debianは、Ubuntuがベースにしているディストリビューションで、Ubuntuのパッケージの多くはDebianプロジェクトで作られたものとなっています。

ただ、UbuntuはアップデートがアグレッシブなのでLTS版でもポイントリリースでカーネルバージョンが上がったり、一部のパッケージはaptではなくsnapで提供されるようになるなどの新しい試みが頻繁に行われたりと、なかなかカオスな状況になってきています。

私としてはLinuxは開発対象というよりはデスクトップOSという道具として使いたい立場なので、あまり変更がアグレッシブなものはちょっとなと思い始めました。

DebianはDebianで、かつてはフリーソフトウェアの理念に対して頑固すぎて公式インストーラにインストール時に必要になるデバイスファームウェアが含まれていなかったりといった使いにくい点がありましたが、2023年にリリースされた12(bookworm)から方針が変わり、公式インストーラにもデバイスファームウェアが含まれるようになってより使いやすくなりました。

こうした状況なので、しばらくはDebianで生活してみようかと思うようになりました。

両者の違いの所感としては、Ubuntuのほうが見た目のデザインなどは洗練されていて、インストール後すぐに使えるようになっていたり初心者に優しいところが多い気がします。Debianは、安定版の品質は高いように思いますが、インストール後にちょっとやらないといけないことが多かったりと、若干中級者向けくらいに感じるところはあります。

インストール

Debianは元々ソース非公開のファームウェアなどに対して厳しい立場で、これらをインストーラに含めない方針であった。このためUbuntuなどと比べるとデフォルトで一部のハードが動かなかったりユーザーとしては不便な側面があったが、Debian 12から方針変更があり、公式のインストーラにこれらが含まれるようになった。なので、公式サイトからインストーラを取得すれば問題ない。

https://www.debian.org/distrib/

Debianの場合、「小さな」インストーラと「大きな」インストーラが提供される。前者は必要なパッケージをインストール中にネットから随時ダウンロードする方式(netinst)で、後者は必要なパッケージがすべてISO内に含まれている方式となる。Debian Projectはどうも、昔からサーバ負荷の観点からnetinstを使用してほしいようである。

注意点としては、netinstはインストール時点でネットワーク接続が必要になるため、インストーラで認識できる標準的なネットワークデバイスを搭載している必要がある。どのデバイスがインストーラで認識できるかは試してみないとわからないものの、経験上有線デバイスは利用できる可能性が高く、WiFiはダメな場合が多い。

ネットワークデバイスをインストーラ時点で認識できないようなら、フルのDVDイメージをダウンロードするのが良い。

今どきなので、DVDイメージなどと書かれていてもUSBに書き込んでインストールするのが一般的である。Windows環境ならRufus、MacならBalena Etcherを利用するのが簡単である。

Ubuntuと異なり、インストールしたいデスクトップ環境はインストール中に選ぶ形式になっている。個人的には、MATEが好みである。

※ MacBook Air 11(2013)で発生した問題

Debian11と12のインストーラで、内蔵SSDを認識できない問題が発生した。インストーラ起動時のカーネルオプションに以下を追加することで解決した。

intel_iommu=off

初期設定

sudoを使えるようにする

Ubuntuなどと異なり、インストール時に作成したユーザーでsudoがデフォルトで利用できない。このため、これを使えるようにする設定をまず行う。

XXXはインストール時に作成した一般ユーザーを指定すること。

$ su -
# adduser XXX sudo

ホームディレクトリ内のデフォルトディレクトリ名を英語にする

多くのLinux系ディストリビューションではホームディレクトリ内のデフォルトディレクトリ名(ドキュメント、ダウンロード、など)が日本語になっている。これは後にCUIを利用する際に非常に不便になるので、インストール直後に変更しておくことをおすすめする。

$ LANG=C xdg-user-dirs-update --force

この後、日本語のディレクトリの手動削除を行う。必要な中身が入っている場合には英語のディレクトリのほうに移すこと。

リポジトリ設定

ここがDebianのちょっとややこしいところ。インストールの方法(フルのDVDイメージか、netinstかなど)によって、デフォルトで設定される内容が異なり、デフォルトでインターネット経由のapt installができない状態の場合がある。aptで見つかるはずのパッケージが見つからない場合などは、ちゃんとnon-freeまで追加されているか確認が必要である。

参照先のリポジトリの設定は、/etc/apt/sources.listで行う。

一般的な設定例

まず、一般的に記載するべき内容は以下になると思われる。とりあえず以下をブチこんでおけば、一般的な用途であれば十分である。

もともとある行については、コメントアウトか削除して以下の行だけが有効になるようにしておく。backportsについては、コメントアウトした状態で入れてある。

deb http://ftp.jp.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb http://ftp.jp.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
# deb http://ftp.jp.debian.org/debian/ bookworm-backports main contrib non-free non-free-firmware

内容の説明

以下は公式サイトの記載を参考に、私なりに理解をまとめたもの。

公式マニュアルには、各行は以下の意味合いであると記載されている。

deb http://site.example.com/debian distribution component1 component2 component3
deb-src http://site.example.com/debian distribution component1 component2 component3

最初のdeb, deb-srcの部分は、debがバイナリパッケージリポジトリ、deb-srcがソースパッケージのリポジトリを表している。ソースパッケージは、自分でパッケージにパッチを当てたいなどの特殊な場合に使うものなので、通常はdebの行だけ追加しておけばオッケーである。

distributionのところには、単にバージョンのコード名が入るわけではなく、バージョンのコード名+以下のソフトウェアソースの種類を記載することになっているようである。

ソフトウェアソースの種類distributionの記載(bookwormの場合)説明
(無印)bookworm現在のリリースを構成するソフト
updatesbookworm-updates次回のポイントリリースを待てないアップデート
securitybookworm-security頻繁なセキュリティアップデート
backportsbookworm-backportsテスト版(testing)などから安定版(stable)にバックポートされてきたソフトがあるリポジトリ。より新しいバージョンのソフトが利用できるが、多少不安定な可能性がある。

リポジトリの種類は、backportsをどうするかだけが悩みどころで、後は追加しておいて良いと思われる。backportsは、安定版リリースよりも新しいパッケージを利用したい場合だけ追加すれば良い。(ただ、優先度は低く設定されているためbackportsのパッケージをインストールしたい場合には、明示的な指定が必要とのこと。)

URLは、security以外は基本的に国内のミラーサイトでよく、securityだけは上流のURLを指定する必要があるようである。

ちなみに、USBやDVDなどからインストールした場合、以下のようにソースとしてインストールメディアが指定された状態になっている。

deb cdrom:[Debian GNU/Linux 12.1.0 _Bookworm_ - Official amd64 DVD Binary-1 with firmware 20230722-10:49]/ bookworm main non-free-firmware

多くの人はインストール後のパッケージ取得はインターネット経由で行いたいと思われるので、こちらは削除orコメントアウトしてOKである。

componentsはソフトウェアの区分のようなもので、以下が存在している。

ソフトウェア区分名説明
mainDebian Projectのフリーソフトウェア方針に完全に則ったソフト。
contribDebian Projectのフリーソフトウェア方針に則ったソフトだが、そうでないソフトに依存するもの
non-freeDebian Projectのフリーソフトウェア方針に則っていないソフト
non-free-firmwareDebian Projectのフリーソフトウェア方針に則っていないソフトのうち、インストーラで必要とされる可能性があるもの(Debian 12以降で追加された)

一般的なデスクトップ用途で特に宗教上の理由がない人には、ソフトウェア区分は全部追加しておいて問題ないと思われる。

各種カスタマイズ

MacBookシリーズでメディアキーと標準ファンクションキーを入れ替える

Macでは、デフォルトでファンクションキーはメディアキー(音楽再生や音量増減など)に割り当てられている。これを標準ファンクションキーとして使えるように設定する。

まずは、設定が可能であるか一時変更で試してみる。

$ su -
# echo 2 > /sys/module/hid_apple/parameters/fnmode

これで機能が入れ替わっていたら、以下の手順で恒久化する。

このカーネルモジュールの都合で設定ファイルでの設定ができないようなので、起動時に上記コマンドを自動実行するように設定する。このために、rc.localを利用する。

rc.localは昔から起動時に自動実行されるファイルとして存在していたが、近年のLinuxではデフォルト無効にされている。Debian 12でも無効になっていて、ファイルは存在すらしていなかった。

以下の通り、ファイルを作成し、編集を行い、実行権限の付与を忘れずに行う。

$ sudo touch /etc/rc.local
$ sudo vi /etc/rc.local
$ sudo chmod +x /etc/rc.local

rc.localを新規作成した場合には、以下を書き込む。何らかの理由ですでにrc.localが存在していた場合には、exit 0の行より前にechoの行だけ書き込む。

#!/bin/bash
echo 2 > /sys/module/hid_apple/parameters/fnmode
exit 0

起動時にrc.localを自動実行するサービスを有効化する。

$ sudo systemctl enable rc-local.service

これで再起動して設定が恒久化されていたら成功である。

Debian 12のapt lineについて

システムが参照するaptリポジトリは/etc/apt/sources.listに記載されています。

Debianをローカルインストール用の大きなイメージを使用してインストールすると、aptのリポジトリとしてインストールに使用したメディアだけが追加された状態になります。これではインターネット経由でパッケージの更新やインストールができないため、多くの人が望む状態ではないと思われます。

例えば以下のような行だけが含まれた状態です。

deb cdrom:[Debian GNU/Linux 12.1.0 _Bookworm_ - Official amd64 DVD Binary-1 with firmware 20230722-10:49]/ bookworm main non-free-firmware

それに対し、ネットワークインストール用のメディアからインストールした場合、12.1のデフォルトは以下のようになっていました。

deb http://ftp.jp.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb http://ftp.jp.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

これをsources.listに記載することで、ネットワーク経由のパッケージ取得ができるようになります。

各OSで音楽を聞きながら寝る場合の簡易再生OFFタイマー

それぞれのコマンドラインで、以下を実行します。30分(=3600秒) sleepさせたあとシステムスリープのコマンドを呼び出すだけの強引な方法ですが、とりあえず音楽の再生は止められるので良しです。

Windows

sleep 3600 ; rundll32.exe PowrProf.dll,SetSuspendState

Linux

sleep 3600 ; systemctl suspend

Mac

sleep 3600 ; pmset sleepnow

Windowsで、UEFI起動順序を変更する

さて、皆様はWindowsとLinuxなどでデュアルブートを利用していますでしょうか。デュアルブートを利用している方は、片方のOSを入れ直したりアップデートしたタイミングでUEFIの起動順序を変えられてしまい、修復に苦労した、なんて経験がたいていあるのではないでしょうか。

Linuxの場合

Linuxでは、efibootmgrという便利なコマンドがあるのでこれで起動順序を直すことができます。

# 入っていなければインストール(Debian系)
sudo apt update ; sudo apt install efibootmgr
# 起動エントリのリストを得る
efibootmgr
# リストから一番に持ってきたい起動エントリの番号を探し(XXXXとする)、以下で設定
sudo efibootmgr -o XXXX

Windowsの場合

しかし、efibootmgrコマンドはWindowsでは使えません。長らくUbuntuのライブUSBなどに頼るしかないかと思っていましたが、なんとWindowsの標準コマンドでも設定変更が可能であることを知りました。bcdeditというWindowsのローダーの設定をいじるツールを利用するようです。(あくまでWindowsのローダー内の設定変更を行うだけのイメージだったので、グローバルなUEFIの設定をいじれるとは意外でした。)

# 起動エントリのリストを得る
bcdedit /enum firmware
# 目的の起動エントリのIdentifierをコピーする(UUID)
# 目的の起動エントリのUUIDを以下のコマンドで設定する
bcdedit /set '{fwbootmgr}' default '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}'

※ 参考

https://stackoverflow.com/questions/44919190/windows-equivalent-to-efibootmgr