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
To się stare jądro trzyma na wszelki wypadek. Jeden reboot i można w sieci poszukać rozwiązania problemu.
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’. :)
Jako rzecze fixxxer.
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.
jezeli nie czysciles pacmana #pacman -Scc
to wszystkie sciagniete pakiety znajdziesz w /var/cache/pacman/pkg
tak na przyszlosc;)