wtorek, 7 grudnia 2010

kexec w CentOS

Kexec to przydatna funkcja kernela Linuxa umożliwiająca uruchomienie innego jądra systemu z aktualnie uruchomionego systemu. Dzięki jej wykorzystaniu możemy podmienić działające jądro z pominięciem procedury BIOS serwera (która może trochę trwać na co niektórych konfiguracjach).

Wymagane pakiety:
yum install kexec-tools
Wykorzystanie kexec:
# Załadowanie nowego jądra
kexec -l /boot/vmlinuz-2.6.18-238.19.1.el5 --initrd=/boot/initrd-2.6.18-238.19.1.el5.img --append="$(cat /proc/cmdline)"
# Załadowanie nowego jądra (poziom 6 init - reboot)
telinit 6
Na serwerach dedykowanych home.pl warto użyć tej składni w celu uniknięcia odcięcia od konsoli systemowej:
kexec -l /boot/vmlinuz-2.6.18-238.19.1.el5.el5 --initrd=/boot/initrd-2.6.18-238.19.1.el5.img --append="$(cat /proc/cmdline)" --console-serial --serial=ttyS0 --serial-baud=115200

piątek, 3 grudnia 2010

Własne medium instalacyjne z CentOS 5.x

Instrukcja przedstawia przygotowanie własnego repozytorium instalacyjnego z zaktualizowanymi pakietami RPM. Ponadto przedstawione są kroki wymagane do przygotowanie minimalnej  płyty instalacyjnej CD. Instrukcja przygotowana i testowana pod CentOS 5.6 x86_64.

Przygotowanie środowiska
# Wymagane pakiety:
yum install createrepo yum-utils mkisofs
# Struktura katalogów roboczych:
mkdir -p /storage/centos/{i386,x86_64}/{media,work}
mkdir -p /storage/centos/updates
Pobranie plików instalacyjnych
# Pobranie plików instalacyjnych dla architektury i386
lftp -e 'lcd /storage/centos/i386/media && open http://download.hetzner.de/mirrors/centos/5.6/i386/ && mirror &&  get .treeinfo && get .discinfo && quit'

# Pobranie plików instalacyjnych dla architektury x86_64

lftp -e 'lcd /storage/centos/x86_64/media && open http://download.hetzner.de/mirrors/centos/5.6/x86_64/ && mirror &&  get .treeinfo && get .discinfo && quit'

Polski mirror:
http://ftp.icm.edu.pl/pub/linux/distributions/centos/5.6/os/i386/
http://ftp.icm.edu.pl/pub/linux/distributions/centos/5.6/os/x86_64/

Pliki można też oczywiście przekopiować z lokalnego nośnika instalacyjnego.
Pobranie aktualizacji
Przygotowanie pliku konfiguracyjnego dla repozytorium z aktualizacjami:
cat >/etc/yum.repos.d/CentOS-Custom-Update.repo <<EOF
[updates32]
name=CentOS-\$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=5.6&arch=i386&repo=updates
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
gpgcheck=1

[updates64]
name=CentOS-\$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=5.6&arch=x86_64&repo=updates
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
gpgcheck=1
EOF


# Dla i386

reposync -p /storage/centos/updates -n -r updates32
# Dla x86_64
reposync -p /storage/centos/updates -n -r updates64
Przygotowanie kopii roboczej plików instalacyjnych
Ta procedura nie jest doskonała więc lepiej operować na kopii plików instalacyjnych :)

# Dla i386
rsync -av /storage/centos/i386/media/  /storage/centos/i386/work/
# Dla x86_64
rsync -av /storage/centos/x86_64/media/  /storage/centos/x86_64/work/
Aktualizacja pakietów  instalacyjnych
Utworzenie repozytorium dla updates32 i updates64:

createrepo /storage/centos/updates/updates32/
createrepo /storage/centos/updates/updates64/

Następnie należy przekopiować zaktualizowane/dodane pakiety z repozytorium aktualizacji do repozytorium instalacyjnego. Można to zrobić ręcznie lub za pomocą narzędzia custom-repo-integrate. Jest zmodyfikowana wersja programu repodiff.

# Dla i386
custom-repo-integrate -a i386 -u file:///storage/centos/updates/updates32/ -b file:///storage/centos/i386/work/
custom-repo-integrate -a i686 -u file:///storage/centos/updates/updates32/ -b file:///storage/centos/i386/work/
custom-repo-integrate -a noarch -u file:///storage/centos/updates/updates32/ -b file:///storage/centos/i386/work/


