Archiwa kategorii: Linux

Ogólnie o Linuksie

Cron w służbie dozorowania serwera

W zasadzie to nic nowego, ale pomyślałem sobie, że może komuś się przydać.
#!/bin/bash

PRACUJE=`ls /var/lib/clamav |grep clamd.socket |wc -l`

if [ $PRACUJE != 0 ]; then
echo „CLAMD pracuje” >>/var/log/exim/main.log

else
echo „CLAMD zdechł” >>/var/log/exim/main.log
/sbin/service clamd restart
/bin/mailx -s „Clamd Crash” user@adres

fi
exit 0

Kilka razy zdarzyło się, że podczas aktualizacji antywirus Clamav się „wysypał”, a gdy nie działa demon Clamd, to Exim nie chce przyjmować i wysyłać poczty. Najkrócej mówiąc, to sytuacja dla administratora bardzo niekomfortowa.
Ponieważ najczęściej wystarczy restart demona, napisałem skrypt, który wykonywany jest przez Cron co godzinę.
Od tego czasu nie zdarzyła mi się już przykra niespodzianka. A system powiadomi mnie jeszcze mailem o tym, że problem w ogóle zaistniał.


Zapomniałem hasła MySQL!

To się zdarza. Instalujemy MySQL, którego na danym serwerze nie używamy i potem problem. Czasem problem występuje dlatego, że przejmujemy serwer po kimś.
Jak można temu zaradzić?
Najpierw zatrzymujemy daemon MySQL, a potem uruchamiamy mysql tak, by nie trzeba było podawać hasła.

service mysqld stop
mysqld_safe --no-defaults --skip-grant-tables

Następnie na nowo ustawiamy swoje hasło.

[root@dom init.d]# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.73 PCLinuxOS - MySQL Standard Edition (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql
Database changed
mysql> update user set password=PASSWORD("tu-nowe-haslo") where User='root';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye


Ostatnia czynność to „zabicie” procesu mysqld po to, by na nowo uruchomić usługę MySQL.


RAID softwarowy

Podczas zjazdu w 2007 roku Marek Wodziński przedstawił interesująco temat tzw. raidu programowego. Ponownie rozmawialiśmy o tym w 2008 roku. Coraz większa liczba użytkowników jest zainteresowana takim rozwiązaniem. Po przetestowaniu – prezentację na ten temat – poprawioną i powtórnie omówioną na zjeździe w 2008 roku – postanowiliśmy udostępnić użytkownikom. Ponadto przedstawiamy opis wykonania programowego raidu na NND.

