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

时间:2018-03-28 15:28:47

标签: ubuntu audio amazon-ec2 kernel 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

AWS matchine中的内核是 -

/lib/modules/4.4.0-1049-aws  
/lib/modules/4.4.0-1052-aws  
/lib/modules/4.4.0-116-generic

当前内核加载

$uname -r
4.4.0-1052-aws
  1. 经过大量搜索后,确认snd-aloop预先安装在ubuntu 16.04中。(https://askubuntu.com/questions/891445/alsa-snd-aloop-kernel-module-for-16-04-or-14-04-server
  2. 所以我验证并发现该模块出现在
  3.   

    “/ 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 并编辑了内核 list 。(注释掉除4.4.0.116之外的所有其他内核 - 通用) 然后做了update-grub但没有发生任何事情,内核加载了 /lib/modules/4.4.0-1052-aws。
      • 然后我修改了 / etc / default / grub文件和 将 GRUB_DEFAULT = 0 更改为内核标题为 的 GRUB_DEFAULT = “gnulinux-4.4.0-116泛型 - 高级 - b6adc449-5e3d-4331-ba6b-6e99a75fa48e> gnulinux-4.4.0-116泛型恢复-b6adc449-5e3d-4331-ba6b-6e99a75fa48e” 并再次做了grub更新,但没有发生任何事情。
    2. 我已经阅读了以下文档

      1. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedKernels.html - Aws doc指南更改内核。

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

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

4 个答案:

答案 0 :(得分: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-generic
      • (3)Ubuntu,Linux 4.4.0-116-generic(恢复模式)

    在这种情况下,如果你需要加载“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-generic
  6. modprobe snd-aloop之后应该可以正常工作。

答案 1 :(得分:5)

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

seleciona los drive通用文件4 es通用文件编辑/ etc / default / grub

GRUB_DEFAULT =“ 1> 4”

update-grub
reboot now
lsmod | grep snd_aloop

exito朋友。

答案 2 :(得分:0)

我是如何做到的

grep-A100 submenu /boot/grub/grub.cfg |grep menuentry

其中列出了类似

submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-6156ec80-9446-4eb1-95e0-9ae6b7a46187' { menuentry 'Ubuntu, with Linux 5.3.0-1017-aws' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.3.0-1017-aws-advanced-6156ec80-9446-4eb1-95e0-9ae6b7a46187' { menuentry 'Ubuntu, with Linux 5.3.0-1017-aws (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.3.0-1017-aws-recovery-6156ec80-9446-4eb1-95e0-9ae6b7a46187' { menuentry 'Ubuntu, with Linux 4.15.0-1065-aws' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-1065-aws-advanced-6156ec80-9446-4eb1-95e0-9ae6b7a46187' { menuentry 'Ubuntu, with Linux 4.15.0-1065-aws (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-1065-aws-recovery-6156ec80-9446-4eb1-95e0-9ae6b7a46187' { menuentry 'Ubuntu, with Linux 4.15.0-99-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-99-generic-advanced-6156ec80-9446-4eb1-95e0-9ae6b7a46187' { menuentry 'Ubuntu, with Linux 4.15.0-99-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-99-generic-recovery-6156ec80-9446-4eb1-95e0-9ae6b7a46187' {

因此,选择了第一个菜单项,即gnulinux-advanced-6156ec80-9446-4eb1-95e0-9ae6b7a46187和通用ID gnulinux-4.15.0-99-generic-advanced-6156ec80-9446-4eb1-95e0-9ae6b7a46187

与他们一起加入>,这看起来像这样

gnulinux-4.15.0-99-generic-recovery-6156ec80-9446-4eb1-95e0-9ae6b7a46187> gnulinux-4.15.0-99-generic-advanced-6156ec80-9446-4eb1-95e0-9ae6b7a46187

并将其设置为如上所述的GRUB_DEFAULT值,然后执行update-grub并重新启动。您应该获得所需的输出。

答案 3 :(得分:0)

Jibri在AWS上获得以下问题。

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' {

Ubuntu的“高级”选项的菜单条目ID为gnulinux-advanced-e6dc6474-8016-46c6-8ab0-0a871bae4cd1 适用于Linux 4.4.0-179-generic的Ubuntu的菜单项是gnulinux-4.4.0-179-generic-advanced-e6dc6474-8016-46c6-8ab0-0a871bae4cd1

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

$ nano / 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=""

更新并重新启动

$ sudo update-grub $ sudo重新启动

重启后,您可以使用uname -a对其进行测试,该参数应为4.4.0-179-generic

$ uname -a

Linux 4.4.0-179-通用

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