freebsd 커널 파일이 저장된 위치 11. iftop을 사용하여 freebsd에서 네트워크 활동을 분석합니다. 추가 Freebsd 리소스

후류히 분포는 종종 근거리 통신망에서 응용 네트워크 문제를 해결하는 데 가장 적합하다고 합니다. 오늘은 LAN에서 인터넷에 액세스하기 위해 Freebsd 10에 게이트웨이를 설정하는 네트워크 작업 중 하나를 다룰 것입니다. 이것은 추가 기능으로 확장할 수 있는 간단하고 인기 있는 주문형 서버 기능입니다.

우리는 사용할 것입니다 다음 버전게이트웨이 설정 작업을 해결하기 위한 시스템:

# uname -v FreeBSD 10.2-RELEASE-p8 #0 r292756M: 12월 26일 토요일 22:49:34 MSK 2015 [이메일 보호됨]:/usr/obj/usr/src/sys/일반

서버에는 2개의 네트워크 카드가 설치되어 있습니다.

  • hn0- 외부 인터페이스, 공급자로부터 인터넷 수신, dhcp 설정
  • hn1로컬 네트워크, 주소 10.20.30.1, 수동으로 설정

소프트웨어 freebsd 라우터를 설정하는 작업에는 서버에서 라우팅 설정, ipfw 설치 및 구성, nat 활성화, 로컬 dhcp 및 dns 서버 설정이 포함됩니다.

게이트웨이 구성을 위한 서버 준비

dnsmasq 서버의 발급된 dhcp 임대에 대한 정보는 파일에서 찾을 수 있습니다. /var/db/dnsmasq.leases.

iftop을 사용하여 freebsd에서 네트워크 활동 분석

때때로 라우터에서 무슨 일이 일어나고 있고 누가 인터넷을 사용하고 있는지 알고 싶을 때가 있습니다. 이 순간. 기본적으로 시스템에는 이 정보를 얻기 위한 기성 도구가 없습니다. 우리를 도우러 올 것이다 간단한 프로그램 iftop을 사용하면 네트워크 인터페이스의 활동을 실시간으로 볼 수 있습니다.

설치 탑이라면구성된 Freebsd 게이트웨이에:

# 패키지 설치 iftop

인터페이스가 지정되고 사용된 포트가 표시된 상태에서 iftop을 시작합니다.

# iftop -i hn1 -P

우리는 흥미로운 그림을 봅니다. 누가, 어디서, 어떤 항구에서, 어떤 속도로 올라가는지.

예를 들어 컴퓨터 중 하나에서 인터넷 트래픽 생성기를 시작했습니다. 거의 전체 채널을 차지했으며 라우터에서 완벽하게 볼 수 있게 되었습니다. 이프탑. 물론 이 간단한 유틸리티가 모든 네트워크 활동 모니터링 문제를 해결하는 것은 아니지만 더 필요하지 않은 경우 현재 그림을 표시하는 데 적합합니다.

결론

우리가 한 일을 요약해 봅시다. 짧은 시간에 우리는 Freebsd 10을 기반으로 하는 본격적인 게이트웨이(기본적으로 소프트웨어 라우터)를 설정하여 서버 뒤의 클라이언트에 인터넷 액세스를 제공했습니다. 동시에 설정이 자동으로 수신되었습니다. 소박함에도 가상 서버그러한 게이트웨이는 상당한 양의 트래픽을 소화할 수 있습니다.

전체 설정은 말 그대로 10-15분이 걸립니다. 대부분의 시간은 커널을 구축하는 데 사용됩니다. Freebsd의 버전이 높을수록 하드웨어 속도가 크게 증가한다는 사실에도 불구하고 빌드 시간이 더 오래 걸립니다.

요점을 살펴보고 정확히 무엇을 했는지 알아봅시다.

  1. 게이트웨이 설정을 위해 서버를 준비했습니다.
  2. 필요한 매개변수로 커널을 재구축했습니다.
  3. 구성된 ipfw 및 nat, 활성화된 라우팅.
  4. 배포용 dnsmasq 설치 및 구성 네트워크 설정 dhcp 및 dns 서버에 의해.
  5. 외부 인터페이스에서 네트워크 활동에 대한 가장 간단한 분석을 위해 iftop을 설치했습니다.

이것으로 충분하다 본격적인 작업 Freebsd 10의 게이트웨이. 사용자 트래픽을 계산하거나 특정 리소스에 대한 액세스를 제한해야 하는 경우 사용할 수 있습니다.

이 기사는 컴파일하는 방법을 설명합니다 FreeBSD 커널. 올바른 구성으로 커널 크기를 크게 줄일 수 있습니다.
커널을 컴파일할 수 있으려면 디스크에서 설치해야 했습니다.

src - 암호화를 제외한 모든 소스

그런 다음 선택

sys - /usr/src/sys (FreeBSD 커널)

.
/stand/sysinstall을 통해 전달할 수 있습니다.
커널 소스를 설치했다고 가정합니다.
루트 사용자로 /usr/src/sys/i386/conf 폴더로 이동합니다.
예를 들어 mykernel에 GENERIC 파일을 복사합니다. 결과 파일이 편집됩니다.
Pentium4 시스템이 있는 경우 즉시 다음 행을 주석 처리하는 것이 좋습니다.

CPU I386_CPU
CPU I486_CPU
CPU I586_CPU

우리 기계가 특정 프로세서에 맞춰져 있고 어떤 쓰레기에도 뿌리지 않게 하세요 😉
사용하지 않는 장치를 비활성화하면 커널 크기가 줄어들고 그에 따라 프로세서 부하도 줄어듭니다. 컴퓨터를 부팅한 후 dmesg 명령으로 어떤 장치가 있는지 확인할 수 있습니다.
커널에서 기본적으로 지원되지 않는 장치를 추가할 수도 있습니다. 장치는 FreeBSD 4.x 분기의 LINT 파일과 FreeBSD 5.x 분기의 NOTES 파일에 자세히 설명되어 있습니다.

