最近在测FREEBSD平台下ISP邮件系统前的准备知识摘录

 
壹:FreeBSD系统优化部分内核参数调整中文注释
很多人想优化自己的FreeBSD,特别是在网络性能以及内核调整上,因为这些是最直接的优化方式。在这里我收集整理并用中文注释了一下,相信很多人用得到。

CODE

#最大的待发送TCP数据缓冲区空间
net.inet.tcp.sendspace=65536

#最大的接受TCP缓冲区空间
net.inet.tcp.recvspace=65536

#最大的接受UDP缓冲区大小
net.inet.udp.sendspace=65535

#最大的发送UDP数据缓冲区大小
net.inet.udp.maxdgram=65535

#本地套接字连接的数据发送空间
net.local.stream.sendspace=65535

#加快网络性能的协议
net.inet.tcp.rfc1323=1
net.inet.tcp.rfc1644=1
net.inet.tcp.rfc3042=1
net.inet.tcp.rfc3390=1

#最大的套接字缓冲区
kern.ipc.maxsockbuf=2097152

#系统中允许的最多文件数量
kern.maxfiles=65536

#每个进程能够同时打开的最大文件数量
kern.maxfilesperproc=32768

#当一台计算机发起TCP连接请求时,系统会回应ACK应答数据包。
#该选项设置是否延迟ACK应答数据包,把它和包含数据的数据包一起发送,
#在高速网络和低负载的情况下会略微提高性能,但在网络连接较差的时候,
#对方计算机得不到应答会持续发起连接请求,反而会降低性能。
net.inet.tcp.delayed_ack=0

#屏蔽ICMP重定向功能
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0

#防止ICMP广播风暴
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0

#限制系统发送ICMP速率
net.inet.icmp.icmplim=100

#安全参数,编译内核的时候加了options TCP_DROP_SYNFIN才可以用
net.inet.icmp.icmplim_output=0
net.inet.tcp.drop_synfin=1

#设置为1会帮助系统清除没有正常断开的TCP连接,这增加了一些网络带宽的使用,但是一些死掉的连接最终能被识别并清除。死的TCP连接是被拨号用户存取的系统的一个特别的问题,因为用户经常断开modem而不正确的关闭活动的连接
net.inet.tcp.always_keepalive=1

#若看到net.inet.ip.intr_queue_drops这个在增加,就要调大net.inet.ip.intr_queue_maxlen,为0最好
net.inet.ip.intr_queue_maxlen=1000

#防止DOS***,默认为30000
net.inet.tcp.msl=7500

#接收到一个已经关闭的端口发来的所有包,直接drop,如果设置为1则是只针对TCP包
net.inet.tcp.blackhole=2

#接收到一个已经关闭的端口发来的所有UDP包直接drop
net.inet.udp.blackhole=1

#为网络数据连接时提供缓冲
net.inet.tcp.inflight.enable=1

#如果打开的话每个目标地址一次转发成功以后它的数据都将被记录进路由表和arp数据表,节约路由的计算时间,但会需要大量的内核内存空间来保存路由表
net.inet.ip.fastforwarding=0

##kernel编译打开options POLLING功能,高负载情况下使用低负载不推荐
##SMP不能和polling一起用
#kern.polling.enable=1

#并发连接数,默认为128,推荐在1024-4096之间,数字越大占用内存也越大
kern.ipc.somaxconn=32768

#禁止用户查看其他用户的进程
security.bsd.see_other_uids=0

#设置kernel安全级别
kern.securelevel=0

#记录下任何TCP连接
net.inet.tcp.log_in_vain=1

#记录下任何UDP连接
net.inet.udp.log_in_vain=1

#防止不正确的udp包的***
net.inet.udp.checksum=1

#防止DOS***
net.inet.tcp.syncookies=1

#仅为线程提供物理内存支持,需要256兆以上内存
kern.ipc.shm_use_phys=1

# 线程可使用的最大共享内存
kern.ipc.shmmax=67108864

# 最大线程数量
kern.ipc.shmall=32768

# 程序崩溃时不记录
kern.coredump=0

# lo本地数据流接收和发送空间
net.local.stream.recvspace=65536
net.local.dgram.maxdgram=16384
net.local.dgram.recvspace=65536

# 数据包数据段大小,ADSL为1452。
net.inet.tcp.mssdflt=1460

# 为网络数据连接时提供缓冲
net.inet.tcp.inflight_enable=1

# 数据包数据段最小值,ADSL为1452
net.inet.tcp.minmss=1460

# 本地数据最大数量
net.inet.raw.maxdgram=65536

# 本地数据流接收空间
net.inet.raw.recvspace=65536

#ipfw防火墙动态规则数量,默认为4096,增大该值可以防止某些病毒发送大量TCP连接,导致不能建立正常连接
net.inet.ip.fw.dyn_max=65535

#设置ipf防火墙TCP连接空闲保留时间,默认8640000(120小时)
net.inet.ipf.fr_tcpidletimeout=864000
 
 
贰:FreeBSD系统安装
1.选择国家‘China’
2.选择键盘‘USA ISO’
3.开始安装选择‘Standard’进行标准安装
4.磁盘建立 slice选择‘a’自动将所有空间分配给FB使用
5.多重引导管理程序选择'Custom'
6.规划 label
/          1024m
swap   1024m
/var     3072m
/tmp    1024m
/home 3072m
/usr
7.选择安装的软件包
Custom-----ports、man
Custom-----src----base、sys
8.选择安装使用的媒体‘CD/DVD’
 
叁:FreeBSD 内核编译
#
# GENERIC -- Generic kernel configuration file for FreeBSD/i386
#
# For more information on this file, please read the handbook section on
# Kernel Configuration Files:
#
#    [url]http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html[/url]
#
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# FreeBSD World Wide Web server ([url]http://www.FreeBSD.org/[/url]) for the
# latest information.
#
# An exhaustive list of options and more detailed explanations of the
# device lines is also present in the ../../conf/NOTES and NOTES files.
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.429.2.14 2007/03/27 02:33:00 yongari Exp $

machine        i386
#cpu        I486_CPU
#cpu        I586_CPU
cpu        I686_CPU
ident        FQDN

# To statically compile in device wiring instead of /boot/device.hints
#hints        "GENERIC.hints"        # Default places to look for devices.

makeoptions    DEBUG=-g        # Build kernel with gdb(1) debug symbols

options     SCHED_4BSD        # 4BSD scheduler
options     PREEMPTION        # Enable kernel thread preemption
options     INET            # InterNETworking
#options     INET6            # IPv6 communications protocols
options     FFS            # Berkeley Fast Filesystem
options     SOFTUPDATES        # Enable FFS soft updates support
options     UFS_ACL            # Support for access control lists
options     UFS_DIRHASH        # Improve performance on big directories
options     MD_ROOT            # MD is a potential root device
#options     NFSCLIENT        # Network Filesystem Client
#options     NFSSERVER        # Network Filesystem Server
#options     NFS_ROOT        # NFS usable as /, requires NFSCLIENT
#options     MSDOSFS            # MSDOS Filesystem
#options     CD9660            # ISO 9660 Filesystem
#options     PROCFS            # Process filesystem (requires PSEUDOFS)
#options     PSEUDOFS        # Pseudo-filesystem framework
options     GEOM_GPT        # GUID Partition Tables.
options     COMPAT_43        # Compatible with BSD 4.3 [KEEP THIS!]
options     COMPAT_FREEBSD4        # Compatible with FreeBSD4
options     COMPAT_FREEBSD5        # Compatible with FreeBSD5
#options     SCSI_DELAY=5000        # Delay (in ms) before probing SCSI
options     KTRACE            # ktrace(1) support
#options     SYSVSHM            # SYSV-style shared memory
options     SYSVMSG            # SYSV-style message queues
options     SYSVSEM            # SYSV-style semaphores
options     _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options     KBD_INSTALL_CDEV    # install a CDEV entry in /dev
options     ADAPTIVE_GIANT        # Giant mutex is adaptive.

device        apic            # I/O APIC

# Bus support.
#device        eisa
device        pci

# Floppy drives
#device        fdc

# ATA and ATAPI devices
device        ata
device        atadisk        # ATA disk drives
#device        ataraid        # ATA RAID drives
#device        atapicd        # ATAPI CDROM drives
#device        atapifd        # ATAPI floppy drives
#device        atapist        # ATAPI tape drives
options     ATA_STATIC_ID    # Static device numbering

# SCSI Controllers
#device        ahb        # EISA AHA1742 family
#device        ahc        # AHA2940 and onboard AIC7xxx devices
#options     AHC_REG_PRETTY_PRINT    # Print register bitfields in debug
                    # output. Adds ~128k to driver.
#device        ahd        # AHA39320/29320 and onboard AIC79xx devices
#options     AHD_REG_PRETTY_PRINT    # Print register bitfields in debug
                    # output. Adds ~215k to driver.
#device        amd        # AMD 53C974 (Tekram DC-390(T))
#device        isp        # Qlogic family
#device     ispfw        # Firmware for QLogic HBAs- normally a module
#device        mpt        # LSI-Logic MPT-Fusion
#device        ncr        # NCR/Symbios Logic
#device        sym        # NCR/Symbios Logic (newer chipsets + those of `ncr')
#device        trm        # Tekram DC395U/UW/F DC315U adapters

#device        adv        # Advansys SCSI adapters
#device        adw        # Advansys wide SCSI adapters
#device        aha        # Adaptec 154x SCSI adapters
#device        aic        # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
#device        bt        # Buslogic/Mylex MultiMaster SCSI adapters

#device        ncv        # NCR 53C500
#device        nsp        # Workbit Ninja SCSI-3
#device        stg        # TMC 18C30/18C50

# SCSI peripherals
#device        scbus        # SCSI bus (required for SCSI)
#device        ch        # SCSI media changers
#device        da        # Direct Access (disks)
#device        sa        # Sequential Access (tape etc)
#device        cd        # CD
#device        pass        # Passthrough device (direct SCSI access)
#device        ses        # SCSI Environmental Services (and SAF-TE)

# RAID controllers interfaced to the SCSI subsystem
#device        amr        # AMI MegaRAID
#device        arcmsr        # Areca SATA II RAID
#device        asr        # DPT SmartRAID V, VI and Adaptec SCSI RAID
#device        ciss        # Compaq Smart RAID 5*
#device        dpt        # DPT Smartcache III, IV - See NOTES for options
#device        hptmv        # Highpoint RocketRAID 182x
#device        rr232x        # Highpoint RocketRAID 232x
#device        iir        # Intel Integrated RAID
#device        ips        # IBM (Adaptec) ServeRAID
#device        mly        # Mylex AcceleRAID/eXtremeRAID
#device        twa        # 3ware 9000 series PATA/SATA RAID

# RAID controllers
#device        aac        # Adaptec FSA RAID
#device        aacp        # SCSI passthrough for aac (requires CAM)
#device        ida        # Compaq Smart RAID
#device        mfi        # LSI MegaRAID SAS
#device        mlx        # Mylex DAC960 family
#device        pst        # Promise Supertrak SX6000
#device        twe        # 3ware ATA RAID

# atkbdc0 controls both the keyboard and the PS/2 mouse
device        atkbdc        # AT keyboard controller
device        atkbd        # AT keyboard
#device        psm        # PS/2 mouse

device        kbdmux        # keyboard multiplexer

device        vga        # VGA video card driver

#device        splash        # Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device        sc

# Enable this for the pcvt (VT220 compatible) console driver
#device        vt
#options     XSERVER        # support for X server on a vt console
#options     FAT_CURSOR    # start with block cursor

device        agp        # support several AGP chipsets

# Power management support (see NOTES for more options)
#device        apm
# Add suspend/resume support for the i8254.
device        pmtimer

# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
#device        cbb        # cardbus (yenta) bridge
#device        pccard        # PC Card (16-bit) bus
#device        cardbus        # CardBus (32-bit) bus

# Serial (COM) ports
#device        sio        # 8250, 16[45]50 based serial ports

# Parallel port
#device        ppc
#device        ppbus        # Parallel port bus (required)
#device        lpt        # Printer
#device        plip        # TCP/IP over parallel
#device        ppi        # Parallel port interface device
#device        vpo        # Requires scbus and da

# If you've got a "dumb" serial or parallel PCI card that is
# supported by the puc(4) glue driver, uncomment the following
# line to enable it (connects to the sio and/or ppc drivers):
#device        puc

# PCI Ethernet NICs.
#device        de        # DEC/Intel DC21x4x (``Tulip'')
#device        em        # Intel PRO/1000 adapter Gigabit Ethernet Card
#device        ixgb        # Intel PRO/10GbE Ethernet Card
#device        txp        # 3Com 3cR990 (``Typhoon'')
#device        vx        # 3Com 3c590, 3c595 (``Vortex'')

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device        miibus        # MII bus support
#device        bce        # Broadcom BCM5706/BCM5708 Gigabit Ethernet
#device        bfe        # Broadcom BCM440x 10/100 Ethernet
#device        bge        # Broadcom BCM570xx Gigabit Ethernet
#device        dc        # DEC/Intel 21143 and various workalikes
#device        fxp        # Intel EtherExpress PRO/100B (82557, 82558)
#device        lge        # Level 1 LXT1001 gigabit Ethernet
#device        msk        # Marvell/SysKonnect Yukon II Gigabit Ethernet
#device        nge        # NatSemi DP83820 gigabit Ethernet
#device        nve        # nVidia nForce MCP on-board Ethernet Networking
#device        pcn        # AMD Am79C97x PCI 10/100(precedence over 'lnc')
#device        re        # RealTek 8139C+/8169/8169S/8110S
#device        rl        # RealTek 8129/8139
#device        sf        # Adaptec AIC-6915 (``Starfire'')
#device        sis        # Silicon Integrated Systems SiS 900/SiS 7016
#device        sk        # SysKonnect SK-984x & SK-982x gigabit Ethernet
#device        ste        # Sundance ST201 (D-Link DFE-550TX)
#device        stge        # Sundance/Tamarack TC9021 gigabit Ethernet
#device        ti        # Alteon Networks Tigon I/II gigabit Ethernet
#device        tl        # Texas Instruments ThunderLAN
#device        tx        # SMC EtherPower II (83c170 ``EPIC'')
#device        vge        # VIA VT612x gigabit Ethernet
device        vr        # VIA Rhine, Rhine II
#device        wb        # Winbond W89C840F
#device        xl        # 3Com 3c90x (``Boomerang'', ``Cyclone'')