Uwagi wstępne
Każdy kto przystąpi do wykonania raidu, powinien najpierw zrobić backup danych i ustawień swojego serwera. Jeśli coś pójdzie nie tak, to zapewne pożegnamy się z działającym systemem, danymi, a dysk trzeba będzie całkowicie „zaorać”. Należy pamiętać, że w zależności od typu interfejsu i sposobu podłączenia dysku może on miec w systemie rozmaite oznaczenie (hda, sda… itd.). Dlatego nie należy przepisywać podanych poleceń systemowych automatycznie, bo wtedy dopiero mogą pojawić się prawdziwe problemy. Opis poniższy został przetestowany na NND z dwoma identycznymi dyskami o wielkości 20 GB na maszynie wirtualnej (Virtualbox). NND zostało zainstalowane z płyty, następnie zrobiono kompletny upgrade systemu do pakietów z *-current. Aby zacząć przygodę z raidem należy jeszcze zainstalować pakiety madm i rsync.
Krok pierwszy to przygotowanie drugiego dysku, na którym muszą byc takie same partycje (w naszym przypadku / i /home oraz swap). Generalnie w większości innych dystrybucji nie powinno byc z tym problemu, za pomocą sfdisk, fdisk czy cfdisk stworzymy bez problemu identyczne partycje, jak na dysku podstawowym. Instalator NND jest jednak przeznaczony często dla bardzo początkujących i posługując się wartościami w MB tworzy partycje tak, że potem trudno jest powtórzyć identyczną konfigurację. Ja posłużyłem się instalatorem NND ponownie tworząc nim dokładnie takie same partycje, jak wcześniej podczas instalacji. Po zapisaniu tablicy partycji wyszedłem z instalatora przez ctrl+c. Zapytałem autora prezentacji o inny sposób, bo może być tak, że ktoś instalował NND dużo wcześniej i nie pamięta już jak zrobił poprzednie partycje.Należy wówczas wykonać polecenie:
dd if=/dev/hda of=/dev/hdd bs=512 count=1
a następnie
cfdisk-a
i zapisać konfigurację (oczywiście literki dysków wpisać takie, jakie są w systemie).
Przygotowujemy raid
Zatem mamy już przygotowane dyski z takimi samymi partycjami. W moim przykładzie jest to hda (pierwszy, na którym jest zainstalowany system) i hdd, na którym zrobię raid.
Najpierw należy utworzyć raid dla partycji systemowej:
mdadm -C /dev/md0 -l1 -n2 /dev/hdd1 missing
następnie należy założyć system plików:
mke2fs -j /dev/md0
Nową partycję trzeba zamontować, w celu zsynchronizowania:
mount /dev/md0 /mnt/hd
Katalog /mnt/hd musiałem wcześniej ręcznie utworzyć.
Następnie trzeba uruchomić rsync, żeby przenieść strukturę katalogów i pliki:
rsync -va –progress –delete –exclude=/proc –exclude=/sys –exclude=/home –exclude=/mnt/hd / /mnt/hd
To chwilę potrwa i wtedy jeszcze tworzymy brakujące katalogi:
chroot /mnt/hd
mkdir /proc /sys /home /mnt/hd (ten ostatni jeszcze się może przydać)
Aby nasz system zaczął korzystać z niepełnego jeszcze raid, trzeba wykonać kilka czynności dodatkowo. Po pierwsze dodajemy wpis do pliku lilo.conf:
image=/boot/vmlinuz
root=/dev/md0
label=raid
append=”md=0,/dev/hdd1”
read-only

Uaktualniamy lilo.
W pliku fstab należy zmienić wpis hda1 na md0 i następnie wpisujemy:
lilo -R raid
reboot

Ta opcja zrestartuje system, który się uruchomi już z partycji raid. Po reboocie wpisujemy:
mdadm /dev/md0 -a /dev/hda1
i poleceniem cat /proc/mdstat można zobaczyć, że raid właśnie się tworzy. Dalsze czynności można podjąć gdy już pokaże się nam po wykonaniu tego polecenia następujący efekt:
md0 : active raid1 hda1[1] hdd1[0]
4194240 blocks [2/2] [UU]

Teraz trzeba dokończyć konfigurację. Do pliku lilo.conf na początku dopisujemy linie:
boot=/dev/md0 (to będzie zamiast istniejącego /dev/hda1)
raid-extra-boot=mbr
i dodajemy linię:
default=raid

żeby odtąd opcja z raidem uruchamiała się domyślnie.
Ponieważ nasz raid na md0 składa się już z dwóch partycji, więc musimy poprawić jeszcze jedną linię w lilo.conf
append=”md=0,/dev/hdd1,/dev/hda1” (wcześniej było tylko hdd1)
Ponownie wykonujemy lilo i możemy zrestartować system. Teraz mamy już pełny raid na partycji systemowej.
Dodatkowe partycje
Powtarzamy część czynności, aby dodać pozostałe partycje.
W moim przypadku zacząłem od partycji swap, co wg niektórych fachowców nie jest potrzebne.
mdadm -C /dev/md1 -l1 -n2 /dev/hdd2 missing
mkswap /dev/md0
mdadm /dev/md1 -a /dev/hda2

Podobnie dodałem partycję /home:
mdadm -C /dev/md2 -l1 -n2 /dev/hdd3 missing
mke2fs -j /dev/md2

