niedziela, 15 maja 2011

Automatyzacja Solaris Zones w Illumos/OpenIndiana

Prosty przykład na automatyzacje tworzenia Zon w Illumos/Solaris 11/OpenIndiana.


Nazwa zony i fizycznego interfejsu sieciowego:

ZNAME="il1"
NIC="nge0"


Tworzymy wirtualną kartę sieciową oraz kontener, do którego będziemy instalować zonę:


dladm create-vnic -l ${NIC} ${ZNAME}
zfs create -o canmount=off -o mountpoint=/zones rpool/zones


Konfiguracja strefy. W podanym przykładzie mamy:
- montowany katalog /code z globalnej strefy
- ograniczenie CPU do 0.5 rdzenia
- ograniczenie pamięci do 512MB i swap do 768MB


cat >${ZNAME}.cfg << EOF
create
set autoboot=true
set zonepath=/zones/${ZNAME}
set ip-type=exclusive
add fs
set dir=/code
set special=/code
set type=lofs
end
add net
set physical=${ZNAME}
end
add capped-cpu
set ncpus=0.5
end
add capped-memory
set physical=512m
set swap=768m
end
EOF


Podstawowa konfiguracja systemu zony.
Uwaga, wszystkie parametry muszą się zgadzać z istniejącą infrastrukturą.
Jeśli przykładowo nie będzie wpisu w DNS dla zony, to konfigurator będzie prosił o manualne podanie poprawnego hostname/dns itp:


cat > ${ZNAME}.sysidcfg << EOF
system_locale=C
terminal=xterms
network_interface=primary {
hostname=${ZNAME}
default_route=10.10.10.1
ip_address=10.10.10.12
netmask=255.255.255.0
protocol_ipv6=no
}
security_policy=NONE
name_service=DNS {
domain_name=example.com
name_server=10.20.20.20,10.20.20.21
}
nfs4_domain=dynamic
timezone=Poland
root_password=passwPassWorD
EOF


Konfiguracja zony:


zonecfg -z ${ZNAME} -f ${ZNAME}.cfg


Utworzenie ZFSu i instalacja:


zfs create -o quota=50g rpool/zones/${ZNAME}
chmod 700 /zones/${ZNAME}
ptime zoneadm -z ${ZNAME} install


Po instalacji wrzucamy konfigurację i odpalamy zainstalowaną strefę:

zoneadm -z ${ZNAME} ready
cp ${ZNAME}.sysidcfg /zones/${ZNAME}/root/etc/sysidcfg
zoneadm -z ${ZNAME} boot
zlogin -C ${ZNAME}


Jeśli wszystkie przekazane parametry były poprawne, to powinniśmy dostać ekran logowania, w innym wypadku konfigurator poprosi o korektę.

Przykład przetestowany na OpenIndiana b148.

Otwarte pliki w Solaris/Illumos

Jak szybko sprawdzić jakie mamy otwarte pliki w Solarisie/Illumosie?
Najprościej za pomocą pfiles:


pfiles /proc/*


lub


ps -ef -o pid | sort | xargs pfiles

środa, 11 maja 2011

Lokalne repozytorium OpenIndiana - mini howto

Cel: utworzenie lokalnego repozytorium IPS OpenIndiana dla buildu oi_148 działające na porcie 8080.

1. Najlepiej utworzyć repozytorium na systemie z tą samą wersją IPS (tutaj b148).
2. Pobieramy repozytorium dla buildu b148:

wget -c http://dlc.openindiana.org/repos/oi_148.tar.bz2

3. Weryfikujemy sumy kontrolne archiwum z sumami zawartymi w pliku http://dlc.openindiana.org/repos/oi_148.tar.bz2.md5:

digest -a md5 oi_148.tar.bz2

4. Rozpakowujemy archiwum do docelowego katalogu np /repo/:

cd /repo/ && gtar xjf ~/oi_148.tar.bz2

5.Dodajemy dedykowaną instancję serwisu pkg/server:

svccfg -s svc:/application/pkg/server add oi_148 
svccfg -s svc:/application/pkg/server:oi_148 addpg pkg application
svccfg -s svc:/application/pkg/server:oi_148 setprop pkg/inst_root=/repo/oi_148
svccfg -s svc:/application/pkg/server:oi_148 setprop pkg/port=8080
svccfg -s svc:/application/pkg/server:oi_148 setprop pkg/pkg_root=/
svccfg -s svc:/application/pkg/server:oi_148 setprop pkg/readonly=true
svccfg -s svc:/application/pkg/server:oi_148 setprop pkg/threads=50

6. Upewniamy się, że publisher repozytorium jest openindiana.org:

/usr/lib/pkg.depotd -p 8080 -d /repo/oi_148 --set-property publisher.prefix=openindiana.org
(tutaj po wystartowaniu serwera zabijamy go za pomocą CTRL-C)

7. Startujemy serwis repozytorium:

svcadm refresh svc:/application/pkg/server:oi_148
svcadm enable svc:/application/pkg/server:oi_148

8. IPS powinien już działać, można ustawić publishera dla openindiana.org na lokalnym hoście:

pkg set-publisher -O http://localhost:8080 openindiana.org

Oczywiście repozytorium nie ogranicza się tylko do localhostu.

wtorek, 10 maja 2011

Konfiguracja sieci w OpenIndiana

Prosty przykład w jaki sposób ustawić statyczny adres IP dla interfejsu rtls0:


ipadm create-addr -T static -a local=10.10.10.10/24 rtls0/v4


Od tego momentu interfejs rtls0 posiada statyczny adres 10.10.10.10 na masce 24 bitowej.
Ustawienie jest stałe - tzn po restarcie serwera rtls0 nadal posiada ustawiony adres.
Zapominamy tym samym o /etc/hostname.rtls0 /etc/netmasks itd.

Do pełni szczęścia ustawmy jeszcze domyślną bramkę na 10.10.10.1:

route -p add default 10.10.10.1


Parametr '-p' (persistent) sprawia, że system pamięta domyślna droga routowania po restarcie.
Zapominamy tym samym o edycji /etc/defaultrouter.

Przedstawiony przykład jest zalecanym sposobem na konfigurację sieci i dotyczy OpenIndiany, Illumosa oraz Solaris 11.

Oczywiście należy pamiętać również o systemie nazewniczym i usłudze NWAM, więcej w starszym poście dotyczącym sieci w OpenSolaris.

sobota, 21 sierpnia 2010

Illumos i dodatkowe repo 145

Pracując przy kilku projektach, w tym Illumos.org, utworzyłem repozytorium IPS.
Celem było udostępnienie nowszych buildów niż Oracle udostępniło w pkg.opensolaris.org,
oraz szybsze testowanie i znaczne ułatwienie kompilacji konsolidacji ONNV i Illumos.

Repozytorium jest połączeniem podstawowych konsolidacji Solarisa:
- ONNV
- IPS
- CAIMAN

Paczki są w wersjach 145, dodatkowo IPS i CAIMAN mają bugfixy z buildów 146 i 147.

Podam prosty przykład jak zrobić aktualizację z b134 do b145.

Najpierw aktualizujemy OpenSolaris do najnowszej wersji (b134):

pkg set-publisher -O http://pkg.opensolaris.org/dev opensolaris.org
pkg refresh --full
pkg install -v SUNWipkg
pkg image-update -v
init 6

Po restarcie z wersji 134 robimy update do buildu 145:

wget http://hg.illumos.org/illumos-gate/raw-file/9d56504d6906/usr/src/tools/scripts/onu.sh
chmod +x onu.sh
./onu.sh -Ot os-devel_145 -U os-devel -u http://91.194.74.69:10000


Więcej informacji jak zbudować Illumos jest na wiki projektu:
https://illumos.org/projects/illumos-gate/wiki

Dodam tylko, że oprócz Illumos.org trwają prace nad dodatkowym projektem, który niedługo ujrzy światło dzienne :)

poniedziałek, 8 marca 2010

OpenSolaris b134

Nie było jeszcze oficjalnego maila, jednak repozytorium http://pkg.opensolaris.org/dev zostało zaktualizowane do wersji b134.

PKG powinien pokazać dostępne nowe wersje paczek:

# pkg refresh --full
# pkg image-update -vn

Również dostępne są obrazy iso na genunix.

Zabezpieczenia w Crossbow

Dzięki projektowi Crossbow, tworząc wirtualny interfejs sieciowy (VNIC) w OpenSolaris możemy nałożyć na niego ciekawe restrykcje, które mają znaczenie jeśli delegujemy VNIC do wirtualnej maszyny xVM lub Kontenera/Zony ze stosem TCP/IP typu exclusive.

# dladm create-vnic -l e1000g0 dmz1
# dladm set-linkprop -p maxbw=2 -p priority=low -p protection=mac-nospoof,ip-nospoof,restricted -p allowed-ips=192.168.10.11 dmz1
# dladm show-linkprop -p maxbw,priority,protection,allowed-ips dmz1

W tym przykładzie:
  • maxbw - ograniczamy ruch sieciowy do 2mb/s
  • priority - ustawiamy niski priorytet ruchu sieciowego na interfejsie
  • mac-nospoof - po zmienia adresu MAC pakiety są dropowane na poziomie kernela
  • ip-nospoof - pakiety są dropowane na poziomie jądra, jeśli jest ustawiony inny adres IP niż podany w 'allowed-ips'
  • allowed-ips - lista dozwolonych adresów IP, jakie można przypisać na interfejsie
  • restricted - wszystkie inna protokoły sieciowe za wyjątkiem IPv4, IPv6, ARP są dropowane

Postfix w OpenSolaris, a NIS+

Jeśli ktoś będzie kompilować Postfixa na OpenSolarisie nowszym niż b130, otrzyma następujący błąd:

"dict_nisplus.c", line 123: undefined symbol: nis_result
"dict_nisplus.c", line 123: undefined symbol: reply
"dict_nisplus.c", line 182: warning: implicit function declaration: nis_list
"dict_nisplus.c", line 182: undefined symbol: FOLLOW_LINKS
"dict_nisplus.c", line 182: undefined symbol: FOLLOW_PATH
"dict_nisplus.c", line 188: left operand of "->" must be pointer to struct/union
"dict_nisplus.c", line 188: undefined symbol: NIS_SUCCESS
"dict_nisplus.c", line 189: undefined struct/union member: objects
"dict_nisplus.c", line 189: left operand of "->" must be pointer to struct/union
"dict_nisplus.c", line 189: undefined struct/union member: objects_len
"dict_nisplus.c", line 189: warning: left operand of "." must be struct/union object
"dict_nisplus.c", line 193: warning: implicit function declaration: nis_freeresult
"dict_nisplus.c", line 196: left operand of "->" must be pointer to struct/union
"dict_nisplus.c", line 196: undefined struct/union member: objects_val
"dict_nisplus.c", line 196: warning: left operand of "." must be struct/union object
"dict_nisplus.c", line 196: left operand of "->" must be pointer to struct/union
"dict_nisplus.c", line 203: left operand of "->" must be pointer to struct/union
"dict_nisplus.c", line 203: warning: left operand of "." must be struct/union object
"dict_nisplus.c", line 203: left operand of "->" must be pointer to struct/union
"dict_nisplus.c", line 220: left operand of "->" must be pointer to struct/union
"dict_nisplus.c", line 220: undefined symbol: NIS_NOTFOUND
"dict_nisplus.c", line 221: left operand of "->" must be pointer to struct/union
"dict_nisplus.c", line 221: undefined symbol: NIS_PARTIAL
"dict_nisplus.c", line 224: warning: implicit function declaration: nis_sperrno
"dict_nisplus.c", line 224: left operand of "->" must be pointer to struct/union
cc: acomp failed for dict_nisplus.c
make: *** [dict_nisplus.o] Error 1
make: *** [update] Error 1


Dzieje się tak dlatego, iż Postfix zakłada, że mamy biblioteki podsystemu NIS+, jednak ten system nazewniczy został usunięty w b131: Heads-Up: Removed NIS+ as Naming Service from Solaris Installer

Najlepszym rozwiązaniem problemu jest zdefiniowanie system OpenSolaris w src/util/sys_defs.h jako osobna platforma systemowa.
Prostszą i szybszą metodą jest usunięcie wpisu dotyczącą NIS+ ("#define HAS_NISPLUS") z pliku "src/util/sys_defs.h" w źródłach Postfixa.

Różnice w plikach wersji 2.7.0:

$ diff -u src/util/sys_defs.h_orig src/util/sys_defs.h
--- src/util/sys_defs.h_orig 2010-03-07 21:09:19.889612089 +0100
+++ src/util/sys_defs.h 2010-03-07 21:39:07.102353914 +0100
@@ -401,7 +401,6 @@
#define DEF_DB_TYPE "dbm"
#define ALIAS_DB_MAP "dbm:/etc/mail/aliases"
#define HAS_NIS
-#define HAS_NISPLUS
#define USE_SYS_SOCKIO_H /* Solaris 2.5, changed sys/ioctl.h */
#define GETTIMEOFDAY(t) gettimeofday(t)
#define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb"


