khurata’s blog

khurata’s blog

さようなら、Avira

 Windows XP 時代は長い間 McAfee 正規ユーザだった私だが、Win. XP 後期にはあまりの重さに耐えきれず、無料のアンチウイルスソフトとして Avast! を使い、その後 Avast! の UI 変更を嫌って Avira に流れ着き、たぶん5年以上は使い続けていたが、とうとうオサラバする事にした。

 なぜならば、WIndows 10 64bit 版において見逃せない不具合が出てきたからである。 細かい不具合であれば使い続けるのに問題は無かったが、これは看過できなかった。

・・・・・・・・・・・・・・・・・・・・

 2021年2月に入ってから、Windows 起動後しばらくすると、デスクトップ右上に、このようなウインドウが現れるようになった。

Avira's unerasable popup window

「申し訳ございませんが、アクセスを試みているコンテンツはオフラインでは利用できません。インターネット接続を確認して再試行してください。」

 これは原寸である。 けっこうデカい(780x420px. 以上ある)。 ドラッグしても動かせない。 「OK」をクリックしても何の反応も無く居座り続ける。 インターネット接続に問題は無いのにも関わらずだ(※1)。 タイトルバーも無くタスクバーにも居ないので通常操作では消せない。 しかもこのウインドウ、常に最前面に出ているので、他のウインドウを操作しづらい事この上無い。 せめて、「常に最前面」さえ無ければ、と思うのだが……。

 最初、これが出てきた時は、何らかのマルウェアに感染してしまったかと思い焦ったが、この問題が出ている PC ではウェブブラウジングはしているものの頻度は数日に1回程度で、しかもごく浅いネットの海を掬っているだけであり、メールクライアントも使っていないし、サーバを建てているわけでもなく、USB メモリや光学ディスクなどの外部媒体も使っておらず、感染の経路に心当たりが無い。

 ひとまず、こいつが何のプロセスなのかを探る事にした。 頼りになるのは Process Explorer である。 Process Explorer を起動したら、「照準器」のようなアイコン「Find Windows's Process」をクリックしたまま、

Find Windows's Process

Find Windows's Process をクリックしたまま……

ドラッグして問題のウインドウまで持って行き、

click'n drag 'Find Windows's Process' to target window

Find Windows's Process をクリック&ドラッグ

クリックをやめる(ドロップ)と……

drop 'Find Windows's Process' to target window

Find Windows's Process をドロップ

どうやら「犯人」は Avira のプロセスである事が判明した。 とりあえずは邪魔過ぎるので消しておく事にする。 該当プロセスで右クリックして「Kill Process」を選び、

'Kill Process' target process

該当プロセスで Kill Process を選ぶ

確認ダイアログで「OK」をクリックすると、

click 'OK'

確認ダイアログで「OK」をクリック

やっと消えてくれた。 これで普段の使い勝手が戻ってきたのだ。

killed target process of Avira

問題のプロセスを終了した

 この点のみならず、Avira近年は迷走気味というネット記事も散見される。 聞く所によれば、最近の Windows Defender は他と比べてもさほどひどいものではないらしいし、使い方に気を付けていさえすれば「標準装備」だけで良いのかも知れない。 しばらくは、Avira 無しで使ってみようと思う。

・・・・・・・・・・・・・・・・・・・・

※1 Avira のアップデートで何らかの新機能が付加されたものの、それを COMODO Firewall が未知のプロセスとしてブロックしたのではないか、と思ったが、COMODO の設定を見ると Avira の Spotlight UI は許可してあった。 無線 LAN 環境なので、時折り不安定な事があるのかも知れない。 それで一時的に何かが動かないのは仕方無いとしても、消せないウインドウを最前面に出し続けるのはあまりにもいただけない。

Optiplex 3020 に CentOS 8 を入れて無線LAN BUFFALO WI-U2-433DM を使えるようにした件

1.はじめに

 Linux の実機で無線 LAN を使おうとすると、ハードルが高い、というウェブ記事をよく目にする。 実際、自分も手こずったので、ここに記録を残しておく。 少なくとも、同じ環境であれば、本記事の通りにやればうまくいく公算は大きいと思う。

 CentOS 8 は、あと1年ほどで「終了」してしまい、CentOS Stream に移行するのだが、8 を Stream に変えるのはリポジトリ設定を変えさえすれば済む、という情報を信じて、私はまず 8 をインストールしてみる事にした。

 無線 LAN 子機については、Planex 製だと Linuxデバイスドライバが用意されているので良い、という話を見たし、BUFFALO 製品は「WLI-UC-GNM なら Linux ですぐ使えるが、他はいろいろ大変だ」という話も見た。 しかし、WI-U2-433DM は Linux で使える(ただし WI-U2-433DMS は使えないらしい?)という話も見たので、WI-U2-433DM を使ってみる事にした。 古い製品ではあるが、WLI-UC-GNM よりは性能が期待できる。

 結論を言えば、この目論見は成功した。 ……が、ウェブ上の情報が新旧錯綜していたり、私自身の知識・理解が足りなかったりして、結構手間取ってしまった。 この記事が(特に私と同じく Linux 初心者にとって)何らかの参考になれば幸いと思う。

 

