web-dev-qa-db-ja.com

ワイヤレスネットワークへの自動接続(ÅngströmLinux)

私は Ångström Linux on BeagleBoard-xM を使用しています。 RTL8188SU USB Wi-Fiアダプター をインストールし、正しく構成しました。しかし、/etc/network/interfacesファイルでインターフェースをautoとしてマークしたにもかかわらず、自動的に接続されません。私の/etc/network/interfacesファイルを以下に示します(wlan0設定のみを貼り付けました):

auto wlan0
iface wlan0 inet static
    address 192.168.2.50
    netmask 255.255.255.0
    gateway 192.168.2.1
    wireless_mode managed
    wireless_essid MY NETWORK ESSID
    wireless_key   MY_PASS

システム起動後のifconfigコマンドの出力は次のとおりです。

root@beagleboard:~# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:24 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1632 (1.5 KiB)  TX bytes:1632 (1.5 KiB)

wlan0     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet6 addr: fe80::2e0:4cff:fe03:cbb1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:241 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ご覧のとおり、インターフェースwlan0にはinet接続がありません。 ifdown wlan0ifup wlan0を連続して入力すると、インターフェースの設定に従ってワイヤレス接続を正常に確立できます。 wlan0を再起動した後のifconfigの出力を以下に示します。

wlan0     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:192.168.2.50  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:974 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

システムの起動時に(できればWi-Fiアダプターを再接続した後)ワイヤレス接続を自動的に確立したい。私がそうするために欠けているものはありますか?

編集:

ブートログをトレースし、ESSIDの設定について不平を言っているメッセージを見ました。

Error for wireless request "Set ESSID" (8B1A) :
    SET failed on device wlan0 ; Operation not permitted.

しかし、私は問題の原因に気づいていません。システムの起動後、ネットワークを再起動して接続を確立できます。

4
Emre Yazici

または私自身のメモからここにもっと良い....

  1. Connmanを無効にします。

    # systemctl disable connman.service
    
  2. $ cat > /etc/network/interfaces <<EOF
    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet static
    address 192.168.0.99
    netmask 255.255.255.0
    gateway 192.168.0.1
    dns-nameservers 192.168.0.1
    
    iface usb0 inet static
    address 192.168.7.2
    netmask 255.255.255.0
    gateway 192.168.7.1
    dns-nameservers 192.168.7.1
    
    iface wlan0 inet static
    address 192.168.0.98
    netmask 255.255.255.0
    gateway 192.168.0.1
    dns-nameservers 192.168.0.1
    wireless_mode managed
    wireless_essid “VM275247-2G”
    wpa-driver wext
    wpa-conf /etc/wpa_supplicant.conf
    pre-up wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf
    post-down killall -q wpa_supplicant
    EOF
    
  3. 作成resolv.conf

    $ cat >/etc/resolv.conf <<EOF
    search local
    nameserver 192.168.0.1
    EOF
    
  4. 作成wpa_supplicant.confパスワード付き

    $ cat >/etc/wpa_supplicant.conf <<EOF
    ap_scan=2
    
    network={
    ssid="VM275247-2G"
    proto=WPA RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP TKIP
    group=CCMP TKIP
    psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx1
    }
    EOF
    
  5. Wi-Fiのサービスを作成する

    $ cat >/etc/systemd/system/net.service <<EOF
    [Unit]
    Description=Network interfaces
    Wants=network.target
    Before=network.target
    BindsTo=sys-subsystem-net-devices-wlan0.device
    After=sys-subsystem-net-devices-wlan0.device
    
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/bin/sh -c "sleep 5;ifup wlan0"
    ExecStop=/bin/sh -c "ifdown wlan0"
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
  6. systemctlを有効にする

    # systemctl enable net.service
    
1
GuildStudio

このような?疫病のように感じますが、ちょっとホー

