Skip to content

Solaris 10 10/08

… czyli tak zwany popularnie “update 6″ ujrzał w końcu światło dzienne. Trochę zmian jest, większość związanych z ZFS-em (w tym także rootfs na ZFS). A także tak oczekiwane wynalazki jak “update on attach” dla zon czy możliwość ustawienia innego routingu w zonie typu “ip-shared”.
Pełna lista zmian w dokumencie “What’s New“.

Tym razem Sun dał lekko ciała i ciągle nie zaktualizował dokumentacji Solarisa, ale prawdopodobnie w ciągu najbliższych dni szybko to nadrobi.

PRS-505 – kolejny gadżet do kolekcji

PRS-505 Miało być na gwiazdkę. Dolar usiłował odbić się od dna i dno się oberwało. A znajomy akurat był za “Wielką Wodą” (thx grzegorz). To i skorzystałem z okazji… I tym sposobem kolejny gadżet trafił w moje ręce.

Oczekujących informacji na temat Linuksów, Solarisów czy innych Indiańców od razu z góry uprzedzę, że nic takiego tutaj nie będzie. W zasadzie wyjdzie z tego pewnie jakaś recenzja czytnika. Chciałem ją napisać wcześniej, ale ciągle brakowało czasu… I tym sposobem doczekałem się obiecywanego od kilku miesięcy nowego firmware’u – i taką wersję opisuję. Uwaga, wyjdzie pewnie długie. ;)

EDIT: poprawiłem trochę post, trochę bardziej zorganizowałem dołączyłem sekcję “jak to zrobić” – może komuś się przyda.


Wstępniak, czyli o co się w tym wszystkim rozchodzi?

Lubię czytać. Staram się, jak tylko jest możliwość, ale wiadomo jak to z czasem… Poza tym, co by nie mówić, książki, choć dają ten jedyny, niepowtarzalny “feeling”, zazwyczaj są niewygodne. Mniej bądź bardziej ciężkie, zajmują miejsce, bywają nieporęczne i tak dalej. Próbowałem czytać na laptopie – owszem, da się, ale mam awersję do wszelkiego typu “świecących” monitorów przy czytaniu dłuższych tekstów. Na dokładkę przy wyświetlaczach LCD męczę się szybciej niż przy monitorach CRT – są dla mnie zbyt kontrastowe. Mimo tego próbowałem czytać książki korzystając z PDA. Doszedłem do wniosku, że nawet ekran o rozdzielczości VGA tego nie ratuje – jest to za małe i zbyt nieporęczne. Od pewnego czasu przyglądałem się rozwiązaniom opartym o e-ink. W końcu przełamałem się i sprawiłem sobie jedno z takich urządzeń: Sony PRS-505.

Po wstępniaku, czyli co dostajemy do ręki?

Już wiedziałem po obejrzeniu wszelkich innych prezentacji, recenzji i tym podobnych, czego mniej więcej się spodziewać. Głównie na podstawie różnych recenzji poprzedniego modelu: PRS-500. Rozmiary tegoż urządzenia: 175 x 122 x 8mm (trochę większe niż format A6). Wymiary wyświetlacza: 123 x 91 mm (to z kolei troszkę mniej niż format A6). Waga, według oficjalnych materiałów (bez etui): 255g. O ile wymiary są mniej więcej takie, jak się spodziewałem, o tyle waga lekko mnie zaskoczyła – w pierwszej chwili wydawało się przyciężkie. W praktyce jednak nie męczy, trzyma się je bardzo dobrze nawet w jednej ręce. Wykonanie samego urządzenia bardzo na plus – czuć solidną robotę, wszystkie przyciski działają pewnie, nic nie trzeszczy, nie rozpada się. Cała obudowa jest z jakiegoś metalu (a przynajmniej metalizowana). Tyle plusów.

Etui? Kogoś powinni za to odstrzelić. O ile sam materiał jest jakoś tam akceptowalny (czymkolwiek to jest – przypomina jakiś skaj, od środka z kolei coś w rodzaju filcu), o tyle sposób spięcia go z czytnikiem jest straszny. Na grzbiecie okładki jest plastikowy uchwyt z dwoma “bolcami” od góry i od dołu, które wchodzą w odpowiadające im dziury w czytniku. Skutkuje to tym, że czytnik sobie lata, jak chce między jedną a drugą okładką. Sytuację lekko ratuje fakt, że w etui są ukryte małe magnesiki po rogach, które powodują, że okładka przylega do czytnika przy zamknięciu. Osobiście wolałbym, gdyby był w jakiś sposób mocowany “plecami” do jednej strony etui. Tak było zresztą w poprzednim modelu.
Z “usability” IMHO przydałoby się coś w rodzaju zakładki/kieszonki na kawałek kartki, notesika, czegokolwiek. Ale to takie tam moje marudzenie.

Popatrzmy bliżej…

Po obejrzeniu czytnika rzuca się w oczy: od góry wyłącznik, dwa sloty na karty (MS Pro Duo, jak na produkt Sony przystało, oraz SD), od dołu zawieszka do “smyczy” (naprawdę nie wyobrażam sobie kogokolwiek z czytnikiem noszonym na smyczy – ale różni ludzie, różne potrzeby…), mini-USB, gniazdo zasilania (brak zasilacza w komplecie), mini jack (do słuchawek), przyciski głośniej/ciszej. Na czytniku trochę guziczków – w zasadzie same się opisują. Całość moim zdaniem wykonana zgrabnie, estetycznie.

3, 2, 1… Odpalamy!

