Wie kann ich hostapd beim Start ausführen?

8

Ich verwende Raspbian Wheezy auf einer frisch installierten SD-Karte:

pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.18.11+ #781 PREEMPT Tue Apr 21 18:02:18 BST 2015 armv6l GNU/Linux

Ich wollte meinen Raspberry Pi zu einem Wifi-Zugangspunkt machen, also habe ich die Anweisungen in diesem Tutorial befolgt .

Alles war gut, bis ich zum Abschnitt "Fertig stellen ..." kam. Um zu vermeiden, dass hostapd und dhcp jedes Mal gestartet werden müssen, wenn ich den pi starte, sollte ich die folgenden Befehle ausführen:

sudo update-rc.d hostapd enable 
sudo update-rc.d isc-dhcp-server enable

Wenn ich sie laufen lasse, bekomme ich folgendes:

pi@raspberrypi ~ $ sudo update-rc.d hostapd enable
update-rc.d: using dependency based boot sequencing
update-rc.d: error: no runlevel symlinks to modify, aborting!
pi@raspberrypi ~ $ sudo update-rc.d isc-dhcp-server enable
update-rc.d: using dependency based boot sequencing
pi@raspberrypi ~ $

Der zweite Befehl (für isc-dhcp-server) war also erfolgreich, der erste Befehl (für hostapd) jedoch nicht. Ich habe keine Ahnung, wovon es spricht, und weiß nicht, was ich als nächstes tun soll.

Ich hatte die Anweisungen auf der oben genannten Site genau befolgt, einschließlich seiner Anweisungen zum Erstellen von Hostapd aus der Quelle:

wget https://github.com/jenssegers/RTL8188-hostapd/archive/v1.1.tar.gz
tar -zxvf v1.1.tar.gz
cd RTL8188-hostapd-1.1/hostapd
sudo make
sudo make install

(Also frage ich mich, ob das der Grund ist, warum isc-dhcp-server erfolgreich war und hostapd fehlgeschlagen ist; weil ich isc-dhcp-server von apt und hostapd von der Quelle installiert habe.)

Ich habe nach der Fehlermeldung gesucht no runlevel symlinks to modify, aborting!und diese Seite gefunden . Es schien jedoch ziemlich spezifisch für Bluetooth zu sein, und ich war mir nicht sicher, wie ich es auf meine Situation mit hostapd anwenden sollte. Die Hauptsache, die ich von dieser Seite gelesen habe, war der Ton von "Wenn Sie die Symlinks in rc? .D manuell entfernt haben, müssen Sie sie manuell neu erstellen" und "Was schief gelaufen ist, ist, dass Sie dort Dinge ohne eine ausreichende getan haben." Verständnis dafür, was getan werden sollte. "

Nun, ich habe definitiv keine Symlinks manuell entfernt. Und obwohl die esoterischen Details von Runlevels definitiv über meinem Kopf liegen, habe ich mich nur mit genau dem angelegt, was mir das Tutorial gesagt hat.

Irgendwelche Gedanken darüber, wie ich dieses Problem beheben kann?

user31708
quelle

Antworten:

12

Bitte versuchen Sie es zuerst:

sudo update-rc.d hostapd defaults

Dies ist wirklich nicht anders als das, was Sie bereits aufgerufen haben, nur mit einem defaultsArgument anstelle von enable/ disable. Dann glaube ich, dass die enable/ disableBefehle so funktionieren sollten, wie Sie es erwarten.

Per man update-rc.d:

Wenn update-rc.d mit der Standardoption ausgeführt wird, erstellt es Links mit dem Namen /etc/rcrunlevel.d/[SK‹NNname, die auf das Skript /etc/init.d/name verweisen, wobei Runlevel- und Abhängigkeitsinformationen aus der init.d verwendet werden Skript-LSB-Kommentar-Header.

Dies sollte also die fehlenden symbolischen Links in den verschiedenen /etc/rc#.d/Verzeichnissen erzeugen , für die Sie den no runlevel symlinks to modifyFehler " " erhalten haben.

ziesemer
quelle
Können Sie dem OP erklären, was das update-rc.dSkript tut? Viele Leute zögern ein wenig, neue Befehle auszuprobieren, die sie nicht kennen, insbesondere wenn sie als root verwendet werden sudo.
Phil B.
Vielen Dank für die Erwähnung enable, ich musste das zusätzlich ausführen defaults.
Sebastian
0

Schreiben Sie zunächst ein Init-Skript für hostapd. Sie können beispielsweise eine Datei erstellen /etc/init.d/hostapdund den folgenden Inhalt dort ablegen.

#!/bin/sh

### BEGIN INIT INFO
# Provides:          hostapd
# Required-Start:
# Required-Stop:
# Should-Start:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Hostapd Service
# Description:       Intended to start hostapd on system startup.
### END INIT INFO

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

case "$1" in
    start)
        /usr/sbin/hostapd -B
        ;;
    *)
        echo "Usage: $NAME {start}" >&2
        exit 3
        ;;
esac

Jetzt renn sudo update-rc.d hostapd defaultsdann sudo update-rc.d hostapd enable. Es sollte starten, hostapdwenn Sie Ihr System starten (für die Laufstufen 2,3,4 und 5). Sie können auch service hostapd startzum Starten verwenden hostapd.

Ashish Bista
quelle
Die erstellte Datei sollte nicht aufgerufen werden, /etc/init.d/hostapd.confsondern nur, /etc/init.d/hostapdweil es sich nicht um eine Konfigurationsdatei handelt.
Christian Beer
@ChristianBeer Einverstanden! Die Antwort wurde aktualisiert.
Ashish Bista