Default style (Cherry Eve). Switch styles (Capricorn). Atom Feed Calendar
http://blogs.sun.com/mbrowarski/date/20090227 piątek luty 27, 2009

virtualbox i share file

Gdy będziemy chcieli wykorzystać w VirtualBoksa funkcjonalność snapshotów ZFS należy wykonać odpowiedni tri. Jest to związane z tym, że tego że pliki w których są przechowywane obrazy dysków naszych systemów gości są zapisane UUID i niestety nie można mieć w VirtualBoksie dwóch plików o tym samym UUIDzie. Jak temu zapobiec ?
Po wykonany snapshota należy użyć poniższej komendy:
bash# /opt/VirtualBox/VBoxManage internalcommands sethduuid `pwd`/disk.vdi
Spowoduje ona nadanie nowego UUIDa dla pliku.

http://blogs.sun.com/mbrowarski/date/20081211 czwartek grudzień 11, 2008

opensolaris 2008.11 już jest

Pewnie już wszyscy wiedzą, że OpenSolaris 2008.11 już wylądował.
Coś więcej o nim można poczytać tutaj.
Jakby ktoś by go chciał ściągnąć, wystarczy wejść tutaj.
Z mojej strony mogę dorzuci, że zapraszam do instalacji i testowania.
Zapraszam również do odwiedzenia Polskiej strony o OpenSolarisie.
Jak ktoś ma ochotę odwiedzenia Nas na IRCu (dla młodszy, IRC to takie Internetowe Pogaduszki),
to należy wejść na kanał #opensolaris-pl na serwerze irc.freenode.org.

http://blogs.sun.com/mbrowarski/date/20081109 niedziela listopad 09, 2008

e220 pod opensolarisem

Jestem "szczęśliwym" posiadaczem iPlusa z modem USB Huawei E220 :). Firma Plus dostarczyła oczywiście oprogramowanie tyko pod Windowsy 32bitowe (konia z rzędu temu, komu uda się to uruchomić pod 64bitową Vistą), a jak mamy prawdziwy 64bitowy system operacyjny OpenSolaris? (ja używam Nevada b102)
Procedura też powinna działać dla Era Blueconnect (dostawca internetu jest inny, ale chyba parametery te same).
Najpierw należy taki modem zarejstrować pod sterownikiem usb modem, robi się to tak:
1. Podłączamy modem do łącza USB.
2. Wykonujemy:
-bash# lshal | less
usb_device.product_id = 4097 (0x1001) (int)
usb_device.vendor_id = 4817 (0x12d1) (int)
usb_device.vendor = 'HUAWEI Technologies' (string)
usb_device.product = 'HUAWEI Mobile' (string)

3. Wyszukujemy tak HUAWEI technologii i patrzymy do vendor_id i product_id (interesują nas wartości hexydecymalne, u mnie to 0x12d1 i 0x1001)
4. Rejestrujemy urządzenie pod sterownikiem usbsacm
-bash# update_drv -a -i 'usb12d1,1001' usbsacm
5. Po tym tworzymy urządzenia które będą obsługiwać modem:
-bash# devfsadm
6. sprawdzamy czy modem działa:
-bash# tip /dev/term/0
ATZ
+OK
ATI
Manufacturer: huawei
Model: E220
Revision: 11.116.04.01.69
IMEI: 351827438125857
+GCAP: +CGSM,+DS,+ES
+OK
7. Wychodzimy z tip'a przez ~. ( tylda kropka)

Już mamy podłączony modem, to teraz dzwonienie do iPlus (jeżeli posiadamy inny modem, np. na PCIMCIA, dalsze procedura też powinna być poprawna).
Przed dalszymi pracami należy wyłączyć PIN na karcie SIM,np. przekładając kartę do telefonu i tam wyłączamy pytanie o PIN. (albo dopisujemy AT+CPIN=$PIN do skryptu 3netchat)
Jak wygląda procedura postępowania:
1. wyłączamy wszystkie procesory i core tak aby został nam tylko jeden core na pierwszym procesorze (wynika to z błędu w pppd)
2. uruchamiamy pppd. Na początku działania pppd uruchamia chat, który jest odpowiedzialny za dzwonienie przez modem
3. jak połączenie zostanie nawiązane pppd włącza interfejs sppp0 i go odpowiednio skonfiguruje (w naszym przypadku ustawia adres, jaki przysle nam IPlus)
4. przegrywamy plik /etc/ppp/resolv.conf, który jest tworzony po poprawnym połączeniu) do /etc/resolv.conf (tak aby mieć zapewnione serwery DNSów z iPlusa)
5. Można już się bawić Internetem na OpenSolarisiem.