# Dla x86_64
custom-repo-integrate -a x86_64 -u file:///storage/centos/updates/updates64/ -b file:///storage/centos/x86_64/work/
custom-repo-integrate -a noarch -u file:///storage/centos/updates/updates64/ -b file:///storage/centos/x86_64/work/
custom-repo-integrate -a i386 -u file:///storage/centos/updates/updates64/ -b file:///storage/centos/x86_64/work/
custom-repo-integrate -a i686 -u file:///storage/centos/updates/updates64/ -b file:///storage/centos/x86_64/work/


W kolejnym kroku należy odświeżyć repozytoria instalacyjne z uwzględnieniem pliku comps.xml:

# Dla i386
createrepo -g /storage/centos/i386/work/repodata/comps.xml /storage/centos/i386/work

# Dla x86_64
createrepo -g /storage/centos/x86_64/work/repodata/comps.xml /storage/centos/x86_64/work

Dodatkowo można sprawdzić integralność repozytoriów (zależności):

# Dla i386
repoclosure -a i386 -a i686 -a noarch -r it.socha.install32 --repofrompath=it.socha.install32,/storage/centos/i386/work
# Dla x86_64
repoclosure -a x86_64 -a i386 -a i686 -a noarch -r it.socha.install64 --repofrompath=it.socha.install64,/storage/centos/x86_64/work
Repozytorium do instalacji sieciowej jest gotowe do użytku. Pozostało tylko przygotowanie plików kickstart.
Przykładowe pliki konfiguracyjne kickstart:
  • simple.ks - instalacja minimalnego systemu z dostępnym ekranem partycjonowania i konfiguracji GRUB
  • 1disc.ks - instalacja automatyczna na dysku /dev/sda (LVM)
  • 2disc.ks - instalacja automatyczna na dwóch dyskach z RAID1 i LVM


Dalsza cześć to opis przygotowania minimalnej płyty instalacyjnej CD.

Jeśli chcemy przygotować minimalną płytę instalacyjną (plik ISO) należy z katalogu instalacyjnego (CentOS) wybrać tylko wymagane pakiety (lista pakietów  minimalcentos.txt). Przygotowałem prosty skrypt, który z wskazanego katalogu instalacyjnego skopiuje wymagane pakiety. Skrypt nazywa się simple-rpm-copy. Cała procedura przygotowania płyty:
# Katalog roboczy
mkdir -p /storage/centos/{i386,x86_64}/mini/CentOS


# Kopiowanie repozytorium instalacyjnego z pominięciem katalogu CentOS
# Dla i386
rsync -av --exclude=CentOS /storage/centos/i386/work/ /storage/centos/i386/mini/
# Dla x86_64
rsync -av --exclude=CentOS /storage/centos/x86_64/work/ /storage/centos/x86_64/mini/

# Pobranie skryptu simple-rpm-copy
wget http://bit.ly/eTseVD -q -O /storage/centos/simple-rpm-copy && chmod +x /storage/centos/simple-rpm-copy

# Kopiowanie wymaganych RPM do mini instalacji

# Dla i386
wget http://bit.ly/e6am3x -q -O - | /storage/centos/simple-rpm-copy /storage/centos/i386/mini/CentOS/ /storage/centos/i386/work/ i386,i686,noarch
# Dla x86_64
wget http://bit.ly/e6am3x  -q -O - | /storage/centos/simple-rpm-copy /storage/centos/x86_64/mini/CentOS/ /storage/centos/x86_64/work x86_64,noarch

# Zaktualizowanie repozytorium
# Dla i386
createrepo -g /storage/centos/i386/mini/repodata/comps.xml /storage/centos/i386/mini/
# Dla x86_64
createrepo -g /storage/centos/x86_64/mini/repodata/comps.xml /storage/centos/x86_64/mini/

Dodatkowo warto sprawdzić integralność repozytoriów (zależności):

# Dla i386
repoclosure -a i386 -a i686 -a noarch -r it.socha.mini32 --repofrompath=it.socha.mini32,/storage/centos/i386/mini
# Dla x86_64
repoclosure -a x86_64 -a i386 -a i686 -a noarch -r it.socha.mini64 --repofrompath=it.socha.mini64,/storage/centos/x86_64/mini


