antiX-時刻合わせsysVint

2025/10/31

antiX(sysvinit版)での正しい時刻合わせ方法

方法①:ntpdate(最も簡単)

インストール
sudo apt update
sudo apt install -y ntpdate
一度だけ手動で同期
sudo ntpdate ntp.nict.jp
出力例:
29 Oct 00:45:23 ntpdate[2103]: adjust time server 133.243.238.164 offset -0.003456 sec
→ これで即座に日本標準時刻(NICT)に一致します。

方法②:起動時に自動で同期させる

手動で合わせるだけでは再起動後にまたズレるため、
毎回起動時に ntpdate を実行する設定を追加しておきます。

/etc/rc.local を編集
sudo nano /etc/rc.local
exit 0 の 直前 に下記を追記:
/usr/sbin/ntpdate -u ntp.nict.jp
保存して再起動:
sudo reboot
これで、起動するたびに日本標準時サーバ(NICT)へ自動同期します。

antiXのマイク、スピーカー設定

2025/10/31
antiX(runit 版/rox‑iceWM)を搭載した Let's note CF‑LX5 において、内蔵オーディオとUSBヘッドセットを確実に動かします。

検証環境(実機)

項目内容
ハードウェアPanasonic Let's note CF‑LX5(i5‑6300U、RAM 4GB)
ディストリビューションantiX Linux 64bit(runit版)
サウンドRealtek ALC256 / HDA Intel PCH、USB Audio Headset

ゴール

段階内容成果
1内蔵スピーカー・マイクの認識確認ALSAで認識(再生/録音OK)
2USBヘッドセットの再生・録音確認左右ステレオ再生、USBマイク録音
3音量・ゲイン最適化小音量・歪みを解消し実用レベルへ
4Zoom導入と依存解決.deb 導入・依存インストール・起動確認
5起動方式の最適化アイコンクリック/URLクリック運用、常駐不要
6異常終了後のクリーンナップkill無しの掃除スクリプトをデスクトップアイコン化

1. ALSA でデバイス認識を確認

aplay -l
arecord -l
lspci | grep -i audio
lsmod | grep snd
amixer
確認ポイント目安
内蔵再生`card 0: PCH … ALC256 Analog`
HDMI`HDMI 0/1/2` が列挙
内蔵録音`arecord -l` に ALC256 Capture
ドライバ`snd_hda_intel` / `snd_usb_audio` など
音量`amixer` で Playback on / Capture on

2. 内蔵スピーカー・マイクの動作確認

# 再生テスト(左右確認)
speaker-test -c2 -t wav

# 録音→再生(5秒)
arecord -d 5 test.wav
aplay test.wav
症状対処
無音`alsamixer` で Mute解除(MM→00)、音量↑
録音が割れる`amixer set Capture 70%`、または `alsamixer` でCapture 70–85%

3. USBヘッドセットの認識とチャンネル不一致の回避

# 再生は 2ch を明示(モノラルファイルは避ける)
speaker-test -D hw:1,0 -c 2 -t wav

# 端末表示で再生デバイスを確認(参考)
cat /proc/asound/pcm
要点解説
チャンネル不一致USBはステレオ専用ことが多い→ `-c 2` 指定
デバイス番号`hw:1,0` / `hw:1,1` は `cat /proc/asound/pcm` で確認

4. USBマイクの録音(形式を明示して失敗回避)

# 16bit/44.1kHz/モノラルで録音(VUメーター付き)
arecord -D plughw:1,0 -f S16_LE -r 44100 -c 1 -V mono -d 5 test_usb.wav
aplay -D plughw:1,0 test_usb.wav

# もし capture が 1,1 側なら
arecord -D plughw:1,1 -f S16_LE -r 44100 -c 1 -V mono -d 5 test_usb2.wav
aplay -D plughw:1,0 test_usb2.wav
症状対処
録音できない/無音`-f S16_LE -r 44100 -c 1` を必ず付ける
小音量`alsamixer -c 1` → Capture/Mic を 70–90%、CAPTUREフラグON