Następnie kompilujemy Postfixa. W najprostszej postaci:

$ make makefiles
$ make

Jeśli potrzebujemy kompilator GCC lub Sun Studio, można je zainstalować z repozytorium:
# pkg install -v gcc-dev

lub dla Sun Studio:
# pkg install -v sunstudio12u1
# ln -s /opt/sunstudio12.1 /opt/SUNWspro



Jeśli chcemy skompilować Postfixa za pomocą Sun Studio:
$ make makefiles CC=/opt/SUNWspro/bin/cc
$ make

sobota, 6 marca 2010

migracja ONNV do IPS

OpenSolaris b136 to przełomowy build, ponieważ od changesetu 11838 konsolidacja ONNV jest w stanie budować paczki IPS natywnie.
Dotychczasowy system aktualizacji systemu przez BFU/ACR zostanie wycofany w ciągu kilku najbliższych buildów.
Dla developerów systemu jest to spore uproszczenie ponieważ najnowszy build systemu będzie można zainstalować poprzez 'pkg image-update' lub przez wrapper 'onu'.

Na zdjęciu widać jak wygląda proces aktualizacji:

wtorek, 2 marca 2010

IPS - search

Taka mała ciekawostka.
Za pomocą 'pkg' można wyszukiwać pliki za pomocą ich hashy sha1.

