Ubuntu Server14.04を実行しているキオスクスタイルのホストがあります。テレビのようないくつかのビデオを再生するように設定しようとしています。 Youtubeプレイリストやその他のWebベースのビデオストリーミングサービスなどを再生する必要がある場合があるため、ブラウザウィンドウが必要なようです。
この目的のために、デスクトップ環境なしでベアボーンX.orgをインストールしましたが、それは機能します。
ただし、管理はネットワーク経由で行われ、ホストはファイルとWebサーバー(これはホームプロジェクトです)を兼ねているため、セキュリティを少し意識しており、Xを非ルートとして実行したいと思います。私はすでにチェックしました https://wiki.ubuntu.com/X/Rootless 、しかしそれは時代遅れのようです:-nohwaccessでXを実行すると文句を言います:
/usr/bin/Xorg vt8 -retro -sharevts -nohwaccess -logfile /tmp/Xorg.U.log :1
...
Fatal server error:
(EE) Unrecognized option: -nohwaccess
フラグを外すと、開始しますがすぐに失敗します。
Loading extension GLX xf86EnableIOPorts: failed to set IOPL for I/O (Operation not permitted)
編集:おっと、私はどうやら読むことができません! Xorgが終了する致命的なエラーはそれではありません。xf86EnableIOPorts
警告の直後です。
(--) Depth 24 pixmap format is 32 bpp
Unable to retrieve master
Fatal server error:
[ 38106.045] (EE) AddScreen/ScreenInit failed for driver 0
Sudo
で実行しているのに対し、次のように出力されます。
(--) Depth 24 pixmap format is 32 bpp
RADEON(0): [DRI2] Setup complete
... and so forth.
許可の問題のようですが、ウィキの記事に記載されているすべての権利を設定しました。
videoplayer@yuunagi:/usr/bin$ ls -la /dev/tty8
crw-rw---- 1 videoplayer root 4, 8 1月 13 02:09 /dev/tty8
/dev/event/*
o + rwが設定されています。
ユーザーvideoplayer
はvideo
グループとaudio
グループの両方に属しています。
videoplayer@yuunagi:/usr/bin$ cat /etc/group | grep videoplayer
audio:x:29:videoplayer
video:x:44:videoplayer
videoplayer:x:999:
私がここで欠けているものは何ですか?
編集:ところで誰かが指摘する前に:私はKMSを有効にしました。カーネルログはそう言っています(DRMが機能しているオープンソースのRadeonドライバー)そしてX.orgログはそう言っています:[KMS] Kernel modesetting enabled.
Edit2:straceは次のことを明らかにします:
GPUデバイスファイルを開くと成功します。
open("/dev/dri/card0", O_RDWR) = 9
その後、次のように、そのファイルに続くioctrlが数十あります。
ioctl(9, 0xc0106407, 0x7fff66772190) = 0
そして、最後に続くioctl:
ioctl(9, TUNER_SET_CONFIG, 0x7fff667722b0) = 0
その後、失敗:
ioctl(9, 0x641e, 0) = -1 EACCES (Permission denied)
Unable to retrieve master
ところで。アクセスされたGPU開発ファイルには次の権限があります。
videoplayer@yuunagi:/usr/bin$ ls -la /dev/dri/card0
crw-rw----+ 1 root video 226, 0 1月 13 02:09 /dev/dri/card0
いくつかのDRIデバイスに依存することを簡単に推測します。また、PCIメモリ範囲などをいじくり回す能力にも依存する可能性があり、Xorgユーザーがそれらを読み取り可能にすると、Xを非rootにするよりもセキュリティに悪影響を及ぼします。したがって、Xを非ルートで実行してセキュリティを確保しても、実際にはセキュリティが向上しない可能性があります(明らかな攻撃をブロックすることで、攻撃をさらに困難にする可能性があると考えました。PCIレジスタを介してシステムを攻撃する方法を実際に知っているのは誰ですか?)
しかし、私が答えを見つける方法は、straceの下でXorgを実行することです。
strace -e trace = open、ioctl Xorg
次に、開こうとしているデバイスまたは失敗した操作を探します。 (私はそれがopenまたはioctlになると思いますが、syscallのリストを拡張する必要があるかもしれません)
私は同じ問題にぶつかりました(radeonでも)、そしてこれをXorgおよびカーネルソース。私の結論は、これは(おそらくこれまでに)呪われたsystemdなしでは機能しないということです。コードポインタについては、このアーカイブされた電子メールを参照してください。