Partycję zamontowałem w /mnt/hd i tym razem już ręcznie przerzuciłem zawartość /home, czyli de facto katalog użytkownika, bo mój system był świeżo zainstalowany (w zasadzie należało również użyć rsync).
Potem jeszcze odmontowałem partycję i wykonałem polecenie:
mdadm /dev/md2 -a /dev/hda3
Po kilku minutach polecenie cat /proc/mdstat pokazało cały zrobiony raid:
Personalities : [linear] [raid0] [raid1] [raid5]
read_ahead 1024 sectors
md2 : active raid1 hda3[1] hdd3[0]
16252864 blocks [2/2] [UU]

md1 : active raid1 hda2[1] hdd2[0]
524224 blocks [2/2] [UU]

md0 : active raid1 hda1[1] hdd1[0]
4194240 blocks [2/2] [UU]

Aby po restarcie, wszystko działało bezbłędnie należy jeszcze uzupełnić zmiany w pliku fstab:
/dev/md0        /       ext3    defaults        1       1
/dev/md1        swap    swap    defaults        0       0
/dev/md2        /home   ext3    defaults        1       2

i to jest ważny element, żeby nie tylko wcześniej wpisana partycja systemowa korzystała z raid, ale i pozostałe również. Trzeba także dodać pozostałe partycje w lilo.conf:
append=”md=0,/dev/hdd1,/dev/hda1 md=1,/dev/hdd2,/dev/hda2 md=2,/dev/hdd3,/dev/hda3″
a  na koniec po raz ostatni wykonać lilo i zrestartować system.
Jeśli po restarcie polecenie df pokaże nam:
System plików      bl.  1K B        użyte dostępne %uż. zamont. na
/dev/md0               4128384    237972   3680700   7% /
/dev/md2              15997840    170904  15014296   2% /home

– to znaczy, że wszystko zrobiliśmy poprawnie i nasz raid działa już na wszystkich partycjach.
Przed podjęciem opisanych czynności najpierw należy przeczytać prezentację Marka Wodzińskiego, ponieważ jest tam pełny i dokładny opis czynności oraz trochę wyjaśnień teoretycznych, które są niezbędne do zrozumienia tego – co i po co robimy. Elementarna wiedza jest bowiem niezbędna, aby w przypadku problemów umieć je zlokalizować. Ponadto powyższy opis dotyczy NND, zaś prezentacja pozwoli na przeprowadzenie operacji na dowolnym systemie linuksowym.

autor: W. Trąmpczyński (Maciek) na podstawie wykładu Marka Wodzińskiego


Monitor UPS (APC)

Mając UPS, co jest rzeczą nieodzowną na serwerach, warto również pokusić się o zrządzanie nim z poziomu systemu operacyjnego. Jak to robić z zasilaczami APC, wyjaśniam poniżej.

W NND instalujemy pakiet komendą pacman -S apcupsd, w innych dystrybucjach możemy skorzystać zapewne również z pakietów dystrybucyjnych (pobieżnie sprawdzając, znalazłem je we wszystkich popularnych systemach).
Konfiguracja też nie jest szczególnie skomplikowana, choć w przypadku UPS połączonego z komputerem przez USB, będziemy musieli ręcznie utworzyć urządzenie. Zrobimy to poleceniem mknod /dev/hiddev0 c 180 96. Wcześniej jednak po podłączeniu kabla sprawdźmy co nam na ten temat wyświetli polecenie dmesg będzie tam zapewne linia podobna do tej:
hiddev0: USB HID v1.10 Device [APC Back-UPS ES 700 FW:829.D2 .I USB FW:D2 ] on usb-0000:00:1d.2-1
Tworzymy więc urządzenie zgodnie z odnaleziona linia w dmesg. Następnie przechodzimy do edycji pliku /etc/apcupsd/apcupsd.conf.
Należy tam wpisac odpowiednie wartości zgodne ze stanem faktycznym (tu przykład dla połączenia usb):
UPSCABLE usb
UPSTYPE usb
DEVICE /dev/hiddev0

Przed uruchomieniem demona można jeszcze przetestować system poleceniem apctest.
Jeśli chcemy monitorować UPS sieciowo:
NETSERVER on
NISIP 0.0.0.0