# ISA Ethernet NICs. pccard NICs included.
#device        cs        # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
#device        ed        # NE[12]000, SMC Ultra, 3c503, DS8390 cards
#device        ex        # Intel EtherExpress Pro/10 and Pro/10+
#device        ep        # Etherlink III based cards
#device        fe        # Fujitsu MB8696x based cards
#device        ie        # EtherExpress 8/16, 3C507, StarLAN 10 etc.
#device        lnc        # NE2100, NE32-VL Lance Ethernet cards
#device        sn        # SMC's 9000 series of Ethernet chips
#device        xe        # Xircom pccard Ethernet

# Wireless NIC cards
#device        wlan        # 802.11 support
#device        wlan_wep    # 802.11 WEP support
#device        wlan_ccmp    # 802.11 CCMP support
#device        wlan_tkip    # 802.11 TKIP support
#device        an        # Aironet 4500/4800 802.11 wireless NICs.
#device        ath        # Atheros pci/cardbus NIC's
#device        ath_hal        # Atheros HAL (Hardware Access Layer)
#device        ath_rate_sample    # SampleRate tx rate control for ath
#device        awi        # BayStack 660 and others
#device        ral        # Ralink Technology RT2500 wireless NICs.
#device        wi        # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
#device        wl        # Older non 802.11 Wavelan wireless NIC.

# Pseudo devices.
device        loop        # Network loopback
device        random        # Entropy device
device        ether        # Ethernet support
#device        sl        # Kernel SLIP
#device        ppp        # Kernel PPP
#device        tun        # Packet tunnel.
device        pty        # Pseudo-ttys (telnet etc)
device        md        # Memory "disks"
device        gif        # IPv6 and IPv4 tunneling
device        faith        # IPv6-to-IPv4 relaying (translation)

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device        bpf        # Berkeley packet filter

# USB support
#device        uhci        # UHCI PCI->USB interface
#device        ohci        # OHCI PCI->USB interface
#device        ehci        # EHCI PCI->USB interface (USB 2.0)
#device        usb        # USB Bus (required)
#device        udbp        # USB Double Bulk Pipe devices
#device        ugen        # Generic
#device        uhid        # "Human Interface Devices"
#device        ukbd        # Keyboard
#device        ulpt        # Printer
#device        umass        # Disks/Mass storage - Requires scbus and da
#device        ums        # Mouse
#device        ural        # Ralink Technology RT2500USB wireless NICs
#device        urio        # Diamond Rio 500 MP3 player
#device        uscanner    # Scanners
# USB Ethernet, requires miibus
#device        aue        # ADMtek USB Ethernet
#device        axe        # ASIX Electronics USB Ethernet
#device        cdce        # Generic USB over Ethernet
#device        cue        # CATC USB Ethernet
#device        kue        # Kawasaki LSI USB Ethernet
#device        rue        # RealTek RTL8150 USB Ethernet

# FireWire support
#device        firewire    # FireWire bus code
#device        sbp        # SCSI over FireWire (Requires scbus and da)
#device        fwe        # Ethernet over FireWire (non-standard!)

device pf
device pflog
device pfsync

options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_PRIQ
options ALTQ_NOPCC
 
肆:配置FreeBSD服务器一(定制一个内核)
如果您的系统中 没有 /usr/src/sys 这样一个目录, 则说明没有安装内核源代码。 安装它最简单的方法是通过以 root 身份运行 sysinstall, 选择 Configure, 然后是 Distributionssrc, 选中其中的 basesys

您可以考虑把内核配置文件放到别的地方, 然后再到 i386 目录中创建一个指向它的符号链接。
例如:
# cd /usr/src/sys/i386/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/
# ln -s /root/kernels/
  配置文件的格式是非常简单的。 每一行都包括一个关键词, 以及一个或多个参数。 实际上, 绝大多数行都只包括一个参数。 在 # 之后的内容会被认为是注释而忽略掉。 接下来几节, 将以 GENERIC 中的顺序介绍所有关键字。 如果需要与平台有关的选项和设备的详细列表, 请参考与 GENERIC 文件在同一个目录中的那个 NOTES, 而平台无关的选项, 则可以在 /usr/src/sys/conf/NOTES 找到。
注意: 如果您需要一份包含所有选项的文件, 例如用于测试目的, 则应以 root 身份执行下列命令:
# cd /usr/src/sys/i386/conf && make LINT 
  下面是一个 GENERIC 内核配置文件的例子, 它包括了一些需要解释的注释。 这个例子应该和您复制的 /usr/src/sys/i386/conf/GENERIC 非常接近。
machine        i386
  这是机器的架构, 他只能是 alpha, amd64, i386, ia64, pc98, powerpc, 或 sparc64 中的一种。
cpu          I486_CPU
cpu I586_CPU
cpu I686_CPU
  上面的选项指定了您系统中所使用的 CPU 类型。 您可以使用多个 CPU 类型 (例如, 您不确定是应该指定 I586_CPUI686_CPU)。 然而对于定制的内核, 最好能够只指定您使用的那种 CPU。 如果您对于自己使用的 CPU 类型没有把握, 可以通过查看 /var/run/dmesg.boot 中的启动信息来了解。
ident          
  这是内核的名字。 您应该取一个自己的名字, 例如取名叫 FQDN, 如果您一直在按照前面的说明做的话。 您放在 ident 后面的字符串在启动内核时会显示出来, 因此如果希望能够容易区分常用的内核和刚刚定制的内核, 就应该采取不同的名字 (例如, 您想定制一个试验性的内核)。
#To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" # Default places to look for devices.
   device.hints(5) 可以用来配置设备驱动选项。 在启动的时候 loader(8) 将会检查缺省位置 /boot/devicehints。 使用 hints 选项您就可以把这些 hints 静态编译进内核。 这样就没有必要在 /boot下创建 devicehints
makeoptions     DEBUG=-g          # Build kernel with gdb(1) debug symbols
  一般的 FreeBSD 联编过程, 在所联编的内核指定了 -g 选项时, 由于此选项将传递给 gcc(1) 表示加入调试信息, 因此会将调试符号也包含进来。 如果您使用 “旧式的” 方法来联编内核, 通过使用 config(8)-g 选项, 也可以达到类似的目的。 (参见 第 8.3 节 了解进一步的信息)。
options          SCHED_4BSD         # 4BSD scheduler
  这是 FreeBSD 传统上使用的默认系统调度器。 请保留此选项。
options          PREEMPTION         # Enable kernel thread preemption
  允许内核线程根据优先级的抢占调度。 这有助于改善交互性, 并可以让中断线程更早地执行, 而无须等待。
options          INET              # InterNETworking
  网络支持,即使您不打算连网,也请保留它,大部分的程序至少需要回环网络(就是和本机进行网络连接),所以强烈要求保留它。
options          INET6             # IPv6 communications protocols
  这将打开IPv6连接协议。
options          FFS               # Berkeley Fast Filesystem
  这是最基本的硬盘文件系统,如果打算从本地硬盘启动,请保留它。
options          SOFTUPDATES       # Enable FFS Soft Updates support
  这个选项会启用内核中的 Soft Updates 支持, 它会显著地提高磁盘的写入速度。 尽管这项功能是由内核直接提供的, 但仍然需要在每个磁盘上启用它。 请检查 mount(8) 的输出, 以了解您系统中的磁盘上是否已经启用了 Soft Updates。 如果没有看到 soft-updates 选项, 则需要使用 tunefs(8) (对于暨存系统) 或 newfs(8) (对于新系统) 命令来激活它。
options          UFS_ACL           # Support for access control lists
  这个选项将启用内核中的访问控制表的支持。 这依赖于扩展属性以及 UFS2, 以及在 第 14.12 节 中所介绍的那些特性。 ACL 默认是启用的, 并且如果已经在文件系统上使用了这一特性, 就不应再关掉它, 因为这会去掉文件的访问控制表, 并以不可预期的方式改变受保护的文件的访问方式。
options          UFS_DIRHASH       # Improve performance on big directories
  通过使用额外的内存,这个选项可以加速在大目录上的磁盘操作。 您应该在大型服务器和频繁使用的工作站上打开这个选项,而在磁盘操作不是很重要的 小型系统上关闭它,比如防火墙。
options          MD_ROOT           # MD is a potential root device
  这个选项将打开以基于内存的虚拟磁盘作为根设备的支持。
options          NFSCLIENT         # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFS_ROOT # NFS usable as /, requires NFSCLIENT
  网络文件系统。 如果您不打算通过 TCP/IP 挂接 UNIX 文件服务器的分区, 就可以注释掉它。
options          MSDOSFS           # MSDOS Filesystem
   MS-DOS 文件系统。 只要您不打算在启动时挂接由 DOS 格式化的硬盘分区, 就可以把它注释掉。 如前面所介绍的那样, 在您第一次挂接 DOS 分区时, 内核会自动加载需要的模块。 此外, emulators/mtools 软件提供了一个很方便的功能, 通过它您可以直接访问 DOS 软盘而无需挂接或卸下它们 (而且也完全不需要 MSDOSFS)。
options          CD9660            # ISO 9660 Filesystem
  用于 CDROM 的 ISO 9660 文件系统。 如果没有 CDROM 驱动器或很少挂接光盘数据 (因为在首次使用数据 CD 时会自动加载), 就可以把它注释掉。 音乐 CD 并不需要这个选项。
options          PROCFS            # Process filesystem (requires PSEUDOFS)
  进程文件系统。 这是一个挂接在 /proc 的一个 “假扮的” 文件系统, 其作用是允许类似 ps(1) 这样的程序给出正在运行的进程的进一步信息。 多数情况下, 并不需要使用 PROCFS, 因为绝大多数调试和监控工具, 已经进行了一系列修改, 使之不再依赖 PROCFS: 默认安装的系统中并不会挂接这一文件系统。
options          PSEUDOFS          # Pseudo-filesystem framework
  在 6.X 内核中, 如果希望使用 PROCFS, 就必须加入 PSEUDOFS 的支持。
options          GEOM_GPT          # GUID Partition Tables.
  这个选项提供了在磁盘上使用大量的分区的能力。
options          COMPAT_43         # Compatible with BSD 4.3 [KEEP THIS!]
  使系统兼容4.3BSD。不要去掉这一行,不然有些程序将无法正常运行。
options          COMPAT_FREEBSD4   # Compatible with FreeBSD4
  为了支持在旧版本的FreeBSD下编译的程序,该选项在FreeBSD 5.X i386和Alpha systems下需要打开。 最好在所有的 i386和Alpha systems下打开这个选项,因为可能要运行老应用程序。 在5.X才开始支持的平台,比如ia64和 Sparc64,就不需要这个选项。
options          SCSI_DELAY=5000  # Delay (in ms) before probing SCSI
  这将让内核在探测每个 SCSI 设备之前等待 5 秒。 如果您只有 IDE 硬盘驱动器, 就可以不管它, 反之您可能会希望尝试降低这个数值以加速启动过程。 当然, 如果您这么做之后 FreeBSD 在识别您的 SCSI 设备时遇到问题, 则您还需要再把它改回去。
options          KTRACE            # ktrace(1) support
  这个选项打开内核进程跟踪,在调试时很有用。
options          SYSVSHM           # SYSV-style shared memory
  提供System V共享内存(SHM)的支持,最常用到SHM的应该是X Window的XSHM延伸, 不少绘图相关程序会自动使用SHM来提供额外的速度。如果您要使用X Window,您最好加入这个选项。
options          SYSVMSG           # SYSV-style message queues
  支持 System V 消息。 这只会在内核中增加数百字节的空间占用。
options          SYSVSEM           # SYSV-style semaphores
  支持System V 信号量, 不常用到, 但只在kernel中占用几百个字节的空间。
注意: ipcs(1) 命令的 -p 选项可以显示出任何用到这些 System V 机制的进程。
options         _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
  在 1993 年 POSIX® 添加的实时扩展。 在 Ports Collection 中某些应用程序会用到这些 (比如 StarOffice)。
options          KBD_INSTALL_CDEV  # install a CDEV entry in /dev
  这个选项与键盘有关。 它在 /dev 中安装一个 CDEV 项。
options          AHC_REG_PRETTY_PRINT     # Print register bitfields in debug
# output. Adds ~128k to driver.
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.
  这个选项主要用于帮助调试, 它能够给出更容易阅读的寄存器数值。
options          ADAPTIVE_GIANT    # Giant mutex is adaptive.
  内核全局锁 (Giant) 是一种互斥机制 (休眠互斥体) 的名字, 它用于保护许多内核资源。 现在, 这已经成为了一种无法接受的性能瓶颈, 它已经被越来越多地使用保护单个资源的锁代替。 ADAPTIVE_GIANT 选项将使得内核全局锁作为一种自适应自旋锁。 这意味着, 当有线程希望锁住内核全局锁互斥体, 但互斥体已经被另一个 CPU 上的线程锁住的时候, 它将继续运行, 直到那个线程释放锁为止。 一般情况下, 另一个线程将进入休眠状态并等待下一次调度。 如果您不确定是否应该这样做的话, 一般应该打开它。
device          apic               # I/O APIC
  apic 设备将启用使用 I/O APIC 作为中断发送设备的能力。 apic 设备可以被 UP 和 SMP 内核使用, 但 SMP 内核必须使用它。 要支持多处理器, 还需要加上 options SMP
device          eisa
  如果您的主机板上有EISA总线,加入这个设置。使用这个选项可以自动扫描并设置所有连接在EISA总线上的设备。
device          pci
  如果您的主板有PCI总线,就加入这个选项。使用这个选项可以自动扫描PCI卡,并在PCI到ISA之间建立通路。
# Floppy drives
device fdc
  这是软驱控制器。
# ATA and ATAPI devices
device ata
  这个驱动器支持所有ATA和ATAPI设备。您只要在内核中加入 device ata选项, 就可以让内核支持现代计算机上的所有PCI ATA/ATAPI设备。
device          atadisk                 # ATA disk drives
  这个是使用 ATAPI 硬盘驱动器时必须加入的选项。
device          ataraid                 # ATA RAID drives
  这个选项需要 device ata, 它用于 ATA RAID 驱动。

device atapicd # ATAPI CDROM drives
  这个是ATAPI CDROM驱动器所必须的。