5. ミキサー操作の最小要領(alsamixer)

alsamixer          # ←/→ で項目移動、↑/↓ で音量、M でミュート解除、SpaceでCAPTURE
alsamixer -c 1     # USBカード側
項目操作
Master/PCM/Headphone再生側の音量を上げる
Mic/Capture入力ゲインを調整、CAPTUREフラグをON

Linux の音声機能を理解する上で、ALSA(Advanced Linux Sound Architecture) は中核です。
以下では、初心者にも内部構造がわかるように、機能と役割を体系的に説明します。

ALSAとは

Advanced Linux Sound Architecture の略。
Linuxカーネルに組み込まれた「音声入出力の標準サブシステム」で、
現在では OSS(Open Sound System)に代わる事実上の標準 です。
項目要点
構造カーネルドライバ+ライブラリ+ユーザーコマンドで構成
役割音声デバイスの認識・再生・録音・ミキサー制御
代表モジュールsnd_hda_intel, snd_usb_audio, snd_soc_*
設定/etc/asound.conf, ~/.asoundrc
他システムとの関係PulseAudioやPipeWireはALSAを下層として利用
特長軽量・低遅延・組込み適性高い
限界同時再生制約/設定が難解な場合あり

ALSAの構成

ALSAは大きく3層で構成されています。
構成要素役割
カーネル層ALSAドライバ(snd_* モジュール)ハードウェアデバイスと直接通信(例:snd_hda_intel)
ライブラリ層libasound.so(ALSAライブラリ)アプリケーションからのAPI呼び出しを抽象化
ユーザー層aplay, arecord, alsamixer, amixer, alsactl など音声再生・録音・音量制御などの操作コマンド

ALSAが担う主な機能

機能説明代表的コマンド/設定
デバイス認識サウンドカード・USBヘッドセット・HDMI音声の自動検出aplay -l, arecord -l, /proc/asound/cards
ドライバ管理snd_hda_intel などのモジュールを通じてHW制御lsmodgrep snd
PCM再生・録音アナログ/デジタル音声データを送受信aplay, arecord
ミキサー制御音量調整・ミュート・入力選択amixer, alsamixer
構成管理デバイス優先順位・仮想デバイス定義/etc/asound.conf, ~/.asoundrc
状態保持再起動後も音量設定を保存/復元alsactl store, alsactl restore

ALSAデバイスの概念

デバイス種別説明
ハードウェアデバイス(hw)物理カードに直接アクセスhw:0,0(card0, device0)
プラグデバイス(plughw)自動的にサンプリング変換やフォーマット調整plughw:1,0(USBで推奨)
デフォルトデバイスasound.conf に定義された標準出力default
仮想デバイスソフトミキサ(dmix等)を通じて複数アプリから共有default, dmix, pulse

ALSAとPulseAudio/PipeWireの関係

ALSAは最下層の音声I/Oを担い、PulseAudioやPipeWireはその上で動く「ミキサー兼ルーティング層」です。
階層役割
アプリケーション音楽プレイヤー、Zoom、Teams等aplay, Firefox, Zoom
PulseAudio/PipeWire複数アプリの音声を統合・転送pavucontrol, pipewire
ALSAライブラリアプリ → カーネルの橋渡しlibasound.so
ALSAドライバハードウェア直接制御snd_hda_intel, snd_usb_audio
つまり、PulseAudioも最終的にはALSAを経由して出力しています。

ALSA設定ファイルの概要

ファイル目的主な内容
/etc/asound.confシステム全体の既定設定デフォルトデバイス指定、仮想デバイス定義
~/.asoundrcユーザー単位の上書き設定ユーザー独自の音量・デバイス設定
例:USBをデフォルト出力にする設定
bash
defaults.ctl.card 1
defaults.pcm.card 1