2.目指したこと

 インターネットにつながっていないオフラインな PC に CentOS 8 Linux をインストールし、WI-U2-433DM のデバイスドライバをインターネット無しでビルド・インストールして、無線 LAN でインターネットできるようにしたい。

 なお、インターネット接続を確立した無線 LAN ルータと、インターネットが使える作業用のマシン(WindowsMacOSLinux 等いずれか)は、すでに在るものとする。 また、その無線 LAN ルータは、WI-U2-433DM がサポートする 5GHz 帯と 2.4GHz 帯をいずれもサポートしているものとする。

 

3.ハードウェアや BIOS の設定について

 今回試したマシンは以下の通り。 「やや古いパソコン」として、ごく普通のものである。

 3.1 BIOS 設定の確認

  CentOS をインストールしたいマシンにディスプレイ・USB キーボード・USB マウスを接続して電源を投入し、BIOS 設定で USB から起動できるようにしておく。 Optiplex 3020 SFF においては次に示す BIOS 設定を確認する。

  • General
    • Boot Sequence
      • USB Storage Device とインストール先ディスク(今回の場合は Crucial CT500MX500SSD1)にチェックを入れる
      • USB Storage Device の優先度を上げておく
    • Date/Time:2~3分程度の誤差で合わせておく (なお、午前0時は 12(HH)AM(A/P) とする、「AM 0時」という設定はできない、これで私は地味にハマった
  • System Configuration
    • SATA Operation
    • Drives
      • インストール先ディスク(今回の場合は Crucial CT500MX500SSD1)にチェックを入れる
    • SMART Reporting
      • Enable SMART Reportingチェックを入れる
    • USB Configuration
      • Enable Boot Supportチェックを入れる

  なお、場合によっては、BIOS 設定に先立って、バックアップ電池(CR2032)を新品に交換しておくのも良い。

 

4.CentOS 8 のインストール

 この章では、私が DELL Optiplex 3020 SFF に、USB メモリを用いて CentOS 8 をインストールした手順を記す。

 この章は、自分の環境における実際手順を記しているだけであって、無線 LAN でインターネットしたいという目的に直接関係するものではない。 人によっては多少の参考にはなると思うが、既知の事しか無いので、読み飛ばしていただいて構わない。 ただし、次章以降の内容は、本章で述べたインストール設定を最低限の前提としているので、次章以降で何かがうまく行かなかった場合は、本章を読み返していただければ幸いである。

 4.1 インストール用 USB メディアの作成

  Fedora のサイトから Fedora Media Writer をダウンロードし、作業用マシンにインストールする。
  https://getfedora.org/ja/workstation/download/

  CentOS のサイトから CentOS 8 の ISO イメージを作業用マシンにダウンロードしておく。 今回私は CentOS-8.3.2011-x86_64-dvd1.ISO を使った。
  https://www.centos.org/ →「CentOS Linux」「ISO x86_64」→ 適当なリンク →「CentOS-8.3.2011-x86_64-dvd1.ISO

  内容を消しても良い USB メモリを1つ用意する。 容量は 9GB 以上必要である。 先ほどインストールした Fedora Media Writer を使い、CentOS-8.3.2011-x86_64-dvd1.ISO の内容を USB メモリに書き込む。 作業手順の詳細は以下のリンク先を参照されたい。
  https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/installation_guide/sect-making-usb-media

 4.2 インストール

  マシン本体にインストール用 USB メモリを差して電源を入れ、インストーラ画面が表示されるまで待つ。

  4.2.1 インストール先ディスクの全消去

   インストールの前に、インストール先のディスク内容を全消去したい場合にのみ、本項の手順を行う。

   インストーラが起動したら、カーソルキー上下で Troubleshooting に合わせ Enter 押下、カーソルキー上下で Rescue a CentOS Linux system に合わせ Enter 押下すると、しばらく経ってオンメモリのレスキュー用 OS が起動する。

   1) Continue
   2) Read-only mount
   3) Skip to shell
   4) Quit (Reboot)
   Please make a selection from the above:
   と表示されたら 3 を打ち込んで Enter 押下。

   Please press ENTER to get a shell:
   と表示されたら Enter 押下。 これでコマンドシェルが起動する。

   parted と打ち込んで Enter 押下すると、プロンプトが (parted) に切り替わる。 そこで print と打ち込んで Enter すると、ディスク上のパーティション一覧が表示される。