device          atapifd                 # ATAPI floppy drives
  这个是ATAPI 软盘驱动器所必须的。
device          atapist                 # ATAPI tape drives
  这个是ATAPI 磁带机驱动器所必须的.
options         ATA_STATIC_ID           # Static device numbering
  这指定对控制器使用其静态的编号; 如果没有这个选项, 则会动态地分配设备的编号。
# SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
device ahd # AHA39320/29320 and onboard AIC79xx devices
device amd # AMD 53C974 (Teckram DC-390(T))
device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs- normally a module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets)
device trm # Tekram DC395U/UW/F DC315U adapters

device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aha # Adaptec 154x SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters

device ncv # NCR 53C500
device nsp # Workbit Ninja SCSI-3
device stg # TMC 18C30/18C50
  SCSI控制器。可以注释掉您系统中没有的设备。如果您只有IDE设备,您可以把这些一起删掉。
# SCSI peripherals
device scbus # SCSI bus (required for SCSI)
device ch # SCSI media changers
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI access)
device ses # SCSI Environmental Services (and SAF-TE)
  SSCSI外围设备。也可以像上面一样操作。
注意: 目前系统提供的 USB umass(4) 以及少量其它驱动使用了 SCSI 子系统, 尽管它们并不是真的 SCSI 设备。 因此, 如果在内核配置使用了这类驱动程序, 请务必不要删除 SCSI 支持。
# RAID controllers interfaced to the SCSI subsystem
device amr # AMI MegaRAID
device arcmsr # Areca SATA II RAID
device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - See NOTES for options
device hptmv # Highpoint RocketRAID 182x
device rr232x # Highpoint RocketRAID 232x
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
device twa # 3ware 9000 series PATA/SATA RAID

# RAID controllers
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough for aac (requires CAM)
device ida # Compaq Smart RAID
device mfi # LSI MegaRAID SAS
device mlx # Mylex DAC960 family
device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAID
  支持RAID控制器。如果您没有这些,可以把它们注释掉或是删掉。
# atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc # AT keyboard controller
  键盘控制器( atkbdc)提供AT键盘输入以及PS/2指针设备的I/O服务。 键盘驱动程序( atkbd)与PS/2鼠标驱动程序( psm)需要这个控制器,所以不要删除它。
device          atkbd      # AT keyboard
   atkbd驱动程序,与 atkbdc控制器一起使用, 提供连接到AT键盘控制器的AT 84键盘与AT加强型键盘的访问服务。
device          psm        # PS/2 mouse
  如果您的鼠标连接到PS/2鼠标端口,就使用这个设备驱动程序。
device          kbdmux        # keyboard multiplexer
  针对键盘多路选择器的基本支持。
device          vga        # VGA video card driver
  显卡驱动。
device          splash     # Splash screen and screen saver support
  启动时的 splash 画面! 屏幕保护程序也需要这一选项。
# syscons is the default console driver, resembling an SCO console
device sc
   sc 是默认的控制台驱动程序, 类似 SCO 控制台。 由于绝大部分全屏幕程序都通过类似 termcap 这样的终端数据库函数库赖访问控制台, 因此无论您使用这个或与 VT220 兼容的 vt 都没有什么关系。 如果您在运行这种控制台时使用全屏幕程序时发生问题, 请在登录之后将 TERM 变量设置为 scoansi
# Enable this for the pcvt (VT220 compatible) console driver
#device vt
#options XSERVER # support for X server on a vt console
#options FAT_CURSOR # start with block cursor
  这是一个兼容 VT220 的控制台驱动, 它同时能够向下兼容 VT100/102。 在同 sc 硬件不兼容的一些笔记本上它能够运行的很好。 当然, 登录系统时请把 TERM 变量设置为 vt100vt220。 此驱动在连接网络上大量不同的机器时也被证明非常有用, 因为此时 termcapterminfo 通常没有可用的 sc 设备 ── 而 vt100 则几乎每种平台都支持。
device          agp
  如果您的机器使用 AGP 卡, 请把上面一行加入配置。 这将启用 AGP, 以及某些卡上的 AGP GART 支持。
# 电源管理支持 (参见 NOTES 了解更多选项)
#device apm
  高级电源管理支持。 对笔记本有用, 不过在 FreeBSD 5.X 和更高版本中的 GENERIC 里默认禁用。
# 增加 i8254 的 挂起/恢复 支持。
device pmtimer
  用于电源管理事件, 例如 APM 和 ACPI 的时钟设备驱动。
# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
device cbb # cardbus (yenta) bridge
device pccard # PC Card (16-bit) bus
device cardbus # CardBus (32-bit) bus
  PCMCIA支持。如果您使用膝上型计算机,您需要这个。
# Serial (COM) ports
device sio # 8250, 16[45]50 based serial ports
  这些串口在 MS-DOS/ Windows 的世界中称为 COM 口。
注意: 如果使用内置式的调制解调器, 并占用 COM4 而您另有一个串口在 COM2, 则必须把调制解调器的 IRQ 改为 2 (由于晦涩的技术原因, IRQ2 = IRQ 9) 才能够在 FreeBSD 中访问它。 如果有多口的串口卡, 请参考 sio(4) 以了解需要在 /boot/device.hints 中进行的设置。 某些显卡 (特别是基于 S3 芯片的卡) 使用形如 0x*2e8 的 IO 地址, 而许多廉价的串口卡不能够正确地对 16-位 IO 地址空间进行解码, 因此它们会产生冲突, 并造成 COM4 实际上无法使用。
每一个串口都需要有一个唯一的 IRQ (除非您使用支持中断分享的串口卡), 因此默认的 COM3COM4 IRQ 是不能使用的。
# Parallel port
device ppc
  ISA-bus并行接口。
device          ppbus      # Parallel port bus (required)
  提供并行总线的支持。
device          lpt        # Printer
  提供并口打印机的支持。
注意: 要使用并口打印机,就必须同时加入上面三行设置。
device          plip       # TCP/IP over parallel
  这是针对并行网络接口的驱动器。
device          ppi        # Parallel port interface device
  普通用途的I/O (“geek port”) + IEEE1284 I/O.
#device         vpo        # Requires scbus and da
  这是针对Iomega Zip驱动器的。它要求 scbusda的支持。 最好的执行效果是工作在EPP 1.9模式。
#device         puc
  如果您有由 puc(4) 支持的 “哑” 串行或并行 PCI 卡, 则应去掉这一行的注释。
# PCI Ethernet NICs.
device de # DEC/Intel DC21x4x (“Tulip”)
device em # Intel PRO/1000 adapter Gigabit Ethernet Card
device ixgb # Intel PRO/10GbE Ethernet Card
device txp # 3Com 3cR990 (“Typhoon”)
device vx # 3Com 3c590, 3c595 (“Vortex”)
  多种PCI网卡驱动器。注释或删除您系统中没有的设备.
# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device miibus # MII bus support
  MII总线支持对于一些PCI 10/100 Ethernet NIC来说是必需的。
device          bce        # Broadcom BCM5706/BCM5708 Gigabit Ethernet
device bfe # Broadcom BCM440x 10/100 Ethernet
device bge # Broadcom BCM570xx Gigabit Ethernet
device dc # DEC/Intel 21143 and various workalikes
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device lge # Level 1 LXT1001 gigabit ethernet
device nge # NatSemi DP83820 gigabit ethernet
device nve # nVidia nForce MCP on-board Ethernet Networking
device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (“Starfire”)
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
device ste # Sundance ST201 (D-Link DFE-550TX)
device ti # Alteon Networks Tigon I/II gigabit Ethernet
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 “EPIC”)
device vge # VIA VT612x gigabit ethernet
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (“Boomerang”, “Cyclone”)
  使用MII总线控制器代码的驱动器。
# ISA Ethernet NICs.  pccard NICs included.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
device ex # Intel EtherExpress Pro/10 and Pro/10+
device ep # Etherlink III based cards
device fe # Fujitsu MB8696x based cards
device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
device lnc # NE2100, NE32-VL Lance Ethernet cards
device sn # SMC's 9000 series of Ethernet chips
device xe # Xircom pccard Ethernet

# ISA devices that use the old ISA shims
#device le
  ISA 以太网卡驱动。 参见 /usr/src/sys/i386/conf/NOTES 以了解关于哪个驱动程序能够驱动您的网卡的细节。
# Wireless NIC cards
device wlan # 802.11 support
device an # Aironet 4500/4800 802.11 wireless NICs.
device awi # BayStack 660 and others
device ral # Ralink Technology RT2500 wireless NICs.
device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
#device wl # Older non 802.11 Wavelan wireless NIC.
  用以支持多种无线网卡。
# Pseudo devices
device loop # Network loopback
  这是 TCP/IP 的通用回环设备。 如果您 telnet 或 FTP 到 localhost (也就是 127.0.0.1) 则将通过这个设备回到本机。 这个设备是 必需的
device   random        # Entropy device
  Cryptographically secure random number generator.
device   ether         # Ethernet support
   ether 只有在使用以太网卡时才需要。 它包含了通用的以太网协议代码。
device   sl            # Kernel SLIP
   sl 用以提供 SLIP 支持。 目前它几乎已经完全被 PPP 取代了, 因为后者更容易配置, 而且更适合调制解调器之间的连接, 并提供了更强大的功能。
device   ppp           # Kernel PPP
  这一选项用以提供内核级的 PPP 支持, 用于拨号连接。 也有以用户模式运行的 PPP 实现, 使用 tun 并提供包括按需拨号在内的更为灵活的功能。
device   tun           # Packet tunnel.
  它会被用户模式的 PPP 软件用到。 参考本书的 PPP 以了解更多的细节。

device pty # Pseudo-ttys (telnet etc)
  这是一个 “pseudo-terminal” 或模拟登入端口。 它用来接收连入的 telnet 以及 rlogin 会话、 xterm, 以及一些其它程序如 Emacs 等。
device   md            # Memory “disks”
  内存盘伪设备。
device   gif           # IPv6 and IPv4 tunneling
  它实现了在 IPv4 上的 IPv6 隧道、 IPv6 上的 IPv4 隧道、 IPv4 上的 IPv4 隧道、 以及IPv6 上的 IPv6隧道。 gif 设备是 “自动克隆” 的, 它会根据需要自动创建设备节点。
device   faith         # IPv6-to-IPv4 relaying (translation)
  这个伪设备能捕捉发给它的数据包,并把它们转发给 IPv4/IPv6 翻译服务程序。
# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device bpf # Berkeley packet filter
  这是 Berkeley 包过滤器。这个伪设备允许网络接口被置于混杂模式, 从而,截获广播网 (例如,以太网) 上的每一个数据包。 截获的数据报可以保存到磁盘上,也可以使用 tcpdump(1) 程序来分析。
注意: bpf(4) 设备也被用于 dhclient(8) 来获取默认路由器(网关)的 IP 地址。如果使用DHCP,就不要注释掉这行。
# USB support
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
#device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (required)
#device udbp # USB Double Bulk Pipe devices
device ugen # Generic
device uhid # “Human Interface Devices”
device ukbd # Keyboard
device ulpt # Printer
device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
device urio # Diamond Rio 500 MP3 player
device uscanner # Scanners
# USB Ethernet, requires mii
device aue # ADMtek USB Ethernet
device axe # ASIX Electronics USB Ethernet
device cdce # Generic USB over Ethernet
device cue # CATC USB Ethernet
device kue # Kawasaki LSI USB Ethernet
device rue # RealTek RTL8150 USB Ethernet
  支持各类 USB 设备。
# FireWire support
device firewire # FireWire bus code
device sbp # SCSI over FireWire (Requires scbus and da)
device fwe # Ethernet over FireWire (non-standard!)
  支持各类火线设备。
  如何在内核编译配置中加入对于 PF 选项的例子可以在内核源代码中的 /usr/src/sys/conf/NOTES 这个文件中找到。 这里列举如下:
device pf
device pflog
device pfsync
   device pf 用于启用 “Packet Filter” 防火墙的支持。
   device pflog 启用可选的 pflog(4) 伪网络设备, 用以通过 bpf(4) 描述符来记录流量。 pflogd(8) 服务可以用来存储信息, 并把它们以日志形式记录到磁盘上。
   device pfsync 启用可选的 pfsync(4) 伪网络设备, 用以监视 “状态变更”。 由于这不是那个可加载内核模块的一部分, 因此如果需要使用它, 就必须自行编译定制的内核了。
  这些设置只有在您使用它们构建和安装新内核之后才会生效。
   ALTQ 只有在作为编译选项加入到 FreeBSD 内核时, 才能使用。 ALTQ 目前还不是所有的可用网卡驱动都能够支持的。 请参见 altq(4) 联机手册了解您正使用的 FreeBSD 版本中的驱动支持情况。 下面这些选项将启用 ALTQ 以及一些附加的功能。
options         ALTQ
options ALTQ_CBQ # 基于分类的排列 (CBQ)
options ALTQ_RED # 随机先期检测 (RED)
options ALTQ_RIO # 对进入和发出的包进行 RED
options ALTQ_HFSC # 带等级的包调度器 (HFSC)
options ALTQ_PRIQ # 按优先级的排列 (PRIQ)
options ALTQ_NOPCC # 在联编 SMP 内核时必须使用,禁止读时钟
   options ALTQ 将启用 ALTQ 框架的支持。
   options ALTQ_CBQ 用于启用基于分类的队列 ( CBQ) 支持。 CBQ 允许您将连接分成不同的类别, 或者说, 队列, 以便在规则中为它们指定不同的优先级。
   options ALTQ_RED 将启用随机预检测 ( RED)。 RED 是一种用于防止网络拥塞的技术。 RED 度量队列的长度, 并将其与队列的最大和最小长度阈值进行比较。 如果队列过长, 则新的包将被丢弃。 如名所示, RED 从不同的连接中随机地丢弃数据包。
   options ALTQ_RIO 将启用出入的随机预检测。
   options ALTQ_HFSC 启用层次式公平服务平滑包调度器。 要了解关于 HFSC 进一步的信息, 请参见 [url]http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html[/url]
   options ALTQ_PRIQ 启用优先队列 ( PRIQ)。 PRIQ 首先允许高优先级队列中的包通过。
   options ALTQ_NOPCC 启用 ALTQSMP 支持。 如果是 SMP 系统, 则必须使用它。
      
       要了解 FreeBSD 所支持的设备的其他情况, 请参考 /usr/src/sys/i386/conf/NOTES

 
  现在应该编译内核的源代码了。
