Przerzuciłem właśnie stare API na Django. Nie obyło się bez małych zmian. Zrezygnowałem z wyboru formatów text/json/xml i zostawiłem wyłącznie JSON-a. Z formatami jednak za dużo jest zabawy, bo co prawda Django samo potrafi przerzucić QuerySet do XML-a czy JSON-a jednak robi to strasznie dziwnie, ponieważ do wyjściowego formatu dokłada takie rzeczy jak klucz obiektu czy nazwę modelu z jakiego pochodzi. Nie bardzo wiem komu takie coś jest potrzebne no a wywalić nie ma jak. O czym mówię? Weźmy np. listę kategorii.

def api_categories(request):
data = Category.objects.all().order_by('name')
json = serializers.serialize("json", data)
return HttpResponse(json, mimetype="text/javascript")

Logiczne wydawałoby się, że na wyjściu zobaczymy:

[
{"name": "No"}, 
{"name": "app-accessibility"},
...
]

Ale pojawia się:

[
{"pk": 107, "model": "packages.category", "fields": {"name": "No"}}, 
{"pk": 1, "model": "packages.category", "fields": {"name": "app-accessibility"}},
...
]

I po co to komu?

Wracając do Pacnetu… Przy okazji wdrożenia API odgrzebałem moje nieudolne próby napisania menadżera pakietów (Python+PyGTK) operującego na API Pacnetu.

code.google.com/p/gpacnet/

Podstawowa funkcjonalność, czyli przeglądanie i instalowanie pakietów podzielonych wg. kategorii działa. Więcej na chwilę obecną (np. wyświetlenia screenów) nie potrafię :-P Jednak systemowe GUI pozostają daleko w tyle za łatwością elastycznością HTML-a. Instalacja pakietów odbywa się przez wywołanie Terminala z odpowiednią komendą, więc jeżeli nie macie Terminala trzeba zastąpić go jakimś innym emulatorem konsoli.

Gdyby ktoś chciał napisać coś takiego pod QT lub cokolwiek lepszego dla GTK to serdecznie zapraszam. API stoi otworem.

pacnet.karbownicki.com/api/

Wreszcie wczoraj znalazłem trochę czasu aby ruszyć Pacnet. Po tym jak ostatnio szukałem hostingu napisała do mnie pani Magda Zarych i zaoferowała darmowy hosting w MegiTeam. Jakość oferty bardzo pozytywnie mnie zaskoczyła, wystarczy spojrzeć tutaj, żeby się przekonać co dobrego siedzi na serwerach.

Tak więc od kilku dni Pacnet działa sprawnie pod kontrolą duetu Django & PostgreSQL. Zalet Django chyba przedstawiać nie trzeba więc powiem tylko, że brama do dalszego rozwoju została szeroko otwarta. Co nowego oprócz zmiany PHP na Pythona?

  • System komentarzy
  • Internacjonalizacja (obecnie polski i angielski)
  • Nowa wyszukiwarka z podświetlaniem znalezionych fraz
  • Log zmian kategorii pakietów
  • Link do zmiany kategorii pakietu z poziomu listy pakietów
  • Poprawiony skrypt aktualizacyjny wyszukujący screeny oraz changelog

pacnet.karbownicki.com

Na koniec chciałem bardzo serdecznie podziękować Arturowi Bednarkowi (unix.net.pl) oraz Krzysztofowi Rygwelskiemu, którzy również zaproponowali hosting na swoich serwerach.

PS. Chętnie przyjmę subdomenę pacnet.archlinux.pl

Ostatnio w ramach projektu z zarządzania informacją w internecie napisałem nową wersję Pacnetu. Nowa wersja napisana jest w Django, co bez wątpienia zapewni dobrą platformę dla przyszłego rozwoju. Niestety w związku z pozbyciem się PHP pojawiły się problemy hostingowe, ponieważ teraz muszę mieć serwer z Pythonem, np. Apache+mod_python oraz bazę MySQL/PostgreSQL.

Jeżeli dysponujecie takim serwerem i nie macie nic przeciwko przygarnięciu niewielkiego projektu to proszę o komentarz z namiarami kontaktowymi. Co prawda Pacnet stworzony został na potrzeby kategoryzacji pakietów Archlinuksa, ale system jest na tyle elastyczny, że równie dobrze można by kategoryzować pakiety z dowolnej dystrybucji. Więc jeżeli chcielibyście odpalić coś takiego dla Waszej ulubionej dystrybucji nie powinno być z tym problemów. Potrzebny tylko hosting.