W prostym przykładzie wyszukam /usr/bin/bash za pomocą jego hasha:

$ digest -a sha1 /usr/bin/bash
5e047055254cee181900f99553fe82af0e15e54f

$ pkg search 5e047055254cee181900f99553fe82af0e15e54f
INDEX ACTION VALUE PACKAGE
5e047055254cee181900f99553fe82af0e15e54f file usr/bin/bash pkg:/SUNWbash@3.2.50-0.122
5e047055254cee181900f99553fe82af0e15e54f file usr/bin/bash pkg:/SUNWbash@3.2.50-0.123

sobota, 9 stycznia 2010

Solaris jako domowy serwer

Robiąc kopie laptopa za pomocą 'rsync' na domowy komputer, zaciekawił mnie w pewnym momencie postęp kopiowania plików jaki pokazuje rsync, a w zasadzie, to jego brak..

Komputer pełniący rolę serwera pracuje pod kontrolą systemu OpenSolaris.
Logując się na serwer zauważyłem, że bardzo mało danych jest wysyłanych przez sieć, natomiast dysk jest używany w 100%:

Widać, że dysk 'cmdk1' ma sporo operacji odczytu.
Za pomocą skryptu DTrace 'rwbytype', znajdującego się w pakiecie DTrace Toolkit (DTT) sprawdziłem jakie procesy używają I/O:Widać, że najwięcej danych odczytuje rsync z PIDem 5981.

