Bagaimana cara menjalankan hostapd saat startup?

8

Saya menjalankan Raspbian Wheezy, pada kartu SD yang baru diinstal:

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

Saya ingin menjadikan Raspberry Pi saya titik akses Wifi, jadi saya mengikuti petunjuk dalam tutorial ini .

Semuanya baik sampai saya tiba di bagian "Menyelesaikan ...". Dikatakan untuk menghindari keharusan memulai hostapd dan dhcp setiap kali saya mem-boot pi, saya harus menjalankan perintah-perintah ini:

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

Ketika saya menjalankannya, saya mendapatkan ini:

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

Jadi, perintah kedua (untuk isc-dhcp-server) berhasil, tetapi perintah pertama (untuk hostapd) tidak. Saya tidak tahu apa yang dibicarakan, dan tidak tahu harus berbuat apa selanjutnya.

Saya telah mengikuti instruksi di situs yang disebutkan di atas persis, termasuk instruksinya untuk membangun hostapd dari sumber:

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

(Jadi, saya bertanya-tanya apakah itu sebabnya isc-dhcp-server berhasil, dan hostapd gagal; karena saya menginstal isc-dhcp-server dari apt dan hostapd dari sumber.)

Saya mencari pesan kesalahan no runlevel symlinks to modify, aborting!dan menemukan halaman ini . Namun, sepertinya cukup spesifik untuk bluetooth, dan saya tidak yakin bagaimana menerapkannya pada situasi saya dengan hostapd. Hal utama yang saya dapatkan dari halaman itu adalah nada "Jika Anda menghapus symlink di rc? .D secara manual, Anda harus membuatnya kembali secara manual," dan "Apa yang salah adalah Anda melakukan hal-hal di sana tanpa cukup pemahaman tentang apa yang harus dilakukan. "

Yah, saya pasti tidak menghapus symlink secara manual. Dan meskipun detail esoterik runlevel jelas di atas kepala saya, saya belum mengacaukan apa pun kecuali apa yang dikatakan tutorial untuk saya lakukan.

Adakah pemikiran tentang bagaimana saya dapat memperbaiki masalah ini?

pengguna31708
sumber

Jawaban:

12

Silakan coba dulu:

sudo update-rc.d hostapd defaults

Ini benar-benar tidak berbeda dari apa yang sudah Anda panggil, hanya dengan defaultsargumen, bukan enable/ disable. Maka saya percaya perintah enable/ disableharus bekerja seperti yang Anda harapkan.

Per man update-rc.d:

Ketika dijalankan dengan opsi default, update-rc.d membuat tautan dengan nama /etc/rcrunlevel.d/[SK[NNname yang mengarah ke skrip /etc/init.d/name, menggunakan runlevel dan informasi ketergantungan dari init.d skrip tajuk komentar LSB.

Jadi ini harus membuat tautan simbolis yang hilang di berbagai /etc/rc#.d/direktori, di mana Anda mendapat " no runlevel symlinks to modify" kesalahan.

ziesemer
sumber
Bisakah Anda menjelaskan kepada OP apa yang dilakukan update-rc.dskrip? Banyak orang agak ragu untuk mencoba perintah baru yang tidak mereka ketahui, terutama ketika dipanggil sebagai root sudo.
Phil B.
Terima kasih telah menyebutkan enable, saya perlu menjalankan itu selain defaults.
sebastian
0

Pertama, tulis skrip init untuk hostapd. Misalnya, Anda dapat membuat file /etc/init.d/hostapddan meletakkan konten berikut di sana.

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

Sekarang, jalankan sudo update-rc.d hostapd defaults, lalu sudo update-rc.d hostapd enable. Itu harus dimulai hostapdketika Anda memulai sistem Anda (untuk menjalankan level 2,3,4 & 5). Anda juga dapat menggunakan service hostapd startuntuk memulai hostapd.

Ashish Bista
sumber
File yang dibuat tidak boleh dipanggil /etc/init.d/hostapd.conftetapi hanya /etc/init.d/hostapdkarena itu bukan file konfigurasi.
Christian Beer
@ChristianBeer Setuju! Diperbarui jawabannya.
Ashish Bista