Mijn FreeBSD-kernel

Vandaag zullen we leren hoe we de kern en de wereld kunnen samenstellen (basis uitvoerbare bestanden, bibliotheken, enz.) FreeBSD van vergelijkbare codes. Eerder in de post PostgreSQL: bouwen vanuit de broncode en instellen voor Linux, hebben we ontdekt waarom je iets vanuit de broncode moet kunnen bouwen. De belangrijkste scenario's zijn optimalisatie voor specifieke hardware en het rechtstreeks ophalen van de nieuwste dingen uit de masterbranch. Bovendien kunt u de kernel aanpassen aan uw specifieke behoeften: selecteer een planner, schakel IPv6 uit, verwijder de ondersteuning voor onnodige hardware, enz. Eindelijk, als je ooit van plan bent om committer te worden in FreeBSD-kernel, kennis over hoe deze kern wordt geassembleerd, zal niet overbodig zijn.

Vrijwaring: Veel van wat hieronder staat, is mogelijk niet langer relevant op het moment dat u dit leest. Voordat u de gegeven instructies opvolgt, is het verstandig eerst uw handboek te raadplegen. Noteer ook dat hieronder waar we het over hebben uitsluitend over het samenstellen van de kernel en de wereld van bron en de procedure binair systeemupdates worden beschreven in de notitie Memo voor het updaten van de kernel en de FreeBSD-wereld.

Het voorbereiden van de omgeving

Bij het schrijven van deze notitie heb ik de volgende installatieschijf gebruikt:

FreeBSD-10.2-RELEASE-amd64-disc1.iso

Ik had geen extra hardware bij de hand, dus alle experimenten werden uitgevoerd op VirtualBox. VirtualBox werd verkozen boven Vagrant omdat we toegang tot de systeemmonitor nodig hadden. In VirtualBox zijn twee adapters gemaakt in de netwerkinstellingen: één NAT en één Host Only. De eerste is nodig om het gastsysteem toegang te geven tot internet. Met de tweede kun je naar toe gaan gast systeem vanaf het hostsysteem via SSH.

Na het installeren van het systeem, installeert u de pakketten git-lite, vim-lite, tree, bash, sudo, bewerkt u /usr/local/etc/sudoers en wijzigt u vervolgens de gebruikersshell:

sudo chsh -s /usr/local/bin/bash eax

In ~/.gitconfig voegen we toe:


pager = minder -S

Persoonlijk vind ik het ook erg leuk om de gebruikelijke htop in het systeem te hebben:

cd/usr/posts
sudo portsnap haalt extract op
cd sysutils/htop
sudo make -DBATCH installeer schoon

Details over initiële installatie systemen en pakketbeheer in FreeBSD kunt u vinden in respectievelijk de opmerkingen FreeBSD gebruiken op het bureaublad, versie 2.0 en Pakketten beheren in FreeBSD met behulp van het hulpprogramma pkg.

Het samenstellen van de kernel

Hoe de FreeBSD-kernel wordt gebouwd, wordt bepaald door verschillende configuratiebestanden.

Sommige instellingen staan ​​in /etc/make.conf. Dit bestand heeft invloed op de build van ports, de wereld, de FreeBSD-kernel en in het algemeen alle programma's die in C zijn geschreven. Hier kunt u de CPU specificeren waarvoor de build is gemaakt, optimalisatievlaggen, enzovoort. Lijst van allemaal beschikbare opties je kunt kijken in /usr/share/examples/etc/make.conf en man make.conf . Voorbeeld /etc/make.conf:

# gebruik Clang 3.7 in plaats van de standaard 3.4
CC=/usr/local/bin/clang37
CXX=/usr/local/bin/clang++37
CPP=/usr/local/bin/clang-cpp37

# optimaliseer de code voor de CPU die op de machine wordt gebruikt
CPUTYPE?=natief

# vlaggen bij het compileren van code in C en C++
CFLAGS+=-O2 -leiding
CXXFLAGS+=-O2 -buis

