Development z Zapomnianej Strony

..:: Paweł Hofman .NET Portal ::..

Nowy komputer to nowe problemy do rozwiązania. Dziwne, że to urządzenie miało w zamyśle twórcy służyć ich rozwiązywaniu ;) Najpierw zasilacz okazał się niestabilny i za każdym razem, gdy w systemie wzrastało zapotrzebowanie na moc, restart!

Później, po kilku dniach zabawy z Windows 8, niespodziewanie oczom moim ukazały się dość częste BSOD (dla niewtajemniczonych, Blue Screen of Death, niebieski ekran śmierci w Windows). Otóż płyta Asus P8Z77-V Pro posiada kontroler sieci LAN Intel 82579V. A kontroler ten posiada pewną nietypową właściwość. Po uśpieniu komputera zaczyna nagle przedstawiać się jako zupełnie inny sprzęt – 82579LM.

Aby ten problem rozwiązać, należy aktualizować EPROM tejże karty sieciowej. Odpowiednie narzędzie można pobrać ze strony Intela tutaj.

I życie staje się piękniejsze!



Słowem wstępu – jak to już wcześniej opisałem udało mi się reanimować router. Model całkiem niezły i radość tym większa, że teraz mając dwa, na jednym można poeksperymentować. Jak zatem da się go jakoś mądrze wykorzystać? Otóż w sieci domowej miło jest mieć jakiś serwerek, gdzie poprzez zwykłe otoczenie w Windowsie można by trzymać kopie swoich dokumentów, zdjęć, filmów i mieć do nich zawsze dostęp. Lub też utrzymywać inne repozytorium (jak SVN, git czy mercurial) albo uderzyć z zupełnie innej strony i postawić sobie stronkę WWW na własne potrzeby. Małe uwagi w tym miejscu:

  • ta dobra – opisywany model ma dwa wyjścia USB, także w teorii na brak miejsca nie musimy narzekać, bo zawsze można jakiegoś pendrive’a, czy dysk podpiąć
  • ta lepsza – w porównaniu do normalnego PC, który musiałby pełnić podobną rolę, router nie ma w ogóle wentylatorów, czyli nie hałasuje oraz nie zużywa tyle prądu!
  • i w końcu ta zła – na standardowym firmware’rze tego nie osiągniemy i trzeba się nieco nagimnastykować, aby wgrać alternatywne oprogramowanie.

Przeglądając Internet natrafimy na takie zastępcze firmware’y jak: OpenWrt, DD-Wrt, Tomato, Oleg czy dziesiątki tysięcy ich klonów, które jedyne co wniosły, to odbiły się w którymś momencie od głównej gałęzi kodu, wypuściły serię koszulek czy kubków z nazwą nowego projektu i zamarły...

Po krótkiej analizie zdecydowałem się na OpenWRT. Głównie z tej przyczyny, iż jest on ciągle rozwijany i niedawno wyszła nowa wersja (o kryptonimie BackFire 10.03). Ponadto posiada bardzo dużą ilość pakietów, które realizują w zasadzie wszystkie funkcjonalności, których wymagałem, a ilość pomocy i poradników na jego temat jest przeogromna.