Number Start End Size Type File system Flags
1 1049kB 2149MB 2147MB primary ext4 boot
2 2149MB 492GB 490GB primary lvm  
(これは「パーティションが2つある」例であり、環境によって表示内容は異なる)

   (parted) プロンプト表示に続いて rm 1 と打ち込んで Enter 押下、rm 2 と打ち込んで Enter 押下すると、それぞれのパーティションが即時に削除される。
   その後 print と打ち込んで Enter 押下すると、次のようにしか表示されない。
   Number Start End Size Type File system Flags

   (parted) プロンプト表示に続いて quit と打ち込んで Enter 押下すると parted から抜け出る。 その後で exit と打ち込んで Enter 押下するとマシンが再起動し、インストール用 USB メモリからインストーラが起動する。

  4.2.2 インストールに先立ち画面解像度を設定

   インストーラ初期設定の解像度では、ディスプレイによってはインストーラ画面の端が切れて見えなくなったりするので、インストールを始める前に適切な解像度を設定しておくのが良い。

   インストーラが起動したら、ただちに Tab を押下する。
   > vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS-8-2-2004-x86_64-dvd rd.live.check quiet
   が表示されたら、その直後に半角スペースを1つ、続けて resolution=1280x1024 を入力して Enter を押下すると、CentOS インストールが始まる。

   この 1280x1024 という所は、使うディスプレイに合わせて適宜変更する。 なお、日本語キーボードで = を入力するには ^ を押下する。

  4.2.3 インストールにおける設定

   「WELCOME TO CENTOS LINUX 8.」画面では、左ペインで 日本語 を選択し、右ペインが 日本語 (日本) になっている事を確認し「続行」をクリック。

   「時刻と日付」では「地域」を アジア に、「都市」を 東京 に設定して「完了」をクリック。

   「ソフトウェアの選択」の「ベース環境」は サーバー(GUI 使用) を選択、「選択した環境用のその他のソフトウェア」は ファイルとストレージサーバー および 開発ツール を選択して「完了」をクリック。

   「ファイルとストレージサーバー」は、後々 Windows とファイル共有をしたいためであり、不要な場合は選択しなくても良い。 「開発ツール」は後ほど無線 LAN 子機のデバイスドライバをビルドするために必要である。

   いずれも、ここで選択しなくとも後から入れる事が出来るが、ここで選択しておいた方が面倒が少ない。

   「インストール先」、「ネットワークとホスト名」、「root パスワード」、「ユーザーの作成」については、それぞれ適当な内容を設定する(本例では、ユーザ usera を作成し用いる事とするので、環境に合わせて適宜読み替えること)。

   「インストールの開始」をクリックし、「システムの再起動」ボタンが表示されるまでしばらく待つ。 「システムの再起動」ボタンが表示されたらクリックし、インストーラ画面が表示されるのを待つ。 再起動が完了しインストーラ画面が表示されたら USB メモリを抜き、電源を入れ直す。

   CentOS のサインイン画面が表示されたら、CentOS のインストールは完了している。

   この後は、ユーザ usera にサインインし、デスクトップ環境の設定や日本語に関する設定、SELinux の無効化、作業用マシンから有線 LAN 経由での端末操作設定などを適宜やっておく。

 

5.無線 LAN 子機のインストールと設定と動作確認

 この章が本記事のメインである。

 5.1 必要なパッケージのインストール

  上記のインストール状態でデバイスドライバをビルドすると libelf-devel が足りずビルドが完了しないので、libelf-devel を CentOS インストーラ USB メモリからインストールする。

  CentOS が起動した状態でインストーラ USB メモリを差すと、GUI 画面で USB メモリが認識されている様子が確認できる。 コマンドでも確認できる。

  $ dmesg | grep usb-storage
  [ 2993.764310] usb-storage 3-9:1.0: USB Mass Storage device detected
  [ 2993.764404] scsi host6: usb-storage 3-9:1.0
  [ 2993.764457] usbcore: registered new interface driver usb-storage
  (これは表示例であり、細かい点は環境により異なる)

  $ dmesg | grep removable
  [ 2994.815298] sd 6:0:0:0: [sdb] Attached SCSI removable disk
  (これは表示例であり、細かい点は環境により異なる)

  インストーラ USB メモリがどこにマウントされたかを確認する。

  $ mount
  /dev/sdb1 on /run/media/usera/CentOS-8-3-2011-x86_64-dvd type iso9660 (ro,nosuid,nodev,relatime,nojoliet,check=s,map=n,blocksize=2048,uid=1000,gid=1000,dmode=500,fmode=400,uhelper=udisks2)
  (これは表示例であり、細かい点は環境により異なる;この例は /run/media/usera/CentOS-8-3-2011-x86_64-dvd にマウントされている事を示している)

  $ ls /run/media/usera/CentOS-8-3-2011-x86_64-dvd
  AppStream BaseOS EFI LICENSE TRANS.TBL images isolinux media.repo

  インストーラ USB メモリを参照するためのリポジトリファイルを作成する。 なお、CentOS-Linux-Media-My.repo というファイル名や、media-baseos-my というリポジトリ名は、他と重複しなければ自由に付けて良い。
  # cp /etc/yum.repos.d/CentOS-Linux-Media.repo /etc/yum.repos.d/CentOS-Linux-Media-My.repo(このように元からあるメディア参照ファイルをコピーして編集すれば楽だが、コピーせずにゼロから作っても構わない)
  # vi /etc/yum.repos.d/CentOS-Linux-Media-My.repo

[media-baseos-my]
name=CentOS Linux $releasever - Media - BaseOS
baseurl=file:///run/media/usera/CentOS-8-3-2011-x86_64-dvd/BaseOS
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

  (上記に示した必要な行以外は削除すべきである;余計な baseurl が処理されるとパッケージ導入時にチェックサムエラーになってしまう)

  新たに作成したリポジトリ(この場合は media-baseos-my)の内容が閲覧できる事を確認する。
  # dnf list --disablerepo=* --enablerepo=media-baseos-my

  デバイスドライバのビルドに必要なパッケージの名前を特定する。
  # dnf list --disablerepo=* --enablerepo=media-baseos-my | grep libelf-devel

