声音驱动程序 - 使用AWS EC2 ubuntu 16.04实例的snd-aloop内核模块设置问题

rah*_*hul 2 audio ubuntu kernel amazon-ec2 kernel-module

无法在AWS EC2 ubuntu 16.04实例中使用snd-aloop音频驱动程序

在snd-aloop上运行modprobe

$modprobe snd-aloop
modprobe: FATAL: Module snd-aloop not found in directory /lib/modules/4.4.0-1052-aws
Run Code Online (Sandbox Code Playgroud)

AWS matchine中的内核是 -

/lib/modules/4.4.0-1049-aws  
/lib/modules/4.4.0-1052-aws  
/lib/modules/4.4.0-116-generic
Run Code Online (Sandbox Code Playgroud)

当前内核已加载

$uname -r
4.4.0-1052-aws
Run Code Online (Sandbox Code Playgroud)
  1. 在经过大量搜索之后,确认snd-aloop预装在ubuntu 16.04中.(https://askubuntu.com/questions/891445/alsa-snd-aloop-kernel-module-for-16-04-or- 14-04-服务器)
  2. 所以我验证并发现模块出现在

"/lib/modules/4.4.0-116-generic"内核.location - /lib/modules/4.4.0-116-generic/kernel/sound/drivers/snd-aloop.ko

  1. 经过深思熟虑后,使用snd-aloop音频驱动程序的一种可能方法是使用4.4.0.116-通用内核.
    • 所以要做同样的事情我修改了/boot/grub/menu.lst并编辑了内核列表.(注释掉除了4.4.0.116-generic之外的所有其他内核)然后做了update-grub但是什么都没发生,内核加载的是/ lib /modules/4.4.0-1052-aws.
    • 然后我修改了/ etc/default/grub文件并将GRUB_DEFAULT = 0更改为内核标题为 GRUB_DEFAULT ="gnulinux-4.4.0-116-generic-advanced-b6adc449-5e3d-4331-ba6b-6e99a75fa48e> gnulinux-4.4.0 -116-generic-recovery-b6adc449-5e3d-4331-ba6b-6e99a75fa48e" 并再次进行了grub更新,但没有发生任何事情.

我已经阅读了以下文档

1. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html - 用于更改内核的Aws文档指南.

我不记得其他链接,但我搜索了很多.

请指出我正确的方向.如何在AWS EC2 Ubuntu 16.04实例中使用音频驱动程序sdn-aloop?

jos*_*sue 8

esto me funciono en ubuntu 18

$ update-grub
0: Found linux image: /boot/vmlinuz-5.3.0-1017-aws
1: Found initrd image: /boot/initrd.img-5.3.0-1017-aws
2: Found linux image: /boot/vmlinuz-4.15.0-1057-aws
3: Found initrd image: /boot/initrd.img-4.15.0-1057-aws
4: Found linux image: /boot/vmlinuz-4.15.0-99-generic
5: Found initrd image: /boot/initrd.img-4.15.0-99-generic
Run Code Online (Sandbox Code Playgroud)

seleciona los drive genericos 4 es genericos edita el /etc/default/grub

GRUB_DEFAULT="1>4"

update-grub
reboot now
lsmod | grep snd_aloop
Run Code Online (Sandbox Code Playgroud)

退出朋友。


小智 5

更新默认内核引导项的步骤(不修改/boot/grub/menu.lst):

  1. grub.cfg中找到所需的菜单和子菜单项: cat /boot/grub/grub.cfg

    例如,您可以使用这样的菜单结构(AWS Ubuntu 16.04的默认设置):

    • (0)Ubuntu
    • (1)Ubuntu的高级选项
      • (0)Ubuntu,Linux 4.4.0-1052-aws
      • (1)Ubuntu,Linux 4.4.0-1052-aws(恢复模式)
      • (2)Ubuntu,Linux 4.4.0-116-通用
      • (3)Ubuntu,Linux 4.4.0-116-通用(恢复模式)

    在这种情况下,如果您需要加载"Ubuntu,Linux 4.4.0-116-generic",则默认启动设置为"1> 2"

  2. 编辑默认grub文件:

    vim /etc/default/grub 并设定

    GRUB_DEFAULT=“1>2”

  3. update-grub

  4. 然后reboot now实现这一点
  5. 重新启动后,您可以测试它uname -a应该给4.4.0-116通用

在此之后modprobe snd-aloop应该工作正常.


小智 5

AWS 上的 Jibri 并遇到以下问题。

org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegProcessUpdate() Ffmpeg 突然退出。最后输出行:plug:bsnoop: 输入/输出错误

解决方案:将内核启动设置从 Linux 4.4.0-xxxx-aws 更改并更新为 Linux 4.4.0-xxxx-generic,然后重新启动实例。

我已通过以下步骤修复:

$ grep -A200 子菜单 /boot/grub/grub.cfg |grep 菜单项

输出:

submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-e6dc6474-8016-46c6-8ab0-0a871bae4cd1' {
    menuentry 'Ubuntu, with Linux 4.4.0-1107-aws' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-1107-aws-advanced-e6dc6474-8016-46c6-8ab0-0a871bae4cd1' {
    menuentry 'Ubuntu, with Linux 4.4.0-1107-aws (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-1107-aws-recovery-e6dc6474-8016-46c6-8ab0-0a871bae4cd1' {
    menuentry 'Ubuntu, with Linux 4.4.0-1106-aws' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-1106-aws-advanced-e6dc6474-8016-46c6-8ab0-0a871bae4cd1' {
    menuentry 'Ubuntu, with Linux 4.4.0-1106-aws (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-1106-aws-recovery-e6dc6474-8016-46c6-8ab0-0a871bae4cd1' {
    menuentry 'Ubuntu, with Linux 4.4.0-1105-aws' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-1105-aws-advanced-e6dc6474-8016-46c6-8ab0-0a871bae4cd1' {
    menuentry 'Ubuntu, with Linux 4.4.0-1105-aws (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-1105-aws-recovery-e6dc6474-8016-46c6-8ab0-0a871bae4cd1' {
    menuentry 'Ubuntu, with Linux 4.4.0-179-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-179-generic-advanced-e6dc6474-8016-46c6-8ab0-0a871bae4cd1' {
    menuentry 'Ubuntu, with Linux 4.4.0-179-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-179-generic-recovery-e6dc6474-8016-46c6-8ab0-0a871bae4cd1' {

Run Code Online (Sandbox Code Playgroud)

Ubuntu 的高级选项的菜单条目 ID 为 gnulinux-advanced-e6dc6474-8016-46c6-8ab0-0a871bae4cd1 Ubuntu 的菜单条目,Linux 4.4.0-179-generic 为 gnulinux-4.4.0-179-generic-advanced-e6dc6474 -8016-46c6-8ab0-0a871bae4cd1

编辑 Grub并将 GRUB_DEFAULT 替换为上述值

$ 纳米 /etc/default/grub

GRUB_DEFAULT="gnulinux-advanced-e6dc6474-8016-46c6-8ab0-0a871bae4cd1>gnulinux-4.4.0-179-generic-advanced-e6dc6474-8016-46c6-8ab0-0a871bae4cd1"
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0"
GRUB_CMDLINE_LINUX=""

Run Code Online (Sandbox Code Playgroud)

更新并重新启动

$ sudo update-grub $ sudo restart

重新启动后,您可以使用 uname -a 进行测试,它应该给出 4.4.0-179-generic

$ uname -a

Linux 4.4.0-179-通用

在此之后 modprobe snd-aloop 应该可以正常工作。