Kolejny skrypt z DTT 'pfilestat' pokaże statystyki otwartych plików danego procesu:
# /opt/DTT/Proc/pfilestat 5981

Widać, że proces odczytuje sporo z deskryptora pliku nr 0.
Aby dowiedzieć się więcej o tym pliku wystarczy użyć komendy 'pfiles' z numerem PID:
# pfiles 5981


Teraz już wiadomo dlaczego rsync 'zatrzymał' się na chwilę z kopiowaniem danych.
W tym przypadku porównuje sumy kontrolne źródłowego i docelowego pliku, ponieważ plik został zmodyfikowany od ostatniego kopiowania.
Porównywany plik jest obrazem dysku wirtualnej maszyny VirtualBox'a i zajmuje 13GB, dlatego też ta operacja zatrzymała 'progress' jaki pokazuje rsync.

Aby przyśpieszyć kopiowanie plików usunąłem ten plik z docelowego miejsca, jednocześnie mając jego kopię w snapshotach ZFS.

piątek, 8 stycznia 2010

Własny profil RBAC - mini howto

Czasami pojawia się problem, gdzie użycie profilu RBAC wydaje się idealnym rozwiązaniem.
W Solarisie mamy kilkaset gotowych profili. Bardzo łatwo jednak utworzyć nowy profil, pod specyficzne rozwiązanie.

Podam bardzo prosty przykład jak to uczynić:

Dodajemy linijkę definiującą nazwę profilu w pliku /etc/security/prof_attr:

echo "My Profile::::" >> /etc/security/prof_attr


Dodajemy linijkę definiującą jaką aplikację z jakim UIDem możemy uruchamiać w pliku /etc/security/exec_attr:

echo "My Profile:solaris:cmd:::/usr/local/sbin/my_app:uid=345" >> /etc/security/exec_attr

W tym przykładzie użytkownik posiadający profil 'My Profile' będzie mógł uruchomić aplikację '/usr/local/sbin/my_app' jako UID=345.

Nadajemy profil 'My Profile' użytkownikowi 'user123':

usermod -P "My Profile" user123

UWAGA, 'usermod -P' zmienia uprawnienia profili, warto zauważyć jakie profile ma dany user, aby nie odebrać sobie przypadkowo uprawnień.


Oto przykład, jak działa nowy profil:



poniedziałek, 2 listopada 2009

ZFS Deduplication w snv128

Deduplikacja ZFS najprawdopodobniej pojawi się w snv128.
Już teraz jest włączona do źródeł:

$ hg log | head
changeset: 10923:df470fd79c3c
tag: tip
user: Evan Yan
date: Mon Nov 02 15:58:28 2009 +0800
summary: PSARC/2008/181 Solaris Hotplug Framework

changeset: 10922:e2081f502306
user: Jeff Bonwick
date: Sun Nov 01 14:14:46 2009 -0800
summary: PSARC 2009/571 ZFS Deduplication Properties


Update: Deduplikacja pojawi się w buildzie 128, zamiast 127 ;)

piątek, 2 października 2009

opensolaris tlen plugin

Dla tych, co potrzebują plugin komunikatora Tlen.pl na OpenSolaris'owym Pidginie ;)

Pobieramy kompilator i odpowiednie zależności z repozytorium OpenSolaris:
# pkg install -v SUNWgnome-common-devel SUNWxwinc SUNWgnome-base-libs gcc-dev SUNWgtar

Potrzebne są również źródła samego plugina:
$ wget -c http://nic.com.pl/~alek/pidgin-tlen/pidgin-tlen-20090811.tar.gz