elfutils-libelf-devel.i686 0.180-1.el8 media-baseos-my
elfutils-libelf-devel.x86_64 0.180-1.el8 media-baseos-my
(これは表示例であり、細かい点は環境により異なる)

  上記で判明したパッケージをインストールする。
  # dnf install --disablerepo=* --enablerepo=media-baseos-my elfutils-libelf-devel

  無線ネットワーク関連で便利な iw コマンドパッケージもついでに導入しておく。
  # dnf install --disablerepo=* --enablerepo=media-baseos-my iw

  インストーラ USB メモリを外す。

 5.2 BUFFALO WI-U2-433DM のデバイス名とデバイス ID を調査

  作業用マシンとして Windows マシンを使っている場合、BUFFALO 公式 Windowsインストーラ「エアナビゲータ2ライト」(airnavi2_221.exe)を作業用マシンで解凍し、\Win\driver\U2433DM\Win10\u2433dm.inf を「メモ帳」などで見て調べる。
[BUFFALO.NTx86]
; DisplayName Section DeviceID
; ----------- ------- --------
%BUFFALO_0x0242.DeviceDesc% = RTL8811au.ndi, USB\VID_0411&PID_0242
  となっているので、「デバイス名」は RTL8811au であり、「デバイス ID」は 0411 0242 である事が分かる。 0411 は BUFFALO 製品である事を示している。 RTL は Realtek 社の略であり、WI-U2-433DM の内蔵チップが Realtek 社製である事を示している。

 

  ところが私は、この「デバイス名」を「内蔵チップ名」と勘違いしてしまった。 このために、私は結構ハマってしまったのである。

  ウェブ上でよく見かける説明は次のようなものだ。

  「WI-U2-433DM の内蔵チップ RTL8811au は 8812au ドライバでも動作する。8812au とよく似たチップに 8821au があり、間違えてはいけない。しかし、だいたいの 8821au ドライバパッケージには 8812au ドライバも含まれているので、それを使う

  上記の説明が間違っているかどうか私には分からないが、すっきり分かりやすいとは思えない。 私なりに「たぶんこういう事であろう」と理解した事情は、次のようなものである。

  「WI-U2-433DM の内蔵チップは RTL8821 であり、このデバイス名は RTL8811au であるので、対応するデバイスドライバは 8811au である。従って、(RTL8821 などのドライバパッケージに含まれる)8811au というドライバを使う」

  この簡潔な理解にたどり着くまでに、私は何時間も費やして、多くのドライバパッケージを試行錯誤するハメに陥ってしまった。

 5.3 WI-U2-433DM デバイスドライバのビルド

  対応可能と思われるドライバパッケージは GitHub 上でいくつか見つけられるが、実装機能が豊富でメンテナンス頻度も高く見える次のパッケージを使う事にした。

  https://github.com/aircrack-ng/rtl8812au

  作業用マシンで「Code」「Download ZIP」をクリックして rtl8812au-5.6.4.2.zip をダウンロードし、CentOS に転送する。

  たとえば Tera Term を使っているなら、Tera Term 上で適当なユーザの適当なディレクトリに移動し、その画面に rtl8812au-5.6.4.2.zip をドラッグ&ドロップする。 「ファイル転送を行いますか?」ダイアログで「SCP」を選択、「送信先は指定しない」「OK」で転送される。

  転送後は、ディレクトリに rtl8812au-5.6.4.2.zip が存在することを確認する。

  確認できたら解凍し、解凍後のディレクトリに移動する。
  $ unzip rtl8812au-5.6.4.2.zip
  $ cd rtl8812au-5.6.4.2

  このドライバパッケージには、WI-U2-433DM のデバイス ID が無いので、ソースに追記しておく(211行目あたりの「WI-U2-433DHP」用の行を直下にコピペして編集すれば楽)。

  $ vi os_dep/linux/usb_intf.c

{USB_DEVICE(0x0411, 0x029B), .driver_info = RTL8821}, /* Buffalo - WI-U2-433DHP */
{USB_DEVICE(0x0411, 0x0242), .driver_info = RTL8821}, /* Buffalo - WI-U2-433DM */(この1行を新規追加)
{USB_DEVICE(0x056E, 0x4007), .driver_info = RTL8821}, /* Elecom - WDC-433DU2HBK */

  また、目当てのドライバだけをビルドするように、Makefile も編集しておく。
  $ vi Makefile

CONFIG_RTL8812A = y(24行目あたりの「y」を)