Dodam, że Pacnet nie potrzebuje dużej przestrzeni plikowej, ponieważ poza Django wszystkie inne informacje przechowywany są w bazie. Np. zrzuty ekranów to w rzeczywistości linki do zewnętrznych plików na innych serwerach (by Google Search).

Anyone ?

Aktualnie w polskim prawie nie ma przepisu zabraniającego nagrywania audycji radiowych. Oznacza to, że całkowicie legalnie możemy wejść w posiadanie sporych zbiorów muzyki. Nie każde radio jednak gra to czego chcielibyśmy słuchać. I tu pojawia się Last.fm – radio, które zna nasz gust i gra to co lubimy. Tylko jak teraz dobrać się do tej muzyki?

Odpowiedzią jest program TheLastRipper. Małe ale skuteczne narzędzie, pożerające adresy typu lastfm://. Wystarczy wskazać mu katalog, do jakiego ma rippować muzykę oraz stację.

Rezultatem działania TheLastRippera będą utwory znajdujące się w ładnie nazwanych katalogach (wg. schematu wykonawca > album > utwór) oraz pobrane okładki albumów w trzech rozmiarach.

Trzy rozmiary okładek mogą przeszkadzać. Np. mój QuodLibet przy odtwarzaniu utworu wybiera akurat najmniejszą okładkę co nie wygląda najlepiej. Ale łatwo można temu zaradzić. Wystarczy w katalogu z muzyką utworzyć skrypt zawierający:

find ./ -type f \( -name "SmallCover.jpg" -o -name "MediumCover.jpg" \) -delete

który usunie małe i średnie okładki z wszystkich podkatalogów.

Użytkownicy Archa aby pobrać pogram mogą skorzystać z aktualnego PKGBUILDa, który zamieszczam poniżej, ponieważ ten obecnie znajdujący się w AUR jest przestarzały.

PKGBUILD for version 1.1.1
pkgname=thelastripper
pkgver=1.1.1
pkgrel=1
pkgdesc="A Last.FM Ripper"
arch=('i686')
url="http://thelastripper.com/"
license=('GPL')
depends=('gnome-desktop-sharp' 'gnome-icon-theme')
makedepends=('pkgconfig')
source=("http://thelastripper.googlecode.com/files/$pkgname-$pkgver.tar.gz")
md5sums=('9a8653cc0cf450077b599cb8988ba8a3')
build() {
export RSVG_SHARP_20_CFLAGS="/usr/share/rsvg2-sharp/2.0/rsvg2-api.xml"
export RSVG_SHARP_20_LIBS="/usr/lib/mono/rsvg2-sharp-2.0/rsvg2-sharp.dll"
cd $startdir/src/$pkgname-$pkgver
# Bypass GMCS and fakeroot bug
mkdir -p $startdir/src/$pkgname/.wabi
export MONO_SHARED_DIR="$startdir/src/$pkgname/"
./configure --prefix=/usr
make || return 1
make DESTDIR=$startdir/pkg install
}

Załącznik 1 - lista adresów last.fm

  • lastfm://user/$username/personal
  • lastfm://user/$username/playlist
  • lastfm://artist/$artistname or lastfm://artist/$artistname/similarartists
  • lastfm://globaltags/$tag
  • lastfm://group/$groupname
  • lastfm://user/$username/neighbours
  • lastfm://user/$username/recommended/100
  • lastfm://play/tracks/$trackid,$trackid,$trackid

Ostatnio rozglądałem się za tutorialem do budowy prostego gadżetu w Pythonie, który siedział by sobie na przezroczystym tle na moim pulpicie. Gadżety Screenlets czy gDesklets działają różnie, zazwyczaj niestabilnie albo, któryś (akurat przydatny) całkowicie się nie odpala. Poza tym potrzebowałem coś maksymalnie prostego a nie całej platformy dla gadżetów.

Wpadłem więc dziś na pomysł wykorzystania Tildy jako ładnego kontenera. W zasadzie to do pełni szczęścia potrzebne były dwie paczki: tilda i python-feedparser. Znajdziecie je w każdej dystrybucji. Dla archowców:

