ルーターをCentOS7に

CentOS6はUSB NICを認識できなかったため、慣れないUbuntuを使ってきたが、ついにCentOS 7への移行を実現した。

刷新されたAnacondaインストーラを使う。何もいじらずにインストールできるようになっているが、その一方でインストールしながらユーザーが作成できるなど効率的なデザインに変化している。シンプルながら機能性が失われておらず、なかなか驚きがある。

インストールが完了すると例によってmei_meが騒ぐ。とりあえずrootでログインし

# rmmod mei_me

さらに二度と起動しないように、/etc/modprobe.d/blacklist.conf に

blacklist mei
blacklist mei_me”

とどめに、/etc/modprobe.d/modprobe.conf.local

install mei /bin/true
install mei_me /bin/true

NICの設定はAnacondaから行える。そのためいきなりネットワークに接続できた。

ネットワークの設定はnmtuiまたはnmcliで行う。nmtuiは対話的に利用できる。これを用いて設定する。もちろん、USB NICも正しく認識されている。

ifconfigがないため、net-toolsをインストールしておくほうが良い。また、digコマンドもないため、dns-toolsをインストールしておく。このほか、zshとvimとdnsmasqをとりあえずインストールした。

IP forwardingが無効となっているため、これを恒久的に有効にする方法を探したが、良い記述がない。systemdに移行したための問題だ。そこでやや乱暴だが、/etc/sysctl.d/99-sysctl.confに

net.ipv4.ip_forward = 1

と書いておく。これでリブートしておおよそうまく動くのだが、DNSをフォワードしてくれない。ファイアウォールに起因するが、CentOS7はfirewalldを使用しており、設定方法が分からない。とりあえずfirewalldを無効化すれば動く。

だが、もちろんそれは困るので、とりあえずsubID 0x10のネットワークのコネクションは全部通過するようにする。通らないのはDNSなので、sshログインで設定可能だ。

firewalldは動いていなければいけない。そして、0x10インターフェイスをtrustedにする。

# firewall-cmd –zone=trusted –change-interface=enp0s25

さらに恒久化するため、/etc/sysconfig/network-scripts/ifcfg-enp0s25にZONE=trustedを追記する。これで0x10(enp0s25)から入ってくるトラフィックは全て通過するようになった。

dnsmasqを設定すると、Ubuntuのように訳の分からないことならず、正しくDHCP, DNSともに機能する。

全体的な印象としては、systemd, firewalldという新機構が案の定手強い状況だ。Fedoraと違いiptablesと共存しているわけではないため、firewalldの設定は必ず習得しなければいけないという厳しいものだ。GUI込みならばそれほど難しくないのかもしれないが。

困ったことに検索してみても、firewall-configを紹介しているだけで、firewalldのコマンドラインにおける設定方法は全く紹介されていないのだ。

セキュリティインシデントの顛末

先日、Mageiaで生じたトッププロセスからのfork bombだが、そのあとシステムを再構築したあとAgrusのログを参照して漏洩確認をするなどかなり大変な作業だった。

しかし、システムを構築した段階で再びnepomukの名が復活してきた。ケーブルを抜いて他のPCで調べてみると、どうもKDEのコアが利用しているらしいのだ。nepomukを持っているのはnepomuk, nepomuk-coreだが、kde-coreにも含まれている。KDE PIM、特にKmailがこれを必要とする。

nepomukを邪魔者と考える人もいて、停止するというやり方もあるようだが、私はとりあえずnepomukとnepomuk-coreをアンインストールして対処した。害がないとしてもこんなにトップを走りつづけるようなプロセスは困る。もっとも、このトップを走り続けることはbugらしいのだが。

さらに、fork bombは別件で、kblankscrn.kssというプロセスが大量にforkされる。これはどうやらブランクスクリーンのスクリーンセイバーに起因するらしく、これで検索すると非常に多くのbug報告があがる。

結局ふたつのbugが重なって勘違いした。システムがすぐに必要で調査のために停止させられなかったためシステムを再構築という方法をとったが、結果としてそれは失敗だった。調査を先にしていれば早く問題ないと分かり、復旧できただろう。