CONFIG_RTL8812A = n(「n」に書き換える)

  これは RTL8812 用ドライバをビルドしないようにする事で、RTL8821 用ドライバのみを単独ビルドするための設定である。 元々の Makefile では、CONFIG_RTL8812A と CONFIG_RTL8821A が共に「y」になっており、このままビルドすると混成ドライバ(?)である「88XXau.ko」というファイルが出来上がってしまうが、それだとうまく行かなかった。

 

  上記2点の編集を終えたらビルドする。 数分ほど時間が掛かるので、しばらく待つ。
  $ make

  ビルドが終わったら、「8811au.ko」というファイルが存在している事を確認する。 これがお目当てのデバイスドライバである。
  $ ls
  8811au.ko

  再度、整理しておこう。

  「WI-U2-433DM の内蔵チップは RTL8821 であるから、デバイスドライバのソースに RTL8821 機器として WI-U2-433DM のデバイス ID を新規追加した。また Makefile では RTL8812 用ドライバを生成せず、RTL8821 用ドライバのみを生成するように指定した。
  そうしてデバイスドライバをビルドした結果、チップ RTL8821 に対応するデバイス名のドライバ 8811au が生成された」

 5.4 WI-U2-433DM デバイスドライバのインストール

  通常は make install でインストールするのだが、手動でインストールした方が良い、みたいなウェブ記事も散見されるので、手動でインストールしてみる(多分、どちらでやっても大差無いと思われるが)。
  $ sudo cp 8811au.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/
  $ sudo depmod -a
  $ sudo modprobe 8811au

  ドライバが組み込まれていることを確認する。
  $ modinfo 8811au
  filename: /lib/modules/4.18.0-240.el8.x86_64/kernel/drivers/net/wireless/8811au.ko
  version: v5.6.4.2_35491.20191025
  author: Realtek Semiconductor Corp.
  description: Realtek Wireless Lan Driver
  license: GPL
  rhelversion: 8.3
  srcversion: 69A4CAC3F0E9B3F2B50FFA3
  alias: usb:v2357p011Fd*dc*dsc*dp*ic*isc*ip*in*
  (以下、延々と続く)

 

  なお、本論とは関係無い事だが、もしルータ側で「知らない MAC アドレスは無視する」設定をしている場合などは、MAC アドレスをランダムにする機能が邪魔になる事がある。 そのような場合には、MAC アドレスが固定化されるように、次の設定を行う。

  $ sudo vi /etc/NetworkManager/NetworkManager.conf

[device]
wifi.scan-rand-mac-address=no

  (上記の2行を末尾に追記)

 

  以上の手順を終えたら、CentOS マシンを再起動する(「何もわざわざ再起動しなくても、systemctl restart NetworkManager.service とかで済むのではないか」と思われるかも知れないが、「無線 LAN で6時間も悩んだが、再起動だけで解決した」というウェブ情報を見たので、私はここで再起動してしまう事にしたのである)。

  なお、再起動は # reboot で良いはずだが、私の環境では reboot による再起動が不安定になる事がままあったので、# shutdown -h now と手動の電源オンを使った。 これについては、sync を3回打ち込むだとか、UNIX では reboot は推奨されないが Linux ではOKのはずであるとか、いくつかの情報がウェブ上で確認できるが、正直言ってよく分からなかった。

 5.5 WI-U2-433DM の装着と設定

  CentOS マシンが起動したら、USB 端子に WI-U2-433DM を差し込む。 ただちに認識され、WI-U2-433DM の青色ランプが点灯するはずである。 ランプが点灯しない場合は、今迄の手順のどこかが間違っている(たとえ lsusb コマンドや dmesg コマンドで認識されていようが、青色ランプが点灯していないならば、何を試しても、おそらく無駄だ)。

  WI-U2-433DM が認識されたら、デバイス名と MAC アドレスを確認する。
  $ dmesg
  [ 79.994532] 8811au: loading out-of-tree module taints kernel.
  [ 79.994957] 8811au: module verification failed: signature and/or required key missing - tainting kernel
  [ 80.061222] usb 3-10: 88XXau b2:a7:05:83:cb:51 hw_info[107]
  [ 80.062255] usbcore: registered new interface driver rtl8812au
  [ 80.072646] rtl8812au 3-10:1.0 wlp0s20u10: renamed from wlan0
  [ 80.086621] IPv6: ADDRCONF(NETDEV_UP): wlp0s20u10: link is not ready
  [ 80.383039] IPv6: ADDRCONF(NETDEV_UP): wlp0s20u10: link is not ready
  [ 80.383941] IPv6: ADDRCONF(NETDEV_CHANGE): wlp0s20u10: link becomes ready
  [ 80.398437] IPv6: ADDRCONF(NETDEV_UP): wlp0s20u10: link is not ready
  (上記は表示の一例であり、環境によって細部は異なる)

  無線 LAN 子機のデバイス名が wlan0 から wlp0s20u10 にリネームされている事が分かる。 MAC アドレスも確認できる(上記例における「b2:a7:05:83:cb:51」である;なお、この MAC アドレスは説明のためのデタラメな値である)。 デバイス名と MAC アドレスはこの後の設定で必要になるものだが、環境により異なると思われるので、この後は適宜ご自分の環境にて読み替えていただきたい。

  $ ip addr
  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
  valid_lft forever preferred_lft forever
  inet6 ::1/128 scope host
  valid_lft forever preferred_lft forever
  2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
  link/ether f9:b0:14:5e:ef:35 brd ff:ff:ff:ff:ff:ff
  inet 192.168.0.6/24 brd 192.168.0.255 scope global noprefixroute enp2s0
  valid_lft forever preferred_lft forever
  inet6 f980::f9b0:14ff:fe5e:ef35/64 scope link
  valid_lft forever preferred_lft forever
  3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
  link/ether 52:54:00:91:23:6b brd ff:ff:ff:ff:ff:ff
  inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
  valid_lft forever preferred_lft forever
  4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
  link/ether 52:54:00:91:23:6b brd ff:ff:ff:ff:ff:ff
  5: wlp0s20u10: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2312 qdisc mq state DORMANT group default qlen 1000
  link/ether b2:a7:05:83:cb:51 brd ff:ff:ff:ff:ff:ff
  (上記は表示の一例であり、環境によって細部は異なる;MAC アドレスと IP アドレスは説明用のデタラメな値である)

  このように、ip コマンドでも、無線 LAN 子機のデバイス wlp0s20u10 が MAC アドレス b2:a7:05:83:cb:51 で認識されている事が分かる。

  もしルータで「知らない MAC アドレスは無視する」設定をしている場合は、上記で得られた MAC アドレスをルータに設定しておく。

  次に IP アドレスやセキュリティの設定を行う。 本例では、「常用したい高速な 5GHz 帯」と「低速だが安定しやすい 2.4GHz 帯」の、2つの無線ネットワークプロファイルを作成し、それぞれにおいて設定をする。 プロファイル名は何でも良いが、ルータが供給する SSID に合わせておくのが分かりやすくて無難だと私は思う。

  プロファイル作成・設定の方法はいくつか有るが、nmtui を使うのが私の好みである(nmtui が起動できない場合は、$ sudo systemctl start NetworkManager.service を実行しておく)。

  なお本例では、

  • 5GHz 帯の SSID とプロファイル名は「ROUTER-A」
  • 2.4GHz 帯の SSID とプロファイル名は「ROUTER-G」
  • セキュリティは「WPA & WPA2 パーソナル」
  • 割り当て IPv4 アドレスは 192.168.11.8
  • デフォルトゲートウェイとなるルータの IPv4 アドレスは 192.168.11.1
  • DNS サーバはプライマリが 1.1.1.1 でセカンダリが 1.0.0.1
  • IPv6 は使用しない

  と設定するので、それぞれの環境に合わせ適宜読み替えていただきたい。

  $ sudo nmtui

  「接続の編集
    「Ethernet」「追加
      「新規の接続」「Wi-Fi」「作成
        「プロファイル名ROUTER-A
        「バイスwlp0s20u10
        「SSIDROUTER-A
        モード」「Client
        「セキュリティ」「WPA & WPA2 パーソナル
        「パスワード********
        「IPv4 設定」「手作業」「表示する
          「アドレス」「追加192.168.11.8
          「ゲートウェイ192.168.11.1
          「DNS サーバー」「追加1.1.1.1 「追加1.0.0.1
        「IPv6 設定」「無視する
        「自動的に接続する」にチェック
        「全ユーザーに使用可能」にチェック
    「戻る
    「Ethernet」「追加
      「新規の接続」「Wi-Fi」「作成
        「プロファイル名ROUTER-G
        「バイスwlp0s20u10
        「SSIDROUTER-G
        「モード」「Client
        「セキュリティ」「WPA & WPA2 パーソナル
        「パスワード********
        「IPv4 設定」「手作業」「表示する
          「アドレス」「追加192.168.11.8
          「ゲートウェイ192.168.11.1
          「DNS サーバー」「追加1.1.1.1 「追加1.0.0.1
        「IPv6 設定」「無視する
        「全ユーザーに使用可能」にチェック
    「戻る
  「接続をアクティベートする
    「Wi-Fi
    * ROUTER-A が「解除」になっており、他が「アクティベート」になっている事を確認する
    「戻る
  「終了

  設定が終わったら、それを反映させる。
  $ sudo systemctl restart NetworkManager.service

 5.6 WI-U2-433DM の動作確認

  いくつかのコマンドで動作状況を確認できる。
  $ nmcli dev status