파일을 편집한 후 컴파일을 시작할 수 있습니다.
다음 명령을 실행해야 합니다.

config mykernel - 커널 구성
cd ../../컴파일/마이커널
의존하다
만들다
make install - 커널 설치

모든 것이 잘 되었다면 재부팅만 하면 됩니다.

추신 실험하기 전에 일반 커널을 저장하는 것이 좋습니다. 예를 들어 kernel.good이라는 이름으로 새 커널이 부팅되지 않으면 kernel.old 대신 boot kernel.good을 지정합니다. 커널을 다시 빌드할 때 예를 들어 작동하지 않는 커널로 kernel.old를 덮어쓰고 부팅할 수 없기 때문에 이 작업을 제안합니다.

추신 잘 작동하는 커널 유지하기:
FreeBSD 4.x의 경우 - cp /kernel /kernel.good
FreeBSD 5.x의 경우 - cp -R /boot/kernel /boot/kernel.good

커널을 업데이트하는 두 번째 방법:
/usr/src 디렉토리로 변경합니다.
# cd /usr/src

코어를 수집합니다.
# 빌드커널 만들기 KERNCONF=MYKERNEL

새 커널을 설치합니다.
# 설치 커널을 만듭니다 KERNCONF=MYKERNEL

참고: 이 빌드 방법을 사용하려면 모든 시스템 소스 파일이 있어야 합니다. 방금 설치했다면 소스 파일커널을 사용한 다음 사용 전통적인 방법위에서 설명한 대로.

MYKERNEL은 커널 구성 파일이며 i386의 경우 /usr/src/sys/i386/conf 폴더에 있습니다. KERNCONF 옵션을 지정하지 않으면 GENERIC 커널이 빌드됩니다.

dms UVPTLY SDTB OEPVIPDYNP OBMYYUYE 추이 YUIPDOSHI ZHBKMPCH FreeBSD.

CHP-RETCHSHI, DBCHBKFE UDEMBEN LTBFLYK PVPT LBFBMPZB, CH LPFPTPN VKhDEF RTPYUIPDYFSH UVPTLB SDTB. CHUE LBFBMPZY, LPFPTSCHE VHDHF HRPNYOBFSHUS, VHDHF PFOPUYFEMSHOSHCHNY RP PFOPIEOYA L PUOPCHOPNH LBFBMPZH /usr/src/sys, LPFPTSCHK FBLCE DPUFHREO LBL LBFBMPZ /sys . FFPF LBFBMPZ UPDETSYF NOPTSEUFCHP RPDLBFBMPZCHP, RTEDUPBCHMSAEII UPVPK TBMYUOSCHE YUBUFY SDTB, OP OBYVPMEE CHBTSOSCHN DMS OBU VKhDEF LBFBMPZ 아치/conf, H LPFPTPN CHSC VHDEF TEBLFYTPCHBFSH LPOJZHTBGYPOOSCHK JBKM SDTB Y CH LPFPTPN OBIPDYFUS LBFBMPZ 컴파일, 여기 VHDEF UPYTBFSHUS CHBY SDTP. 아치 NPCEF VShFSH i386, amd64, ia64, powerpc, sparc64 YMY pc98 CHUE, UFP OBIPDYFUS CHOHFTY LBFBMPZB PRTEDEMEOOOPK BTIYFELFHTSC, PFOPUYFUS FPMSHLP L LFPK BTIYFELFHTE; PUFBMSHOPC LPD SCHMSEFUS NBYYOOP OYEBCHYUYNSCHN Y PVEYN DMS CHUI RMBFZHPTN, LPFPTSHCHE 정보 FreeBSD NPCEF VSHCHFSH RFEOGYBMSHOP RPTFYTPCHBOB. pVTBFYFE CHOYNBOYE ABOUT MPZYUEULHA UFTHLFHTH LBFBMPZCH, Ch LPFPTPK LBTsDPE RPDDETSYCHBENPE HUFTPKUFCHP, LBTsDBS ZHBKMPCHBS UYUFENB Y LBTsDBS PRGYS TBNEEBEFUS Ch U

h RTYNETBI LFPK ZMBCHSH RPDTB'HNECHBEFUUS, UFP CHSH YURPMSH'HEFE BTIYFELFHTH i386. eUMY BTIYFELFHTTB CHBYEK UYUFENSCH PFMYUBEFUS PF YURPMSHEKHENPK CH RTYNETBI, FP CHBN OEPVIPDYNP VKHDEF UPPFCHEFUFCHEOOP YЪNEOYFSH YNEOB LBFBMPZCH.

rtyyyyyyyyyeh:

eUMY LBFBMPZ /usr/src/ PFUHFUFCHHEF CH CHBYEK UYUFENE(YMY LFPF LBFBMPZ RHUF), FP LFP OBBYUIF, UFP YUIPDOSHCHE FELUFSHCHOE VSCHMY HUFBOCHMEOSCH. obyvpmee RTPUFK URPUPV HUFBOCHYFSH YI - CHPURPMSHЪPCHBFSHUS, LBL PRYUBOP CH tBEDEMљ21.5, > . dbMEE, UPDBKFE UYNCHPMYUEULHA UUSCHMLH OB /usr/src/sys/:

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

ъBFEN, RETEKDIFE CH LBFBMPZ 아치/conf Y ULPRYTHKFE JBKM LPOJYZHTBGYY 일반 W JBKM U CHCHWTBOOCHN CHBNY YNEOEN. 오브티넷:

