¿Cómo hago que hostapd se ejecute al inicio?

8

Estoy ejecutando Raspbian Wheezy, en una tarjeta SD recién instalada:

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

Quería hacer de mi Raspberry Pi un punto de acceso Wifi, así que seguí las instrucciones de este tutorial .

Todo estuvo bien hasta que llegué a la sección "Finalizando ...". Dice que para evitar tener que iniciar hostapd y dhcp cada vez que arranque el pi, debo ejecutar estos comandos:

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

Cuando los ejecuto, obtengo esto:

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

Entonces, el segundo comando (para isc-dhcp-server) fue exitoso, pero el primer comando (para hostapd) no lo fue. No tengo idea de qué está hablando, y no sé qué hacer a continuación.

Había seguido exactamente las instrucciones en el sitio mencionado anteriormente, incluidas sus instrucciones para construir hostapd desde la fuente:

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

(Entonces, me pregunto si es por eso que isc-dhcp-server tuvo éxito y hostapd falló; porque instalé isc-dhcp-server desde apt y hostapd desde la fuente).

Busqué el mensaje de error no runlevel symlinks to modify, aborting!y encontré esta página . Sin embargo, parecía bastante específico para bluetooth, y no estaba seguro de cómo aplicarlo a mi situación con hostapd. Lo principal que deduje de esa página fue el tono de "Si eliminaste los enlaces simbólicos en rc? .D manualmente, tendrás que volver a crearlos manualmente" y "Lo que salió mal es que estabas haciendo cosas allí sin suficiente comprensión de lo que debe hacerse ".

Bueno, definitivamente no eliminé ningún enlace simbólico manualmente. Y aunque los detalles esotéricos de los niveles de ejecución están definitivamente por encima de mi cabeza, no me he metido con nada excepto con exactamente lo que el tutorial me dijo que hiciera.

¿Alguna idea sobre cómo puedo solucionar este problema?

usuario31708
fuente

Respuestas:

12

Por favor, primero intente:

sudo update-rc.d hostapd defaults

Esto realmente no es diferente de lo que ya ha llamado, solo con un defaultsargumento en lugar de enable/ disable. Entonces creo que los comandos enable/ disabledeberían funcionar como esperabas.

Por man update-rc.d:

Cuando se ejecuta con la opción predeterminada, update-rc.d crea enlaces llamados /etc/rcrunlevel.d/[SKfont>NNname que apuntan al script /etc/init.d/name, usando runlevel e información de dependencia de init.d encabezado de comentario LSB script.

Por lo tanto, esto debería crear los enlaces simbólicos que faltan en los distintos /etc/rc#.d/directorios, para los cuales estaba recibiendo el " no runlevel symlinks to modify" error.

ziesemer
fuente
¿Puedes explicarle al OP lo que hace el update-rc.dscript? Muchas personas dudan un poco de probar nuevos comandos que no conocen, especialmente cuando se invocan como root sudo.
Phil B.
Gracias por mencionar enable, necesitaba ejecutar eso además de defaults.
sebastian
0

Primero, escriba un script de inicio para hostapd. Por ejemplo, puede crear un archivo /etc/init.d/hostapdy poner el siguiente contenido allí.

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

Ahora corre sudo update-rc.d hostapd defaults, entonces sudo update-rc.d hostapd enable. Debería comenzar hostapdcuando inicie su sistema (para los niveles de ejecución 2,3,4 y 5). También puedes usar service hostapd startpara comenzar hostapd.

Ashish Bista
fuente
El archivo creado no debe llamarse, /etc/init.d/hostapd.confsino solo /etc/init.d/hostapdporque no es un archivo de configuración.
Christian Beer
@ChristianBeer De acuerdo! Se actualizó la respuesta.
Ashish Bista