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?

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 " ".


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.