ALSAの代表的コマンド

コマンド目的備考
aplay再生aplay -D hw:1,0 sample.wav
arecord録音arecord -D plughw:1,0 -f S16_LE -r 44100 -c 1 test.wav
amixer音量設定(CLI)amixer set Master 70%
alsamixer音量設定(CUI)グラフィカルなTUI
alsactl設定保存/復元alsactl store/alsactl restore

ALSAの特徴と限界

観点特徴補足
軽量性PulseAudioより低負荷組み込み・軽量Linuxで主流
遅延非常に低レイテンシリアルタイム性に強い
共有単体では1デバイス1アプリ制約dmix により同時再生可
拡張性設定柔軟だが複雑PulseAudioで抽象化される傾向

antiXでWEB会議-zoom編

2025/10/31
音声設定はこちら

外出先でWEB会議。これ絶対必要なので、zoomアプリをいれました。まあ、ブラウザでも参加はできるのですが、アプリもやってみましょう。

検証環境(実機)

項目内容
ハードウェアPanasonic Let's note CF‑LX5(i5‑6300U、RAM 4GB)
ディストリビューションantiX Linux 64bit(runit版)
サウンドRealtek ALC256 / HDA Intel PCH、USB Audio Headset

ゴール

段階内容成果
AZoom導入と依存解決.deb 導入・依存インストール・起動確認
B起動方式の最適化アイコンクリック/URLクリック運用、常駐不要
C異常終了後のクリーンナップkill無しの掃除スクリプトをデスクトップアイコン化

1. Zoom の導入(.deb からインストール)

cd ~/Downloads
wget https://zoom.us/client/latest/zoom_amd64.deb

# 依存関係込みで導入
sudo dpkg -i zoom_amd64.deb || true
sudo apt -f install -y

# 不足が出たら(例)
sudo apt install -y libxcb-xtest0 libxcb-cursor0
sudo dpkg --configure -a
確認コマンド
インストール済`dpkg -l | grep zoom`
配置`ls /opt/zoom/ZoomLauncher`
起動`zoom &` または `/opt/zoom/ZoomLauncher &`

2. Zoom の音声設定(推奨)

項目設定
スピーカーUSB Audio Device
マイクUSB Audio Device
マイク自動調整ON
ノイズ抑制自動/中
HD映像/高忠実度OFF(軽量化)

3. 起動方式の整理(常駐は不要)

起動経路指定常駐
ターミナル`zoom` または `zoom &`しない(ウィンドウ閉で終了)
アイコン(.desktop)`Exec=/usr/bin/zoom %U`しない(`%U`はURL受け渡し)
nohup運用(特殊)`nohup zoom >/dev/null 2>&1 & ; disown`端末切断でも継続

4. .desktop の基礎(`&` は不要/`%U` の意味)

記述意味
`Exec=zoom`単純起動。GUIランチャは非同期で起動するため `&` 不要
`Exec=/usr/bin/zoom %U`URL(複数)を引数として受け取り、ミーティングリンクを直接開ける

5. 異常終了後のクリーンナップ

kill は行わず、残骸のみ削除(通知はオプション)。
# 本体:/usr/local/bin/zoomtidy
sudo tee /usr/local/bin/zoomtidy >/dev/null <<'EOS'
#!/bin/sh
rm -rf "$HOME/.zoom/tmp" 2>/dev/null
find "$HOME/.zoom" -maxdepth 2 -type f \( -name '*.lock' -o -name '*.tmp' \) -delete 2>/dev/null
find /tmp -maxdepth 1 -name 'zoom*' -delete 2>/dev/null
# 任意の通知(ある場合だけ)
if command -v yad >/dev/null 2>&1; then
  yad --title="Zoom Cleanup" --text="Cleaned leftover files." --button=OK:0 >/dev/null 2>&1