IP mozna wpisać swój konkretny, jeśli demon ma nasłuchiwac tylko na tym jednym konkretnym IP. Potem kopiujemy pliki cgi do naszego katalogu cgi-bin (można tego nie robić tylko dodać odpowiedni wpis do httpd.conf).
Uruchamiamy demona poleceniem apcupsd i możemy się cieszyć możliwością automatycznego wyłączenia systemu po zaniku napięcia i upływie czasu wytrzymałości baterii.
Stan UPS można monitorować na tym samym komputerze przez serwer www, a żeby było wygodniej pliki cgi możemy przesłać na inny serwer i monitorować UPS zdalnie. Ma to pweną zaletę, ponieważ mając kilka takich UPS w różnych lokalizacjach można je sprawdzać w jednym miejscu. Należy jednak pamiętać, ze na zdalnym hoście – do którego wcale nie jest przyłączony UPS APC) trzeba miec plik /etc/apcupsd/host.conf,a w nim wypisane monitorowane hosty:
MONITOR twoja.domena.pl  „Nazwa” (zamiast domeny moze być IP)
Skrypty wymagają obecności pakietu gd i rysują wtedy ładne wykresy:

Online

Używając linuksowego desktopu można zainstalować pakiet gapcmon i monitorować zdalne hosty na swojej stacji roboczej:

Gapcmon

Notatka: autor: W. Trąmpczyński (Maciek)


Oident i synchronizacja czasu

Dodatki – synchronizacja czasu i oident
Posted on 30-11-2003 o godz. 18:46:52   [ Edit | Delete ]
Topic: Zipslack
Dwa krótkie opisy. Jak synchronizowac zegar komputera z serwerem czasu. Oident – czyliidentyfikacja użytkowników.

Synchronizacja czasu

Aby serwer synchronizował swoją datę i czas z zegarem atomowym wystarczy dopisać te linijki do pliku /var/spool/cron/crontabs/root
# synchronizuj
0 * * * * /usr/sbin/netdate 129.6.15.28 131.107.1.10
207.200.81.113 >& /dev/null
# zapisz do CMOS’a
5 * * * * /sbin/clock -w

Autor: Grzegorz Cichowski
Data: 13-11-2001

OIDENT – czyli ropoznawanie userów.

Dzięki Oident na IRC można dać bana na kanale konkretnemu kompowi w naszym LANie a nie całej sieci. Serwery ftp też sprawdzają ident Instalujemy installpkg oidentd.tgz
Teraz tworzymy plik oidentd.users
echo > /etc/oidentd.users
Teraz trzeba go edytować, zostawiam to już wam, bo nie wiem czym edytujecie pliki, przykładowo powinien on wyglądać tak:
192.168.0.2 maran UNIX
10.1.1.3 user2 UNIX
Teraz jeszcze trzeba edytować plik
/etc/inetd.conf
w miejscu w którym jest
auth stream tcp wait nobody /usr/sbin/in.identd in.identd -P /dev/null
zastępujemy tą linię taką
auth stream tcp nowait nobody /usr/sbin/oidentd oidentd -i -m
Teraz jeszcze reboot i powinno działać.
musi być otwarty port 113 bo na nim oident nasłuchuje

Autor: Sławomir Paniczko (maran)


Serwer DHCP

Serwer DHCP to usługa pozwalająca użytkownikom sieci zapomnieć o konfiguracji sieci. Serwer ten może naszemu komputerowi podać wszystkie, a przynajmniej większość parametrów dotyczących sieci takich jak adres bramki internetowej, nasz własny adres IP, maska podsieci itp.

Plik do ustawień serwera znajduje się w /etc/dhcpd.conf
Edytując plik trzeba znać kilka deklaracji możliwych: default-lease-time – domyślny czas przydzielenia adresu (w sek.),
max-lease-name – maksymalny czas przydzielnia adresu,
domain-name-server – adres IP serwera DNS (194.204.159.1 – TPSA),
domain-name – nazwa naszej domeny pisana w cudzysłowiu,
netbios-name-server – adres serwera WINS,
range – zakres adresów do dynamicznego przydziału,
netmask – maska podsieci,
routers – adres IP bramki internetowej,
fixed-address – adres przypisany na stałe,
hardware – rodzaj urządzenia sieciowego.

