Modyfikowanie / przebudowanie pakietu: :: Budowanie modułów dla swojego jądra :: Budowanie (zmodyfikowanego) jądra :: Pliki z konfiguracją sieci

Poradnik linuxowy - porady konfiguracyjne Debiana

Modyfikowanie / przebudowanie pakietu:

Aby zbudować jakis pakiet ("pakiet_do_poprawki") należy pobrać jego wersję źródłową (apt-get source pam), nanieść poprawki (albo na kod źródłowy albo tylko na opcje budowania umieszczone w "rules") a następnie zbudować pakiet binarny (dpkg-buildpackage -rfakeroot) i zainstalować go lub wypakować z niego potrzebne pliki. W przypadku pakietów budowanych na nasze potrzeby pomocny może być też program "debchange", umożliwiający automatyzację zmian w changelog - np. debchange -v "1.0."`date +"%Y%m%dT%H%M%S"` "OPIS" && dpkg-buildpackage -rfakeroot

Budowanie modułów dla swojego jądra

Często nie ma paczek z zbudowanymi modułami dla używanej przez nas wersji jądra, niekiedy takich modułów nie ma w ogóle. Należy wtedy zainstalować pakiet XXXX-source (np. shfs-source, o którym poniżej), w katalogu /usr/src/ pojawi się plik z spakowanymi źródłami danego modułu. Należy po przejściu do wspomnianego katalogu rozpakować źródła (najczęściej: tar -xjf xxxx.tar.bz2 lub tar -xzf xxxx.tar.gz). Następnie przejść do katalogu z nagłówkami odpowiedniego jądra (musi być zainstalowany odpowiedni pakiet linux-headers-YYYYZZZZ, gdzie YYYY wersja jadra, a ZZZZ to określenie wersji pakietu jądra - np: -1-686-smp) - /usr/src/linux-headers-YYYYZZZZ. I tam wykonać: make-kpkg --rootcmd=fakeroot --append-to-version=ZZZZ modules-image. Po wykonaniu tego polecenia wracamy do /usr/src/ i tam czekają na nas gotowe do zainstalowania (np. przez dpkg -i) pakiety Debiana (*.deb).

Budowanie (zmodyfikowanego) jądra

Niekiedy zachodzi potrzeba zbudowania zmodyfikowanego (pod względem konfigu lub z nałożonymi łatami) jądra. Poniżej przedstawię drogę do zbudowania jądra 2.6.24.4 z nałożonymi łatami IMQ oraz wybranymi z łat patch-o-matic. Jądro będzie budowane metodą Debiana, a poniższy opis należy traktować jako przykład który należy dostosować do własnych potrzeb.

####################
###  POBIERANIE  ###
####################
export KERNEL_DIR="$PWD/2.6.24"
export IPTABLES_DIR="$PWD/iptables-1.4.0"

wget http://www.linuximq.net/patchs/iptables-1.4.0-imq.diff
mv iptables-1.4.0-imq.diff iptables-imq.diff
wget http://www.linuximq.net/patchs/linux-2.6.24-imq.diff
mv linux-2.6.24-imq.diff linux-imq.diff
wget http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20080405.tar.bz2
tar -xjf patch-o-matic-ng-20080405.tar.bz2
mv patch-o-matic-ng-20080405 patch-o-matic-ng

apt-get source iptables
wget ftp://ftp.icm.edu.pl/pub/Linux/kernel/v2.6/linux-2.6.24.4.tar.gz
tar -xzf linux-2.6.24.4.tar.gz
mv linux-2.6.24.4 2.6.24
cp /boot/config-2.6.24-1-686 $KERNEL_DIR/.config

#############
###  IMQ  ###
#############
patch -p0 < linux-imq.diff
patch -p0 < iptables-imq.diff

#######################
###  patch-o-matic  ###
#######################
pushd patch-o-matic-ng;
./runme pending

## base ##
# dopasowywanie u32; od 2.6.23 w jajku
#./runme u32
# grupy adresów obsługiwane programem ipset
./runme set

## extra ##
# ustawianie trasy routibgu z poziomu iptables
./runme ROUTE

## external ##
./runme --download
# masowe markowanie
./runme IPMARK
# reguły filtrowania true/false sterowanego przec /proc
./runme condition
# limity połączeń; od 2.6.23 w jajku
#./runme connlimit
# filtrowanie po czasie
./runme time
popd