OK, a teraz pliki, które zautomatyzują mam trochę ten proces:
1. Najpierw tworzymy skrypt, którym będziemy uruchamiać resztę skryptów:
bash# cat /bin/iplus
psradm -f 1
pppd call 3netconnect debug
psradm -n 1

2. Tworzymy plik /etc/ppp/peers/3netconnect:
-bash# /etc/ppp/peers/3netconnect
refuse-chap
nodetach
460800
/dev/term/0
crtscts
noipdefault
holdoff 1
noauth
asyncmap 00000000
passive
defaultroute
usepeerdns
noccp
novj
lcp-echo-interval 0
connect '/usr/bin/chat -V -t15 -f /etc/ppp/3netchat'

3. Tworzymy plik /etc/ppp/3netchat, odpowiedzialny za komunikacje z modemem iPlus (dzwonienie):
-bash# cat /etc/ppp/3netchat
ABORT BUSY
ABORT ERROR
ABORT 'NO ANSWER'
ABORT 'NO CARRIER'
'' ATZ
OK 'ATDT *99#'
CONNECT '\d\c'

(! Uwaga, te apostrofy są spod klawisza, gdzie jest podwójny apostrof ", nie spod tyldy ~ !)
4. Nadajemy uprawnienia dla /bin/iplus
-bash# chmod a+x /bin/iplus
5. Uruchamiamy go:
-bash# /bin/iplus
serial speed set to 460800 bps
connect option: '/usr/bin/chat -V -t15 -f /etc/ppp/3netchat' started (pid 1270)
ATZ
OK
ATDT *99#
CONNECTSerial connection established.
serial speed set to 460800 bps
Using interface sppp0
Connect: sppp0 <--> /dev/term/0
/etc/ppp/pap-secrets is apparently empty
/etc/ppp/chap-secrets is apparently empty
sent [LCP ConfReq id=0x22 ]
rcvd [LCP ConfReq id=0x0 ]
sent [LCP Ident id=0x23 magic=0x0 "ppp-2.4.0b1 (Sun Microsystems, Inc.)"]
sent [LCP ConfRej id=0x0 ]
rcvd [LCP ConfAck id=0x22 ]
rcvd [LCP ConfReq id=0x1 ]
sent [LCP ConfAck id=0x1 ]
sent [LCP Ident id=0x24 magic=0x56c50c5c "ppp-2.4.0b1 (Sun Microsystems, Inc.)"]
sent [IPCP ConfReq id=0x80 ]
rcvd [LCP DiscReq id=0x2 magic=0xc952af]
rcvd [IPCP ConfNak id=0x80 ]
sent [IPCP ConfReq id=0x81 ]
rcvd [IPCP ConfReq id=0x0]
sent [IPCP ConfNak id=0x0 ]
rcvd [IPCP ConfNak id=0x81 ]
sent [IPCP ConfReq id=0x82 ]
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfAck id=0x1]
rcvd [IPCP ConfAck id=0x82 ]
Peer refused to provide his address; assuming 192.168.1.1
local IP address 77.115.152.227
remote IP address 192.168.1.1
primary DNS address 212.2.96.51
secondary DNS address 212.2.96.52

Tak wygląda poprawna sesja z iPlusem.
Może się zdarzyć, że podczas pierwszego łączenia będzie prośba o autentykacje CHAP, wynika to z faktu, że modem jeszcze jest w fazie logowania do sieci, należy wtedy przerwać łączenie, poczekać chwile i ponowić próbę.

Dla ciekawskich:
Spis komend dla modemu e220
at+clac <- spis komend obsługiwanych przez modem (u mnie jest COMMAND NOT SUPPORT)
Wymuszanie prędkości dla modemu (testowane, i chyba działa :)):
# GPRS/EDGE Preferred
AT^SYSCFG=2,1,3FFFFFFF,1,2

# 3G Preferred
AT^SYSCFG=2,2,3FFFFFFF,1,2

# GPRS/EDGE Only
AT^SYSCFG=13,1,3FFFFFFF,1,2

# 3G Only
AT^SYSCFG=14,2,3FFFFFFF,1,2
Aby z tego skorzystać, trzeba dokładnie dopisać:
AT\^SYSCFG=14,2,3FFFFFFF,1,2
do pliku /etc/ppp/3netchat