elif command -v notify-send >/dev/null 2>&1; then
  notify-send "Zoom Cleanup" "Cleaned leftover files."
elif command -v xmessage >/dev/null 2>&1; then
  xmessage -center "Zoom leftovers cleaned."
fi
EOS
sudo chmod +x /usr/local/bin/zoomtidy

6. デスクトップアイコン(ユーザー領域に配置)

Rox‑iceWM では、デスクトップ上の .desktop に **実行権(+x)** が必要。
mkdir -p ~/.local/share/applications
tee ~/.local/share/applications/zoomtidy.desktop >/dev/null <<'EOS'
[Desktop Entry]
Type=Application
Name=Zoom Cleanup
Comment=Cleanup leftover files after abnormal exit
Exec=/usr/local/bin/zoomtidy
Icon=zoom
Terminal=false
Categories=Utility;
EOS

cp ~/.local/share/applications/zoomtidy.desktop ~/Desktop/
chmod +x ~/Desktop/zoomtidy.desktop
確認コマンド
本体の実行権`ls -l /usr/local/bin/zoomtidy` → `-rwxr-xr-x`
アイコンの実行権`ls -l ~/Desktop/zoomtidy.desktop` → `-rwxr-xr-x`
手動実行`/usr/local/bin/zoomtidy`

7. 代表的なハマりどころと即解

症状原因即解
USB再生が無音チャンネル不一致(1ch)`speaker-test -D hw:1,0 -c 2 -t wav`
USB録音が無音フォーマット不一致`arecord -D plughw:1,0 -f S16_LE -r 44100 -c 1`
小音量/遠いCAPTURE未有効/ゲイン不足`alsamixer -c 1` で Capture 70–90%、CAPTURE ON
Zoom が再起動できない残骸(*.lock / /tmp/zoom*)`zoomtidy` 実行→再起動
`Exec=zoom &` と書いた`&` はシェル記法.desktop の Exec では `&` 不要
`%U` の意味が不明URLを渡すトークンミーティングリンク連携用(常駐ではない)

8. 仕上げのチェックリスト

項目状態
内蔵オーディオの再生/録音OK
USBヘッドセットの再生(2ch)OK
USBマイクの録音(16bit/44.1kHz)OK
Zoom の起動・音声テストOK
デスクトップ「Zoom Cleanup」動作/通知確認済

付記

通知はオプションです(yad / notify-send / xmessage の有無で自動分岐)。常駐運用は本環境では不要であり、アイコンクリック/URLクリックでの起動を前提にしています。

antiX-時刻合わせ-runit

2025/10/30
時刻合わせは、設定パネルからも設定できますので、ご参考まで。

antiX(runit)での時計自動合わせ:chronyd

項目内容
目的chronyd を runit 管理で常時稼働させ、NTP自動同期を行う
既知の落とし穴/var/service ではなく **/etc/service** にリンクする/サービス定義(run, log/run)の実体必須

手順1:パッケージ確認(chrony が入っているか)

dpkg -l chrony >/dev/null 2>&1 || (sudo apt update && sudo apt install -y chrony)
command -v chronyd || echo "chronyd が見つかりません(chrony のインストールを確認)"

期待:`/usr/sbin/chronyd` などが表示される。

手順2:runit サービス定義の実体を用意(/etc/sv/chronyd)

# サービス定義ディレクトリ & ログ用ディレクトリ
sudo mkdir -p /etc/sv/chronyd/log/main
sudo mkdir -p /var/log/chronyd

# run スクリプト作成(前面・デーモンログ出力のため -d)
sudo tee /etc/sv/chronyd/run >/dev/null <<'EOF'
#!/bin/sh
exec /usr/sbin/chronyd -f /etc/chrony/chrony.conf -d
EOF
sudo chmod +x /etc/sv/chronyd/run