# pacman -S tilda python-feedparser

Tildę najlepiej skonfigurować następująco:

W sekcji Command w polu Custom Command umieszczamy adres skryptu, ale o tym za chwilę.

Teraz czas na Pythona. Wystarczy sworzyć malutki skrypt o takiej treści:

#! /usr/bin/env python

import feedparser
import time
import os, sys

# nieskonczona petla
while 1:
	# pobierz RSS
	feed = feedparser.parse("http://jogger.pl/rss/")
	# wyczysc ekran
	sys.stdout.write(os.popen('clear').read())
	# dla kazdego wpisu
	for note in feed['entries']:
		# wypisz tytul
		print "- %s" % note['title']
	print "\nhttp://jogger.pl/"
	# odczekaj 60 sekund
	time.sleep(60)

Skrypt wystarczy zapisać np. jako jogger.py i wpisać ścieżkę do niego w polu Custom Command. W moim przypadku jest to:

python /home/tomek/go/python/jogger.py

I to by było na tyle. Po ponownym uruchomieniu Tildy powinniśmy mieć ładny przegląd wydarzeń na joggerze odświeżany co 60 sekund. Gdy coś nas zainteresuje wystarczy przytrzymać ctrl i kliknąć link do joggera.

Oczywiście może to być dowolny kanał RSS/Atom czy coś zupełnie innego np. statystyki obciążenia naszego serwera. Żadnych tam Googlowych gadżetów z tysiącem funkcji. Prosto łatwo i przyjemnie.

Ostatnio przy okazji wydania nowej wersji Ubuntu wypłynął na światło dzienne całkiem ciekawy design stworzony przez przez jednego z fanów Ubuntu. Ostatecznie nie został on wcielony do nowego wydania, ale sam pomysł jest na tyle ciekawy że nie może się na Ubuntu skończyć ;-)

Na początek tapeta:

Teraz menadżer logowania. Jeżeli używacie GDM to skórkę znajdziecie tutaj.

Ja używam XFCE i Slima więc poskładałem skórkę dla Slima. Na początku próbowałem zachować zgodność z oryginałem ale jako że Slim jest o wiele prostszy niż GDM więc dziury po przyciskach „Suspend”, „Reset”, „Shut Down” oraz brak opcji i daty zmusiły mnie do drastycznego okrojenia wyglądu. Jednak myślę, że wyszło prosto i ładnie, jak to Slim :-)

Ostateczny wygląd:

Dla lubiących ciemny design można zainstalować jeszcze odpowiedni styl GTK. Ja wolę pozostać przy Inverted.

PS. Jeżeli chcielibyście zastąpić logo Archa jakimś innym to proszę bardzo — wood-svg.tar.gz

Właśnie wrzuciłem na serwer API v1.0

Adresy wyglądają tak:

[TYP] = text, json
[PAKIET] = firefox, gajim, mc …
[KATEGORIA] = net-im, games-rpg …
[SZUKAJ] = aur, fire, ftp …

lista wszystkich pakietów

http://pacnet.karbownicki.com/api/[TYP]/packages

informacje o pakiecie
http://pacnet.karbownicki.com/api/[TYP]/package/[PAKIET]

lista wszystkich kategorii
http://pacnet.karbownicki.com/api/[TYP]/categories

lista pakietów w kategorii
http://pacnet.karbownicki.com/api/[TYP]/category/[KATEGORIA]

wyszukiwanie pakietu
http://pacnet.karbownicki.com/api/[TYP]/search/[SZUKAJ]

W przypadku braku trafień typ tekstowy zwraca null natomiast JSON pusty obiekt {}

Już dawno miałem o nim napisać notkę jednak zawsze gdzieś mi to uciekało. Ale nie tym razem.

Język dot służy do opisywania schematów za pomocą tekstu. Pewnie brzmi to niewyraźnie, dlatego od razu przejdźmy do konkretów. Aby skorzystać z dobrodziejstw języka dot instalujemy pakiet graphviz.

# pacman -S graphviz

Następnie otwieramy nasz ulubiony edytor tekstu i zaczynamy pisać:

digraph linux {
    Linux -> Debian;
    Linux -> "Red Hat";

    Debian -> Ubuntu;
    Debian -> Knoppix;

    Ubuntu -> Kubuntu;
    Ubuntu -> Edubuntu;
    Ubuntu -> Xubuntu;

    "Red Hat" -> Mandrake;
    "Red Hat" -> Fedora;

    Mandrake -> Mandriva;
}