联编内核
  1. 进入 /usr/src 目录:
    # cd /usr/src 
  2. 编译内核:
    # make buildkernel KERNCONF= 
  3. 安装新内核:
    # make installkernel KERNCONF=
 

  

  

 

  

  
注意: csup 是用 C 语言对 CVSup 软件的重写, 在 FreeBSD 6.2 和更高版本中, 作为系统的一部分提供。 您可以直接使用系统附带的 csup 而跳过 #1 这一步, 并将这份文档余下部分中的 cvsup 命令改为 csup。 对于较早版本而言, 可以使用 net/csup port 或预编译包来安装 csup

  

  

  
  1. 运行 cvsup
    
        
    cvsup.FreeBSD.org 改为离您较近的 CVSup 服务器。 请参见 CVSup 镜像 ( 第 A.5.7 节 ) 中的镜像站点完整列表。
    注意: 有时可能希望使用自己的 ports-supfile, 比如说, 不想每次都通过命令行来指定所使用的 CVSup 服务器。
    1. 这种情况下, 需要以 root 身份将 /usr/share/examples/cvsup/ports-supfile 复制到新的位置, 例如 /root 或您的主目录。
    2. 编辑 ports-supfile
    3. CHANGE_THIS.FreeBSD.org 修改成离您较近的 CVSup 服务器。 可以参考 CVSup 镜像 ( 第 A.5.7 节 ) 中的镜像站点完整列表。
    4. 接下来按如下的方式运行 cvsup
  2. 此后运行 cvsup(1) 命令将下载最近所进行的改动, 并将它们应用到您的 Ports Collection 上, 不过这一过程并不重新联编您系统上的 ports。
安装SCREEN
# cd /usr/ports/sysutils/screen
# make install clean
# rehash
以后就可以这么做了:
ssh登陆
# screen
然后开始按照通常的操作啦
然后把网线拔掉
然后再来ssh登陆
# screen -r
如果需要更多的功能,则请看screen --help和man screen

有一点小疑问:
如果我要退出screen怎么办?
ctrl+c 退出现有的程序
exit即可退出

如果我要把这个screen暂时丢到后台,怎么办?
ctrl +a +d

如果我要启动多个screen怎么办?
ctrl+a+d
然后screen就可以开启了

我怎么恢复到多个screen之中得一个呢?
# screen -list
可以看到列表
# screen -r 对应的id即可。

如果看了man screen,则还可以给每个screen命名咧。
 
 
陆:FreBSD的小tips
以下是本人收集的小tips,不是原创,只是网上收集,希望对大伙有帮助!
1、在 console 下操作时,由于屏幕显示有限,有时需看前面显示的资料,这时你可:

. 按一下 Pause or Scroll Lock键后,则可利用 PageUp PageDown Up Down Home End 等键来看前后显示的资料

. 再按一下 Pause or Scroll Lock则可回复等待输入画面.

2、 使用 pw 来管理你的帐号

在 FreeBSD 下使用 adduser 来新增帐号,有些时会满烦的,可用以下方式:

pw useradd -n <username> -g <group> -m -s /bin/csh

=> -m 代表建立使用者目录

●同时设密码

echo <password> | pw useradd -n <username> -g <group> -m -s /bin/csh -h 0

● 删除帐号

pw userdel -n <username> -r

=> -r 代表同时删除其 home 目录等相关资料

● 修改帐号

pw usermod -g <group> -s /bin/csh

PS:无法修改帐号名称

● lock 及 unlock 使用者帐号

pw lock <username>
pw unlock <username>

3、 加速你的按键速度..

相信使用 FreeBSD 的人很多都是在 console 下操作吧,有些时,要重复某一按键速度实在很慢..

另一个问题就是 cusror 的位置有些时不太明显..

可用以下方法来改善:

在 /etc/rc.conf 中加入以下资料..

keyrate="fast"
cursor="blink" 或 "destructive"

4、 一些 console 下使用的快速键..

相信大多使用 unix-like 的使用者,还是在 console 下执行你的日常维护工作吧,那有那些按键组合可帮我们提高效率呢..

以下按键皆适用于 tcsh 及 bash..

1. 快速移动光标

ctrl+a -> 到最前面
ctrl+e -> 到最后面

2. 编辑方面

ctrl+d -> 删除光标所在字符
ctrl+w -> 删除光标所在字前面的字符
ctrl+u -> bash:将光标前所有的字及字符删掉,tcsh:删除所有字
ctrl+k -> 将光标后所有字符删掉
ctrl+b -> 下个字符
ctrl+f -> 前一个字符
ctrl+m -> 和按下 enter 的结果一样
ctrl+h -> 和按下 del 或 backspace 键一样
del 或 backspace -> 删除前一个字符

如果对按键有研究兴趣者,不彷参考 /usr/share/syscons/keymaps/ 这个目录,其中 us.iso.kbd 是一般我们使用的按键..

5、 快速切换目录

在 FreeBSD 中常常需要切换目录,有时目录名称较长、或是有大小写、或是只记得前面几个字,怎么办..

其实只要输入部份字再加上 * 这个符号就可以了..

如我们要切换到 /usr/local/ 这个目录,只需输入 cd /usr/lo* 就可以了..

如果输入 cd /usr/l* 会如何呢?则会进到 /usr/lib/ 这个目录,这是因为 shell 找到第一个符合的条件便停止了..

6、 有关时间及时区的?#123;校

使用 FreeBSD 大多是拿来当做主机使用,那时间及时区的正确与否就非常重要了,以下介绍如何?#123;整时间及时区

● 时间?#123;整椒?br />
1. 使用 date 指令

格式 date [yymmdd]HHMM
说明:
yy 年数,如 02 代表 2002 年
mm 月份 01-12
dd 日数 01-31
HH 时数 01-59
MM 分钟 01-59

yy mm dd 皆可省略

例:

?#123;整日期为 2002-03-25
# date 022325

?#123;整时间为 14:20
# date 1420

2. 使用对时主机

# ntpdate clock.stdtime.gov.tw

这项需能连上网络,其中 clock.stdtime.gov.tw 是一标准时间的主机

● 时区的设定

1. 使用 tzsetup

2. 在 /etc/ 下有个档案 localtime,这个就是本机的时区设定档案,因此我们可用个取巧方式(不经由 tzsetup),如以下:

# cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime

这样是不是比较快呢..

7、 如何清空档案内容..

有时我们需将一个档案内容清空,但需保留这个档案..

一般常见的用法是用文字编辑器,如 vi 将这个档案叫出来,再将其内容全部删掉,再存盘..

这样是不是有些烦呢?

有一个更好的方法,使用 true 指令..

如我们要将 /var/log/httpd-access.log 清空,则下以下指令..

# cd /var/log/
# true > httpd-access.log

8、 显示目录及档案 => tree

有时需显示某个目录下所有的目录及档案,虽使用 ls 可达到部份功能,但并不是很方便..

在 dos 中,有个 tree 指令,是不是满好用的..

其实在 FreeBSD 中也有类似的指令 => tree..

以下我们就透过 ports 来安装 tree

# cd /usr/ports/sysutils ; make install

如此会将 tree 这个指令安装在 /usr/local/bin/ 这个目录下..

使用例子:

1. 显示 /usr/ 下的目录及档案

# tree /usr

2. 只显示 /usr 下的目录

# tree -d /usr

详细用法请参考 man tree

PS:可透过管道 | 及 more 来显示

如 tree /usr | more..

9、 如何检视档案类型

由于 FreeBSD 并没有像 dos 或 windows 般有扩展名的观念,因此要如何检查一个档案的类型呢?

用 file 吧..

语法: file <file_name>

详细用法请参考 man file

10、 重复使用先前使用过的指令

你可以使用以下的方法来重复使用先前使用过的指令:

例如,我们先用 history 显示先前输入的指令:

# history
.
..
...
10 clear
11 cd /usr/local
12 ls
13 ls etc
14 cd ~
15 clear

1. 用 up down 可用上下一个指令,或是 ctrl+p ctrl+n 亦然

2. 配合 ! 的用法,例如以下(ps: 在<...>内代表要输入的东东)

!!
# !! => 重复执行上个一个指令

!<编号>
# !11 => 执行 cd /usr/local

!<指令> 可输入部份字,但前面部份需符合
# !cl
执行 15 clear 指令

!<?指令?> 输入部份字符,部份吻合
# !?etc?
执行 13 ls etc

以上指令在 tcsh 及 bash 下皆可使用,如此是不是可帮你省下许多时间..

11、 如何将 man 的档案印出来..

man 是大家学习 FreeBSD 的最佳资料参考来源,但在显示器上看到底不是很方便,有没有方法转成一般的文件档案呢?

使用 col 这个指令吧..

例我们要将 ssh2 转成 ssh2.txt,则使用以下语法:

# man ssh2 | col -b > ssh2.txt

12、 为何查不到正确的 ports 资料..

在 /usr/ports/ 下有着几千个 ports 的安装资料,有时我们可使用以下方式来查相关的 ports..

以下都是在 /usr/ports/ 这个目录下执行..

1. 先将 ports 资料转换成一个文字文件,如 index.txt

# make print-index > index.txt

2. 使用 make search key="...." 来查

3. 将 ports 内容转换成 README.html

# make readmes

用以上方法,可很容易的查到相关的 ports 资料,但很奇怪的是,为何我更新一个 ports 的资料后(或 ports tree),为何会查不到,查到的仍然是旧的资料..

原来,在 /usr/ports/ 中有一个 INDEX 檔,以上的查询方式都是在这个 INDEX 档中查询,当你更新 ports 资料时,这个 INDEX 档并不会随之更新..

所以为了查询方便,我们需以手动的方式来做..

# make index

做完后,再更新 index.txt 及 README.html..

不过更新 INDEX 档需要一些时间,大约 12-30 分钟..(视计算机等级而定).

13、 用 dig 及 host 来取代 nslookup

一般我们用来检查网络是否有问题,大多是用以下三个指令..

nslookup
ping
traceroute

其中 nsllokup 是用来检查 dns 的相关设定, ping 用来检查自己和对方网络是否通顺,而 traceroute 则是用来检查从自己的计算机到对方的计算机所经过的线路状况..

不过以 nslookup 而言,个人觉得不是很实用,有时我们只是想单纯的查一下某台主机或是 MX 记录,那使用 nslookup 就有点噜嗦了..

在此介绍二个好用的指令 host 及 dig,这二个指令很类似,不过效率较 nslookup 高

# host -a <主机名称> 或 <ip>

=> 输入主机名称显示 dns 正向解析的部份,输入 ip 则是显示反向(ptr)

# dig <主机名称或ip> <any a mx soa txt.. 任选一项>

如要显示 MX 记录

# dig 主机名称 mx

个人是觉得比 nslookup 方便多了,你觉得呢.. ^.^

当然功能不只这些,详情请 man dig 或 host..

14、 加快你的开机速度..

严格说起来,FreeBSD 的开机速度算满快的,不过中间会有个 10 秒的延迟时间(以便让你进入 boot 的 command prompt mode),如果你嫌这10秒还是太慢了,那你可将时间?#123;短一些..

FreeBSD 激活时会先去参考 /boot/defaults/loader.conf 档的设定,然后再参考 /boot/loader.conf,一般我们都不去?#123;整 /boot/defaults/loader.conf 这个档,而直接?#123;整 /boot/loader.conf..

只要在 /boot/loader.conf 中加上以下这一行即可

autoboot_delay="秒数" 即可,如

autoboot_delay="7" 代表7秒

这样开机是不是更快了..

另外建议,有时间可参考一下 /boot/defaults/loader.conf 这个档案的设定,其中有许多实用的设定哦..

15、 忘了 root 密码

如果你忘了 root 的密码怎么办,这在 FreeBSD 中满好解决的,请照以下 steps 来处理..

1. 进入单人模式

开机后,当出现

Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [kernel] in 10 seconds...

按 space(或除了 enter 以外的键) 键则会进入 command prompt mode,同时出现一个 ok ..

这时请输入 boot -s 以进入单人模式

2. 选择 sh

进入单人模式后,系统会询问你要使用那个 sh,内定是 /bin/sh ,就使用这个吧,直接按 enter 跳过

3. 将所有的硬盘分割架起来

# mount -a

4. 更改密码

# passwd

长度要在 6 个以上,输入二次

5. 重新激活

# reboot


16、 有关 kernel 的激活..

kernel 对 unix-like 系统来说,是非常重要的一环,如果 kernel 损坏或编译出了问题,可能会导致严重的后果..

FreeBSD 一向以安全著称,在这方面有什么防护的措施呢?

FreeBSD 的 kernel 是放在 / 目录下,一般会有二个

kernel
kernel.GENERIC

如果你有编译过核心(kernel)的话,则原先的 kernel 会转换成 kernel.old,新的核心会变成 kernel,也就是在 / 下的 kernel 档案如下:

kernel => 新编译过的核心
kernel.GENERIC
kernel.old => 原先的核心

那 kernel.GENERIC 是什么呢,这个是系统安装时所装好的,一般都不会变动,即使编译过核心亦然,这个档案可说是救命核心,最好不要乱动,理由如下所言..

FreeBSD 激活时,会使用 kernel 这个核心,如果这个档案不存在,则会抓 kernel.old 这个档案..

如果这二个档案不幸都不在,那怎么办..这时则会进入 command prompt mode,你必需自行输入 kernel 的名称,如

boot <kernel 名称> 如

boot kernel.GENERIC

了解以上之后,在编译核心无法正常执行时,相信各位知道如何处理了..

17、 FreeBSD 在那激活程序..

一般 FreeBSD 激活后会依序执行以下位置的程序..

1. /etc/rc.conf 这个档案内的程序,如 sendmail、sshd .. 都是在此执行,另外要注意的是,在执行这个档案之前,会先参考 /etc/defaults/rc.conf 的设定

2. /usr/local/etc/rc.d 下的一些 .sh 檔,这些档案的权限都是被设定成 x ,如 apache samba .. 都是在此设定

3. /etc/rc.local 这里也可设定,如我要把 postfix 设定在此,只需在这个档案内加一行,如下

/use/local/sbin/postfix start &

加上 & ,就不会显示出讯息

4. 由 cron 所控制的一些档案,当时间到了,便会自动执行..