http://blogs.sun.com/mbrowarski/date/20080626 czwartek czerwiec 26, 2008

postgreSQL pierwsze kroki

Utworzenie katalogu, gdzie będą przechowywane pliki bazy danych:
bash# mkdir /db_file
bash# chown postgres /db_file
Rekonfiguracja postgresql, aby wiedział gdzie jest miejsce na składowanie danych:
bash# svccfg -s svc:/application/database/postgresql:version_82 setprop postgresql/data = /db_file
bash# svcadm refresh postgresql:version_82
bash# svcprop postgresql:version_82 | grep data

uruchomienie bazy:
bash# svcadm enable postgresql:version_82
Baza powinna się sama zainicjalizować, jeżeli nie, to należy wykonać poniższą komendę:
postgres$ /usr/postgres/8.2/bin/initdb -E=iso-8859-2 /db_file
Z konta postgres tworzymy bazę danych:
postgres$ /usr/postgres/8.2/bin/amd64/createdb -E ISO-8859-2 baza


Zmiana w postgre.conf aby użytkownicy mogli logować się z sieci
listen_addresses = '*'
Dopisać do pga_hba.conf aby mogli się łączyć z sieci (np. pgadmin3):
host all all 172.16.137.0/24 trust

Dodatkowe rzeczy to:
Ręczne uruchomienie bazy danych
postgres$ /usr/postgres/8.2/bin/amd64/postmaster -D /db_file
Utworzenie konta na bazie danych, który będzie się mógł do niej zalogować:
postgres$ psql
browar=# create role maciej;
CREATE ROLE
browar=# alter role maciej login;
ALTER ROLE
browar=# alter role maciej password 'maciej123';
ALTER ROLE

http://blogs.sun.com/mbrowarski/date/20080122 wtorek styczeń 22, 2008

sun studio kompilowanie opensolaris

Jak wiadomo, można pobrać wersje źródłową OpenSolaris i sobie samemu zbudować dystrybucje.
Napisze w paru krokach jak to zrobić.
Pełna instrukcja po angielsku znajduje się tutaj.
Pobranie potrzebnych rzeczy.
Na początku potrzebujemy SUN Studio 11.
Potrzebujemy również linkera i assemblera (pakiety SUNWtoo, SUNWsprot).
W tym miejscu są rzeczy, które Nam będą również potrzebne do pracy (np. SUNWonbld).
Następnie pobieramy OpenSolaris wersje ON. Ja używam repozytorium Mercurial, a więc będąc w katalogu /export/source/ wykonuje komendę:

bash# hg clone ssh://anon@hg.opensolaris.org/hg/onnv/onnv-gate

Czas na instalację.
Najpierw instalujemy Kompilator Sun Studio, rozpakowywujemy i uruchamiamy polecenie:

bash# ./installer

Zgadzamy się na wszystkie zadawane pytania. (hehe, prawie jak w MS Windows NEXT :))
Następnie to zmiennej środowiskowej PATH dopisujemy na początek: /opt/SUNWspro/bin i /opt/onbld/bin

bash# export PATH=/opt/SUNWspro/bin:/opt/onbld/bin:$PATH

Przegrywamy plik opensolaris.sh z /export/source/usr/src/env/opensoalris.sh do /export/source/ poprawiamy plik i uruchamiamy:

bash# nightly ./opensolaris.sh

I idziemy na obiad i wracamy po kolacji :).

Gdy chcemy skompilować tylko jakąś komendę, robimy:

bash# cd /export/source
bash# bldev -d ./opensolaris.sh
bash# cd usr/src/cmd/cat
bash# dmake all
bash# make install
bash# make install_h (jeżeli chcemy instalować pliki nagłówkowe)

http://blogs.sun.com/mbrowarski/date/20070927 czwartek wrzesień 27, 2007

Sięganie do źródeł OpenSolaris

Jak wiemy, BrandZ jest technologią, która pozwala na uruchomienie kodu skompilowanego pod Linuksem w środowisku Solaris i OpenSolaris.
Polega ona na uruchamianiu programów Linuksowych w normalny sposób, ponieważ ich kod binarny jest normalnie przetwarzany i działa on bez problemów (w końcu instrukcje procesora INTEL/AMD są takie same, bez względu na to jaki system operacyjny jest na nim uruchomiony). Jedyną różnicą są odwołania do funkcji systemowych jądra systemu operacyjnego.
Dlatego tajemnica technologii BrandZ tkwi w przechwyceniu wywołań funkcji systemowych Linuksa i albo wykonaniu ich bezpośrednio na Solarisie(np. funkcje open, write, close są takie same dla obydwóch systemów) albo wykonaniu ich w emulacji. Dokładnie o tym można poczytać tutaj.
Aby zobaczyć, które funkcje są przekazywane dalej do OpenSolarisa, a które emulowane, można podejrzeć w pliku źródłowym w strukturze sysents.
Gorąco polecam!!

