페도라에서 ATI 드라이버 설치 성공하신 분 계신가요??

freesky의 이미지

Fedora Core 3에 커널 2.6.10(페도라 RPM이 아닌 www.kernel.org에서 받은 것)을 쓰고 있습니다.

그래픽카드는 Radeon 9600XT를 쓰고 있고요..

ATI 그래픽카드 드라이버가 나왔다고 하길래...

ATI 홈페이지에서 내려받아 설치해보았습니다.

참고한 사이트는 아래입니다.

http://www.fedoraforum.org/forum/showthread.php?postid=154347#poststop

그런데 드라이버가 제대로 작동이 안 되네요...

혹시 드라이버 설치하신 분 있으시면 가르침을 받고자 합니다.

좀 가르쳐주세요...

Necromancer의 이미지

2.6.10일 경우는 아래에 어떤분이 글을 다셨습니다. 헤더파일을 좀 수정해야 합니다.

http://bbs.kldp.org/viewtopic.php?t=50413

저의 경우(2.6.11-rc1)는 아예 커널패닉을 내고 뻗더군요. OTL

Written By the Black Knight of Destruction

atie의 이미지

자세한 것은 이 링크를 참조하시고,
http://www.fedoraforum.org/forum/showthread.php?postid=121967#poststop
여기서,
http://rpm.livna.org/fedora/3/i386/RPMS.unstable/
ati-fglrx, ati-fglrx-devel, kernel-module-fglrx rpm을 받아 설치해 보시죠. (직접 해보지는 않았습니다.)

소스 파일은 http://rpm.livna.org/fedora/3/i386/SRPMS.unstable/ati-fglrx-8.8.25.1-0.lvn.4.3.src.rpm
이니, 직접 rpm 빌드하셔도 될테고요.

패키지는 testing과 unstable에서 왔다갔다 하는가 봅니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

freesky의 이미지

계속 실패입니다.. 사실 위에 써 놓으신 링크의 글은 이미 읽었고요...

제가 한 벙법을 설명하죠. 혹시 잘못된 것이 있으면 고쳐주세요..

1. #rpm -Uvh --force fglrx_6_8_0-8.8.25-1.i386.rpm을 실행하여 드라이버 설치..

2. 아래의 소스 코드를 /usr/src/linux-2.6.10/include/linux/pci.h에 추가
static inline struct pci_dev *pci_find_class ( unsinged int class , struct pci_dev *from )
{
struct pci_dev * temp = pci_get_class ( class , from );
return temp;
}

그런데 위의 소스코드가 약간 잘못되었습니다.
unsinged ---> unsigned 으로 바꾸고,
그리고 마지막 } 의 끝에 ; 을 붙여야 합니다.
혹시 모르시는 분들에게 도움이 될까 해서 씁니다.

3. #cd /lib/modules/fglrx/build_mod 으로 가서 실행퍼미션을 주고 ./make.sh를 실행... 컴파일은 잘 되었습니다.

4. #cd /lib/modules/fglrx에서 역시 실행퍼미션을 주고./make_install.sh를 실행... 설치 잘 되었습니다.

5. fglrxconfig를 실행... 마우스, 모니터 항목 제대로 선택하고 나머지는 기본값 선택

6. xorg.conf를 백업하고 XF86Config-4를 xorg.conf로 변경..

7. 재부팅 후 #modprobe fglrx를 실행

이렇게 했는데 fgl_glxgears를 실행하면 아래
와 같은 메시지가 나옵니다.

X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 142 (GLX)
Minor opcode of failed request: 5 (X_GLXMakeCurrent)
Serial number of failed request: 32
Current serial number in output stream: 32

fglrxinfo를 실행하면 다음과 같이 나옵니다.

display: :0.0 screen: 0
OpenGL vendor string: Mesa project: www.mesa3d.org
OpenGL renderer string: Mesa GLX Indirect
OpenGL version string: 1.2 (1.5 Mesa 6.1)

페도라 포럼에서의 말로는 위의 내용이 라데온 관련으로 나와야 한다는데 그렇게 안되네요... 아... 리눅스는 드라이버 설치도 왜 이리 힘들까요??

올해에는 꼭 노트북이 생기게 해 주세요.

freesky의 이미지

방금 전 ati 드라이버를 rpm으로 설치했습니다.

역시 안 되네요..

fgl_glxgears를 실행해도 위와 같은 메시지만 뿌립니다..

그냥 써야겠습니다...

답변 달아주신 분들 감사합니다.

올해에는 꼭 노트북이 생기게 해 주세요.

삶의여유의 이미지

저는 데비안(시드)에서 커널 2.6.10 을 컴파일해서 쓰는데 저 역시 모듈이 안 올라오는 문제가 있더군요.
제가 찾은 방법은 ATI 드라이버 부분에서 agpgart_be.c 를 수정하는 겁니다.