Przykładowa fotografia #1 Przykładowa fotografia #2 To, co spowodowało w pierwszej chwili po włączeniu natychmiastowy opad szczęki i problemy z pozbieraniem jej z podłogi, to wyświetlacz. Zdjęcia, jakiekolwiek by nie były (a że te obok nie grzeszą jakością pod jakimkolwiek względem, mam tego świadomość), nie są w stanie tego oddać.
Drugi opad szczęki zaliczyłem po otworzeniu przykładowych fotografii. Ja wiem, że można wiele, ale zdając sobie sprawę z tego, że ten wyświetlacz dysponuje 8 odcieniami szarości i stosunkowo niewielką rozdzielczością (ok. 800×600), to po prostu… WOW. Nawet komiksy wyglądają świetnie.

Wyświetlacz (z racji tego, że imituje papier) ma dość ciekawą właściwość – im jaśniej, im ostrzej oświetlony, tym bardziej czytelny i kontrastowy. Tło nie jest białe, lecz szare. Tak samo tekst nie jest czarny – jest ciemnoszary. Widać to na zdjęciach w porównaniu z książkami. Cecha ta może być irytująca przy złym oświetleniu, jednak przy jasnym wyświetlacz nabiera “blasku” i kontrastu. W świetle słonecznym wygląda wręcz cudownie. Faktura ekranu przypomina lekko pergaminowany papier. Chociaż sprawia wrażenie “błyszczącego”, nie działa jednak jak lustro, w związku z tym nie trzeba się zmagać w jakimś strasznym stopniu z refleksami światła. Występują mniej więcej w takim samym stopniu, jak właście przy papierze pergaminowanym.
Co jeszcze w nim ciekawego? Hm, wada – jest wolny. Zmiana ekranu trwa niecałą sekundę – ekran na moment robi się zaczerniony, po czym pojawia się właściwy obraz. Przy czytaniu moim zdaniem to nie przeszkadza, denerwujące jest przy poruszaniu się po menu. Na szczęście cyfry z boku działają w nim jak skróty (nie wyobrażam sobie przejeżdżanie strzałkami w celu wybrania konkretnej pozycji), po drugie czytnik buforuje wciśnięte klawisze – więc jeśli już się zna strukturę menu, to można w ciemno wcisnąć jakąś sekwencję i po prostu chwilkę poczekać. Po różnych forach można spotkać fanatyków, którzy twierdzą, że tego nie widzą. ;)

Jak tego używać?

Nie zamierzam robić tutaj przepisywać instrukcji, czy powielać to, co zostało napisane w setkach innych miejsc. Zresztą – obsługa jest prawie tak prosta, jak obsługa cepa.
Struktura menu – jak dla mnie jest dość proste, intuicyjne, bez zbędnych wynalazków. Zasadniczo mamy dostęp do książek – sortowanie po tytułach, po autorach, po “kolekcjach” (czyli tak naprawdę po tagach). Dla każdej książki mamy kontynuację czytania, skok na początek, koniec, spis treści, naszą “historię” czytania, zakładki, informacje o książce. Czytanie książki – guziczek “w prawo” – strona do przodu, guziczek “w lewo” – strona do tyłu, przytrzymanie któregoś kilka sekund, to skok o 10 stron we wskazaną stronę, wystukane cyferki zatwierdzone Enterem – skok do strony o podanym numerze. Kliknięcie “lupki” – zmiana rozmiaru tekstu, przytrzymanie “lupki” obrócenie całości o 90 stopni.
Oprócz tego z menu jest oczywiście dostęp do odtwarzacza muzyki i przeglądania grafiki. W ustawieniach możemy sobie ustawić aktualny czas, wyłączyć całkowicie czytnik (domyślnie jest tylko usypiany), przywrócić ustawienia domyślne, wybrać orientację (pionowa/pozioma). W ogólności – nic wyszukanego, ale doskonale spełniające rolę, do jakiej zostało zaprojektowane.

Łyżka dziegciu, czyli jak to jest z tymi formatami…

Sam wyświetlacz to nie wszystko, w końcu powinno na tym dać się czytać książki. Jak z tym jest? A szczerze powiedziawszy – różnie. Chociaż po uwzględnieniu nowego oprogramowania (które, odnotuję z kronikarskiego obowiązku, pokazało się 25 lipca 2008) – całkiem nieźle.

Czytnik z formatów tekstowych natywnie obsługuje: LRF (znany także jako BBeB) i jego odmiana z DRM-em (LRX), RTF, TXT, PDF (nowy firmware także wersję z DRM), od ostatniej wersji firmware’u EPUB (także wersję z DRM). Do tego potrafi uprzyjemnić czas odtwarzając w tle MP3 oraz AAC. Pozwala także przeglądać grafikę w formatach JPG, GIF (animacji radziłbym nie oczekiwać), PNG oraz BMP. Natywnie nie umie obsługiwać DOC – aplikacja dostarczana z czytnikiem (eBook Library) w przypadku posiadania zainstalowanego Microsoft Word samoczynnie konwertuje DOC na RTF.

Najmniej bezproblemowymi formatami są LRF (jakby nie patrzeć, to natywny format dla czytnika) oraz EPUB (przykład na zdjęciach obok). Po prostu działają.

Drugim stosunkowo najmniej bezproblemowym formatem jest TXT. Z jedną uwagą – jeśli korzystamy z tekstu nie po angielsku, wskazane jest, żeby był zapisany w UTF-8. Chociaż to nie wystarczy (o czym będzie niżej).

RTF? Jest dobrze, mogłoby być lepiej. Najbardziej drażniąca wada – nie potrafi sobie poradzić z obrazkami w dokumencie.