Na płycie można również zapisać pliki kickstart i lekko zmodyfikowany plik konfiguracyjny bootloadera isolinux (archiwum centos.tar.gz)

# Dla i386
wget http://bit.ly/hzo1rA -q -O - | tar xzf - -C /storage/centos/i386/mini
# Dla x86_64
wget http://bit.ly/hzo1rA -q -O - | tar xzf - -C /storage/centos/x86_64/mini
Pozostaje tylko przygotowanie pliku ISO
# Dla i386
mkisofs -v -r -N -L -d -D -J -V CENTOS -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -x lost+found  -o /storage/centos/output/centos-custom-55-i386.iso /storage/centos/i386/mini# Dla x86_64
mkisofs -v -r -N -L -d -D -J -V CENTOS -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -x lost+found  -o /storage/centos/output/centos-custom-55-x86_64.iso /storage/centos/x86_64/mini
Przygotowane obrazy mini płyt instalacyjnych: x86_64 i i386

wtorek, 23 marca 2010

Aktywacja SSL w GlassFish v3

Import klucza i certyfikatu SSL do keystora:


Certyfikat i klucz powinny być w formacie PEM


1) Konwersja certyfikatu do formatu PEM (jeśli wymagana)


    openssl x509 -in server.cer -out server.pem -inform DER -outform PEM


2) Konwersja klucza prywatnego do formatu PEM (jeśli wymagana)


    openssl rsa -in server.der -out server.key -inform DER -outform PEM


2) Utworzenie pliku PKCS12 z kluczem i certyfikatem


   openssl pkcs12 -export -in server.pem -inkey server.key -name "example.com" -out example.p12


     Jako hasło eksportu należy podać hasło: changeit


3) Utworzenie pliku keystore                      


     keytool -importkeystore -v -srckeystore example.p12 -destkeystore keystore  \

     -srcstoretype PKCS12  -alias example.com --deststorepass changeit -srcstorepass changeit


4) Dołączenie pliku keystore do serwera glassfish


    keytool -importkeystore -v -srckeystore keystore \

    -destkeystore ~/glassfish/domains/domain1/config/keystore.jks -alias example.com \

    -deststorepass changeit -srcstorepass changeit


Konfiguracja Glashfish


Aktywacja SSL:


W przykładzie wykorzystany jest port 443 (może być dowolny inny)


~glassfishv3/bin/asadmin create-http-listener --listeneraddress 0.0.0.0 --listenerport 443 --default-virtual-server server --securityenabled=true https-listener

~glassfishv3/bin/asadmin create-ssl --certname example.com --type http-listener --clientauthenabled=false https-listener

~glassfishv3/bin/asadmin stop-domain

~glassfishv3/bin/asadmin start-domain

wtorek, 9 marca 2010

Źródło wiadomości w programie Outlook 2003/2007

Aplikacja Outlook nie udostępnia źródła wiadomości pocztowych (nagłówków i treści). Po odebraniu wiadomości program zapisuję wiadomość w formacie wewnętrznym. Dostęp do samych nagłówków jest możliwy po wybraniu polecenia "Opcje wiadomości..." ("Opcje..." w Outlook 2003)  z menu kontekstowego podświetlonej wiadomości. Nagłówki dostępne są w polu "Nagłówki internetowe:". Aby Outlook udostępniał (zapisywał) oryginalne źródło wiadomości konieczna jest zmiana jego konfiguracji poprzez rejestr.

W kluczu (dla Outlook 2007):

HKEY_CURRENT_USER\­­Software\­­Microsoft\­­Office\­­12.0\­­Outlook\­­Options\­­Mail

Dla Outlook 2003:
HKEY_CURRENT_USER\­­Software\­­Microsoft\­­Office\­­11.0\­­Outlook\­­Options\­­Mail
Jeśli klucz Mail nie istnieje należy go utworzyć.
Należy dodać wartość typu DWORD o nazwie:
SaveAllMIMENotJustHeaders
Jako wartość tego pola należy wpisać 1.

Po wprowadzeniu zmian należy ponownie uruchomić program Outlook. Ta modyfikacja dotyczy wyłącznie wiadomości pobranych po jej wprowadzeniu. Wiadomości zapisane wcześniej nie zmienią się.

Plik .reg dla Outlook 2007
Plik .reg dla Outlook 2003