Jakiś czas temu znajomy podrzucił mi modem HSDPA – Huawei E156G, w celu sprawdzenia dlaczego nie chce działać z kartą Plusa. Modem ten został sprowadzony z UK. Po zainstalowaniu sterowników i włożeniu karty Plusa, pomimo że przejawiał właściwe oznaki życia, to zalogowanie do sieci nie było możliwe. Diagnoza była bardzo prosta i bardzo szybka – simlock na macierzystą brytyjską sieć „3″. Zacząłem szukać rozwiązania na Google’ach, jak się pozbyć tego zabezpieczenia. Jedynym sposobem rozwiązania tego problemu jest odblokowanie przy użyciu kodu NCK. Można go uzyskać na podstawie numeru IMEI, jednakże algorytm nie jest dostępny publicznie. Na wielu stronach internetowych i portalach aukcyjnych jest mnóstwo ofert, które za opłatą udostępniają właściwe kody.
Na szczęście trafiłem na GSM-Forum, znajduje się tam post – Huawei MDM Unlocking codes Request [ONLY HERE], w którym wystarczy podesłać numer IMEI swojego modemu Huawei i po kilku minutach za darmo otrzymujemy odpowiedź w postaci dwóch kodów.
![Huawei MDM Unlocking codes Request [ONLY HERE]](http://macnow.pl/blog/wp-content/uploads/2010/03/Zrzut-ekranu-2010-03-27-godz.-21.01.45.png)
Pierwszy służy do ściągnięcia simlocka, natomiast drugi pozwala na zmianę oprogramowania modemu.
W celu odblokowania należy posłużyć się programem Huawei Modem Code Tool, gdzie wybieramy nasz modem z listy, wpisujemy otrzymany kod NCK (Ucode) i klikamy w Send Code.

Następnie można wykorzystać drugi kod, poszukać nowszego firmware’u i wgrać go do modemu, jednakże pozbędziemy się trwale oprogramowania dostarczonego przez operatora.
W moim przypadku soft sieci „3″ był bezużyteczny, więc zastąpiłem go o wiele nowszym oprogramowaniem producenta – Huawei, zawierającym sterowniki m.in. do Windows 7.
UPDATE [29 czerwca 2011]:
Aby uzyskać potrzebne kody możecie skorzystać z kalkulatora na stronie:
http://www.wintechmobiles.com/tools/huawei-code-calculator/.
Natomiast program możecie pobrać stąd:
http://www.wintechmobiles.com/unlocking/huawei-modem-unlock-by-code-do-it-yourself-free/ .
Dzięki uprzejmości Jakuba Furmana miałem nieprzyjemność przyjrzeć się najnowszej ofercie hostingowej firmy OVH w technologii Cloud Computing. Więcej oficjalnych informacji możecie znaleźć na ich stronie.
Usługa w założeniu (również cenowo) ma być czymś pomiędzy serwerem wirtualnym (shared) a prywatnym (RPS – dedykowany serwer z współdzieloną przestrzenią dyskową).
O usługach firmy OVH pisał Mateusz matipl Kamiński na swoim blogu OVH: RPS czy lepiej dedyk?. Cloud Computing w wykonaniu OVH jest oparty na oprogramowaniu VMware. O ile testowany przez Mateusza RPS nie zachwycał, to sam nie wiem dla kogo jest usługa miniCloud.
W wersji testowej miniCloud dostajemy do dyspozycji 1 współdzielony rdzeń procesora,
CPU: Physical Processor ID: 0
CPU: L1 I cache: 32K, L1 D cache: 32K
CPU: L2 cache: 256K
CPU: L3 cache: 4096K
CPU0: Intel(R) Xeon(R) CPU E5504 @ 2.00GHz stepping 05
Brought up 1 CPUs
Total of 1 processors activated (3990.00 BogoMIPS).
TSC freq read from hypervisor : 1995.000 MHz
Detected 1995.000 MHz processor.
2 GB, podejrzewam, że również współdzielonej pamięci RAM,
Memory: 2054228k/2097152k available (10840k kernel code, 41028k reserved, 642k data, 444k init, 1187720k highmem)
oraz wycinek współdzielonej przestrzeni dyskowej o wielkości 5GB,
scsi0 : ioc0: LSI53C1030 B0, FwRev=01032920h, Ports=1, MaxQ=128, IRQ=17
scsi 0:0:0:0: Direct-Access VMware Virtual disk 1.0 PQ: 0 ANSI: 2
target0:0:0: Beginning Domain Validation
target0:0:0: Domain Validation skipping write tests
target0:0:0: Ending Domain Validation
target0:0:0: FAST-40 WIDE SCSI 80.0 MB/s ST (25 ns, offset 127)
sd 0:0:0:0: [sda] 10485760 512-byte logical blocks: (5.36 GB/5.00 GiB)
to wszystko wpięte do ich sieci, prawdopodobnie również współdzielonego łącza 10/100Mbit ze stałym niewspółdzielonym publicznym adresem IP.
W praktyce dostajemy serwer z własnym publicznym adresem IP, mamy pełną kontrolę nad konfiguracją systemu, możemy uruchomić na nim dowolne usługi. Niestety na tym kończą się zalety tej oferty. Wydajność zależy od tego co na swoich serwerach robią nasi „sąsiedzi”. Poza 5GB przestrzeni dyskowej nic innego nie jest gwarantowane.
Wydajność dysku konta, które testowałem była przeciętna.
/dev/sda1:
Timing cached reads: 5684 MB in 2.00 seconds = 2842.66 MB/sec
Timing buffered disk reads: 128 MB in 5.51 seconds = 23.24 MB/sec
Natomiast wydajność WWW (Debian/Apache2/mod_php5/MySQL), strona oparta na WordPressie:
Maximum connect burst length: 1
Total: connections 5 requests 10 replies 10 test-duration 101.368 s
Connection rate: 0.0 conn/s (20273.6 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 3954.4 avg 20273.6 max 41364.4 median 15760.5 stddev 14426.6
Connection time [ms]: connect 1.3
Connection length [replies/conn]: 2.000
Request rate: 0.1 req/s (10136.8 ms/req)
Request size [B]: 68.0
Reply rate [replies/s]: min 0.0 avg 0.1 max 0.3 stddev 0.1 (17 samples)
Reply time [ms]: response 9910.1 transfer 226.1
Reply size [B]: header 482.0 content 32497.0 footer 2.0 (total 32981.0)
Reply status: 1xx=0 2xx=10 3xx=0 4xx=0 5xx=0
CPU time [s]: user 6.82 system 29.18 (user 6.7% system 28.8% total 35.5%)
Net I/O: 3.2 KB/s (0.0*10^6 bps)
Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0
Testowana strona otwierała się w tempie modemowym. Rozumiem, że usługa jest wciąż testowana, może trafiłem na jakiś felerny serwer, może finalnie sytuacja będzie zupełnie odmienna od obecnej.
Moim zdaniem takie współdzielone serwery nadają się jedynie do nauki czy testów. Nie postawiłbym tam niczego co miałoby być dostępne publicznie, bo taka usługa nie gwarantuje jakiejkolwiek wydajności.
Moje przygody z wirtualizacją zaczęły się kilka lat temu. Głównie wykorzystuję te narzędzie do celów testowo-edukacyjnych. Zanim popsuję jakiś system produkcyjny, mogę eksperymentować na swoim własnym poligonie.
Z myślą o Tym 2 lata temu, gdy modernizowałem swój domowy serwer, szarpnąłem się na czterordzeniowy procesor, większą ilość pamięci i kilka dysków w RAIDzie, aby mieć zapas mocy. Korzystam z linuksowej wersji darmowego VMware Server’a 2.0. Przez ostatni rok miałem mało czasu na zabawy, a po którejś aktualizacji jądra VMware przestał działać. Kilka dni temu postanowiłem go reanimować. Niestety okazało się, że od października 2009 nie ma aktualizacji, a co za Tym idzie brak oficjalnego wsparcia dla wersji kernela 2.6.3x.
Z pomocą przyszła społeczność OpenSource, Radu Cotescu napisał patcha dla kerneli 2.6.3x i skrypt instalacyjny, dla nowszych dystrybucji Ubuntu, Fedora i openSUSE. Więcej na ten temat w notce na jego blogu. Natomiast sam skrypt można pobrać bezpośrednio ze strony, jak również z repozytorium Git autora.
Korzystam z Debiana (squeeze/sid) – kernel 2.6.32, więc musiałem ręcznie przepakować, spatchować źródła modułów, aby uzyskać zgodność z moim systemem.
W tym celu należy pobrać ostatnią dostępną wersję VMware Server 2.0.2 w formie archiwum tar.gz – VMware-server-2.0.2-203138.i386.tar.gz oraz najnowszego patcha vmware-server-2.0.2-203138-update.patch
$ wget http://codebin.cotescu.com/vmware/vmware-server-2.0.2-203138-update.patch
Rozpakowujemy instalkę:
$ tar -xzf VMware-server-2.0.2-203138.i386.tar.gz
Przechodzimy do folderu ze źródłami modułów i wypakowujemy je:
$ cd vmware-server-distrib/lib/modules/source/
$ tar -xf vmci.tar
$ tar -xf vmmon.tar
$ tar -xf vmnet.tar
$ tar -xf vsock.tar
Następnie cofamy się do folderu vmware-server-distrib/ i patchujemy źródła:
$ cd ../../../
$ patch -p1 < ../VMware-server-2.0.2-203138-update.patch
Wracamy do źródeł i kasujemy archiwa ze źródłami i tworzymy nowe:
$ cd lib/modules/source/
$ rm -f vmci.tar
$ rm -f vmmon.tar
$ rm -f vmnet.tar
$ rm -f vsock.tar
$ tar -cf vmci.tar vmci-only/
$ tar -cf vmmon.tar vmmon-only/
$ tar -cf vmnet.tar vmnet-only/
$ tar -cf vsock.tar vsock-only/
Kolejny powrót do głównego katalogu vmware-server-distrib/ i uruchomienie instalacji jako root:
$ cd ../../../
$ sudo ./vmware-install.pl
Po tym zabiegu instalacja zakończyła się pomyślnie.
Jednakże, po uruchomieniu okazało się, że nie działa webowa konsola administracyjna.
Po wywołaniu jej domyślnego adresu: http://adres_ip_hosta:8222/ serwer przekierował mnie na SSLowy port https://adres_ip_hosta:8333/, gdzie ukazał się komunikat o błędzie 503 Service Unavailable.
Po analizie problemu okazało się, że źródło problemu leżało w załączonym Tomcacie, który nie chciał nasłuchiwać na IPv6.
Zastosowałem obejście, wymusiłem nasłuch konsoli webowej na IPv4, w tym celu trzeba dokonać zmian w pliku startowym VMware – /etc/init.d/vmware.
Odnajdujemy następującą sekcję:
# Web Access configuration
webAccess="${vmdb_answer_LIBDIR}/webAccess/java/jre1.5.0_15/bin/webAccess"
watchdog="${vmdb_answer_BINDIR}/vmware-watchdog"
webAccessServiceName="VMware Virtual Infrastructure Web Access"
CATALINA_HOME="${vmdb_answer_LIBDIR}/webAccess/tomcat/apache-tomcat-6.0.16"
webAccessOpts="-client -Xmx64m -XX:MinHeapFreeRatio=30 -XX:MaxHeapFreeRatio=30
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed
-classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-logging-api.jar
-Dcatalina.base=$CATALINA_HOME -Dcatalina.home=$CATALINA_HOME
-Djava.io.tmpdir=$CATALINA_HOME/temp org.apache.catalina.startup.Bootstrap"
A następnie do webAccessOpts dopisujemy parametr -Djava.net.preferIPv4Stack=true
webAccessOpts="-client -Xmx64m -XX:MinHeapFreeRatio=30 -XX:MaxHeapFreeRatio=30
-Djava.net.preferIPv4Stack=true
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed
-classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-logging-api.jar
-Dcatalina.base=$CATALINA_HOME -Dcatalina.home=$CATALINA_HOME
-Djava.io.tmpdir=$CATALINA_HOME/temp org.apache.catalina.startup.Bootstrap"
Uważam, że VMware Server jest najlepszym darmowym rozwiązaniem tego typu. Mam nadzieję, że projekt nie został porzucony i wkrótce będzie dostępna oficjalna aktualizacja.
Na koniec jeszcze taki „tips and tricks”, dopisanie poniższych 3 linijek w pliku .vmx przed uruchomieniem wirtualnej maszyny, aktywuje dostęp do niej po protokole VNC i umożliwia to podgląd od początku jej bootowania, coś ala KVM over IP. Szczególnie przydatne jeśli korzystamy z Mac OS X, gdzie pluginy przeglądarkowe nie działają.
RemoteDisplay.vnc.enabled = "TRUE"
RemoteDisplay.vnc.password = "hasełko"
RemoteDisplay.vnc.port = "5900"