http://blogs.sun.com/mbrowarski/date/20070911 wtorek wrzesień 11, 2007

OpenSolaris XEN - test

Mając do dyspozycji serwer X4100 z procesorami Dual-Core AMD Opteron(tm) Processor 2220, które to wspierają sprzętową wirtualizację, można pokusić się o przeprowadzenie testów wirtualizacji za pomocą XEN.
Wersję OpenSolaris z XEN można pobrać z domowej strony projektu.
Instalacja przebiega bezproblemowo i po restarcie mamy już gotową maszynę do testów.
Po skonfigurowaniu wirtualnej maszyny (wspierając się tą stroną), został tam zainstalowany Linux Debian 4.0 etch.

Test podzieliliśmy na 4 etapy:
1. uruchomienie programu obciążającego procesor w 100%,
2. uruchomienie 16 programów obciążających procesor w 100%,
3. pobranie 40MB pliku ze strony www,
4. pobranie równolegle szesnastu 40 MB plików ze strony www.
Oto wyniki z czystego OpenSolarisa bez XEN (4 logiczne procesory):
1. 43 sekundy
2. 2 minuty 53 sekundy
3. 12 sekund
4. 1 minuta 50 sekund
dom0 (domena kontrolująca, 4 logiczne procesory):
1. 43 sekundy
2. 2 minuty 56 sekund
3. 12 sekund
4. 1 minuta 39 sekund

Wyniki z domU (4 wirtualne procesory 1GB pamięci):
1. 43 sekundy
2. 2 minuty 52 sekundy
3. 27 sekund
4. 3 minuty 10 sekund

Wyniki z domU-1 i domU-2 (uruchomione równolegle 2 domen i 2 testów):
domU-1:
1. 43 sekundy
2. 5 minut 45 sekund
3. 43 sekundy
4. 5 minut 40 sekund
domU-2:
1. 43 sekundy
2. 5 minut 45 sekund
3. 40 sekundy
4. 5 minut 41 sekundy
Podsumowanie testów:
Podanego wyżej czasu nie powinniśmy traktować dokładnie, lecz należy przyjrzeć się proporcjom liczb, które ukazują Nam jakie właściwości daje sprzętowa wirtualizacja za pomocą XEN.
Jak widać z testów, wydajność procesorów jest taka sama, co może oznaczać, że XEN dodatkowo nie obciąża maszyny, a moc jest równomiernie rozdzielana. Niestety problem z wydajnością widać przy operacjach I/O. Tutaj widać narzut XEN na urządzenia. Trzeba pamiętać, że sieć i dyski są emulowane.
Kolejną rzeczą, to że DomU-1 i DomU-2 korzystało z jednej fizycznej karty sieciowej, także ich wydajność została podzielona na dwa równoległe strumienie.
Dlatego przy wirtualizacji trzeba pamiętać o dobrym Capacity Planningu bo maszyny fizyczne i ich zasoby nie są z gumy i łatwiej jest o skonsumowaniu całych zasobów.

http://blogs.sun.com/mbrowarski/date/20070907 piątek wrzesień 07, 2007

XEN - domain0

Na liście dyskusyjnej xen-devel pojawił się list:

I have a question which may sound stupid.

Is the dom0 mainly responsible for administration of other VMs?
If a PC only needs running HVM and doesn't need any administration, is
it possible that Xen doesn't start dom0 but setup VM environment and
start-up HVM image?

A oto odpowiedz:
dom0 manages I/O devices (network, disk, video, ...) and also runs support
services (driver backends, device emulation) for PV and HVM guests. A Xen
system will definitely not work without dom0.

-- Keir

XEN może mieć różny system kontrolujący (Linux, OpenSolaris) więc jego samego można nazwać systemem operacyjnym, bo nie jest od nikogo bezpośrednio zależny.
Choć tak naprawdę dochodzimy to momentu, kiedy trzeba dokładnie zdefiniować, czym jest system operacyjny.