Aktualizacja FreeBSD: Git, źródła i jądro

Wstęp

W tym artykule omówimy, jak korzystać z Git do pobierania źródeł FreeBSD oraz jak przebiega aktualizacja systemu ze źródeł. Omówimy także przyczyny, dla których warto korzystać ze źródeł oraz jak dostosować jądro GENERIC do własnych potrzeb.

Wcześniej do aktualizacji źródeł systemu FreeBSD używano SVN, ale od grudnia 2020 roku projekt przeszedł na Git, co oznacza nowy sposób pobierania i zarządzania źródłami.

Korzystanie ze źródeł systemu jest szczególnie przydatne, gdy:

  • potrzebujesz dostosować jądro systemowe do własnych potrzeb,
  • chcesz zainstalować najnowsze poprawki bezpieczeństwa,
  • planujesz eksperymentować z nowymi funkcjami systemu,
  • zamierzasz przyczynić się do rozwoju projektu FreeBSD.

Pobieranie źródeł FreeBSD za pomocą Git

Aby pobrać źródła FreeBSD, na początek zainstaluj narzędzie Git:

pkg install git

Następnie użyj polecenia git clone do pobrania źródeł. Przykładowo, aby pobrać źródła dla FreeBSD 13.1-RELEASE, wykonaj:

git clone --depth 1 -b releng/13.1 https://git.FreeBSD.org/src.git /usr/src

Oto wyjaśnienie używanych opcji:

  • --depth 1: ogranicza historię do jednego commitu, pozwalając na szybsze pobieranie i oszczędzenie miejsca na dysku,
  • -b releng/13.1: wybiera gałąź releng/13.1, która odpowiada źródłom dla FreeBSD 13.1-RELEASE.

Aktualizacja źródeł FreeBSD za pomocą Git

Jeśli chcesz zaktualizować istniejący katalog '/usr/src’ z plikami z podanego repozytorium Gita, możesz użyć następujących kroków:

  1. Przejdź do katalogu '/usr/src’:
    cd /usr/src
  2. Dodaj nowe zdalne repozytorium (jeśli nie zostało wcześniej dodane):
    git remote add freebsd-releng https://git.FreeBSD.org/src.git
    Jeśli zostało wcześniej dodane, upewnij się, że URL jest poprawne:
    git remote set-url freebsd-releng https://git.FreeBSD.org/src.git
  3. Pobierz informacje o gałęziach i tagach z nowego zdalnego repozytorium:
    git fetch freebsd-releng
  4. Przełącz się na gałąź 'releng/13.2′ (w przypadku zmiany wersji systemu):
    git checkout -B releng/13.2 freebsd-releng/releng/13.2
  5. W ten sposób zaktualizujesz pliki w katalogu '/usr/src’ z gałęzi 'releng/13.2′ z podanego repozytorium HTTPS. Jeśli chcesz zaktualizować repozytorium lokalne regularnie, wystarczy uruchomić polecenie git pull w katalogu '/usr/src’ po wykonaniu powyższych kroków:
    git pull

W przypadku gdy podczas przełączania gałęzi masz zmienione pliki w lokalnym repozytorium otrzymasz błąd typu:
error: Your local changes to the following files would be overwritten by checkout: sys/amd64/conf/GENERIC
Please commit your changes or stash them before you switch branches.
Aborting

W tym przypadku oznacza, że zmieniona została zawartość pliku sys/amd64/conf/GENERIC. Git informuje, że plik które nie zostały zatwierdzone (zacommitowane) ani ukryte (stashowane). Git nie pozwoli na przełączenie się na inną gałąź, dopóki nie rozwiążesz tego konfliktu. Można poradzić sobie z problemem na klika sposobów:

  1. Zatwierdzenie (commit) zmian: Jeśli chcesz zachować swoje zmiany, zatwierdź je:
    git add sys/amd64/conf/GENERIC
    git commit -m "Zachowaj zmiany w pliku GENERIC"
  2. Ukrycie (stash) zmian: Jeśli nie chcesz teraz zatwierdzać swoich zmian, ale chcesz je zachować, możesz je ukryć:
    git stash save "Zachowaj zmiany w pliku GENERIC"
  3. Odrzucenie zmian: Jeśli nie chcesz zachować swoich zmian, możesz je odrzucić:
    git checkout -- sys/amd64/conf/GENERIC

Konfiguracja jądra

Przed aktualizacją systemu ze źródeł warto dostosować jądro do własnych potrzeb. FreeBSD pozwala na dodawanie, usuwanie lub modyfikowanie opcji jądra w pliku konfiguracyjnym. Poniżej przedstawiamy, jak dodać wsparcie dla IPFIREWALL.

Otwórz plik konfiguracyjny jądra GENERIC:

vi /usr/src/sys/amd64/conf/GENERIC

Zamień vi na dowolny inny edytor tekstowy, jeśli wolisz.

