web-dev-qa-db-ja.com

64ビットArchLinuxにAMDCrimsonをインストールするにはどうすればよいですか?

Linuxマシンに最新のAMDドライバーをインストールしようとしていますが、コンパイルすると、次のメッセージが表示されます。

modprobe:エラー: 'fglrx'を挿入できませんでした:モジュールに不明なシンボルがあるか、不明なパラメーター(dmesgを参照)が失敗しました。

私はBSDネイティブであるため、このLinuxのことはあまり得意ではないことに注意してください。

状況の詳細

  • Arch Linux、x86_64、リリース2016.01.01
  • カーネルバージョン:4.3.3-2
  • AMD Radeon R9 290x
  • クリムゾン、fglrx 15.302

これまでに完了

_kernel-headers_パッケージをインストールする必要があったため、最初はインストールスクリプトがEULA部分に到達していませんでした。この時点で、実際にインストールを開始できました。

スクリプトを実行するだけでエラーが発生しました:

_/usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:634:9: error: void value not ignored as it ought to be   
    len = seq_printf(m, "%d\n", major);
        ^
_

いくつかのマイナーなグーグルの後、私は この解決策 を見つけ、手動で実行しました_/usr/lib/modules/fglrx/build_mod/make.sh_

しかし、コンパイルは次のメッセージで終了しました。

_WARNING: "mtrr_add" [/usr/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined!
WARNING: "mtrr_del" [/usr/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined!
_

もちろん、警告を無視することになっているので、コンパイルされたモジュールをインストールするだけに進みました...結果として次のメッセージが表示されました。

modprobe:エラー: 'fglrx'を挿入できませんでした:モジュールに不明なシンボルがあるか、不明なパラメーター(dmesgを参照)が失敗しました。

Dmesgを確認すると、次の行が表示されます。

_[ 2848.332722] fglrx: module license 'Proprietary. (C) 2002 - ATI Technologies, Starnberg, GERMANY' taints kernel.
[ 2848.332725] Disabling lock debugging due to kernel taint
[ 2848.343063] fglrx: Unknown symbol mtrr_del (err 0)
[ 2848.343114] fglrx: Unknown symbol mtrr_add (err 0)
_

いくつかのグーグルは私をこのメールリストメッセージに導きます: https://patchwork.ozlabs.org/patch/510277/ それがどういうわけか悪いことに基づいてmtrr_add()の削除に言及します:

Mtrr_add()をアーキテクチャにとらわれないArch_phys_wc_add()に置き換えるための十字軍が完了しました。これにより、MTRRを使用する代わりに書き込み結合の実装(x86のPAT)が確実に利用されるようになります。十字軍が終わったので、ドライバーの直接MTRRアクセスを隠します。

それで、私は今何をすべきですか?

この時点でどのように進めるかわかりませんか? _mtrr_add_と_mtrr_del_を使用して関数を探して、ソースを比較する必要がありますか?適用すべきパッチはありますか?それはすべて大きな失敗であり、私はあきらめるべきですか?

1
teresko

おかげで @ DanielB コメント私はそれを動作させました

だから...私がしなければならなかったのは、古いkernel/xorgバージョンにダウングレードして、それがsticksであることを確認することでした(Arch Linuxは最先端を維持するように設計されていますが)。しかし、それは少しトリッキーでした。linux-4.2.5-1

コンソールで立ち往生していたので、古いパッケージを archive (具体的には:linux-4.2.5-1、linux-headers-4.2.5-1、xorg-server-1.17.4-)から手動でダウンロードしました。 2)。また、古いバージョンの xorg-drivers パッケージグループを入手する必要がありました。これらのパッケージを/var/cache/pacman/pkg/に配置し、コマンドpacman -U /path/to/package-file.pkg.tar.xzでダウングレードしました。

次に、Crimsonドライバーを再インストールし、aticonfig --initialを実行してxorg.confを生成します。

システムアップデートがすべてを偽造するのを防ぐために、/etc/pacman.configに次の2行を追加しました。

IgnorePkg   = linux linux-headers xorg-server
IgnoreGroup = xorg-drivers

これらの行willは、pacman -Syu ...を実行すると警告を生成するため、実際に忘れることはできません。新しいAMDCrimsonドライバーが登場したら、この一時的な機能を一時的に無効にすることができます。

そして、それは爆発しました...

pacman -Syuを実行して再起動した後、問題が発生しました(再起動時に初期化がスタックしました)。何が起こったのか完全にはわかりませんが、私がしたことは次のとおりです。

  • install-usbから起動
  • プライマリパーティションでArch-chrootを実行します
  • sddmを無効にする
  • リブート
  • crimsonを再インストールし、xorg.confを再生成します
  • sddmを有効にする

これで修正されました。さまざまなログを読んで収集したのは、更新後、fglrxモジュールがカーネルを再び汚染し、Xorgが失敗し、systemd-logindがSDDMに到達できなくなったことです。そして、OSの合理的な部分として、systemdはtits-upすべてをロックしました(キーボードが応答していませんでした)。

1
teresko