PDF – tutaj w pierwszej wersji firmware’u Sony dało trochę ciała. Sprawa pierwsza: rendering dokumentów. Na tej stronie jest to pokazane – otóż wszystkie dokumenty PDF, niezależnie od sposobu ich tworzenia, mają dodatkowe szare tło. Powoduje to zmniejszenie kontrastu dla całego dokumentu, “rozmycie” tekstu. Dodatkowo obsługa PDF jest woooolllnaaaaa… O ile jest on stworzony mniej więcej w natywnej rozdzielczości urządzenia, to jakoś idzie przeglądać, o tyle skalowanie czegoś bardziej nietypowego (Letter, A4) jest strasznie wolne. Z nową wersją firmware’u sytuacja na szczęście dość znacznie się poprawiła – po pierwsze – jest szybko, po drugie – nie ma “rozmywającego” wszystko tła, po trzecie – w poprawnie zrobionym PDF-ie czytnik “rozumie” tekst i potrafi zrobić jego, jak to Sony określiło, “reflow” (przykład obok). Trochę to się sypie w miejscach, gdzie mamy dużo grafiki, na szczęście można wrócić do standardowego renderowania strony. Wydaje mi się, że jak na możliwości tak małego czytnika, poradzono sobie z tym całkiem nieźle.

Pozostałe formaty trzeba niestety konwertować (LIT, PDB, HTML, itd). I z tym w większości trzeba sobie radzić samemu. Na szczęście nie ma problemu ze znalezieniem odpowiednich narzędzi. Użytkownicy uniksowatych pewnie nawet się ucieszą – większość konwerterów, to skrypty perlowe, bashowe, pythonowe wykorzystujące typowe narzędzia takie jak ImageMagick, Ghostscript i tym podobne. Na szczęście rzesza użytkowników czytnika jest całkiem spora, powstało więc też kilka przydatnych narzędzi. Jednym z wartych uwagi jest calibre (wcześniej znane jako libprs500). Jest to w zasadzie kombajn (napisany w Pythonie) do zarządzania sobie bazą ebooków, poprawiania tagów, konwertowania między różnymi formatami, synchronizacją czytnika – w dodatku rozwija się dość intensywnie.

“Zadanie kata na lace” czyli jak to jest z polskimi literkami

Wspomniałem powyżej o problemach z polskimi znakami – okazuje się, że w XXI wieku producenci myślą czasem “dziwnie”. Czytnik w zasadzie we wszystkich dokumentach spodziewa się znaków w UTF-8 (o ile nie ma narzuconego kodowania) – tu plus dla niego. Minusem natomiast jest, że wbudowane czcionki zawierają w zasadzie alfabet łaciński plus kilka pojedynczych dziwnych znaków. Ja rozumiem, że to jest przeznaczone głównie na rynek amerykański, ale żeby aż tak… W warunkach polskich skutkuje to malowniczymi “krzaczkami”. Z sytuacją można radzić sobie na dwa sposoby: albo konwertując książki na LRF/EPUB/PDF dołączając do dokumentu odpowiednie czcionki, albo wykonując “nieoficjalny upgrade” czytnika podmieniając wbudowane czcionki – Rosjanie przychodzą nam z pomocą – dają odpowiednie narzędzie do upgrade’u, czcionki i inne przeróbki (opis tego plus narzędzia i odpowiednie pliki znajduje się na końcu artykułu). Bo okazało się, że interfejs użytkownika można dość łatwo poprawiać – momentalnie powstały poprawki dodające nowe funkcje (zegarek w pasku statusu, zmiana funkcji klawiszy, nawet gry – na razie wiadomo mi o dwóch: Sudoku i FiveBalls).

Dołączone przykładowe książki mi się znudziły. Jak wrzucić w to swoje książki?

Albo poprzez USB, albo włożyć kartę z książkami. Z nowym oprogramowaniem czytnik nauczył się też w końcu rozumieć SDHC (podobno poprzednia wersja nie umiała, nie zauważyłem tego nawet z braku takowej karty). Po podpięciu czytnika poprzez USB widzimy po prostu trzy “dyski” – pierwszy to pamięć wewnętrzna czytnika (256MB minus firmware – dla użytkownika zostaje ok. 210MB) drugi to karta MS, trzeci – karta SD. Wada – w momencie, kiedy jesteśmy podpięci kablem USB do komputera, nie można korzystać z czytnika.

Przy wkładaniu/wyjmowaniu karty czytnik zauważa każdą taką operację i “indeksuje” sobie zawartość. Na każdym z nośników tworzy sobie własny “cache”, w którym przechowuje listę książek, ich historię, a także coś w rodzaju “preformatu” dla niektórych formatów (LRF/RTF/TXT). O co chodzi? Pierwsze otwarcie dokumentu powoduje jego wstępną analizę, sformatowanie i podział na strony przy określonym rozmiarze czcionki. Niestety jest to operacja dość czasochłonna (i tu kolejny plus dla nowego firmware’u – w starym przeformatowanie 600-stronicowego RTF zajmowało z 5 minut, w nowym – niecałą minutę). Zmiana rozmiaru wymusza ponowne przeformatowanie – czytnik to właśnie zapisuje sobie w cache’u i przy kolejnej zmianie na już używany rozmiar jest błyskawiczna. Procesu tego można uniknąć korzystając z możliwości wrzucania książek przez dostarczoną aplikację Sony “eBook Library” – aplikacja ta robi preformatowanie dokumentu na komputerze i dodaje odpowiednie wpisy do cache’a. I tak szczerze powiedziawszy, to jedyna dobra rzecz, jaką robi.

No fajnie, ale jak długo mogę z tego czytać? Bo laptop to po kilku godzinach się wyłącza…