Po rozpakowaniu paczki, należy delikatnie wyedytować plik Makefile:
$ gtar xvzf pidgin-tlen-20090811.tar.gz
pidgin-tlen-20090811
pidgin-tlen-20090811/README
pidgin-tlen-20090811/Makefile
pidgin-tlen-20090811/tlen_48.png
pidgin-tlen-20090811/tlen_22.png
pidgin-tlen-20090811/tlen_16.png
pidgin-tlen-20090811/tlen.h
pidgin-tlen-20090811/tlen.c
pidgin-tlen-20090811/auth.c
pidgin-tlen-20090811/wb.h
pidgin-tlen-20090811/wb.c
pidgin-tlen-20090811/chat.h
pidgin-tlen-20090811/chat.c
pidgin-tlen-20090811/avatar.h
pidgin-tlen-20090811/avatar.c
pidgin-tlen-20090811/Makefile.mingw



$ diff -u Makefile ../../pidgin-tlen-20090811/Makefile
--- Makefile 2009-08-24 13:23:53.000000000 +0200
+++ ../../pidgin-tlen-20090811/Makefile 2009-10-02 00:35:39.145438858 +0200
@@ -1,5 +1,5 @@
CC?= gcc
-LOCALBASE?= /usr/local
+LOCALBASE?= /usr
DESTDIR?=

CFLAGS+=`PKG_CONFIG_PATH=${LOCALBASE}/lib/pkgconfig pkg-config pidgin --cflags` \
@@ -25,11 +25,11 @@
ectags -Ra /usr/obj/ports/pidgin-2.5.5/pidgin-2.5.5/

install:
- install -d -o root -g wheel ${DESTDIR}${LOCALBASE}/lib/purple-2/
- install -o root -g wheel libtlen.so ${DESTDIR}${LOCALBASE}/lib/purple-2/
+ ginstall -d -o root -g sys ${DESTDIR}${LOCALBASE}/lib/purple-2/
+ ginstall -o root -g sys libtlen.so ${DESTDIR}${LOCALBASE}/lib/purple-2/
for i in 16 22 48; do \
- install -d -o root -g wheel ${DESTDIR}${LOCALBASE}/share/pixmaps/pidgin/protocols/$$i/; \
- install -o root -g wheel tlen_$$i.png \
+ ginstall -d -o root -g sys ${DESTDIR}${LOCALBASE}/share/pixmaps/pidgin/protocols/$$i/; \
+ ginstall -o root -g sys tlen_$$i.png \
${DESTDIR}${LOCALBASE}/share/pixmaps/pidgin/protocols/$$i/tlen.png; \
done



Dla ułatwienia, tak powinien wyglądać plik Makefile po zmianach:
$ cat Makefile
CC?= gcc
LOCALBASE?= /usr
DESTDIR?=

CFLAGS+=`PKG_CONFIG_PATH=${LOCALBASE}/lib/pkgconfig pkg-config pidgin --cflags` \
-I${LOCALBASE}/include \
-fPIC \
-Wall
DATE= `grep TLEN_VERSION tlen.h | awk '{print $$3}' | sed -e 's/"//g'`

.c.o:
$(CC) -c $< $(CFLAGS) OBJS= tlen.o auth.o chat.o wb.o avatar.o all: ${OBJS} $(CC) -shared -fPIC -o libtlen.so ${OBJS} clean: rm -f ${OBJS} libtlen.so *.core tags: *.c *.h rm -f tags ectags . ectags -Ra /usr/obj/ports/pidgin-2.5.5/pidgin-2.5.5/ install: ginstall -d -o root -g sys ${DESTDIR}${LOCALBASE}/lib/purple-2/ ginstall -o root -g sys libtlen.so ${DESTDIR}${LOCALBASE}/lib/purple-2/ for i in 16 22 48; do \ ginstall -d -o root -g sys ${DESTDIR}${LOCALBASE}/share/pixmaps/pidgin/protocols/$$i/; \ ginstall -o root -g sys tlen_$$i.png \ ${DESTDIR}${LOCALBASE}/share/pixmaps/pidgin/protocols/$$i/tlen.png; \ done dist: clean rm -f pidgin-tlen-${DATE}.tar.gz rm -rf pidgin-tlen-${DATE} mkdir pidgin-tlen-${DATE} cp README* avatar.[ch] chat.[ch] wb.[ch] auth.c tlen.[ch] tlen_*.png Makefile* pidgin-tlen-${DATE} tar zcvf pidgin-tlen-${DATE}.tar.gz pidgin-tlen-${DATE} rm -rf pidgin-tlen-${DATE} .PHONY: tags