# cd /usr/src/sys/ i386/conf # cp 일반 마이커넬

RP FTBDYGYY YNS UPUFPYF YH VHLCH CH CHETIOYEN TEZYUFTE, Y EUMY CHSH RPDDETSYCHBEFE OEULPMSHLP LPNRSHAFETCH FreeBSD 정보 TBMYUOPN PVPTHDPCHBOY, IPTPYBS YDES DPVBCHMSFSH LFP YNSPU NSC OBCHBMY SDTP 마이커넬 CH FFPN RTYNETE.

rPDULBBLB:

rPNEEEOYE ZHBKMB LPOZHYZHTBGYY SDTB H /usr/src eUMY CHSH YURSHCHFSHCHCHBEFE RTPVMENSCH, YI NPTsOP TEYYFSH HDBMYCH /usr/src Y OBYUBCH CHUE U OBYUBMB. rPUME LFPZP PVSHCHUOP FTEVHEFUS OEULPMSHLP UELHOD, UFPVSCH RPOSFSH, UFP CHSHCH HDBMYMY UPVUFCHEOOOSCHK ZHBKM OBUFTPKLY SDTB. OE TEDBLFYTHKFE OERPUTEDUFCHEOOP 일반, ON NPTSEF VSSHHFSH FBLTS RETEBRYUBO Y RTY UMEDHAEEN PVOCHMEOYY DETECHB YUIPDOSHCHI FELUFPCH, Y YNEOOYS SDTB VHDHF RPFETSOSCH.

ChSh NPTSEFE UPITBOYFSH ZHBKM LPOZHYZKHTBGYY SDTB Ch DTHZPN NEUFE, B BLFEN UPDBFSH UYNCHPMYUEULHA UUSCHMLH FFPF 정보 ZHBKM Ch LBFBMPZE i386 .

오브티넷:

# cd /usr/src/sys/ i386/conf # mkdir /root/kernels # cp 일반 /루트/커널/ 마이커넬 # ln -s /루트/커널/ 마이커넬

FERETSH PFTEDBLFYTHKFE ZHBKM 마이커넬 CH UCHPЈN MAVINPN FELUFPCHPN TEDBLFPTE. еУМЙ ​​​​ЧЩ ФПМШЛП ОБЮЙОБЕФЕ, ЕДЙОУФЧЕООЩН ДПУФХРОЩН ТЕДБЛФПТПН УЛПТЕЕ ЧУЕЗП ВХДЕФ vi , ЛПФПТЩК УМЙЫЛПН УМПЦЕО ДМС ФПЗП, ЮФПВЩ ПРЙУБФШ ЕЗП ЪДЕУШ, ОП Ч ВЙВМЙПЗТБЖЙЙ РЕТЕЮЙУМЕОП НОПЦЕУФЧП ЛОЙЗ, Ч ЛПФПТЩИ ЕЗП ЙУРПМШЪПЧБОЙЕ ИПТПЫП ПУЧЕЭЕОП. pDOBLP FreeBSD RTEDPUFBCHMSEF VPMEE RTPUFPK TEDBLFPT ee , LPFPTSCHK, EUMY CHSHCHCH - OPCHYUPL, RPDPKDIEF CHBN VPMSHYE CHUEZP. OE UFEOSKFEUSH YЪNEOSFSH UFTPLY LPNNEOFBTYECH CH OBYUBME ZHBKMB, U FEN, YUFPVSCH PFPVTBBYFSH CHBYKH LPOZHJZHTBGYA YMY YЪNEOEOYS, LPFPTSHCHCHGE UDEMBMY UDEMBMY RP UTBCHOEO

eUMMY CHBN RTYIPDYMPUSH UPVYTBFSH SDTP DMS SunOS TM YMY LBLPC-MYVP DTHZPK PRETBGYPOOPK UYUFENSCH FIRB BSD, NOPZPE Y FPZP, UFP UPDETTSYFUS H FFPN ZHBKME VHDEF PYUEOSHBN ЪOB еУМЙ ​​​​ЦЕ ЧЩ, ОБРТПФЙЧ, ЙУРПМШЪПЧБМЙ ДТХЗХА ПРЕТБГЙПООХА УЙУФЕНХ, ФБЛХА ЛБЛ DOS, ЖБКМ ЛПОЖЙЗХТБГЙЙ GENERIC НПЦЕФ РПЛБЪБФШУС ЧБН ЛТБКОЕ УМПЦОЩН, РПЬФПНХ УМЕДХКФЕ ЙОУФТХЛГЙСН Ч ТБЪДЕМЕ лПОЖЙЗХТБГЙПООЩК ЖБКМ НЕДМЕООП Й ЧОЙНБФЕМШОП.

oCHPE SDTP VHDEF ULPRYTPCHBOP H LBFBMPZ /boot/kernel LBL /boot/kernel/kernel , B UFBTPE SDTP VHDEF RETENEEOP H /boot/kernel.old/kernel . FERETSCH RETEEBZTHYFE UYUFENH DMS FPZP, YUFPVSCH YURPMSHЪPCHBFSH OPCHPE SDTP. eUMMY UFP-FP RPKDЈF OE FBL, CH NPTSEFE PVTTBFYFSHUS L TBBEDMH 테여예 RTPVMEN CH LPOGE LFPK ZMBCHSCH, LPFPTSCHK NPTSEF PLBBFSHUS RPMEEO. OE ЪBVHDSHFE RTPUYFBFSH TBDEM, LPFPTSCHK PVYASUOSEF LBL YURTBCHYFSH UIFHBGYA, LPZDB SDTP OE ЪBZTHTSBEFUS.

rtyyyyyyyyyeh:

dTHZYE ZHBKMSCH, PFOPUSEYEUS L RTPGEUUH ЪBZTHЪLY, FBLIE LBL ЪBZTHYUYL () Y EZP LPOYZHTBGYPOOSCHE ZHBKMSCH, TBNEEBAFUS H / 부팅. NPDHMY UFPTPOYI RTPYCHPDYFEMEK NPZKhF VShFSH RPNEEEOSCH H /boot/kernel NPDHMY, OE TBUUYUYFBOOSCHE 정보 TBVPFH UUPVTBOOSHCHN SDTPN, NPZHF CHSHCHBFSH OEUFBVYMSHOPUFSH Y OEPTTELFPOUFSH TBVPFSCH.

원하는대로 인터넷에 글을 쌓아서 커널을 모아서 내가 사용하는 것과 왜 그렇게 쓰는지, 동의하지 않는 사람은 아래에 작성하십시오 :)

1. 복사 좋은 코어, 갑자기 .. (예, 이전 것을 설치할 때 kernel.old로 이동한다는 것을 알고 있습니다)

# cp -R kernel/kernel.good/

2. 정보수집 : 엄마의 컨트롤러와 하드웨어의 종류

# cat /var/run/dmesg.boot 필요한 컨트롤러 확인 # pciconf -lv

3. 현장 확인 소스 코드

# ls /sys

3.0 그들이 거기에 없다면 우리는 디스크 또는 인터넷에서 가져옵니다.
3.0a 디스크에서

마운트 /cdrom cd /cdrom ls ; 드라이브에 폴더가 표시되어야 합니다. cd src/ ./install.sh all cd /usr/src/ umount /cdrom

3.0b 실수로 인터넷이 있지만 디스크가 없는 경우(제 경우에는 Frya 8.3):

Cd /usr/ports/devel/subversion make config-recursive svn checkout http://svn.freebsd.org/base/releng/8.3/ /usr/src grep -A 2 "TYPE="" /usr/src/sys /conf/newvers.sh 다음과 같이 표시되어야 합니다. TYPE="FreeBSD" REVISION="8.3" BRANCH="RELEASE-p4"

소스 코드를 다시 업데이트하려면 다음을 수행합니다.

Svn 업데이트 /usr/src/

MPPE 압축 및 암호화 기능이 있는 VPN, pppoe 서버도 필요합니다.
3.1 http://mavhome.dp.ua/MPPC/mppc-1.0.tgz 끌어오기

Wget http://mavhome.dp.ua/MPPC/mppc-1.0.tgz

3.2 /usr/src/sys/net에 압축 풀기

cd /usr/src/sys/net tar -xvf /usr/home/사용자 이름/mppc-1.0.tgz

4. 일반 구성을 복사합니다(다시 작성하고 자체 커널을 갖게 됩니다).
이론의 조각
구성 파일은 /sys/»arch»/conf 디렉토리에서 찾을 수 있습니다. 디렉토리에는 여러 파일이 포함되어 있으며 그 중 가장 중요한 파일은 다음과 같습니다.
DEFAULTS 이것은 이 아키텍처에 대해 기본적으로 지원되는 옵션 및 장치 목록입니다.
GENERIC 이 파일에는 표준 커널의 구성이 포함되어 있습니다.
GENERIC.hints 이후에 /boot/device.hints로 설치되는 힌트 파일입니다. 에 주어진 파일레거시 하드웨어 장치를 구성하는 데 필요한 구성 정보가 포함되어 있습니다.
MAC 이 커널 구성 파일은 높은 학위보호. 이 구성 파일은 MAC을 사용하는 경우에만 필요합니다.
참고 이것은 모든 플랫폼별 기능을 포함하여 주어진 하드웨어 아키텍처에 대한 포괄적인 커널 구성입니다. 플랫폼 독립적 기능은 /usr/src/sys/conf/NOTES에서 찾을 수 있습니다.

# cd /usr/src/sys/i386/conf # mkdir /root/kernels # cp 일반 /root/kernels/MYKERNEL # ln -s /root/kernels/MYKERNEL

5. 우리는 우리의 핵심이 무엇으로 구성되어 있는지 살펴보고 그 과정에서 일반
커널 옵션:
CPU이 레이블은 커널에서 지원하는 프로세서 유형을 나타냅니다. amd64/EM64T 하드웨어 플랫폼의 커널 구성에는 프로세서 유형을 지정하는 단일 항목이 포함됩니다.
아이덴티티커널의 이름, 임의의 문자열을 포함합니다.
메이크 옵션 주어진 라인에 대한 지침이 포함되어 있습니다. 소프트웨어커널을 빌드하는 것입니다. 가장 일반적인 옵션은 DEBUG=-g이며 이는 컴파일러에 커널에 디버깅 정보를 포함하도록 지시합니다.
옵션이 유형의 항목은 하드웨어와 직접 관련되지 않은 커널 기능을 설명합니다. 여기에는 파일 시스템이 포함됩니다. 네트워크 프로토콜커널에 내장된 디버거.
장치이 유형의 항목은 장치 또는 장치 드라이버를 설명하며 커널이 특정 장치와 상호 작용하는 방법을 설명하는 지침을 포함합니다.

첫 번째 대마를 지원할 커널이 필요하지 않으므로 그대로 둡니다.