那心细的人可能会问, /etc/inetd.conf 内设定的呢?这些在第 1 项就执行了..

了解以上并时时注意是否有不明的程序在执行(可能是被人植入***程序),也是日常检视系统的重要工作..

18、 加快你的主机名称查询速度..

unix-like 系统,初期都是使用 hosts 这个设定文件来做主机的查询,因此有些程序在查主机名称时,都会参照这个设定档,像 sendmail 就是一个很好的例子..

系统内定第一个是会查 /etc/hosts 这个档案,因此如果里面设定有问题,则会影响到某些程序的执行..

典型的 hosts 档设定如下..以我本身的主机来说

127.0.0.1 localhost.cmlab.idv.tw localhost
61.219.230.5 cmlab.idv.tw cmlab
61.219.230.5 cmlab.idv.tw.

其中第一及第二行最后一个项目是 aliases 名称(主机别名),比如我们在主机

ping cmlab.idv.tw



ping cmlab

是同样的结果..

你可把一些常用的主机加到这个项目内,如有一台 mail.cmlab.idv.tw ,假设 IP 为 61.219.230.8

则在这个 hosts 中加入以下

61.219.230.8 mail.cmlab.idv.tw mail
61.219.230.8 mail.cmlab.idv.tw.

这样就行了..

另外如果有自行架设 dns server,请注意在 /etc/host.conf 这个档案,典型的档案如下:

# $FreeBSD: src/etc/host.conf,v 1.6 1999/08/27 23:23:41 peter Exp $
# First try the /etc/hosts file
hosts
# Now try the nameserver next.
bind
# If you have YP/NIS configured, uncomment the next line
# nis

由以上可以看得出来,在查询主机名称时的顺序,是先查 hosts 再查 bind 也就是 dns,你可视你的需要修改其顺序..

另外要注意的就是 /etc/resolv.conf 文件,这个是有关 dns 主机 search 的顺序,如以我的设定如下:

domain cmlab.idv.tw
nameserver 61.219.230.5
nameserver 168.95.1.1
nameserver 168.95.192.1

其中第一行是设定我的网域名称,第 2-4 行则是 dns 主机的设定,建议至少设二个以上,以免一个挂了,还有个备用的..

第2行是我的 dns 主机,3-4 行是 hinet 的 dns 主机..

了解以上并有正确的设定,是有助于主机的查询的及速度的提升..

19、 简单编辑你的文件档..

在 unix-like 中,标准的文字编辑器是 vi,不过 vi 对于初学者而言,并不是很容易上手..

而在 FreeBSD 中使用的是 ee ,这个文字编辑器,虽功能没 vi 这么强大,但使用简便..新手不妨初期时使用个编辑器..

其使用方式很简单,只要在 command line 下 ee 即可

# ee <要编辑的档案>
进入 ee 画面后,最上方是一些按键说明,如要取得相关的 ee 说明,可先按 ctrl+c 键,再输入 help,则会显示详细说明

有时可能只想在一个档案内加入一小部份的资料,那使用文字编辑器来处理,就显得没效率,其实我们可以利用 cat > [檔名]和 cat >> [檔名] 来做..

那这二个方式有何差异呢..

cat > [檔名] 时,如果档案不存在,则会自动产生一个档案;如档案存在则会将档案清空..

cat >> [檔名],档案不存在则自动建立此档,如存在则将所编辑的资料加在档案的最后..

举个例子,如我们要编辑 /etc/mail/access 这个是 sendmail 的 relay 设定档..

想在这个档案中加入 192.168.88.5 relay

则可用此方法(假设 access 档案已存在,故使用 cat >> .. 的方法) ..

# cat >> /etc/mail/access
192.168.88.5 RELAY
按 ctrl+d 存盘

如此则可将 192.168.88.5 relay 加到 access 的最后一行..

不过,建议大家,unix-like 的共通文字编辑器是 vi,有时间不妨好好的学一下 vi..

20、 FreeBSD 帐号及密码的注意事项

在架完 FreeBSD 后,再来就是新增人员(使用者)的资料了..

在设定帐号时,请注意以下事项:

1.其长度需在 1-16 个字符
2.使用英文小写字母、数字及 - _ 符号

在设定密码时,请注意以下事项

1. 密码可设可不设,但建议你一定要设
2. 长度最好在 6 个字以上,你知道据安全专家的说法,破解一个长度6及长度4密码,至少要多花 10 倍的时间
3. 请勿用你的生日、相关证照号码、电话..等资料,而使用大小写英文字母及混合特殊符号,如 ct!Home-12 就是一个相当不容易破解的密码
4. 长度最长我曾设到 16 位数(最大长度多少,有兴趣者可自行试试)

21、 有关系统的一些激活问题..

有时,会修改 FreeBSD 的一些设定,如一些网络参数、软件的 .conf 设定,或是 /etc/r.conf 檔,那么如何让设定值生效,是否一定要重新开机呢?

这可分为三方面来说..

1. 网络相关设定,如网络适配卡、hostname .. 等,只要执行以下指令就可以重新加载你的网络设定..

# sh /etc/netstart

netstart 是一个 script 档案,执行时会去参考 /etc/rc.network。因此只要执行这个指令就能够重新激活网络设定..

有兴趣者可参考一下 netstart 及 rc.network 这二个档的内容,研究看看到底做了些什么东东..

2. 修改了 rc.conf 中其它的设定

可参考以下三个 step 来做..

. 进入单人模式
# shutdown now

. 选择 sh,造内定值即可,即 /bin/sh

. 离开单人模式
# exit

这样就会重新激活系统了..

3. 软件的设定,如一些 *.conf 檔,像是修正了 apache sendmail .. 等

通常在 /etc/local/rc.d/ 这个目录中会有相关的 .sh 檔,直接执行就可以了,注意的是一般要加上参数,一般的参数有以下(视软件而定会有不同)..

start 激活
stop 停止
reload 或 restart 重新激活

第二种方法就是直接使用 killall,如我们要重新激活 inetd,可用以下方法:

# killall -1 inetd

或是

# killall -HUP inetd

这样就可以重新激活这个 daemon 了

22、 保护你的档案
在系统中,有许多档案或一些设定档是非常重要的,加上 FreeBSD (或是一般 unix-like)系统都没有类似 ms 的垃圾回收桶的功能,万一不幸删掉(或修改)某个重要的档案,可能会造成不小的困扰..

虽然,FreeBSD 对于档案的权限设定的非常严密,但有些时候,我们以 root 身份工作,仍会有此风险..

那要如何避免这种情形发生或是保护某些重要的档案呢?

我们可以用 chflags 来达成这个目的,顾名思义, chflags 是由二个字所组成,即 change 和 flags(档案的旗标)..

例如我们要保护 /etc/inetd.conf 这个档案,以免误删或被修改,则指令如下:

# chflags schg /etc/inetd.conf

这样就可以保护这些档案,如要显示这些档案的旗标(flag),可用 ls 来看..

# ls -lo /etc/inetd.conf => l 是小写的 L

-rw------- 1 root wheel schg 47 Mar 28 21:29 inetd.conf

要解除旗标设定,可用 unschg,也就是在 schg 前加 un ,如:

# chflags unschg /etc/inetd.conf

大部份我们进入主机都是以 root 身份执行,因此稍不小心,可能就..因此建议将一些重要的档案及设定档设定为 schg flags,以保护档案..