Bateria – to jest w tym czytniku bardzo na plus. Malkontenci narzekają, że nie jest wymienna… Podejrzewam, że zanim padnie, to z pięć nowszych generacji czytnika już będzie. E-ink ma inną specyfikę działania niż typowy wyświetlacz – pobiera prąd tylko podczas zmiany obrazu. Dlatego zużycie prądu dla czytnika jest określone w liczbie zmiany stron. Wartość katalogowa mówi o 7500 – na oko doszedłem gdzieś do wartości 5000 zmian stron przy czytaniu książek z karty SD (starczyło mi to na ładnych kilka tygodni) – elektronika coś tam na pewno też pobiera, więc uważam, że jest to całkiem niezła wartość. Spokojnie można sobie zabrać czytnik na dłuższy wyjazd nie martwiąc się o ładowarkę. Chyba że zachce nam się słuchać MP3 w tle – wtedy może nam nawet na dzień nie wystarczyć.
Ładowanie możliwe jest na dwa sposoby – albo poprzez USB (tylko wtedy nie można korzystać z czytnika), albo poprzez jakikolwiek zasilacz 5V (który trzeba sobie samemu dokupić – w moim przypadku idealnie pasuje zasilacz od PDA).

Skoro wspomniałem wyżej o MP3 – czytnik nie ma żadnego głośniczka – muzyki możemy sobie posłuchać tylko korzystając ze słuchawek. IMO bardzo dobrze – nie hałasuje nam nic zbędnie. A jakość dźwięku na moje ucho jest całkiem przyzwoita.

The end (almost)

Zazwyczaj każdy, kto wyrzucił te kilkaset dolarów na gadżet będzie szedł w zaparte, że to był dobry wydatek. Napiszę tak – osobiście nie żałuję. W tej chwili trudno mi powiedzieć, czy znając wszystkie wady i zalety zarówno czytnika, jak i rynku książek elektronicznych (a ten mooocno kuleje) kupiłbym go jeszcze raz. Najbardziej doskwiera mi brak możliwości kupienia książek w postaci elektronicznej na rynku polskim. Czytanie “piratów” męczy – skład, literówki, błędy, to wszystko robi strasznie negatywne wrażenie. Coraz lepiej za to jest “na zachodzie”. Jest kilka księgarni sprzedających czy to normalną beletrystykę (TOR, BooksOnBoard), czy literaturę techniczną (tu bardzo pozytywnie zaskakuje mnie O’Reilly). Jest też trochę serwisów oferujących darmowe książki – czy to z projektu Gutenberg, czy z innych miejsc. Jak chociażby FeedBooks. Po różnych forach widzę, że coraz więcej bibliotek (zwłaszcza w Stanach) prowadzi “wypożyczalnię” ebooków. Dużą nadzieję wiążę z formatem EPUB – wydaje się, że ma dość spore poparcie ze strony i wydawców, i sklepów – obym się nie mylił. Trochę szkoda, że Amazon usiłuje tak usilnie forsować Mobipocket w związku ze swoim Kindle. Ale trudno im się dziwić. A u nas? A u nas nic. Znajdzie się może kilka stron z darmowymi książkami, kilka “wydawnictw” sprzedających jakieś romansidła bliżej nieokreślonych autorów lub setki wersji poradników raczej nikomu nieprzydatnych… Liczę na to, że kiedyś jednak będzie lepiej. I może na tym skończę.

And now… The larch

Czyli obiecana instrukcja poprawienia czcionek “dla leniwych”. Mniej leniwi znajdą pewnie sami sobie informacje, jak podstawić własne czcionki/zmienić wielkość czcionki w menu i inne cuda. Oczywiście “disklejmer”: SOA #1, nie biorę odpowiedzialności, jeśli rozwalisz sobie swój własny czytnik.

Uwaga: zanim weźmiesz się za cokolwiek, upewnij się, że karta pamięci, której będziesz używał, jest na pewno w pełni sprawna.

Zakładam, że używasz PRS-505 z najnowszym firmware. Zatem powinieneś ściągnąć sobie “Universal Flasher 2.0″ i rozpakować na kartę pamięci.
Następnie należy ściągnąć “obraz” firmware’u z dołączonymi odpowiednimi fontami.
Potem:

  • rozpakowujemy go bezpośrednio na kartę
  • wkładamy kartę do czytnika, czekamy chwilę
  • Wybieramy opcję “6: flash the image” (wciskając 6) i czekamy chwilę – czytnik po kilku minutach powinien się zresetować (w czasie resetu możemy wyciągnąć kartę, żeby “flasher” się nie uruchomił ponownie)

I voilla!

The End

Jumpstart: losowe hasło roota

Solarisowy Jumpstart po oswojeniu jest całkiem niezłym rozwiązaniem. Zwłaszcza, jeśli instaluje się całą masę jednakowych maszyn. W przypadku różnorodnego sprzętu i różnych środowisk w pierwszej chwili można dostać białej gorączki, jak się pomyśli o tym, że dla każdego typu maszyny może być potrzebny osobny profil. Ale jeśli mamy mniej więcej jasne zasady – da się to wszystko fajnie oskryptowić. Dość ciekawym rozwiązaniem są profile tworzone dynamicznie przez skrypt zaczynający instalację – przy odrobinie wysiłku można zrobić niezłe cuda.
Małym minusem może być sysidcfg z parametrem “root_password” – o ile w warunkach domowych zazwyczaj nie jest to problem, to w większym środowisku zdecydowanie nie najszczęśliwszym pomysłem jest posiadanie tego samego hasła na -nastu czy -dziesięciu maszynach. Oczywiście, że można (trzeba) po instalacji je zmienić – tylko kto o tym zawsze pamięta? W zależności od przyjętej jakiejś tam polityki bezpieczeństwa, hasło to prędzej czy później pewnie ulegnie zmianie. Oczywiście można nic nie ustawiać – instalator wtedy poprosi o wklepanie odpowiedniego hasła. Ale to też nie jest fantastyczne rozwiązanie.