Er is ook /etc/src.conf, dat iets andere instellingen heeft en alleen de kernel en de wereld beïnvloedt. Zie man src.conf voor details. Voorbeeld /etc/src.conf:

CPUTYPE?=natief
CFLAGS+=-O2 -leiding
COPTFLAGS+=-O2 -leiding

Tenslotte is er ook een configuratiebestand voor de kernel zelf. Het zal later worden besproken.

Als bij FreeBSD installeren Als u het selectievakje “Installeer alle bronnen” hebt aangevinkt, zullen de kernel- en wereldbronnen zich in de map /usr/src bevinden. Informatie over wat zich in welke submap bevindt, kunt u vinden in het Developer's Handbook en het README-bestand.

# geef in plaats van hoofd de branche of tag aan waarin u geïnteresseerd bent
cd / usr/ src && sudo svn co http:// svn.freebsd.org/base/ head/ ./

De instellingen waarmee de kernel is gebouwd staan ​​in het bestand:

/usr/src/sys/(architectuur)/conf/(config)

De naam van de architectuur is afhankelijk van uw CPU. In de regel is dit i386 of amd64. De standaard kernelconfiguratie in het systeem heet GENERIC. U kunt het kopiëren en een naam geven, bijvoorbeeld MYKERNEL.

cd sys/amd64/conf
sudo cp GENERIEKE MYKERNEL

De configuratie is goed gedocumenteerd. U kunt bijvoorbeeld de ondersteuning voor IPv6 en IPSec uitschakelen door twee regels van commentaar te voorzien:

#opties INET6
#optiesIPSEC

Belangrijk! CURRENT bevat standaard het getuigemechanisme, ontworpen om te zoeken naar impasses. Houd er rekening mee dat het enge stacktraces naar de console kan uitvoeren, waarvan sommige bugs zijn en gerapporteerd moeten worden aan de freebsd-current@ mailinglijst, en waarvan sommige vrij onschadelijk zijn. Er wordt ook gemeld dat dit mechanisme vrij traag is en dat u het daarom misschien wel wilt uitschakelen.

We bouwen de kernel met onze instellingen:

cd../../..
sudo make -j4 buildkernel KERNCONF =MYKERNEL

Maak voordat u de kernel installeert een reservekopie van de huidige kernel:

sudo cp -r /boot/kernel/ /boot/kernel.good

Bij het installeren van een nieuwe kernel back-up wordt automatisch gemaakt, maar deze kopie wordt overschreven wanneer volgende installatie. Na het maken van een handmatige back-up hebben we altijd een 100% werkende GENERIC bij de hand, van waaruit we kunnen opstarten als er zich problemen voordoen.

Een nieuwe kernel installeren:

sudo make installkernel KERNCONF =MYKERNEL

Na de installatie zal de kernel zich in de map /boot/kernel bevinden, en een reservekopie van de huidige kernel zal zich in /boot/kernel.old bevinden.

In plaats van een paar stappen buildkernel en installkernel, zou je ook de commando's kunnen gebruiken:

sudo make -j4 kernel KERNCONF =MYKERNEL INSTKERNNAME =kernel.test
sudo nextboot -k kernel.test

Dit zou ons vertellen dat we de kernel in /boot/kernel.test moeten plaatsen en deze de volgende keer dat hij opstart, één keer moeten gebruiken. Als alles goed gaat, kan /boot/kernel.test na een herstart hernoemd worden naar /boot/kernel. Deze optie kan handiger zijn als er geen fysieke toegang tot de machine is.

Opnieuw opstarten:

sudo opnieuw opstarten

Controleer na het laden van het systeem de kernelversie:

naam -a

Zou zoiets moeten zien

FreeBSD vbox 11.0-CURRENT FreeBSD 11.0-CURRENT #0 6a8922d(master): di
28 februari 13:40:05 MSK 2016 root@vbox:/usr/obj/usr/src/sys/MYKERNEL amd64

