FreeBSDのカーネル再構築
デフォルトのカーネルには必要のないものも含まれているのでメモリを占有したりして良いことはありません。カーネルの再構築をします。
まずカーネルのソースが有るか確認、無ければ /stand/sysinstallからConfigure -->
Distribution --> src --> DES以外のkernel srcでまずはソースをインストールします。
cd /usr/src/sys/i386/conf
cp GENERIC [自分でこれから作るカーネルの名前]
# # GENERIC -- Generic machine with WD/AHx/NCR/BTx family disks # machine "i386" cpu "I386_CPU" cpu "I486_CPU" cpu "I586_CPU" cpu "I686_CPU" # ★新しいカーネルの名前に置き換える。例・MYKERNEL ident MYKERNEL maxusers 32 options MATH_EMULATE #Support for x87 emulation options INET #InterNETworking options FFS #Berkeley Fast Filesystem options FFS_ROOT #FFS usable as root device [keep this!] options MFS #Memory Filesystem options MFS_ROOT #MFS usable as root device, "MFS" req'ed options NFS #Network Filesystem options NFS_ROOT #NFS usable as root device, "NFS" req'ed options MSDOSFS #MSDOS Filesystem options "CD9660" #ISO 9660 Filesystem options "CD9660_ROOT" #CD-ROM usable as root. "CD9660" req'ed options PROCFS #Process filesystem options "COMPAT_43" #Compatible with BSD 4.3 [KEEP THIS!] options SCSI_DELAY=15000 #Be pessimistic about Joe SCSI device options UCONSOLE #Allow users to grab the console options FAILSAFE #Be conservative options USERCONFIG #boot -c editor options VISUAL_USERCONFIG #visual boot -c editor options KTRACE #ktrace(1) syscall trace support options SYSVSHM #SYSV-style shared memory options SYSVMSG #SYSV-style message queues options SYSVSEM #SYSV-style semaphores # ★以下2行はipfw/natdを使う場合に付け加えておく。 options IPFIREWALL #natd options IPDIVERT #natd # ★カーネルのあるディスクを間違いなく。SCSIならsd0(da0)とか・・・ # ★ここを間違えると絶対起動しないカーネルが出来上がります。 config kernel root on wd0 # To make an SMP kernel, the next two are needed #options SMP # Symmetric MultiProcessor Kernel #options APIC_IO # Symmetric (APIC) I/O # Optionally these may need tweaked, (defaults shown): #options NCPU=2 # number of CPUs #options NBUS=4 # number of busses #options NAPIC=1 # number of IO APICs #options NINTR=24 # number of INTs controller isa0 controller pnp0 # PnP support for ISA controller eisa0 controller pci0 # Floppy drives controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 disk fd0 at fdc0 drive 0 # ★フロッピーディスクは普通1基だけなのでfd1はコメントアウトしておく。 # ★フロッピードライブが内場合は全てコメントアウトしても良いが緊急起動媒体 # ★は一つくらい残して置いた方が無難。 #disk fd1 at fdc0 drive 1 # IDE controller and disks # ★IDE HDDも必要なものだけ残しておく場合と緊急時に取りあえずつなげられる # ★ように残しておくと言うポリシーがある。私の場合は全部残しておく方針。 # ★wd0/wd1=プライマリ・マスタ/スレイブ wd2/wd3=セカンダリ・マスタ/スレイブ options "CMD640" # work around CMD640 chip deficiency controller wdc0 at isa? port "IO_WD1" bio irq 14 disk wd0 at wdc0 drive 0 disk wd1 at wdc0 drive 1 controller wdc1 at isa? port "IO_WD2" bio irq 15 disk wd2 at wdc1 drive 0 disk wd3 at wdc1 drive 1 # ATAPI devices options ATAPI #Enable ATAPI support for IDE bus options ATAPI_STATIC #Don't do it as an LKM device acd0 #IDE CD-ROM # ★IDE Floppyが無いのでコメントアウト #device wfd0 #IDE Floppy (e.g. LS-120) # SCSI Controllers # A single entry for any of these controllers (ncr, ahb, ahc) is # sufficient for any number of installed devices. # ★以下SCSIデバイスが無い場合は全部コメントアウト #controller ncr0 # NCR/Symbios Logic #controller ahb0 # EISA AHA1742 family #controller ahc0 # AHA2940 and onboard AIC7xxx devices #controller amd0 # AMD 53C974 (Teckram DC-390(T)) #controller isp0 # Qlogic family #controller dpt0 # DPT Smartcache - See LINT for options! #controller adv0 at isa? port ? cam irq ? #controller adw0 #controller bt0 at isa? port ? cam irq ? #controller aha0 at isa? port ? cam irq ? # SCSI peripherals # Only one of each of these is needed, they are dynamically allocated. #controller scbus0 # SCSI bus (required) #device da0 # Direct Access (disks) #device sa0 # Sequential Access (tape etc) #device cd0 # CD #device pass0 # Passthrough device (direct SCSI) # Proprietary or custom CD-ROM Interfaces #device wt0 at isa? port 0x300 bio irq 5 drq 1 #device mcd0 at isa? port 0x300 bio irq 10 #device matcd0 at isa? port 0x230 bio #device scd0 at isa? port 0x230 bio # atkbdc0 controls both the keyboard and the PS/2 mouse controller atkbdc0 at isa? port IO_KBD tty device atkbd0 at isa? tty irq 1 device psm0 at isa? tty irq 12 device vga0 at isa? port ? conflicts # splash screen/screen saver pseudo-device splash # syscons is the default console driver, resembling an SCO console device sc0 at isa? tty # Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver #device vt0 at isa? tty #options XSERVER # support for X server #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 isa? port IO_NPX irq 13 # Power management support (see LINT for more options) device apm0 at isa? disable flags 0x31 # Advanced Power Management # PCCARD (PCMCIA) support # ★PCMCIAデバイスが無いのでコメントアウト。(ノート等) #controller card0 #device pcic0 at card? #device pcic1 at card? # Serial (COM) ports # ★シリアルポート必要な数だけ残してコメントアウト device sio0 at isa? port "IO_COM1" flags 0x10 tty irq 4 device sio1 at isa? port "IO_COM2" tty irq 3 #device sio2 at isa? disable port "IO_COM3" tty irq 5 #device sio3 at isa? disable port "IO_COM4" tty irq 9 # Parallel port device ppc0 at isa? port? flags 0x40 net irq 7 controller ppbus0 # Parallel port bus (required) device lpt0 at ppbus? # Printer device plip0 at ppbus? # TCP/IP over parallel device ppi0 at ppbus? # Parallel port interface device #controller vpo0 at ppbus? # Requires scbus and da0 # PCI Ethernet NICs. # ★PCIのNICドライバ。必要なものだけ残して後はコメントアウト。 #device al0 # ADMtek AL981 (``Comet'') #device ax0 # ASIX AX88140A #device de0 # DEC/Intel DC21x4x (``Tulip'') #device fxp0 # Intel EtherExpress PRO/100B (82557, 82558) #device mx0 # Macronix 98713/98715/98725 (``PMAC'') #device pn0 # Lite-On 82c168/82c169 (``PNIC'') device rl0 # RealTek 8129/8139 #device sf0 # Adaptec AIC-6915 DuraLAN (``Starfire'') #device tl0 # Texas Instruments ThunderLAN #device tx0 # SMC 9432TX (83c170 ``EPIC'') #device vr0 # VIA Rhine, Rhine II #device vx0 # 3Com 3c590, 3c595 (``Vortex'') #device wb0 # Winbond W89C840F #device xl0 # 3Com 3c90x (``Boomerang'', ``Cyclone'') # ISA Ethernet NICs. # Order is important here due to intrusive probes, do *not* alphabetize # this list of network interfaces until the probes have been fixed. # Right now it appears that the ie0 must be probed before ep0. See # revision 1.20 of this file. # ★イマドキISAのNICを使う必要は無いので全部コメントアウト #device ed0 at isa? port 0x280 net irq 10 iomem 0xd8000 #device ie0 at isa? port 0x300 net irq 10 iomem 0xd0000 #device ep0 at isa? port 0x300 net irq 10 #device ex0 at isa? port? net irq? #device fe0 at isa? port 0x300 net irq ? #device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 #device lnc0 at isa? port 0x280 net irq 10 drq 0 #device cs0 at isa? port 0x300 net irq ? # requires PCCARD (PCMCIA) support to be activated #device xe0 at isa? port? net irq ? # PCCARD NIC drivers. # ze and zp take over the pcic and cannot coexist with generic pccard # support, nor the ed and ep drivers they replace. #device ze0 at isa? port 0x300 net irq 10 iomem 0xd8000 #device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 # 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 1 # Packet tunnel pseudo-device pty 16 # Pseudo-ttys (telnet etc) pseudo-device gzip # Exec gzipped a.out's # The `bpfilter' pseudo-device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! # The number of devices determines the maximum number of # simultaneous BPF clients programs runnable. pseudo-device bpfilter 1 #Berkeley packet filter
編集が終わったら
config [カーネルの名前]
cd ../../compile/ [カーネルの名前]
make depend ; make
make install
でおしまいです。
古いカーネルは/kernel.oldとして残っていますので、新しいカーネルでうまく起動しない場合は、起動時のBoot:と表示されたときにkernel.oldとすれば古いカーネルで起動します。