mplayer で wmv 等を再生

freshrpm から mplayer, mplayer-skins, mplayer-fonts をインストールできるものの、このままだと wmv の一部(wmv9)は Windows 用の dll を流用しないと再生できない。codec は以下から詰め合わせを入手できる。

http://www.mplayerhq.hu/MPlayer/releases/codecs/

が、FC2 だと prelink が悪さしてこれらの dll を使って再生するとセグメンテーション違反で落ちる。MPlayer - Fedora Guideにある解決法で解決できた。

  • /etc/sysconfig/prelink の PRELINK_OPTS=-mR を PRELINK_OPTS="-m --no-exec-shield" に変更。
  • prelink -u -a で prelink を一度元に戻し、prelink -a -m --no-exec-shield で再度 prelink する。

exec-shield はセキュリティのためメモリレイアウトを変更する機能(参照:'Exec Shield' ── Linuxの新たなセキュリティ機構)。dll は特定のアドレスにマップしないといけないので mplayer に限らず Wine など Windows dll を使うソフトでは exec-shield されると落ちてしまうらしい。

でも特定のファイルだけ exec-shield なしに設定できればいいのに。/etc/cron.daily/prelink をいじればいいのかな?