DEVICE TYPE STATE CONNECTION
wlp0s20u10 wifi 接続済み ROUTER-A(ルータと 5.0GHz 帯で接続出来ている事を示す)
enp2s0 ethernet 接続済み enp2s0
virbr0 bridge 接続済み (外部) virbr0
p2p-dev-wlp0s20u10 wifi-p2p 切断済み --
lo loopback 管理無し --
virbr0-nic tun 管理無し --
(これは表示例であり、細かい点は環境により異なる)

  $ nmcli con show

NAME UUID TYPE DEVICE
ROUTER-A 0a1bc909-8407-4e86-abd6-ae38346798ec wifi wlp0s20u10
enp2s0 eb618bad-9122-33fb-ba81-8f9ff5a23468 ethernet enp2s0
virbr0 fe51ef0d-af0b-4abb-a18a-06004590def7 bridge virbr0
ROUTER-G 1bfcd231-02c1-4bb7-9af5-853383a74411 wifi --(今は 2.4GHz 帯プロファイルが使われていない事を示す)
(これは表示例であり、細かい点は環境により異なる)

  $ ip addr
  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
  valid_lft forever preferred_lft forever
  inet6 ::1/128 scope host
  valid_lft forever preferred_lft forever
  2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
  link/ether f9:b0:14:5e:ef:35 brd ff:ff:ff:ff:ff:ff
  inet 192.168.0.6/24 brd 192.168.0.255 scope global noprefixroute enp2s0
  valid_lft forever preferred_lft forever
  inet6 f980::f9b0:14ff:fe5e:ef35/64 scope link
  valid_lft forever preferred_lft forever
  3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
  link/ether 52:54:00:91:23:6b brd ff:ff:ff:ff:ff:ff
  inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
  valid_lft forever preferred_lft forever
  4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
  link/ether 52:54:00:91:23:6b brd ff:ff:ff:ff:ff:ff
  5: wlp0s20u10: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2312 qdisc mq state DORMANT group default qlen 1000
  link/ether b2:a7:05:83:cb:51 brd ff:ff:ff:ff:ff:ff
  inet 192.168.11.8/24 brd 192.168.11.255 scope global noprefixroute wlp0s20u10(IP アドレスが設定されている事を示す)
  valid_lft forever preferred_lft forever
  inet6 240d:1a:5b2:7000:b2a7:05ff:fe83:cb51/64 scope global dynamic mngtmpaddr
  valid_lft 10234sec preferred_lft 10234sec
  inet6 fe80::b2a7:05ff:fe83:cb51/64 scope link
  valid_lft forever preferred_lft forever
  (上記は表示の一例であり、環境によって細部は異なる;MAC アドレスと IP アドレスは説明用のデタラメな値である)

 

  インターネット疎通を確認する。
  $ ping www.yahoo.co.jp
  PING edge12.g.yimg.jp (182.22.16.251) 56(84) bytes of data.
  64 bytes from 182.22.16.251 (182.22.16.251): icmp_seq=1 ttl=54 time=8.43 ms
  64 bytes from 182.22.16.251 (182.22.16.251): icmp_seq=2 ttl=54 time=6.19 ms
  64 bytes from 182.22.16.251 (182.22.16.251): icmp_seq=3 ttl=54 time=5.14 ms
  64 bytes from 182.22.16.251 (182.22.16.251): icmp_seq=4 ttl=54 time=4.36 ms
  64 bytes from 182.22.16.251 (182.22.16.251): icmp_seq=5 ttl=54 time=9.25 ms
  ^C
  --- edge12.g.yimg.jp ping statistics ---
  5 packets transmitted, 5 received, 0% packet loss, time 9ms
  rtt min/avg/max/mdev = 4.358/6.672/9.245/1.880 ms
  (上記は表示例の1つ、5回目で Ctrl+C した事を示す、細かい部分は環境により異なる)

 