Podam tu przykładowy plik konfiguracyjny dla małej sieci złożonej z 5 komputerów + serwera udostępniającego dostęp do Internetu który przy okazji jest serwerem DHCP i WINS. Adres serwera to 192.168.0.1, maska podsieci 255.255.255.0. Domena – „grupa”. Komputery będą miały przydzielane adresy od 192.168.0.2 do 192.168.0.6 a ponadto przewidziany jest zakres adresów do dynamicznego przydziału dla innych komputerów z poza tych 5 od 192.168.0.10 do 192.168.0.20. Ważne tu jest aby zakres przydziału dynamicznego nie zachodził na zakres adresów przydzielanych statycznie. W przeciwnym przypadku może nastąpić tak że jeśli najpierw uruchomi się komputer który nie ma na stałe przydzielonego adresu to dostaje on pierwszy wolny adres jaki ma w puli i pokrywający się z adresem innego komputera który miał przydział na stałe co spowoduje że nie otrzyma swojego adresu jak zamierzaliśmy.
option domain-name „grupa”;
default-lease-name 604800; – 7 dni
max-lease-time 604800;
option netbios-name-servers 192.168.0.1;
subnet 192.168.0.0 netmask 255.255.255.0
{
range 192.168.0.10 192.168.0.20;
option routers 192.168.0.1;
option domain-name-servers 194.204.159.1,
194.204.152.34;
}
host komp1 {
fixed-address 192.168.0.2;
hardware ethernet 00:00:00:00:00:01;
}

host komp2 {
fixed-address 192.168.0.3;
hardware ethernet 00:00:00:00:00:02;
}

host komp3 {
fixed-address 192.168.0.4;
hardware ethernet 00:00:00:00:00:03;
}
host komp4 {
fixed-address 192.168.0.5;
hardware ethernet 00:00:00:00:00:04;
}

host komp5 {
fixed-address 192.168.0.6;
hardware ethernet 00:00:00:00:00:05;
}

Autor: Tomasz Waleńczak Data: 20-11-2001


NX – Zdalna praca

Poniższy artykuł jest uzupełnieniem i rozszerzeniem tematu przedstawionego na konferencji KOPI w Kęsowie. Jednym z głównych zagadnień była tam bowiem praca zdalna w rożnych systemach operacyjnych.