Als er iets misgaat, kun je bij het opstarten van het systeem opstarten vanaf kernel.old in het menu selecteren (door op het cijfer 5 te drukken). Je kunt ook “Escape to a loader prompt” selecteren (door op nummer 3 te drukken) en een willekeurige kernel selecteren, bijvoorbeeld:

boot kernel.goed

Op deze manier is er, zelfs als we plotseling de kern blokkeren, een reserveparachute.

De wereld samenbrengen

De wereld van FreeBSD 10 zal dat vrijwel zeker niet zijn op de best mogelijke manier werken met de FreeBSD 11-kernel Daarom is het zinvol om de wereld onmiddellijk bij te werken, samen met het opnieuw opbouwen van de systeemkernel.

Belangrijk! Het samenstellen van de wereld kan duren zoveel tijd, vooral als je in VirtualBox de virtuele machine slechts één kern hebt gegeven. Als u een echte machine gebruikt, heeft u fysieke toegang daartoe nodig. U zult ook veel configuraties handmatig moeten samenvoegen, het verwijderen van veel bestanden moeten bevestigen en vervolgens (!) Alles opnieuw moeten installeren geïnstalleerde pakketten en herstel alle geïnstalleerde poorten. Misschien zal het, in plaats van een nieuwe wereld samen te stellen, gemakkelijker voor je zijn om de machine tijdelijk buiten gebruik te stellen, aan te zetten nieuw systeem en configureer alles wat je nodig hebt bovenaan. Of gebruik het reeds genoemde mechanisme binair updates. Het lijkt mij dat het opnieuw opbouwen van de wereld meer een procedure is voor FreeBSD-ontwikkelaars dan voor gevechtsserverbeheerders.

Laten we dus naar de map met de bronnen gaan:

cd/usr/src

Schoonmaak tijdelijke bestanden, die zou kunnen blijven bestaan ​​uit de vorige build:

sudo rm -rf /usr/obj

De wereld samenbrengen:

sudo make -j4 buildworld

Om de risico's die gepaard gaan met het updaten van reeds actieve en actieve applicaties te minimaliseren, wordt aanbevolen om het besturingssysteem over te schakelen naar de modus voor één gebruiker:

# V VirtualBox-venster of naast de server staan
sudo wordt nu afgesloten

Nu mounten we het bestandssysteem (ik heb ZFS):

zfs set alleen-lezen =uit zroot
zfs mount -a

Als je UFS gebruikt, dan.

dMS UVPTLY SDTB OEPVIPDYNP OBMYUYE CHUEI YUIPDOSHI ZHBKMPCH FreeBSD.

chP-RETCHSCHI, DBCHBKFE UDEMBEN LTBFLYK PVЪPT LBFBMPZB, CH LPFPTPN VHDEF RTPYUIPDYFSH UVPTLB SDTB. CHUE LBFBMPZY, LPFPTSCHE VHDHF KHRPNYOBFSHUS, VHDHF PFOPUIFEMSHOSCHNY RP PFOPEYOIA L PUOPCHOPNH LBFBMPZH /usr/src/sys , LPFPTSCHK FBLCE DPUFHREO LBL LBFBMPZ /sys . lFPF LBFBMPZ UPDETSYF NOPTSEUFChP RPDLBFBMPZPCH, RTEDUFBCHMSAEYI UPVPK TBMYUOSCH YUBUFY SDTB, OP OBYVPMEE CHBTTSOSCHN DMS OBU VKhDEF LBFBMPZ boog/conf, CH LPFPTPN CHCH VHDEF TEDBLFYTPCHBFSH LPOZHYZHTBGYPOOSCHK ZHBKM SDTB Y CH LPFPTPN OBIPDIFUS LBFBMPZ compileren, ZDE VHDEF UPVYTBFSHUS CHBYE SDTP. boog NPTsEF VShchFSh i386, amd64, ia64, powerpc, sparc64 YMY pc98 (BMSHFETOBFYCHOBS CHEFCHSH BRRBTBFOPZP PVEUREYEOYS, RPRHMSTOBS CH sRPPOY). CHUE, YuFP OBIPDIFUS CHOKHFTY LBFBMPZB PRTEDEMOOOPK BTIYFELFKhTSCH, PFOPUYFUS FPMSHLP L LFK BTIYFELFKHTE; PUFBMSHOPK LPD SCHMSEFUS NBYOOOP OEBCHYUYNSCHN Y PWAYN DMS CHUEI RMBFZHTTN, OVER LPFPTSCH FreeBSD NPTsEF VSHFSH RPFEOGYBMSHOP RPTFYTPCHBOB. pVTBFYFE CHOYNBOYE OVER MZYUYUULHA UFTKHLFKHTH LBFBMPZPCH, CH LPFPTPK LBTSDPE RPDDETSYCHBENPE HUFTPKUFChP, LBCDBS JBKMPCHBS UYUFENB Y LBCDBS PRGYS TBNEEBEFUS CH UCH PEN UPWUFCHEOOPN LBFBMPZE.

