发信人: neal()
整理人: (1999-04-22 02:51:29), 站内信件
|
自己编译一个 kernel 是很重要的, 安装时附的 kernel 没有特殊功能 又含有一些不必要的 device 多占记忆体, boot 时还要 -c. 在 BSD 传统是有一个 kernel config file, 纪录一些设定, 编辑好後 再用 config 来产生编译环境再 make. 1. 首先, 你要取得 kernel source, 有安装 sourec packages 的人此 步可以略过, 不过一般人都不知道要装的. 使用 ftp 的方法..... 1) ftp ftp.edu.tw:/pub/FreeBSD/2.1.0-RELEASE/src/ssys.* 2) mkdir /usr/src/sys; cd /; ln -s /usr/src/sys . 3) cd /; cat /tmp/ssys.* | gunzip | tar xvf - 2. 编辑你自己的 kernel config 档, 此档会影响你的 kernel 功能, 不可乱编一齐, 通常你可以用 /sys/i386/conf/GENERIC 当做□例, 你可以看看 /sys/i386/conf/LINT, 里面有详细的说明, 不过不要 拿 LINT 来编译. 本文後附了一个□例, 你可以存下来改改做为你的第一个 kernel config file. 通常我们使用 hostname 的大写做为档名, 如 CCSUN1 等等, 不过 用啥名字都无所谓. 3. 当你编好了以後, 放在 /sys/i386/conf 下, 再 cd /sys/i386/conf; config CCSUN1 4. 接下来就是要编译它罗.. cd /sys/compile/CCSUN1, make depend all install 它会把 /kernel 备份成 /kernel.old, 在把新 kernel 拷背成 /kernel 5. sync; reboot 并且祈祷它能动并如你所愿. 6. 如果失败的话, 你可以用旧的 kernel.old 开机, 在 boot: 时键入 "/kernel.old -c". 如果连旧的 kernel 都不行了, 就用 "/kernel.GENERIC -c" ======== a kernel config sample ======== # # GENERIC -- Generic machine with WD/AHx/NCR/BTx family disks # # GENERIC,v 1.20 1994/11/18 19:10:25 jkh Exp # #@ 永远是 i386 machine "i386" #@ CPU 种类 #cpu "I386_CPU" cpu "I486_CPU" #cpu "I586_CPU" #cpu "I686_CPU" #@ 只是个识别字, 没有意义 ident GENERIC #@ 这并"不是"使用者人数上限, 而是定义一些系统的结构应该留多大的空间,通常 #@ 打个 16 或 32 就够了, 除非你开站, 那就用 64 吧 #@ 请注意这个值永远不要大於你的记忆体数目 maxusers 32 #@ 一个 user 可以执行的 process 数上限 options CHILD_MAX=128 #@ 一个 user 可以开启的档案数上限 options OPEN_MAX=128 #@ 打开 kernel debugger, 一般人用不到吧 (debug kernel 用) #options DDB #@ 允许 system-call tracing (详情见 ktrace, kdump), useful to programmer #options KTRACE #kernel tracing #@ 没有 FPU (SX) 的苦主用的, 用 DX 的人就不用了 #options MATH_EMULATE #Support for x87 emulation #@ 超过 64MB 记忆体时请指定,单位是 K。例如 128MB RAM: #options "MAXMEM=(128*1024)" #@ 支援 networking, 一定要有 options INET #InterNETworking #@ IPX 相关 protocol #options IPX #IPX/SPX communications protocols #options IPXIP #IPX in IP encapsulation (not available #options IPTUNNEL #IP in IPX encapsulation (not available #options IPXPRINTFS=0 #IPX/SPX Console Debugging Information #options IPX_ERRPRINTFS=0 #IPX/SPX Console Debugging Information #@ 档案系统支援 #@ 只有 UFS 是必备的, 其他的可以不必, 要用时 kernel 会用 LKM 载入 options FFS #Berkeley Fast Filesystem #options NFS #Network Filesystem ##options NFS_NOSERVER #Disable the NFS-server code. #options MSDOSFS #MSDOS Filesystem #options "CD9660" #ISO 9660 Filesystem #options PROCFS #Process filesystem #options KERNFS #Kernel filesystem #options NQNFS #Enable NQNFS lease checking #options FDESC #File descriptor filesystem #options LFS #Log filesystem #options MFS #Memory File System #options NULLFS #NULL filesystem #options PORTAL #Portal filesystem #options UMAPFS #UID map filesystem #options UNION #Union filesystem #options DEVFS #devices filesystem #options "EXT2FS" #ext2fs, only in 2.2-CURRENT #@ 4.3BSD 相容, 这是必要的 options "COMPAT_43" #Compatible with BSD 4.3 #@ 执行 Linux 的执行档,就算你利用 LKM 载入,你还是需要这个参数 #@ 你可以修改 /etc/sysconfig 中的 linux=YES,或是执行 /usr/bin/linux #@ 你必须安装 packages 中的 linux_lib #options "COMPAT_LINUX" #Linux Emulator #@ SCO binary emulator #options "IBCS2" #@ 一开机时 SCSI 卡会先等 device 几秒, 对於一些比较慢的 SCSI device, #@ 如 CDROM 而言是须要的, 最小值是 2, 选择适合你的值就好了 options "SCSI_DELAY=10" #Be pessimistic about Joe SCSI device #@ 允许使用者截取 console message,对於 xconsole 之类的程式是必要的 options UCONSOLE #Unix console #@ Virtual console 数目的上限, Alt-F1 到 Alt-F12 等等, 只是定义上限而 已 #@ 真正能用的 virtual console 必须看 /etc/ttys 定义 vty 的数目 #@ 本值内定是 16 options "MAXCONS=8" #Max number for virtual console #@ 给 WINE (MS-Windows Emulator) 用的 options USER_LDT #For WINE, MS-Windows Emulator #@ 使用 QUOTA options QUOTA #For quotas #@ SYSV IPC/SHM (BBS 跟 X-window 及 COMPAT_LINUX 须要用), 这是必要的 options SYSVMSG,SYSVSEM,SYSVSHM #For SYSV-IPC #@ LKM 的载入器, 这是必要的(在 2.1.5R 以後已经废除,成为内定参数) options LKM #Loadable kernel module loader #@ 如果你用 ISA 的 SCSI 卡, 又有大於 16MB 的记忆体, 必须打开此项, 否则无 法 #@ 使用 >16MB 记忆体. 如果你是用 EISA/VL/PCI 的 SCSI 卡就不须要了 #@ 打开它会减低一点点速度, 没事不要开 (用 IDE 的当然不用了) #options BOUNCE_BUFFERS #include support for DMA bounceb uffers #@ 要用 IP-Firewall 才须要,你可以用 LKM 载入 #options IPFIREWALL #Firewall code #options IPFIREWALL_VERBOSE #Print information about droppe packets #options IPACCT #Used with ipfirewall #@ 要用 IP-Firewall 或要当 router 才要 #@ 在 2.2-960323-SNAP 後已废除, 以 sysctl 打开 (见 /etc/sysconfig) #options GATEWAY #Internetwork gateway #@ Multicast routing, 做 Multicast router 用 #options MROUTING # Multicast routing #@ 允许 swap device 的数目 (内定 20) #options NSWAPDEV=20 #@ 指定 root partition 在那个硬碟上 config kernel root on wd0 dumps on wd0 #@ 使用 ISA bus controller isa0 #@ 使用 EISA bus #controller eisa0 #@ 使用 PCI bus controller pci0 #@ 软碟控制卡 controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr disk fd0 at fdc0 drive 0 disk fd1 at fdc0 drive 1 #@ IDE 硬碟控制卡 controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr disk wd0 at wdc0 drive 0 disk wd1 at wdc0 drive 1 #@ 2nd IDE 硬碟控制卡, 四台 IDE 硬碟用 #controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr #disk wd2 at wdc1 drive 0 #disk wd3 at wdc1 drive 1 #@ IDE(ATAPI 规格) 光碟机的 Device #options ATAPI #Enable ATAPI support for IDE bus #options ATAPI_STATIC #device wcd0 #IDE CD-ROM #@ SCSI 控制卡, 请从 /sys/i386/conf/LINT 中读取详细说明 #controller ahc0 #controller ncr0 #controller bt0 at isa? port "IO_BT0" bio irq ? vector btintr #controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr #controller ahc1 at isa? bio irq ? vector ahcintr #controller ahb0 at isa? bio irq ? vector ahbintr #controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr #controller aic0 at isa? port 0x340 bio irq 11 vector aicintr #controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr #controller nca1 at isa? port 0x350 bio irq 5 vector ncaintr #controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector sean tr #@ SCSI bus, 使用 SCSI 必备的 #controller scbus0 #@ SCSI HD #device sd0 #Only need one of these, the code dynamically grows #@ SCSI CDROM #device cd0 #Only need one of these, the code dynamically grows #@ SCSI tape #device st0 #Only need one of these, the code dynamically grows #@ SCSI optical disk (MO) #device od0 #Only need one of these, the code dynamically grows #@ SCSI media changers (Juke-Box) #device ch0 #Only need one of these, the code dynamically grows #------------------ AT-BUS 介面的光碟机 (非 ATAPI) --------------- #@ Mitsumi CDROM #controller mcd0 at isa? port 0x300 bio irq 10 vector mcdintr #@ SONY CDROM #controller scd0 at isa? port 0x230 bio #@ Panasonic CDROM #controller matcd0 at isa? port ? #@ QIC tape #device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr #@ console 萤幕驱动程式, 这是必备的 device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr #@ 呼叫 FPU 的机制, 无论有无 FPU 都要有, 都是必要的 device npx0 at isa? port "IO_NPX" irq 13 vector npxintr #@ COM1 到 COM4 device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr #device sio2 at isa? port "IO_COM3" tty irq 5 vector siointr #device sio3 at isa? port "IO_COM4" tty irq 9 vector siointr #@ Joystick #device joy0 at isa? port "IO_GAME" #@ 如果你有 Logitech or ATI InPort bus mouse 的卡, 就要将此打开 #@ 请注意一般人使用的是 serial mouse 不是 bus mouse #device mse0 at isa? port 0x23c tty irq 5 vector ms #@ 给 PS/2 mouse 用的 #device psm0 at isa? port ``IO_KBD'' conflicts tty irq 12 vector psmintr #@ 印表机 device lpt0 at isa? port? tty irq 7 vector lptintr #device lpt1 at isa? port? tty #device lpt2 at isa? port? tty #@ 网路卡, 读读 /sys/i386/conf/LINT #device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr #device ed1 at isa? port 0x300 net irq 5 iomem 0xd8000 vector edintr #device eg0 at isa? port 0x310 net irq 5 vector egintr #device ep0 at isa? port 0x300 net irq 10 vector epintr #device ie0 at isa? port 0x360 net irq 7 iomem 0xd0000 vector ieintr #device ix0 at isa? port 0x300 net irq 10 iomem 0xd0000 iosiz 32768 vector ixinr #device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr #device lnc0 at isa? port 0x280 net irq 10 drq 0 vector lncintr #device lnc1 at isa? port 0x300 net irq 10 drq 0 vector lncintr #device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr #device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr #device de0 #device vx0 #device fpa0 #@ SB16 音效卡, 其他的音效卡读读 /sys/i386/conf/LINT #controller snd0 #device sb0 at isa? port 0x220 irq 5 conflicts drq 1 vector sbintr #device sbxvi0 at isa? drq 5 #device sbmidi0 at isa? port 0x330 #device opl0 at isa? port 0x388 #@ SB32/AWE32/AWE64 音效卡, 其他的音效卡读读 /sys/i386/conf/LINT #controller snd0 #device sb0 at isa? port 0x220 irq 5 conflicts drq 1 vector sbintr #device sbxvi0 at isa? drq 5 #device sbmidi0 at isa? port 0x330 #device opl0 at isa? port 0x388 #device awe0 at isa? port 0x620 #@ PC Speaker Audio (用 PC Speaker 模拟音效卡) #device pca0 at isa? port IO_TIMER1 tty #@ loopback device, 这是必备的 pseudo-device loop #@ 使用 ethernet, 这是必备的 pseudo-device ether #@ Berkerley Packet Filter, tcpdump 须要用, 这是必备的 pseudo-device bpfilter 4 #@ syslogd 须要, 这是必备的 pseudo-device log #@ 使用者 tty 上限, 限制最大 login 人数, 预设上限 256 pseudo-device pty 64 #@ PC speaker, 这是必备的 pseudo-device speaker #@ 可以直接执行 gzip 的程式, 这是必备的 pseudo-device gzip # Exec gzipped a.out's #@ 支援监看 tty 使用者 pseudo-device snp 4 #Snoop device - to look at pty/vty/etc.. #@ 把一个档案模拟成一个 partition, 通常用来做为 swap-to-file pseudo-device vn 4 #Vnode driver (turns a file into a device) #@ Kernel mode PPP (man pppd),可用 LKM 载入 #pseudo-device ppp 2 #Point-to-point protocol #@ User mode PPP (man ppp),可用 LKM 载入 #pseudo-device tun 1 #Tunnel driver(user process ppp) #@ SLIP,可用 LKM 载入 #pseudo-device sl 2 #Serial Line IP #@ 虚拟网路卡 driver, 可任意写入,读取资料, 用於开发网路相关程式,可用 LKM 载入 #pseudo-device disc #Discard device #@ 提供 RAID-0 Striping,Mirroring,parity(not complete) 的功能 #@ 可以有效的将几颗 SCSI HD 合并起来,成为一个高速的档案系统 #@ 详情请 man ccdconfig #pseudo-device ccd 4
-- ※ 来源:.网易 BBS bbs.netease.com.[FROM: dmx320.resnet.ust.hk]
|
|