如何在启动时加载模块?


32

为什么我的音频(声音)输出不起作用?,要初始化声音驱动程序,必须在sudo modprobe snd_bcm2835每次要输出声音时都运行。

如何使它在启动时运行?(即在登录之前且没有任何输入)


1
这是可以被认为是题外话的另一个问题。它可能更适合U&L
Jivings 2012年

2
@Jivings:仅仅是因为它在Unix和Linux上是热门话题,并不能使其成为Raspberry Pi的热门话题?
Der Hochstapler 2012年

2
@OliverSalzburg:我认为这个特定问题有太多重叠之处。关于此问题的所有内容都没有专门针对Raspberry Pi。
Jivings 2012年

1
meta.raspberrypi.stackexchange.com/questions/24/上的决定是否意味着这里的问题很好?
Graham Wager

1
@Jivings谢谢,只想为以后的访问者澄清一下,因为这些评论都指向解决问题。也许应该删除所有评论?
Graham Wager

Answers:


24

引导时加载模块与运行启动命令略有不同。

在Debian中:

将模块名称添加为新行 /etc/modules

在Arch Linux中:

将模块名称添加到中的模块数组中/etc/rc.conf,该行应如下所示:

modules=(snd_bcm2835)

或对于新的systemd配置:

echo "snd_bcm2835" | sudo tee -a /etc/modules-load.d/snd_bcm2835.conf

我在Xbian上添加snd_bcm2835/etc/modules文件,但是在启动时创建了一个循环。启动OSMC时似乎不允许这样做
rubo77 2015年

@ rubo77有趣!您了解到了吗?
Jivings

不确定。也许是巧合。现在整个安装似乎有点破...
rubo77

14

Boot上的Modprobe-Debian

要回答有关的特定问题sudo modprobe snd_bcm2835,请将模块添加到/etc/modules并重新启动。(您将需要root执行此操作。)

启动服务-Debian

Debian使用初始化脚本来初始化系统,您可以使用它们来运行任意命令。您需要在中安装类似于以下内容的脚本/etc/init.d

#! /bin/sh
# /etc/init.d/blah
#

# Some things that run always
touch /var/lock/blah

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting script blah "
    echo "Could do more here"
    ;;
  stop)
    echo "Stopping script blah"
    echo "Could do more here"
    ;;
  *)
    echo "Usage: /etc/init.d/blah {start|stop}"
    exit 1
    ;;
esac

exit 0

您应该确保它是可运行的并且由root拥有。

sudo chmod 755 /etc/init.d/blah
sudo chown root:root /etc/init.d/blah

然后,您需要注册它才能在启动时运行。

sudo update-rc.d blah defaults

参考文献


1
这些都不是Debian独有的。同样,初始化脚本不是您应该用于加载模块的脚本。仅第一部分与该问题有关。
Jivings 2012年

他们都不能在Arch上运行,不确定QtonPi。
Alex Chamberlain 2012年

当然会。
吉文斯2012年

哦...为什么您的Arch回答不同?
Alex Chamberlain 2012年

因为Arch为启动事件定义了一个方便的抽象。
吉文斯2012年

3

在Linux中,有许多种在启动时运行命令的方法,但是我偏爱的方法是在中创建初始化脚本/etc/init.d并使用进行注册update-rc.d。这样,当系统启动/关闭时,应用程序会自动启动和停止。

有关如何在Raspberry Pi上创建一个指令集的说明,请参阅此文章


1
欢迎使用Raspberry Pi Beta!虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
Der Hochstapler,2012年

您将如何通过systemd其他系统做到这一点?
ArchHaskeller 2012年

0

我的首选方法是将设置命令添加到/etc/rc.local中,该命令将在引导结束时在要求您登录之前初始化。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.