如 /bin、 /sbin、 /etc/.conf、 /usr/lcaol/etc/*.conf .. 这些档案最好都是定成 schg 旗标..

chflags 详细用法请参考 man chflags..

23、 谈谈软件的安装路径..

FreeBSD 对于档案目录的观念非常重,什么样的档案要放在那个目录都有规定,这也是有别于其它 unix-like 系统..

一般我们将软件安装分成二个部份,在这里来探讨一下软件到底都安装到那去了..

在安装软件时,通常会安装诸如 执行档、设定档、man file、doc 文件..

1. 安装系统时所安装的软件

执行档通常装在 /bin、/sbin、/usr/bin、/usr/sbin、/usr/libexec 下
设定文件通在在 /etc 目录下
man file 通常在 /usr/man 或 /usr/share/man
doc 文件通常在 /usr/share/doc 下

2. 经由 package 或 port 安装的软件

执行档通常装在 /usr/local/bin、/usr/local/sbin、/usr/local/libexec 下
设定文件通在在 /use/local/etc 目录下
man file 通常在 /usr/local/man ..
doc 文件通常在 /usr/share/doc 下

以上并不是绝对的(所以我用通常..^.^),因为有些特殊情况需视软件而定..

如此有时可能会造成些许困扰,因为如 ssh 、 bind .. 大多是在系统安统时就安装的,那如果升级新版时怎么办..

由于 FreeBSD 找寻执行档时会依照 $PATH 这个环境变量找寻,因为 /bin、/sbin、/usr/bin、/usr/sbin 比 /usr/local/bin 或 /usr/local/sbin 先,所以会先执行..也就是先抓到旧版的执行档..

因此在更新时要注意这种情况,以免更新了还是执行旧的程序..

那么如何看安时程序时的相关档案的安装路径呢?通常有以下方法

1. 看 port 的 pkg-plist 檔
2. 有时用 man [执行档名称] 可看到一些重要档案的位置
3. 看说明文件,通常在 /usr/local/share/doc 目录下

24、 如何在 FreeBSD 同一片网硌卡加一个 ip 地址

有的时候,需要在同一片网络卡上加 ip 以达到一些特殊的要求..

在 FreeBSD 这是非常简单的,假设原先网络卡的 ip 是 211.211.211.211,想加一个 211.211.211.212,使用的是 rl0 这片网络卡,则做法如下..

1. 在 /etc/rc.conf 加上这一行

ifconfig_rl0_alias0="inet 211.211.211.212 netmask 255.255.255.255"

其中的 alias0 就是加装的第一个 ip,如要设定多个可在此修正,如 alias1、alias2.. aliasN

2. 重新激活网络卡,执行 /etc/netstart

# /etc/netstart

25、 简单的加密你的资料
在实务上我们常需要将某些敏感的资料加密,一般我们可使用 pgp 或在这里所介绍的 crypt 来达到这个功能..

crypt 是透过 | 这个管道转换功能及密码设定来达成加密的功能,也就是说将你所设的密码当做加密产生的种子随机数..

先说明一下 crypt 的使用方法:

crypt [-s] [-k] [password]

一般 -s 及 -k 参数可不予理会,password 是加密或解密的密码

在这里假设我们先产生一个 test.txt 档,内容为 test,然后用 1234 这个密码加密

# cat > test.txt
test
按 ctrl+d 存盘

先看看 test.txt 内容

# more test.txt
test

将 test.txt 这个档案用 1234 这个密码加密,需配合管道 | 及转向符号使用,加密后的文件名称为 test2.txt

# cat test.txt | crypt 1234 > test2.txt

如此则会产生一个加密后的档案 test2.txt,另外密码可先不输入,按 enter 键后会显示 enter key: 让你输入密码

我们来看看加密后的档案内容,原先是 test 结果变成了:

# more test2.txt
e<A8>&<A7>h => 已经不是原来的 test

接着来将 test2.txt 解开,如下,假设解开后的档名为 test3.txt:

# cyrpt 1234 < test2.txt > test3.txt

以上的意思是

1234 加密时的密码
< test2.txt 将加密的档案转给 crypt 处理
> test3.txt 解密后的资料转向到 test3.txt

再显示 test3.txt 的内容是否和原来一样,即 test

# more test3.txt
test


PS:

1. 加密或解密时档名如和源文件一样,则会将原来的档案取代
2. 另有一个指令 enigma 和 crypt 用法完全一样

参考资料 man crypt

26、用 telnet 简测你的服务器(Server)有无在跑

有时你可以用 telnet 测试你的 Server 有无正常的 run
例如:我要查看 ftpd 有无在跑
可下指令:# telnet localhost 21
若跑出类似以下的讯息, 表示有在跑
--------------------------------
Trying 127.0.0.1...
Connected to localhost.ahkun.
Escape character is '^]'.
220-=(<*> )=-.:. (( Welcome to PureFTPd 1.0.11 )) .:.-=(<*> )=-
220-You are user number 1 of 50 allowed
220-Local time is now 18:52 and the load is 0.06. Server port: 21.
220 You will be disconnected after 15 minutes of inactivity.

若跑出以下的讯息, 表示没在跑
------------------------------------------------
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host

同理你也可以用:
telnet localhost 25 测 stmpd
telnet localhost 110 测 pop3d

结论:
正确来讲是用 telnet 测 port 啦~

27、 如何防止别人登录到你的计算机

有时,我们并不想让别人直接登入到我们的主机或是只想限定某些人可使用,如 telnet、ssh..

或者是开放了些服务,如 ftp、smtpd ..等,由于这些都必需在主机端建有帐号,因此防止不相干的人登入到你的主机是非常重要的,也是一个安全上的考量..

但一般限定的方式都是使用 ip 或是 domain 的方式,那么有无方法可解决这个问题呢?

答案是可从 /etc/login.access 来着手,这个档案就是限定 login 的..

一个典型的设定如下,例如我们想限定只有 root 及 使用者 john 可登入到主机(含local 及 remote):

-:ALL EXCEPT root john:ALL

可分为三个项目,每个项目间以 : 分隔,说明如下:

1. + 或 - 代表允许或禁止
2. 设定的使用者或群组,可用 ALL EXCEPT 来强化限定的范围

3. 限定的来源,如 ALL 代表全部、61.219.230. 、LOCAL、console、.bad.com ..等

适当的设定,可让你的系统更加的安全..

详细用法可 man login.access..


28、 一个 ./ 的技巧

众所周知,在 nix-like 中执行目前目录中的可执行文件时,必需加上 ./ 这二个符号,很多 unix-like 的初学者都会感觉较不习惯,因为在 dos 或 windows 的 dos 窗口中并不是如此..

其实在 unix-like 中如此设定是有其安全考量的,在使用指令或执行文件时,一般是建议使用完整的目录,例如要使用 ls,则如下:

# /bin/ls

当然,你直接输入 ls 亦可正确的执行,这是因为你所使用的 shell 中环境变量 $PATH 的因素..

你可键入 echo $PATH,来看目前 $PATH 的设定,当我们执行一个指令时,系统会依照这个环境变量来搜寻这个执行档并加以执行..

内定 shell 不会将目前目录 . 加到 $PATH 中,因此如果你想在目前目录执行这个目录下的执行文件而不想加上 ./ 时,可在你的 shell 中将 . 加入..

如一般在 FreeBSD 都是使用 tcsh,你可编辑个人 home 目录下的 .cshrc 檔 set path = ( ........ ,在此加入 . 即可..

记得重新退出 shell 再登录,以便让你的新设定生效.

29、在提示列秀出 [使用者]目前工作目录 (可以少打很多次pwd)

# cd /root
编辑 .cshrc

# set prompt="'hostname -s'# " ### 找到这一行并 mark 起来
set prompt = "[%n]%/# " ### 新增此行并存盘离开

# logout

login: root ....重新登入

ps.其它user id 是否可照办? 我还没试过哩..刚装freebsd而已

30、rm 是 DEL 一个档案
rm -r 是 DEL 整个目录

31、介绍一些一些有用的参数(注意大小写)..

%B 代表高亮度
%n 代表用者名称
%m 主机名称
%/ 目前的目录

一般我们可能比较在意以上几点,如我要管理好几台 FreeBSD 主机,那么以上几个参数就很重要了..

举个实例来说,如我想把我的 prompt 改成这样,而且要高亮度显示:

使用者名称@主机名称[目录名称]>

则 prompt 的设定应该是这样的..

set prompt = "%B%n@%m[%/]> "

注意 = 左右都要有一个空白,否则会出错,导致无法登入,另外如果要统一所有使用者的 prompt 的话,除了更改 /home/使用者/.cshrc 外,最好也在 /etc/csh.cshrc 中设定这一行,另外如要新增新用者也用这种提示,则请在 /usr/share/skel/dot.cshrc 中也加上(或改成)这一行,这是因为:

tcsh 在使用时会先参考 /etc/csh.cshrc 这个档案,再依 user 去抓其 home 目录下的 .cshrc,而设定 /usr/share/skel/dot.cshrc 是让你新使用者时,自动将其 prompt 设定成 set prompt = "%B%n@%m[%/]> "

这种设法,当你在管理多台主机及切换目录时,就不易搞错而发生一些惨剧




问:更新了rc.conf,如何生效?
答:cd /etc && sh rc

问:修改更新.cshrc(或者类似文件)之后如何不退出登录立即生效?
答:$ source ~/.cshrc

问:我新装了程序在 path (/usr/bin /usr/local/bin etc.,)路径中,如何不重新登录就能直接使用?
答:$ rehash

问:csh中如何快速在命令行中移动?
答:移动到行首:^a,行尾:^e,清除:^u

问:如何看一个文件而不需要先解压?
答:zcat

问:我总是工作到很晚而忘了睡觉的时间怎么办?
答:leave +hhmm(hh小时,mm分钟)

问:如何清屏?
答:clear

问:怎么看滚上去的字?
答:按scroll lock,然后上下键翻动(这个最经典,因为没有用过这类系统或者没有做过图形设计的人,几乎100%不知道这个键是干吗的)

技巧:
·迅速建立文件:touch filename
·敲错字滴滴滴的烦死了,还总被家里人发现而强制睡觉: set nobeep(tcsh)
 
 
柒:如何通过CVSup及时更新Ports Tree
同步方法对比
更新Ports Tree的方法有很多,例如匿名CVS、CVSup和CTM。
CVSup 是采用pull的方式来更新源码的。以CVSup为例,当用户(或cron)运行CVSup程序时,它会和远程的CVSupd服务器取得联系,然后更新文件。用户取回的更新文件是最新的,而且随时可以拿到这些文件。用户还可以限制更新动作,只更新自己感兴趣的某个文件或目录。更新动作由服务端根据用户的设定完成。
CTM有一个脚本文件专门用来辨别修改过的文件。这个脚本文件是由主CTM服务器来执行,每天比较几次,并把两次执行时间内修改过的文件加以压缩、编号,然后加以编码 (以可打印的ASCⅡ字符为主),最后以E-mail的方式寄出。当用户收到的时候,这些“CTM deltas”由ctm.rmail程序来处理。它可以自动解码和进行确认,并在用户的源代码上使用这些修改。如果用户不小心把部分程序清除掉了, CVSup会扫描出来,并自动为用户把不足的部分补齐。
更新Ports Tree
Ports Tree基本上是每天都在更新的,而且各种软件每天都有新的版本会推出,所以要及时更新Ports Tree。另外,一些Ports Tree有问题的地方也需要通过CVSup取得新的版本文件来修正。下面给出更新Ports Tree的方法。
如果用户系统中并没有安装Ports,那么请把光盘放入光驱中,用“/stand/sysinstall”命令,进入“Configure”中的“Distributions”,选择Ports来安装。具体更新操作如下:
一.)这种方式使用 sysinstall 手动安装Ports Collection。
   1.以 root 用户身份, 运行 sysinstall (对于 FreeBSD 5.2 之前的版本, 应该是 /stand/sysinstall),如下所示:
      # sysinstall
   2. 选择 Configure, 按 Enter。
   3. 选择 Distributions, 按 Enter。
   4. 选择 ports, 按 Space。
   5. 选择 Exit, 按 Enter。
   6. 选择您的安装介质,就像CDROM,FTP,等等
   7. 选择 Exit 并按 Enter。
   8. 按 X 键退出 sysinstall。

二.)先安装 CVSup,输入下面的命令。
先在#后输入cd /usr/ports/net/cvsup-without-gui/
再在#后输入make install clean
三.)通过下面的命令在/etc中新增一个make.conf (其实有一个sample在/etc/default中,但现在不用它)文件。
% touch /etc/make.conf
3.参照下面的内容编辑make.conf。
SUPHOST=ftp.freebsdchina.org
SUPFILE=        /usr/share/examples/cvsup/stable-supfile
PORTSSUPFILE=   /root/ports-supfile
DOCSUPFILE=     /usr/share/examples/cvsup/doc-supfile
MASTER_SITE_BACKUP?=\
[url]ftp://ftp.freebsd.org.cn/pub/FreeBSD/ports/distfiles/$[/url]{DIST_SUBDIR}/\
[url]ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/$[/url]{DIST_SUBDIR}/\
[url]ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/$[/url]{DIST_SUBDIR}/
4.接着从/usr/share/examples/cvsup中复制一份ports-supfile到/usr中。这是为了日后使用方便,且维持原有范例不变。
% cp /usr/share/examples/cvsup/ports-supfile /usr
5.编辑ports-supfile。
6.把*default host=CHANGE_THIS.FreeBSD.org改为*default host=freebsd.org。
7.把ports-all注释掉。
8.把下面需要的Ports组件打开(把#号去掉)。
ports-base 基本的工具。
ports-archivers 关于文件压缩及解压缩的程序。
ports-astro 与天文学相关的程序。
......
ports-X11-servers X-Window系统服务器。
ports-X11-toolkits 以X-Window系统为基础的开发工具。
ports-X11-wm X-Window系统的管理工具。
9.因为刚安装好cvsup-without-gui-16.1g.tgz,所以必须先输入下面的命令,重新载入环境配置文件,才能让程序路径生效。不然在运行时会提示找不到文件。
% source ~/.cshrc
10.最后用下面的命令更新Ports-Tree。
% cvsup -g -L 2 /usr/ports-supfile
只要看到如下的结果,就表示Ports Tree更新成功了。

……
Shutting down connection to server
Finished successfully
结论
其实,并不是每个系统非得一定要对Ports Tree进行更新。但是为了使系统更加稳定地运行,减少系统自身的安全性带来的危害,建议还是更新FreeBSD系统的Ports Tree。
 
 
捌:FreeBSD备忘录
FreeBSD备忘录

怎么更改bsd的ports网上升级的路径

修改/etc/make.conf,增加:
MASTER_SITE_BACKUP?= \
       [url]ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/distfiles/$[/url]{DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=   ${MASTER_SITE_BACKUP}

修改成你要的地址,我的是[url]ftp://ftp.cn.freebsd.org[/url]

Freebsd怎么查看系统硬件配置?

$ less /var/run/dmesg.boot

查找ports

cd /usr/ports/
make search name=ports名


01.查看网络流量

   a.systat -if 1 (1表示1s刷新屏幕一次)

   b.netstat 1

   # Traffic 流量 peak 峰值 average 平均值



02.查看硬盘信息

   diskinfo -vt /dev/ad0



03.查看核心信息

   vmstat 1



04.断电后系统无法启动

   a.启动到sing user模式

   b.fsck

   c.reboot



05.硬盘分区时-shift+F -->NO可以使用全部空间



06.ctrl+alt+backspace 杀掉xwindows



07.alt+F1...F8 或 printscreensysr循环切换控制台



08.shutdown now 切换到单用户模式

   shutdown -p now shutdown -hp now 关闭电源

   shutdown -r now reboot 重新启动机器



09.升级内核后无法启动

   a.重启机器到10秒读秒时按enter以外的任意键

   b.unload

   c.boot kernel.old 或其他可以启动的内核



10.挂载ntfs,fat32分区和u盘

   ntfs: mount_ntfs -C eucCN /dev/ad0s5 /mnt/d

   fat32:mount_msdos -L zh_CN.eucCN /dev/ad0s6 /mnt/e

   u盘: mount_msdos -L zh_CN.eucCN /dev/da0s1 /mnt/u



11.卸载分区

   umount /dev/ad0s5

   umount -f /dev/ad0s5 (强制卸载)



12.查看进程

   top   ps auxww ps -ef |grep xxx



13.查看硬盘详细分区信息&读写状况

   gstat



14.声卡

   vi /boot/defaults/loader.conf

   更改snd_ich_load="NO"->"YES" #intel ich

   检测声卡 kldstat 或 dmesg |grep pcm



15.ls -G 显示颜色



16.sysctl sysctl -a 查看变量



17.丢失root密码

   启动到单用户模式,执行 /sbin/mount -a,

   然后拥passwd更改密码



18.查找程序或文件

   whereis 程序名

   locate 文件名

   whatis xxx 要找东西但不知道它是什么

   grep bpf /usr/src/sys/i386/conf/GENERIC 在文件中找指定文本

   #只能对文本进行grep,如是命令,则

   command |grep text

   grep text filename



19.中文locale

   zh_CN.eucCN zh_CN.GBK zh_CN.GB18030 zh_CN.euc

   #语言代码_国家代码.字符编码

   #查看环境变量 locale



20.xmms,mplayer 乱码问题

   在用户目录下建立 .gtkrc.mine 文件.代码如下
   style "gtk-default-zh-cn"{
        fontset="-*-simsun-medium-r-normal--12-*-*-*-*-*-iso8859-1,
                 -*-simsun-medium-r-normal--12-*-*-*-*-*-gb2312.1980-0,*-r-*"
}
   class "GtkWidget" style "gtk-default-zh-cn"
#前提是安装 simsun 字体,可参照以下方法安装。
#拷贝 Windows系统下的 simsun.ttc 字体文件到 /usr/X11R6/lib/X11/fonts/TrueType/,没有的话创建。
   # mkfontdir /usr/X11R6/lib/X11/fonts/TrueType
   # fc-cache -fv



21.停止sendmail

   vi /etc/rc.conf 加入

   sendmail_enable="NONE"



22.you have mail

   mail 回车,输入1看第一封邮件...输入?看帮助



23.traceroute &ping的整合工具my traceroute /mtr

   /usr/ports/net/mtr

   使用: mtr [url]www.163.com[/url]



24.本地化设置,以系统默认的csh为例

   vi /etc/csh.cshrc 加入

   setenv LANG zh_CN.eucCN (语言设为中文)

   setenv LC_ALL zh_CN.eucCN (所有本地子集设为中文)

   setenv XMODIFIERS @im=fcitx (X下的中文输入法)

   set prompt = "%B%m<%/>"(个性化控制台%B颜色%m主机%/目录)

   set autolist (自动补齐扩展)

   set nobeep    (告诉应用程式避免发出哔哔声)

   set filec     (使档案名称在命令列被完成)

   alias ls        ls -FG (彩色化ls)



25.在/etc/fstab中挂载fat32分区

   /dev/ad0s5 /mnt/d msdos rw,-L=zh_CN.eucCN 2 2



26.使用gnome2的gdm做桌面管理器

   vi /etc/rc.conf 加入

   gdm_enable="YES"

   vi /root/.dmrc 更改Language=zh_CN.UTF8-->zh_CN.eucCN



27.远程连接windows终端

   rdesktop [-a 16 -f] server'IP[:port]



28.播放APE格式音乐

   /usr/ports/multimedia/xmms

   /usr/ports/audio/xmms-mac



29.看图

   /usr/ports/graphics/xnview



30.fcitx小企鹅输入法(有关步骤见24)

   /usr/ports/chineses/fcitx

   vi /root/.xinitrc 添加

   exec fcitx& 到最前一行



31.apache22+php5+mysql+postgresql+ZendOptimizer

   a,apache22:

     cd /usr/ports/www/apache22

     make install clean

   b,php5:

     cd /usr/ports/www/mod_php5

     make install clean (勿选debug,否则不能装ZendOptimizer)

   c,php5模块:

     cd /usr/ports/lang/php5-extesions

     make install [FORCE_PKG_REGISTER=yes] 强迫安装

     make clean

     (除预设项目还应选中CTYPE,EXIF,GD,ICONV,IMAP,PCRE,SESSION,ZLIB)

   d,cp /usr/local/etc/php.ini.recommended /usr/local/etc/php.ini

   e,ZendOptimizer

     cd /usr/ports/devel/ZendOptimizer

     make install clean

   f,mysql:

     cd /usr/ports/databases/mysql41-server

     make WITH_CHARSET=gbk WITH_XCHARSET=all SKIP_DNS_CHECK=yes install clean

     cd /usr/ports/databases/php5-mysql

     make install clean

   g,postgresql

     cd /usr/ports/databases/postgresql81-server

     make install clean

     cd /usr/ports/databases/php5-pqsql

     make install clean



32.怎样刷新环境变量值,而不用推出再登陆?

   a,比如要重新设置环境变量ABC的值为abcdef

     bash$ export ABC=abcdef

     csh% setenv ABC abcdef

   b,更新了PATH变量指定目录里可执行命令

     rehash

   c,更新配置文件

     比如你编辑了.cshrc等文件,就需要用source命令

     source .cshrc



33.磁盘空间使用情形    df 和 du

   指令df用来查看整个档案系统的使用情形,如果您需要知道某个目录的使用情形用指令du。

   df -h

   du -h /etc

   du -sh /etc

   -s 参数来省略指定目录下的子目录

   -h 表示使用GB、MB等易读的格式



34.检视软件间的关联

   cd /usr/ports/sysutils/pkg_tree

   make install clean

   之后我们就可以使用 pkg_tree | more 来看各个软件之间的关系了



35.使用 portupgrade 更新软件

   cd /usr/ports/sysutils/portupgrade

   make install clean

   如果您只想要升级某一个软件本身,而非所有相依的软件,只要使用 portupgrade "pkgname" 即可。

   如果您要升级所有和该软件相依的其它软件,则可以加上参数 -r。如果您要更新包含相依软件的相依软件,

   则可以使用参数 -R。另外,您可以使用参数 -m 来要求编译 (make) ports 时多传入一些参数,还可以

   使用参数 -f 要求就算版本一样也强制更新。portupgrade 在更新软件时,会保留您原本的设定档。例如,

   在更新 Apache 时,它会保留 httpd.conf 的设定。

   假设我们要更新的软件是 perl-5.8,我们可以使用下列指令来更新:

   # portupgrade -rf "perl-5.8.*" -m "ENABLE_SUIDPERL=yes"



36.ports安装失败提示

   stop in /usr/ports/lang/ruby18/work

   删除work目录下所有文件&文件夹再次安装即可.



37.ntop--网络监控软件

   cd /usr/ports/net/ntop

   make install clean

   vi /etc/rc.conf 加入

   ntop_enable="YES"

   在地址栏中输入[url]http://x.x.x.x:3000[/url] 即出来管理界面.



38.修改/etc/rc.conf不重启生效

   1.sh /etc/rc

   2./etc/netstart



39.freebsd启动的时候停到blanktime的解决办法

   可以试试 这个参数:blanktime="NO"

   etc/rc.conf 中把 default_router 注释掉

   #未验证!!!



40.Bsd 下的QQ

   eva不错,运行速度飞快。

   /usr/ports/net-im/eva



41.一次性把所有安装的ports删除掉

   a.pkg_delete -a

   b.安装pkg_cutleaves它会告诉你,哪些package没有人依赖,并让你决定要不要删除



42.pure-ftp安装

   cd /usr/ports/ftp/pure-ftpd/

   make WITH_LANG=simplified-chinese install clean

   [X] BANNER   Show pure-ftpd welcome upon session start

   cd /usr/local/etc/

   cp pure-ftpd.conf.sample pure-ftpd.conf

   vi /etc/rc.conf -->加入pureftpd_enable="YES"



43.开机自动校准时间

   vi /etc/rc.conf--->加入

   ntpdate_enable="YES"             # Run ntpdate to sync time on boot (or NO).

   ntpdate_flags="207.46.232.189"   # time.windows.com



44.用win2000的引导器启动FreeBSD

   我在笔记本上装了双系统,win2000 和freebsd,装完 freebsd后 系统自动设置如下:

   f1 dos

   f2 freebsd

   先起动到dos下,fdisk /mbr,再把FreeBSD光盘上的boot\boot1复制到c:\,再编辑c:\boot.ini

   加一行c:\boot1="FreeBsd"
45.安装mplayer
make WITH_GUI=yes WITH_LANG=zh_CN WITH_FREETYPE=yes WITHOUT_RUNTIME_CPUDETECTION=yes install clean
 
 
玖:FREEBSD升级及优化全攻略
前言
升级源码树
安装cvsup
升级系统源码树及ports
重新编译内核
优化编译环境
升级操作系统
升级配置文件
重新编译内核
重新启动服务器
优化FREEBSD
检查升级情况
打开防火墙
优化内核参数
安装防火墙
安装数据库MYSQL
安装mysql40-server和mysql40-client
安装phpmyadmin
安装FTP服务器
安装ftp软件(使用pure-ftpd/)
安装pureftpd_php_manager
安装APACHE服务器
安装apache13-modssl
安装PHP语言
安装php
安装ZendOptimizer
安装APACHE其它整合软件
安装mod_bandwidth
安装mod_fastcgi
安装mod_gzip
安装mod_limitipconn
安装mod_perl
安装mod_throttle
安装mod_watch
安装APACHE第三方软件
安装限制每个虚拟主机的并发数软件
安装防止ddos***的软件
其它需要安装的软件﹔
安装MRTG
安装net-snmp
安装mrtg
设置虚空间的mrtg和流量分析
安装BIND 9
安装bind9
安装邮件服务器
安装qmail邮件系统
安装WEBMIN和USERMIN
安装webmin
安装usermin
结束语
前言
FREEBSD 系统是一种非常 UNIX、非常 Free、非常 BSD -- UNIX 的操作系统,因为它过UNIX化,太过专业化了,教很多新手无从下手学习。我也是从几年前开始学习FREEBSD,并且在王波写的<FREEBSD使用大 全>指导下,正式使用FREEBSD的。在这段使用和管理过程中,自己也积累了不少文章和实战经验。为了让更多的朋友喜欢上FREEBSD,喜欢上 UNIX,我特地做了几次升级和优化实例,结合自己管理服务器空间的经验写出此文,希望在此抛砖引玉。
本文的目的是使新手可以根据此文章的步骤和方法,架设一台专业,高效,安全的FREEBSD出来,并且可以立即投入实际运用,故文章中对运用及命令的使用 多于理论化的知识点的描述,如果您不明白命令有何作用,建议您查查相关资料。
本文假设已经架设好或者新安装了一台FREEBSD系统主机。
本文中引用了很多FREEBSD官方站数据及网上数据,还有更多的是自己在实际工作中的经验,当然,里面的参数并不一定完全适合您,所以请您在使用时,尽 可能根据您的实际需要调整一些参数,使您的SERVER的性能完全的发挥出来。本文只是一个总的线索,如果我要拆开来一个一个详细解释,我想会花更多的篇 幅来写的,因为我忙着04年1月的自考,只写了实际中的运作情况,请各位朋友见谅。
升级源码树
安装cvsup
进入:/usr/ports/net/cvsup
make clean
make deinstall
make install
make clean
即可
升级系统源码树及ports
更新/usr/share/examples/cvsup目录下stand-cvsup和ports-cvsup文件,并执行cvsup –g –L2 standard-supfile和cvsup –g –L2 ports-cvsup两个文件,升级ports树﹔
重新编译内核
优化编译环境
更新/etc/make.conf文件,做适当的编译优化,我的CPU是Intel的:
CPUTYPE=i686
CFLAGS= -O3 -pipe
COPTFLAGS= -O3 -pipe
升级操作系统
进入/usr/src
执行make world
整个过程很久,需要2小时左右。
升级配置文件
执行mergemaster升级配置文件,在此过程中,需要按i以便系统执行升级﹔
重新编译内核
到/sys/i386/conf里面,cp GENERIC onlinecq,再vi onlinecq优化内核,注意加入下面的内容
#disable ctrl+alt+delete
options SC_DISABLE_REBOOT
#quota limit
options QUOTA
#ipfw support
options IPFIREWALL
options DUMMYNET
options HZ=3000
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPSTEALTH
options TCP_DROP_SYNFIN
options IPFIREWALL_DEFAULT_TO_ACCEPT
options ICMP_BANDLIM
options ACCEPT_FILTER_DATA
options ACCEPT_FILTER_HTTP
#ipfilter support
#options IPFILTER
#options IPFILTER_LOG
#options IPFILTER_DEFAULT_BLOCK
再执行:
/usr/sbin/config onlinecq
cd ../../compile/onlinecq
make depend
make
make install
重新启动服务器
到此为止,服务器操作系统及内核升级成功
reboot
优化FREEBSD
检查升级情况
使用ssh进入系统,使用uname –a 可以查到是否升级成功﹔
打开防火墙
更新rc.conf里面的设置,加上:
#enable_quotas="YES"
#check_quotas="YES"
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="/etc/ipfw.rules" #create it!
firewall_quiet="NO"
firewall_logging_enable="YES"
log_in_vain="NO"
tcp_drop_synfin="NO"
tcp_restrict_rst="YES"
icmp_drop_redirect="YES"
优化内核参数
修改系统内核参数,实现微调:vi /etc/sysctl.conf
kern.ipc.somaxconn=8192
kern.ipc.maxsockbuf=2097152
kern.maxfilesperproc=32768
kern.maxfiles=65536
kern.securelevel=-1
net.inet.tcp.sendspace=65536
net.inet.tcp.recvspace=32768
net.inet.udp.maxdgram=57344
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=0
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0
net.inet.icmp.icmplim=100
net.inet.tcp.always_keepalive=0
net.inet.tcp.delayed_ack=0
net.inet.tcp.log_in_vain=0
net.inet.udp.log_in_vain=0
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.local.stream.sendspace=65535
net.local.stream.recvspace=32768
net.inet.ip.fastforwarding=1
vfs.vmiodirenable=1
安装防火墙
防火墙在上面已经编译入了内核,并且在上面的rc.conf里面已经打开了,所以在此只要设置一下即可!
允许所有IP通过,免得把自己给挡在外面了。
ipfw add all from any to any
其它规则根据实际情况来做,如果您想系统每次启动都使用上一次的规则,可以把这些内容加到:
vi /etc/ipfw.rules
里面,语法规则同ipfw。
安装数据库MYSQL
安装mysql40-server和mysql40-client
进入/usr/ports/databases/mysql40-server
执行:
make clean
make deinstall
make WITH_OPENSSL=yes WITH_LINUXTHREADS=yes BUILD_OPTIMIZED=yes install
或者使用下面可参考的编译参数:BUILD_STATIC=yes
编译成静态执行版本
make clean
更改mysql的root密码:
mysqladmin –uroot –p password 123456
生成/etc/my.cnf,使用如下命令:
vi /etc/my.cnf
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
[mysqld]
skip-innodb
skip-locking
skip-networking
set-variable = port=3306
set-variable = socket=/tmp/mysql.sock
set-variable = back_log=50
set-variable = connect_timeout=3
set-variable = key_buffer=128M
set-variable = max_connections=1000
set-variable = max_allowed_packet=1M
set-variable = net_buffer_length=8K
set-variable = wait_timeout=3
set-variable = read_buffer_size=1M
set-variable = sort_buffer_size=1M
set-variable = table_cache=256
set-variable = myisam_sort_buffer_size=32M
set-variable = log_slow_queries=/var/log/log_slow_queries.log
#log-bin
server-id = 1
[mysqldump]
quick
set-variable = max_allowed_packet=16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[isamchk]
set-variable = key_buffer=20M
set-variable = sort_buffer=20M
set-variable = read_buffer=2M
set-variable = write_buffer=2M
[myisamchk]
set-variable = key_buffer=20M
set-variable = sort_buffer=20M
set-variable = read_buffer=2M
set-variable = write_buffer=2M
[mysqlhotcopy]
interactive-timeout
安装phpmyadmin
注意,此步骤需要在apache和php之后再执行
进入/usr/ports/databases/phpmyadmin
执行:
make clean
make deinstall
make install
make clean
新建立一个system的数据库备用。
安装FTP服务器
安装ftp软件(使用pure-ftpd/)
进入/usr/ports/ftp/pufe-ftpd
执行:
make clean
make deinstall
make WITH_MYSQL=1 install
或者使用下面可参考的编译参数:WITH_LANG=simplified-chinese
使用简体中文语言包
make clean
配置pure-ftpd,主要需要做以下的工作:
cp /usr/local/etc/pure-ftpd.conf.sample /usr/local/etc/pure-ftpd.conf
cp /usr/local/etc/pureftpd-mysql.conf.sample /usr/local/etc/pureftpd-mysql.conf
再修改/usr/local/etc/pure-ftpd.conf的如下部份为:
NoAnonymous yes
MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf
再修改/usr/local/etc/pureftpd-mysql.conf的如下部份为您的设定值:
# Mandatory : user to bind the server as.
MYSQLUser demo
# Mandatory : user password. You must have a password.
MYSQLPassword demo
# Mandatory : database to open.
MYSQLDatabase demo
再进入使用mysql –uroot –p123456 进入mysql的文本方式﹔
使用如下命令建立新表:
use system;
DROP TABLE IF EXISTS users;
CREATE TABLE users (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
安装pureftpd_php_manager
下载pureftpd_php_manager.zip
解压并放到指定的目录里面,比如:
/usr/local/www/data
chmod –R 755 /usr/local/www/data/pureftpd_php_manager
再加入一个普通用户和一个群组,以供ftp使用:
pw groupadd ftpusers
pw useradd ftpuser –g ftpusers –s /sbin/nologin
记住他们的uid和gid号,备用!
进入并编辑pureftp.config.php文件
更改里面的如下行:
$PUREFTP_CONFIG_FILE = '/usr/local/etc/pureftpd-mysql.conf';^M
$DefaultUser = "ftpuser"; # Default User Logon^M
$DefaultPass = ""; # Default User Password^M
$DefaultUid = "1002"; # Default User ID ( must be a re
al user acct )^M
$DefaultGid = "1001"; # Default Group ID ( must be a r
eal group acct )^M
$DefaultDir = "/home"; # Default User Dir ( use
/./ at the end to chroot )^M
$DefaultUL = "0"; # Default Upload Throttl
e ( 0 disables it )^M
$DefaultDL = "0"; # Default Download Throt
tle ( 0 disables it )^M
$Defaultip = "*"; # Default IP restriction
s ( * = any IP )^M
$DefaultQS = "200"; # Default Quota Size ( 0 disable
s it )^M
$Defaultcmt = ""; # Default Comment for us
er^M
^M
// UA^M
$DefaultQF = "0"; # Default Quota Files ( 0 disabl
安装APACHE服务器
安装apache13-modssl
进入/usr/ports/www/apache13-modssl
执行:
make clean
make deinstall
make WITH_APACHE_SUEXEC=yes APACHE_HARD_SERVER_LIMIT=1024 APACHE_PERF_TUNING=yes install
编译时带上suexec和优化。
Make clean
取消所有Options里面的Indexes,禁止浏览目录及文件。
设置KeepAlive Off
安装PHP语言
安装php
进入/usr/ports/www/mod_php4
执行:
make clean
make deinstall
make install
编译常用的选项即可,一定记得选择上mysql和gd。
Make clean
安装完成后,在/usr/local/etc/apache/httpd.conf里面,加入如下内容:
AddType application/x-httpd-php .php .php3 .php4 .phtml
AddType application/x-httpd-php-source .phps
替换DirectoryIndex细节为:
<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.wml index.cgi index.shtml index.jsp index.js index.jp index.php4 index.php3 index.php index.phtml default.htm default.html home.htm
</IfModule>
再cp php.ini-recommended /etc/php.ini
以及修改php.ini里面的参数
vi /etc/php.ini
修改下面两处为:
register_globals = On
magic_quotes_gpc = On
安装ZendOptimizer
先下载ZendOptimizer-2.1.0b-FreeBSD4.0-i386.tar.gz
再执行
tar zxvf ZendOptimizer-2.1.0b-FreeBSD4.0-i386.tar.gz
cd ZendOptimizer-2.1.0b-FreeBSD4.0-i386
sh setup
即可完成傻瓜式的安装。
注意:此时您的php.ini配置文件,一般会移到
/usr/loca/Zend/etc/php.ini
并且底部会增加以下几行:
[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-2.1.0
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-2.1.0
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
您可以根据需要,改变15为1023,来提升加速的等级。
安装APACHE其它整合软件
安装mod_bandwidth
进入/usr/ports/www/mod_bandwidth
执行:
make clean
make deinstall
make install
编译完成后,一定记得
vi /usr/local/etc/apache/httpd.conf
LoadModule bandwidth_module libexec/apache/mod_bandwidth.so
AddModule mod_bandwidth.c

make clean
语法及作用:
* BandWidthModule
该模块的开关,可以对每个Server进行配置
* BandWidthPulse
设定计时单位,MS(微秒),建议为:1000000 (1秒)
* BandWidth
可以针对特定来源的对象控制流,rate以字节为单位,但当rate为0时,为不限制流速。
例子:
BandWidth ecp.fr 0
BandWidth 138.195 0
BandWidth all 1024
* LargeFileLimit
当传送一个大于等于filesize KB大小的档时,设定一个最大流速(字节/秒),当rate
为0的时候,不限速。
例子:
LargeFileLimit 200 3072
LargeFileLimit 1024 2048
以上例子设定小于200KB的档将不会被限制流速,大小在200K到1024K之间的档将会被
限速3072 B/s,大于1024KB的文件将会被限速2048 B/s.
* MinBandWidth
设定每个连接传送数据的基本带宽占用,以Byte为单位。默认值:256 B/s。
当rate设定为0时,使用默认带宽限制。
安装mod_fastcgi
进入/usr/ports/www/mod_ fastcgi
执行:
make clean
make deinstall
make install
编译完成后,一定记得
vi /usr/local/etc/apache/httpd.conf
LoadModule fastcgi_module libexec/apache/mod_fastcgi.so
AddModule mod_fastcgi.c
AddHandler fastcgi-script fcgi fcgi fpl

make clean
安装mod_gzip
进入/usr/ports/www/mod_gzip
执行:
make clean
make deinstall
make install
编译完成后,一定记得
vi /usr/local/etc/apache/httpd.conf
LoadModule gzip_module libexec/apache/mod_gzip.so
AddModule mod_gzip.c make clean
安装mod_limitipconn
进入/usr/ports/www/mod_limitipconn
执行:
make clean
make deinstall
make install
编译完成后,一定记得
vi /usr/local/etc/apache/httpd.conf
LoadModule limitipconn_module libexec/apache/mod_limitipconn.so
AddModule mod_limitipconn.c
make clean
安装mod_perl
进入/usr/ports/www/mod_perl
执行:
make clean
make deinstall
make install
编译完成后,一定记得
vi /usr/local/etc/apache/httpd.conf
LoadModule perl_module libexec/apache/mod_perl.so
AddModule mod_perl.c
make clean
安装mod_throttle
进入/usr/ports/www/mod_throttle
执行:
make clean
make deinstall
make install
编译完成后,一定记得
vi /usr/local/etc/apache/httpd.conf
LoadModule throttle_module libexec/apache/mod_throttle.so
AddModule mod_throttle.c
make clean
安装mod_watch
进入/usr/ports/www/mod_watch
执行:
make clean
make deinstall
make install
编译完成后,一定记得
vi /usr/local/etc/apache/httpd.conf
LoadModule watch_module libexec/apache/mod_watch.so
AddModule mod_watch.c
make clean
安装APACHE第三方软件
安装限制每个虚拟主机的并发数软件
mod_vhost_limit
安装:
apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_vhost_limit.so
在 httpd.conf 加入:
LoadModule vhost_limit_module libexec/mod_vhost_limit.so
AddModule mod_vhost_limit.c
配置:
MaxClients 150
ExtendedStatus On
NameVirtualHost *
<VirtualHost *>
ServerName server1
DocumentRoot /some/where/1
MaxVhostClients 100
</VirtualHost>
<VirtualHost *>
ServerName server2
DocumentRoot /some/where/2
MaxVhostClients 30
</VirtualHost>
<VirtualHost *>
ServerName server3
DocumentRoot /some/where/3
</VirtualHost>
其中: server1 被限制为 100 个并发线程数。 server2 被限制为 30 个并发线程数。 server3 没有被限制。
注:需 mod_status 的 ExtendedStatus On 支持!!
如超出限制的并发数在客户端就会出现503错误:
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
--------------------------------------------------------------------------------
Apache/1.3.27 Server at server1 Port 80
在 error_log 中将会有类似以下的错误提示:
[Mon Jun 23 15:22:24 2003] [error] client access to server1 deferred, MaxVhostClients 100 exceeded
安装防止ddos***的软件
dosevasive1.8.tar.gz
安装方法:
tar zxvf mod_dosevasive.tar.gz
cd dosevasive/
/usr/local/apache/bin/apxs -i -c mod_dosevasive.c
vi /usr/local/apache/conf/httpd.conf
加入
LoadModule dosevasive_module libexec/mod_dosevasive.so
AddModule mod_dosevasive.c
<IfModule mod_dosevasive.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
其它需要安装的软件﹔
可选择安装的有:
CPU温度监控软件
CPU负载监控软件
封包流量监控软件
……
安装MRTG
安装net-snmp
进入/usr/ports/net/net-snmp
执行:
make clean
make deinstall
make install
make clean
安装mrtg
进入/usr/ports/net/mrtg
执行:
make clean
make deinstall
make install
make clean
设置虚空间的mrtg和流量分析
生成流量控制檔:
/usr/local/sbin/apache2mrtg.pl /usr/local/etc/apache/httpd.conf > /usr/local/etc/apache/mod_watch.cfg
修改此文件,并且加如下头部信息:
WorkDir:/usr/local/www/data/mrtg
Options[_]: growright,bits
#Language: gb2312
#Title[^]: Traffic Analysis for
PageTop[^]: <H1>Traffic Stats for OnlineCQ.COM User</H1><HR>
#PageTop[$]: Contact QQ: 151482576<HR>
PageFoot[^]: [url]WWW.OnlineCQ.COM[/url] MSN: [email]cqfanli@hotmail.com[/email] QQ:151482576
保证WorkDir目录可以被浏览器访问,并且目录存在!如果不是,您可以自己修改!
执行一下,看是否正确:
/usr/local/sbin/mrtg /usr/local/etc/apache/mod_watch.cfg
如果有错误,多执行几次即可!
再将此加入到排程里面,15分钟自动执行一次:
vi /etc/crontab
*/15 * * * * root /usr/local/bin/mrtg /usr/local/e
tc/apache/mod_watch.cfg
安装BIND 9
安装bind9
这是一套域名解析系统,可以让您的SERVER做DNS SERVER,非常不错的!
进入/usr/ports/dns/bind9
make clean
make deinstall
make install
make clean
然后再记得修改name.conf 等配置文件,具体的内容太复杂,建议看一下其它专门讲授这方面的书籍。
安装邮件服务器
安装qmail邮件系统
使用iceblood的安装包,傻瓜式的安装就可以了!注意第一次安装时,多看几遍它的说明,不要弄错了!
安装完成后,自己再加上qmailadmin,它可以让您在一台主机上面,开多个域名的企业邮局!
安装WEBMIN和USERMIN
安装webmin
先下载webmin最新版
再解压:
tar zxvf webmin-1.100.tar.gz
进入目录开始安装:
cd webmin-1.100
sh setup.sh
安装时使用它的默认设置即可,自己要设置好管理员密码,这一定要注意保密!
并且请设置为自动启动,以便以后可以通过此来管理。
安装完成后,可以通过如下方式访问:
[url]http://IP:10000/[/url]
注意,默认埠是10000
安装usermin
先下载usermin最新版
再解压:
tar zxvf usermin-1.030.tar.gz
进入目录开始安装:
cd usermin-1.030
sh setup.sh
安装时使用它的默认设置即可。
安装完成后,可以通过如下方式访问:
[url]http://IP:20000/[/url]
注意,默认埠是20000。
Usermin会自动和webmin整合的,使用webmin的管理员密码,并且可以在webmin里面启动它。
结束语
至此为止,一般可以实际运作的FREEBSD系统就建立起来了,您可以reboot一下,让最新的设置及软件生效。
如果在安装过程中出现错误,您可以先检查完错误,再接着安装下去。或者你可以选择你感兴趣的某些部份安装!
当然因为时间仓促,涉及到的知识太广,加上本人能力有限,其中错误在所难免,恳请各位读者提出来,大家共同提高,共同进步!
 