A zatem po kolei:

  1. Zaznajamiamy się z tematem. Polecam poczytanie przewodników – jak wypalić, co i gdzie zmieniać, jak zachowywać się w przypadku błędów, czy jak dogrywać pakiety. Mnogość informacji znajduje się na stronie samego OpenWRT, jego polskim portalu oraz tego oto jednego zapaleńca z eko.one.pl.
  2. Kompilujemy! Nic bardziej mylnego! To jest największy złodziej czasu oraz sprawca zepsutego humoru! Niestety po instalacji Debiana na maszynie wirtualnej, zaaplikowaniu pakietów z narzędziami dla developera oraz ściągnięciu źródeł samego OpenWRT (z ich SVNa oraz później poprzez make download) i po 3-ch zmarnowanych wieczorach poddałem się. Za każdym razem coś się nie chciało skompilować. Ponadto budowanie równoległe (make –j3) dawało jeszcze bardziej dziwaczne błędy. W dodatku cały czas istnieje obawa, że nie mamy doświadczenia i, że czegoś zapomnimy dodać, marnując jeszcze więcej czasu przy konfiguracji. Dlatego też skierowałem się w inną stronę...
  3. Instalujemy gotowy plik obrazu firmware’u *.trx, który już ktoś dla nas przygotował. Tutaj kolejna uwaga: na pewno nie ten ze strony OpenWRT :) Powód jest prozaiczny – te obrazy nie zawierają standardowo wkompilowanego w kernel wsparcia do USB. Niby nic wielkiego, bo przecież można to później dograć. Jednak nie pozwoli to na wykonanie jednej sztuczki, zwiększającej pamięć, o której mowa w następnych punktach. Tutaj znajdziemy odpowiednio skompilowane wersje.
  4. Poprzez panel sterowania Windowsa 7 dodajemy sobie nową funkcję – program tftp.
  5. Wprowadzamy router Asusa w stan gotowości do wgrania firmware’u (trzymając wciśnięty przycisk reset przez 10sek zaraz po włożeniu kabla zasilającego).
  6. Ustawiamy ręcznie adres IP swojej karty sieciowej tak, aby widziała ona router (czyli 192.168.1.20/255.255.255.0; często też jeśli wcześniej zmieniliśmy adres podsieci wymagana może być zmiana ‘1’ na inną wartość)
  7. Wykonujemy polecenie:

    tftp –i 192.168.1.1 PUT openwrt-brcm47xx-squashfs.trx

    czekamy aż wszystko się wyśle, później router się uruchomi sam ponownie i aż będziemy się mogli zalogować poprzez usługę telnet.
  8. Wymieniona wersja nie posiada oczywiście żadnego interfejsu graficznego (czy też konfiguracji poprzez www), dlatego wszystko od tej pory wykonujemy na konsoli, edytując wartości w plikach konfiguracyjnych. Dodatkowymi atutami będą: znajomość poleceń systemu Linux oraz programów telnet, Putty.
  9. Po zalogowaniu zmieniamy hasło (poleceniem passwd) po czym logujemy się ponownie używając Putty.
  10. Teraz widząc, że nasz router ma tylko 32MB pamięci RAM  – rozszerzamy ją dodając pamięć wirtualną swap. Wszystko opisane jest bardzo przystępnie tutaj. Polega to głównie na sformatowaniu pendrive’a i podzieleniu go na dwie partycje: (1) pliku wymiany swap o pojemności 256MB oraz (2) danych.
  11. Teraz widzimy, że router ma nie więcej niż 4MB przestrzeni, na którą możemy coś wgrać. Jest to stanowczo za mało nawet na nasze pakiety (tj.: obsługę polskiego kodowania, moduły do Subversion, Pythona, Mercuriala, Sambę itp). Plus jest taki, że już mamy pendrive’a podpiętego do USB (koniecznie obsługa USB musi być wkompilowana w kernel – zachęcam do poczytania o partycji ‘overlay’ oraz jak działa system plików squashfs oraz jffs). Teraz też możemy pokazać mu, że można wykorzystać drugą partycję, aby to ona stała się ‘fizyczną’ pamięcią zapisywalną routera. Robimy zatem wszystko zgodnie z tym poradnikiem. Pamiętajmy jednak, że zmiana podstawowej partycji do zapisu danych spowoduje, że wszystkie ustawienia, które do tej pory zmieniliśmy na routerze zostaną zastąpione tymi, które są zapisane na pendrive’ie i jeśli był on pusty wcześniej tzn. że zostaną użyte domyślne i całą konfigurację trzeba przeprowadzić od nowa.
  12. Dwie ostatnie rady są o tyle dobre, że nie trzeba już nic robić, aby przekierowywać instalowane pakiety, czy w ogóle martwić się o miejsce na samą konfigurację routera. Wszystkie sztuczki z modyfikowaniem ‘destination’ dla opkg, czy dodawaniem nowych folderów do zmiennej środowiskowej $PATH idą do lamusa.
  13. Dodatkowo dodajemy i tak dysk na USB albo drugi pendrive, na którym będziemy przechowywać faktycznie pliki z danymi!

O samej konfiguracji serwisów wpis niebawem. Trzymam kciuki, że ten poradnik w takiej formie ocali komuś trochę czasu!