구글에서 예전에 찾아 저장해둔거라 정확한 출처는 모르겠구요.
데비안에서도 어짜피 rpm 패키지 가져다 수정해서 데비안 패키지에 맞게 수정해서 쓰는 것이니
데비안 (http://debianusers.org ) 홈페이지의 문서 -> 4.6 하드웨어 부분을 참고해보세요.

-------------------------------------------------------------------

--- agpgart_be.c 2004-08-21 17:25:05.000000000 +0200
+++ agpgart_be.c_ 2004-10-23 19:15:33.000000000 +0200
@@ -718,7 +718,7 @@
* AGP devices and collect their data.
*/

- while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
+ while ((device = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8,
device)) != NULL) {
pci_read_config_dword(device, 0x04, &scratch);

@@ -839,7 +839,7 @@
* command registers.
*/

- while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
+ while ((device = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8,
device)) != NULL) {
pci_read_config_dword(device, 0x04, &scratch);

@@ -5068,7 +5068,7 @@
* AGP devices and collect their data.
*/

- while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
+ while ((device = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8,
device)) != NULL) {
pci_read_config_dword(device, 0x04, &scratch);

@@ -5166,7 +5166,7 @@
* command registers.
*/

- while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
+ while ((device = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8,
device)) != NULL) {
pci_read_config_dword(device, 0x04, &scratch);

@@ -6418,7 +6418,7 @@
struct pci_dev *dev = NULL;

// locate host bridge device
- if ((dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, NULL)) == NULL)
+ if ((dev = pci_get_class(PCI_CLASS_BRIDGE_HOST << 8, NULL)) == NULL)
return -ENODEV;

agp_bridge.dev = dev;
@@ -6935,7 +6935,7 @@
&agp_bridge.mode);
return hp_zx1_setup(dev);
}
- dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, dev);
+ dev = pci_get_class(PCI_CLASS_BRIDGE_HOST << 8, dev);
} while (dev);
return -ENODEV;
}

-------------------------------------------------------------------

atie의 이미지

위의 링크된 livna src.rpm의 2.6.10 패치는 다음과 같습니다. 그러니, rpm으로 시도를 해보는게 좋을 듯 합니다.

--- agpgart_be.c 2005-01-06 9:05:02.000000000 +0100
+++ agpgart_be.c 2005-01-06 9:19:16.000000000 +0100

@@ -255,6 +255,12 @@
 }
 #endif
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10) 
+#define firegl_pci_find_class(class,from) pci_get_class(class,from)
+#else
+#define firegl_pci_find_class(class,from) pci_find_class(class,from)
+#endif
+
 int agp_backend_acquire(void)
 {
 	if (agp_bridge.type == NOT_SUPPORTED) {
@@ -718,7 +724,7 @@
 	 *        AGP devices and collect their data.
 	 */
 
-	while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
+	while ((device = firegl_pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
 					device)) != NULL) {
 		pci_read_config_dword(device, 0x04, &scratch);
 
@@ -794,6 +800,13 @@
 				command &= ~0x00000001;
 		}
 	}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10) 
+            // the reference count has been increased in agp_backend_initialize.
+        if (device)
+            pci_dev_put(device); 
+#endif
+
 	/*
 	 * PASS2: Figure out the 4X/2X/1X setting and enable the
 	 *        target (our motherboard chipset).
@@ -839,8 +852,9 @@
 	 *        command registers.
 	 */
 
-	while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
+	while ((device = firegl_pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
 					device)) != NULL) {
+
 		pci_read_config_dword(device, 0x04, &scratch);
 
 		if (!(scratch & 0x00100000))
@@ -871,6 +885,12 @@
         }
 	}
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10) 
+            // the reference count has been increased in agp_backend_initialize.
+        if (device)
+            pci_dev_put(device); 
+#endif
+
     return 0; /* success */
 }
 
@@ -5119,8 +5139,9 @@
 	 *        AGP devices and collect their data.
 	 */
 
-	while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
+	while ((device = firegl_pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
 					device)) != NULL) {
+
 		pci_read_config_dword(device, 0x04, &scratch);
 
 		if (!(scratch & 0x00100000))
@@ -5187,6 +5208,13 @@
 				command &= ~0x00000001;
 		}
 	}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10) 
+            // the reference count has been increased in agp_backend_initialize.
+        if (device)
+            pci_dev_put(device); 
+#endif
+
 	/*
 	 * PASS2: Figure out the 4X/2X/1X setting and enable the
 	 *        target (our motherboard chipset).
@@ -5217,8 +5245,9 @@
 	 *        command registers.
 	 */
 