############################
###  budowanie iptables  ###
############################
pushd $IPTABLES_DIR
chmod +x $IPTABLES_DIR/extensions/.IMQ-test*
debchange -l "imq" "IMQ"
dpkg-buildpackage -rfakeroot
popd

#########################
###  budowanie jądra  ###
#########################
pushd $KERNEL_DIR
make oldconfig;
vi .config
make-kpkg oldconfig
make-kpkg clean
fakeroot make-kpkg --revision imq1 --initrd kernel_image

Altenatyną drogą (bardziej szczegułowo opisywaną na debianowym wiki) byłoby:

apt-get source linux-2.6_3.2.6-1
dpkg-source -x linux-2.6_3.2.6-1.dsc
cd linux-2.6-3.2.6
fakeroot make -f debian/rules.gen setup_amd64_none
# pachte zmiany konfigu (w debian/build/...)
# ewntualne zmiany w makefile (cel binary-arch_amd64_none) aby budować tylko tą paczkę co potrzebujemy
fakeroot make -f debian/rules.gen binary-arch_amd64_none
# jeżeli chemy tylko debugować jakiś moduł to możemy komędę tę przerwać w okolicy:
#  env -u ABINAME -u ABINAME_PART -u ARCH -u FEATURESET -u FLAVOUR -u VERSION -u LOCALVERSION DISTRIBUTION_OFFICIAL_BUILD=1 DISTRIBUTION_UPLOADER=ben@decadent.org.uk DISTRIBUTION_VERSION="3.2.6-1" make -C 'debian/build/build_amd64_none_amd64
# wykonać ta komendę manualnie i budować moduły z użyciem normalnego make /katalog/modul.ko

Pliki z konfiguracją sieci

Za konfigurację sieci odpowiada plik /etc/network/interfaces, po dokonaniu w nim zmian należy przeładować je poleceniem /etc/init.d/networking restart i można sprawdzić przez ifconfig :). Wyjątkiem jest konfiguracja DNS (ta używana "normalnie"), która znajduje się w pliku /etc/resolv.conf (jeżeli z jakiś powodów serwery DNS naszego ISP nam nie odpowiadają możemy użyć ogólnodostępnych serwerów OpenDNS).

Plik /etc/network/interfaces (przykład) zawiera konfigurację dla poszczególnych urządzeń sieciowych, sekcja dla danego urządzenia zaczyna się od iface, po czym następuje nazwa urządzenia (np. eth0), typ adresu (np. inet lub inet6 lub ...) i rodzaju (np. static, dhcp); jeżeli po nazwie jest dwukropek i liczba (np. eth0:0) oznacza to że jest to alias konfiguracji dla danego urządzenia (odpowiada to ifconfig eth0:0 ...). Wpis ten może być poprzedzony linią auto nazw_interfejsu powodującą automatyczne konfigurowanie interfejsu przy starcie systemu (wywołanie /etc/init.d/networking start), przy braku tego wpisu interfejs należy uruchamiać ręcznie przy pomocy ifconfig nazw_interfejsu up.

Po linii określającej konfigurowane urządzenie występują linie określające jego konfigurację. Dla inet czyli IPv4:

Możemy także korzystać z post-up pre-down itp. w celu wykonania jakiś poleceń po uruchomieniu interfejsu czy przed jego zakończeniem. W ten sposób możemy konfigurować w tym pliku rzeczy normalnie w nim nie ustawiane:

Dla inet6 określa się address (w notacji dwukropkowej), netmask (w postaci ilości bitów o wartości 1 w masce) oraz (opcjonalny) gateway. Przydatne może być też hwaddress określające MAC karty sieciowej (zwłaszcza przy niektórych konfiguracjach dhcp).

Z pośród innych ustawień związanych z siecią istotną rolę odgrywa także nazwa hosta lokalnego - ustawiana jest ona w /etc/hostname (może być podana w formie "host.domena", a doraźnie może być zmieniana komendą hostname oraz nazwa systemu pocztowego ustawiana w /etc/mailname. Niektóre z programów wymagają aby nazwa ta wraz z odpowiednim przyporządkowaniem ip znalazła się także w DNSie lub pliku lokalnego rozwijania nazw - /etc/hosts (tu też możemy podawać przypisania nazw innych hostów do ich adresów, gdy z jakiś powodów nie chcemy korzystać do tego celu z DNS).

Zobacz też: konfiguracja sieci bezprzewodowej, man interfaces, man resolv.conf, man ip.



Copyright (c) 1999-2019, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/usage_and_config/operating_systems_config/linux/debian) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2015-10-02 20:06:16 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).