A gdyby tak generować losowe hasło w skrypcie kończącym instalację i zapisywać je gdzieś w bezpiecznym miejscu/wyświetlać/cokolwiek sobie użytkownik wymyśli? Pomysł genialny, wydaje się prosty i… się sporo naszukałem, jak wygenerować odpowiedni “hash” hasła na etapie instalacji systemu. Oświecenie przyszło trochę później – przecież w tym momencie w /a mam już zainstalowany system. Powstał w związku z tym kawałek takiego przykładowego (o dziwo działającego), chociaż niezbyt ładnego kodu do skryptu kończącego instalację:

### Password generation

while [ "X${inst_name}" = "X" ]; do
    printf "*** Enter /etc/nodename: "
    read inst_name
done

echo ${inst_name} > /a/etc/nodename

inst_date=`date +"%Y/%m/%d %H:%M"`

echo "Generating password for ${inst_name}.."
PASS=`dd if=/dev/urandom bs=512 count=100 2> /dev/null | digest -a md5 | awk ´{print substr($1,2,10)}´`
HASH=`/a/usr/sfw/bin/openssl passwd -1 ${PASS}`

echo "hostname                  inst. date       password  "
echo "-----------------------------------------------------"

printf "%-25s %-16s %-10s\n" "${inst_name}" "${inst_date}" "${PASS}"

ed -s /a/etc/shadow <<EOF
,s#^root:[^:]*#root:$HASH#
w
q
EOF

# set the flag so sysidroot won't prompt for the root password
ed -s ${SI_SYS_STATE} <<EOF
g/# root password/s/^./1/
w
q
EOF

Co z tym dalej? A to już Twoja, czytelniku, inwencja…

Cisco Discovery Protocol

Spotkała Was kiedyś taka sytuacja, że chcecie coś zrobić z konkretnym serwerem pod kątem sieciowym (na przykład zmienić VLAN na switchu), ale okazuje się, że choć kabelki do niego są podłączone, to w gąszczu pozostałych ciężko jest znaleźć, gdzie on tak naprawdę jest wpięty? A na dokładkę w międzyczasie serwer służył piętnastu innym celom i nikt nie zatroszczył się o poprawienie opisu portu na switchu, więc tym bardziej ciężko odtworzyć informację… W takiej sytuacji z pomocą może przyjść na przykład CDP (Cisco Discovery Protocol).
Co to takiego? Protokół warstwy drugiej (łącza danych), wymyślony przez Cisco, który w najprostszym ujęciu służy do informowania innych urządzeń bezpośrednio podłączonych o swojej obecności. W standardowym pakiecie zazwyczaj jest informacja o nazwie i modelu urządzenia, nazwa hosta, adres IP, nazwa portu, numer VLAN, domenie VTP i kilka innych mniej bądź bardziej użytecznych informacji. CDP domyślnie jest włączone na wszystkich urządzeniach sieciowych Cisco (ze standardowymi parametrami – częstotliwość rozgłaszania: 60 sekund, czas wygasania informacji: 180 sekund).
Co to nam daje? A z naszego punktu widzenia to, że wystarczy na hoście z podniesionym linkiem odpalić na czas do 60 sekund jakiegoś tcpdumpa czy snoopa, a uzyskamy od switcha informację o jego nazwie i porcie, gdzie jesteśmy wpięci:

root@ant:~# tcpdump -i eth0 -s 1500 -v -c 1 'ether [20:2] = 0x2000'
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 1500 bytes
21:53:10.844569 CDPv2, ttl: 180s, checksum: 692 (unverified), length 471
        Device-ID (0x01), length: 19 bytes: 'sw4k-0.xxxxxxxxxxxxxx'
/.../
        Port-ID (0x03), length: 19 bytes: 'GigabitEthernet4/48'
/.../

Pod Linuksem sprawa jest względnie prosta – tcpdump rozumie pakiety CDP i jeśli tylko odpowiedni przechwycimy, to wyświetli nam wszystkie potrzebne zazwyczaj informacje. Trochę gorzej jest pod Solarisem – chociaż snoop jest potężnym narzędziem, to akurat pakietów CDP nie rozumie. Pozostaje nam posłużyć się jakimś zewnętrznym narzędziem. Powodzenia w szukaniu – mi udało się znaleźć tylko coś takiego.
Z racji, że fajnie byłoby mieć takie polecenie w systemie, które nie wymaga uczenia się magicznej składni polecenia do sniffowania ruchu, wziąłem powyższy skrypt, poprzerabiałem go trochę (autor twierdzi, że działa pod Solarisem – nie wiem jakim cudem, mi OOTB nie chciał) i niniejszym powstała moja wersja tegoż skryptu:

root@ant:~# uname -a
Linux ant 2.6.24-16-386 #1 Thu Apr 10 12:50:06 UTC 2008 i686 GNU/Linux
root@ant:~# ./cdpinfo.pl -i eth0
Switch: sw4k-0.xxxxxxxxxxxxxx
Port:   GigabitEthernet4/48
VLAN:   527
server2.netinstall.srv:root ~ > uname -a
SunOS server2.netinstall.srv 5.10 Generic_127112-10 i86pc i386 i86pc
server2.netinstall.srv:root ~ > ./cdpinfo.pl -i nge0
Switch: sw6k5.adm.xxxxxxxxxxxxxx
Port:   GigabitEthernet9/22
VLAN:   66

Nie jest on całkiem idiotoodporny, nie jest najpiękniejszy i mocno wierzy w inteligencję ewentualnego użytkownika. Ale pomimo tego: SOA#1. U mnie wylądowało wśród pomocnych skryptów instalowanych domyślnie z Jumpstartu/Kickstartu. Może komuś się jeszcze przyda (o ja, naiwny…). Jakby ktoś jednak miał jakieś uwagi, pomysły, pretensje, cokolwiek – wie, gdzie mnie szukać.

Gorzkie żale – ciąg dalszy