Dodaj następujące opcje, aby włączyć IPFIREWALL, jego funkcje i wsparcie dla DUMMYNET:

options     IPFIREWALL
options     IPFIREWALL_VERBOSE
options     IPFIREWALL_DEFAULT_TO_ACCEPT
options     IPDIVERT
options     DUMMYNET

Zapisz i zamknij plik.

Oto wyjaśnienie przedstawionych opcji:

  • options IPFIREWALL: Włącza obsługę IPFIREWALL, czyli firewalla wbudowanego w FreeBSD,
  • options IPFIREWALL_VERBOSE: Włącza szczegółowe logowanie akcji IPFIREWALL, co jest przydatne do monitorowania i diagnozowania problemów związanych z zaporą,
  • options IPFIREWALL_DEFAULT_TO_ACCEPT: Ustawia domyślną politykę IPFIREWALL na akceptowanie pakietów, jeśli nie pasują do żadnej zdefiniowanej reguły. Alternatywnie, można użyć options IPFIREWALL_DEFAULT_TO_DENY, aby odrzucać pakiety, które nie pasują do żadnej zdefiniowanej reguły,
  • options IPDIVERT: Włącza wsparcie dla przekierowywania pakietów za pomocą reguł IPFIREWALL z użyciem mechanizmu divert,
  • options DUMMYNET: Włącza wsparcie dla DUMMYNET, narzędzia do modelowania i symulacji ruchu sieciowego, które może być używane w połączeniu z IPFIREWALL do kontroli przepustowości, opóźnień i strat pakietów.

Te opcje pozwalają na dostosowanie jądra do potrzeb związanych z zabezpieczeniem sieci, zarządzaniem przepływem danych i kontrolą dostępu. Po dokonaniu zmian w konfiguracji jądra, postępuj zgodnie poniższymi instrukcjami dotyczącymi kompilacji i instalacji jądra.

Warto pamiętać, że dostępne są także inne opcje konfiguracyjne jądra. Można je znaleźć w dokumentacji FreeBSD lub w komentarzach zawartych w plikach konfiguracyjnych jądra dostępnych w katalogu /usr/src/sys/conf. Konfigurując jądro, zawsze należy uwzględnić potrzeby swojego systemu i środowiska pracy, aby uzyskać najlepszą wydajność i bezpieczeństwo.

Aktualizacja systemu ze źródeł

Następnie przejdź do katalogu /usr/src:

cd /usr/src

Kompilacja świata (buildworld)

Teraz możemy rozpocząć kompilację świata (buildworld), która obejmuje wszystkie programy użytkowe i biblioteki systemowe. W powłoce sh wykonaj polecenie:

make -j`sysctl -n hw.ncpu` buildworld

Gdy używasz bash’a użyj polecenia:

make -j$(sysctl -n hw.ncpu) buildworld

Opcja -j$`sysctl -n hw.ncpu` pozwala na równoczesne przetwarzanie tylu zadań, ile wynosi liczba rdzeni procesora, co przyspiesza kompilację.

Kompilacja jądra

Przed kompilacją jądra GENERIC, warto je dostosować do własnych potrzeb. Można to zrobić, edytując plik /usr/src/sys/amd64/conf/GENERIC (dla architektury amd64) w dowolnym edytorze tekstu.

Następnie rozpocznij kompilację jądra (dla sh):

make -j`sysctl -n hw.ncpu` buildkernel

lub dla bash’a:

make -j$(sysctl -n hw.ncpu) buildkernel

Instalacja świata i jądra

Po pomyślnym zakończeniu kompilacji, przystąp do instalacji nowego świata i jądra:

make installworld
make installkernel

Aktualizacja konfiguracji systemowej

Należyprzejść przez proces aktualizacji konfiguracji systemowej, aby zapewnić, że wszystkie pliki konfiguracyjne są zaktualizowane do najnowszej wersji:

mergemaster -Ui

Opcja -Ui automatyzuje proces, zachowując jednocześnie istniejące konfiguracje.

Aktualizacja – ostatnie kroki

Po zaktualizowaniu plików konfiguracyjnych, przeprowadź aktualizację bazy danych dla programu freebsd-update:

freebsd-update IDS

Następnie zrestartuj system, aby uruchomić nowe jądro i zaktualizowane komponenty:

shutdown -r now

Podsumowanie

W tym artykule omówiliśmy, jak używać Git do pobierania źródeł FreeBSD i aktualizacji systemu ze źródeł. Przedstawiliśmy również sposób dostosowania jądra systemowego do własnych potrzeb poprzez dodanie wsparcia dla IPFIREWALL i innych opcji. Przestrzegając tych kroków, będziesz mógł utrzymać swój system FreeBSD na bieżąco i zoptymalizować go pod kątem wydajności oraz bezpieczeństwa.

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *


Scroll to Top