# log/run(svlogd で /var/log/chronyd に記録)
sudo tee /etc/sv/chronyd/log/run >/dev/null <<'EOF'
#!/bin/sh
exec svlogd -tt /var/log/chronyd
EOF
sudo chmod +x /etc/sv/chronyd/log/run
検証:
ls -l /etc/sv/chronyd /etc/sv/chronyd/log
# → run と log/run に +x が付いていること

手順3:runit の監視ディレクトリに「登録」する(/etc/service にリンク)

# 監視ディレクトリを用意(存在すればOK)
sudo mkdir -p /etc/service

# (誤登録の掃除:任意)/var/service に古いリンクがあれば削除
sudo rm -f /var/service/chronyd 2>/dev/null || true

# 正しい監視先へリンク(上書き安全)
sudo ln -sfn /etc/sv/chronyd /etc/service/chronyd
検証:
ls -l /etc/service/chronyd
# → /etc/service/chronyd -> /etc/sv/chronyd

手順4:起動と状態確認(sv は /etc/service を既定参照)

# 絶対パス指定だとより確実
sudo sv start /etc/service/chronyd
sudo sv status /etc/service/chronyd

期待:
>|text|
run: chronyd: (pid XXXX) Ns

手順5:NTPサーバー(日本向け)設定と再起動

# 推奨サーバーを先頭に差し込み(重複行があれば適宜整理)
sudo sed -i '1iserver ntp.nict.jp iburst\nserver ntp.jst.mfeed.ad.jp iburst' /etc/chrony/chrony.conf

# 設定反映
sudo sv restart /etc/service/chronyd

# 同期状況の確認
chronyc sources -v
chronyc tracking

期待例:
>|text|
Reference ID : (ntp.nict.jp)
System time  : ... seconds fast/slow of NTP time

手順6:RTC(ハードウェアクロック)へ反映

sudo hwclock --systohc
sudo hwclock --show  # 表示がシステム時刻と一致すること

検証チェックリスト

目的コマンド期待出力
サービスの稼働`sudo sv status /etc/service/chronyd``run: chronyd: ...`
リンクの正しさ`readlink -f /etc/service/chronyd``/etc/sv/chronyd`
run/log 実体の有無`ls -l /etc/sv/chronyd /etc/sv/chronyd/log``run` と `log/run` が +x
chronyd 実体`which chronyd``/usr/sbin/chronyd`
同期状況`chronyc tracking`偏差(offset)が小さい
ログ`tail -n 50 /var/log/chronyd/current strings tail`起動・同期ログあり

典型トラブルと対処(正確版)

症状原因対処
`fail: chronyd: unable to change to service directory`/etc/service ではなく /var/service にリンク/または run 実体が無い`sudo ln -sfn /etc/sv/chronyd /etc/service/chronyd` を作り直す/手順2で run/log/run を作る
`506 Cannot talk to daemon`chronyd が起動していない`sudo sv start /etc/service/chronyd` 後に `chronyc tracking`
`sv status chronyd` で見つからないsv の探索先と不一致絶対パスで操作:`sudo sv status /etc/service/chronyd`
ログが出ないlog/run 不在/権限なしlog/run 作成&`chmod +x`、`/var/log/chronyd` の存在確認
同期が遅い外部到達性/DNS/サーバ選定`server ntp.nict.jp iburst` 等の設定見直し、`chronyc sources -v` の到達性確認

補足:即時同期(ネット接続直後の一発合わせ)

sudo chronyc -a makestep

**補足:GUIログイン後の再同期待ちを入れる(任意)
>|bash|
echo '(sleep 15 && chronyc -a makestep) &' >> ~/.desktop-session/startup

まとめ

  • antiX(runit)では **/etc/service** へのリンクが正解。
  • **/etc/sv/chronyd/run,log/run** の実体が必須(+x)。
  • `sv` の操作は **絶対パス指定** だと誤探索を避けられる。
  • `chronyc tracking` で最終確認、`hwclock --systohc` でRTCに反映。