Cpu I686_CPU ident MYKERNEL # 커널 디버깅 옵션(실제로는 유용하지 않을 수 있지만 # 결함을 발견하고 개발자에게 보고하려는 경우 편리할 것입니다.) makeoptions DEBUG=-g #4Crypt_and_compress options NETGRAPH_MPPC_ENCRYPTION options NETGRAPH_MPPC_COMPRESSION 4PF: device pf device pflog device pfsync options ALTQ options ALTQ_CBQ options ALTQ_RED options ALTQ_RIO options ALTQ_HFSC options ALTQ_CDNR options ALTQ_PRIQ options ALTQ_NOPCC options ALTQ_DEBUG #4MPD options NETGRAPH options NETGRAPH_ETHER options NETGRAPH_SOCKET options NETGRAPH_TEE options NETGRAPH_BPF options NETGRAPH_IFACE options NETGRAPH_KSOCKET options NETGRAPH_PPP options NETGRAPH_PPTPGRE options NETGRAPH_TCPMSS options NETGRAPH_VJC #polling НЕ делайте это, 2012년 сейчас!! #options DEVICE_POLLING #options HZ=1000 # 또는 2000 또는 4000일 수록 트래픽이 더 빨라집니다. #Multiple Routing Tables options ROUTETABLES=3 # # 시스템의 설명자 수를 결정합니다. # (0 - "자동 조종 장치"를 의미합니다 :)) ) maxusers 0 # ULE 스케줄러(스레드 배포) 옵션 SCHED_ULE # 선점 기능은 멀티태스킹에서 FreeBSD를 # 더 효율적으로 만듭니다. options PREMPTION # InterNETworking IPv4 옵션 INET # IPv6 통신 프로토콜 IPv6 옵션 INET6 # 이것이 없으면 IPv6은 옵션 SCTP #를 쟁기질하지 않습니다. 파일 시스템 FreeBSD 옵션 FFS # 이 옵션은 커널의 소프트 업데이트 기술을 켜서 디스크에 쓰기 속도를 # 향상시킵니다. 이 기술은 커널에서 # 활성화되어 있지만 개별 디스크에 대해 활성화해야 합니다. options SOFTUPDATES # 세분화된 파일 권한을 지정할 수 있습니다. options UFS_ACL # 수천 개의 파일이 포함된 디렉토리로 작업할 때 속도를 향상시키는 # 디렉토리 인덱싱 지원을 제공합니다. options UFS_DIRHASH # gjournal 기반 UFS 저널링 옵션 활성화 UFS_GJOURNAL # 루트/메모리 디스크 옵션을 만들 수 있음 MD_ROOT # 이 옵션(및 _R00T로 끝나는 다른 모든 옵션) # 다른 파일 시스템을 루트 파티션의 디스크 장치로 사용할 수 있습니다. FFS 외. 설치 프로그램은 # 메모리 장치(MD)를 루트 파일 시스템으로 사용합니다. 디스크가 없는 # 시스템을 사용하는 경우 # 루트 파티션으로 NFS 지원이 필요합니다. FreeBSD를 설치하는 경우 표준 컴퓨터- # 와 함께 하드 드라이브및 키보드를 사용하는 경우 이러한 모든 매개변수가 필요하지 않습니다. #options NFSCLIENT # 네트워크 파일 시스템 클라이언트 #options NFSSERVER # 네트워크 파일 시스템 서버 # 이 두 옵션은 NFS(네트워크 파일 시스템) 지원을 제공합니다. # NFSCLIENT 옵션을 사용하면 네트워크의 다른 컴퓨터에서 제공하는 파티션을 # 마운트할 수 있고, NFSSERVER 옵션을 사용하면 다른 컴퓨터가 파티션에 액세스할 수 있습니다. # Network Lock Manager #options NFSLOCKD # NFS는 /로 사용 가능, NFSCLIENT 필요 #options NFS_ROOT # MSDOS 팻 파티션 옵션 MSDOSFS # ISO 9660 CD 파티션용 파일 시스템 지원 옵션 CD9660 # 프로세스 파일 시스템(PSEUDOFS 필요) 옵션 PROCFS # 의사 파일 시스템 프레임워크 옵션 PSEUDOFS # GUID 파티션 테이블. options GEOM_PART_GPT # 레이블 지정 옵션 제공 GEOM_LABEL # 이전 버전과의 호환성 # BSD 4.3 TTY compat(sgtty) 옵션 COMPAT_43TTY 옵션 COMPAT_FREEBSD4 옵션 COMPAT_FREEBSD5 옵션 COMPAT_FREEBSD6 옵션 COMPAT_FREEBSD7 # 모든 SCSI 장치 감지 전 지연 #options SCSI_DELAY=5000 #options KTRACE # ktrace(1) 지원 옵션 STACK # stack(9) 지원 # 이 옵션은 # 공유 메모리와 시스템 V 스타일의 프로세스 간 통신을 지원합니다. 많은 데이터베이스 프로그램이 # 이 기능에 의존합니다. #이 설정은 System V 공유 메모리에 대한 지원을 제공합니다. #이를 위한 가장 일반적인 용도는 X의 XSHM 확장으로 #많은 그래픽 집약적 애플리케이션이 속도를 개선하기 위해 #자동으로 사용합니다. X를 사용하는 경우 이 옵션이 #필요합니다. options SYSVSHM # SYSV 스타일 공유 메모리 # 지원 시스템 메시지 V. 이 옵션은 커널에 # 수백 바이트만 추가합니다. options SYSVMSG # SYSV 스타일 메시지 큐 # System V 세마포어 지원 일반적으로 사용되는 기능은 아니지만 # 커널에 수백 바이트만 추가합니다. options SYSVSEM # SYSV 스타일 세마포 옵션 P1003_1B_SEMAPHORES # POSIX 스타일 세마포 # 1993 POSIX®에 의해 추가된 실시간 확장. # StarSuite™와 같은 컬렉션의 특정 응용 프로그램에서 사용합니다. options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B 실시간 확장 옵션 PRINTF_BUFR_SIZE=128 # printf 출력이 산재되지 않도록 합니다. #options KBD_INSTALL_CDEV # USB 키보드 옵션을 위한 /dev의 CDEV 항목 설치 HWPMC_HOOKS # hwpmc(4) 옵션에 필요한 커널 후크 AUDIT # 보안 이벤트 감사 옵션 MAC # TrustedBSD MAC 프레임워크 옵션 FLOWTABLE # CPU별 라우팅 캐시 #options KDTRACE_HOOKS # 커널 DTrace 후크 옵션 INCLUDE_CONFIG_FILE # 이 파일을 커널에 포함 # 디버깅 옵션을 위한 옵션 KDB # 커널 디버거 관련 코드 옵션 KDB_TRACE # 패닉에 대한 스택 추적 인쇄 # SMP 커널을 만들려면 다음 두 줄이 필요합니다. options SMP # Symmetric MultiProcessor Kernel device apic # I/O APIC(i386만 해당) # i386 아키텍처에서 작동하도록 설계된 커널에서 대칭 다중 처리(Symmetric # Multiprocessing, SMP) 활성화: apic 옵션은 # SMP 코어에 대한 I/O 지원을 제공합니다. FreeBSD는 기본적으로 활성화된 SMP 지원과 함께 제공됩니다. # apic 장치는 인터럽트 분배를 위해 설정된 I/O APIC의 사용을 가능하게 합니다. 단일 프로세서 및 다중 프로세서 커널과 함께 사용할 수 있습니다(후자의 경우 apic이 필요함). # CPU 주파수 제어 장치 cpufreq # 버스 지원. device acpi device eisa device pci # 시스템에 실제로 그러한 버스가 없는 경우 제거해야 합니다. # ISA 버스가 내부 어딘가에 숨겨져 있는 # "legacy-free" 시스템이 많이 있습니다. # 플로피 드라이브 #device fdc # ATA 및 ATAPI 장치 device ata device atadisk # ATA 디스크 드라이브 device ataraid # ATA RAID 드라이브 device atapicd # ATAPI CDROM 드라이브 #device atapifd # ATAPI 플로피 드라이브 #device atapist # ATAPI 테이프 드라이브 옵션 ATA_STATIC_ID # 고정 장치 번호 매기기 # 정적 모드에서 컨트롤러는 각각 철 조각으로 처리됩니다. # ad0 ad1 ad2 ad3에 대해 각각 PrMaster PrSlave # 및 SecMaster SecSlave 2개 장치 0-1 및 2-3의 2개 채널이 있습니다. # PriMaster에서 SecMaster로 나사를 이동하면 ad0의 볼륨이 ad2가 됩니다. # ATA_STATIC_ID를 끄면 # 채널 및 장치가 아니라 장치(예: 나사)별로 동적 번호가 지정됩니다. 이렇게 하는 것이 더 쉽습니다. # PriMaster 나사가 하나 있고 이 옵션을 끈 다음 새 커널을 시작한 후 # 파티션 수는 변경되지 않습니다. 이제 케이블이나 점퍼를 사용하여 # 다른 나사 대신 나사를 바꾸면 # 예를 들어 SecSlave가 # 여전히 ad0으로 유지됩니다! 차 안에는 하나뿐입니다.) # 따라서 두 번째 나사를 추가하면 시스템에서 연결 순서대로 순위를 결정합니다. # 예를 들어 PriSlave와 SecMaster에 2개의 나사를 활성화합니다. 광고1. # SCSI 컨트롤러(전체 섹션 주석 처리) #device ahb # EISA AHA1742 제품군 #device ahc # AHA2940 및 온보드 AIC7xxx 장치 #options AHC_REG_PRETTY_PRINT # 디버그 출력에서 ​​레지스터 비트필드를 인쇄합니다. 드라이버에 ~128k를 추가합니다. #device ahd # AHA39320/29320 및 온보드 AIC79xx 장치 #options AHD_REG_PRETTY_PRINT # 디버그 출력에서 ​​레지스터 비트필드를 인쇄합니다. 드라이버에 ~215k를 추가합니다. # *_REG_PRETTY_PRINT와 같은 라인은 해당 드라이버의 디버그 모드를 켭니다. # USB에 필요하기 때문에 남은 SCSI 주변 장치 장치 scbus # SCSI 버스(SCSI에 필요) 장치 ch # SCSI 미디어 체인저 장치 da # 직접 액세스(디스크) 장치 sa # 순차 액세스(테이프 등) 장치 cd # CD 장치 패스 # 패스스루 device(직접 SCSI 액세스) device ses # SCSI 환경 서비스(및 SAF-TE) # atkbdc0은 키보드와 PS/2 마우스 장치를 모두 제어합니다. atkbdc # AT 키보드 컨트롤러 장치 atkbd # AT 키보드 장치 psm # PS/2 마우스 장치 kbdmux # 키보드 멀티플렉서 장치 vga # VGA 비디오 카드 드라이버 장치 스플래시 # 스플래시 화면 및 화면 보호기 지원 # syscons는 SCO 콘솔과 유사한 기본 콘솔 드라이버입니다) device sc 장치 agp # 여러 AGP 칩셋 지원 # 전원 관리 지원(참고 사항 참조) 더 많은 옵션) #device apm # i8254에 대한 일시 중단/재개 지원을 추가합니다. device pmtimer # PCCARD(PCMCIA) 지원 # 만일의 경우를 대비하여 PCMCIA와 카드버스 브릿지 지원 직렬(COM) 포트 장치 uart # 일반 UART 드라이버 # 병렬 포트 장치 ppc # 인터페이스 병렬 포트 ISA에. device ppbus # 병렬 포트 버스(필수) device lpt # 프린터 #device plip # 병렬 TCP/IP #device ppi # 범용 I/O("긱 포트"") + IEEE1284 I/O. #device vpo # Iomega Zip 드라이브 드라이버. scbus와 da가 필요합니다. # PCI 이더넷 NIC. 왼쪽만 :) device em # Intel PRO/1000 기가비트 이더넷 제품군 # 유사 장치. # 이것은 시스템이 네트워크 프로토콜을 사용하여 네트워크 소켓을 통해 # 자신과 통신할 수 있게 해주는 루프백 인터페이스입니다. device loop # 네트워크 루프백 # 이 장치는 의사를 생성합니다. 난수# 암호화 작업 및 게임과 같은 필수 애플리케이션에 필요합니다. FreeBSD는 # 다양한 난수 소스에 대한 지원을 제공하며, 모두 # 의사 난수 장치로 결합된 # /dev/random /dev/urandom입니다. device random #에는 많은 장치별 기능이 있습니다. 이것이 FreeBSD가 # 장치로 제공하는 이유입니다. 이 줄을 남겨주세요! device ether # 이더넷 지원 장치 vlan # 802.1Q VLAN 지원 # 논리적 패킷 터널. 다양한 # 프로그램에서 커널과 패키지를 교환하는 데 사용됩니다. 이 의사 장치는 # 커널 외부의 수단(사용자 영역 PPP)을 통해 PPP를 지원하는 데 필요합니다. # 일반적인 전화 접속 연결입니다. device tun # 패킷 터널. #은 의사 터미널입니다. # telnet 또는 SSH를 사용하여 시스템에 연결할 때 FreeBSD는 터미널 세션을 모니터링하고 # 화면에 문자를 표시하고 키보드 입력을 읽을 수 있어야 합니다. 시스템 #은 원격 연결을 일반 물리적 모니터 및 키보드로 제공합니다. # 의사 터미널은 연결과 관련된 # 터미널과 같은 의사 장치입니다. device pty # BSD 스타일 호환성 pseudo ttys # 메모리에 파일을 저장할 수 있습니다. 이것은 매우 # 빠른 임시 데이터 저장소를 구성하는 데 매우 유용합니다. 대부분의(전부는 아니지만) # 인터넷 서버에서 인메모리 디스크는 비생산적인 # 낭비입니다. 랜덤 액세스 메모리. 또한 인메모리 디스크를 사용하여 # 디스크 이미지를 마운트하고 액세스할 수 있습니다. device md # 메모리 "디스크" device gif # IPv6 및 IPv4 터널링 장치 믿음 # IPv6-to-IPv4 중계(변환) 장치 펌웨어 # 펌웨어 지원 모듈 # `bpf' 장치는 버클리 패킷 필터를 활성화합니다. # DHCP에는 "bpf"가 필요합니다. >USB 인터페이스 장치 ehci # EHCI PCI->USB 인터페이스(USB 2.0) 장치 usb # USB 버스(필수) #장치 udbp # USB 이중 벌크 파이프 장치 장치 uhid # "인간 인터페이스 장치" 장치 ukbd # 키보드 장치 ulpt # 프린터 장치 umass # 디스크/대용량 저장 장치 - scbus 및 da 장치 필요 ums # 마우스 #장치 urio # Diamond Rio 500 MP3 플레이어 # USB 직렬 장치 장치 u3g # USB 기반 3G 모뎀(옵션, 화웨이, 시에라)

