Currently, installation floppy of FreeBSD consists of two parts: statically linked kernel and mfsroot installer filesystem image. But, as the kernel grows bigger, the former sometimes exceeds 1.44MB limit. Ad-hoc solution is, of course, removing drivers (ex. APM driver) or features (ex. pty driver) that are not needed in the installation process. We sometimes used this technique when it exceeded the limit. But at last, we have virtually no unnecessary drivers and features in the kernel floppy now. Essential solution is needed.
I'm planning to provide optional third "Driver floppy". It contains driver kernel modules, and sysinstall dynamically loads them into kernel. It will have following features:
It will have following restrictions due to the technical reasons.
This is a patch of partial implementation of this project. I believe that this does not break "make release" on other achitectures, but I've not tested it yet because I have no i386-pc98 and alpha machines.
It currently have following features:
The results of df (after tunefs -m 0) of standard snapshot release (2000/10/29) and this partial implementation:
Starndard kern.flp:
/dev/vn0 1407 1388 19 99% /mnt
Starndard mfsroot.flp:
/dev/vn0 1407 828 579 59% /mnt
kern.flp of this implementation:
/dev/vn0 1407 1292 115 92% /mnt
mfsroot.flp of this implementation:
/dev/vn0 1407 1064 343 76% /mnt
Wow, we've got about 96KB (115KB - 19KB) of spare space in the first floppy! (and we can get more space if we move more drivers to the second floppy or coming driver floppy)
To move drivers to the second floppy is very easy. If a driver is listed in src/release/${MACHINE_ARCH}/driver.conf, and the third column is 2, module file will be copied to the second floppy (mfsroot.flp) and automatically removed from MFSROOT static config file of the first floppy. This is sample configuration file of i386 architecture (src/release/i386/driver.conf).
# Driver config file for boot floppies # # Copyright (c) 2000 "HOSOKAWA, Tatsumi" <hosokawa@FreeBSD.org> # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # $FreeBSD:$ # # drv: driver name in kernel config file # filename: filename of kernel module (without .ko) # floppy: 2 (mfsroot.flp), 3 (drivers.flp - not implemented yet) # type: disk/floppy/network/cdrom/tape/any (currently not used) # description: short description of the driver # #drv filename floppy type description an if_an 2 network "Aironet 4500/4800 802.11 PCMCIA/ISA/PCI card" aue if_aue 2 network "ADMtek USB ethernet adapter" cue if_cue 2 network "CATC USB ethernet adapter" dc if_dc 2 network "DEC/Intel 21143 (and clones) PCI fast ethernet card" fxp if_fxp 2 network "Intel EtherExpress Pro/100B PCI Fast Ethernet card" kue if_kue 2 network "Kawasaki LSI USB ethernet adapter" pcn if_pcn 2 network "AMD Am79c79x PCI ethernet card" rl if_rl 2 network "RealTek 8129/8139 PCI ethernet card" sf if_sf 2 network "Adaptec AIC-6915 PCI ethernet card" sis if_sis 2 network "SiS 900/SiS 7016 PCI ethernet card" sk if_sk 2 network "SysKonnect PCI gigabit ethernet card" ste if_ste 2 network "Sundance ST201 PCI ethernet card" ti if_ti 2 network "Alteon Networks PCI gigabit ethernet card" tl if_tl 2 network "Texas Instruments ThunderLAN PCI ethernet card" tx if_tx 2 network "SMC 9432TX ethernet card" vr if_vr 2 network "VIA VT3043/VT86C100A Rhine PCI ethernet card" wb if_wb 2 network "Winbond W89C840F PCI ethernet card" wi if_wi 2 network "Lucent WaveLAN/IEEE 802.11 PCMCIA card" wx if_wx 2 network "Intel Gigabit Ethernet (82452) card" xl if_xl 2 network "3COM 3c90x / 3c90xB PCI ethernet card"
TODO list:
$Id: index.html,v 1.11 2000/10/29 23:38:06 hosokawa Exp $