Masz produkcyjnego Solarisa z ZFS-em, chcesz przetestować pod jakimś kątem Nevadę z myślą, że wrócisz potem do Solarisa? Myślisz, że jeśli nie wykonasz upgrade’u puli ZFS, to jesteś bezpieczny?
A g…, za przeproszeniem, prawda.

solaris.srv:root ~ # zpool import pula
cannot mount 'pula/fs': Operation not supported
Apr 16 19:51:58 solaris.srv zfs: Mismatched versions:  File system is version 2 on-disk format,
which is incompatible with this software version 1!
solaris.srv:root ~ # zpool upgrade
This system is currently running ZFS version 4.

All pools are formatted using this version.
solaris.srv:root ~ # zfs list
NAME                                           USED  AVAIL  REFER  MOUNTPOINT
pula                                          3,38T  6,44T  23,5K  /pula
pula/fs                                       3,35T  6,44T    18K  /pula/fs
pula/fs/d001                                  56,8G  6,44T  22,7G  /pula/fs/d001
/.../
solaris.srv:root ~ # uname -a
SunOS solaris.srv 5.10 Generic_127128-11 i86pc i386 i86pc
solaris.srv:root ~ #

Miarka się przebrała

Ech… Zbierało się od dłuższego czasu, ale dzisiaj coś we mnie pękło.
Ja naprawdę lubię sprzęt Suna. Zazwyczaj jest i solidnie zrobiony, i można w nim spotkać ciekawe rozwiązania, bywa też innowacyjny (na przykład takie Thumpery czy ostatnie T5240). Ale czy tam naprawdę nikt nie potrafi czasem pomyśleć, jak solidnie zrobić SP? W zamian tego mamy na dzień dzisiejszy: LOM, ALOM, ALOMv4, SP, ELOM (przynajmniej w dwóch wersjach), ILOM (przynajmniej w dwóch wersjach), RSC. Pominąłem coś?
Admin, jak to admin, musi czasem coś zrobić, zmienić, podejrzeć co się dzieje. Zainstalować system. Cokolwiek. Osobiście najczęściej preferuję CLI, bo jest szybszy, niż przerośnięte nadmiarem Javy wszelkiego typu WebConsole. I działają… niestety, jak się okazuje, zazwyczaj. Dzisiaj miarkę przebrał X4150.

A poniżej skrótowa charakterystyka serwerków z rodziny x86:

  • X4100/X4200/X4500 – tam mamy ILOM. I to jedyny sprzęt z kategorii x86, gdzie zarządzanie jeszcze mi się podoba. Jest w miarę proste, spójne, takie, jak powinno być W /SP mamy zebrane wszystkie rzeczy związane z SP, w /SYS – z serwerem. Intuicyjne. Trudno mi się do czegokolwiek przyczepić.
  • X2100M2/X2200M2 – OK, to najtańsze możliwe serwerki w ofercie Suna chyba. Dobrze, że przynajmniej mają zarządzanie (w postaci ELOM) w przeciwieństwie do ich poprzedników, gdzie było to opcją. Ale czy naprawdę konieczne były utrudnienia w postaci totalnego przeorganizowania? Po cholerę rezygnować z /SYS i wrzucać to wszystko w bliżej nieodgadnione miejsca w /SP? Po co zmieniać standardowe od lat wyjście konsoli z ttya/9600 na ttyb/115200? W ostatnim firmware przynajmniej prędkość poprawili… Ale ttyb zostało. Tak, wiem, że 9600 to cholernie wolno, ale dopóki większość systemów domyślnie używa takiej prędkości, to ja bym zostawił i nie mieszał.
  • Stare, już od jakiegoś czasu EOL, ale jeszcze przez niektórych używane v20z/v40z – pierwsze sunowe serwery x86 z całkiem jeszcze innym SP. Wybaczmy im tę pomyłkę, uczyli się jeszcze…
  • X4150 – porażka na całej linii – tak, tu też mamy ELOM. Totalnie inny od tego poprzedniego. Żeby było śmieszniej – niech ktoś mi wyjaśni różnicę między jednym i drugim:

    /SP/network -> set IPAddress=10.10.10.10
    set 'IPAddress' to '10.10.10.10'
    /SP/network -> set IPAddress=10.0.100.50
    Invalid IP
    Could not set 'IPAddress' to '10.0.100.50'

    Oczywiście nie rozumiem też, czym kierował się producent, że losowe modele mają w BIOS-ie w ogóle wyłączone “przypięcie” konsoli, SP, cokolwiek do konsoli szeregowej. Bo po co? Żeby było śmieszniej konsola “szeregowa” wewnątrz działa na ttyb/115200. Nie, nie da się tego zmienić. Tak, admin może sobie przytargać monitor i klawiaturę, podpiąć, w BIOS-ie to sobie wyklikać. Tylko kto przy takim sprzęcie używa klawiatury i monitora? Owszem, w większych serwerowniach zazwyczaj jest jeden/kilka większych KVM-ów dostępnych po sieci. Ale przecież Suny mają te swoje fantastyczne interfejsy dostępne przez WWW, po co ktoś będzie ciągnął tam jeszcze dodatkowy kabelek, żeby podpiąć się pod KVM-a, tylko po to, żeby włączyć przekierowanie?