Przed kompilacją pluginu należy zmodyfikować zmienną PATH, aby narzędzia GNU były wyszukiwane jako pierwsze:

# export PATH=/usr/gnu/bin:${PATH}

Czyścimy pliki z poprzednich kompilacji:
# gmake clean
rm -f tlen.o auth.o chat.o wb.o avatar.o libtlen.so *.core


Plugin jest mały, tak więc kompilacja trwa moment:
# gmake
cc -c tlen.c `PKG_CONFIG_PATH=/usr/local/lib/pkgconfig pkg-config pidgin --cflags` -I/usr/local/include -fPIC -Wall
cc -c auth.c `PKG_CONFIG_PATH=/usr/local/lib/pkgconfig pkg-config pidgin --cflags` -I/usr/local/include -fPIC -Wall
cc -c chat.c `PKG_CONFIG_PATH=/usr/local/lib/pkgconfig pkg-config pidgin --cflags` -I/usr/local/include -fPIC -Wall
cc -c wb.c `PKG_CONFIG_PATH=/usr/local/lib/pkgconfig pkg-config pidgin --cflags` -I/usr/local/include -fPIC -Wall
cc -c avatar.c `PKG_CONFIG_PATH=/usr/local/lib/pkgconfig pkg-config pidgin --cflags` -I/usr/local/include -fPIC -Wall
cc -shared -fPIC -o libtlen.so tlen.o auth.o chat.o wb.o avatar.o



Po kompilacji instalujemy plugin w systemie:
# gmake install
ginstall -d -o root -g sys /usr/lib/purple-2/
ginstall -o root -g sys libtlen.so /usr/lib/purple-2/
for i in 16 22 48; do \
ginstall -d -o root -g sys /usr/share/pixmaps/pidgin/protocols/$i/; \
ginstall -o root -g sys tlen_$i.png \
/usr/share/pixmaps/pidgin/protocols/$i/tlen.png; \
done

niedziela, 23 sierpnia 2009

OpenSolaris: encrypt i decrypt

Solaris oferuje bardzo proste w użyciu narzędzie do szyfrowania plików: 'encrypt'. Poniżej przykład.

Tworzymy plik z tekstem:

> echo "To jest tajny tekst" > plik.txt

Tworzymy zaszyfrowany plik:

> encrypt -v -a aes -i plik.txt -o plik-zaszyfrowany
Enter passphrase:
Re-enter passphrase:
[..................|...................|...................|..................]
Done.


> file plik.txt plik-zaszyfrowany
plik.txt: ascii text
plik-zaszyfrowany: data

Usuwamy oryginalny plik:

> rm plik.txt

Pozostaje nam tylko zaszyfrowana wersja pliku.

Aby odczytać zawartość zaszyfrowanego pliku wpisujemy:

> decrypt -v -a aes -i plik-zaszyfrowany
Enter passphrase:
[..................|...................|...................|..................]
Done.
To jest tajny tekst

sobota, 22 sierpnia 2009

IPS tips

OpenSolaris podczas instalacji systemu tworzy tzw. obraz (pkg image-create) w katalogu głównym i przypisuje do niego publishera (pkg publisher), dlatego jak robimy update systemu używamy komendy 'pkg image-update'.

Mało znaną funkcjonalnością systemu pakietów OpenSolarisa IPS jest możliwość tworzenia wielu 'obrazów' w różnych katalogach. Dla przykładu, każdy użytkownik może sobie stworzyć takowy 'obraz' w swoim katalogu domowym i tam instalować paczki zamiast w katalogu głównym systemu jako root.

