Krótkie wprowadzenie do Gentoo/FreeBSD
1.
Wprowadzenie do FreeBSD
Czym jest FreeBSD?
FreeBSD jest systemem Unikso-podobnym
opartym na wolnej licencji. W
roku 1993, gdy wstrzymano rozwój 386BSD,
powstały dwa nowe projekty: NetBSD,
powszechnie rozpoznawany ze względu na ogromną ilość wspieranych architektur
sprzętowych oraz FreeBSD, który wspiera x86, amd64, ia64, sparc64 oraz alpha.
FreeBSD jest cenione za stabilność, wydajność oraz bezpieczeństwo, dzięki czemu
znalazło zastosowanie w zarówno w małych, jak i wielkich firmach na całym
świecie.
Aktualną stabilną wersją FreeBSD jest 6.2 - na niej właśnie jest oparty projekt
Gentoo/FreeBSD. Poprzednie wersje FreeBSD nie są przez nas wspierane.
Czym jest Gentoo/FreeBSD?
Gentoo/FreeBSD jest podprojektem
Gentoo/Alt project, który skupia się na
stworzeniu w pełni funkcjonalnego systemu FreeBSD z założeniami projektowymi
Gentoo, takimi jak init oraz menadżer zarządzania pakietami Portage.
FreeBSD a Linux
Użytkownicy przenoszący się z Linuksa na FreeBSD z reguły uważają te systemy za
"prawie takie same". Faktycznie, jest pomiędzy nimi wiele podobieństw. Istnieje
jednak kilka kluczowych różnic:
-
W przeciwieństwie do Linuksa, który w zasadzie jest samym jądrem, FreeBSD
jest kompletnym systemem operacyjnym, składającym się z biblioteki
podstawowej C, narzędzi przestrzeni użytkownika i wielu innych elementów. To
założenie konstrukcyjne czyni całość bardzo spójną.
-
W przeciwieństwie do jądra Linuksa, rozwój FreeBSD nie jest prowadzony przez
jedną osobę, tylko przez niewielką grupę zwaną Grupą
Zarządzającą.
Ponadto istnieją też różnice techniczne oddzielające FreeBSD od Linuksa.
Niektóre z nich warto znać nawet, jeżeli nie zamierza się przyłączyć do rozwoju
Gentoo/FreeBSD:
-
Funkcje dynamicznego łączenia, takie jak dlopen(), działają bez
połączenia programu z biblioteką libdl (co jest wymagane na GNU/Linux).
Zamiast tego po prostu łączy się je z libc.
-
FreeBSD nie posiada oficjalnego narzędzia kompilacji jądra, więc zależności
pomiędzy różnymi cechami muszą zostać rozstrzygnięte przez użytkownika.
-
FreeBSD stosuje systemy plików UFS/UFS-2 i nie zawiera oficjalnego wsparcia
dla ReiserFS ani XFS. Mimo to istnieją projekty dodania możliwości odczytu
danych zapisanych przy ich użyciu. Dostęp do partycji ext2/ext3 jest już
możliwy, jednak nie da się na nich zainstalować systemu.
2.
Instalacja Gentoo/FreeBSD
Rozruch z płyty CD
Po wprowadzeniu, czas na zainstalowanie Gentoo/FreeBSD. Niestety projekt nie
dysponuje jeszcze własnym medium instalacyjnym, więc konieczny jest wybór
pomiędzy dwoma opcja. Pierwszą z nich jest wykorzystanie istniejącej instalacji
FreeBSD do podzielenia dysku twardego na partycje i zainstalowania
Gentoo/FreeBSD. Drugą z nich jest użycie FreeSBIE LiveCD jako medium instalacyjnego.
Uwaga:
Jeśli zamierzamy skorzystać z FreeSBIE do instalowania Gentoo/FreeBSD musimy się
upewnić, że używamy wersji opartej na FreeBSD 6.x! Czyli na przykład FreeSBIE
2.0 lub jedną z jej wydań kandydujących. FreeSBIE można pobrać z torrenta FreeSBIE's Bittorrent tracker .
|
Najpierw należy zatem uruchomić system z płyty CD, po czym zalogować się jako
użytkownik freesbie. Hasło nie będzie wymagane. Następnie trzeba użyć
polecenia sudo su, aby uzyskać uprawnienia administratora i opcjonalnie
ustawić hasło. Dla miłego i wygodnego spędzenia czasu podczas instalacji można
również użyć polecenia startx, przez co zostanie uruchomione środowisko
Xfce odpowiednie do przeglądania stron www, prowadzenia rozmów poprzez
komunikatory oraz wielu innych czynności. W FreeBSD istnieją inne nazwy
interfejsów niż te, do których przywykliśmy w Linuksie. Dla przykładu sterownik
Intel EtherExpress (fxp) pojawia się jako fxp0 (sterownik fxp, pierwsza karta
sieciowa). Aby dowiedzieć się, jakiego interfejsu się używa, należy użyć
ifconfig:
Listing 2.1: Odnajdywanie nazwy interfejsu sieciowego przy pomocy ifconfig |
# ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet6 fe80::2d0::b7ff:febc:4fe3%fxp0 prefixlen 64 scopeid 0x1
inet 192.168.0.106 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:d0:b7:bc:4f:e3
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8007<LOOPBACK,MULTICAST> mtu 16384
|
Jeśli żądanie DHCP podczas ładowania CD zawiedzie należy użyć komendy
dhclient aby uzyskać adres IP:
Listing 2.2: Uzyskiwanie adresu IP przy pomocy dhclient |
# dhclient fxp0
DHCPDISCOVER on fxp0 to 255.255.255.255 port 67 interval 9
DHCPOFFER from 192.168.0.1
DHCPREQUEST on fxp0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.106 -- renewal in 302400 seconds
|
Uwaga:
Wyjście polecenia będzie się różniło od przykładowego, to zależy od sieci.
|
Podział dysku
Skoro punkt montowania już istnieje, czas najwyższy odpowiednio przygotować
dysk. W tym celu należy posłużyć się poleceniem sysinstall:
Listing 2.3: Przygotowywanie dysku |
# sysinstall diskPartitionEditor diskPartitionWrite
|
Zaleca się użycie standardowego układu. Aby go zaakceptować należy nacisnąć
enter, a następnie a i q. Następny obraz przedstawi opcje
bootloadera. Opuścimy tę opcję wybierając "None", ponieważ instalacja
bootloadera zostanie przeprowadzona w późniejszym etapie. Powinien pojawić się
teraz aktualny rozkład partycji i punktów montowań.
Następnym krokiem jest ponowne użycie sysinstall lecz już z innymi
argumentami:
Listing 2.4: Użycie sysinstall do konfiguracji wielkości partycji i punktów ich montowań |
# sysinstall diskLabelEditor diskLabelCommit
|
W tym miejscu należy się powstrzymać od użycia automatycznego układu i stworzyć
jedną, dużą partycję oraz partycję wymiany. W tym celu użyjmy klawisza c.
Ukaże się okno dialogowe, w którym należy podać wielkość partycji. Wartość można
podać w MB (megabajtach), (GB) gigabajtach lub C (cylindrach). Dla głównej
partycji należy wybrać typ FS, a punkt montowania ustawić na /mnt/.
W przypadku niepodania tego punktu, zostanie nadpisane środowisko
FreeSBIE! Ponieważ /boot nie jest oddzielną partycją, wymagane
jest wyłączyć Soft Updates. W przeciwnym razie system nie załaduje się! W tym
celu przy pomocy strzałek należy nakierować na nowo stworzoną partycję, naciskać
klawisz s aż do momentu, w którym "Newfs" nie będzie zawierał +S.
Następnie wybrać linię "Disk" i ponownie nacisnąć c w celu stworzenia
partycji wymiany, która powinna być dwa razy większa niż posiadana pamięć RAM.
Teraz wystarczy wybrać typ partycji SWAP i wyjść z programu używając klawisza
q.
Podczas wybierania innych punktów montowań partycji niż /,
sysinstall stworzy partycję slice 'd', z której proces ładowania nie
będzie możliwy. Aby to naprawić należy wykonać następujące polecenie:
Listing 2.5: Poprawa głównej partycji |
# disklabel ad0s1 | sed 's/^ d:/ a:/' | disklabel -R ad0s1 /dev/stdin
|
W ten sposób zostaje zakończony proces podziału dysku i formatowania do systemu
plików UFS. Partycja zotała również zamontowana w punkcie wskazanym wcześniej
(/mnt/). Poprawność można zweryfikować poleceniem mount;
Listing 2.6: Weryfikacja poprawności montażu partycji |
# mount
...
/dev/ad0s1a on /mnt (ufs, local)
|
Skoro partycje są już odpowiednio przygotowane i prawidłowo zamontowane, można
przejść do procesu instalacji.
Konfiguracja
Po pierwsze należy pobrać stage3, a następnie rozpakować do chroot. Archiwa
dostępne są pod adresem
http://gentoo.osuosl.org/experimental/x86/freebsd/stages/, gdzie
należy się udać, wybrać najnowszy snapshot i rozpakować go do punktu montowania.
Listing 2.7: Pobranie i rozpakowanie archiwa stage3 |
# cd /mnt/
# wget http://gentoo.osuosl.org/experimental/x86/freebsd/stages/stage3-x86-freebsd-6.2.tar.bz2
# tar -jxvpf stage3-x86-freebsd-6.2.tar.bz2
# rm stage3-x86-freebsd-6.2.tar.bz2
|
Uwaga:
Nieco bardziej gorliwi użytkownicy mogą użyć overlaya, który zawiera
pół-eksperymentalne ebuildy z poprawkami niedostępnymi jeszcze w drzewie
Portage. Dokumentacja dostępna jest pod adresem dokumentacji
overlaya Gentoo/ALT. Należy mieć jednak na uwadze, że overlay nie jest
konieczny i można łatwo zainstalować Gentoo/FreeBSD bez niego.
|
Przed chroot konieczne jest jeszcze zamontowanie katalogu /dev z
aktualnego systemu do odpowiedniego miejsca w strukturze Gentoo/FreeBSD.
Listing 2.8: Montowanie /dev oraz zmiana korzenia drzewa katalogów |
# mount -t devfs none /mnt/dev/
# cp /etc/resolv.conf /mnt/etc/
# chroot /mnt/ /bin/bash
# env-update && source /etc/profile
|
Po uzyskaniu nakładki Gentoo/FreeBSD nadchodzi czas na dowiązanie
/etc/make.profile do właściwego profilu i przygotowanie
/etc/make.conf.
Teraz pora na zdobycie własnej kopii drzewa Portage. Może to potrwać dłuższą
chwilę, w zależności od tego jak szybkie jest nasze połączenie z internetem.
Listing 2.9: Ściąganie drzewa Portage |
# emerge --sync
# cd /
# wget http://gentoo.osuosl.org/snapshots/portage-latest.tar.bz2
# tar -xjf portage-latest.tar.bz2 -C /usr/
# emerge --metadata
|
Listing 2.10: Konfiguracja profilu oraz /etc/make.conf |
# ln -sf /usr/portage/profiles/default-bsd/fbsd/6.2/x86/ /etc/make.profile
# nano /etc/make.conf
CHOST="i686-gentoo-freebsd6.2"
FEATURES="collision-protect"
|
Uwaga:
Słowo kluczowe ~x86-fbsd nie pokrywa drzewa Portage tak samo jak
~x86. Zespół prosi jednak o nieużywanie słowa kluczowego w
zmiennej ACCEPT_KEYWORDS lecz o dodawanie poszczególnych pakietów do
/etc/portage/package.keywords. W razie zaistniałych problemów,
błędy można zgłaszać na Bugzilli.
|
W razie potrzeby można również przebudować podstawowe pakiety systemowe:
Listing 2.11: Opcjonalne przebudowanie podstawowych pakietów FreeBSD |
# emerge -e system
|
3.
Ustawienia procesu ładowania systemu
Strefa czasowa
Najpierw ustawiamy, że data jest poprawnie ustawiana za pomocą polecenia
date yyyymmddHHMM. Należy użyć czasu UTC.
Listing 3.1: Ustawianie godziny |
# date
Mon Mar 6 00:14:13 UTC 2006
# date 200603060016
Mon Mar 6 00:16:00 UTC 2006
|
Następnie wybieramy odpowiednią strefę czasową z
/usr/share/zoneinfo.
Listing 3.2: Konfiguracja strefy czasowej |
# ls /usr/share/zoneinfo
# cp /usr/share/zoneinfo/Europe/Warsaw /etc/localtime
# date
Wed Mar 8 00:46:05 CET 2006
|
Następnie wpisujemy tę samą strefę czasową do pliku
/etc/conf.d/clock.
Listing 3.3: Edycja /etc/conf.d/clock |
# nano -w /etc/conf.d/clock
TIMEZONE="Europe/Warsaw"
|
Instalacja jądra
Po wykonaniu emerge -e system, źródła jądra FreeBSD zostały zainstalowane
do /usr/src/sys. Jeżeli krok ten został pominięty, można je
pozyskać w następujący sposób:
Listing 3.4: Pozyskiwanie źródeł jądra FreeBSD |
# emerge freebsd-sources
|
Konfiguracja i kompilacja własnego jądra jest zdecydowanie odmienna od swojego
linuksowego odpowiednika, więc w razie wątpliwości należy skonsultować się z
rozdziałem ósmym podręcznika FreeBSD. Można również dokonać instalacji
standardowego jądra, który działa na większości systemów. Aby zacząć należy
wejść do katalogu ze źródłami jądra:
Ważne:
Należy również zwrócić uwagę na to, że jedynie "tradycyjny" sposób kompilacji
jest aktualnie wspierany przez Gentoo/FreeBSD!
|
Listing 3.5: Wejście do katalogu ze źródłami jądra |
# cd /usr/src/sys/
|
Przeglądając układ, da się dostrzec różne architektury i podkatalogi dla różnych
części jądra. Aby dokonać instalacji należy się skierować do katalogu
i386/conf/:
Listing 3.6: The kernel configuration directory |
# cd i386/conf/
# ls
.cvsignore GENERIC Makefile PAE
DEFAULTS GENERIC.hints NOTES SMP
|
Główne pliki, które należy zanotować to GENERIC oraz
GENERIC.hints. Proces instalacji jądra wymaga skopiowania
GENERIC.hints do /boot/device.hints:
Listing 3.7: Kopiowanie pliku GENERIC.hints |
# cp GENERIC.hints /boot/device.hints
|
Plik ten jest używany przez sterowniki jądra dla podstawowej konfiguracji takich
jak ustawienia IRQ. Nadszedł czas aby skonfigurować jądro. FreeBSD używa komendy
config do tego celu. config używa natomiast pliku GENERIC, aby
skopiować niezbędne pliki do katalogu compile. Plik
GENERIC jest podobny do pliku .config który jest znany
z Linuksa. Należy zatem wykonać polecenie config:
Listing 3.8: Konfiguracja jądra |
# config GENERIC
Kernel build directory is ../compile/GENERIC
Don't forget to ''make cleandepend; make depend''
|
config stworzył standardowy katalog budowy w głównym katalogu źródeł.
Należy wejść doń, a następnie użyć kolejnych poleceń aby wykonać kompletną
budowę:
Listing 3.9: Budowa i instalacja jądra |
# cd ../compile/GENERIC
# make cleandepend && make depend && make && make install
|
Powyższe polecenie stworzy kompletne, działające jądro. Pora teraz skonfigurować
bootloader. W następnym rozdziale zostaną omówione dwie metody: boot0
oraz grub.
Konfiguracja i instalacja bootloadera
Ważne:
boot0 jest bootloaderem pochodzącym z systemu FreeBSD. Wcześniej był
jedynym wspieranym bootloaderem, aż do momentu, w którym grub został
wprowadzony do systemu portów ze wsparciem dla partycji UFS. Aby zainstalować i
skonfigurować boot0 należy wykonać następujące czynności:
(Trzeba pamiętać o zastąpieniu adXsY prawidłowymi numerami partycji)
|
Listing 3.10: Instalacja i konfiguracja boot0 |
# emerge boot0
# exit
# fdisk -B -b /mnt/boot/boot0 /dev/adX
# chroot /mnt/ /bin/bash
# disklabel -B adXsY
|
Więcej informacji można znaleźć w dwunastym
rozdziale podręcznika FreeBSD. Nadszedł czas do podstawowej konfiguracji
systemu.
W następnej sekcji omówimy użycie alternatywnego bootloadera, jakim jest
grub.
Instalacja i konfiguracja bootloadera grub
Od wersji 0.97-r1 grub prawidłowo odczytuje partycje UFS. Pozwala nam to
na jego użycie, jako że jest on preferowanym bootloaderem w systemach Linux.
Zaczynamy od jego instalacji poprzez emerge, a następnie konfiguracji
etykiety. Należy pamiętać o zamianie adXsY na prawidłowe wartości i
numery partycji.
Listing 3.11: Instalacja GRUB-a |
# emerge grub
# disklabel -B adXsY
|
Następnie uruchamiamy polecenie grub żeby wyświetlić wiersz poleceń tego
programu:
Listing 3.12: Instalacja i konfiguracja bootloadera grub |
# sysctl kern.geom.debugflags=16
# grub
grub> root (hd0,0,d)
Filesystem type is ufs2, partition type 0xa5
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/ufs2_stage1_5" exists... yes
Running "embed /boot/grub/ufs2_stage1_5 (hd0)"... 14 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+14 p (hd0,0,d)/boot/grub/stage
2 /boot/grub/menu.lst"... succeeded
Done.
grub> quit
|
Linia vfs.root.mountfrom w pliku /boot/loader.conf pozwoli
programowi ładującemu na znalezienie jądra na odpowiedniej partycji.
Listing 3.13: Wpis pozwalający na odnalezienie jądra |
# echo 'vfs.root.mountfrom="ufs:ad0s1d"' >> /boot/loader.conf
|
Podczas pierwszego startu systemu może się nie pojawić menu grub. Jeśli tak się
stanie należy wykonać następujące polecenia:
Listing 3.14: Ładowanie jądra podczas braku menu |
grub> find /boot/grub/stage1
(hd0,0,d)
grub> kernel (hd0,0,d)/boot/loader
[FreeBSD-a.out, loadaddr=0x200000, text=0x1000, data=0x3a000, bss=0x0,
entry=0x200000]
grub> boot
|
Uwaga:
Aby uzyskać więcej informacji o tym jak konfigurować gruba, należy odwiedzić
Podręcznik
Gentoo
|
Ostrzeżenie:
GRUB nie obsługuje dowiązań na partycjach UFS, więc należy skasować dowiązania
/boot/grub/menu.lst i podczas konfiguracji korzystać z
menu.lst (grub.conf nie jest wykorzystywany).
|
Konfiguracja systemu
Przede wszystkim należy ustawić punkty montowań w /etc/fstab.
Listing 3.15: Edycja /etc/fstab |
# nano /etc/fstab
#Device Mountpoint Fstype Options Dump Pass
/dev/adXsYb none swap sw 0 0
/dev/adXsYa / ufs rw 1 1
/dev/adXsYe /usr/home ufs rw 2 2
/dev/adXsYd /tmp ufs rw 2 2
/dev/acdX /cdrom cd9660 ro,noauto 0 0
|
Teraz jest też właściwy czas by skonfigurować połączenia sieciowe przed
ostatecznym przeładowaniem systemu. Wszystkie niezbędne informacje o tym jak
skonfigurować sieć można znaleźć Podręczniku
Gentoo. Połączenie sieciowe może być automatycznie aktywowane w czasie
uruchamiania komputera. Wystarczy dodać odpowiedni skrypt do odpowiedniego
poziomu uruchomieniowego.
Listing 3.16: Dodawanie aktywacji sieci na domyślny poziom uruchomieniowy |
# rc-update add net.fxp0 default
|
Należy również dostosować wpis nazwy hosta w pliku
/etc/conf.d/hostname.
Listing 3.17: Zmiana nazwy komputera |
# nano /etc/conf.d/hostname
HOSTNAME="tux"
|
Powinniśmy skonfigurować również nazwę domenową, poprzez plik
/etc/conf.d/domainname:
Listing 3.18: Ustawianie nazwy domenowej |
# nano /etc/conf.d/domainname
dns_domain_lo="homenetwork"
|
Jeżeli posiadamy domenę NIS ustawimy ją za pomocą pliku
/etc/conf.d/domainname:
Listing 3.19: Ustawianie domeny NIS |
# nano /etc/conf.d/domainname
nis_domain_lo="moja-domena-nis
|
Uwaga:
Więcej informacji o nazwach domen i sieci można znaleźć w Podręczniku
Gentoo Linuks oraz w pliku /etc/conf.d/net.example.
|
W przypadku, gdy użytkownicy maszyny będą wykorzystywać układów
klawiatury innych niż standardowy, należy ustawić właściwą wartość w
/etc/conf.d/syscons. Następujący przykład pokazuje
konfigurację dla układu hiszpańskiego, należy więc go zmodyfikować w
celu dostosowania do konkretnej instalacji.
Listing 3.20: Zmiana układu klawiatury (opcjonalnie) |
# nano /etc/conf.d/syscons
KEYMAP="spanish.iso.acc"
|
Należy też zmienić hasło użytkownika root oraz dodać konto zwykłego
użytkownika przeznaczone do codziennej pracy.
Listing 3.21: Zmiana hasła użytkownika root oraz dodawanie nowego użytkownika |
# passwd
# adduser
Username: fred
Full Name: Fred Smith
Uid (Leave empty for default):
Login group [fred]:
Login group is fred. Invite fred into other groups? []: wheel portage
Login class [default]:
Shell (sh bash tcsh csh esh ksh zsh sash nologin) [sh] bash
User password-based authentication [yes]
Use an empty password (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password: tutaj należy podać hasło
Enter password again: a następnie je powtórzyć
Lock out the account after creation? [no]:
Username : fred
Password : *****
Full Name : Fred Smith
Uid : 1002
Class :
Groups : fred wheel portage
Home : /home/fred
Shell : /bin/bash
Locked : no
OK? (yes/no): yes
adduser: INFO: Sucessfully added (fred) to the user database
Add another user? (yes/no): no
Goodbye!
#
|
Gratulacje, instalacja Gentoo/FreeBSD jest już gotowa i można rozpocząć
odkrywanie jej możliwości zaraz po restarcie systemu. Powodzenia!
Listing 3.22: Restart systemu |
# exit
# reboot
|
4.
Rozwijanie Gentoo/FreeBSD
Jak pomóc
Pomoc jest potrzebna w wielu dziedzinach, zależnie od ilości dostępnego
czasu oraz poziomu umiejętności:
-
Praca nad aktualnymi ebuildami: oznacza to ścisłą współpracę z
osobami odpowiedzialnymi za ebuildy w celu przygotowania łatek oraz
modyfikacji ebuildów tak, aby zostały one zaakceptowane w głównym
drzewie.
-
Bezpieczeństwo: osoby zainteresowane zabezpieczeniami są bardzo
potrzebne! Wprawdzie doniesienia o zagrożeniach od projektu FreeBSD
są śledzone i uwzględniane, dodatkowa pomoc jest zawsze potrzebna.
-
Kontakty: potrzebni są nam ludzie dysponujący znajomościami wśród
deweloperów FreeBSD w celu utrzymywania kontaktu między nami a oryginalnym
projektem dla wymiany łatek oraz dyskusji rozmaitych problemów i ich
rozwiązań. Uwaga: taka działalność nigdy nie powinna mieć żadnej formy
spamowania na listach dyskusyjnych ani kanałach IRC.
-
Testowanie: im więcej ludzi wykorzystuje Gentoo/FreeBSD tym więcej błędów
będzie rozpoznawanych, co pomaga nam w poprawianiu jakości produktu. Osoby
potrafiące umiejętnie opisać błędy oraz problemy będą bardzo przydatne.
-
Inne dziedziny również wymagają wsparcia, w tym: ebuildy systemowe,
tworzenie płyt instalacyjnych, dokumentacja, modyfikacje jądra.
Znane problemy
Nadal występuje wiele już rozpoznanych problemów. Poniżej wymienione są
najważniejsze z nich:
-
Niektóre skrypty startowe wymagają usługi zegara której w tej chwili nie
wspieramy. Można zwyczajnie usunąć ją z zależności skryptu i napisać o tym
na Bugzilli. Prosimy pamiętać o
skorzystaniu z produktu "Gentoo/Alt" w trakcie zgłoszenia.
5.
Kontakt
Lista deweloperów Gentoo/FreeBSD jest dostępna na stronie projektu. Dalsze możliwości
kontaktu z jego członkami to kanał IRC #gentoo-bsd na Freenode oraz lista dyskusyjna gentoo-bsd.
Zawartość tego dokumentu jest rozpowszechniana na podstawie licencji Creative Commons -
Attribution / Share Alike.
|