6.無線 LAN インタフェース関連コマンドあれこれ

  $ iw wlp0s20u10 info(インタフェース名は環境により異なる)
  $ nmcli dev status
  $ nmcli con show

  • ネットワーク設定の確認

  $ ip addr
  $ ip link
  $ ip route

  • 無線現況の確認

  $ nmcli dev wifi

  • 接続プロファイル設定の確認

  $ nmcli -p con show ROUTER-A(プロファイル名は設定により異なる)
  $ nmcli -p con show ROUTER-G(プロファイル名は設定により異なる)

  • 接続プロファイルのアクティブ切り替えと切り戻し

  $ sudo nmcli con down ROUTER-A && sudo nmcli con up ROUTER-G(プロファイル名は設定により異なる)
  $ sudo nmcli con down ROUTER-G && sudo nmcli con up ROUTER-A(プロファイル名は設定により異なる)

 

7.おわりに

 Linux における無線 LAN 子機インストールの急所は、「内蔵チップと対応デバイスドライバの対応をきちんとする事」に尽きる、とつくづく思った。 ここを誤解していると、試行錯誤に時間を取られてなかなか結果が得られない。

 ロクに読めもしない英語のサイトを数十個も閲覧したり、いくつものドライバパッケージを GitHub から落として試してみたり、よく分からないままドライバのソースをあちこちいじくり回したり、コンパイルエラーを姑息的に取り除こうとしてみたり、wpa_supplicant を使うのか考えてみたり、もしや DKMS を使うのかと迷走したり、ビルドは完了して USB デバイスとしては認識しているのだから(しかし青色ランプは点いていない)残りは「設定」だけだと勇み足を踏んでみたり……そんな無駄足は、もうこりごりである、という思いが、本記事を書いた原動力となった。

 「すぐ無線 LAN を使いたいだけだ、とにかく有線で無ければ良いのだ」という場合には、差すだけで使える WLI-UC-GNM を選ぶべきだろう。

 

 最後に……今回の設定や本記事作成にあたっては、先人の方々が遺してくれた、数々のサイトを参考にさせていただいた。 以下に挙げさせていただくと共に、御礼を申し上げたい。

(以上)

総理にされた男 (中山七里・著)

<この記事は普段フィクションをほとんど読まない私が作者や作品などの情報・評判を全く知らずに、ただ作品だけを読んで好き勝手に書く読書感想です>

 政治や時事ネタを扱っているので、鮮度が落ちないうちに読むべきエンタテインメント・サスペンス作品。 本作の発表は2015年だが、2020年初頭においてもまだ鮮度は充分。

 本作を読んでどうしても思い出すのは木村拓哉主演のTVドラマ『CHANGE』である。 「1年生」総理の長い演説が白眉となる作品構成は、おそらく『CHANGE』のオマージュなのか、それともこうした作品はそういう構成が必然であるのか……。 とまれ本作で総理に仕立て上げられてしまう受けない役者『加納慎策』は、(「キムタク総理」と同じく)政治や国会の事を何も知らぬまま内閣の中枢に送り込まれてしまい、素人ならではの思いと政治の実情との間で悩み苦しむ。 『CHANGE』もそうだったが、本作も、「素人総理」と同じ目線を読者が持つことによる、国会や政党政治の入門テキストの一面を持っている。 しかしだからといって硬くもなく、エンタテインメント小説としての面白さは一級品だ。 また、登場する政治家の何人かは、「どう考えてもこの人がモデルだろう」と分かってしまうのも本作を読む楽しみのひとつ。 特に「樽見」は菅義偉官房長官(当時)の姿を、「大隈」は小沢一郎氏の姿を思い浮かべながら読まざるを得なかった(笑)。

 もちろん『CHANGE』と似てはいつつもその真似ではなく、『CHANGE』放送時には発生していなかった東日本大震災や、『CHANGE』では取り上げなかった某占拠事件など、緊張感を持って読ませる本作ならではの大きなイベントが有る。

 主人公が心の中で「イッツ・ショータイム」と言っている間は総理を役者として演じていたのが、そのうち「イッツ・ショータイム」が無くなり、主人公は総理の政治家人生を「生きる」(演じるのではなく)ように変わってゆく、という心理描写も上手い。

 また『CHANGE』では「新人総理」を支える数々の有能なスタッフが居たが、本作中、加納慎策は全く自らの正体を知る者が居ない孤独の中で、前代未聞の重大な決断を下す羽目に陥ってしまい、読者の手に汗を握らせる(戦後の憲法や法制では国民の命を守るには充分で無いばかりか、現行憲法・法制下で国民の命を守ろうと奮闘する人達に向かって声高に非難を浴びせる人々の姿が描かれている場面を見ると、本作は痛烈な「九条」批判の書とも受け取れる)。

 抜群の破壊力を持つラストシーンの決め台詞も心憎い。 読むなら早めに、という作品だ。 