6. 분류로 넘어가자

# cd /usr/src

7. 우리는 핵심을 수집합니다

# 빌드커널 만들기 KERNCONF=MYKERNEL

8. 커널 설치

# 설치 커널을 만듭니다 KERNCONF=MYKERNEL

10. 원격으로 수집된 경우 기다리거나 새 커널의 일회성 다운로드를 수행합니다.

앱0.철분 보충제
당신이 가지고 있다면 하드웨어 장치, GENERIC 커널에서 지원하지 않는 경우 NOTES를 살펴보십시오. 이 파일에 나열된 기능 중 일부는 목적이 불분명하지만 특정 Include, Exclude 및 Device Kernel Extension이 있는 경우 해당 항목을 파악할 수 있어야 합니다.
FreeBSD 커널 구성 메커니즘에는 두 가지가 있습니다. 흥미로운 기회, 커널 유지 관리를 단순화할 수 있습니다. 키워드 no 및 포함 접두사가 붙습니다. 연결을 통해 다음을 추가할 수 있습니다. 별도 파일커널 구성에. 예를 들어, "GENERIC with 몇 가지 추가 조정"으로 설명된 커널 구성이 있는 경우 include 문과 함께 GENERIC 구성을 포함할 수 있습니다. GENERIC 기능뿐 아니라 Soekris 마이크로프로세서도 지원하므로 다음 줄로 구성된 구성을 만들 수 있습니다.
아이덴트 마이커넬
일반 포함
옵션 CPU_SOEKRIS
도 사용할 수 있습니다
노드 장치
선택권