Jakiś czas temu awarii uległ mój router Asus WL-500gP. Sam moment zejścia trwał dość długo, bo około miesiąca i objawiał się dosyć dziwnie, w różnych etapach żywotności. Aż w końcu pewnego dnia, umarł, a później cudownie ożył! Ale po kolei.

Najpierw zastałem go resetującego się raz po raz. Było to o tyle ciekawe, iż na pierwszy rzut oka wpływ na to miało uruchamianie się WiFi. Zazwyczaj to po zapaleniu tej lampki następował restart. Dla tego routera dostępna jest cała gama nieoficjalnych firmwarów, więc pierwsze co w tym momencie przychodzi do głowy, to wgrać inny. W oryginalnym zapewne był błąd, który akurat mnie dopadł (po 2-ch latach użytkowania, ale zawsze). Spróbowałem openWRT i Oleg dla Asus WL-500gX. Router pochodził jeszcze tydzień i znów zaczął zachowywać się niestabilnie.

Tym razem objawy były dużo bardziej zaskakujące. Zaraz po podłączeniu do prądu zapalały się wszystkie lampki (all lights on) od tej z zasilaniem poprzez połączenia sieciowe (mimo, że kable nie były włożone) i WiFi. Dalej nie robiło się już nic. I tutaj się trochę poddałem, bo wszystko wskazywało na jakieś uszkodzenie sprzętowe. Po rozkręceniu obudowy, napięcia jakoś wyglądały, kondensatory się ładowały, zatem to musiała być pamięć FLASH, gdzie zapisany był bootloader lub sam firmware i nic nie jest uruchamiane, bo nic się nie da odczytać. Wszystko idzie w krzaki. W takim stanie router ten przeleżał dłuższy czas, aż w forum Asusa znalazłem potencjalną przyczynę mojego problemu – uszkodzony zasilacz!

Otóż oryginalny zasilacz (POWER SUPPLY UMEC UP0181B-05PE; +5V, 2.5A = 12.5W) ma tę własność, iż psuje się dobitnie tak, że daje podczas pracy zbyt niskie parametry prądu. To co jest najciekawsze to to, iż daje on w ogóle jakieś napięcie i natężenie, ale zbyt małe, aby pozwolić routerowi na poprawne uruchomienie. Wyjściem okazała się tutaj wymiana tego elementu, co kosztuje nieco ponad 20 PLN (wliczając dostawę do domu). Oprócz napięć, ważny jest typ końcówki, który w tym wypadku ma wymiary 2.1/5.5. Wiele innych modeli dLink oraz Linksys również używa tego zasilacza, dlatego jego zakup nie jest trudny.

Wszystko wróciło do porządku (i początku)!



Kolejny sposób jak zmarnować sobie kilka wieczorów – to próba konfiguracji trybu dual-boot w bootloaderze Windows Vista, tak aby uruchamiał on Vistę 64-bitową albo XP 32-bitowego (i może jakiś inny w przyszłości). Każdy z tych systemów jest zainstalowany na osobnym dysku twardym na pierwszej partycji. Jest ona zawsze aktywna i rozpoznawana jako dysk C:, gdy startuje system. Mam nadzieję, że jeśli przeczytasz mój dalszy wywód to również dojdziesz do przekonania, że szkoda marnować czas na próbę spięcia tych systemów razem. A rozwiązanie jest banalne. Przynajmniej na tej płycie głównej wystarczy podczas uruchamiania komputera, gdy Bios wyświetla dostępną ilość pamięci, procesor itp., wcisnąć klawisz F8. Wyskoczy po chwili przyjemne menu, z którego wybierzemy sobie bez wchodzenia do ustawień Biosu dysk, z którego wystartować maszynkę.

Niestety Windows XP wykorzystuje do uruchamiania ntldr oraz boot.ini, gdzie zdefiniowane są ewentualne odniesienia do innych systemów operacyjnych. Visty niestety nie potrafi uruchomić, niezależnie od tego, co wpiszemy do tego pliku.

Z drugiej strony bootloader Visty potrafi obsługiwać ładowanie bootloadera Windows XP poprzez tryb zgodności zdefiniowany dla elementu “{ntldr}”. Jednak w moim przypadku za każdym razem takie uruchamianie kończyło się czarnym ekranem oraz restartem komputera.



