TechLife devBlog

Arch i aktualizacja jądra

Internet 24th Oct 2007

Wczoraj mój laptopowy Arch Linux zrobił mi niezłe kuku. Po aktualizacji jądra dystrybucyjnego z 2.6.22 na 2.6.23 wysiadły mi sterownik do karty sieciowej Attansic L2. Niby logiczne, bo był kompilowany dla poprzedniego jądra, ale problem w tym, że z nowym za nic nie chciał działać. Kompilacja wysypywała się na czymś takim jak eth_copy_and_sum. W dzisiejszych dystrybucjach, które całe oprogramowanie przechowują w sieci awaria karty sieciowej to niezły strzał w kolano. Jedynym wyjściem było włożenie płytki instalacyjnej, usunięcie jądra 2.6.23 przez

# pacman -Rd kernel26 (nie sprawdzaj zależności)

i instalacja starszego jądra przez

# pacman -A /sciezka/do/pakiety

Oczywiście to samo należy zrobić z nagłówkami jądra (kernel-headers). Dzięki temu niby wszystko wróciło do normy, niby bo teraz z kolei nie działają sterowniki do grafiki — fglrx (karta Radeon Xpress 1100) — które to w nowszej wersji wymagają już jądra 2.6.23 Póki co nie wiem czy jest możliwość zainstalowania starszej wersji pakietu tak jak można to zrobić w Gentoo i zamaskować nowszą wersję.

BTW. trochę nie podoba mi się to, jak Arch zarządza jądrem. Aktualizacja sama wywaliła poprzednią wersję jądra zastępując ją nową, dzięki czemu nie mamy w Grubie już możliwości odpalenia systemu jeszcze z poprzednią wersją jądra. Ojj nieładnie :-/

EDIT: sytuacja opanowana

Komentarze z jogger.pl

AdamK 24.10.2007 / 13:34

To się stare jądro trzyma na wszelki wypadek. Jeden reboot i można w sieci poszukać rozwiązania problemu.

fixxxer 24.10.2007 / 14:23

Myślę, że Tomkowi chodziło o to, że domyślnie Arch wyrzuca stare jądro. Gentoo domyślnie slotowało, nie wymagając od użytkownika żadnego ‘szukania rozwiązania problemu’. :)

trójkąt 24.10.2007 / 17:25

Jako rzecze fixxxer.

rlblaster 31.10.2007 / 02:21

I don’t know what is exactly written here (I don’t speak Polish), but I had the same issue:
Arch + 2.23 kernel + Attansic L2 lan driver compilation.

After hours of googling I found out that the eth_copy_and_sum was just a simple memcpy in the kernel 2.21 (I guess it was a deprecated function and removed from the new one).

So inserting

void eth_copy_and_sum(struct sk_buff *dest, unsigned char *src, int length, int base)
{ memcpy(dest->data, src, length);
}

to at_main.c does the trick.
After compiling the driver worked like charm.

I hope that helps for others.

PS: Sorry for disturbing the force in your blog.

zasm 04.09.2008 / 23:42

jezeli nie czysciles pacmana #pacman -Scc
to wszystkie sciagniete pakiety znajdziesz w /var/cache/pacman/pkg
tak na przyszlosc;)



Komentarze