アーカイブ

Archive for the ‘GNU/Linux’ Category

dnf system-upgrade 中に固まったシステムの復旧

5年モノくらいの Fedora27 環境を dnf system-upgrade していたところ、
ディスクを載せていた glusterfs が機嫌を損ねて固まってしまいリセットを余儀なくされました。

当然アップグレード中にそんなことをすればもろもろのライブラリバージョンの不整合で動かなくなるわけで・・・ Live DVD で起動してのシステム復旧を試みることに。

  1. Fedora29 Live DVDで起動
  2. /mnt/sysroot 以下に元々のルートファイルシステムをまるごとマウント
  3. fedora-release-27-1 を削除
    • 27と29が共存しているので、削除しないと dnf が  releasever=27 と設定してしまう
  4. dnf –installroot=/mnt/sysroot update
    • 最低限これで rpm が動くようになったので、rpm DB 上に f27 と f29 のパッケージが同居してしまっているものを処理します。(この時点でまだ中のdnfは動かない)
  5. dnf check –duplicate で重複パッケージをリストアップ
  6. chroot して f29 の方を rpm -e –nodeps –justdb で DB から削除
    • f29 を消せばとりあえず再度アップデートが走る状態になり、実在しているのがどちらのバージョンであろうと f29 版に上がってくれることが期待できます
  7. chroot を抜けて  dnf –installroot=/mnt/sysroot update をやりなおす
  8. 再起動

再起動してみたところ、dbus 周りがおかしそうでうまく起動しないのでもう一度 Live DVD 環境に戻って rpm -qa | grep dbus で出てきたパッケージを reinstall したら動くように。

ついでに dnf check で出てくるdependency brokenなパッケージを適切に処理してやって対応終了。

広告
カテゴリー:GNU/Linux

意図せず他人のサービスを乗っ取ってしまっている

とある都合でアクセスログを眺めていたときのこと。/event/xxxx の謎のアクセスログがいっぱい。

最初はwordpress狙いのいつものかと思ったらどうやら様子が違うようで、追いかけてみるとどうやらとあるドメインが anju.msmrrenda.net のIPアドレスを向いている模様。

現anju(2代目)は2017年夏ごろにanju(初代)のリプレース先として借りたさくらのVPSなので、おそらく以前使っていたユーザがレコードを残したままにしており、それがIPアドレスの使いまわしでうっかりこちらを向いてしまったようです。

これがただの自社サイトの残骸とかだったらバーカバーカで済んだのですが、サービス提供用ドメインでわずかながらリンクが貼られてしまっているため無関係な一般ユーザも知らずにこちらに流れてしまっています。

そんなわけで急遽トラフィック吸い込み用のバーチャルホストを追加、警告ページを表示しつつ410 GONEを返すだけのページを配置しました。

410はmod_rewriteのフラグに「G」と書けば出ますが、これだと単に標準エラーページが出るだけなので410用のカスタムエラーページ設定をかいてやります。

サービスを廃止するときはちゃんとレコード消したりしましょう・・・

カテゴリー:GNU/Linux

www.msmrrenda.net リプレース計画day2

いままではごちゃまぜに置いていた非公開ページを別ホストに分離しようとしてはまった件。

通常、公開用ページは ~/public_html に置きますが、ホームは全ホスト共有です。
したがって、非公開ページを ~/private_html に分離しました。

ところが、なにやってもcgiが呼び出せません。

Mar 4 22:22:24 ainya suexec[1158]: command not in docroot (/home/renda/private_html/env.cgi)

で、suexec -V とかしてみるとこんなことが書いてあります。

-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_SYSLOG
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"

public_htmlでしか動かないんかーい。
安全上このディレクトリ設定はハードコードされており変更できないようです。
選択肢は二つ。apache全体のリビルドか、バイナリ弄ってGORIOSHI。
ま、手間的に後者かな!!!!

public_htmlよりもprivate_htmlの方が1文字長いので、この際private_htmになっていただきました。が、なぜか動かない。

Mar 4 22:50:08 ainya suexec[1375]: uid: (500/renda) gid: (500/renda) cmd: env.cgi
Mar 4 22:50:08 ainya suexec[1375]: failed to setgid (500: env.cgi)

あれ?suidかsgidでもついてたかなん?と思い、他ホストと見比べます。cap2
cap3
パーミッションは変わらないけどなんか赤い。これはいったい・・・。最悪apacheのリビルドも覚悟し、srpmの中身を覗いてみたら・・・

%caps(cap_setuid,cap_setgid+pe) %attr(510,root,%{suexec_caller}) %{_sbindir}/suexec

そっかー。
cap1

# setcap 'cap_setgid,cap_setuid+ep' /sbin/suexec

したら動きましたとさ。善い子の皆さんは横着せずにapacheをrpmbuildしましょう・・・

カテゴリー:GNU/Linux タグ:

Fedora24以降こわれちゃったsakuraを治す

gnome-terminalがevilwm上で日本語入力できなくなってしまって以降愛用しているsakuraですが、Fedora24に上げた後からSegmentation Faultで上がってこなくなってしまいました。

このバグがFedora25でも治っていなかったので、しびれを切らして自分でrpmbuildしました。

  1. dnf install vte291する
  2. yumdownloader –source sakura でFedoraのsakuraのソースをダウンロード
  3. rpm2cpio sakura-3.2.0-2.fc24.src.rpm | cpioでばらしてsakura.specを取り出す
  4. 公式からsakura-3.4.4.tar.bz2をダウンロード、rpmbuild/SOURCESに置く
  5. Versionを3.3.4に書き換えて、BuildRequires: pkgconfig(vte-2.90)をvte-2.91にかきかえて、
  6. れっつrpmbuild -ba sakura.spec