h RTYNETBI LFK ZMBCHSH RPDTBHNECHBEFUS, YuFP CHSH YURPMSH'HEFE BTIIFFELFHTH i386. eUMY BTIYFELFKHTB CHBYEK UYUFENSCH PFMYUBEFUS PF YURPMSH'KHENPK CH RTYNETBI, FP CHBN OEPVIPDYNP VHDEF UPPFCHEFUFCHEOOP YYNEOIFSH YNEOB LBFBMPZHR.

RTYNEYUBOYE:

eUMY LBFBMPZ /usr/src/ PFUKHFUFCHHEF CH CHBYEK UYUFENE (YMY LFPF LBFBMPZ RKHUF), FP LFP OBYUYF, YUFP YUIPDOSCH FELUFSCH OE VSHMY KHUFBOPCHMEOSCH. overOBYVPMEE RTPUFPK URPUPV KHUFBOPCHYFSH YI - CHPURPMSHЪPCHBFSHUS , LBL PRYUBOP CH tBDEMљ21.5, > . dBMEE, UPJDBKFE UYNCHPMYUEULHA UUSCHMLH OVER /usr/src/sys/ :

# ln -s /usr/src/sys /sys

ъBFEN, RETEKDYFE CH LBFBMPZ boog/conf Y ULPRYTHKFE ZHBKM LPOZHYZHTBGYY GENERIEK CH ZHBKM U CHCHVTBOOSCHN CHBNY YNEOEN. OVER:

# cd /usr/src/sys/ ik386/conf # cp ALGEMEEN MIJNKERNEL

rP FTBDYGYY YNS UPUFPYF YJ VHLCH CHETIOEN TEZYUFTE, Y EUMY CHCH RPDDETSYCHBEFE OUEULPMSHLP LPNRSHAFETPCH FreeBSD OVER TBMYUOPN PVPTHDPCHBOYY, IPTPYBS YDES DPVBCHMSFSH LFP YNS L YNEOY IPUFB. NSH OBCHBMY SDTP MIJNKERNEL CH LFPN RTYNETE.

rPDULLBLB:

rPNEEEOOYE ZHBKMB LPOZHYZHTBGYY SDTB Ch /usr/src NPTsEF VShchFSH RMPIPK IDEEK. eUMY CHCH YURSHCHFSHCHBEFE RTPVMENSH, YI NPTsOP TEYYFSH KHDBMYCH /usr/src Y OBUCH CHUE U OYUBMB. rPUME LFPZP PVSHYUOP FTEVHEFUS OUEULPMSHLP UELKHOD, YuFPVShch RPOSFSH, YuFP CHSHCH KHDBMYMY UPVUFCHEOOSCHK ZHBKM OBUFTPKLY SDTB. OE TEDBLFYTHKFE OERPUTEDUFCHEOOP GENERIC, DOOR NPTSEF VSHFSH FBLCE RETEEBBRYUBO Y RTY UMEDHAEEN PVOPCHMEOYY DETECHB YUIPDOSHI FELUFPCH, Y YYNEOOEOYS SDTB VHDHF RPFETSOSHCH.