イーサネットを使用して組み込みプロジェクトを静的IPでセットアップするのが好きなので、簡単にSSH接続できます。プロジェクトをモバイルにできるように、有線よりもWi-Fiの方が好まれます。これを行うことの大きな部分は、BBBが私が持っているEdimax USBWiFiモジュールで動作するためにドライバーを必要としなかったことです。これは、RaspberryPiでよく使用されるものと同じです。オングストロームの功績(そして時には不利益)は、パッケージとドライバーの最新リビジョンに追いつくのに優れています。

私は最初に、コンマンのオングストロームに付属しているネットワークマネージャーを試してみました。 ConnmanはDHCP用のWiFiを問題なくセットアップできました。失敗したのは、起動時にインターフェースを起動できなかったようで、静的IPを使用してインターフェースを構成できなかったためです。私は、GUIと、ワイヤレスインターフェイス用のConnman構成ファイルの作成の両方でこれを達成しようとしました。それで私はコンマンをあきらめました。プライムタイムの準備ができていません。 Ubuntuがそれを採用したことで、その準備ができていることが証明されると主張する人もいます。しかし、Ubuntuで何年にもわたって貧弱なネットワーク管理者に苦しんできた私たちの人々は、それを受け入れるよりもよく知っています。さらに重要なのは、BBBはラップトップではなく組み込みシステムです。外出中のユーザーがワイヤレスインターフェイスを頻繁に再構成できるようにするGUIインターフェイスを気にする必要はありません。私はこれを何かに組み込むことを計画しており、インターフェースが毎回同じように確実に起動することを望んでいます。

そこで、基本に立ち返ることにしました。まず、邪魔にならないようにConnmanが必要でした。次のように無効にできます。

$ systemctl disable connman.service

次に、有線インターフェイスと無線インターフェイスの両方を構成するためのインターフェイスファイルを作成する必要がありました。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.xxx
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.xxx,8.8.8.8

iface usb0 inet static
address 192.168.10.xxx
netmask 255.255.255.0
gateway 192.168.10.1
dns-nameservers 192.168.10.1,8.8.8.8

auto wlan0
iface wlan0 inet static
address 192.168.0.xx
netmask 255.255.255.0
gateway 192.168.0.xxx
dns-nameservers 192.168.0.1,8.8.8.8
wireless_mode managed
wireless_essid NAME_OF_AP
wpa-driver wext
wpa-conf /etc/wpa_supplicant.conf
pre-up wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf
post-down killall -q wpa_supplicant

ワイヤレスで暗号化を使用している場合(そしてそうすべきです)、接続に役立つwpa_supplicantファイルが必要になります。このファイルにはパスキーが必要です。あなたはこのようにあなたのネットワークのためにそれを得ることができます:

$ wpa_passphrase

出力をコピーしてwpa_supplicantファイルに貼り付けるだけです(/etc/wpa_supplicant.conf)。次のようになります。

ap_scan=2

network={
ssid=
proto=WPA RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk=Big long string of hex number
}

最後に、Angstromはinit.dを使用しないため、起動時にインターフェイスを起動するには、インターフェイスファイルにautowlan0以上のものが必要です。 Angstromはinitで代わりにsystemdを使用しています。下位互換性のために、systemdはinit.dフォルダーでスクリプトを実行することを読みましたが、そうではなかったようです。とにかく、新しい体系化された方法を採用することは理にかなっているようです。そこで、起動時にインターフェイスを表示するための簡単なサービス構成を作成しました。それは住んでいます /etc/systemd/system/net.service

サービスファイルの内容は次のとおりです。

[Unit]
Description=Network interfaces
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-wlan0.device
After=sys-subsystem-net-devices-wlan0.device

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c "sleep 5;ifup wlan0"
ExecStop=/bin/sh -c "ifdown wlan0"

[Install]
WantedBy=multi-user.target

これにより、ドライバーがロードされた後、ネットワークターゲット(ネットワークを使用するほとんどすべてのもの)の前にWiFiが起動します。

起動時に実行できるようにするには、次の手順を実行します。

$ systemctl enable net.service

それはそれをします。 WiFiは起動時に静的IPを考え出します。 BBBにSSH接続して、ドライブをリモートでマウントできます。

0
GuildStudio