Prowadzi to do sytuacji, że jak widzę kolejny serwer Suna spod znaku x86, to powoli zaczynam mieć strach przed włączeniem go do prądu. Bo nie wiadomo, czym tym razem zaskoczy.
Już nie wspominam o nakładzie czasu niezbędnym na przeszkolenie siebie i innych z obsługi tych konsol… Bo weź tu potem pamiętaj w sytuacji kryzysowej, że ta maszyna to jest konkretnie x4150 i trzeba zrobić “start /SP/AgentInfo/Console”, a ta druga to x4100 i trzeba “start /SP/console”, a ta trzecia to stare v20z i należy wklepać “platform console”. I że z tego ostatniego ucieka się z powrotem do SP kombosem godnym emacsowca (nie ubliżając im), a w poprzednich jeszcze inaczej. Owszem, jest to w dokumentacji. Tylko w przypadku awarii nikt nie ma czasu tego szukać.
Sparci… Tak, tu jest zdecydowanie spójniej. Chociaż przy ostatnich Niagarach (T5x20/T5x40) ktoś wpadł na pomysł wpakowania ILOM-a. Oczywiście to jeszcze inny ILOM niż ten chociażby w Thumperach, a jakże. Dobrze przynajmniej, że jest tryb “emulacji” ALOM-a.

No, ulżyło mi. A w ramach prezentu urodzinowego i chwalenia się jakiś czas temu sprawiłem sobie drugą część poprzedniego prezentu, czyli “Solaris Internals”. Od razu lepiej. ;)

UPDATE:
Narzekałem wyżej na X4150? To ponarzekam do końca. Zrobiłem upgrade firmware’u do najnowszej wersji. Wzięli mnie z zaskoczenia, wewnętrzna konsola szeregowa nagle zrobiła się ttyb/9600. Ale jakby mało było niespodzianek:

unknown console login: Input Char: 72
rInput Char: 6F
oInput Char: 6F
oInput Char: 74
tInput Char: D

Password:

Komuś przy wypuszczaniu BIOS-u chyba zapomniało się jakiś debug wyłączyć…

UPDATE2:
Na chłodno przejrzałem posta jeszcze raz i nie żałuję niczego, co tu napisałem. Mało tego, poprawiłem i dopisałem jeszcze parę rzeczy. A jak już narzekać, to na całego, a co!

Ho, ho, ho!

Spóźnione, ale co mi tam: Merry Christmas/Happy Holidays!*. A ja się pochwalę, a co:
Solaris Performance & Tools
Trzeba wiedzieć, co zamawiać u Mikołaja/Gwiazdora/Dziadka Mroza/roznosiciela prezentów*.

*) Niepotrzebne skreślić.

Pożegnanie mainframe’a

Wzruszająca ceremonia ;).

I niech nikt nie mówi, że sysadmini nie umieją się bawić… ;)

“Magiczne” scsi-options

To takie coś, co się ustawia czasem w konfiguracji odpowiednich sterowników w Solarisie. Na przykład dla mpt(7D). Albo innych.
Przykładowa konfiguracja może wyglądać tak (z man mpt):

Example 1: Example 1: Using the mpt Configuration File

Create a file called /kernel/drv/mpt.conf, then add the fol-
lowing line:

scsi-options=0×78;

The above example disables tagged queuing, Fast/Ultra SCSI,
and wide mode for all mpt instances.

Powodzenia w szukaniu w manualach, czemu konkretnie ta wartość odpowiada konkretnie tym opcjom.
Odpowiedź można znaleźć w /usr/include/sys/scsi/conf/autoconf.h

/*
 * SCSI subsystem options
 */

/*
 * Following are for debugging purposes (few Sun drivers support this)
 */
#define SCSI_DEBUG_TGT  0x1     /* debug statements in target drivers */
#define SCSI_DEBUG_LIB  0x2     /* debug statements in library */
#define SCSI_DEBUG_HA   0x4     /* debug statements in host adapters */

/*
 * Following are applicable to all interconnects
 */
#define SCSI_OPTIONS_LINK       0x10    /* Global linked commands */
#define SCSI_OPTIONS_TAG        0x80    /* Global tagged command support */

/*
 * Following are for parallel SCSI only
 */
#define SCSI_OPTIONS_DR         0x8     /* Global disconnect/reconnect  */
#define SCSI_OPTIONS_SYNC       0x20    /* Global synchronous xfer capability */
#define SCSI_OPTIONS_PARITY     0x40    /* Global parity support */
#define SCSI_OPTIONS_FAST       0x100   /* Global FAST scsi support */
#define SCSI_OPTIONS_WIDE       0x200   /* Global WIDE scsi support */
#define SCSI_OPTIONS_FAST20     0x400   /* Global FAST20 scsi support */
#define SCSI_OPTIONS_FAST40     0x800   /* Global FAST40 scsi support */
#define SCSI_OPTIONS_FAST80     0x1000  /* Global FAST80 scsi support */
#define SCSI_OPTIONS_FAST160    0x2000  /* Global FAST160 scsi support */
#define SCSI_OPTIONS_FAST320    0x4000  /* Global FAST320 scsi support */

/*
 * the following 3 bits are for being able to limit the max. number of LUNs
 * a nexus driver will allow -- "default" means that the adapter will
 * continue its default behaviour
 */
#define SCSI_OPTIONS_NLUNS_MASK         (0x70000)

#define SCSI_OPTIONS_NLUNS_DEFAULT      0x00000
#define SCSI_OPTIONS_NLUNS_1            0x10000
#define SCSI_OPTIONS_NLUNS_8            0x20000
#define SCSI_OPTIONS_NLUNS_16           0x30000
#define SCSI_OPTIONS_NLUNS_32           0x40000

#define SCSI_OPTIONS_NLUNS(n)           ((n) & SCSI_OPTIONS_NLUNS_MASK)

#define SCSI_OPTIONS_QAS        0x100000 /* Global Quick Arbitration Select */

Jeszcze jakby kogoś interesowało, to domyślnie w s10u4 scsi-options=0x107ff8 (zarówno na sparcu, jak i x86). Powodzenia w zmienianiu. :)

T5220 – przedsmak możliwości

Maszynka… Nic rewelacyjnego, jak poniżej:

niagara2.dev:root ~ > psrinfo -pv
The physical processor has 64 virtual processors (0-63)
  UltraSPARC-T2 (cpuid 0 clock 1167 MHz)