総理にされた男

総理にされた男

 

勝手に正誤表

 文庫版 第2刷 P.239 誤 でしようか → 正 でしょうか

大阪都構想の住民投票について

 昨日(令和2年11月1日)、注目されていた「大阪都構想」についての住民投票が終わり開票された。 結果はご存じの通り「都構想」反対多数で、現行の「大阪市」存続が決定したが、賛成票と反対票の差がきわめて小さく、両者の意見は実に拮抗していたと言える。

 事前の報道によれば、賛成多数なら特別区制に移行、同数もしくは反対多数なら現行のまま、という取り決めであったそうだが、私は、「賛成が反対の2倍以上というくらい圧倒的で無ければ、現行のままが良い」と考えていた。 たとえ1票でも賛成が多ければ断行、という方法で改革してしまったら、改革に反対していた住民との溝を深めるだけであろう。 そんな状況を招いてしまっては、自治への参加欲や地域への帰属感は得られないであろう。

 改革がうまく行くと事前に分かっているなら、たとえ1票差でも断行して良いであろうが、うまく行かない・今のままで良いと考えている人も多いからこそ住民投票に委ねたのだろう。

 やってみなければ分からない事に対して、「たとえ1票差でも多数決」を断行するのは、民主主義として正しい方法では無いのではないか、と私は考える。 「住民投票過半数なら断行」の根拠となったのは、おそらく憲法96条ではないかと思うのだが、仮に、改憲国民投票で、僅差で改憲断行となったなら、国民の間に深刻な政治的分断を招くのは明白であろう。 こういう事は、過半数が「正しい」わけではないのである(※)。

 

※ ブログ筆者自身は改憲派である。 しかし簡単に変えて良いとは考えていない。 国によって改憲の事情は大きく異なる。 我が国においては70年以上も同じ憲法を運用し続けてきたという実情が有るのであり、これを変えるなら相応の慎重さが必要だと考えている。 たとえは良くないかも知れないが、相撲や野球のような、長く続くスポーツのルールを改正するとなれば、必ず大きな論議が巻き起こるもので、「長く続いた制度」を変えるという事は、簡単に片付けて良いものでは無いのである。

永い言い訳 (西川美和・著)

<この記事は普段フィクションをほとんど読まない私が作者や作品などの情報・評判を全く知らずに、ただ作品だけを読んで好き勝手に書く読書感想です>

 TV出演もこなす売れっ子作家「津村啓」こと「幸夫(さちお)」が、突発的事故で妻を失ってからの数ヶ月が描かれる。 それ自体は悲劇のはずだが、他人との感情のやり取りを煩わしいとして逃げてきた幸夫にとって、それはひと時の解放的な時間でもあった。 しかし同じ事故で妻を亡くした男の子供達との交流の中で、幸夫は何かに気付いてゆく。

 その日その日の「生」を真正面から何のてらいも無く生きる小6の「真平」と4歳の「灯」ちゃん兄妹の姿を通して、幸夫はこれまで避け続けてきたことや、妻に対して自分がどうであったかを深く内省するようになってゆく。

 おそらく彼は、この後の人生を、「永い言い訳」と共に生きてゆくのだろうし、この後に彼が書く小説は、多分それまでよりつまらないものになってしまうのかも知れない。 それでも、幸夫はそれを「選ぶ」のである。

 本作は、人と人との間の情や愛を避け続けてきた男を通じて描かれる、情や愛への讃歌である。 こう書くと、重い性質の小説のようだが、実に細かい描写で成り立つユーモラスな場面が所々に有り、どうしたって笑ってしまう。 幸夫が出てくる場面は1行目からして可笑しいし、鼻水の執拗な描写や、「ちゃぷちゃぷローリー」のくだりなども、本当に可笑しい。 灯ちゃんの4歳児としての言動描写も、実にリアリティに満ちていて唸らせる。 細かい描写で笑いを取るのは、女性作家の得意技なのであろうか。 

永い言い訳 (文春文庫)

永い言い訳 (文春文庫)