CHSC NPTSEFE UPITBOIFSH ZHBKM LPOZHYZHTBGYY SDTB CH DTHZPN NEUFE, B ЪBFEN UPЪDBFSH UINCHPMYUEULHA UUSCHMLKH OVER LFPF ZHBKM CH LBFBMPZE ik386 .

OVER:

# cd /usr/src/sys/ ik386/conf # mkdir /root/kernels # cp GENERIC /root/kernels/ MIJNKERNEL # ln -s /root/kernels/ MIJNKERNEL

FERETSH PFTEDBLFYTHKFE JBKM MIJNKERNEL CH UCHPEN MAVYNPN FELUFPCHPN TEDBLFPTE. еUMY CHSH FPMSHLP OBYOUBEFE, EDYOUFCHEOOSCHN DPUFHROSCHN TEDBLFPTPN ULPTEE CHUEZP VHDEF vi, LPFPTSCHK UMYYLPN UMPTsEO DMS FPZP, YUFPVSH PRYUBFSH EZP ЪDEUSH, OP CH VYVMYPZ TBZHIY RETEYUYUMEOP NOPTSEUFCHP LOYZ, CH LPFPTSCHI EZP YURPMSHЪPCHBOIE IPTPYP PUCHEEOP. pDOBLP FreeBSD RTEDPUFBCHMSEF VPMEE RTPUFPK TEDBLFPT ee, LPFPTSCHK, EUMY CHSH - OPCHYYUPL, RPPDKDF CHBN VPMSHYE CHUEZP. OE UFEUOSKFEUSH YJNEOSFSH UFTPLY LPNNEOFBTYECH CH OBYUBME ZHBKMB, U FEN, YUFPVSH PFPVTBIYFSH CHBYH LPOZHYZHTBGYA YMY YJNEOOYS, LPFPTCHCHCH UDEMBMY RP UTBCHOYA GENERIC .

eUMY ChBN RTYIPDYMPUSH UPVYTBFSH SDTP DMS SunOS TM YMY LBLPK-MYVP DTHZPK PRTBGYPOOPK UYUFENSH FYRB BSD, NOPZPE YJ FPZP, YuFP UPDETSYFUS Ch LFPN ZhBKME VHDEF PUEOSH LDL NBN. еUMY CE CHCH, OBRTPFYCH, YURPMSHЪPCHBMY DTHZHA PRETBGYPOOHA UYUFENKH, FBLHA LBL DOS, ZhBKM LPOZHYZHTBGYY GENERIEKE NPTsEF RPLBBFSHUS CHBN LTBKOE UMPTSOSHCHN, RPFPNH UM EDHKFE YOUFTHLGYSN CH TBDEME lPOZHYZHTBGYP OOSCHK JBKM NEDMEOOOP Y CHOINBFEMSHOP.

oChPE SDTP VHDEF ULPRYTPCHBOP CH LBFBMPZ /boot/kernel LBL /boot/kernel/kernel , B UFBTPE SDTP VHDEF RETENEEEOP CH /boot/kernel.old/kernel .

RTYNEYUBOYE:

FERTSH RETE'BZTHYFE UYUFENKH DMS FPZP, YUFPVSH YURPMSH'PCHBFSH OPCHPE SDTP. еUMY YUFP-FP RPKDЈF OE FBL, ChSH NPTSEFE PVTBFYFSHUS L TBDEMH TEYEOYE RTPVMEN CH LPOGE LFPK ZMBCHSHCH, LPFPTSCHK NPTsEF PLBBFSHUS RPMEЪEO. OE ЪБВХДШFE RTPYUYFBFSH TBDEM, LPFPTSCHK PVYASUOSEF LBL YURTBCHYFSH UYFKHBGYA, LPZDB SDTP OE ЪБЗТХЦБЭФУС.

