ฉันจะโหลดโมดูลในเวลาบูตได้อย่างไร


32

ตามที่ระบุในเหตุใดเอาต์พุตเสียง (เสียง) ของฉันจึงไม่ทำงาน ในการเริ่มต้นโปรแกรมควบคุมเสียงคุณต้องเรียกใช้sudo modprobe snd_bcm2835ทุกครั้งที่คุณต้องการส่งสัญญาณเสียง

ฉันจะให้มันทำงานอย่างไรเมื่อบูต? (เช่นก่อนลงชื่อเข้าใช้และไม่มีอินพุต)


1
นี่คือคำถามอื่นที่อาจถูกมองว่าเป็นหัวข้อนอกเรื่อง มันอาจจะดีกว่าที่จะเหมาะU & L
Jivings

2
@Jivings: เพียงเพราะมันอยู่ในหัวข้อบนUnix & Linuxไม่ได้ทำให้มันนอกหัวข้อสำหรับRaspberry Piใช่มั้ย
Der Hochstapler

2
@OliverSalzburg: ฉันคิดว่ามันมีการทับซ้อนกันมากเกินไปในคำถามนี้ ไม่มีอะไรเกี่ยวกับคำถามนี้ทำให้เป็นเรื่องเฉพาะสำหรับ Raspberry Pi
Jivings

1
การตัดสินใจที่meta.raspberrypi.stackexchange.com/questions/24/…หมายความว่าคำถามนี้ใช้ได้หรือไม่
Graham Wager

1
@Jivings ขอบคุณเพียงแค่ต้องการที่จะเคลียร์ว่าสำหรับผู้เข้าชมในอนาคตเป็นความคิดเห็นที่ชี้ไปที่การปิดคำถาม บางทีความคิดเห็นทั้งหมดควรถูกลบแทน
Graham Wager

คำตอบ:


24

การโหลดโมดูลเมื่อบู๊ตแตกต่างจากการรันคำสั่งเริ่มต้นเล็กน้อย

ในเดเบียน:

เพิ่มชื่อโมดูลเป็นบรรทัดใหม่ใน /etc/modules

ใน Arch Linux:

เพิ่มชื่อโมดูลให้กับอาร์เรย์โมดูลใน/etc/rc.confบรรทัดควรมีลักษณะเช่นนี้:

modules=(snd_bcm2835)

หรือสำหรับการกำหนดค่า systemd ใหม่:

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

ฉันเพิ่มลงsnd_bcm2835ใน/etc/modulesไฟล์ใน Xbian ของฉันแล้ว แต่นั่นสร้างลูปเมื่อบู๊ตเครื่อง ดูเหมือนว่าจะไม่ได้รับอนุญาตเมื่อเริ่มต้น OSMC
rubo77

@ rubo77 น่าสนใจ! คุณไปถึงจุดต่ำสุดแล้วหรือยัง?
Jivings

ไม่แน่ใจ. บางทีมันอาจจะเป็นเรื่องบังเอิญ การติดตั้งทั้งดูเหมือนว่าบิตเสียโดยขณะนี้ ...
rubo77

14

Modprobe บน Boot - Debian

เพื่อตอบคำถามเฉพาะเกี่ยวกับsudo modprobe snd_bcm2835เพิ่มโมดูล/etc/modulesและรีบูต (คุณจะต้องrootทำสิ่งนี้)

บริการเริ่มต้น - Debian

Debian ใช้ initscripts เพื่อเริ่มต้นระบบและคุณสามารถใช้มันเพื่อรันคำสั่งโดยพลการ /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

คุณควรตรวจสอบให้แน่ใจว่ามันสามารถรันได้และเป็นเจ้าของโดยรูท

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

จากนั้นคุณต้องลงทะเบียนเพื่อให้ทำงานเมื่อเริ่มต้น

sudo update-rc.d blah defaults

อ้างอิง


1
สิ่งเหล่านี้ไม่ซ้ำกับเดเบียน นอกจากนี้สคริปต์เริ่มต้นไม่ใช่สิ่งที่คุณควรใช้ในการโหลดโมดูล เฉพาะส่วนแรกเท่านั้นที่เกี่ยวข้องกับคำถาม
Jivings

ทั้งคู่จะทำงานกับ Arch ไม่แน่ใจเกี่ยวกับ QtonPi
อเล็กซ์แชมเบอร์เลน

แน่นอนพวกเขาจะ
Jivings

โอ้ ... ทำไม Arch ของคุณถึงแตกต่างออกไป
อเล็กซ์แชมเบอร์เลน

เพราะ Arch กำหนดสิ่งที่เป็นนามธรรมสำหรับเหตุการณ์เริ่มต้น
Jivings

3

มีโหลดของวิธีการเรียกใช้คำสั่งเป็นที่เริ่มต้นขึ้นใน Linux แต่วิธีการที่ชื่นชอบของฉันคือการสร้างสคริปต์ initialisation ในและลงทะเบียนใช้/etc/init.d update-rc.dวิธีนี้จะเริ่มต้นแอปพลิเคชันและหยุดโดยอัตโนมัติเมื่อระบบบูท / ปิดเครื่อง

ดูโพสต์นี้สำหรับชุดของคำแนะนำเกี่ยวกับวิธีสร้างหนึ่งใน Raspberry Pi


1
ยินดีต้อนรับสู่ Raspberry Pi Beta! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Der Hochstapler

คุณจะทำผ่านsystemdหรือระบบอื่น ๆ ได้อย่างไร?
ArchHaskeller

0

วิธีที่ฉันต้องการคือการเพิ่มคำสั่งการตั้งค่าไปที่ /etc/rc.local ซึ่งจะเริ่มต้นเมื่อสิ้นสุดการบูตก่อนที่คุณจะถูกขอให้เข้าสู่ระบบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.