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 7.1. Gentoo/FreeBSD bazuje na wersji 6.2. Poprzednie wersje FreeBSD nie są przez nas wspierane.
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.
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:
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:
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. |
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:
Uwaga: Przed wykonaniem poniższego polecenia należy się upewnić, że napęd ad0s1 jest odmontowany. Inaczej polecenie nie zadziała. |
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.
Po pierwsze należy pobrać stage3, a następnie rozpakować do chroot. Archiwa dostępne są pod adresem http://distfiles.gentoo.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/ (Każdy inny mirror zawierający katalog experimental również będzie dobry.) # wget http://distfiles.gentoo.org/experimental/x86/freebsd/stages/stage3-x86-freebsd-6.2-r1.tar.bz2 # tar -jxvpf stage3-x86-freebsd-6.2-r1.tar.bz2 (Po rozpakowaniu można spokojnie usunąć archiwum.) # rm stage3-x86-freebsd-6.2-r1.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 (Możliwe jest również zdobycie drzewa w inny sposób:) # cd / # wget http://distfiles.gentoo.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 (Należy upewnić się, że dodano co najmniej następujące wpisy) 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
Najpierw ustawiamy, że data jest poprawnie ustawiana za pomocą polecenia date yyyymmddHHMM. Należy użyć czasu UTC.
Listing 3.1: Ustawianie godziny |
(Sprawdzamy zegar) # date Mon Mar 6 00:14:13 UTC 2006 (Ustawiamy datę i godzinę) # date 200603060016 (Format to yyyymmddHHMM) 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 (Przykład dla Warszawy) # 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"
|
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 (Opuszczamy środowisko chroot) # exit (Wykonane poza środowiskiem chroot) # 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 |
(Poniższe polecenie należy wykonać, aby zapobiec przed błędem dysku 29) # sysctl kern.geom.debugflags=16 # grub (Przykładowe użycie ad0s1d) 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 (Wyjściem tego polecenia jest to, co zostanie wyświetlone po użyciu następnej komendy) (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). |
Przede wszystkim należy ustawić punkty montowań w /etc/fstab.
Listing 3.15: Edycja /etc/fstab |
# nano /etc/fstab (To jest tylko przykład - X oraz Y należy zastąpić liczbami właściwymi dla danej konfiguracji.) #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 (Nazwę komputera podstawiamy do zmiennej 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 (Zmienną dns_domain należy ustawić jako nazwę domeny oraz zmienną lo na lokalny interfejs sieciowy) 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 (Zmienną nis_domain należy ustawić na nazwę domeny NIS oraz lo na lokalny interfejs sieciowy) 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" (Dostępne układy można znaleźć w katalogu /usr/share/syscons/keymaps) |
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 (Aby zaakceptować domyślne ustawienia wystarczy nacisnąć enter.) Uid (Leave empty for default): (Aby zaakceptować domyślne ustawienia, tutaj również naciskamy enter.) Login group [fred]: (Tu należy podać grupy, do których zostanie dodany użytkownik, oddzielone od siebie znakiem spacji. Grupy muszą istnieć.) Login group is fred. Invite fred into other groups? []: wheel portage (Aby zaakceptować domyślne ustawienia, naciskamy enter Login class [default]: (Ustawienia personalne. Należy mieć pewność, że powłoka jest wymieniona w /etc/shells) Shell (sh bash tcsh csh esh ksh zsh sash nologin) [sh] bash (Tutaj można zaakceptować domyślne ustawienia naciskając enter.) 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ć (Naciśnij enter, aby zaakceptować ustawienia domyślne) Lock out the account after creation? [no]: Username : fred Password : ***** Full Name : Fred Smith (To będzie inne) Uid : 1002 Class : Groups : fred wheel portage Home : /home/fred Shell : /bin/bash Locked : no (Należy potwierdzić poprawność informacji) 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 |
Pomoc jest potrzebna w wielu dziedzinach, zależnie od ilości dostępnego czasu oraz poziomu umiejętności:
Nadal występuje wiele już rozpoznanych problemów. Poniżej wymienione są najważniejsze z nich:
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.
Materiał udostępniany na podstawie licencji Creative Commons - Attribution / Share Alike.