Dit artikel beschrijft hoe u de FreeBSD-kernel compileert. Met de juiste configuratie kan de kernelgrootte aanzienlijk worden verkleind.
Om je kernel te kunnen compileren, moet je vanaf schijf installeren

src — Bron voor alles behalve encryptie

en kies dan

sys - /usr/src/sys (FreeBSD-kernel)

.
Je kunt het aanleveren via /stand/sysinstall.
We gaan ervan uit dat je de kernelbronnen hebt geïnstalleerd.
Onder gebruiker root ga naar de map /usr/src/sys/i386/conf.
Kopieer het GENERIC-bestand, bijvoorbeeld naar mykernel. We zullen het resulterende bestand bewerken.
Als je een Pentium4-machine hebt, raad ik je aan om de regels onmiddellijk te becommentariëren:

CPU I386_CPU
cpu I486_CPU
CPU I586_CPU

laat onze machine configureren voor een specifieke processor en niet overspoeld worden met allerlei onzin 😉
U kunt ongebruikte apparaten uitschakelen, waardoor de kernel kleiner wordt en daarmee de belasting van de processor. U kunt zien welke apparaten u heeft met behulp van de opdracht dmesg nadat u de computer hebt opgestart.
Je kunt ook apparaten toevoegen die niet standaard in de kernel worden ondersteund. De apparaten worden gedetailleerder beschreven in het LINT-bestand voor FreeBSD branch 4.x, en in het NOTES-bestand voor FreeBSD branch 5.x.

Nadat we ons bestand hebben bewerkt, kunnen we beginnen met het samenstellen ervan.
We zullen de volgende opdrachten moeten uitvoeren:

config mykernel - configureer de kernel
cd ../../compile/mykernel
afhankelijk maken
maken
make install - installeer de kernel

Als alles goed is gegaan, hoeven we alleen maar opnieuw op te starten.

P.S. Voordat ik ga experimenteren, raad ik je aan om een ​​normale kernel op te slaan, bijvoorbeeld onder de naam kernel.good, en als onze nieuwe kernel niet laadt, zullen we boot kernel.good specificeren in plaats van kernel.old. Ik stel voor om dit te doen, omdat wanneer we de kernel opnieuw compileren, onze kernel.old bijvoorbeeld overschreven zal worden met een niet-werkende kernel en we helemaal niet meer kunnen opstarten.

PPS Een goed werkende kernel behouden:
Voor FreeBSD 4.x - commando cp /kernel /kernel.good
Voor FreeBSD 5.x - opdracht cp -R /boot/kernel /boot/kernel.good

Tweede manier om de kernel bij te werken:
Ga naar de map /usr/src.
# cd /usr/src

Monteer de kern.
# make buildkernel KERNCONF=MYKERNEL

Installeer een nieuwe kernel.
# make installkernel KERNCONF=MYKERNEL

Opmerking: voor deze bouwmethode is de aanwezigheid van alle bronsysteembestanden vereist. Als je net hebt geïnstalleerd bronbestanden kernels, gebruik dan traditionele manier, zoals hierboven beschreven.

MIJNKERNEL - configuratiebestand uw kernel, die zich voor i386 bevindt in de map /usr/src/sys/i386/conf. Als u de KERNCONF-parameter niet specificeert, zal de GENERIC-kernel worden gebouwd.

De Fryukhi-verdeling wordt vaak de meest geschikte oplossing genoemd netwerk taken op het lokale netwerk. Vandaag zullen we een van de netwerkproblemen oplossen: een gateway opzetten op Freebsd 10 voor toegang tot internet vanuit een lokaal gebied. Dit is een eenvoudige, populaire en gewilde serverfunctionaliteit die kan worden uitgebreid met extra functies.

We zullen de volgende versie van het systeem gebruiken om onze taak van het opzetten van een gateway op te lossen:

# uname -v FreeBSD 10.2-RELEASE-p8 #0 r292756M: zaterdag 26 december 22:49:34 MSK 2015 root@freebsd:/usr/obj/usr/src/sys/GENERIC

