FreeBSDインストール直後のカーネルは、どんなマシンでもとりあえず動くように、基本的なデバイス全てを用意した物となっています。このままではメモリを食いますし、存在しないデバイスが無いと文句を言われて遅くなることもあるので、要らないデバイスはコメントアウトして読み込まないようにします。このために、カーネルの再構築を行います。
(以下の作業は、rootになって行います)。
カーネルの設定について記述したファイル(コンフィグファイルと呼びます)は、/sys/i386/confにある、GENERICというファイルです。まず、これを適当な名前でコピーします。ここではHAMITONとします。
HAMILTONはウチのマシンの名前ですので、各自好きな名前にして下さい。
# cd /sys/i386/conf # cp GENERIC HAMILTON # ee HAMILTON
先頭に#が付いている行は、コメント扱いになります。なので、
と読んで下さい。
machine i386 #cpu I386_CPU #cpu I486_CPU #cpu I586_CPU cpu I686_CPU ident HAMILTON maxusers 32 #makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
まずは、CPUのセクションです。コンフィグファイルでのCPUの名前との対応は、
となります。K6はどこでしょう。たぶん、i686だと思います。このLet's note CF-B5ERにはPentiumIIIが搭載されていますから、686以外のcpuはコメントアウトします。
その下にあるidentはコンフィグファイルの名前を示すので、コンフィグファイルの名前に書き換えて下さい。これ、忘れやすいので注意。
次に、Pentium以降のCPUは数値演算コプロセッサを内蔵していますから、下の MATH_EMULATE をコメントアウトします。それからしばらくは、デフォルトのままにしておきます。
#options MATH_EMULATE #Support for x87 emulation options INET #InterNETworking options INET6 #IPv6 communications protocols options FFS #Berkeley Fast Filesystem options FFS_ROOT #FFS usable as root device [keep this!] options SOFTUPDATES #Enable FFS soft updates support options MFS #Memory Filesystem options MD_ROOT #MD is a potential root device options NFS #Network Filesystem options NFS_ROOT #NFS usable as root device, NFS required options MSDOSFS #MSDOS Filesystem options CD9660 #ISO 9660 Filesystem options CD9660_ROOT #CD-ROM usable as root, CD9660 required options PROCFS #Process filesystem options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!] options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI options UCONSOLE #Allow users to grab the console options USERCONFIG #boot -c editor options VISUAL_USERCONFIG #visual boot -c editor options KTRACE #ktrace(1) support options SYSVSHM #SYSV-style shared memory options SYSVMSG #SYSV-style message queues options SYSVSEM #SYSV-style semaphores options P1003_1B #Posix P1003_1B real-time extensions options _KPOSIX_PRIORITY_SCHEDULING options ICMP_BANDLIM #Rate limit bad replies options KBD_INSTALL_CDEV # install a CDEV entry in /dev # To make an SMP kernel, the next two are needed #options SMP # Symmetric MultiProcessor Kernel #options APIC_IO # Symmetric (APIC) I/O device isa device eisa device pci
フロッピードライブは1基なのでfd1をコメントアウトします。
# Floppy drives device fdc0 at isa? port IO_FD1 irq 6 drq 2 device fd0 at fdc0 drive 0 #device fd1 at fdc0 drive 1
ATAPI関連は、ATA diskのみ残しておきます(内蔵HDDはATAPIです)。
# ATA and ATAPI devices device ata0 at isa? port IO_WD1 irq 14 device ata1 at isa? port IO_WD2 irq 15 device ata device atadisk # ATA disk drives #device atapicd # ATAPI CDROM drives #device atapifd # ATAPI floppy drives #device atapist # ATAPI tape drives options ATA_STATIC_ID #Static device numbering #options ATA_ENABLE_ATAPI_DMA #Enable DMA on ATAPI devices
SCSI機器やRAIDは使わないので、全てコメントアウトします。
# SCSI Controllers #device ahb # EISA AHA1742 family #device ahc # AHA2940 and onboard AIC7xxx devices #device amd # AMD 53C974 (Teckram DC-390(T)) #device isp # Qlogic family #device ncr # NCR/Symbios Logic #device sym # NCR/Symbios Logic (newer chipsets) #options SYM_SETUP_LP_PROBE_MAP=0x40 # Allow ncr to attach legacy NCR devices when # both sym and ncr are configured #device adv0 at isa? #device adw #device bt0 at isa? #device aha0 at isa? #device aic0 at isa? #device ncv # NCR 53C500 #device nsp # Workbit Ninja SCSI-3 #device stg # TMC 18C30/18C50 # SCSI peripherals #device scbus # SCSI bus (required) #device da # Direct Access (disks) #device sa # Sequential Access (tape etc) #device cd # CD #device pass # Passthrough device (direct SCSI access) # RAID controllers interfaced to the SCSI subsystem #device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID #device dpt # DPT Smartcache - See LINT for options! #device mly # Mylex AcceleRAID/eXtremeRAID # RAID controllers #device ida # Compaq Smart RAID #device amr # AMI MegaRAID #device mlx # Mylex DAC960 family #device twe # 3ware Escalade
この辺からしばらくは良く分からないので(ぉ、そのままにしてあります。
# atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc0 at isa? port IO_KBD device atkbd0 at atkbdc? irq 1 flags 0x1 device psm0 at atkbdc? irq 12 device vga0 at isa? # splash screen/screen saver pseudo-device splash # syscons is the default console driver, resembling an SCO console device sc0 at isa? flags 0x100 # Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver #device vt0 at isa? #options XSERVER # support for X server on a vt console #options FAT_CURSOR # start with block cursor # If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines #options PCVT_SCANSET=2 # IBM keyboards are non-std # Floating point support - do not disable. device npx0 at nexus? port IO_NPX irq 13 # Power management support (see LINT for more options) device apm0 at nexus? disable flags 0x20 # Advanced Power Management
PCCARDは使わないことにしたので、コメントアウトしてしまいます。
# PCCARD (PCMCIA) support #device card #device pcic0 at isa? irq 0 port 0x3e0 iomem 0xd0000 #device pcic1 at isa? irq 0 port 0x3e2 iomem 0xd4000 disable
COMポートは2つと、内蔵モデムがCOM3になります。内蔵モデムはWinmodemなので使えないようですが、サポートされる日を夢見て有効にしてあります。
パラレルポートはデフォルトの設定のままにしてあります。
# Serial (COM) ports device sio0 at isa? port IO_COM1 flags 0x10 irq 4 device sio1 at isa? port IO_COM2 irq 3 device sio2 at isa? disable port IO_COM3 irq 5 #device sio3 at isa? disable port IO_COM4 irq 9 # Parallel port device ppc0 at isa? irq 7 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
Let's note CF-B5ER内蔵のNICはIntel 8255x系の物ですので、fxpを使ってそれ以外は全てコメントアウトします。
# PCI Ethernet NICs. #device de # DEC/Intel DC21x4x (``Tulip'') device fxp # Intel EtherExpress PRO/100B (82557, 82558) #device tx # SMC 9432TX (83c170 ``EPIC'') #device vx # 3Com 3c590, 3c595 (``Vortex'') #device wx # Intel Gigabit Ethernet Card (``Wiseman'') # 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 dc # DEC/Intel 21143 and various workalikes #device pcn # AMD Am79C79x PCI 10/100 NICs #device rl # RealTek 8129/8139 #device sf # Adaptec AIC-6915 (``Starfire'') #device sis # Silicon Integrated Systems SiS 900/SiS 7016 #device ste # Sundance ST201 (D-Link DFE-550TX) #device tl # Texas Instruments ThunderLAN #device vr # VIA Rhine, Rhine II #device wb # Winbond W89C840F #device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'') # ISA Ethernet NICs. #device ed0 at isa? port 0x280 irq 10 iomem 0xd8000 #device ex #device ep #device fe0 at isa? port 0x300 # WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really # exists only as a PCMCIA device, so there is no ISA attatement needed # and resources will always be dynamically assigned by the pccard code. #device wi # Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will # work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP # mode (the factory default). If you set the switches on your ISA # card for a manually chosen I/O address and IRQ, you must specify # those paremeters here. #device an # Xircom Ethernet #device xe # The probe order of these is presently determined by i386/isa/isa_compat.c. #device ie0 at isa? port 0x300 irq 10 iomem 0xd0000 #device le0 at isa? port 0x300 irq 5 iomem 0xd0000 #device lnc0 at isa? port 0x280 irq 10 drq 0 #device cs0 at isa? port 0x300 #device sn0 at isa? port 0x300 irq 10
次がPseudoデバイス関連です。あまりこの辺も詳しくない(サッパリワカラン)ので、そのままにしてあります。
# Pseudo devices - the number indicates how many units to allocated. pseudo-device loop # Network loopback pseudo-device ether # Ethernet support pseudo-device sl 1 # Kernel SLIP pseudo-device ppp 1 # Kernel PPP pseudo-device tun # Packet tunnel. pseudo-device pty # Pseudo-ttys (telnet etc) pseudo-device md # Memory "disks" pseudo-device gif 4 # IPv6 and IPv4 tunneling pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation) # The `bpf' pseudo-device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! pseudo-device bpf #Berkeley packet filter
最後がUSB関連です。私はUSB機器はテンキー程度しか使わないと思うので、ほとんどコメントアウトしています。
# USB support device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device usb # USB Bus (required) 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 uscanner # Scanners # USB Ethernet, requires mii #device aue # ADMtek USB ethernet #device cue # CATC USB ethernet #device kue # Kawasaki LSI USB ethernet
コンフィグファイルの書き換えが終わったら、それを元にカーネルを再構築します。以下のコマンドを入力して下さい。
# config HAMILTON # cd ../../compile/HAMILTON # make depend # make # make install
このうち、makeには時間がかかります。CF-B5ERでは7分ほどかかりました。(が、これはムチャクチャ早い方です。昔は一晩かかったそうです)。
カーネルの再構築が終わったら、rc.confファイルの設定をします。本によっては /etc/rc.conf と書かれているかもしれませんが、現在は /etc/defaults/rc.conf になっています。
とりあえず家庭内LANに繋ぐことだけが目的だったので、書き換えた行は下の2行だけです。
hostname="Hamilton" ifconfig_fxp0="inet 192.168.0.10 netmask 255.255.255.0"
hostnameは中身が空になってますので、外部ネットワークに繋がない限り、好きな物を入れてOKです。
次のifconfig_fxp0は、
ifconfig_lo0="inet 127.0.0.1 netmask 0xffffffff"
の下に加えて下さい。
これで、TCP/IPなネットワークに参加できるようになるはずです。pingなぞを打って確かめてみて下さい。