-	while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
+	while ((device = firegl_pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
 					device)) != NULL) {
+
 		pci_read_config_dword(device, 0x04, &scratch);
 
 		if (!(scratch & 0x00100000))
@@ -5249,6 +5278,12 @@
         }
 	}
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10) 
+            // the reference count has been increased in agp_backend_initialize.
+        if (device)
+            pci_dev_put(device); 
+#endif
+
     return(0); /* success */
 }
 
@@ -6494,10 +6529,10 @@
     // locate host bridge device
 #ifdef __x86_64__
     do {
-        dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, dev);
+        dev = firegl_pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, dev);
     } while((dev) && !agp_check_supported_device(dev));
 #else
-    if ((dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, NULL)) == NULL)
+    if ((dev = firegl_pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, NULL)) == NULL)
         return -ENODEV;
 #endif
 
@@ -7040,8 +7075,12 @@
                     &agp_bridge.mode);
 				return hp_zx1_setup(dev);
 			}
-			dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, dev);
+			dev = firegl_pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, dev);
 		} while (dev);
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10) 
+                if(dev) pci_dev_put(dev);
+#endif
 		return -ENODEV;
 	}
 #endif	/* __ia64__ */
@@ -7462,6 +7501,11 @@
 	agp_bridge.free_gatt_table();
 	vfree(agp_bridge.key_list);
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10)
+        // decrease the reference count.
+        pci_dev_put(agp_bridge.dev);
+#endif
+
 	if (agp_bridge.needs_scratch_page == TRUE) {
 		agp_bridge.scratch_page &= ~(0x00000fff);
 		agp_bridge.agp_destroy_page((unsigned long)


--- firegl_public.c 2005-01-06 9:05:02.000000000 +0100
+++ firegl_public.c 2005-01-06 9:19:16.000000000 +0100
@@ -88,6 +88,7 @@
 #include <linux/smp_lock.h>
 // newer SuSE kernels need this
 #include <linux/highmem.h>
+#include <linux/pagemap.h> // for lock_page and unlock_page
 
 #if defined(__ia64__)
 #include <linux/vmalloc.h>

----
I paint objects as I think them, not as I see them.
atie's minipage

djlosi의 이미지

저도 fc3에 9600XT를 사용하고있습니다.

UseInternalAGPGART 항목을 no 나 yes로 설정후 재부팅해보시실바랍니다.
(여러가지 삽질을 해보다가 알아냈습니다..-_-;)

저의 경우 UseInternalAGPGART 항목이 yes로 되어있으면 다이렉트렌더링이

ati로 잡히질안았습니다. (다른 fc2에서도 마찬가지였습니다.)

현재 fc3에서 마야를 돌리고있는데 드라이버상의 버그인지

원근법뷰로 전환시킨후 모델링을 할려면 뷰포트에서 오브젝트가 사라지는 버그가 있더군요.. 스페이스바로 전환하면 잘나옵니다...

망할 ATi.... -_-

neogeo의 이미지

ati driver 는 제가 gentoo 에서 잘 깔아 쓰고 있습니다.

우선 ati-driver 에 내장된 config 으로는

정확하게 잡히진 않습니다.

저같은경우 xorg.conf 를 손으로 다시 수정합니다.

특히 PCI 2:0:0 부분이 문제더군요. ( 2:0:1 은 잘못된 ID 였습니다. )

간략하게 설정법을 말씀드리겠습니다.

또 위에 쓰신 걸로는 gl 이 바로 잡히지 않습니다.

glchange 하는 utility 를 이용하여야 합니다. ( opengl-update ati )

그리고 gentoo 해외 forum 에서는 다음과 같은 방법을 권유합니다.( 전 이렇게 하니 잘 되더군요 )

- 커널컴파일시 agpgart , nvidia_agp ( 각 보드 agp 드라이버죠 ) , fglrx ( 이건 ati driver 에서 붙는 모듈입니다. ) rtc 를

반드시 "모듈" 로 지정해야 합니다. ( 당연히 kernel 2.6 기준입니다 -_- automodule 도 세팅해주셔야겠지요. 부팅시에 뜨도록. )

성공결과물은

http://usr.gentoo.or.kr/forum/read.php?table=tip&no=3753&page=1&PHPSESSID=3cc33142d0ecc1684a8984ce116a7560

이렇게 동작 잘 합니다.

gentoo 에서는 바로 제가 깔고 몇시간 후에 ebuild 가 올라오더군요

그걸로도 매우 잘 잡혔습니다.

Neogeo - Future is Now.

freesky의 이미지

제가 며칠동안 어디 갔다온다고 KLDP에 들르지 못했는데 많은 답변이 올라왔네요..

역시 ATI에 대한 리눅스 사용자들의 원성이 심한 것을 뜻하는 것인지.. :?

djlosi님...

UseInternalAGPGART라는 항목이 어디에 있나요...?

잘 모르겠네요...

올해에는 꼭 노트북이 생기게 해 주세요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.