300 likes | 493 Views
FreeBSD 7. Historia. 1991 – pierwsze wydanie BSD (386BSD) na procesory x86 21 marca 1993 – początek prac nad NetBSD 19 czerwca 1993 – rozpoczęcie prac nad projektem FreeBSD 1995 – rozłam w zespole NetBSD – powstanie OpenBSD 2004 – wydzielenie z projektu FreeBSD wersji PC-BSD
E N D
Historia • 1991 – pierwsze wydanie BSD (386BSD) na procesory x86 • 21 marca 1993 – początek prac nad NetBSD • 19 czerwca 1993 – rozpoczęcie prac nad projektem FreeBSD • 1995 – rozłam w zespole NetBSD – powstanie OpenBSD • 2004 – wydzielenie z projektu FreeBSD wersji PC-BSD • listopad 2009 roku – wydanie FreeBSD 8.0
Filozofia projektu • Kompletny system operacyjny, zawierający wbudowany zestaw podstawowych narzędzi • Tworzony przez zamkniętą grupę, tzw. Core Team (9 osób), nadzorującą pracę oficjalnych deweloperów (committers, ok. 400 osób) pracujących nad jądrem i base systemu oraz opiekunów portów • System oparty na bardzo liberalnej licencji BSD • Wydawany jednocześnie w dwóch wersjach: STABLE i CURRENT
Core Team • Core Team zapowiada wybory 6 tygodni przed ich datą i wybiera sekretarza wyborczego, który przeprowadzi wybory, • w ciągu tygodnia od ogłoszenia wyborczego chętni spośród aktywnych programistów mogą zgłaszać swoje kandydatury i publikować oświadczenia wyborcze, • głosowanie trwa 4 tygodnie (długi czas uwzględnia ochotniczy charakter prac oraz rozproszenie geograficzne uczestników), • każdy z aktywnych programistów może oddać swój głos na maksymalnie 9 spośród zgłoszonych kandydatur, • w przeciągu tygodnia następuje przeliczenie oddanych głosów i ogłoszenie wyników, • nowo wybrany zespół przejmuje obowiązki w ciągu następnego tygodnia od momentu ogłoszenia wyników. • ordynacja wyborcza może zostać zmieniona większością 2/3 głosów, o ile w głosowaniu weźmie udział przynajmniej 50 proc. aktywnych programistów. • członkowie Core Team — podobnie jak pozostali committers — są usuwalni większością 2/3 głosów pozostałych członków Core Team.
Podstawowe cechy systemu • FreeBSD wspiera następujące architektury: x86, x86_64, UltraSparc, IA-64 Itanium, ARM i PowerPC , Alpha (wsparcie zaprzestane) oraz MIPS (w przygotowaniu) • Jądro monolityczne, z możliwością dynamicznego ładowania modułów • Natywny system plików UFS2 z SoftUpdates
Domyślnie wbudowane elementy • Base systemu – podstawowe narzędzia wiersza poleceń, usługi typu NFS, SSH itp. • Kompilator z zestawem bibliotek niezbędnych do skompilowania jądra i base • Kolekcja portów (/usr/ports) • Kompletne źródła jądra i całego base (/usr/src) • Komplet dokumentacji: manuale, handbook, FAQ, dokumentacja poszczególnych usług itp. (/usr/share/doc)
Nazewnictwo urządzeń • W systemach BSD większość urządzeń nazywa się inaczej niż w Linuxie • adNsMK – dysk twardy ATA, gdzie N to numer urządzenia, M – numer partycji, K-litera okreslająca dysk logiczny, np. ad0s1a • daNsMK - j.w., ale SCSI lub SATA, np. da0s1a • acdN – cdrom, N – numer urządzenia, np. acd0 • rlN, bceN itp. – karty sieciowe (nazwy są luźno powiązane z producentem karty), N - numer interfejsu, np. rl0, bce0
Instalacja • Intuicyjny instalator tekstowy, będący również nakładką na menedżera pakietów i użytkowników, konfiguratorem usług, środowiska użytkownika, sieci itp. • System można zainstalować niemal ze wszystkich mediów (sieci, nośników lokalnych, zdalnych systemów plików itp.) • Do instalacji wystarczy jedna partycja na dysku
Przebieg uruchamiania systemu • Uruchamianie systemu przebiega inaczej niż w przypadku systemu Linux. • Etap 1: Uruchomienie kodu znajdującego się w MBR (pozwala on wybrać uruchamiany system). • Etap 2: Uruchomienie programu znajdującego się w sektorze rozruchowym partycji FreeBSD, którego zadaniem jest załadowanie loadera.
Przebieg uruchamiania systemu • Etap 3: Uruchamianie loadera znajdującego się w katalogu /boot. Zadaniem tego programu jest umożliwienie użytkownikowi wybranie trybu uruchamamiania (normalny, single user itp.) lub uruchomienie trybu naprawy systemu w przypadku np. zainstalowania wadliwego jądra. • Etap 4: Loader ładuje właściwe jądro i niezbędne moduły, leżące w katalogu /boot/kernel. • Żeby załadować FreeBSD przez gruba należy wykorzystać chainloading lub załadować zamiast jądra plik /boot/loader (wymagana obsługa UFS2 przez gruba).
Przebieg uruchamiania systemu Jądro uruchamia skrypt init, który • Wykonuje sprawdzanie spójności systemów plików wymienionych w /etc/fstab • Podmontowuje systemy plików (jeśli w którymś z tych etapów napotka błąd niemożliwy do automatycznego naprawienia, to przechodzi w tryb single user) • Uruchamia usługi systemowe
Różnice w stosunku do Linuxa • FreeBSD nie obsługuje poziomów uruchamiania • Głównym plikiem, odpowiedzialnym za niemal cała konfigurację systemu jest /etc/defaults/rc.conf (tylko do odczytu) oraz /etc/rc.conf (modyfikowany przez użytkownika) • Większość ustawień konsol jest zdefiniowanych w pliku /etc/ttys
Dyski, partycje, systemy plików • FreeBSD wspiera większość systemów plików (ext2/3, fat16/32, ntfs, xfs, zfs itd.) • Domyślnie FreeBSD instaluje się na jednej partycji fizycznej, która zostaje podzielona na dyski logiczne zwane slices. • Natywnym systemem plików jest UFS2 ze wsparciem dla SoftUpdates (odpowiednik journalingu w innych systemach). • System UFS2 dzięki SoftUpdates jest całkiem wydajny i odporny na uszkodzenia. SoftUpdates jest oparty na asynchronicznych, wstępnie przetwarzanych zapisach. • Do naprawy systemu plików wykorzystuje się narzędzie fsck. • Dla uniknięcakontroli integralności systemu plików i wyszukiwania potencjalnych problemów wykorzystuje się demona diskcheckd. • Podstawowymi narzędziami dyskowymi są fdisk (podział dysku na partycje) i disklabel (podział partycji BSD na dyski logiczne).
Zgodność binarna z innymi systemami • FreeBSD posiada wbudowane w jądro moduły kompatybilność binarnej (translatory API jądra) z najpopularniejszymi systemami unixowymi na danej platformie, np. na x86 może obsługiwać binaria Linuxa, SCO, Solarisa, SVR4, a na sparc Linuxa, Solarisa, SunOSa, SVR4. • Obsługiwane są również binaria OpenBSD, NetBSD i binaria starszych wersji FreeBSD (od wersji 5 włącznie). • Emulacja ogranicza się do włączenia modułów jądra i nie wymaga dalszego wkładu ze strony użytkownika • Moduły zgodności są aktualizowane po wyjściu nowej wersji jądra systemu, do którego emulacji służą. • Emulacja nie powoduje spadku wydajności.
Konfiguracja systemu • Niemal wszystkie ustawienia systemu są zawarte w pliku /etc/defaults/rc.conf i /etc/rc.conf • System najpierw parsuje plik /etc/defaults/rc.conf, a następnie przeciąża ustawienia tymi z /etc/rc.conf • W pliku rc.conf można: sterować usługami, konfigurować parametry sieci, konsole itp.
Przykłady wpisów w rc.conf • Konfiguracja sieci ifconfig_ETH="inet IP_ADDRESS netmask MASK"ifconfig_ETH_aliasN="inet IP_ADDRESS netmask MASK"defaultrouter="IP_ADDRESS" hostname="HOSTNAME.DOMAINNAME"gdzie ETH to nazwa interfejsu, N-kolejny numer • Uruchamianie demona NAZWA_enable="YES"NAZWA_flags="PARAMETRY"gdzie NAZWA jest nazwą skryptu w /etc/rc.d
Optymalizacja wydajności • Rekompilacja jądra, z wyłączonymi zbędnymi modułami i trybem debugowania • Włączenie SoftUpdates • Ustawienie optymalnych wartości zmiennych jądra w zależności od posiadanego sprzętu i połączenia sieciowego (komenda sysctl lub wpisy w pliku /boot/loader.conf (lub /boot/defaults/loader.conf – niezalecane))
Bezpieczeństwo • FreeBSD nie posiada odpowiednika mechanizmu SELinux • Wspiera klasyczne uprawnienia unixowe oraz listy ACL • Posiada wbudowane firewalle ipfilter oraz pf • Domyślna blokada zdalnego logowania roota • Lokalnie na konto roota mogą zalogować się jedynie członkowie grupy wheel. • Inne zabezpieczenia: żądanie hasła roota w trybie single user, wyłączenie obsługi skrótu CTRL+ALT+DEL
Użytkownicy • Domyślne wsparcie dla klas użytkowników – pozwala na indywidualne przydzielenie użytkownika do jednej z klas zdefiniowanych w pliku /etc/login.conf, niezależnie od grupy do której należy. W pliku login.confmożna zdefiniować takie parametry jak ustawienia środowiska, limity pamięci, liczby procesów, ilości pamięci, czasu procesora, parametry haseł itp. Po każdej modyfikacji tego pliku należy przebudować bazę danych poleceniem cap_mkdb /etc/login.conf • Aby przypisać użytkownika do odpowiedniej klasy można użyć narzędzia chfn • W przypadku niepodania klasy uzytkownik jest automatycznie przypisywany do klasy default
Użytkownicy • Użytkownicy przechowywani są w lokalnej bazie danych, generowanej na podstawie pliku /etc/master.passwd • Do edycji tego pliku służy komenda vipw • W przypadku edycji w innym edytorze należy ręcznie przebudować bazę danych komendą pwd_mkdb /etc/master.passwd • Jedną z najważniejszych komend do ręcznego zarządzania użytkownikami jest pw
Użytkownicy • Użytkownicy mogą mieć przydzielony jedynie powłoki, które są zawarte w /etc/shells
System pakietów • FreeBSD udostępnia kilka metod instalacji oprogramowania. Najważniejsze to pkg oraz kolekcja portów • pkg to klasyczny menedżer pakietów, znany z niektórych dystrybucji Linuxa • System portów to katalog zawierający zestaw informacji o tym skąd należy wziąć zródłapakietów, jakie zastosować patche, w jaki sposób je skompilować itp.
Kolekcja portów • Znajduje się w katalogu /usr/ports • Umożliwia kompilacje ze źródeł pojedynczych pakietów lub całych drzew, np. • Wykonanie make w /usr/ports/editors spowoduje skompilowanie wszystkich edytorów • Wykonanie make w /usr/ports/editors/vim spowoduje skompilowanie tylko edytora vi
Kolekcja portów • Kompilacja portów ogranicza się do wykonanie komend make oraz make install, a potem make clean • System automatycznie pobierze niezbędne źródła, skonfiguruje je, zaaplikuje patche, skompiluje, zainstaluje, stworzy pakiety .tbz oraz zarejestruje w bazie zainstalowanych pakietów. Podobnie postąpi w przypadku stwierdzenia istnienia zależności, których nie ma zainstalowanych w systemie.
Kolekcja portów • Usunięcie tak zainstalowanego pakietu będzie możliwe przez wykonanie make deinstall lub pkg_delete.
Aktualizacja systemu • Aktualizacja może obejmować jądro, base system lub kolekcje portów • Główną metodą aktualizacji jest kompilacja systemu ze źródeł, stanowiącej jego integralną część. • Do aktualizacji wszelkich źródeł służy narzędzie cvsup. Służy ono do synchronizacji źródeł z repozytoriami CVS FreeBSD. • Do aktualizacji pakietów w oparciu o kolekcję portów służy polecenie portmanager -u
CVSup • Może pracować w trybie uruchamianym z wiersza poleceń, graficznym albo jako demon. • Ma jeden plik konfiguracyjny, który podaje się jako parametr. W pliku tym podaje się skąd mają być pobrane źródła, z jakiej gałęzi, oraz jakich części systemu ma dotyczyć aktualizacja • Przykładowe pliki konfiguracyjne można znaleźć w katalogu /usr/share/examples/cvsup
Klasyczna metoda aktualizacji • Do aktualizacji z użyciem pakietów binarnych wykorzystuje się narzędzie freebsd-update • Posiada ona następujące opcje • fetch – pobiera najnowsze wersje uaktualnień • upgrade - pobiera wersje pakietów z określonej gałęzi • install – instaluje pobrane uaktualnienia • rollback – odinstalowuje ostatnio zainstalowane aktualizacje • IDS – porównuje wersje plików z najnowszymi
Klasyczna metoda aktualizacji • Po zainstalowaniu aktualizacji system otwiera wszystkie pliki konfiguracyjne, których modyfikacji nie był pewien, w domyślnym edytorze i pyta użytkownika czy zgadza się z proponowanymi zmianami.
Kompilacja jądra ze źródeł • Źródła jądra znajdują się w katalogu /usr/src/sys • Przed kompilacja należy stworzyć kopie plik /usr/src/sys/ARCH/conf/GENERIC (ARCH oznacza architekturę platformy), np. MY_KERNEL i w zweryfikować, czy nasze nowe jądro będzie posiadało wbudowany zestaw funkcji. • Następnie w katalogu /usr/src wykonujemy następujące dwie komendy:make buildkernel KERNCONF=MY_KERNELmake installkernel KERNCONF=MY_KERNEL • W analogicznu sposób można zbudować i zainstalować base systemu (make buildworld i make installworld)