随分と苦労したのだが、顛末はこんなもの。漏洩がなくよかったのだが、なきたくもある。

EncMount

EncFSのマウントの引数が長くなりがちで面倒なので、エイリアス的に使えるスクリプトを書いてみた。githubで公開している。

#!/usr/bin/zsh

# This script needs encfs
if ! type encfs /dev/null
then
print "Encfs is no found." > 2
fi

typeset -A encmap # name, path, mountpoint mapping assoc.

# Check configuration file.
if [[ ! -f ~/.yek/encmap ]]
then
print "No mapping file." > 2
exit 1
fi

# Read the configuration file.
while read name epath dest
do
encmap[$name]="$epath::$dest"
done ~/.yek/encmap

# Decryption.
encfs ${encmap[$1]%::*} ${encmap[$1]#*::}

結構丁寧なコメントがついているので分かりやすいだろう。

EncFSディレクトリとマウントポイントをとる必要があり、しかも名前でアクセスするようにしたかったため、3要素となり多重配列の扱えないZshではやや難しい。2つの要素を::でつなぐことにより${…#…}${…%…}で取り出せるようにした。

コマンドやファイルについて検証もするため私としては丁寧なスクリプトだ。もちろん、公開のために配慮した。

Linuxトラブルとの格闘

15日、Manjaroが起動しなくなった。systemdが途中で沈黙してしまう、という症状だ。

systemdが、となるとそう簡単ではないため、とりあえずMageiaに戻ったのだが(もちろん、home directoryにおける様々な問題が生じた)、17日、そのMageiaに致命的な現象が生じた。

極めて重くなったため、topしてみると、nepomukfileindexなるプロセスが非常に激しく動いている。これはなんだ?

とりあえず再起動してみると、fork bombが発生した(konsoleが27 windows開いた)。nepomukのせいか!?

ファイルアクセスが激しいということはデータを盗み出す類のプロセスである可能性が高いと判断し、直ちにイーサネットケーブルを抜いて、別システムのインストールを行うことにした(今インシデントを扱える状況ではない)。

Manjaroを潰してSSDにMageiaをインストールすることにしたのだが、Btrfsが扱えない、LUKSをかけるとパスワードが入力できないなどのトラブルで何度も再インストールを余儀なくされた。

なお、Manjaroの再インストールもこの過程で何度もトライしているのだが、pacman-key –populateに失敗するためどうしようもなかった。どうもForumにあるこのケースと同様のようだが、相当苦戦しているで容易ならざることか。このフォーラムでも解決していないようだ。

特に注意してほしいのが、インストーラでキーボードレイアウトにJPを選ぶとJPキーボードでインストールされる。ところが、ログインするとその状態ではinput methodが何も設定されておらず、iBusはUSキーボードのレイアウトで入力させる。そのため、記号を含むパスワードを設定しているとキーボードレイアウトの違いからlogin incorrectとなる。

なお、KDMではJPキーボードでインストールしているのであれば自動的にJPキーボードの配列で入力することになり、ログインは通常通りできる。このことでだいぶハマった。

しかしセットアップしていくと、再びnepomukが顔を出す。何者なのだこいつ。

そこでrpm -qfしてみると、nepomuk, nepomuk-core, kde-coreに含まれていることが分かった。調べてみると、まっとうなプロジェクトで、それを積極的に利用している例がKDEだという。

ではあのfork bombとは別ものだったのか。あの妙な挙動は何だったのか。

分からないのだが、とりあえずは安心していいのだろうか。もちろん、virus checkもすませてあり、問題はほぼなかった。少なくとも懸念していた問題はみつからなかった。漏洩調査が必要だが、これはかなり難しい。また、汚染調査の追跡は、これから行うことになる。これもしばらくかかるだろう。パスワード変更作業などが迫っている。

ついでなので、インストール時点で/varを別に切りLVM上に置く、SSDにインストールするなどの懸案を片付けた。また、これまではhome directory(/homeとは別に、/home/user)にマウントしていたのだが、dor filesに非互換が生じることがあるため、この解決のために/home/user/shareにマウントするようにした。共有すべきdot filesをsymlinkにすることでdor filesなどの共有問題を解決し、基本的にはデータ共有とすることで問題及び影響を生じにくくした。

share下にあるディレクトリの設定上の問題(~/binなどでもある)が生じるため、従来通り~/localのpathを維持するため、~/localは../share/localのsymlinkとした。

今回の作業でよくわからない変化があった。

まず、gtk-query-updateをしてFirefoxで正常に日本語入力が可能になった。これまでなぜできないのか分からず様々な方策を試しているような状態だったのにだ。一方、meditはIMEは機能するが入力できない状態、つまり変換も確定もできない状態となっている。

AUR

ManjaroはArch Linuxからの派生であり、Arch Linuxのリポジトリを使用することができる。その中で大きなポイントとなるのがAURだ。

AURはArch wikiで次のように述べられている。

Arch User Repository (AUR) はコミュニティによって運営されている Arch ユーザーのためのリポジトリです。パッケージの詳細について書かれたファイル (PKGBUILD) が集められており、makepkg を使ってソースからパッケージを作り、それを pacman でインストールすることができます。コミュニティの手で新しいパッケージを共有することで、[community] リポジトリへの人気のあるパッケージの取り込みを促進することを目的に、AUR は作られました。

AURは十分なテストがされていないが、ソフトウェアは非常に豊富である。しかも、そもそもビルド手順を示したファイルを配布し、それに応じてビルド/インストールする仕組み(GentooやCRUXと同じ)であるため、配布の難しいパッケージを含めてAURには豊富に取り揃えられている。

pamacはAURをサポートする。AURを検索する、にチェックを入れて使用すればいい。だが、pamacでインストルすると必ずビルドに失敗した。

そこでyaourtを使ってみたところ、うまくいった。yaourtは対話的ツールであり、使い勝手はフロー上はpamacで行うのと大差ない。

まず、次のようにしておく必要がある。

# pacman -Syyu pacman -S base base-devel

その上で、まずは次のようにしてみた。

$ youart ttf-monapo

うまくいったので、JD(2ちゃんねるブラウザ)とlv(ページャ)、nkfをインストールしてみた。

AURはManjaroで利用可能なソフトウェアを大幅に増強し、Manjaroをより強力なディストリビューションへと変貌させる。

Manjaro Linux

ネットワーク関連のコマンドの欠如については、netstatは単独パッケージ、ifconfigはnet-toolsパッケージ、digはdns-utilパッケージに存在し、別途インストールが必要だ。

また、playコマンドがなくこちらはsoxパッケージ。fetchmailも入っていない。

かなりArch的というか、入っていて当然だと考えるようなものも入っていない傾向があるようだ。

KDE上ではうまく動作しないが、Octopiのグループインストールが便利だ。これによって必要なパッケージを一挙に導入できる。Archでの全部入り運用は邪道かもしれないが、そういう使い方にも適しているディストリビューションだと思う。

Compiz Fusionはいまいちうまく動かない。インストールしたが適切に動作しないため、アンインストールすることで対応した。パッケージグループの設定はいまいちな部分があり、一括インストールに不十分であることがあるほか、個別インストールと組み合わせると重複を指摘されてエラーとなる。

Manjaro固有のアートワークはほとんどないようだ。

Manjaroとの格闘

ManjaroのClaws Mail問題だが、pgpmimeの件については.claws-mailの設定の問題であり、全プラグインをアンロードした上でロードし直すことで正常に機能した。

akonadiが起動しない、という問題があり、これはかなり頭を悩ませている。akonadiが機能しないとかなり多くのKDEアプリケーションが動作しない。これからManjaro forumを参考にトライする予定だ。

SDカードがマウントできない、という問題もある。これはdmesgで見ると、

[160489.399344] sd 9:0:0:0: [sdg] Assuming drive cache: write through
[160489.401488] sdg: sdg1
[160491.793366] FAT-fs (sdg1): codepage cp437 not found
[160560.285928] sd 9:0:0:0: [sdg] 30867456 512-byte logical blocks: (15.8 GB/14.7 GiB)
[160560.287153] sd 9:0:0:0: [sdg] No Caching mode page found
[160560.287160] sd 9:0:0:0: [sdg] Assuming drive cache: write through
[160560.289035] sd 9:0:0:0: [sdg] No Caching mode page found
[160560.289038] sd 9:0:0:0: [sdg] Assuming drive cache: write through
[160560.291296] sdg: sdg1
[160585.511250] FAT-fs (sdg1): codepage cp437 not found

codepageを指定しても改善しない。

Catalystにオーバースキャンに関する設定項目自体がない、というのはどうしようもなくて困っている。aticonfigでもダメなようだ。

XFceの設定も若干おかしい。そのため、mv .config/xfce4 xfce4.bakしたうえで再起動し、さらにxfdesktopを別途インストールしてトライしたが、設定が変更できないなど不具合が残った。

Cinnamonはいつの間にかクラッシュしなくなっていた。

Manjaro Linux

Mageiaの代替として使いうる有力な選択肢としていたManjaroだが、Kaveriにおける問題点はXが起動しない、ということにある。他の多くのディストリビューションは起動しようとすると落ちてしまうため、可能性はかなりあるのだが、それでもXが起動しないのでは現実的に使えない。

今回はManjaroのwikiを参考にした。しかし、pacman -Syuが、PGP鍵が正しくないとして成功しない。無視してaticonfigやmhwd-kernelを実行しても失敗する。

結局のところ、Manjaro Forumの通りにいることで鍵のアップデートに成功し、その後はスムーズに進んだ。

Mageiaからの移行のため、Mageiaの/etc/fstabを参考に/etc/fstabを書き換える。また、usersグループのGIDがMageiaでは500、Manjaroでは100なので、Manjaroでvigr及びvipwして、usersグループのGIDを変更する必要があった。

fcitxなど必要なソフトウェアをインストールしていくが、問題もいくつか見つかった。

まず、Operaをインストールするが、Operaに対してIMが有効でない。また、Javaに対しても有効でない。デフォルトでfcitx-qt5がインストールされておらず、これをインストールしなければKDE4アプリケーションに対して入力ができない。これらの問題に加えてなぜかいつの間にかKDEアプリケーション起動時にibusが起動するようになり、日本語が入力できなくなった。これは、ibus-anthyをインストールしてもそれは変わらないし、ibusをアンインストールしてもfcitxを再インストールしても変わらない。

これについてはアドバイスいただき、.xprofileに次の記述をすることで解決した。

if uname -r | grep -i manjaro
then
export LANG=”ja_JP.UTF-8″
export XMODIFIERS=”@im=fcitx”
export XMODIFIER=”@im=fcitx”
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export DefaultIMModule=fcitx
fi

また、kernel 3.14に更新すると、Cinnamonが起動できなくなった。VLCもとてもよく落ちる。

さらに、Catalystにあるべきオーバースキャンの設定がなく、HDMIの表示が直らない。Catalystの実行ができたのに、非常に残念だ。しかし、Catalystのドライバーはさすがに優秀で、今までと比べ相当にストレスフリーな画面再生が可能だ。

.kde4にexecが含まれているとしてエラーになるため、.kde4をリネームする必要があった。

Mageiaと比べるとManjaro自身のパッケージも多く、しかもArchのパッケージも使えるためかなり便利だ。もちろん、eCryptFSも存在する。ただし、Manjaroのリポジトリには、lv, NKF, JDがないようだ。

Manjaroの全体の印象としては、例えばMageiaよりもフォントレンダリングが綺麗だったりして、全体的には「良い」感じがする。ただし、パッケージングシステムについては一部を自力で解決する必要があるなど、Mageiaと比べて少々手間がかかる。その分柔軟性は高いはずだが、PRMを使うMageiaと違い未知のパッケージングシステムなのでそれが活用できていない。

また、ネットワーク関連のコマンドが通常のものがほとんどないため、とても困ってしまう。ネットワークのGUI設定ツールはシンプルでわかりやすい。

入力は原則としてMozcで行う。Anthyもあるにはあるが、安定しない(そもそもfcitx-anthyが安定していないように思う)し、Anthyの変換効率が絶望的に悪い。Mageiaでもかなりよく、Momongaなど感動的なのだが、辞書の関連だろうか。一方、Mozcの変換効率がMageiaのものと比べてかなり良いため、そこはそれほど大きな不満があるわけではない。

ただし、どうしてもFcitxはuimと比べると安定性は大幅に劣る。ibusよりはだいぶマシだと思うが、それでも落ちることはあるし、フリーズもする。入力が暴走し、アプリケーションごと落とすしかなくなることも時々ある。

デザイン面におけるアドバンテージは特にないように思う。PCLinuxOSなどはかなりスタイリッシュだが、そうしたのと比べると普通だ。デスクトップ環境はXFceをメインとしているということだが、Cinnamonが使えないならばKDEだろうか。XFceがダメなわけではないのだが、ウィンドウエッジへのスナップなど機能が少々不足しているし、AmarokなどKDEアプリケーションを割と使うためだ。

とりあえずしばらく使って評価してみることにしよう。比較的ホームディレクトリ破壊影響は小さいように見える。

Recent Linux

Skype

8/3からSkypeにログインできないという障害が発生した。Skypeを起動し、ログインしようとするとSkypeは接続できませんでしたと表示され、loginを拒否されてしまう。

これは、MicrosoftがSkypeの仕様を変更したことに伴うものと─思われ、Windowsのほうでも何かがあったらしい(詳しくは知らない)。だが、Skype for Linuxでログインできない症状はかなり長引いた。

結局は8/7にSkype for Linuxが4.2から4.3に上がっていて(アップデートがこないかかなり気にしていたので、アップデートパッケージにSkypeが含まれていなかったことはかなり自信がある)、ログインできるようになった。詳しいことは不明だ。

Manjaro

Linuxがだいぶ更新が進んだはずだ、ということでKaveri対応のディストリビューションを再び探すことにした。最大の問題はやはりeCryptFSがないことだ。そのほかCryptsetup, EncFS, lv, NKF, w3mがないのもかなり痛い。

ManjaroでKaveriを使う記事がでていたので、それを参考にインストールしてみたが、pacman -Syuでアップデートしようとすると、xdg-suのPGP keyが信用できないとしてアップデートできない。この障害のために結局はどうしようもなく塩漬けだ。

AMDの公式なドライバのあるopenSUSEで問題なく動いているという報告があるため、openSUSEをもう一度試そうかとも思うのだが…

とりあえずはEncFSとNKFをインストールすることでその場をしのいだ。

EncFS on Mageia4 x86_64

Megaia4にEncFSパッケージがないので、自分で用意した。本当はeCryptFSが欲しかったのだが、どうも難しそうなので、EncFSでとりあえず代用。

まずはpbone.netでMageia5用EncFSのsrc.rpmパッケージを入手。そしてrpmbuild --rebuildしてみるが、

download/encfs-1.7.4-11.mga5.src.rpm をインストール中です。
警告: ユーザー iurt は存在しません – root を使用します
警告: グループ iurt は存在しません – root を使用します
警告: ユーザー iurt は存在しません – root を使用します
警告: グループ iurt は存在しません – root を使用します
エラー: ビルド依存性の失敗:
rlog-devel = 1.3 は encfs-1.7.4-11.mga4.x86_64 に必要とされています
fuse-devel = 2.6 は encfs-1.7.4-11.mga4.x86_64 に必要とされています
chrpath は encfs-1.7.4-11.mga4.x86_64 に必要とされています
boost は encfs-1.7.4-11.mga4.x86_64 に必要とされています

とうまくいかない。そこでrlog-devel, fuse-devel, chrpath, boostとそれに関わるものをインストールした上で試すと無事、encfs-1.7.4-11.mga4.x86_64.rpm, encfs-debuginfo-1.7.4-11.mga4.x86_64.rpm, lib64encfs6-1.7.4-11.mga4.x86_64.rpmの3つのパッケージが生成され、インストールできた。

比較的シンプルで汎用性のある暗号化ファイルシステムで、FUSEを使う分このようなケースにおいて取り扱いやすい。