Come faccio a far funzionare hostapd all'avvio?


8

Sto eseguendo Raspbian Wheezy, su una scheda SD appena installata:

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

Volevo rendere il mio Raspberry Pi un punto di accesso Wifi, quindi ho seguito le istruzioni in questo tutorial .

Tutto è andato bene fino a quando sono arrivato alla sezione "Finishing up ...". Dice che per evitare di dover avviare hostapd e dhcp ogni volta che avvio il pi, dovrei eseguire questi comandi:

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

Quando li eseguo, ottengo questo:

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 ~ $

Quindi, il secondo comando (per isc-dhcp-server) ha avuto successo, ma il primo comando (per hostapd) non lo è stato. Non ho idea di cosa stia parlando, e non so cosa fare dopo.

Avevo seguito esattamente le istruzioni sul sito sopra menzionato, comprese le sue istruzioni per la costruzione di hostapd dalla fonte:

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

(Quindi, mi chiedo se è per questo che isc-dhcp-server è riuscito e hostapd ha fallito; perché ho installato isc-dhcp-server da apt e hostapd dal sorgente.)

Ho cercato il messaggio di errore no runlevel symlinks to modify, aborting!e ho trovato questa pagina . Sembrava abbastanza specifico per il bluetooth, tuttavia, e non ero sicuro di come applicarlo alla mia situazione con hostapd. La cosa principale che ho raccolto da quella pagina era il tono di "Se hai rimosso manualmente i symlink in rc? .D, dovrai ricrearli manualmente" e "Ciò che è andato storto è che stavi facendo cose lì dentro senza un comprensione di ciò che dovrebbe essere fatto ".

Bene, sicuramente non ho rimosso manualmente alcun link simbolico. E anche se i dettagli esoterici dei runlevel sono decisamente al di sopra della mia testa, non ho fatto altro che fare esattamente quello che il tutorial mi ha detto di fare.

Qualche idea su come posso risolvere questo problema?

Risposte:


12

Per prima cosa prova:

sudo update-rc.d hostapd defaults

Questo in realtà non è diverso da quello che hai già chiamato, solo con un defaultsargomento invece di enable/ disable. Quindi credo che i comandi enable/ disabledovrebbero funzionare come previsto.

Per man update-rc.d:

Quando eseguito con l'opzione predefinita, update-rc.d crea collegamenti denominati /etc/rcrunlevel.d/[SK[NNname che puntano allo script /etc/init.d/name, usando le informazioni sul runlevel e sulla dipendenza da init.d intestazione del commento LSB dello script.

Quindi questo dovrebbe creare i collegamenti simbolici mancanti nelle varie /etc/rc#.d/directory, per le quali si stava ottenendo l' no runlevel symlinks to modifyerrore " ".


Puoi spiegare all'OP cosa fa lo update-rc.dscript? Molte persone sono un po 'titubanti nel provare nuovi comandi che non conoscono, specialmente se invocati come root sudo.
Phil B.

Grazie per la menzione enable, dovevo eseguirlo oltre a defaults.
sebastian,

0

Innanzitutto, scrivi uno script init per hostapd. Ad esempio, è possibile creare file /etc/init.d/hostapde inserire lì il seguente contenuto.

#!/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

Adesso corri sudo update-rc.d hostapd defaults, allora sudo update-rc.d hostapd enable. Dovrebbe avviarsi hostapdall'avvio del sistema (per i livelli di esecuzione 2,3,4 e 5). Puoi anche usare service hostapd startper iniziare hostapd.


Il file creato non deve essere chiamato /etc/init.d/hostapd.confma solo /etc/init.d/hostapdperché non è un file di configurazione.
Christian Beer,

@ChristianBeer Concordato! Aggiornato la risposta.
Ashish Bista,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.