Niewątpliwie współcześnie jednym z ważniejszych aspektów istnienia i zastosowania komputerów jest możliwość pracy zdalnej. Podczas konferencji w bardzo spektakularny sposób zostały pokazane rozmaite możliwości w tym zakresie.
Jacek Haja przedstawił bardzo interesujący przykład działania zdalnego połączenia na komputerach ze stajni Apple.
Następnie organizator Mirek Bałazy przygotował prezentację dotyczącą zdalnego pulpitu Windows i pokazał jak można połączyć się z serwerem, ale także ze stacjami roboczymi w szkolnej pracowni. Zaletą rozwiązania jest to, że protokół rdp działa również wtedy, gdy klientem jest komputer z Linuksem.
Praca zdalna w systemach uniksowych to oczywistość już od wielu lat, ponieważ te systemy od początku były projektowane jako sieciowe. Jednak większości użytkowników kojarzą się one z protokołem ssh i linią poleceń. W Kęsowie przedstawił ten aspekt Jakub Cichocki. Pokazał, że w pozornie nieciekawym ssh kryje się wiele możliwości. Jednak nie tylko ssh z linią poleceń daje możliwości pracy zdalnej w Linuksie. Nie należy zapominać o opcji -X, która pozwala zdalnie uruchamiać także programy okienkowe. Podczas konferencji pokazaliśmy równiż łaczenie się dwóch komputerów z Linuksem przez VNC. Jest to rozwiązanie, które umożliwia nam zdalną pracę analogicznie jak w pozostałych systemach operacyjnych, na dodatek klientem może być komputer z zupełnie innym systemem operacyjnym. Jednak VNC ma istotną wadę. Jest nią ilość przesyłanych danych, co powoduje, że nadaje się głownie do sieci LAN i szybkich połączeń WAN. Jest jednak jeszcze inna alternatywa.
NX
Na stronie www.nomachine.com możemy znaleźć wiele interesujących informacji oraz pakiety dla dystrybucji korzystających z deb i rpm. Częściowo komponenty NX zostały opublikowane na licencji GPL, dlatego bardziej ambitni mogą w swojej dystrybucji zainstalować pakiet FreeNX.
Instalacja
Ze strony NX pobieramy pakiety. Należy się upewnić, że mamy działający serwer SSH przed instalacją serwera NX. Następnie przystępujemy do instalowania potrzebnych pakietów. Podczas instalacji zostanie wykonana także podstawowa konfiguracja, więc w zasadzie nasze indywidualne czynności ograniczą się do jednego polecenia:
/usr/NX/scripts/setup/nxserver –keygen
– wygeneruje ono nam klucz, którego później będziemy używać. Znajduje się on w /usr/NX/share/keys z nazwą default.id_dsa.key i należy go skopiować na komputer będący klientem. Klient może pracować pod kontrolą systemu Linux, Windows lub MacOSX.
Należy upewnić się, zanim przystąpimy do korzystania ze zdalnego połączenia, że:
– mamy otwarty port SSH na świat. W razie potrzeby należy dokonać odpowiedniej zmiany reguł na naszym serwerze lub na nadrzędnej bramie do internetu;
– serwer NX automatycznie włącza się po uruchomieniu systemu;
– użytkownik, którego konto będzie wykorzystane w trakcie połączeń ma prawo do logowania ssh.
Konfiguracja klienta
Na komputerze kliencie należy ze strony NX zainstalować pakiet nxclient. Znajdziemy tę aplikację na Linuksa, Windows, Solaris i MacOSX. Po instalacji należy skonfigurować połączenie i służy do tego łatwy „wizard”.

Wizard

Należy nadać nazwę naszemu połączeniu, wpisać adres serwera i port SSH. Po przejściu do następnego kroku, wybieramy jeszcze kilka ważnych parametrów. Szybkość połączenia, w większości wypadków będzie to opcja ADSL. Wybieramy też opcję zdalnego pulpitu, zależy ona od tego, jaki menedżer okien znajduje się na serwerze. Zaś zmienną display warto zostawić domyślnie jako „”Available area”, dzięki czemu ekran dostosuje się do rozdzielczości klienta.

Druga zakładka

W konfiguracji mamy jeszcze jeden ważny element. Należy kliknąć na przycisk „Key”. A następnie wybrać opcję „Import”. Importujemy tu klucz, który wcześniej pobraliśmy z serwera. Dopiero po tej czynności możemy przystąpić do połączenia.

Login

Podajemy nazwę użytkownika i jego hasło na serwerze i po chwili widzimy już zdalny pulpit. Poniżej mamy przykład pulpitu Mandrivy Xtreme na komputerze z Windows XP.

Pulpit

Zaletą NX jest praca przez tunel ssh, a więc i bezpieczeństwo. Należy rzecz jasna chronić swój klucz, choć on sam jeszcze nie umożliwi logowania.
Uwagi
Doświadczenia zostały wykonane przy użyciu programu Virtualbox, który posłużył do utworzenia symulowanych sieci LAN i WAN, działanie sprawdzono na rożnych systemach operacyjnych. Działanie zdalne programu NX sprawdziłem też przy pomocy Jakuba Cichockiego i Andrzeja Boreczko na rzeczywistych połączeniach internetowych. Połaczenia są szybkie i sprawne, a opóźnienia w przesyłaniu zdalnego pulpitu na tyle niewielkie, że nie przeszkadzają w pracy. Zdarzyło się również, że zmuszony byłem skorzystać z połączenia z domowym komputerem za pomocą telefonu komórkowego. Przy połączeniu EDGE bez problemów uruchomiłem program z którego chciałem odczytać potrzebne mi dane.