Tak przygotowany plik zapisujemy jako test.dot A teraz najlepsza część, czyli budujemy schemat

$ dot -Tpng test.dot -o test.png

TIP: Pliki możemy eksportować również do innych formatów

W efekcie powinniśmy otrzymać plik test.png, który wygląda tak:

Narysowanie czegoś takiego w Inkscape pewnie zajęło by Wam kilka minut więcej. Najlepszą według mnie zaletą języka dot jest to, składa on się ze zwykłego tekstu, dzięki czemu w łatwy sposób możemy generować te pliki przez różne mechanizmy. Np. jeżeli mamy bazę danych firmy gdzie jakaś tabela obrazuje zależności pomiędzy przełożonymi a podwładnymi wówczas możemy szybko napisać skrypt w PHP czy Pythonie, który z pomocą tej tabeli wygeneruje nam plik dot a następnie utworzy z niego ładny schemat.

Na tym jednak nie koniec. Język dot to prawdziwe bogactwo kształtów grotów i kolorów. Za pomocą kombinacji różnych tych elementów możemy dokładnie zamodelować to co chcemy.

Więcej przykładów znajdziecie w galerii.

Semestr już prawie się skończył, nareszcie mam trochę więcej czasu, wiec zabrałem się dzisiaj za aktualizację pacnetu. Z pomocą oczywiście przyszedł mi Python, dzięki któremu napisałem ładny skrypt, porównujący obecną bazę ze stanem repozytoriów i na tej podstawie dokonujący aktualizacji.

Na czerwono zaznaczane są nowe pakiety, które można przeglądać również na odpowiedniej podstronie.

Wreszcie dodałem możliwość wrzucania zrzutów ekranów, czyli najprzyjemniejszej funkcjonalności. Niestety nie dysponuję odpowiednim serwerem do przetrzymywania tej całej grafiki, więc całe wrzucanie ogranicza się do podania adresu miniaturki i dużej grafiki.

Ponieważ wiem, że pakietów jest sporo a zrzuty będą przybywały raczej w wolnym tempie więc dodałem automatyczne wyszukiwanie zrzutów w Googlu. Co prawda nie zawsze wyszukuje to co trzeba, ale w większości przypadków sprawuje się całkiem dobrze i od razu widać z jaką aplikacją mamy do czynienia. Poniżej zrzuty z Battle of Wesnoth.

Ostanie 20 zrzutów będzie wyświetlane na odpowiedniej podstronie.

Kolejna cześć sagi „zaktualizowałem jądro i sieciówka się posypała”. Próba skompilowania mojego ostatniego wydania sterowników kończy się błędem

scripts/Makefile.build:46: *** CFLAGS was changed in „src/Makefile”. Fix it to use EXTRA_CFLAGS. Stop.

Natomiast próba zbudowania paczki z AUR kończy się dla odmiany innym ;-)

atl2_main.c:1451: error: implicit declaration of function ‘SET_MODULE_OWNER’

Sterowniki z AUR naprawić jednak łatwo. Wystarczy wyedytować plik atl2_main.c i posłać linię 1451 w krzaki

...
netdev = alloc_etherdev(sizeof(struct atl2_adapter));
if(!netdev) goto err_alloc_etherdev;

//SET_MODULE_OWNER(netdev);
SET_NETDEV_DEV(netdev, &pdev->dev);

pci_set_drvdata(pdev, netdev);
adapter = netdev_priv(netdev);
...

Wersja dla leniwych: atl2-2.0.3.tar

Po rozpakowaniu wchodzimy do katalogu i czarujemy

# make
# cp atl2.ko /lib/modules/2.6.24-ARCH/kernel/drivers/net/
# modprobe atl2

i powinno działać

Pacnet jest próbą kategoryzacji pakietów z repozytoriów Arch Linuksa zgodnie z kategoriami używanymi przez Gentoo Portage. Na chwilę obecną znajduje się tutaj 4138 pakietów z repozytoriów core, extra i community.

Jeżeli zauważycie, że jakiś pakiet znajduje się w niewłaściwej kategorii, nie czujcie się skrępowani żeby ją zmienić. Pakiety mogą być niewłaściwie przypisane do kategorii, ze względu na rozbieżności w nazewnictwie pomiędzy obiema dystrybucjami.

