2015年12月8日火曜日

arch linux で wifi ( netctl による wifi 自動接続 )

自動接続です

pacman -Sy netctl


netctl と dhcpcd とは衝突するので
systemctl disable dhcpcd
systemctl  enable netctl


リブート

ifconfig してもwifiみあたらない

それで 次のスクリプトを実行
wifi-info.bat 
ip link | grep wlp |  cut -d ' ' -f 2 | sed "s/://g" -
systemctl list-unit-files | grep enabled | grep wlp
x=` ifconfig | grep wlp | cut -d ' ' -f 1 | sed "s/://g" -`
iw dev $x scan | grep SSID


すると
wlp2s0
wlp0s20u3
SSID: WARPSTAR-39A31A
SSID: WARPSTAR-39A31A-W
SSID: FON_AP
SSID: MyPlace
がでてくる。

で、自分は今wlp0s20u3 と MyPlace とを利用する



/etc/netctl/examples/wireless-wpa を元にして書く


/etc/netctl/fon 
Description='A simple WPA encrypted wireless connection'
Interface=wlp0s20u3
Connection=wireless
Security=wpa
IP=dhcp
ESSID='MyPlace'
Key='7XXXXXXX6'



あとは
netctl start    fon
netctl enable fon


これで fonへの 自動接続ができました。


いつもは 以下のようにつかってます
systemctl enable dhcpcd
をしていますので 有線LANは使えます。

で wifiのときは
 cat netctl.bat
------------------ 
systemctl stop dhcpcd
netctl start $1
ifconfig
rm /etc/resolv.conf
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
ping -c 3 www.google.com

./netctl.bat  fon
ですね。






以下は むかーし 昔 書いたものです

netctl を使うのは arch らしい独自のやり方です


今どんな状態かというと

USB wifi をつけて LANケーブルを除けて起動すると 自動的にインターネットにつながり、 この後 USB wifiをのけ LANケーブルをつけると また自動的にインターネットにつながってます。

また逆に
USB wifi 除け  LANケーブルをつけて起動すると  自動的にインターネットにつながってます。
 

netctl と dhcpcd とは衝突するので並立できません。
 で dhcpcdを外します
systemctl disable dhcpcd
pacman -S netctl


すると 
systemctl list-unit-files|grep enabled
したら 以下のようになります。 
autovt@.service                            enabled 
display-manager.service                    enabled 
getty@.service                             enabled 
lxdm.service                               enabled 
netctl-auto@.service                       enabled 
netctl.service                             enabled 
openntpd.service                           enabled 
sshd.service                               enabled 
remote-fs.target                           enabled

 
 
 
ip link してネットワークインターフェースをみると
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether f0:76:1c:6c:41:af brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 #<-------------------------no driver
    link/ether d0:53:49:6f:a1:d8 brd ff:ff:ff:ff:ff:ff
4: wlp0s20u2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000#<------use this
    link/ether 00:22:cf:01:22:6f brd ff:ff:ff:ff:ff:ff

ですが、 wlp3s0はPCの基盤に埋め込まれてるWIFIで LINUXのサポートはなく
したがって USB WIFIであるwlp0s20u2を利用します。
 
なお
wlp3s0は 有線LANです。
 


3)
wifi-menu -o wlp0s20u2

して 接続パスフレーズをいれます。




4) 他に何かをしたかもしれませんが 忘れちゃいました。
例えば

 netctl enable wlp0s20u2-URoad-9BF5EC
 netctl enable enp2s0-dhcp
です。

解説は
https://wiki.archlinuxjp.org/index.php/Netctlを見てください。
なお
プロファイルへの変更はサービスファイルに自動的には適用されません。変更後、プロファイルを再度有効にする必要があります:

# netctl reenable wlp0s20u2-URoad-9BF5EC とのこと



現在どうかというと

有線LANについては
# cat /etc/netctl/enp2s0-dhcp 
Description='A basic dhcp ethernet connection'
Interface=enp2s0
Connection=ethernet
IP=dhcp
です。
 
 
wifiwlp0s20u2 については 
wifi-menu -o wlp0s20u2にてつくられた 
# cat /etc/netctl/wlp0s20u2-URoad-9BF5EC 
 Description='Automatically generated profile by wifi-menu'
Interface=wlp0s20u2
Connection=wireless
Security=wpa
ESSID=URoad-9BF5EC
IP=dhcp
Key=\"33948dd44dd3f20bfc023b1a7e8a4479fab69744a79192677c
です。 
 
 
 
なお 現在
[root@lnv tuyosi]# pacman -Q| grep ifplugd
[root@lnv tuyosi]# pacman -Q| grep wpa_actiond
wpa_actiond 1.4-2
ですので、
wpa_actiondははいってます。
自分が入れたのか なんかの付属で入ったのかは 意識にありません。
 
 
ただ マニュアルには

有線ケーブルを抜き差しするたびに netctl プロファイルが変更されるために
pacman -Sy ifplugd


wifiが特定のネットワークの圏内から他のネットワークの圏内に移動したときに netctl のプロファイルが変更されるために
pacman -Sy wpa_actiond
とをし
さらに
# systemctl enable netctl-auto@interface.service 
# systemctl enable netctl-ifplugd@interface.service 
こうしなさいとかかれてますが、

現在は
systemctl list-unit-files|grep enabledは

autovt@.service                            enabled
display-manager.service                    enabled
getty@.service                             enabled
lxdm.service                               enabled
netctl-auto@.service                       enabled
netctl.service                             enabled
openntpd.service                           enabled
sshd.service                               enabled
remote-fs.target                           enabled
なので
systemctl enable netctl-auto@interface.service
は やった結果になってます。 


ともあれ

プロファイルを使ってネットワーク接続を管理・設定する CLI ベースの 
Arch Linux の独自プロジェクトnetctl
できたようです。
 
ls -l /etc/netctl/
は参考までに以下です。
合計 32
drwxr-xr-x 2 root root 4096 12月  8 20:18 MOTO(バックアップ)
-rw-r--r-- 1 root root  112 10月 28 01:40 bridge(qemuのための設定-rw-r--r-- 1 root root   93 12月  8 19:46 enp2s0-dhcp
drwxr-xr-x 2 root root 4096  6月 17 17:27 examples
drwxr-xr-x 2 root root 4096  6月 17 17:27 hooks
drwxr-xr-x 2 root root 4096  6月 17 17:27 interfaces
-rw-r--r-- 1 root root  423 12月  8 19:04 profile
-rw------- 1 root root  210 12月  8 18:41 wlp0s20u2-URoad-9BF5EC

0 件のコメント:

コメントを投稿