以上、Fedora25向けにbuildした完成品はこちら
Fedora24では動作確認してませんが、原理上同様の修正で動くはずです。
specファイルだけの簡単な修正なのでSRPMは置いてませんが、欲しい方はお知らせください。

カテゴリー:GNU/Linux

dnfとrpmがsegmentation faultするようになったFedora23マシンをなんとかする

研究室で少し前に作ったデスクトップ環境にプリンタドライバを入れていなかったことに気付き、
canonのドライバを適当にdnfで突っ込んだ時に何らかの事故が発生。

どこかのライブラリが中途半端に更新されたのか、dnfとrpmがセグメンテーション違反で完全に動作しなくなりました。
「とりあえず何が原因か調べるかー」とgdb rpmをした瞬間、rpmを起動しようとしたgdbが死にます。
コアダンプを別のマシンに運んで検死を試みるもバージョン違いでうまく原因が特定できず。

原因はライブラリのバージョンが中途半端に更新されたことっぽいので、どうにか直そうとしてみます。
1. Fedora23のインストールディスクで起動。
2. グラフィカルインストーラが上がってきたらCtrl+Alt+F1でコンソールへ。
3. sda2にあるLVMをactivate
4. root filesystemを/mnt/tmpにマウント
5. /mnt/tmp/etc/yum.repos.d を /etc/yum.repos.dとしてコピー
6. dnf –installroot=/mnt/tmp –releasever=23 update
で、とりあえずなんかライブラリは更新されたっぽい。
chroot /mnt/tmp → rpmが落ちなくなったことを確認し、再起動。

教訓:何かを入れる前にはいったんdnf updateしましょう

カテゴリー:GNU/Linux タグ:

dnf-plugin-system-upgradeを入れたらdnfまるごと動かなくなった

2015年11月8日 1件のコメント

Fedora23導入第一陣としていつもどおりサブ機を犠牲にしようととりあえずdnf-plugin-system-upgradeを入れたところ、
dnfそのものが「プラグインの読み込みに失敗しました: system_upgrade」でこけるように。
パッケージのバージョンがまずかったかとdnf updateしようとしてもdnfが動かないのであわや詰みか、という状況に。

dnfとかyumとかfedupとかpreupgradeとかが動かなくなった時はとりあえずロケールをCにしてみるべし、
ということでとりあえずLC_ALL=C,LANG=Cにして再実行。例によって動いてしまいました。

プラグインのバグでdnf全体が動かなくなるの、これ設計としてまずいんじゃないかなぁ・・・

2015/11/8 22:50追記
この状態でdnf system-upgradeかけたら再起動ループになって上がってこなくなりました。
暫定対処としては
1. シングルユーザで上げる
2. カーネルオプションと/etc/locale.confをLANG=Cに設定して再起動
3. とりあえずアップグレードに失敗して元の環境は戻ってくる
という感じ。

2015/11/9 22:40追記
で、肝心のアップグレードは/etc/locale.confをLANG=Cにした状態で行うと成功しました。
あまりお勧めはしませんが、upgradeしたいだけなら以下の手順でとりあえず上がりはします。
1. /etc/locale.confの中身をコメントアウト
2. Cロケール環境下でdnf system-upgrade
3. 再起動、一応カーネルオプションのLANGも削っておく
4. ここでアップグレードされるはず
5. F23が上がってきたらlocale.confを戻す
Fedora23では日本語ロケールでもdnf全体がちゃんと動くようです。

2015/11/11 19:20追記
パッチが上がっていたのでRPMを作りました。バージョン番号0.7.0-2扱いにしてあります。

2015/11/17 13:55追記
パッチは不完全で、system_upgradeプラグインが一部のエラーメッセージを出そうとした時にクラッシュします。通常は問題ありません。
たとえば、fedup –iso とかやるとクラッシュします。

2015/11/22 12:00追記
不完全だった上記のパッチが数日前にrevertされたようです。完全なパッチが上がっており、0.7.1に向けて調整中の模様。

2015/12/14 15:50追記
0.7.1-1がリリースされていました。これをもって解決。

カテゴリー:GNU/Linux

raspberry pi 2でバスパワー駆動のUSB HDDを認識しなかった

Fedora22を動作させているraspberry pi 2にUSB HDDを接続したところ、
HDD側の基盤のパワーランプは点灯するもののdmesgにもlsblkにもlsusbにも表示されません。

どうしたもんかと調べてみるとpi2ではバスパワーでの1.2A給電に対応したもののデフォルトでは0.6A制限がかかっているとのこと。
/boot/config.txtにmax_usb_current=1と書くと1.2A出力モードになるようですが、もちろんそんな環境固有の設定ファイルはFedoraにはありません。
さらに調査を進めるとその設定はgpio38に連動しているということがわかりました。gpioコマンドはないのでsysfsを叩きます。


# echo 38 > /sys/class/gpio/export
# echo out > /sys/class/gpio/gpio38/direction
# echo 1 > /sys/class/gpio/gpio38/value

とりあえずrc.localに書いてみたものの、これ多分ローカルファイルシステムがマウントされた後に走るからfstabにusbhdd書いてもマウントされないんだよなぁ・・・

カテゴリー:GNU/Linux タグ: