Debian Wheezy - b

Wszystko związane z jądrem systemowym, sterownikami, sprzętem itp.
gora
Posty: 13
Rejestracja: 09 października 2009, 10:13

Debian Wheezy - błąd przy kompilacji jądra

Post autor: gora »

Witam.

Posiadam płytę główną Intel D2500cc ostatnio zainstalowałem Debiana Wheezy. Niestety, nie obsługuje mi prawidłowo karty graficznej co to znaczy? Brak możliwości oglądania filmów przez program mplayer gdyż procesor pracuje z obciążeniem 100%, a film jest odtwarzany w zwolnionym tempie.

Dlatego postanowiłem skonfigurować system zgodnie z instrukcją intela, która jest tutaj pod Ubuntu (brak instrukcji dla Debiana).

Kompilację jądra robiłem zgodnie z tym odnośnikiem dodając łatki z instrukcji intela.
Pobierałem różne wersje jądra od 3.1 i nowsze, na każdym występował ten sam błąd.

Kod: Zaznacz cały

drivers/staging/cdv/pvr/services4/srvkm/devices/sgx/mmu.c: In function
‘MMU_Alloc’:
drivers/staging/cdv/pvr/services4/srvkm/devices/sgx/mmu.c:1042:11: error:
‘sDevPAddr.uiAddr’ may be used uninitialized in this function
[-Werror=maybe-uninitialized]
drivers/staging/cdv/pvr/services4/srvkm/devices/sgx/mmu.c:983:20: note:
‘sDevPAddr.uiAddr’ was declared here
cc1: all warnings being treated as errors
make[4]: *** [drivers/staging/cdv/pvr/services4/srvkm/devices/sgx/mmu.o] Błąd
1
make[3]: *** [drivers/staging/cdv] Błąd 2
make[2]: *** [drivers/staging] Błąd 2
make[1]: *** [drivers] Błąd 2
make[1]: Opuszczenie katalogu `/usr/src/linux-3.2.45'
make: *** [debian/stamp/build/kernel] Błąd 2

Dodatkowo po kilku próbach szukałem na różnych forach i ustawiałem w pliku .config taką opcje jak:

Kod: Zaznacz cały

CONFIG_FRAME_WARN=0

Kod: Zaznacz cały

uname -a
Linux Phoenix 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux

Kod: Zaznacz cały

dpkg --print-architecture
i386

Kod: Zaznacz cały

dpkg -l | grep gcc
ii  gcc                                  4:4.7.2-1                          i386         GNU C compiler
ii  gcc-4.6                              4.6.3-14                           i386         GNU C compiler
ii  gcc-4.6-base:i386                    4.6.3-14                           i386         GCC, the GNU Compiler Collection (base package)
ii  gcc-4.7                              4.7.2-5                            i386         GNU C compiler
ii  gcc-4.7-base:i386                    4.7.2-5                            i386         GCC, the GNU Compiler Collection (base package)
ii  libgcc1:i386                         1:4.7.2-5                          i386         GCC support library

Kod: Zaznacz cały

dpkg -l | grep kernel
ii  kernel-package                       12.036+nmu3                        all          A utility for building Linux kernel related Debian packages.
ii  kmod                                 9-3                                i386         tools for managing Linux kernel modules
ii  libaio1:i386                         0.3.109-3                          i386         Linux kernel AIO access library - shared library
ii  libdrm-intel1:i386                   2.4.40-1~deb7u2                    i386         Userspace interface to intel-specific kernel DRM services -- runtime
ii  libdrm-nouveau1a:i386                2.4.40-1~deb7u2                    i386         Userspace interface to nouveau-specific kernel DRM services -- runtime
ii  libdrm-radeon1:i386                  2.4.40-1~deb7u2                    i386         Userspace interface to radeon-specific kernel DRM services -- runtime
ii  libdrm2:i386                         2.4.40-1~deb7u2                    i386         Userspace interface to kernel DRM services -- runtime
rc  linux-headers-3.2.44-yampress        01                                 i386         Header files related to Linux kernel, specifically,
rc  linux-image-3.2.44-yampress          01                                 i386         Linux kernel binary image for version 3.2.44-yampress
ii  nfs-kernel-server                    1:1.2.6-3                          i386         support for NFS kernel server
ii  rsyslog                              5.8.11-3                           i386         reliable system and kernel logging daemon

Kod: Zaznacz cały

 dpkg -l | grep build
ii  ant                                  1.8.2-4                            all          Java based build tool like make
ii  ant-optional                         1.8.2-4                            all          Java based build tool like make - optional libraries
ii  build-essential                      11.5                               i386         Informational list of build-essential packages
ii  gconf-service                        3.2.5-1+build1                     i386         GNOME configuration database system (D-Bus service)
ii  gconf2                               3.2.5-1+build1                     i386         GNOME configuration database system (support tools)
ii  gconf2-common                        3.2.5-1+build1                     all          GNOME configuration database system (common files)
ii  gnome-user-guide                     3.4.2-1+build1                     all          GNOME user's guide
ii  kernel-package                       12.036+nmu3                        all          A utility for building Linux kernel related Debian packages.
ii  libgconf-2-4:i386                    3.2.5-1+build1                     i386         GNOME configuration database system (shared libraries)
ii  libgconf2-4:i386                     3.2.5-1+build1                     i386         GNOME configuration database system (dummy package)
ii  libnautilus-extension1a              3.4.2-1+build1                     i386         libraries for nautilus components - runtime version
ii  libnet-daemon-perl                   0.48-1                             all          Perl module for building portable Perl daemons easily
ii  libreoffice-report-builder-bin       1:3.5.4+dfsg-4                     i386         LibreOffice extension for building database reports -- libraries
ii  libresid-builder0c2a                 2.1.1-14                           i386         SID chip emulation class based on resid
ii  linux-kbuild-3.2                     3.2.17-1                           i386         Kbuild infrastructure for Linux 3.2
ii  python-support                       1.0.15                             all          automated rebuilding support for Python modules
ii  tex-common                           3.15                               all          common infrastructure for building and installing TeX
Czy coś źle robię? Może nie mam doinstalowanej jakieś paczki?
Awatar użytkownika
Yampress
Administrator
Posty: 6416
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

A po co kompilować?

Wybrane jest złe wyjście wideo. Instalowałeś jakieś sterowniki dla karty grafiki?

Zainstaluj smplayer i przeleć po wszystkich sterownikach wideo i sprawdź:

http://img5.imageshack.us/img5/2139/42901882.png

Albo w konsoli na domyślnej wersji jądra.

Kod: Zaznacz cały

mplayer -vo xv jakisfilm.avi
mplayer -vo sdl jakisfilm.avi
mplayer -vo x11 jakisfilm.avi
 
I sprawdź gdzie jest niskie zużycie procesora

Poszedłeś nie w tą stronę, którą potrzeba.
gora
Posty: 13
Rejestracja: 09 października 2009, 10:13

Post autor: gora »

A po co kompilować?
Nie zagłębiałem się w szczegóły, po co dodatkowo te sterowniki gdyż myślałem, że ten przykład wystarczy.

Kolejne przykłady jakie mogę dodać to:

Strony fatalnie się odświeżają, brak obsługi opengl, brak obsługi dwóch monitorów. Zaznaczam, że dla Ubuntu sterowniki są w repozytorium i tam działało wszystko prawidłowo. Niestety ja jestem zwolennikiem Debiana (Ubuntu za często aktualizowane) przez co system jest mniej stabilny. Mój komputer dodatkowo pracuje jako ruter, więc nie mogę sobie pozwolić na długie przerwy w działaniu.
Wybrane jest złe wyjście wideo. Instalowałeś jakieś sterowniki dla karty grafiki?
Po zainstalowaniu zgodnie z Twoją wypowiedzią programu smplayer, wybierałem różne sterowniki tak jak na zrzutach ekranu. Tylko jeden w miarę działał.

Kod: Zaznacz cały

X11(powoli)

Niestety, też widzę jak odświeża się film - w Ubuntu wszystko było prawidłowo więc na winę samego sprzętu tutaj bym nie stawiał.

Na pozostałych sterownikach albo nie działało wcale albo działało jeszcze gorzej.
Informacyjnie, pliku xorg.conf w ogóle w systemie nie mam.

Nie instalowałem sterowników gdyż aby zainstalować prawidłowo te sterowniki najpierw muszę przekompilować jądro.

Raczej interesuje mnie problem dlaczego nie mogę skompilować tego jądra. Wtedy będę mógł dograć te sterowniki, a tak naprawdę również je skompilować gdyż są w postaci kodu źródłowego. Odnośnik podałem wcześniej.

Problemem już nie jest tylko karta grafiki tylko to, że na Debianie Wheezy nie można skompilować sobie swojego jajka.

Dlatego proszę o pomoc w kompilacji. Jestem ciekawy, czy inni też mają takie problemy na tej wersji Debiana.

Dodatkowo chcę poinformować, że na Debianie Squeeze kompilacja przebiegła prawidłowo. Jednak gdy używam jajka, które robiłem w Squeeze to jest gorzej niż jest teraz.
Awatar użytkownika
Rafal_F
Moderator
Posty: 2350
Rejestracja: 29 sierpnia 2008, 16:45

Post autor: Rafal_F »

Edytuj konfig jądra, czyli plik:

Kod: Zaznacz cały

/ścieżka_do_źródeł/.config

Znajdź linijkę:

Kod: Zaznacz cały

CONFIG_FRAME_WARN=1024
i zmień wartość na 0:

Kod: Zaznacz cały

CONFIG_FRAME_WARN=0
Teraz zobacz czy da się skompilować.

Jeżeli nie pójdzie, to wklej tu odnośnik do tej łatki, bo nie mogę jej znaleźć. Ostrzeżenia tego typu zdarzają się dość często i zazwyczaj nie są traktowane jak błędy.
gora
Posty: 13
Rejestracja: 09 października 2009, 10:13

Post autor: gora »

Edytuj konfig jądra, czyli plik:
Zgodnie z tym co napisałem na samym początku tak ustawiłem konfig i bez pozytywnego rezultatu.

Odnośnik do sterownika z łatką jest tutaj.
Awatar użytkownika
Rafal_F
Moderator
Posty: 2350
Rejestracja: 29 sierpnia 2008, 16:45

Post autor: Rafal_F »

gora pisze:Zgodnie z tym co napisałem na samym początku tak ustawiłem konfig i bez pozytywnego rezultatu.
Faktycznie, dużo tekstu.

Problemem jest przełącznik:

Kod: Zaznacz cały

Werror
który sprawia, że kompilator wszystkie ostrzeżenia traktuje jak błędy. Edytuj plik z łatką:

Kod: Zaznacz cały

.../src/cedarview-kernel-v1.0.3_bee.patch
i usuń linię 94:

Kod: Zaznacz cały

+    -Werror \
Teraz spróbuj nałożyć łatę i skompilować jądro.
gora
Posty: 13
Rejestracja: 09 października 2009, 10:13

Post autor: gora »

Niestety po usunięciu tego przełącznika nie można nałożyć łaty na jądro tylko 3 pliki tworzy. Gdy pozostawię ten przełącznik tworzy dużo więcej tych plików.

Kod: Zaznacz cały

patch -p1 < /root/patcher/cdv-gfx-drivers-1.0.3_bee/src/cedarview-kernel-v1.
patching file drivers/staging/cdv/Kconfig
patching file drivers/staging/cdv/Makefile
patch: **** malformed patch at line 260: diff --git a/drivers/staging/cdv/bc_video/bufferclass_video.c b/drivers/staging/cdv/bc_video/bufferclass_video.c

Moim zdaniem to nie kwestia przełącznika tylko funkcji (tym bardziej, że tu chodzi o alokowanie pamięci z tego co rozumiem kod), która była w Wheezy zaktualizowana albo zamieniona na inną. I teraz pytanie, jak to sprawdzić, bo pewnie trzeba poprawić kod związany z tą funkcją. Albo zrobić po prostu dla czegoś cofnięcie wersji. Tutaj pewnie musiałby się wypowiedzieć Programista sterowników. Bo po mimo, że znam C oraz C++ to ten kod jest dla mnie niejasny. Za wysokie progi jak dla mnie na razie.

Może ktoś ma jeszcze jakiś pomysł?
Awatar użytkownika
Rafal_F
Moderator
Posty: 2350
Rejestracja: 29 sierpnia 2008, 16:45

Post autor: Rafal_F »

Tu chodzi o problem w funkcji, którą próbujesz skompilować. W squeeze poszło bo masz inną wersję kompilatora (tak podejrzewam). Problemem jest jak wspomniałem przełącznik: http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html .

Nigdy nie bawiłem się z nakładaniem łatek, więc nie wiem jak to dokładnie działa. Ale z tego co widzę to linie są liczone i nie można ich sobie tak po prostu usuwać. Rozwiązań jest kilka (żadnego nie testowałem), to są rozwiązania alternatywne, nie rób po kolei:
1. Oprócz usunięcia linii 94. zmień linię 60 na:

Kod: Zaznacz cały

@@ -0,0 +1,199 @@
2. Zamiast usuwać linię 94 zmień ją na:

Kod: Zaznacz cały

+    -w \
lub:

Kod: Zaznacz cały

+    -Wno-error \
3. Nałóż oryginalny patch a następnie edytuj plik:

Kod: Zaznacz cały

.../drivers/staging/cdv/Makefile
i usuń problematyczny przełącznik:

Kod: Zaznacz cały

-Werror
gora
Posty: 13
Rejestracja: 09 października 2009, 10:13

Post autor: gora »

Chciałem bardzo podziękować za pomoc

Kod: Zaznacz cały

uname -a
Linux Phoenix 3.1.10-bygora #1 SMP Wed May 22 19:09:11 CEST 2013 i686 GNU/Linux
94 linię zmieniłem na:

Kod: Zaznacz cały

+    -Wno-error \
Na chwilę obecną jądro się skompilowało, system startuje ale bardzo dziwnie, tak na 1/4 monitora mam konsolę, a reszta monitora to dziwne kolorowe paski - jestem ciekaw, czy to wina jądra czy może parametrów, które powinienem dodać albo instalacji sterowników.
Zainstaluję te sterowniki i się wtedy wypowiem.

Na chwilę obecną mam takie parametry:

Kod: Zaznacz cały

cat /etc/default/grub  | grep -i default
GRUB_DEFAULT=0
GRUB_CMDLINE_LINUX_DEFAULT="quiet video=LVDS-1:d mem=4G vmalloc=256MB"
Awatar użytkownika
Yampress
Administrator
Posty: 6416
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

A masz zainstalowany xserver-xorg-video-intel?
http://packages.debian.org/wheezy/xserv ... ideo-intel
Pakiet dostarcza sterownik do serii chipsetów Intel i8xx i i9xx, w tym i810, i815, i830, i845, i855, i865, i915, i945 i i965.
Pakiet dostarcza również sterowniki XvMC (XVideo Motion Compensation) do chipsetów i810/i815 i i9xx oraz nowszych.
wykonaj polecenie

Kod: Zaznacz cały

dpkg -l  |grep intel
ODPOWIEDZ