Ostatnio znalazłem dodatkowe repozytorium IPS z ciekawymi paczkami http://ips.homeunix.com:10906/ i zamiast dodawać kolejnego publishera do systemu i instalować jako root w globalnej strefie postanowiłem dodać nowe repozytorium jako zwykły użytkownik w katalogu domowym, dodatkowo w zonie TX..

> zonename
public

> plabel
PUBLIC

> prtdiag
prtdiag can only be run in the global zone

Będziemy instalować paczki w katalogu /home/estibi/media/

> mkdir -p /home/estibi/media/
> pkg image-create -p multimedia=http://ips.homeunix.com:10906/ /home/estibi/media/

Uwaga, musimy wejść do katalogu /home/estibi/media lub użyć parametru pkg -R, inaczej 'pkg' będzie używać publishera z katalogu "/".

> cd /
> pkg publisher
PUBLISHER TYPE STATUS URI
opensolaris.org (preferred) origin online http://pkg.opensolaris.org/dev/

> cd /home/estibi/media/
> pkg publisher
PUBLISHER TYPE STATUS URI
multimedia (preferred) origin online http://ips.homeunix.com:10906/

> pkg refresh --full

Instalujemy paczkę 'easytag':

> pkg install -v pkg:/MBLeasytag
Creating Plan - Before evaluation:
UNEVALUATED:
+pkg:/MBLeasytag@2.1,5.11:20090615T121154Z

After evaluation:
None -> pkg:/MBLeasytag@2.1,5.11:20090615T121154Z
None -> pkg:/MBLid3lib@3.8.3,5.11:20090615T121103Z
Actuators:

None
DOWNLOAD PKGS FILES XFER (MB)
Completed 2/2 44/44 1.82/1.82

PHASE ACTIONS
Install Phase 109/109
PHASE ITEMS
Reading Existing Index 8/8
Indexing Packages 2/2


Jeśli teraz uruchomimy zainstalowany program otrzymamy komunikat błędu, ponieważ program jest zlinkowany z bibliotekami, które powinny się znajdować w katalogu głównym:

> /home/estibi/media/usr/bin/easytag
ld.so.1: easytag: fatal: libid3-3.8.so.3: open failed: No such file or directory
Killed

Aby program się uruchomił, należy podać mu ścieżkę do bibliotek:

> LD_LIBRARY_PATH=/home/estibi/media/usr/lib /home/estibi/media/usr/bin/easytag

Można również wyeksportować zmienną:

> export LD_LIBRARY_PATH=/home/estibi/media/usr/lib:${LD_LIBRARY_PATH}
> /home/estibi/media/usr/bin/easytag

Paczka 'easytag' jest zainstalowana:

> pkg -R /home/estibi/media list
NAME (PUBLISHER) VERSION STATE UFIX
MBLeasytag 2.1 installed ----
MBLid3lib 3.8.3 installed ----

czwartek, 2 lipca 2009

snoop i bity pakietów

Solarisowy snoop ma podobną składnię co tcpdump, oto przykłady:

Aby wyłapać pakiety TCP z flagą SYN:
# snoop -V 'tcp and tcp[13]& 0x2 != 0'

Aby wyłapać pakiety TCP z flagą RST:
# snoop -V 'tcp and tcp[13]& 0x4 != 0'

wtorek, 23 czerwca 2009

PathScale Compiler Suite

Powstała inicjatywa aby 'uwolnić' pakiet kompilatorów PathScale.
Pomysł jest powiązany z projektem OSUNIX.
Więcej informacji: PathScale

środa, 17 czerwca 2009

The Zones Parallel Patching

Równoległe paczowanie stref jest już dostępne w Solarisie 10 w łatkach:
119255-66 na x86 oraz 119254-66 na sparc.

Więcej informacji na:
http://blogs.sun.com/patch/entry/zones_parallel_patching_feature_now

poniedziałek, 15 czerwca 2009

OpenSolaris na MIPS?

Od niedawna OpenSolaris działa już na procesorach ARM..
Dzisiaj powstał projekt przeportowania tego systemu również na architekurę MIPS ;)
http://opensolaris.org/os/project/mips/