Làm cách nào để chạy hostapd khi khởi động?


8

Tôi đang chạy Raspbian Wheezy, trên thẻ SD mới được cài đặt:

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

Tôi muốn biến Raspberry Pi của mình thành điểm truy cập Wifi, vì vậy tôi đã làm theo hướng dẫn trong hướng dẫn này .

Tất cả đều tốt cho đến khi tôi đến phần "Kết thúc ...". Nó nói để tránh phải khởi động hostapd và dhcp mỗi khi tôi khởi động pi, tôi nên chạy các lệnh sau:

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

Khi tôi chạy chúng, tôi nhận được điều này:

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

Vì vậy, lệnh thứ hai (đối với isc-dhcp-server) đã thành công, nhưng lệnh đầu tiên (đối với hostapd) thì không. Tôi không biết nó đang nói về cái gì, và không biết phải làm gì tiếp theo.

Tôi đã làm theo các hướng dẫn trên trang web nói trên một cách chính xác, bao gồm các hướng dẫn của anh ấy để xây dựng hostapd từ nguồn:

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

(Vì vậy, tôi tự hỏi liệu đó là lý do tại sao máy chủ isc-dhcp thành công và hostapd không thành công; vì tôi đã cài đặt máy chủ isc-dhcp từ apt và hostapd từ nguồn.)

Tôi đã tìm kiếm thông báo lỗi no runlevel symlinks to modify, aborting!và tìm thấy trang này . Mặc dù vậy, nó có vẻ khá cụ thể đối với bluetooth và tôi không chắc chắn cách áp dụng nó vào tình huống của mình với hostapd. Điều chính tôi lượm lặt được từ trang đó là giọng điệu "Nếu bạn loại bỏ các liên kết tượng trưng trong RC? .D bằng tay, bạn sẽ phải tạo lại chúng theo cách thủ công" và "Điều sai lầm là bạn đã làm mọi thứ trong đó mà không đủ hiểu những gì nên làm. "

Chà, tôi chắc chắn không xóa bất kỳ liên kết tượng trưng nào bằng tay. Và mặc dù các chi tiết bí truyền của runlevels chắc chắn nằm trên đầu tôi, tôi đã không nhầm lẫn với bất cứ điều gì ngoại trừ chính xác những gì hướng dẫn đã bảo tôi làm.

Bất kỳ suy nghĩ về cách tôi có thể khắc phục vấn đề này?

Câu trả lời:


12

Trước tiên hãy thử:

sudo update-rc.d hostapd defaults

Điều này thực sự không khác gì so với những gì bạn đã gọi, chỉ với một defaultsđối số thay vì enable/ disable. Sau đó, tôi tin rằng các lệnh enable/ disablesẽ hoạt động như bạn mong đợi.

Mỗi man update-rc.d:

Khi chạy với tùy chọn mặc định, update-rc.d tạo các liên kết có tên /etc/rcrunlevel.d/[SK[NNname trỏ đến tập lệnh /etc/init.d/name, sử dụng runlevel và thông tin phụ thuộc từ init.d kịch bản bình luận LSB.

Vì vậy, điều này sẽ tạo ra các liên kết tượng trưng bị thiếu trong các /etc/rc#.d/thư mục khác nhau mà bạn đã gặp phải no runlevel symlinks to modifylỗi "".


Bạn có thể giải thích cho OP những gì update-rc.dkịch bản làm? Nhiều người hơi do dự khi thử các lệnh mới mà họ không biết, đặc biệt là khi được gọi là root bằng cách sử dụng sudo.
Phil B.

Cảm ơn đã đề cập enable, tôi cần phải chạy nó ngoài defaults.
sebastian

0

Đầu tiên, viết một tập lệnh init cho hostapd. Ví dụ: bạn có thể tạo tệp /etc/init.d/hostapdvà đặt nội dung sau vào đó.

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

Bây giờ, chạy sudo update-rc.d hostapd defaults, sau đó sudo update-rc.d hostapd enable. Nó sẽ bắt đầu hostapdkhi bạn khởi động hệ thống của mình (đối với các cấp chạy 2,3,4 & 5). Bạn cũng có thể sử dụng service hostapd startđể bắt đầu hostapd.


Không nên gọi tệp được tạo /etc/init.d/hostapd.confmà chỉ /etc/init.d/hostapdvì nó không phải là tệp cấu hình.
Bia Christian

@ChristianBeer Đồng ý! Cập nhật câu trả lời.
Ashish Bista
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.