Op de server zijn 2 netwerkkaarten geïnstalleerd:

  • h0voorkant, ontvangt internet van de provider, instellingen via dhcp
  • hn1lokaal netwerk, adres 10.20.30.1, handmatig ingesteld

Onze taak: het opzetten van de software freebsd-router omvat het instellen van routing op de server, het installeren en configureren van ipfw, het inschakelen van nat, het instellen lokale DHCP en DNS-servers.

De server voorbereiden om de gateway te configureren

Informatie over uitgegeven huurcontracten DHCP-server dnsmasq kan in het bestand worden bekeken /var/db/dnsmasq.leases.

Netwerkactiviteit in freebsd analyseren met iftop

Soms wil je zien wat er op de router gebeurt en wie internet gebruikt op dit moment. Standaard beschikt het systeem niet over een kant-en-klaar hulpmiddel om deze informatie te verkrijgen. Zal ons te hulp komen eenvoudig programma iftop, waarmee u de activiteit op de netwerkinterface in realtime kunt bekijken.

Installeren alstop naar de geconfigureerde Freebsd-gateway:

# pkg installeer iftop

We lanceren iftop die de interface aangeeft en de gebruikte poorten weergeeft:

# iftop -i hn1 -P

We zien een interessant beeld: wie klimt waar, door welke haven en met welke snelheid.

Ik heb bijvoorbeeld een internetverkeergenerator op een van de computers gestart. Het nam bijna het hele kanaal in beslag en dit werd duidelijk zichtbaar op de router met behulp van iftop. Natuurlijk deze eenvoudig hulpprogramma lost niet alle monitoringproblemen op netwerkactiviteit, maar het is prima om de huidige foto te presenteren als je niets meer nodig hebt.

Conclusie

Laten we samenvatten wat we hebben gedaan. In korte tijd hebben we een volwaardige gateway (in wezen een softwarerouter) opgezet op basis van Freebsd 10 om internettoegang te bieden aan clients achter de server. Tegelijkertijd hebben wij voorzien automatische ontvangst instellingen. Zelfs op bescheiden schaal virtuele server zo'n gateway kan behoorlijk veel verkeer verwerken.

De hele installatie duurt letterlijk 10-15 minuten. Het grootste deel van de tijd wordt besteed aan het assembleren van de kernel. Hoe hoger Freebsd-versie, hoe langer het duurt om te monteren, ondanks het feit dat de snelheid van ijzer aanzienlijk toeneemt.

Laten we de punten doornemen en uitzoeken wat we precies hebben gedaan:

  1. We hebben de server voorbereid op het configureren van de gateway.
  2. We hebben de kernel opnieuw opgebouwd met de nodige parameters.
  3. We hebben ipfw en nat geconfigureerd en routing ingeschakeld.
  4. DNSmasq geïnstalleerd en geconfigureerd voor distributie netwerkinstellingen via dhcp en dns-server.
  5. We hebben iftop geïnstalleerd voor een eenvoudige analyse van netwerkactiviteit op de externe interface.

Dit is genoeg voor volwaardig werk gateway op Freebsd 10. Als het nodig is om gebruikersverkeer te tellen of de toegang daartoe te beperken bepaalde middelen, je kunt naar hem toe gaan.

3 juni 2015 12:15 uur 2.161 keer bekeken | Geen opmerkingen

operatiekamer FreeBSD-systeem 10.1 gebruikt standaard de GENERIC-kernel. Deze standaardconfiguratie wordt gebruikt ter ondersteuning grote hoeveelheid hardware uit de doos. Het compileren van een aangepaste kernel verbetert op zijn beurt de beveiliging, functionaliteit en serverprestaties.

Om dit te doen gebruikt FreeBSD twee codevertakkingen: stable en current. Een stabiele branch is de nieuwste versie van code die klaar is voor productie. De huidige branch is de nieuwste codeversie van het ontwikkelteam, die geavanceerde functies biedt, maar ook kwetsbaarder is voor bugs en systeeminstabiliteiten. IN deze handleiding Er wordt gebruik gemaakt van de stabiele codetak.