앱1.새 커널의 일회성 부팅:
1. 빌드된 커널을 테스트 폴더에 복사 good kernel을 커널 폴더에 복사

# mv /boot/kernel /boot/kernel.test # mkdir /boot/kernel # cp /boot/kernel.good/* /boot/kernel/

2. 다음 런칭 시 테스트 1번이 로드되며, 마음에 드신다면 메인으로 해드립니다.

Nextboot -k kernel.test

3. 순조롭게 진행된다면

# mv /boot/kernel /boot/kernel.previous # mv /boot/kernel.test /boot/kernel

안되면 승무원에게 전원을 껐다 켜달라고 하세요 :)

앱2.문제:
시스템이 끔찍한 저주를 내뿜을 때: "잠금 순서 반전"(취소된 잠금 요청), 문제의 주요 원인은 ACPI, PAE(비활성화할 수 없음), SMP 및 무효화된 잠금 요청입니다.
http://ipv4.sources.zabbadoz.net/freebsd/lor.html

힌트. 에픽. 0. 비활성화 = 1. 이미 빌드된 커널에서 종료
장식 꼬리. smp. disabled=1 이미 빌드된 커널에서 비활성화
힌트. 액피. 0. disabled=1 이미 빌드된 커널에서 비활성화

앱3.패닉 시 디버그
1. 코어는 다음과 같아야 합니다.
makeoptions 디버그=-g
옵션 KDB
옵션 KDB_TRACE
options DDB # 자동 재로드 비활성화
2. 역추적 얻기
cd /boot/kernel.panicked/
# kgdb kernel.symbols /var/crash/vmcore.0
역추적
3. 싱글 플레이 모드에서 패닉 반복
마운트 -ar
# /etc/rc.d/dumpon 시작

