Как заставить hostapd запускаться при запуске?

8

Я использую Raspbian Wheezy на недавно установленной SD-карте:

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

Я хотел сделать Raspberry Pi точкой доступа Wi-Fi, поэтому я следовал инструкциям в этом руководстве .

Все было хорошо, пока я не попал в раздел «Завершение ...». В нем говорится, чтобы избежать необходимости запускать hostapd и dhcp каждый раз, когда я загружаю pi, я должен выполнить следующие команды:

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

Когда я запускаю их, я получаю это:

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

Итак, вторая команда (для isc-dhcp-server) была успешной, но первая команда (для hostapd) - нет. Я понятия не имею, о чем идет речь, и не знаю, что делать дальше.

Я точно следовал инструкциям на вышеупомянутом сайте, включая его инструкции по сборке hostapd из источника:

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

(Итак, мне интересно, вот почему isc-dhcp-server преуспел, а hostapd вышел из строя; потому что я установил isc-dhcp-server из apt и hostapd из исходного кода.)

Я искал сообщение об ошибке no runlevel symlinks to modify, aborting!и нашел эту страницу . Хотя это было довольно специфично для bluetooth, и я не был уверен, как применить его к моей ситуации с hostapd. Главное, что я почерпнул из этой страницы, был тон «Если вы удалили символические ссылки в rc? .D вручную, вам придется воссоздать их вручную», и «Что пошло не так, что вы делали что-то там без достаточного количества понимание того, что должно быть сделано ".

Ну, я определенно не удалял никаких ссылок вручную. И хотя эзотерические подробности уровней запуска определенно находятся у меня над головой, я ничего не перепутал, кроме того, что именно учебник сказал мне сделать.

Есть мысли о том, как я могу решить эту проблему?

user31708
источник

Ответы:

12

Пожалуйста, сначала попробуйте:

sudo update-rc.d hostapd defaults

Это на самом деле ничем не отличается от того, что вы уже назвали, только с defaultsаргументом вместо enable/ disable. Тогда я считаю, что команды enable/ disableдолжны работать так, как вы ожидаете.

За man update-rc.d:

При запуске с параметром по умолчанию update-rc.d создает ссылки с именем /etc/rcrunlevel.d/[SK]NNname, которые указывают на сценарий /etc/init.d/name, используя уровень запуска и информацию о зависимостях из init.d Скрипт LSB, заголовок комментария.

Так что это должно создать недостающие символические ссылки в различных /etc/rc#.d/каталогах, для которых вы получили no runlevel symlinks to modifyошибку " ".

ziesemer
источник
Можете ли вы объяснить ОП, что update-rc.dделает скрипт? Многие люди не решаются попробовать новые команды, которые они не знают, особенно когда они запускаются с правами root sudo.
Фил Б.
Спасибо за упоминание enable, мне нужно было запустить это в дополнение к defaults.
Себастиан
0

Сначала напишите скрипт инициализации для hostapd. Например, вы можете создать файл /etc/init.d/hostapdи поместить туда следующий контент.

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

Теперь беги sudo update-rc.d hostapd defaults, тогда sudo update-rc.d hostapd enable. Он должен начаться hostapdпри запуске вашей системы (для уровней запуска 2,3,4 и 5). Вы также можете использовать service hostapd startдля начала hostapd.

Ашиш Биста
источник
Созданный файл не должен вызываться, /etc/init.d/hostapd.confа только /etc/init.d/hostapdпотому, что это не файл конфигурации.
Christian Beer
@ChristianBeer Согласен! Обновил ответ.
Ашиш Биста