Deze tutorial laat u zien hoe u de FreeBSD-kernel op maat kunt compileren.

Vereisten

1: De kernelbroncode downloaden

Eerst moet je downloaden broncode besturingssysteem.

FreeBSD biedt dit, net als veel andere UNIX-distributies, aan publieke toegang naar uw code om te downloaden en te wijzigen. Om de kernel opnieuw te compileren, moet u eerst de broncode downloaden van het FreeBSD versiebeheersysteem.

Het FreeBSD-team gebruikt de Subversion-repository om code op te slaan, dus eerst moet u de binaire Subversion-poort installeren.

sudo pkg installeer subversion

Standaard gebruikt het FreeBSD-systeem de tcsh-shell, die gebruik maakt van een interne commando-hashtabel in $PATH. Na het installeren van Subversion moet je de opdracht rehash uitvoeren, waardoor het systeem de configuratiebestanden opnieuw leest.

Zoek nu een kopie van de nieuwste stabiele branch in de map /usr/src.

sudo svn co https://svn0.us-east.FreeBSD.org/base/stable/10 /usr/src

Het systeem kan u vragen het servercertificaat te accepteren. Om het te accepteren, voert u p in en zorgt u ervoor dat dit het geval is controlesom bestand (of vingerafdruk) komt overeen met het bedrag dat onderaan deze pagina wordt aangegeven.

2: Aangepaste kernelaanpassing

Nu kunt u beginnen met het configureren van de systeemkernel.

Volgens de naamgevingsconventie voor kernelconfiguratiebestanden moet de kernelnaam worden geschreven hoofdletter. In deze handleiding wordt dit bestand EXAMPLE genoemd. Kernelinstellingen worden opgeslagen in de map /usr/src/sys/architecture/conf; Laten we zeggen dat de AMD64-architectuur wordt gebruikt.

Open de configuratiemap:

cd /usr/src/sys/amd64/conf

Maak een VOORBEELD-bestand en open het voor bewerking in een willekeurig bestand teksteditor(V in dit geval het wordt gebruikt):

De GENERIC-kernel ondersteunt een grote verscheidenheid aan verschillende hardware; VOORBEELD core ondersteunt alleen de hardware die nodig is om de server te laten draaien, allemaal standaard en onnodige apparaten verwijderd. VOORBEELD ondersteunt ook een firewall voor pakketfiltering (pf), verkeersvorming (altq), encryptie bestandssysteem(geom_eli) en IP-beveiliging (IPsec).

Opmerking Opmerking: U kunt meer over de opties lezen in de FreeBSD-documentatie. Probeer zelf de kernelcode te schrijven.

3: Het bouwen en installeren van de kernel

Nadat u aangepaste kernelconfiguraties hebt gemaakt, moet u deze bouwen en opnieuw compileren.

Keer terug naar de map /usr/src en voer make buildkernel uit met behulp van het nieuwe configuratiebestand:

cd /usr/src
sudo make buildkernel KERNCONF=VOORBEELD

Dit kan enige tijd duren, afhankelijk van de hoeveelheid serverbronnen (gemiddeld duurt het compileren van een server van 1 GB 90 minuten).

Zodra de hercompilatie is voltooid, installeert u de nieuwe kernel:

sudo make installkernel KERNCONF=VOORBEELD

Start vervolgens het systeem opnieuw op.

sudo shutdown -r nu

Hierna zal de server de huidige services uitschakelen, schijven synchroniseren en de kernel bijwerken.

Nadat de server opnieuw is opgestart, logt u in. Gebruik de volgende opdracht om te verifiëren dat het kernelconfiguratiebestand door het systeem wordt gebruikt.

sysctl kern.conftxt | grep ident

Het volgende resultaat zou op het scherm moeten verschijnen:

Installatie en hercompilatie van de kernel is met succes voltooid.

Tags: ,