앱4.짐을 싣는 사람
뭔가 엉망이고 서버가 시작되지 않으면 로더의 도움으로 이전 커널을 로드할 수 있습니다.
lsdev - 부팅에 사용할 수 있는 장치 목록
show - conf 파일의 부트 변수 값
set - 부팅 매개변수 변경
lsmod - 메모리에 로드된 모듈 및 커널
언로드 - 메모리에서 커널과 모듈을 완전히 언로드
부팅 - 계속 부팅
대체 커널 다운로드
부리다
/boot/kernel.good/kernel 로드
load /boot/kernel.good/acpi.ko 다른 모든 것은 선택 사항입니다
신병

앱5.커널 모듈
kldstat로드된 모듈 목록

kldload wlan_wep 또는 kldload /boot/kernel/wlan_wep.ko

kldunload모듈 언로딩

kldunload wlan_wep.ko

/boot/kernel/loader.conf에 필요한 모듈을 작성하면 시스템 시작 시 자동으로 로드됩니다.

procfs_load="예"

앱6.선택적 모듈 재조립
기본적으로 커널을 빌드할 때 모든 커널 모듈도 다시 빌드됩니다. 커널을 더 빠르게 업데이트하거나 특정 모듈만 빌드하려면 커널 빌드 프로세스를 시작하기 전에 /etc/make.conf 파일을 편집해야 합니다.

MODULES_OVERRIDE = 리눅스 acpi 사운드/사운드 사운드/드라이버/ds1 ntfs
이 변수는 모든 모듈을 빌드하는 대신 빌드할 모듈 목록을 설정합니다.

WITHOUT_MODULES = 리눅스 acpi 사운드 ntfs
이 변수는 빌드 프로세스에서 제외할 핵심 모듈을 나열합니다. 커널 빌드 프로세스 동안 유용할 수 있는 다른 변수에 대해서는 make.conf(5) 매뉴얼 페이지를 참조하십시오.


이 기사에서는 FreeBSD 커널을 컴파일하는 방법을 설명합니다. 올바른 구성으로 커널 크기를 크게 줄일 수 있습니다.

커널을 컴파일하려면 커널 소스(암호화를 제외한 모든 것의 경우 src-Source)를 설치해야 합니다. 이미 설치되어 있다면 /usr/src/sys(FreeBSD 커널) 디렉토리로 이동하고 커널 소스가 설치되어 있지 않다면 sysinstall을 통해 설치할 수 있습니다. 커널 소스를 설치했다고 가정합니다.

루트 사용자로 /usr/src/sys/i386/conf 폴더로 이동합니다.

# cd /usr/src/sys/i386/conf

예를 들어 mykernel에 GENERIC 파일을 복사합니다. 결과 파일이 편집됩니다.

Pentium4 시스템이 있는 경우 즉시 다음 행을 주석 처리하는 것이 좋습니다.

인용하다
CPU I386_CPU
CPU I486_CPU
CPU I586_CPU

우리 기계를 특정 프로세서에 맞추도록 하고 헛소리를 하지 않도록 하십시오 ;)

사용하지 않는 장치를 비활성화하면 커널 크기가 줄어들고 그에 따라 프로세서 부하도 줄어듭니다. 컴퓨터를 부팅한 후 dmesg 명령으로 어떤 장치가 있는지 확인할 수 있습니다.

커널에서 기본적으로 지원되지 않는 장치를 추가할 수도 있습니다. 장치는 FreeBSD 4.x 분기의 LINT 파일과 FreeBSD 5.x 분기의 NOTES 파일에 자세히 설명되어 있습니다.

파일을 편집한 후 컴파일을 시작할 수 있습니다.

다음 명령을 실행해야 합니다.

모든 것이 잘 되었다면 재부팅만 하면 됩니다.

추신 실험하기 전에 일반 커널을 저장하는 것이 좋습니다. 예를 들어 kernel.good이라는 이름으로 새 커널이 부팅되지 않으면 kernel.old 대신 boot kernel.good을 지정합니다. 커널을 다시 빌드할 때 예를 들어 작동하지 않는 커널로 kernel.old를 덮어쓰고 부팅할 수 없기 때문에 이 작업을 제안합니다.

추신 잘 작동하는 커널 유지하기:

FreeBSD 4.x의 경우 - cp /kernel /kernel.good

FreeBSD 5.x의 경우 - cp -R /boot/kernel /boot/kernel.good

커널을 업데이트하는 두 번째 방법:

/usr/src 디렉토리로 변경합니다.

코어를 수집합니다.

# 빌드커널 만들기 KERNCONF=MYKERNEL

새 커널을 설치합니다.

# 설치 커널을 만듭니다 KERNCONF=MYKERNEL

참고: 이 빌드 방법을 사용하려면 모든 시스템 소스 파일이 있어야 합니다. 커널 소스를 방금 설치했다면 위에서 설명한 전통적인 방법을 사용하십시오.

MYKERNEL은 커널 구성 파일이며 i386의 경우 /usr/src/sys/i386/conf에 있습니다. KERNCONF 옵션을 지정하지 않으면 GENERIC 커널이 빌드됩니다.