autor: W. Trąmpczyński (Maciek)


Przywracanie partycji Windows z poziomu Linuksa

Jest ogromna ilość sposobów na wykonywanie kopii i backupów systemu Windows, najczęściej przy użyciu specjalnych aplikacji, które z reguły są kosztowne.
Jest jednak sposób bardzo prosty…

Podczas Zjazdu Freesco Bartłomiej Czerwiński przedstawił sposób przywracania partycji Windows z poziomu Linuksa.
Wstęp
Poniższy tekst jest opracowaniem wykorzystującym ten właśnie wykład. W przypadku autora wykładu opracowany system służył do zarządzania pracowniami informatycznymi przeznaczonymi do celów edukacyjnych. Ponieważ studenci muszą mieć pełnie uprawnień w celu wykonywania ćwiczeń, więc nie ma mowy o ochronie systemu przez ograniczenie uprawnień użytkownika, co oznacza konieczność częstego przywracania systemu wraz z zainstalowanymi aplikacjami.
Można zresztą taki sposób wykorzystać również w przypadku stacji logujących się do domeny lub pojedynczych stacji roboczych. Warto tu wspomnieć, że nie można tego sposobu uznać za backup systemu, ponieważ w razie awarii dysku niestety stracimy także obraz. Dlatego w celu backupowania należałoby wykonane obrazy skopiować np. na serwer.
Od czego zacząć?
Najpierw instalujemy system Windows wraz ze wszystkimi potrzebnymi aplikacjami. Jeśli to pojedyncza stacja robocza, to warto zrobić osobna partycję na dokumenty i odpowiedni skonfigurować system, aby z niej korzystał. Należy pamiętać, że na Linuksa musimy zostawić tyle wolnego miejsca ile ma partycja systemowa Windows plus oczywiście miejsce potrzebne na zainstalowanie Linuksa.
W instalacji ćwiczeniowej wykorzystałem dysk 40 GB. Partycję systemową Windows założyłem w wielkości 7 GB, 10 przeznaczyłem na partycję z dokumentami użytkownika, zaś pozostałe miejsce zostało przeznaczone na Linuksa. Po zainstalowaniu i skonfigurowaniu Windows, można zacząć instalowanie Linuksa.
Dystrybucja, jaką wybierzemy, jest tu bez większego znaczenia. Jeśli na dysku ma być również system Linux do pracy, to sugeruję np. Mandrivę. Jeśli ma to być system wykorzystywany jedynie jako rescue, to raczej Slackware w minimalnej konfiguracji. Można też wykorzystać NND, ale procedura instalacji jest bardziej skomplikowana. Linuksa instalujemy na jednej dużej partycji (dodając ewentualnie swap, jeśli jest potrzebny).
Po zainstalowaniu Linuksa wykonamy kopię partycji z systemem Windows. Jest to bardzo prosta czynność, która potrwa od 10 do 15 minut. Po zalogowaniu się jako root wpisujemy polecenie:
cat /dev/hda1 > /root/xp.img
W tym przykładzie zrzucamy partycję systemową na dysku IDE do pliku xp.img w katalogu roota. Może to być dowolna inna ścieżka, jednak ważne, by ją zapamiętać.
Jak to się robi?
Jesteśmy zatem w sytuacji. gdy system Windows został zrzucony do pliku będącego obrazem partycji. Obraz ten ma taka wielkość jak partycja systemowa, nie został skompresowany (choć to byłoby możliwe), ponieważ wykonanie obrazu i przywracanie systemu bez kompresowania obrazu jest dużo szybsze.
Teraz już możemy sobie przygotować skrypty, które zautomatyzują czynności. Jest to istotne, ponieważ dzięki temu obecność administratora przy komputerach nie jest potrzebna. W Linuksie do pliku rc.local (może on być w /etc lub w /etc/init.d, lub tez w /etc/rc.d) dopiszemy kilka linijek.
cd /root
wget http://nasz.serwer/pracownia
chmod 755 pracownia
/root/pracownia