Liczę na to, że z Waszą pomocą doprowadzimy szybko to repozytorium do porządku i co najważniejsze – przydatności.

pacnet.karbownicki.com

Moje ostatnie narzekania na organizację repozytorium w Archu nie dawały mi spokoju. Dzisiaj z pomocą fixxxera (właściwie to tylko przerobiłem jego skrypt ;) powstał skrypt, który po otrzymaniu nazwy pakietu pokazuje nam do jakiej kategorii jest on przypisany w repozytoriach Gentoo.

Składania jest prosta:

$ python portage.py gajim
net-im

Oczywiście bez dwóch zdań będą jakieś niezgodności

$ python portage.py pacman
games-arcade

Ale na ogół skrypt powinien działać dobrze. Czyli pierwszy krok do kategoryzacji Archa zrobiony. Teraz tylko powkładać pakiety w kategorie, zrobić GUI i można podbijać świat ;-)

Przeglądając wczoraj AUR wpadła mi w oko pewna nazwa – Paintown – jak się okazało nie na darmo :-)

Po angielsku nazywa się to open source, classic style fighting game, po polsku chodzone mordobicie. Paintown to klasyczna gra z czasów, kiedy gry były jeszcze towarzyskie, czyli grało się w nie z kumplem na tej samej klawiaturze :-) Ehh.. Amiga 500, automaty i setki „roboczogodzin” – to były czasy. Na szczęście powróciły! W Paintown znajdziemy takie tryby gry jak klasyczna planszówka (chodzone mordobicie) i tryb „Vs mode” czyli walka z pojedynczym przeciwnikiem. Grać możemy samemu, w dwie osoby na jednym komputerze czy też przez sieć.

Główni bohaterzy to składanka herosów z różnych gier. Na pierwszym planie Ryu z niezapomnianego Streen Fightera. Brakuje mi tylko Franko ;-)

Wszystko przyprawione klasyczną Amigową muzyką czyli pełen oldschool.

Dla Archowców:

$ yaourt -S paintown

Ostatnio wiele serwisów donosiło o nowym wydaniu (v1.0) programu do obsługi kamer – wxCam. Żaden nie wspomniał jednak że w nowej wersji dodano bardzo interesującą funkcję – nagrywanie przy wykryciu ruchu. Ale po kolei.

Instalacja

W repozytorium Archa paczki nie ma, nie ma też nic w AUR. Trzeba radzić sobie samemu. Główne wymagania to:

  • libwxgtk2.8 (jest w repozytorium)
  • libxvidcore4 i libxvidcore4-dev (chodzi o xvidcore – jest w repozytorium)
  • Revel – pobieramy źródła
  • CImg – pobieramy źródła

Revel kompilujemy standardowo:

# ./configure
# make
# make install

CImg kompilujemy tak:

cd examples
make olinux

w wyniku tego katalog wyżej powstanie nam pliczek CImg.h, który należy skopiować do katalogu ze źródłami wxCam.

wxCam kompilujemy standardowo:

# ./configure
# make
# make install

Gotowe. Teraz polecenie wxcam powinno odpalić nam program.

Wykrywanie ruchu

Klikamy Capture > Show movement detection areas i zaznaczamy interesujący nas obszar

Następnie klikamy Capture > Movement detection i możemy już rozpocząć nagrywanie. W przypadku braku ruchu nagrywanie powinno się automatycznie zatrzymać.

Przykład:

Możliwe jest też zaznaczenie kilku obszarów

Chociaż wxCam nie ma żadnego API do którego można by podpiąć jakiś „alarm” to jednak łatwo to zrobić. Wystarczy tylko napisać skrypt monitorujący wielkość pliku do którego nagrywany jest obraz. Jeżeli plik zacznie się zwiększać oznaczać to będzie, że wykryto ruch i można wykonać jakieś działanie.

Dodatkowo wxCam oferuje kilka filtrów obrazu np.:

  • Odbicie lustrzane
  • Odwrócenie obrazu
  • Odcienie szarości
  • Rozmycie
  • Negatyw
  • Szum
  • Wykrywanie krawędzi
  • Nakładanie daty

i kilka innych

