Нет звука после обновления Ubuntu до 20.04

Вы прямо заявили, что хотите найти решение, используя vi. Но этого также можно добиться с помощью однострочной -инструкции sed

.
sed -i -e 's/.*CPU_check/# &/' -e 's/.*Memory_check/# &/' crontab

Это решение изменяет встроенный файл. Вы можете сохранить резервную копию файла, изменив флаг -iна -i.bakв вызове sed.

2
05.11.2020, 17:57
2 ответа

Вариант 1

Прежде чем перейти к пользовательской службе ниже, alsa перезагрузит вашу конфигурацию, проверив, существует ли /var/lib/alsa/asound.stateи что в ней находится (ваш список звуковых устройств ), через systemd alsa-restore.service, который запускается при загрузке (для перезагрузки вашей конфигурации )и при выключении (для сохранения вашей последней конфигурации)

Важно сначала проверить, существует ли эта конкретная служба с помощью

sudo systemctl status alsa-restore.service

и статус должен сообщать

alsa-restore.service - Save/Restore Sound Card State
     Loaded: loaded (/lib/systemd/system/alsa-restore.service; static; vendor preset: enabled)
     Active: active (exited) since Sun 2020-09-27 11:43:13 EDT; 5h 43min ago
       Docs: man:alsactl(1)
   Main PID: 755 (code=exited, status=0/SUCCESS)
      Tasks: 0 (limit: 11833)
     Memory: 0B
     CGroup: /system.slice/alsa-restore.service

Sep 27 11:43:13 FOOT systemd[1]: Starting Save/Restore Sound Card State...
Sep 27 11:43:13 FOOT systemd[1]: Finished Save/Restore Sound Card State.

Служба восстановления alsa -, расположенная в /lib/systemd/system/alsa-restore.service, должна выглядеть так:


#
# Note that two different ALSA card state management schemes exist and they
# can be switched using a file exist check - /etc/alsa/state-daemon.conf.
#

[Unit]
Description=Save/Restore Sound Card State
Documentation=man:alsactl(1)
ConditionPathExists=!/etc/alsa/state-daemon.conf
ConditionPathExistsGlob=/dev/snd/control*
After=alsa-state.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=-/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore
ExecStop=-/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime store

если эта служба существует, но отключена, вы можете включить и запустить ее с помощью

sudo systemctl enable alsa-restore.service
sudo systemctl start alsa-restore.service

Если sudo systemctl status alsa-restore.serviceсообщает о какой-либо дополнительной ошибке в своем статусе, которая приводит к сбою, возможно, сначала необходимо решить эту проблему.



Вариант 2

После двойной -проверки alsa force-reloadне является одноразовой командой-оболочкой для alsactl, а вместо этого отвечает за перезапуск соответствующей службы alsa, который происходит в два этапа: сначала останавливается, а затем снова запускается.

Подводя итог, sudo alsa force-reloadделает следующее

  1. Проверка, может ли команда alsactlбыть обнаружена, и, если нет, она сразу завершается
  2. Запуск скрипта, расположенного по адресу /usr/share/alsa/utils.sh, который, среди прочего, предоставляет некоторые функции индексации.
  3. Проверка существования /var/lib/alsa/asound.state
  4. Запуск alsactl -E HOME="$ALSACTLHOME" -E XDG_RUNTIME_DIR="${ALSACTLRUNTIME}" restore $CARD >/dev/null 2>&1для восстановления состояний томов для каждой карты, найденной в asound.state
  5. .

Шаг #4 — это именно то, что alsa-restore.serviceвыполняет при загрузке и завершении работы при правильной работе, следовательно, все проблемы указывают на то, что он отключен или отсутствует вообще.

Мы уже знаем, что alsactlсуществует в вашей системе, потому что alsa force-reloadработает, но В следующий раз, когда вы перезагрузитесь и ваш звук не перезагрузится автоматически, вместо использования alsa force-reloadпопробуйте запустить из терминала:

sudo /usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore

Если эта команда восстанавливает ваш звук, то это то, что вы хотите запускать при запуске в качестве службы (, и ее соответствующую версию также запускать при завершении работы )в соответствующий момент.

Следовательно, если alsa-restore.serviceне существует в вашей системе, вы должны тогда и только тогда создать свой собственный myaudio.serviceвот так:

sudo nano /etc/systemd/system/myaudio.service

Скопируйте в него следующее:

[Unit]
Description=Start Audio
ConditionPathExists=!/etc/alsa/state-daemon.conf


[Service]
Type=oneshot
ExecStart=-/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore
ExecStop=-/usr/sbin/alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime store
RemainAfterExit=true


[Install]
WantedBy=sound.target

Сохранение, затем:

sudo systemct enable myaudio.service 
sudo systemctl start myaudio.service 
sudo systemctl status myaudio.service

Который включит, запустит и сообщит о состоянии вашей новой службы. Если 3 команды выполнены без ошибок, вы можете перезагрузить компьютер и протестировать его.

1
18.03.2021, 23:02

Это сообщение ¨code=exited, status=99¨, вероятно, связано с тем, что он не является членом аудиогруппы.

sudo usermod -a -G audio username

Затем перезагрузитесь и проверьте с помощью:

journalctl -b | grep alsa

0
18.03.2021, 23:02

Теги

Похожие вопросы