niagara2.dev:root ~ > prtconf | grep Memory
Memory size: 32640 Megabytes
niagara2.dev:root ~ > uname -a
SunOS niagara2.dev 5.10 Generic_120011-14 sun4v sparc SUNW,SPARC-Enterprise-T5220

Wiem, że niżej zamieszczam test typowo syntetyczny, wiem, że to nijak musi się przekładać na faktyczne warunki “bojowe” (i zapewne się nie przekłada), niemniej jednak liczby robią wrażenie:

niagara2.dev:root ~ > openssl speed rsa1024 -engine pkcs11
engine "pkcs11" set.
Doing 1024 bit private rsa's for 10s: 15509 1024 bit private RSA's in 0.60s
Doing 1024 bit public rsa's for 10s: 29934 1024 bit public RSA's in 0.90s
OpenSSL 0.9.7d 17 Mar 2004 (+ security patches to 2006-09-29)
built on: date not available
options:bn(64,32) md2(int) rc4(ptr,char) des(ptr,risc1,16,long) aes(partial) blowfish(ptr)
compiler: information not available
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
                  sign    verify    sign/s verify/s
rsa 1024 bits   0.0000s   0.0000s  25848.3  33260.0

Dla porównania analogiczne testy ze stojącego akurat obok X2200M2 (w środku 2 razy Opteron 2220 z zegarem 2,8GHz):

x2200m2.dev:root ~ > openssl speed rsa1024 -engine pkcs11
engine "pkcs11" set.
Doing 1024 bit private rsa's for 10s: 5364 1024 bit private RSA's in 10.00s
Doing 1024 bit public rsa's for 10s: 71792 1024 bit public RSA's in 9.99s
OpenSSL 0.9.7d 17 Mar 2004 (+ security patches to 2006-09-29)
built on: date not available
options:bn(64,32) md2(int) rc4(ptr,char) des(ptr,cisc,16,long) aes(partial) blowfish(ptr)
compiler: information not available
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
                  sign    verify    sign/s verify/s
rsa 1024 bits   0.0019s   0.0001s    536.4   7186.4

Tak, wiem, że T2 ma 8 rdzeni, w przypadku Opteronów sumarycznie z dwóch procesorów miałem “aż” cztery. Ale nie w tym jest siła. Wyniki dla jednego wątku openssl, najpierw T5220:

niagara2.dev:root ~ > openssl speed rsa1024 -engine pkcs11 -multi 1
engine "pkcs11" set.
Forked child 0
+DTP:1024:private:rsa:10
+R1:15470:1024:10.00
+DTP:1024:public:rsa:10
+R2:32576:1024:10.01
Got: +F2:1:1024:0.000647:0.000307 from 0
OpenSSL 0.9.7d 17 Mar 2004 (+ security patches to 2006-09-29)
built on: date not available
options:bn(64,32) md2(int) rc4(ptr,char) des(ptr,risc1,16,long) aes(partial) blowfish(ptr)
compiler: information not available
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used:
                  sign    verify    sign/s verify/s
rsa 1024 bits   0.0006s   0.0003s   1545.6   3257.3

Oraz Opteron:

x2200m2.dev:root ~ > openssl speed rsa1024 -engine pkcs11 -multi 1
engine "pkcs11" set.
Forked child 0
+DTP:1024:private:rsa:10
+R1:5337:1024:9.99
+DTP:1024:public:rsa:10
+R2:71640:1024:10.00
Got: +F2:1:1024:0.001873:0.000140 from 0
OpenSSL 0.9.7d 17 Mar 2004 (+ security patches to 2006-09-29)
built on: date not available
options:bn(64,32) md2(int) rc4(ptr,char) des(ptr,cisc,16,long) aes(partial) blowfish(ptr)
compiler: information not available
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used:
                  sign    verify    sign/s verify/s
rsa 1024 bits   0.0019s   0.0001s    533.9   7142.9

To o co chodzi? A o to, że w T2 mamy jednostkę MAU (Modular Arithmetic Unit) – a dokładniej 8 takich (po jednej na rdzeń). Zalążek tego mieliśmy już w T1, (tak samo, po jednej jednostce MAU na rdzeń), przy czym tam mieliśmy tylko wsparcie dla algorytmów RSA, DSA oraz Diffie Hellman. W T2 dochodzi nam do tego jeszcze AES, 3DES, RC4, SHA1, SHA256, MD5, ECC. Robi wrażenie. :)

Na zakończenie dwie tabelki: pierwsza obrazuje liczbę “podpisów” dla RSA1024 w zależności od liczby wątków równoległych – widać, jak ładnie T2 się “wątkuje”:

T5220 X2200M2
1 1545,6 535,3
2 3084,0 1074,1
4 6104,6 2141,1
8 10975,8 2164,5
16 22521,4 2218,9
32 29379,2 2231,7
64 29743,7 4015,0

Druga przedstawia liczbę “podpisów” dla RSA${i}, gdzie ${i} przyjmuje wartości 512, 1024, 2048, 4096 – tu z kolei widać, gdzie się kończy wsparcie MAU dla biblioteki PKCS11 (dla obydwu serwerów przyjąłem “-multi 32″):

T5220 X2200M2
512 67738,7 11796,5
1024 29402,7 2660,3
2048 5179,7 502,9
4096 18,8 62,9

Na koniec “disklejmer” – wszędzie powyżej używałem “-engine pkcs11″ z dwóch powodów – po pierwsze, software’owe algorytmy dla RSA w tej bibliotece wyglądają na wydajniejsze od standardowej zawartej w OpenSSL, po drugie, tylko w ten sposób mogę zrobić pożytek z akceleracji sprzętowej – libpkcs11 zapewnia obsługę odpowiednich providerów dostarczanych przez kernel Solarisa.