拾:FreeBSD使用技巧
  • 启动选项
    用指定的内核启动:
    boot kernel.GENERIC
    忘记root密码(开机boot -s进入单用户模式,5.x按4):
    mount -a; csh; passwd; exit; exit
    启动等待时间(/boot/loader.conf):
    autoboot_delay="2"
    单网卡绑定多个IP(/etc/rc.conf):
    ifconfig_rl0_alias0="inet 192.168.0.10 netmask 255.255.255.0"
    ifconfig_rl0_alias1="inet 192.168.0.20 netmask 255.255.255.0"
    停用sendmail(/etc/rc.conf):
    sendmail_enable="NONE"
    控制台鼠标,两键模拟三键粘贴(/etc/rc.conf):
    moused_enable="YES"
    moused_flags="-3"
  • 用户环境
    彩色ls(~/.cshrc):
    alias ls ls -GF
    命令提示符(~/.cshrc):
    set prompt = '%B[%n@%m]:%$PWD\n%b#'
    按TAB键显示文件(~/.cshrc):
    set autolist
    中文环境(~/.cshrc):
    setenv LANG zh_CN.eucCN
    setenv LC_ALL zh_CN.eucCN
  • 基本操作
    查看硬盘空间和节点使用率:
    df -h
    df -ih
    du -sh /dir
    du -sh /dir/*
    显示文件类型:
    file /dir/file.txt
    显示目录结构:
    #pkg_add -r tree; rehash
    tree -L <level> <dir>
    清空文件:
    true > /dir/file.txt
    保存man输出:
    man <command> | col -b > file.txt
    命令安装后马上生效:
    rehash
    执行历史命令:
    h             -> 查寻历史命令
    !<number>     -> 执行第n个历史命令
    !<pattern>    -> 匹配开头字符
    !?<pattern>? -> 匹配输入字符
    Console快捷键:
    ctrl+d -> 删除光标所在字符
    ctrl+w -> 删除光标所在字前面的字符
    ctrl+u -> bash:将光标前所有的字及字符删掉,tcsh:删除所有字
    ctrl+k -> 将光标后所有字符删掉
    ctrl+b -> 下个字符
    ctrl+f -> 前一个字符
    ctrl+m -> 和按下 enter 的结果一样
    ctrl+h -> 和按下 del 或 backspace 键一样
    del 或 backspace -> 删除前一个字符
  • 系统管理
    允许root使用密码登录(/etc/ssh/sshd_config):
    PermitRootLogin yes
    PasswordAuthentication yes
    创建用户时设置密码:
    echo <password> | pw useradd <username> -u <uid> -g <group> -m -d <userdir> -s /bin/csh -h 0
    增加man路径(/etc/manpath.config):
    OPTIONAL_MANPATH /dir/man
    重启服务:
    killall -HUP <process>
    重启网络:
    /etc/netstart
    查看硬件信息:
    #pkg_add -r dmidecode; rehash
    dmidecode
  • 系统监测
    进程:
    ps -aux
    网络:
    netstat -an
    netstat -r
    netstat -m
    netstat 1
    systat -if
    性能:
    top
    vmstat
    systat -vm
  • 系统安全
    禁止/允许修改文件:
    chflags schg *.conf
    ls -lo *.conf
    chflags noschg *.conf
    加密/解密文件(crypt/enigma/pgp):
    cat file1.txt | crypt <password> > file2.txt
    cyrpt <password> < file2.txt > file3.txt
    限制登录(/etc/login.access):
    -:ALL EXCEPT wheel shutdown sync:console
    -:wheel:ALL EXCEPT LOCAL .funbsd.net
    -:deny_user1 deny_user2 deny_user3:ALL
    +:allow_user1 allow_user2 allow_user3:ALL
    #-:ALL EXCEPT root oracle:ALL
关机命令:
halt -p和shutdown -p now .这两个命令可以直接关掉电源.

查看用户:
pw usershow –a

查看当前路径:

pwd
把FreeBSD所有软件升级到新版

命令:
portupgrade -arPP

portupgrade软件的路径:
/usr/ports/sysutils/portupgrade
Freebsd 下的 portupgrade 软件升级工具使用

portupgrade 是一个软件,用于快捷便利地升级软件

cd /usr/ports/sysutils/portupgrade
make install clean
安装上它

然后用cvsup更新ports树

然后运行

portupgrade -r pkg_name 升级单个软件和与其相关的
其中 pkg_name 是 pkg_info 中显示的名字

portupgrade -ar 就会自动更新全部了。
如果加上 P 参数,则先看是否有已经编译好的 pkg 下载,直接从 pkg 升级,省去自己编译。
下载站点可以通过修改 /usr/local/etc/pkgtools.conf 更改

portupgrade -arR 升级所有已经安装的软件,并且检查依赖关系


我的mysql 是4.1.7版本的,有bug,先用pkg_info查到mysql包的名字
然后portupgrade -r mysqlx.x.x
然后就全搞定了,mysql,apache都没有停止,升级完了后,它自动把mysql
shutdown了,需要手工重启一下。

修改用户密码

# passwd username
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值