W naszym przykładzie skrypt rozpoczynający procedury nazywa się „pracownia”. Ten skrypt należy umieścić na serwerze i poleceniem wget ściągać na komputer. O samym skrypcie później napiszę dokładniej.
Teraz jeszcze na serwerze umieścimy kolejny skrypt, który będzie wykonywał wyznaczoną przez administratora procedurę. Nie popisaliśmy się fantazją i ten ostatni nosi po prostu nazwę „skrypt” Jego podstawowa zawartość służąca do przywrócenia systemu będzie wyglądać tak:
#!/bin/sh
echo „Zaczynam wykonywanie skryptu odzyskiwania systemu”
cat /root/xp.img > /dev/hda1
echo „Zakończono przywracanie systemu Windows”
echo „Zaczekaj na restart komputera”
reboot
Oczywiście w menedżerze startu domyślnym systemem jest Windows, bo w przeciwnym wypadku komputer wpadłby w pętlę.
W przypadku, gdy właśnie zaktualizowaliśmy oprogramowanie na komputerach i chcielibyśmy zrobić nowy obraz Windows, to zmieniamy nasz skrypt na serwerze:
#!/bin/sh
echo „Zaczynam wykonywanie obrazu systemu”
rm -fr /root/xp.img
cat dev/hda1 > /root/xp.img
echo „Zakończono wykonywanie obrazu Windows”
echo „Zaczekaj na restart komputera”
reboot
Oczywiście na wszelki wypadek możemy mieć jeszcze trzecią wersję tego skryptu:
#!/bin/sh
echo „Nie wykonuję, żadnych czynności”
echo „Zaczekaj na restart komputera”
reboot
Wystarczy nam jeden skrypt i w nim niepotrzebne linie zostaną zahaszowane (#). Wówczas tylko wystarczy usunąć znak # sprzed odpowiedniego fragmentu, aby uruchomić odpowiednią czynność.
Podsumowanie
No zakończenie umieszczamy na serwerze skrypt o nazwie pracownia. Należy go zmienić wpisując prawidłowy adres serwera ze skryptem (lub IP) oraz ewentualnie ścieżkę do pliku rc.local. Przedstawiony sposób może służyć do przywracania Windows na wielu różnych komputerach, w tym celu zamiast „skrypt” w pliku „pracownia” umieścimy odwołania do np. „skrypt1″ skrypt2” itd.
Odpowiednie pliki umieścimy też na serwerze. Dzięki temu możemy dokonać przywrócenia dowolnego systemu na dowolnym komputerze nie ruszając się z miejsca, a nawet zdalnie. Ponieważ jedyną czynność jaką w tym celu trzeba wykonać, to uruchomienie komputera, naciśnięcie „strzałki w dół” i potwierdzenia enterem. To potrafi na pewno wykonać nawet przysłowiowa już pani Zosia z sekretariatu.
Dodatkowe uwagi
Zamiast dowolnego Linuksa można w tym celu wykorzystać np. NND. Będzie się to tylko różniło sposobem instalacji. Można po zainstalowaniu Windows i zostawieniu odpowiedniej ilości wolnego miejsca zainstalować NND wg podanego na stronie NND sposobu. Ja podczas pisania tego tekstu wykorzystałem instalację NND w ten sposób, że najpierw wykonałem instalację z dużą partycją /boot, następnie po ponownym uruchomieniu z płyty, przekopiowałem /boot na partycję drugą, zmieniłem wpisy w fstab, dodałem wpisy dotyczące bootowania Windows i po zainstalowaniu systemu Windows jeszcze raz uruchomiłem komputer z płyty, żeby wykonać lilo. Oczywiście nie wolno zapomnieć, że to Windows ma być
systemem uruchamiającym się domyślnie.

Autor: W. Trąmpczyński (Maciek) na podstawie wykładu Bartka Czerwińskiego na VII Zjeździe Freesco w Tuchomiu.