Moje usilne starania wreszcie zostały uwieńczone sukcesem. Pragnę tym samym szybko donieść, iż możliwa jest instalacja Windowsa XP Professional (SP3) 32-bit na komputerze opartym o płytę główną ASUS P5Q Deluxe z zamontowanymi dyskami twardymi oraz czytnikiem DVD wyłącznie na interfejsie SATA2. Nie oznacza to, że jest to proste :)

Podczas swojej walki z całym tym badziewiem napotkałem problemy następującej natury, zatem jeśli mierzysz się z nimi, to może ten wpis jest właśnie dla Ciebie:

  • Blue Screen Of Death 0x0000007B podczas instalacji Windowsa
  • Blue Screen Of Death 0x00000074, który również tyle mówił, co nic
  • oraz brak stacji dyskietek w komputerze, aby zainstalować sterowniki do RAID/AHCI.

Oczywiście dwa pierwsze błędy i wysypki instalatora tuż po załadowaniu kilku plików z płyty wskazywały, że jest to problem z dyskami (a dokładniej z obsługą ich kontrolera). Niestety Windows XP ma to niefortunne ograniczenie, że sam z siebie nie obsługuje dysków SATA/SATA2/RAID w ogóle i chwali się tym dumnie poprzez krytyczne ostrzeżenia. Należy mu odpowiednie sterowniki podać wciskając klawisz F6 na samym początku procesu instalacji. Asus na swojej stronie z pomocą dostarcza te pliki (łącznie 6, zajmujących w sumie około 360kB) jako archiwum o nazwie ICH10R_AHCIRAID_XPVista.zip. Teraz właśnie spotykamy finalny mur. Żadna tyczka już tu nie pomoże, a jedynie twarda głowa, bo oto właśnie pliki te trzeba podać na niczym innym jak tylko na zwykłej dyskietce (ciekawe czy ktoś jeszcze kupuje stacje dyskietek).

Ponieważ tak zaawansowanym sprzętem nie dysponuję, podszedłem do tego inaczej. Mianowicie należało w tym celu ‘oszukać’ Windowsa poprzez odpowiednie ustawienia Biosu (v02.61, 2005), które powodują, że zamiast SATA widzi on zwykłe dyski na IDE (PATA):

  • SATA configuration - [Enhanced]
  • Configure SATA as - [IDE]

Oba ustawienia są ważne, aby próba instalacji tym razem się powiodła. Wszystko będzie grzmieć i buczeć, ale jedna rzecz przecież nie daje spokoju. Dlaczego super dyski SATA2 mają chodzić w emulowanym trybie IDE. Zgodzę się, że to zupełnie nielogiczne…

Dlatego zaraz po ukończeniu instalacji zalecam dodanie do systemu następujących sterowników:

  1. Marvell 61xx, aby dodać obsługę dysku DriveXpert (opcjonalnie, bo może wydłużyć czas ładowania się systemu)
  2. Intel Matrix Storage Manager dla chipsetu P45 (doda obsługę gniazd SATA2 przez mostek północny naszej płyty głównej)
  3. oraz całą masę innych sterowników do karty muzycznej, graficznej i sieciowej…

Od tej pory można ponownie w Biosie przestawić dyski tak, aby pracowały w trybie SATA2.

Uwaga końcowa – Vista x64-bit nie ma żadnego z tych problemów i można realnie zaoszczędzić trzy wieczory, zamiast spędzać je na rozwiązywaniu nieistniejących problemów.

Również jeśli instalator XP w drugiej fazie ciągle wysypuje się z błędem BSOD 0x000000F4, to należy sprawdzić, czy dysk, na który instalujemy system jest typu ‘master’ i podłączony do głównego kontrolera. U mnie pomogło po prostu wyciągnięcie wszystkich zworek z dysku. Odsyłam również do:



Autor

Paweł Hofman [CodeTitans]

ASP.NET
C/C++, C#, Objective-C
SQL

License and Disclaimer

Moje Gry i Aplikacje

Zobacz mnie na GoldenLine

Zobacz mnie na LinkedIn
Supported by Polish SQL Server User Group (PLSSUG)

Supported by WrocNet.org

Zine.net.pl

Wpisy

Projekty

Moje projekty open-source:

Sign in