Debian 10では、timidity
通常のユーザーとしてalsaシリアルコンバータを起動しても問題はありません。完璧に動作します。
samuele@INSPIRON-17:~$ timidity -Os -iA
Requested buffer size 32768, fragment size 8192
ALSA pcm 'default' set buffer size 32768, period size 8192 bytes
TiMidity starting in ALSA server mode
Opening sequencer port: 128:0 128:1 128:2 128:3
ユーザーに切り替えるとroot
動作しなくなります。
root@INSPIRON-17:~# timidity -Os -iA
ALSA lib pcm_dmix.c:1108:(snd_pcm_dmix_open) unable to open slave
Can't open pcm device 'default'.
Couldn't open ALSA pcm device (`s')
「基本」デバイスが見つからないようです。強制的に~/.asoundrc
ファイルを作成したり、グローバルに作成したりすることができますが、/etc/asound.conf
一般ユーザーには必要ありません。 globalにアクセスしているようですが、そうではあり/usr/share/alsa/alsa.conf
ませんroot
。
だから私の質問は:新しい設定ファイルを作成せずにこの問題をどのように解決できますか?グローバルファイルへのアクセス権を付与できますかroot
?それとも何か抜けましたか?
システムはDebian 10を実行しています。
答え1
解決したと思います。これはデザインとライセンスの問題が混在しています。
によると、/usr/share/alsa/alsa.conf
すべてのconfをロードします。に接続されている/etc/alsa/conf.d
ものが1つあります。最後のファイルでは、起動はデフォルトのalsaデバイスに設定されており、起動時に起動せず、ユーザーがログインしたときにのみ起動されます。99-pulse.conf
/usr/share/alsa/pulse-alsa.conf
pulse
pulseaudio
ルートは主にパルスへのアクセスが不足しているため、臆病者を使用することはできません。これが最初の権限の問題です。
ユーザーログイン後にtimidityをサービスとして起動しようとすると、パッケージによって提供されるinitスクリプトがtimidity-daemon
start-stop-daemonを介してユーザーtimidityでプロセスを開始しようとするため、機能しませんが、これは2番目の権限です。問題。そして、rootには権限がないので、ユーザーの変更部分を削除するためにスクリプトを変更しても機能しません。 (私にとって)唯一の謎は、timidity-daemonパッケージをインストールした後に権限の問題は発生しませんでしたが、最初の再起動後に動作が停止したことです。
とにかく2つの方法で解決できます。
シンプルで邪魔にならない最初のソリューションは、パッケージをまったく使用せずにtimidity-daemon
。timidity.service
/usr/lib/systemd/user/
必須パッケージをインストールする前に
sudo apt-get install timidity fluid-soundfont-gm
/usr/lib/systemd/user/timidity.service
次に、この内容でファイルを作成します(sudoを使用)。
[Unit]
Description=Timidity
After=pulseaudio.service
[Service]
Type=simple
ExecStart=/usr/bin/timidity -Os -iA
[Install]
WantedBy=pulseaudio.service
今インストールして実行してみてください
systemctl --user enable timidity.service
systemctl --user start timidity.service
すべてが完了しました。
2番目の解決策は、システム全体の起動時にパルスを開始し、ルートと心の弱い人がそれを使用できるようにすることです。これはセキュリティの観点から最善の選択ではありません。とにかく、システム全体のルートとして機能するようにパルス/シャイを取得するには、次の手順に従います。https://raven4.cz/wp/pulseaudio-in-system-wide-mode/)
まず、基本パッケージをインストールしてください。
sudo apt-get install timidity timidity-daemon fluid-soundfont-gm
編集(sudoを使用)/etc/pulse/daemon.conf
、対応する行を検索する
; system-instance = no
コメントを外してyesに設定します。
system-instance = yes
これでファイルを削除/etc/pulse/system.pa
し、default.paをsystem.paにシンボリックリンクします。
sudo rm /etc/pulse/system.pa
sudo ln -s /etc/pulse/default.pa /etc/pulse/system.pa
それでは、編集(sudo)/etc/pulse/default.pa
してその行を見つけてください。
load-module module-native-protocol-unix
そしてこのように変えてください。
load-module module-native-protocol-unix auth-group-enable=true auth-group=pulse-access socket=/tmp/pulse-socket
それでは、編集(sudo)/etc/pulse/client.conf
してその行を見つけてください。
; default-server =
コメントを外してこのように設定してください。
default-server = unix:/tmp/pulse-socket
pulseaudioにアクセスしたいアカウントに各ユーザーを追加する必要がありますpulse-access
。timidity
自分のユーザーとして実行されるので、それを追加する必要があります。私の場合は、ユーザーroot
と基本ユーザーが欲しいので、samuele
次のようにします。
usermod -a -G pulse-access root
usermod -a -G pulse-access samuele
usermod -a -G pulse-access timidity
これでカスタムファイルを作成する必要がありますpulseaudio.service
。したがって、/etc/systemd/system/pulseaudio.service
この内容でファイルを作成してください。
[Unit]
Description=Pulseaudio
[Service]
User=root
Type=forking
ExecStart=/bin/pulseaudio --realtime --daemonize
Restart=always
[Install]
WantedBy=graphical.target
今、臆病さを正すべき時です。
使用していることを確認してください
aconnect -lo | grep -i timidity
そうでない場合は始めましょう。
sudo service timidity start
すべてが正常かどうか、生成されたサービスファイルがあることを再確認してください。/run/systemd/generator.late/timidity.service
にコピー/etc/systemd/system
sudo cp /run/systemd/generator.late/timidity.service /etc/systemd/system/timidity.service
これで編集(sudo)してファイルの検索を開始します。
After=remote-fs.target
そしてこのように変えてください。
After=remote-fs.target pulseaudio.service
ファイルの末尾に次の2行を追加してインストール可能にします。
[Install]
WantedBy=multi-user.target
今掃除する時間です。臆病者ではなくinit.dから削除してください。
sudo service timidity stop
sudo update-rc.d -f timidity remove
ユーザー固有のパルスオーディオを停止して無効にした後、ユーザーディレクトリ構成をクリーンアップします。
systemctl --user stop pulseaudio.socket
systemctl --user stop pulseaudio.service
systemctl --user disable pulseaudio.socket
systemctl --user disable pulseaudio.service
rm -Rf ~/.config/pulse/
今新しいサービスを有効にする
sudo systemctl enable /etc/systemd/system/pulseaudio.service
sudo systemctl enable /etc/systemd/system/timidity.service
機械を再起動してください。ああああああああああああああああああああああああ...それで終わりです!