No available modular metadata for modular package
fedora33 のしばらく放置してた環境を update しようとしたら No available modular metadata for modular package というエラーがいっぱいでて上がらなくなった。
modular 周りの仕様が変わったのか、updates-modular 周りのパッケージ更新が失敗する状態だったのでいったん dnf update dnf で dnf のみをアップデートすると動くようになる。
(常時起動機は自動更新かけてるけど wsl とかだとついつい更新わすれてしまう・・・)
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しましょう
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書いてもマウントされないんだよなぁ・・・
Fedoraからandroidデバイス(MTPモード)をマウントする
FedoraからAndroidデバイスはデバッグモードでしかつないでいませんでしたが、
MTPでデータを取り出す必要がでてきたので調査。
simple-mtpfsがユーザランドだけで使えて便利そうな感じ。
simple-mtpfsのインストール
# dnf install simple-mtpfs
マウント
$ simple-mtpfs -l
1: Google Inc (for LG Electronics/Samsung)Nexus 4/5/7/10 (MTP)
$ simple-mtpfs --device 1 ~/mnt/usb
デバイス指定はひとつだけの場合は不要。
アンマウントはsshfs同様にfusermount -u で。
日本語もちゃんと表示されています。
Fedora18でノートPCを閉じた時の挙動を変える
旧ノートをバックアップサーバーとして活用するべくFedora18をクリーンインストールしました。
昔は画面を閉じてもサスペンドに入らなかったのですが、Fedora18では蓋を閉じるとスリープしてしまいこれではサーバーにならん。
ということで設定を変えました。
日本語の情報が尽く古く、systemd以前の情報しか出てこないのですが、最近のFedoraでは
/etc/systemd/logind.confで、
HandleLidSwitch=ignore
にすれば良いようです。
systemd-logindをrestartして画面を閉じてスリープしないことを確認。
Fedoraの389 directory serverではまった点各所
・Fedoraの389 directory serverはSSLがないとパスワードの変更を受け付けてくれない
→http://directory.fedoraproject.org/wiki/Howto:SSL を参考にSSLを導入
・serviceやsystemctlでdirsrvをrestartするとパスフレーズを聞いてこない上、「パスフレーズちげーよ」と言われて起動に失敗する
[27/Feb/2013:00:31:48 +0900] - ERROR: SSL Initialization Failed.
[27/Feb/2013:00:33:10 +0900] - SSL alert: Security Initialization: Unable to authenticate (Netscape Portable Runtime error -8177 - The security password entered is incorrect.)
→restart-dirsrvで再起動すると聞いてきた
・pam.dとか直接いじってもうまく行かなかった
→authconfig-tuiでやること
・uid1000未満のユーザーはsshが認められないらしい(orパスワード認証?)
→authconfigで全部設定した後に/etc/pam.d/でgrep 1000 *し、おもむろに全部500に書き換えたらuid500でもログインできた
wineで音が出なくなってたのを直した
いつからかwineでサウンドドライバが動かなくなってた。
エラーはこんな感じ。
err:mmdevapi:DllGetClassObject Driver initialization failed
とりあえずそのまんまfedoraのbugzillaに突っ込んだところ
https://bugzilla.redhat.com/show_bug.cgi?id=747735
がヒット。
コメント3にしたがってレジストリを直したら今度はノイズが。
音が出ない問題をあさってた時に見た記憶があったのでbugzillaを探し直す。
https://bugzilla.redhat.com/show_bug.cgi?id=783699
に従ってpasuspenderを通してからwineを起動すると大丈夫。
しかし困ったなこりゃ。
Fedora16のLXC内にSL6.2を入れてみる
まあ、基本的にはうまく行くよね。問題が起こるとすればkernelのバージョンを見ているプログラムとかか。(3系なので。)
・ホストFedoraの/etc/yum.repos.dにsl.repoを突っ込む
disableにしておきましょう、忘れた頃に事故ると悲惨なことになります。
あと、GPGKEYがないと怒られるので入れるかチェックを無効に。
$releaseverは6.2に置換しておきます。
・yum –installrootを使ってLXC用ディレクトリにインストール
だいたいFedoraといっしょ。Fedoraのリポジトリをdisablerepoするのを忘れずに。
yumとか入れとくこと。
・chroot
・この状態でSLのrpmを使うとエラーが出る(/var/lib/rpm/Nameが壊れてるとかなんとか)ので、
該当ファイルを削除してrpm –rebuilddb
・/etc/rc.d/rc.sysinitを適宜修正
– /sbin/start_udevを削除しないとptyが上書きされてrequest failになるっぽい
かんせい。
続・FedoraでLXCためしてみた ネットワーク編
前回はLXCで作成したコンテナをホストと同じネットワークに繋いだので、
今度はホストをゲートウェイとして、仮想的なネットワークに突っ込んでみた。
基本的には物理ネットワーク2本でルータを構築するのと同じ。
コンテナの作成自体は前回と同じなので省略。
ホストのネットワーク構成に違いがあり、eth0をbr0に含めないのがポイント。eth0にはそのままipアドレスを割り当てたままにし、br0にはbr0で別個にipアドレスを割り当てる。
以下、ホストの外側(eth0)ipアドレスが192.168.1.21、ブリッジのipアドレスが192.168.3.1、コンテナが192.168.3.2。
/etc/sysctl.confでipv4フォワードを有効にするのをお忘れなく。
/etc/sysconfig/iptables
*nat -A POSTROUTING -o eth0 -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -i br0 -o eth0 -j ACCEPT -A FORWARD -p icmp -j ACCEPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
コンテナ側でroute add default gw 192.168.3.1を書いて完成。
これだけだと外からアクセスできないので、ホストのポート2222にアクセスするとコンテナのsshに繋がるようにしてみた。
ついでなのでインターフェイス毎にチェインを分離。
複数個のコンテナを動かすならさらにFORWARDを-dでさらに分離してもいいかもしれない。
*nat -A PREROUTING -p tcp --dport 2222 -i eth0 -j DNAT --to 192.168.3.2:22 -A POSTROUTING -o eth0 -s 192.168.3.0/24 -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -N HOST_INPUT -N HOST_FORWARD -N GW_INPUT -N GW_FORWARD -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -i eth0 -j HOST_INPUT -A INPUT -i br0 -j GW_INPUT -A HOST_INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A HOST_INPUT -j REJECT --reject-with icmp-host-prohibited -A GW_INPUT -j REJECT --reject-with icmp-host-prohibited -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -p icmp -j ACCEPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT -A FORWARD -i eth0 -j HOST_FORWARD -A FORWARD -i br0 -j GW_FORWARD -A FORWARD -j REJECT --reject-with icmp-host-prohibited -A HOST_FORWARD -o br0 -p tcp -d 192.168.3.2 --dport 22 -j ACCEPT -A HOST_FORWARD -j REJECT --reject-with icmp-host-prohibited -A GW_FORWARD -j ACCEPT COMMIT
ちなみに、コンテナ用のフィルターはどこに書くの?と思ったらコンテナ内部からiptablesを使えるようです。
これは複数コンテナとブリッジで仮想ネットワーク&ルータを作りたい放題ということか!
/* Fedora17のalphaでやったらどうやってもプロセスが分離されなかったんだがどういうことだろうか・・・
追記:Fedora16の別環境でやっても分離されない・・・何故だ・・・
さらに追記:procをホスト環境からマウントするとこうなるらしい、lxc.mountのfstabに書かれたファイルからprocがマウントされると正常になる。
*/