W związku z ostatnimi zmianami loga Archa postanowiłem dopracować mój laptopowy system i dogonić Ubuntu w estetyce startu systemu. W tym celu zainstalowałem wynalazek o nazwie Splashy który ładnie maskuje kilobajty tekstu generowanego przy starcie przykrywając je ładnym obrazkiem. W tym miejscu opisałbym instalację, ale dobrzy ludzi już to zrobili więc tylko zlinkuję

Uwaga! Przy instalacji podmienianych jest kilka plików konfiguracyjnych w /etc/ np. rc.conf zostaje zastąpiony nowym a stary zapisywany jest jako rc.conf.pacsave więc nie zapomnijcie przywrócić starych plików przed ponownym uruchomieniem.

Po instalacji możemy zabrać się za zmianę motywu. Ja używam takiego

# splashy_config -i archer-black-splashy.tar.gz

Ponieważ zmiana motywu jest zmianą w konfiguracji musimy przebudować jądro

# mkinitcpio -p kernel26

Teraz wystarczy jeszcze zadbać o menadżer logowania. W moim przypadku jest to taki motyw dla Slima. Kopiujemy zawartość archiwum do /usr/share/slim/themes/, edytujemy plik /etc/slim.conf i zmieniamy current_theme

current_theme archer-black

I tapetka

Całość prezentuje się tak:
(wiem trochę słabo widać, ale lepiej się nie udało)

Na koniec żeby nie było za słodko, mały błąd. Po instalacji Splashy w górnym menu pojawiły mi się dziwnie skupiska małych kreseczek

Temat jest znany i prawdopodobnie jest to bug. Jednak w moim przypadku nie jest on zbyt uciążliwy.

Jakiś czas temu pojawił się u mnie router WiFi, a ponieważ chciałem uchronić moje łączę przed wiszącą na nim połową osiedla musiałem transmisję poddać szyfrowaniu.

Router D-link 524, całkiem fajny

O ile otwarte sterowniki bcm43xx dobrze radziły sobie z transmisją otwartą to jednak o szyfrowaniu można było pomarzyć. Musiałem więc poszukać czegoś innego i tutaj z pomocą przyszedł NDISwrapper Ogólnie rzecz ujmując potrafi on emulować sterowniki kart sieciowych napisane dla Windowsa tak, aby działał pod Linuksem.

Instalacja NDISwrapper-a jest dość prosta. Na początek musimy się pozbyć dotychczasowego sterownika bcm43xx jeżeli go używamy. Można zrobić to usuwając pakiet lub dodając go do czarnej listy modułów, tak aby nie był ładowany przy starcie systemu. W Archu czarna lista znajduje się w pliku /etc/rc.conf i dodanie do listy wyglądało by np. tak:

MOD_BLACKLIST=(asus_acpii bcm43xx)

Następnie instalujemy NDISwrapper-a. Każda szanująca się dystrybucja powinna mieć odpowiednie paczki w swoim repozytorium. Zazwyczaj są to dwie paczki: ndiswrapper i ndiswrapper-utils. W Archu wygląda to tak:

# pacman -S ndiswrapper ndiswrapper-utils

Po instalacji sięgamy po płytkę ze sterownikami do naszej karty sieciowej i ładujemy odpowiedni plik do NDISwrapper-a.

# ndiswrapper -i bcmwl5.inf
# ndiswrapper -l
# modprobe ndiswrapper
# ndiswrapper -m

Jeżeli jednak nie mamy sterowników możemy je pobrać z sieci. Trzeba tylko dokładnie wiedzieć jaki numerek ma nasza karta sieciowa. Dowiedzieć można się tego wydając takie magiczne zaklęcie:

# lspci -n | egrep '14e4:43(06|07|11|12|18|19|21|24|25|28)'

Następnie mając numerek karty możemy pobrać odpowiedni plik. Dokładna listę które numerki pasują do których strowników znajdziecie w helpie Ubuntu

Jak już pisałem ostatnio po aktualizacji jądra do wersji 2.6.23 całkowicie wysypała mi się karta sieciowa Attansic L2. Kompilacja sterowników zatrzymywała się na błędzie informującym o nieznanej funkcji eth_copy_and_sum. Z pomocą przyszedł jednak rlblaster i chociaż trafił na notkę pewnie przypadkiem i zupełnie nie miał pojęcia o języku polskim to jednak podpowiedział jak rozwiązać błąd. Wyżej wymieniona funkcja została pewnie usunięta z nowej wersji jądra, dlatego musimy napisać ją sami. A wygląda to mniej więcej tak:

Około linii 243 w pliku at_main.c dopisujemy taką oto funkcję:
void eth_copy_and_sum(struct sk_buff *dest, unsigned char *src, int length, int base)
{ memcpy(dest->data, src, length);
}

Dzięki temu zabiegowi błąd z nieznaną funkcją zostaje zażegnany. Pozostaje co prawda problem z dwiema innymi funkcjami ale jak przeczytałem na jednym z blogów wystarczy zakomentować wnętrze tych funkcji pozostawiając tylko komendę return.

Tak załatany sterownik zaczął działać, ale szybko zauważyłem, że zamiast przepustowości rzędu 2000 kbps wyciąga około 50 kbps. Wróciłem więc do kodu sterownika i zacząłem grzebać dalej. Okazało się, że w nowym jądrze zmianie uległa też nazwa innej funkcji. Rozwiązaniem było zastąpienie odwołań do:

vlgrp->vlan_devices[vid]

na:

vlgrp->vlan_devices_arrays[vid]

zamiast komentować ciała funkcji które zawierają te linie.

Teraz sieciówka działa już pełną parą.

Wersja dla leniwych: atl2.tar

Po rozpakowaniu wchodzimy do /src/ i wydajemy komendy

# make && make install

A później ładujemy sterownik

# modprobe atl2

Arch i aktualizacja jądra

Kategorie: ArchLinux Linux 24 października 2007 o 12:35:07 | trackback

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

Czwarte jądro

Kategorie: ArchLinux Linux 12 października 2007 o 00:36:06 | trackback

Od pewnego czasu jestem szczęśliwym posiadaczem laptopa. O, takiego sobie kupiłem za ciężko nazbierane 2,4 k.

Asus-y tej linii są nastawione na wszechstronność. 1GB RAMu, dysk 120GB, WiFi, Bluetooth, czytnik kart, kamerka + mikrofon, 4xUSB, wszechstronna nagrywarka CD/DVD, czyli wszystko co mi trzeba scalone w jednym kawałku. Gwarancja na 24 miesiące, torba i mysz w zestawie.

Ogólnie laptop sprawuje się świetnie. Błyszcząca matryca wcale nie odbija tak wszystkiego jak się nasłuchałem a za to barwy wyświetla o wiele lepiej niż matryce matowe. Laptop się nie grzeje, pracuje niemal bezszelestnie i jest bardzo wygodny w użyciu – dobrze rozmieszczone porty, napęd, zasilanie i wentylacja.

Problem miałem tylko ze sterownikami ogólnie do wszystkiego. Ale wiki tu google tam i wszystko się znalazło. Swoją drogą ciekawe kiedy pojawią się laptopy, które na dołączonej płytce ze sterownikami będą miały nadrukowanego pingwinka…

A skoro już jesteśmy przy pingwinach :-) Co do systemu operacyjnego to zagościł u mnie Arch Linux Z tego co zauważyłem to spora liczba użytkowników Gentoo po zmianie systemu przeskakuje właśnie na Archa. Wygoda konfiguracji systemu i usług jest podobna jak w Gentoo natomiast nie trzeba już tracić czasu na kompilację a jednocześnie mamy paczki skompilowane pod i686. Po ponad roku siedzenia na Gentoo i kompilowania OpenOffice-a przez 13 godzin widok systemu stawiającego się w 5 minut to coś pięknego. Trudno ocenić mi jest szybkość pracy, bo sprzęt jest troszkę inny ale śmiem przypuszczać, że prędkość działania aplikacji się nie zmieniła. Wszystko zasuwa mi tak szybko jak na misternie skompilowanym Gentoo.

O Archu jeszcze pewnie coś naskrobię bo to bardzo przyjemna dystrybucja i chociaż podobno główna wadą Archa jest mała ilość pakietów to nic takiego nie zauważyłem. Póki co jest wszystko czego potrzebuję a wynalazek zwany AUR pozwala mi postawić duży znak zapytania pod tą teorią.

Na koniec pozdrowię Was z nowej kamery ;-) For Adun!

Stronę napędza Jogger. Pewne prawa zastrzeżone.