
Ubuntu日本語フォーラム

ログインしていません。
こんにちは。現在ubuntu14.04 LTS環境を利用させていただいてますが、unityのUI機能が壊れてしまい、基本的に端末しか利用できない状態です。(これに関して別途質問するかもしれませんが、現時点で保留します。)
さらにネットワークの設定も消えてしまい、例えばaskubuntu.com/questions/149411/iwconfig-usage-for-wep-access-pointなどを参考に接続を試みたのですが、dhclientの所でcommand not foundになり、apt-get等で入れようにもネットワークに接続してないため取得に失敗してしまいます。またaccess pointの設定も(手動で必要なのかどうかよく分かってませんが)以下に示した手順ではうまくいってないようです。
dhclientに対応する操作をUI側で行った記憶がないので、問題点がどちら(orそれ以外)にあるかはっきり認識できていないのですが、具体的な解決策あるいは他の参考URL等、ご教示、ご助言お願いいたします。以下、幾つか補足情報です。
試した事など:
(以下sudoは省略)
まずwlan0が無効だったので(ifconfigでloしかなかった)、とりあえずネットの情報を鵜呑みにして
ip link set wlan0 up
と
ifup wlan0
というのを打ち、次に
iwconfig wlan0 essid (id name) key s:(WEP enc. key)
でiwconfigとすると、
ssidの追加を確認しましたが、access pointがnot associatedになっており、
iwconfig wlan0 ap (MAC address)
を試したのですが、前後で何も変わりませんでした。(not associatedのまま)
表示内容はTx-Powerは数値が表示され(15 dBm)、IEEE規格は802.11abgn対応、mode:managed、retry long limit 7、2つのthrとpower managementは全てoffです。(別のタブレット端末から入力してるため、コピペではないですが、一応全てです)
参考:
なおservice networking statusはstart/runningとなってます。
上の各実行後、特に記した以上のメッセージは出ませんでした。(正確にはifupの所ででましたが、/etc/network/interfaceの修正で問題は解決したはずです)
他に必要な情報がある場合はご指摘お願いします。
オフライン
上の質問した者ですが、少し補足させていただきます。(それとネットワークのトピックがあるのに気付かず、こちらに投稿してしまいました、申し訳ありません)
まずunityが利用可能だった際は無線LAN子機と問題なく通信できてました。またアップグレードなどは行っておりません。(それゆえドライバレベルでのトラブルでなく、私のネットワーク設定への理解不足が原因と考えてます)
一応
https://wiki.ubuntulinux.jp/UbuntuTips/Hardware/DetectiveWirelessLanDevice#fnref-626ae7732fe68d35deef49592c519bf989f5d3c1
に従いますと、使っている機器は家庭用のもので、NEC製のAtermBL172HVというものです。そしてlspciの結果を見ると、Kernel driver in used : iwlwifiはありますが、Kernel moduleという項目はそもそも見当たりません。lsmodの中に先のiwlwifiはあり、Intel のCentrino Advanced-N + WiMAX6250 2x2 AGN (Network controllerの項目)項目に対応するものが出てくるようです。
連続投稿失礼しました。
オフライン
多分 wifi device は kernel に正しく認識されているのだと推測します。しかし、#1, #2 の情報だけですと問題解決の方針が私にはほとんど分からないのでいくつか質問させてください。
まず、念の為に確認したいのですが、インストールされているシステムは ubuntu 14.04 の desktop でしょうか?(それとも server にご自分で unity などを足していったのですか?)
dhclient は default でインストールされているはずです。まず、ファイルシステムに異常がないか調べてください。異常がなければ以下のふたつのコマンドの実行結果を教えてください。
ls -l /sbin/dhclient
dpkg -l | grep dhcp
dhcp 以前の問題として、wifi 接続がうまく行っていないのですよね?(ファイルシステムに異常がないことを確認した後で)書き換えてしまった /etc/network/interface を一旦元に戻して reboot してください。その状態で動いているべき daemon が確かに動いているかを確認するため、下記の3つのコマンドを実行して結果を教えてください。
ps ax | grep Net
ps ax | grep wpa
ps ax | grep dbus-daemon
unity が動いていた当時のネットワーク設定のファイルは /etc/NetworkManager/system-connections の中にまだ残っていますか?
オフライン
taka.zoo.n様、
返答ありがとうございます。
>>まず、念の為に確認したいのですが、インストールされているシステムは ubuntu 14.04 の desktop でしょうか?
仰る通りです。(VAIO laptopです)
>>dhclient は default でインストールされているはずです。まず、ファイルシステムに異常がないか調べてください。異常がなければ以下のふたつのコマンドの実行結果を教えてください。
ls -l /sbin/dhclient
dpkg -l | grep dhcp
dhclientはやはり見つかりませんでした。二つ目の実行結果ですが、
dhcp3-client、isc-dhcp-client、isc-dhcp-serverはrc(削除済)、isc-dhcp-commonはiiと出てきました。また4.2.4-7Ubuntu12.4と書いてあります。
(結果をコピペするのは少し手間がかかるので、とりあえずは必要そうな(と私が勝手に思っている)結果しか載せておりませんが、ご了承願います)
>>その状態で動いているべき daemon が確かに動いているかを確認するため、下記の3つのコマンドを実行して結果を教えてください。
いずれもS+状態でプロセスとしては存在します。また端末が?となってるdbus-deamonが複数あり、いずれもSかSs状態です。
>>unity が動いていた当時のネットワーク設定のファイルは /etc/NetworkManager/system-connections の中にまだ残っていますか?
残っています。
追記:
「接続できない」がどのレベル(物理レベルなのかアプリレベルなのか)かすら現時点で分かってません。(とりあえずdhcpの部分はアウトに見えますが) 以下、とりあえず実行結果
$ ping (domain name)
unknown host→dhcpに問題あり?
$ ping (IP address)
Network is unreachable
$route -v
結果なし→ルータすら認識していない??物理レベルで問題あり?
また/etc/network/interface内には
auto wlan0
iface wlan0 inet dhcp
が(loopback部分を除き)書いてあります。
よろしくお願いします。
オフライン
おそらく、NetworkManager は正常に動いていて、wifi のデータリンクは確立しているが dhcp のclient program が無いので、IP レベルでの接続ができないということではないかと推測します。(dhcp でエラーが起きた場合、NetworkManager は wifi のデータリンクを切断します。)
NetworkManager と手動による設定に何らかの資源競合が発生している可能性を排除するために /etc/network/interfaces から wlan0 に関する行を削除してください。
上の推測が正しいかどうかを見るには
nmcli con list で設定されている接続名をしらべて
nmcli con up id 接続名 & dbus-monitor --system sender=org.freedesktop.NetworkManager
を実行してください。ネットワーク接続の過程がどこまで進行したかが表示されます。ちゃんと理解するには NetworkManager の dbus interface spec と付き合わせなければなりませんが、そんな面倒なことをしなくても、おおよその状況は分かります。
もしこの推測が正しいのであれば、一番安直な復旧は isc-dhcp-client をインストールすることだとおもいます:
1. 他のマシンで isc-dhcp-client の deb file をダウンロードする(具体的手順は http://packages.ubuntu.com/ja/trusty/ne … hcp-client の真ん中あたりの表でお使いの PC の CPU に対応したところをクリックすれば URL 等が書かれたページが表示されすのでそれに従ってください。)
2. deb ファイルを usb メモリーに移す。
3. 障害が起きた PC でその usb メモリーをマウントする。
4. sudo dpkg -i isc-dhcp-client_4.2.4-7ubuntu12.4_ARCH.deb (ARCH は実際の CPU アーキテクチャーに変える)で isc-dhcp を手動でインストールする
5. nmcli con up id 接続名 を実行する。
(Windows と Ubuntu の dual boot になっているのであればいちいち usb メモリーを介さずダウンロード自体は windows で行って、ubuntu から windows 内にあるダウンロードした deb ファイルを読み出すという手もあります。)
dhcpd をインストールせずに CLI のもとで手動でネットワーク接続を設定するには
1. sudo -s で管理者モードでの shell を動かす
2. cd /etc/NetworkManager/system-connections
3. cp 以前動いていた設定名 tmpwifi (tmpwifi は他と重複しない名前なら何でも可)
4. エディターで tmpwifi を書き換える
4.1 [connection] セクションは id= の後を tmpwifi (通常ファイル名に合わせる) uuid= の最後 2byte 程度を元の値と異なる値(16進) に変える。
4.2 [ipv4]セクションを
method=manual dns=192.168.1.100; address1=192.168.1.101/24,192.168.1.102
のように書き換える。なお192.168.1.100 の部分は実際の dns サーバーの IP アドレス(行末の ; を忘れずに)、192.168.1.101 は当該 PC の IP アドレス、24 はそのアドレスに対するネットマスクのビット数、192.168.1.102 は default gateway の IP アドレスに変えてください。
4.3 [ipv6]セクションは method=ignore とする。
4.4 エディターを終了したら念の為 diff で変更内容(というより変更すべきではないところを誤って変えていないか)を確認してください。
4.5 tmpwifi の修正前の bak ファイル(エディターが emacs なら tmpwifi~ )を削除する。(これを忘れると同じ uuid が複数の設定で参照されて何が起きるかわかりません。)
5. NetworkManager を再起動してから管理者モードの shell を終了する。(あるいはマシンを reboot した後再ログインする)
6. nmcli con list を実行して作成した接続が NetworkManager に認識されていることを確認。
7. 必要なら Wifi router に上の 4.2 で設定した PC の IP アドレスを認識させる(この作業が必要かどうか、必要だとして具体的な手順はどうなるかはお使いの Wifi router に依ります。)
8. 当該 PC で nmcli con up id tmpwifi を実行する。
となります。なお NetowrkManager の接続設定ファイルには ssid や psk が暗号化されずにそのまま書かれています。エディターで開いた時には画面に表示されますのでご留意ください。また、上記は ubuntu 14.04 に対するものです。他の版では設定ファイルの書式が異なるかもしれません。
追記:#1 に書かれている手順は接続設定ファイルの [802-11-wireless-security] セクションの key-mgmt が wep の場合にしか使えません。wpa-psk の場合は wpa_cli を通して wpa_supplicant へ設定情報を書き込みます。いずれにしても NetworkManager が動いていれば遅かれ早かれ wpa_cli による設定は上書きされます。
オフライン
taka.zoo.n様、
申し訳ないことに返事がかなり遅れてしまいましたが、途中経過報告です。isc-dhcp-clientは問題なくインストールできたのですが、network managerが正常に稼動してないためなのか、nmcli con listを実行すると、
could not initialize NMClient /org/freedesktop/NetworkManager: The name org.freedesktop.Networkmanager was not provided by any .service filesという警告と接続を取得できません、設定サービスが稼働してません、というエラーが出ます。(この警告で検索してみて、そこで提示されている方法をいろいろ試してみましたが、現時点で解決に至ってません。)
sudo service network-manager statusはstpped/waitingで、
... startで起動するものの、すぐ上の状態になっています。dhcpの時同様にnetwork-managerのdebパッケージを落としてインストールもしてみましたが、同様です。
オフライン
mpnw12 による投稿:
sudo service network-manager statusはstpped/waitingで、
... startで起動するものの、すぐ上の状態になっています。
確認ですが、NetworkManager や wpa_supplicant の daemon プロセスは存在するが、service で調べると network-manager が stopped/waiting になるということでしょうか?
NetworkManager の起動時のメッセージを informative なものも含めて全て教えてください。具体的には:
0. sudo serivice network-manager status が stopped であることを確認
1. date でシステムの現在時刻を控える
2. sudo serivice network-manager start
3. 2〜3 分待つ
4. grep Network /var/log/syslog.1 /var/log/syslog >/tmp/nmlog
(/var/log/syslog を読めないと言われた場合には sudo をつけてください)
5. /tmp/nmlog には過去の分も含めてメッセージが沢山入っているはずです。エディターで内容を見て 1 で控えた時刻以降の物を全て教えてください。
オフライン
taka.zoo.n様、
再確認したところ、現時点でそもそもnetwork-managerプロセスも存在しませんでした。
そもそもservice network-manager startでdaemonプロセスを生成してくれるものだと思っておりましたが。
以下、ご指示通りのメッセージログです。(4行目がエラー箇所です。なお実行時はきちんとsudo管理者特権で実行してます。)
/var/log/syslog:Aug 25 07:00:40 (executor) NetworkManager[4585]: <info> NetworkManager (version 0.9.8.8) is starting...
/var/log/syslog:Aug 25 07:00:40 (executor) NetworkManager[4585]: <info> Read config file /etc/NetworkManager/NetworkManager.conf
/var/log/syslog:Aug 25 07:00:40 (executor) NetworkManager[4585]: <info> WEXT support is enabled
/var/log/syslog:Aug 25 07:00:40 (executor) kernel: [ 976.527609] traps: NetworkManager[4585] general protection ip:469f8e sp:7ffd366cb8b0 error:0 in NetworkManager[400000+10c000]
以下(プロセス番号を除いて)同じのが9回ほど続きます。
オフライン
mpnw12 による投稿:
そもそもservice network-manager startでdaemonプロセスを生成してくれるものだと思っておりましたが。
はい、そのとおりです。
/var/log/syslog:Aug 25 07:00:40 (executor) kernel: [ 976.527609] traps: NetworkManager[4585] general protection ip:469f8e sp:7ffd366cb8b0 error:0 in NetworkManager[400000+10c000]
このメッセージから NetworkManager が不正なメモリー参照をしようとしたため kernel が SIGSEGV を送った、という(stable版では)通常は起こりえないエラーが起きたことが分かります。/usr/sbin/NetworkManager は既に strip されていますので、私にはなぜこうなるのかを調べる手段が思いつきません。
ただ、NetworkManager が完全に動いていない(干渉されることもない)のですから、wpa_supplicant を適切に設定すれば network につながるはずです。
wpa_supplicant をどうやって直接制御できるかを調べるために
sudo dbus-send --system --print-reply --dest=fi.w1.wpa_supplicant1 /fi/w1/wpa_supplicant1 fi.w1.wpa_supplicant1.GetInterface string:wlan0
を実行してみてください。
object path "/fi/w1/wpa_supplicant1/Interfaces/0" のような(最後の数字は実行環境により変わります)応答があった場合: /var/run/wpa_supplicant/wlan0 というコントロールソケットがあるはずです。sudo wpa_cli -i wlan0 で wpa_supplicant を対話的に制御できるはずです。(手順は後述)
Error fi.w1.wpa_supplicant1.InterfaceUnknown: wpa_supplicant knows nothing about this interface. という応答があった場合:wpa_supplicant は動いていて dbus 経由で制御できる状態ですが、wlan0 がwpa_supplicant の管理下にありません。この場合は dbus 経由で wlan0 を認識させれば上と同様に wpa_cli で wpa_supplicant を制御できるようになるはずです。問題は ubuntu 14.04 にインストールされている dbus-send では wpa_supplicant へ wlan0 を認識させるメッセージを送れないことです。もし variant 対応パッチの当った dbus-send(後述)があるならば wlan0 を認識させるコマンドは
sudo (パッチバージョンのあるディレクトリ)/dbus-send --system --print-reply --dest=fi.w1.wpa_supplicant1 /fi/w1/wpa_supplicant1 fi.w1.wpa_supplicant1.CreateInterface dict:string:variant:Ifname,string:wlan0
です。
それ以外の応答の場合:ミスタイプがあれば修正してください。ミスタイプがなければ dbus そのものが動いていないか wpa_supplicant が動いていないかのどちらかです。エラーメッセージを教えてください。
wpa_cli からのネットワーク設定:sudo wpa_cli で起動した後、青字の部分を入力してください。ただし、0 は add_network の返してきた数字に置き変えてください。
ssid, 暗号化方式、psk は /etc/NetworkManager/system-connections に残っている設定ファイルに合わせてください。ただし、psk の先頭の s- は除いてください。また ssid と psk は "" で括りますが、key_mgmt では括りません。- と _ の打ち間違いもよくあるミスです。
# wpa_cli
(中略)
Interactive mode
Selected interface 'wlan0' もしここで Could not connect to wpa_supplicant: (null) - re-trying となったら root 権限で動いているか、/var/run/wpa_supplicant/wlan0 があるかを確認。
> add_network
0
> set_network 0 ssid "ssssss"
OK
> set_network 0 key_mgmt WPA-PSK
OK
> set_network 0 psk "ppppppppp"
OK
> enable_network 0
OK
(しばらく待って以下のようなメッセージが出れば wifi link は完了です。)
<3>SME: Trying to authenticate with xx:xx:xx:xx:xx:xx (SSID='ssssss' freq=2xxx MHz)
<3>Trying to associate with xx:xx:xx:xx:xx:xx (SSID='ssssss' freq=2xxx MHz)
<3>Associated with xx:xx:xx:xx:xx:xx
<3>WPA: Key negotiation completed with xx:xx:xx:xx:xx:xx [PTK=CCMP GTK=CCMP]
<3>CTRL-EVENT-CONNECTED - Connection to xx:xx:xx:xx:xx:xx completed [id=1 id_str=]
Ctrl-D で wpa_cli を終了させる
なお、wpa_cli は非同期に <3>CTRL-EVENT-SCAN-XXXXX というメセージを出力します。画面が乱れてやりにくいのですがこれを止める方法が私にはわかりません。Ctrl-L で画面がクリヤーされて入力途中のコマンドが表示されますので、入力を続行してください。(readline による他の行編集も使えます。)
このあとは dhclient を実行すれば IP レベルでつながるはずです。
variant 対応のパッチ:現実問題としてnetに繋がっていない状態で以下の作業をするくらいなら再インストールするほうが完全復旧するまでの手間がかからないのかもしれません。しかし、手順だけは書いておきます。
1: http://packages.ubuntu.com/ja/trusty/net/dbus から dbus_1.6.18.orig.tar.gz をダウンロードする。(ページの右の方にリンクあり)
2: https://chromium-review.googlesource.co … dict.patch から patch をダウンロードする。画面の右半分にあるソースリストの上、、"Patch set 1 2" と (gitiles) の間のアイコンをクリックすると dbus-1.4.12-send-variant-dict_new.patch.zip というファイルがダウンロードされます。
3: 適当な作業ディレクトリを作り、上の2つのファイルをそこに移して、cd する。
4: tar -xzvf dbus_1.6.18.orig.tar.gz
5: unzip dbus-1.4.12-send-variant-dict_new.patch.zip
6: cd dbus-1.6.18/tools
7: patch -p2 < ../../dbus-1.4.12-send-variant-dict_new-df0cfbc85ee74837b1076dd94be95165.patch
ここでは
patching file dbus-send.c
Hunk #1 succeeded at 158 (offset -6 lines).
Hunk #2 succeeded at 183 (offset -6 lines).
Hunk #3 succeeded at 487 (offset -11 lines).
というメッセージが出力されるはずです。
8: cd ..
9: ./configure
何かパッケージが足りないと言ってきたらそのパッケージをインストールする
10: make
CPU によりますが、数分以内に正常終了するはずです。
11: 目的の dbus-send は tools/.lib に出来ています。(tools にある wrapper ではありません。)
もし、ubuntu 14.04 マシンが他に手当できるのなら dbus-send が出来上がってから問題のマシンにコピーすると良いと思います。(くり返しなりますが wrapper をコピーしないように注意してください。)そうでないのならファイルのダウンロード自体は別のマシンかOSで行って問題のマシンにコピーして上の手順3以降を問題のマシンで実行する事になります。長いファイル名はファイル名補完を使えば簡単に入力できるので手間にはなりません。一番の手間は手順9でパッケージを dpkg を使ってインストールしなければならないことだと思います。(configure をざっと眺めた限りでは必須パッケージはなさそうですが、手元のマシンでは確認できません。)なお、絶対に make install を実行しないでください。
長くなってしまいましたが、疑問な点があれば遠慮なくおたずねください。
オフライン