Szybka instalacja Gentoo
1.
Wprowadzenie
Ten dokument zawiera wszystkie polecenia, których wydanie jest konieczne dla
zainstalowania Gentoo za pomocą archiwum stage3. Do pobrania archiwum stage3 i
drzewa Portage konieczne będzie działające połączenie z Internetem.
Nowi użytkownicy powinni zapoznać się z Podręcznikiem Gentoo. Zawiera on
szczegółowy opis całego procesu instalacji oraz pracy z Gentoo.
Czas podany w opisie został zmierzony na komputerze PC z procesorem AMD 2000
1.66 Ghz, 512 MB pamięci RAM i dwoma dyskami SATA podłączonymi do sprzętowego
kontrolera.
Listing 1.1: Sprawdzanie komputera |
# grep bogo /proc/cpuinfo
bogomips : 3337.81
# hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 1100 MB in 2.00 seconds = 549.97 MB/sec
Timing buffered disk reads: 224 MB in 3.01 seconds = 74.36 MB/sec
# grep MemTotal /proc/meminfo
MemTotal: 509248 kB
|
2.
Szybka instalacja
Płyty instalacyjne
Pobieramy płytę z jednego z serwerów
lustrzanych. Minimalne pliki ISO są w katalogu
releases/x86/<release>/installcd, pełne płyty instalacyjne w
releases/x86/<release>/livecd. Płyta minimalna przydaje się
tylko wtedy, gdy komputer jest podłączony do Internetu. Płyta pełna służy do
instalowania Gentoo bez dostępu do sieci, w takim przypadku należy skorzystać z
Podręcznika Gentoo
2007.0. Jeśli chodzi o ten opis, należy pobrać płytę minimalną.
Nagrywamy i uruchamiamy płytę
instalacyjną.
Uruchamianie systemu płyty instalacyjnej
Wciskamy F2 na ekranie uruchamiania, aby poznać możliwe do wybrania
opcje. Można uruchomić gentoo lub gentoo-nofb, to drugie wyłącza
framebuffer. Dodajemy opcję nox, aby nie ładowało się środowisko
graficzne. Inne opcje pozwalają na włączenie lub wyłączenie rozmaitych
dodatkowych funkcji. Jeśli wszystko pójdzie dobrze, sprzęt zostanie poprawnie
wykryty, a odpowiednie sterowniki załadowane. Jeśli jądro się nie uruchomi lub
komputer się zawiesi, należy poeksperymentować z różnymi ustawieniami.
Najbezpieczniejsza jest opcja nodetect - po wydaniu której sami ręcznie
możemy załadować potrzebne moduły.
Listing 2.1: Uruchamianie systemu płyty instalacyjnej |
Gentoo Linux Installation LiveCD http://www.gentoo.org
Enter to Boot; F1 for kernels F2 for options.
boot: gentoo-nofb
boot: gentoo-nofb nodetect
|
Opcjonalnie: ładowanie modułów
Jeśli skorzystamy z opcji nodetect, po uruchomieniu będzie konieczne
ręczne załadowanie niezbędnych do obsługi sprzętu modułów. Konieczne jest
zapewnienie połączenia z Internetem i obsługi dysków. Program lspci
umożliwia wykrycie używanego sprzętu.
Listing 2.2: Ładowanie potrzebnych modułów |
livecd root # lspci
livecd root # modprobe 3w-9xxx
livecd root # modprobe r8169
|
Konfiguracja sieci
Jeśli połączenie sieciowe jeszcze nie działa, należy skorzystać z programu
net-setup w celu jego konfiguracji. Możliwe też, że przed przystąpieniem
do konfiguracji konieczne będzie załadowanie dodatkowych modułów za pomocą
polecenia modprobe. Posiadacze ADSL powinni skorzystać z
pppoe-setup i pppoe-start. Aby zadziałało PPTP, należy edytować
/etc/ppp/chap-secrets i /etc/ppp/options.pptp, a
następnie użyć pptp <numer ip serwera>.
Połączenia bezprzewodowe konfiguruje się za pomocą iwconfig, a dopiero
potem uruchamia net-setup, ifconfig, dhcpcd oraz, jeśli to
jest konieczne, route.
Jeśli komputer znajduje się za serwerem proxy, należy za pomocą polecenia
export ustawić odpowiednio zmienne http_proxy, ftp_proxy i
RSYNC_PROXY.
Listing 2.3: Konfiguracja sieci za pomocą kreatora |
livecd root # net-setup eth0
|
Można również skonfigurować sieć ręcznie. W poniższym przykładzie przypisujemy
komputerowi adres 192.168.1.10 oraz ustawiamy 192.168.1.1 jako router i serwer
nazw.
Listing 2.4: Ręczna konfiguracja sieci |
livecd root # ifconfig eth0 192.168.1.10/24
livecd root # route add default gw 192.168.1.1
livecd root # echo nameserver 192.168.1.1 > /etc/resolv.conf
|
Płyta instalacyjna umożliwia uruchomienie serwera sshd. Możemy również
dodać konta użytkowników i uruchomić irssi (tekstowy klient IRC) oraz
przeglądać sieć za pomocą lynx i links.
Opcjonalnie: konfiguracja serwera SSH
Serwer sshd umożliwia łączenie się z komputerem, na którym instalujemy
Gentoo z innych maszyn oraz zdalną instalację.
Listing 2.5: Uruchamianie sshd |
livecd root # time /etc/init.d/sshd start
* Generating hostkey ...
* starting sshd ... [ok]
real 0m13.688s
user 0m9.420s
sys 0m0.090s
|
Następnie ustawiamy hasło roota na płycie instalacyjnej, co umożliwi łączenie
się z innego komputera. Ostrzegamy, że umożliwianie takich połączeń w
normalnych warunkach jest bardzo niebezpieczne. Jeśli sieć nie jest bezpieczna,
należy ustawić długie i mocne hasło oraz nie korzystać z takich opcji w
przyszłości. Serwer SSH zostanie wyłączony po ponownym uruchomieniu komputera.
Listing 2.6: Ustawianie hasła roota |
livecd root # passwd
New UNIX password:
Retype new UNIX password:
passwd: password updated successfully
|
Teraz można uruchomić terminal na drugim komputerze, połączyć się z nową
maszyną i kontynuować instalację zdalnie, przeklejając polecenia z tego opisu.
Listing 2.7: Łączenie z innego komputera |
$ ssh root@192.168.1.10
The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.
RSA key fingerprint is 96:e7:2d:12:ac:9c:b0:94:90:9f:40:89:b0:45:26:8f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.10' (RSA) to the list of known hosts.
Password:
|
Przygotowywanie dysków
Dzielimy dysk na partycje za pomocą programu fdisk lub cfdisk.
Potrzebna będzie co najmniej jedna partycja wymiany (typ 82) i jedna partycja
linuksowa (typ 83). W poniższym przykładzie stworzymy trzy partycje, partycję
główną, partycję wymiany oraz partycję /boot. Nazwa urządzenia
twardego dysku to /dev/sda dla dysków SATA i SCSI lub
/dev/hda dla dysków IDE.
Listing 2.8: Tworzenie partycji |
livecd ~ # fdisk /dev/sda
livecd ~ # fdisk -l /dev/sda
Disk /dev/sda: 599.9 GB, 599978409984 bytes
255 heads, 63 sectors/track, 72943 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 12 96358+ 83 Linux
/dev/sda2 13 110 787185 82 Linux swap / Solaris
/dev/sda3 111 72943 585031072+ 83 Linux
|
Następnie za pomocą mke2fs, mke2fs -j, mkreiserfs,
mkfs.xfs lub mkfs.jfs tworzymy systemy plików na partycjach.
Aktywujemy też partycję wymiany za pomocą poleceń mkswap i
swapon.
Listing 2.9: Tworzenie systemów plików i aktywowanie partycji wymiany |
livecd ~ # mke2fs /dev/sda1
livecd ~ # mke2fs -j /dev/sda3
livecd ~ # mkswap /dev/sda2 && swapon /dev/sda2
|
Montujemy główną partycję w katalogu /mnt/gentoo. W razie potrzeby
tworzymy katalogi dla dodatkowych partycji (np. /mnt/gentoo/boot).
Listing 2.10: Montowanie systemów plików |
livecd ~ # mount /dev/sda3 /mnt/gentoo
livecd ~ # mkdir /mnt/gentoo/boot
livecd ~ # mount /dev/sda1 /mnt/gentoo/boot
livecd ~ # cd /mnt/gentoo
|
Rozpakowywanie archiwum stage
Po pierwsze ustawiamy datę za pomocą polecenia date MMDDRRRR. W
przykładzie używamy czasu UTC.
Listing 2.11: Ustawianie daty i czasu UTC |
livecd gentoo # date
Mon Mar 6 00:14:13 UTC 2006
livecd ~ # date 030600162006
Mon Mar 6 00:16:00 UTC 2006
|
Następnie pobieramy archiwum stage z jednego z serwerów lustrzanych. Przechodzimy do
/mnt/gentoo i rozpakowujemy je poleceniem tar xjpf <plik
stage3>.
Listing 2.12: Pobieranie archiwum stage3 |
livecd gentoo # links http://www.gentoo.org/main/en/mirrors.xml
livecd gentoo # wget ftp://gentoo.osuosl.org/pub/gentoo/releases/x86/2008.0_beta1/stage3-i686*tar.bz2
|
Listing 2.13: Rozpakowujemy archiwum |
livecd gentoo # time tar xjpf stage3*
real 1m14.157s
user 1m2.920s
sys 0m7.530s
|
Następnie instalujemy drzewo Portage. Postępujemy z nim tak jak ze stage3.
Wybieramy serwer lustrzany, pobieramy
plik i rozpakowujemy.
Listing 2.14: Pobieranie drzewa Portage |
livecd gentoo # cd /mnt/gentoo/usr
livecd usr # links http://www.gentoo.org/main/en/mirrors.xml
livecd gentoo # cd /mnt/gentoo/usr
livecd usr # wget http://gentoo.osuosl.org/snapshots/portage-latest.tar.bz2
|
Listing 2.15: Rozpakowujemy archiwum z drzewem Portage |
livecd usr # time tar xjf portage-lat*
real 0m40.523s
user 0m28.280s
sys 0m8.240s
|
Chrootowanie
Montujemy system plików /proc, kopiujemy do nowego systemu plik
/etc/resolv.conf i chrootujemy się do instalowanego systemu.
Listing 2.16: Chrootowanie |
livecd usr # cd /
livecd / # mount -t proc proc /mnt/gentoo/proc
livecd / # cp -L /etc/resolv.conf /mnt/gentoo/etc/
livecd / # chroot /mnt/gentoo /bin/bash
livecd / # env-update && source /etc/profile
>>> Regenerating /etc/ld.so.cache...
|
Konfiguracja strefy czasowej
Ustawiamy informację o swojej strefie czasowej używając właściwej ścieżki z
katalogu /usr/share/zoneinfo.
Listing 2.17: Ustawienie strefy czasowej |
livecd / # ls /usr/share/zoneinfo
livecd / # cp /usr/share/zoneinfo/Europe/Warsaw /etc/localtime
livecd / # date
Wed Mar 8 00:46:05 CET 2006
|
Konfiguracja nazw hosta i domeny
Ustawiamy nazwę hosta w plikach /etc/conf.d/hostname i
/etc/hosts. W poniższym przykładzie skorzystamy z mybox
jako nazwy hosta oraz z at.myplace jako domeny. Można edytować pliki w
nano lub skorzystać z poniższych poleceń:
Listing 2.18: Ustawianie nazwy hosta i domeny |
livecd / # cd /etc
livecd etc # echo "127.0.0.1 mybox.at.myplace mybox localhost" > hosts
livecd etc # sed -i -e 's/HOSTNAME.*/HOSTNAME="mybox"/' conf.d/hostname
livecd etc # hostname mybox
livecd etc # hostname -f
mybox.at.myplace
|
Konfiguracja jądra
Instalujemy źródła jądra (zwykle gentoo-sources), kompilujemy i kopiujemy
plik arch/i386/boot/bzImage do katalogu /boot.
Listing 2.19: Instalacja jądra |
livecd etc # time emerge gentoo-sources
real 2m51.435s
user 0m58.220s
sys 0m29.890s
livecd etc # cd /usr/src/linux
livecd linux # make menuconfig
livecd linux # time make -j2
real 3m51.962s
user 3m27.060s
sys 0m24.310s
livecd linux # make modules_install
livecd linux # cp arch/i386/boot/bzImage /boot/kernel
|
Konfiguracja systemu
Edytujemy plik /etc/fstab i zamieniamy wpisy BOOT,
ROOT i SWAP nazwami konkretnych partycji. Należy dwa razy
sprawdzić czy wpisy odpowiadają założonym przed chwilą partycjom i systemom
plików.
Listing 2.20: Przykładowy plik fstab |
livecd linux # cd /etc
livecd etc # nano -w fstab
/dev/sda1 /boot ext2 noauto,noatime 1 2
/dev/sda3 / ext3 noatime 0 1
/dev/sda2 none swap sw 0 0
|
Następnie konfigurujemy połączenie sieciowe w pliku
/etc/conf.d/net. Dodajemy skrypt startowy net.eth0 na
domyślny (default) poziom uruchomieniowy. Jeśli mamy kilka kart sieciowych,
podlinkowujemy je do skryptu net.eth0 i dodajemy na domyślny poziom
uruchomieniowy. Następnie edytujemy plik /etc/conf.d/net za pomocą
nano lub wpisujemy następujące polecenia:
Listing 2.21: Konfiguracja sieci |
livecd etc # cd conf.d
livecd conf.d # echo 'config_eth0=( "192.168.1.10/24" )' >> net
livecd conf.d # echo 'routes_eth0=( "default via 192.168.1.1" )' >> net
livecd conf.d # rc-update add net.eth0 default
livecd conf.d # echo r8169 >> /etc/modules.autoload.d/kernel-2.6
livecd conf.d # rc-update add sshd default
|
Uwaga:
Jeśli jest konieczne wsparcie dla PCMCIA, należy zainstalować
pcmciautils.
|
Ustawiamy hasło roota za pomocą polecenia passwd.
Listing 2.22: Ustawianie hasła roota |
livecd conf.d # passwd
New UNIX password:
Retype new UNIX password:
passwd: password updated successfully
|
Następnie ustawiamy odpowiednią strefę czasową w pliku
/etc/conf.d/clock.
Listing 2.23: Edycja /etc/conf.d/clock |
livecd conf.d # nano -w /etc/conf.d/clock
TIMEZONE="Europe/Warsaw"
|
Sprawdzamy konfigurację systemu w /etc/rc.conf,
/etc/conf.d/rc, /etc/conf.d/keymaps i zmieniamy
wpisy tak, aby odpowiadały żądanym ustawieniom.
Listing 2.24: Opcjonalnie: konfiguracja systemu |
livecd conf.d # nano -w /etc/rc.conf
livecd conf.d # nano -w /etc/conf.d/rc
livecd conf.d # nano -w /etc/conf.d/keymaps
|
Instalowanie narzędzi systemowych
Teraz instalujemy program logującegy, np. syslog-ng oraz demona
cron, np. vixie-cron. Oba dodajemy do poziomu uruchomieniowego.
Uwaga:
Demony cron są zależne od MTA. W związku z tym jako zależność zostanie
zainstalowane mail-mta/ssmtp. Można użyć bardziej zaawansowanego MTA
instalując go przed instalacją demona cron. Jeśli nie jest potrzebny, zostajemy
przy domyślnym wyborze.
|
Listing 2.25: Instalacja loggera i demona cron |
livecd conf.d # time emerge syslog-ng vixie-cron
real 1m54.099s
user 1m2.630s
sys 0m34.620s
livecd conf.d # rc-update add syslog-ng default
livecd conf.d # rc-update add vixie-cron default
|
Następnie instalujemy niezbędne narzędzia systemowe (xfsprogs,
reiserfsprogs lub jfsutils) oraz programy do obsługi sieci
(dhcpcd lub ppp).
Listing 2.26: Instalowanie dodatkowych narzędzi systemowych |
livecd conf.d # emerge xfsprogs
livecd conf.d # emerge jfsutils
livecd conf.d # emerge reiserfsprogs
livecd conf.d # emerge dhcpcd
livecd conf.d # emerge ppp
|
Konfiguracja programu ładującego
Instalujemy program grub i konfigurujemy go.
Listing 2.27: Instalacja i konfiguracja GRUB |
livecd conf.d # time emerge grub
real 1m4.634s
user 0m39.460s
sys 0m15.280s
livecd conf.d # nano -w /boot/grub/grub.conf
|
Listing 2.28: Przykładowy plik grub.conf |
default 0
timeout 10
title Gentoo
root (hd0,0)
kernel /boot/kernel root=/dev/sda3
|
Listing 2.29: Instalacja gruba |
livecd conf.d # grub
Probing devices to guess BIOS drives. This may take a long time.
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2 /boot/
grub/menu.lst"... succeeded
Done.
grub> quit
|
Ponowne uruchamianie
Wychodzimy z chroota, odmontowujemy partycje i ponownie uruchamiamy komputer:
Listing 2.30: Ponowne uruchomienie komputera |
livecd conf.d # exit
livecd / # umount /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo
livecd / # reboot
|
Finalizowanie instalacji
Uwaga:
Całkowity czas pomiędzy wyświetleniem znaku zachęty po raz pierwszy a
uruchomieniem nowego systemu wyniósł 00:42:31 czyli mniej niż godzinę. A
przecież ten czas został wydłużony przez pobieranie wielu dużych plików jak
stage3, drzewo Portage i kilka dużych pakietów. Poza tym w czas instalacji
wliczona była również konfiguracja jądra.
|
Logujemy się jako root, a następnie dodajemy jednego lub kilku
użytkowników do codziennej pracy za pomocą polecenia useradd.
Listing 2.31: Łączenie się do komputera, na którym zostało zainstalowane Gentoo |
$ nano -w ~/.ssh/known_hosts
$ ssh root@192.168.1.10
The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.
RSA key fingerprint is 96:e7:2d:12:ac:9c:b0:94:90:9f:40:89:b0:45:26:8f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.10' (RSA) to the list of known hosts.
Password:
|
Listing 2.32: Dodawanie konta użytkownika |
mybox ~ # adduser -g users -G lp,wheel,audio,cdrom,portage,cron -m mkay
mybox ~ # passwd mkay
New UNIX password:
Retype new UNIX password:
passwd: password updated successfully
|
Ostatnie poprawki w konfiguracji
Wybieramy najlepsze serwery lustrzane i dodajemy odpowiednio do zmiennych
SYNC i GENTOO_MIRRORS w pliku /etc/make.conf - lub
korzystamy z programu mirrorselect, który zrobi to za nas. Można też
ustawić ilość równoległych procesów kompilacji.
Listing 2.33: Praca z mirrorselect i ustawianie MAKEOPTS |
mybox ~ # emerge mirrorselect
mybox ~ # mirrorselect -i -o >> /etc/make.conf
mybox ~ # mirrorselect -i -r -o >> /etc/make.conf
mybox ~ # echo 'MAKEOPTS="-j2"' >> /etc/make.conf
|
Następnie ustawiamy flagi USE. W tym celu uruchamiamy emerge -vpe world,
aby przejrzeć listę zainstalowanych pakietów oraz używanych przez nich flag
USE. Następnie dopisujemy wybrane flagi w pliku /etc/make.conf
lub wpisujemy poniższe polecenia:
Listing 2.34: Podgląd flag USE oraz ich ustawianie |
mybox ~ # emerge -vpe world
mybox ~ # echo 'USE="nptl nptlonly -ipv6 -fortran unicode"' >> /etc/make.conf
|
Najnowsze wersje glibc do zdefiniowania lokalizacji używają pliku
/etc/locale.gen.
Listing 2.35: Wybór lokalizacji |
mybox ~ # cd /etc
mybox etc # nano -w locale.gen
mybox etc # locale-gen
|
Na koniec warto jeszcze zmienić CFLAGS w pliku
/etc/make.conf w celu zoptymalizowania kompilacji pakietów. Zbytni
zapał w dostrajaniu tej zmiennej i dodawanie zbyt wielu flag zwykle kończy się
zepsuciem systemu, dlatego zalecamy rozwagę. Dobrym rozwiązaniem jest zwykle
wpisanie typu procesora do opcji march i dopisanie flag -O2
-pipe.
W tym momencie można też przełączyć system do wersji niestabilnej -
~x86. Jest to zdecydowanie opcja dla bardzo doświadczonych użytkowników
Gentoo, którzy potrafią sobie poradzić z naprawą zepsutego ebuildu czy pakietu.
Jeśli system ma pozostać w wersji stabilnej, nie należy dodawać zmiennej
ACCEPT_KEYWORDS. Dobrym pomysłem jest dodanie wpisu
FEATURES="ccache".
Listing 2.36: Ostatnie zmiany w make.conf |
mybox etc # nano -w make.conf
CFLAGS="-O2 -march=athlon-xp -pipe"
FEATURES="ccache"
ACCEPT_KEYWORDS="~x86"
|
W tym momencie można dwukrotnie przebudować cały system, aby w pełni skorzystać
ze wszelkich dokonanych w konfiguracji zmian. Zajmie to bardzo dużo czasu i da
niewiele korzyści. W związku z tym wiele osób decyduje się na zignorowanie tego
kroku i pozwolonie systemowi na stopniową przebudowę w miarę codziennych
aktualizacji. Ponowna kompilacja na tym etapie uczyniłaby jednak system
bardziej spójnym. Plusy przebudowy całego systemu zostały dokładnie omówione w
tekście Aktualizacja GCC w Gentoo.
Przebudowa pakietów, których nowsze wersje pojawiły się od czasu wydania Gentoo
oraz tych, którym zmieniły się flagi USE zajmie mnóstwo czasu. Czasami może
pojawić się informacja o blokadzie, która uniemożliwia aktualizację pakietów.
Należy poszukać wtedy wpisów "[blocks B ]" w wyjściu
polecenia emerge -vpuD --newuse world i usunąć blokujące pakiety.
Listing 2.37: Aktualizacja systemu |
mybox etc # emerge ccache
mybox etc # emerge -vpuD --newuse world
mybox etc # time emerge -vuD --newuse world
real 180m13.276s
user 121m22.905s
sys 36m31.472s
mybox etc # emerge --oneshot libtool
mybox etc # dispatch-conf
mybox etc # time perl-cleaner all
real 1m6.495s
user 0m42.699s
sys 0m10.641s
mybox etc # python-updater
|
Co dalej?
W zależności od przeznaczenia komputera, na którym zainstalowaliśmy właśnie
Gentoo możemy teraz przystąpić do instalacji oprogramowania serwerowego lub
biurkowego. W przykładzie zmierzymy czasy emerge gnome i emerge
kde na tym samym komputerze, na którym instalowaliśmy system.
Warto przejrzeć dokumentację Gentoo, gdzie znajdują
się informacje o instalacji i konfiguracji wielu różnych pakietów.
Ważne:
Poniższe polecenia to tylko przykład, nie jest to już część zalecanej
konfiguracji.
|
Listing 2.38: Instalacja GNOME |
mybox etc # emerge -vp gnome
mybox etc # nano -w /etc/make.conf
USE="nptl nptlonly -ipv6 -fortran unicode svg hal dbus \
-kde -qt3 -qt4 -arts -eds -esd gnome gstreamer gtk firefox"
mybox etc # time emerge gnome
real 520m44.532s
user 339m21.144s
sys 146m22.337s
|
Listing 2.39: Instalacja KDE |
mybox etc # emerge -vp kde-meta
mybox etc # nano -w /etc/make.conf
USE="nptl nptlonly -ipv6 -fortran unicode svg hal dbus \
kde qt3 qt4 -arts -eds -esd -gnome -gstreamer -gtk -firefox"
mybox etc # time emerge kde-meta
real 1171m25.318s
user 851m26.393s
sys 281m45.629s
|
Zawartość tego dokumentu jest rozpowszechniana na podstawie licencji Creative Commons -
Attribution / Share Alike.
|