Como faço para executar o hostapd na inicialização?

8

Estou executando o Raspbian Wheezy, em um cartão SD recém-instalado:

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

Eu queria fazer do meu Raspberry Pi um ponto de acesso Wifi, por isso segui as instruções deste tutorial .

Tudo estava bem até que cheguei à seção "Finalizando ...". Ele diz para evitar ter que iniciar o hostapd e o dhcp toda vez que eu inicializar o pi, devo executar estes comandos:

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

Quando os executo, recebo o seguinte:

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

Portanto, o segundo comando (para isc-dhcp-server) foi bem-sucedido, mas o primeiro comando (para hostapd) não foi. Não faço ideia do que está falando e não sei o que fazer a seguir.

Eu segui exatamente as instruções no site mencionado acima, incluindo as instruções para criar o hostapd a partir da 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

(Então, eu estou querendo saber se é por isso que o isc-dhcp-server teve êxito e o hostapd falhou; porque eu instalei o isc-dhcp-server do apt e o hostapd da fonte.)

Procurei a mensagem de erro no runlevel symlinks to modify, aborting!e encontrei esta página . No entanto, parecia bastante específico para o bluetooth, e eu não tinha certeza de como aplicá-lo à minha situação com o hostapd. A principal coisa que recolhi nessa página foi o tom de "Se você removeu os links simbólicos no rc? .D manualmente, precisará recriá-los manualmente" e "O que deu errado é que você estava fazendo as coisas lá sem uma quantidade suficiente de informações". compreensão do que deve ser feito. "

Bem, definitivamente não removi nenhum link simbólico manualmente. E embora os detalhes esotéricos dos níveis de execução estejam definitivamente acima da minha cabeça, eu não mexi em nada, exceto exatamente o que o tutorial me disse para fazer.

Alguma idéia de como posso resolver esse problema?

user31708
fonte

Respostas:

12

Por favor, tente primeiro:

sudo update-rc.d hostapd defaults

Isso realmente não é diferente do que você já chamou, apenas com um defaultsargumento em vez de enable/ disable. Então acredito que os comandos enable/ disabledevem funcionar como você espera.

Por man update-rc.d:

Quando executado com a opção padrão, update-rc.d cria links nomeados /etc/rcrunlevel.d/[SKorgeousNNname que apontam para o script /etc/init.d/name, usando informações de nível de execução e dependência no init.d cabeçalho do comentário LSB do script.

Portanto, isso deve criar os links simbólicos ausentes nos vários /etc/rc#.d/diretórios, para os quais você estava recebendo o no runlevel symlinks to modifyerro " ".

ziesemer
fonte
Você pode explicar ao OP o que o update-rc.dscript faz? Muitas pessoas hesitam um pouco em experimentar novos comandos que não conhecem, especialmente quando invocados como root sudo.
Phil B.
Obrigado por mencionar enable, eu precisava executar isso além de defaults.
sebastian
0

Primeiro, escreva um script init para o hostapd. Por exemplo, você pode criar um arquivo /etc/init.d/hostapde colocar o seguinte conteúdo lá.

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

Agora corra sudo update-rc.d hostapd defaults, então sudo update-rc.d hostapd enable. Deve começar hostapdquando você inicia o sistema (para os níveis de execução 2,3,4 e 5). Você também pode usar service hostapd startpara iniciar hostapd.

Ashish Bista
fonte
O arquivo criado não deve ser chamado, /etc/init.d/hostapd.confmas apenas /etc/init.d/hostapdporque não é um arquivo de configuração.
Christian Beer
@ChristianBeer Concordou! Atualizado a resposta.
Ashish Bista 12/12