aboutsummaryrefslogtreecommitdiff
path: root/release
diff options
context:
space:
mode:
Diffstat (limited to 'release')
-rw-r--r--release/Makefile904
-rw-r--r--release/alpha/boot_crunch.conf24
-rwxr-xr-xrelease/alpha/dokern.sh161
-rw-r--r--release/alpha/fixit_crunch.conf37
-rw-r--r--release/amd64/boot_crunch.conf24
-rwxr-xr-xrelease/amd64/dokern.sh161
-rw-r--r--release/amd64/fixit_crunch.conf38
-rw-r--r--release/boot_crunch.conf24
-rw-r--r--release/fixit.profile36
-rw-r--r--release/fixit.services108
-rw-r--r--release/fixit_crunch.conf37
-rw-r--r--release/i386/boot_crunch.conf24
-rwxr-xr-xrelease/i386/dokern.sh161
-rw-r--r--release/i386/drivers.conf58
-rw-r--r--release/i386/fixit_crunch.conf38
-rw-r--r--release/pc98/boot_crunch.conf24
-rwxr-xr-xrelease/pc98/dokern.sh161
-rw-r--r--release/pc98/fixit_crunch.conf38
-rw-r--r--release/picobsd/Makefile31
-rw-r--r--release/picobsd/README.html19
-rw-r--r--release/picobsd/README.luigi77
-rw-r--r--release/picobsd/Version1
-rw-r--r--release/picobsd/bridge/Makefile.mfs8
-rw-r--r--release/picobsd/bridge/PICOBSD117
-rw-r--r--release/picobsd/bridge/PICOBSD.hints39
-rw-r--r--release/picobsd/bridge/crunch1/crunch.conf123
-rw-r--r--release/picobsd/bridge/floppy.tree.exclude2
-rw-r--r--release/picobsd/bridge/lang/motd.en9
-rw-r--r--release/picobsd/build/Makefile250
-rw-r--r--release/picobsd/build/Makefile.conf26
-rw-r--r--release/picobsd/build/Makefile.crunch38
-rw-r--r--release/picobsd/build/Makefile.mfs48
-rwxr-xr-xrelease/picobsd/build/build387
-rwxr-xr-xrelease/picobsd/build/clean47
-rw-r--r--release/picobsd/build/config15
-rw-r--r--release/picobsd/build/mfs.mtree70
-rwxr-xr-xrelease/picobsd/build/picobsd710
-rwxr-xr-xrelease/picobsd/build/stage1290
-rw-r--r--release/picobsd/build/write_mfs_in_kernel.c96
-rw-r--r--release/picobsd/custom/Makefile263
-rw-r--r--release/picobsd/custom/Makefile.conf21
-rw-r--r--release/picobsd/custom/Makefile.mfs44
-rw-r--r--release/picobsd/custom/PICOBSD-C219
-rw-r--r--release/picobsd/custom/crunch1/Makefile52
-rw-r--r--release/picobsd/custom/crunch1/crunch.conf37
-rw-r--r--release/picobsd/custom/crunch2/Makefile32
-rw-r--r--release/picobsd/custom/crunch2/crunch.conf45
-rw-r--r--release/picobsd/custom/floppy.etc/fstab9
-rw-r--r--release/picobsd/custom/floppy.etc/host.conf3
-rw-r--r--release/picobsd/custom/floppy.etc/inetd.conf21
-rw-r--r--release/picobsd/custom/floppy.etc/master.passwd8
-rw-r--r--release/picobsd/custom/floppy.etc/mfs.rc34
-rw-r--r--release/picobsd/custom/floppy.etc/ppp/ppp.conf8
-rw-r--r--release/picobsd/custom/floppy.etc/ppp/ppp.deny15
-rw-r--r--release/picobsd/custom/floppy.etc/ppp/ppp.linkup10
-rw-r--r--release/picobsd/custom/floppy.etc/ppp/ppp.secret.sample23
-rw-r--r--release/picobsd/custom/floppy.etc/profile5
-rw-r--r--release/picobsd/custom/floppy.etc/rc56
-rw-r--r--release/picobsd/custom/floppy.etc/rc.conf14
-rw-r--r--release/picobsd/custom/floppy.etc/rc.network79
-rw-r--r--release/picobsd/custom/floppy.etc/resolv.conf3
-rw-r--r--release/picobsd/custom/floppy.etc/services94
-rw-r--r--release/picobsd/custom/floppy.etc/shells6
-rw-r--r--release/picobsd/custom/floppy.etc/ttys27
-rw-r--r--release/picobsd/custom/floppy.tree.exclude1
-rw-r--r--release/picobsd/custom/floppy.tree/boot/loader.rc2
-rw-r--r--release/picobsd/custom/floppy.tree/kernel.config0
-rw-r--r--release/picobsd/custom/lang/README.en41
-rw-r--r--release/picobsd/custom/lang/README.pl56
-rw-r--r--release/picobsd/custom/lang/boot.help.en18
-rw-r--r--release/picobsd/custom/lang/boot.help.pl16
-rw-r--r--release/picobsd/custom/lang/hosts.en5
-rw-r--r--release/picobsd/custom/lang/hosts.pl5
-rw-r--r--release/picobsd/custom/lang/motd.en12
-rw-r--r--release/picobsd/custom/lang/motd.pl12
-rwxr-xr-xrelease/picobsd/custom/lang/reboot.en2
-rwxr-xr-xrelease/picobsd/custom/lang/reboot.pl2
-rwxr-xr-xrelease/picobsd/custom/lang/update.en23
-rwxr-xr-xrelease/picobsd/custom/lang/update.pl23
-rw-r--r--release/picobsd/custom/mfs.mtree58
-rwxr-xr-xrelease/picobsd/custom/mfs/etc/dhclient-script220
-rw-r--r--release/picobsd/custom/mfs/etc/disktab87
-rw-r--r--release/picobsd/custom/mfs/etc/gettytab40
-rw-r--r--release/picobsd/custom/mfs/etc/group19
-rw-r--r--release/picobsd/custom/mfs/etc/login.conf120
-rw-r--r--release/picobsd/custom/mfs/etc/protocols7
-rw-r--r--release/picobsd/custom/mfs/etc/rc34
-rw-r--r--release/picobsd/custom/mfs/etc/rc.firewall172
-rw-r--r--release/picobsd/custom/mfs/etc/rc.serial127
-rw-r--r--release/picobsd/custom/mfs/etc/remote50
-rw-r--r--release/picobsd/custom/mfs/etc/snmpd.conf58
-rw-r--r--release/picobsd/custom/mfs/etc/termcap133
-rw-r--r--release/picobsd/custom/mfsinfo17
-rw-r--r--release/picobsd/dial/Makefile.mfs75
-rw-r--r--release/picobsd/dial/PICOBSD63
-rw-r--r--release/picobsd/dial/PICOBSD.hints33
-rw-r--r--release/picobsd/dial/crunch1/crunch.conf48
-rw-r--r--release/picobsd/dial/floppy.tree.exclude16
-rw-r--r--release/picobsd/dial/floppy.tree/etc/master.passwd6
-rw-r--r--release/picobsd/dial/floppy.tree/etc/mfs.rc35
-rw-r--r--release/picobsd/dial/floppy.tree/etc/ppp/ppp.conf9
-rw-r--r--release/picobsd/dial/floppy.tree/etc/ppp/ppp.conf.template10
-rw-r--r--release/picobsd/dial/floppy.tree/etc/ppp/ppp.linkup6
-rw-r--r--release/picobsd/dial/floppy.tree/etc/rc102
-rw-r--r--release/picobsd/dial/floppy.tree/etc/rc.conf32
-rw-r--r--release/picobsd/dial/floppy.tree/etc/ttys10
-rw-r--r--release/picobsd/dial/lang/LICENCE.ssh8
-rw-r--r--release/picobsd/dial/lang/README.en106
-rw-r--r--release/picobsd/dial/lang/README.pl107
-rw-r--r--release/picobsd/dial/lang/boot.help.en23
-rw-r--r--release/picobsd/dial/lang/boot.help.pl23
-rwxr-xr-xrelease/picobsd/dial/lang/dialup.en410
-rwxr-xr-xrelease/picobsd/dial/lang/dialup.pl409
-rw-r--r--release/picobsd/dial/lang/hosts.en5
-rw-r--r--release/picobsd/dial/lang/hosts.pl5
-rwxr-xr-xrelease/picobsd/dial/lang/login.en9
-rwxr-xr-xrelease/picobsd/dial/lang/login.pl10
-rw-r--r--release/picobsd/dial/lang/motd.en16
-rw-r--r--release/picobsd/dial/lang/motd.pl16
-rw-r--r--release/picobsd/doc/src/Makefile17
-rw-r--r--release/picobsd/doc/src/TODO.html154
-rw-r--r--release/picobsd/doc/src/UCI.html960
-rw-r--r--release/picobsd/doc/src/bugs.html152
-rw-r--r--release/picobsd/doc/src/faq.html243
-rw-r--r--release/picobsd/doc/src/hardware.html112
-rw-r--r--release/picobsd/doc/src/how2build.html196
-rw-r--r--release/picobsd/doc/src/installflp.html99
-rw-r--r--release/picobsd/doc/src/intrinsics.html126
-rw-r--r--release/picobsd/doc/src/intro.html306
-rw-r--r--release/picobsd/floppy.tree/boot.config0
-rw-r--r--release/picobsd/floppy.tree/etc/disktab85
-rw-r--r--release/picobsd/floppy.tree/etc/fstab4
-rw-r--r--release/picobsd/floppy.tree/etc/gettytab38
-rw-r--r--release/picobsd/floppy.tree/etc/group19
-rw-r--r--release/picobsd/floppy.tree/etc/host.conf3
-rw-r--r--release/picobsd/floppy.tree/etc/hosts14
-rw-r--r--release/picobsd/floppy.tree/etc/inetd.conf21
-rw-r--r--release/picobsd/floppy.tree/etc/login.conf118
-rw-r--r--release/picobsd/floppy.tree/etc/master.passwd7
-rw-r--r--release/picobsd/floppy.tree/etc/mfs.login.conf62
-rw-r--r--release/picobsd/floppy.tree/etc/mfs.rc27
-rw-r--r--release/picobsd/floppy.tree/etc/ppp/ppp.conf8
-rw-r--r--release/picobsd/floppy.tree/etc/ppp/ppp.deny15
-rw-r--r--release/picobsd/floppy.tree/etc/ppp/ppp.linkup10
-rw-r--r--release/picobsd/floppy.tree/etc/ppp/ppp.secret.sample23
-rw-r--r--release/picobsd/floppy.tree/etc/profile4
-rw-r--r--release/picobsd/floppy.tree/etc/protocols11
-rw-r--r--release/picobsd/floppy.tree/etc/rc67
-rw-r--r--release/picobsd/floppy.tree/etc/rc.conf72
-rw-r--r--release/picobsd/floppy.tree/etc/rc.firewall172
-rw-r--r--release/picobsd/floppy.tree/etc/rc.network79
-rw-r--r--release/picobsd/floppy.tree/etc/rc.serial127
-rw-r--r--release/picobsd/floppy.tree/etc/remote50
-rw-r--r--release/picobsd/floppy.tree/etc/services94
-rw-r--r--release/picobsd/floppy.tree/etc/shells6
-rw-r--r--release/picobsd/floppy.tree/etc/snmpd.conf58
-rw-r--r--release/picobsd/floppy.tree/etc/sshd_config29
-rw-r--r--release/picobsd/floppy.tree/etc/termcap158
-rw-r--r--release/picobsd/floppy.tree/etc/ttys32
-rwxr-xr-xrelease/picobsd/floppy.tree/etc/update22
-rw-r--r--release/picobsd/floppy.tree/kernel.config0
-rw-r--r--release/picobsd/floppy.tree/root/.profile1
-rw-r--r--release/picobsd/help/README8
-rw-r--r--release/picobsd/help/cat.hlp.en5
-rw-r--r--release/picobsd/help/cat.hlp.pl5
-rw-r--r--release/picobsd/help/chmod.hlp.en5
-rw-r--r--release/picobsd/help/chmod.hlp.pl5
-rw-r--r--release/picobsd/help/chown.hlp.en8
-rw-r--r--release/picobsd/help/chown.hlp.pl8
-rw-r--r--release/picobsd/help/cp.hlp.en6
-rw-r--r--release/picobsd/help/cp.hlp.pl6
-rw-r--r--release/picobsd/help/df.hlp.en5
-rw-r--r--release/picobsd/help/df.hlp.pl5
-rw-r--r--release/picobsd/help/dialup.hlp.en4
-rw-r--r--release/picobsd/help/dialup.hlp.pl5
-rw-r--r--release/picobsd/help/dmesg.hlp.en5
-rw-r--r--release/picobsd/help/dmesg.hlp.pl5
-rw-r--r--release/picobsd/help/echo.hlp.en8
-rw-r--r--release/picobsd/help/echo.hlp.pl8
-rw-r--r--release/picobsd/help/ee.hlp.en4
-rw-r--r--release/picobsd/help/ee.hlp.pl4
-rw-r--r--release/picobsd/help/fsck.hlp.en15
-rw-r--r--release/picobsd/help/fsck.hlp.pl15
-rw-r--r--release/picobsd/help/ftp.hlp.en8
-rw-r--r--release/picobsd/help/ftp.hlp.pl8
-rw-r--r--release/picobsd/help/gzip.hlp.en26
-rw-r--r--release/picobsd/help/gzip.hlp.pl12
-rw-r--r--release/picobsd/help/help.hlp.en7
-rw-r--r--release/picobsd/help/help.hlp.pl7
-rw-r--r--release/picobsd/help/hostname.hlp.en5
-rw-r--r--release/picobsd/help/hostname.hlp.pl5
-rw-r--r--release/picobsd/help/ifconfig.hlp.en18
-rw-r--r--release/picobsd/help/ifconfig.hlp.pl18
-rw-r--r--release/picobsd/help/kbdcontrol.hlp.en7
-rw-r--r--release/picobsd/help/kbdcontrol.hlp.pl7
-rw-r--r--release/picobsd/help/kget.hlp.en21
-rw-r--r--release/picobsd/help/kget.hlp.pl23
-rw-r--r--release/picobsd/help/kill.hlp.en8
-rw-r--r--release/picobsd/help/kill.hlp.pl8
-rw-r--r--release/picobsd/help/ln.hlp.en9
-rw-r--r--release/picobsd/help/ln.hlp.pl9
-rw-r--r--release/picobsd/help/ls.hlp.en10
-rw-r--r--release/picobsd/help/ls.hlp.pl11
-rw-r--r--release/picobsd/help/mkdir.hlp.en5
-rw-r--r--release/picobsd/help/mkdir.hlp.pl5
-rw-r--r--release/picobsd/help/more.hlp.en7
-rw-r--r--release/picobsd/help/more.hlp.pl8
-rw-r--r--release/picobsd/help/mount.hlp.en21
-rw-r--r--release/picobsd/help/mount.hlp.pl19
-rw-r--r--release/picobsd/help/mount_cd9660.hlp.en9
-rw-r--r--release/picobsd/help/mount_cd9660.hlp.pl9
-rw-r--r--release/picobsd/help/mount_ext2fs.hlp.en11
-rw-r--r--release/picobsd/help/mount_ext2fs.hlp.pl11
-rw-r--r--release/picobsd/help/mount_msdos.hlp.en13
-rw-r--r--release/picobsd/help/mount_msdos.hlp.pl13
-rw-r--r--release/picobsd/help/moused.hlp.en44
-rw-r--r--release/picobsd/help/moused.hlp.pl29
-rw-r--r--release/picobsd/help/mv.hlp.en9
-rw-r--r--release/picobsd/help/mv.hlp.pl9
-rw-r--r--release/picobsd/help/ping.hlp.en10
-rw-r--r--release/picobsd/help/ping.hlp.pl10
-rw-r--r--release/picobsd/help/ppp.hlp.en16
-rw-r--r--release/picobsd/help/ppp.hlp.pl14
-rw-r--r--release/picobsd/help/ps.hlp.en9
-rw-r--r--release/picobsd/help/ps.hlp.pl7
-rw-r--r--release/picobsd/help/pwd.hlp.en1
-rw-r--r--release/picobsd/help/pwd.hlp.pl1
-rw-r--r--release/picobsd/help/reboot.hlp.en3
-rw-r--r--release/picobsd/help/reboot.hlp.pl3
-rw-r--r--release/picobsd/help/rm.hlp.en13
-rw-r--r--release/picobsd/help/rm.hlp.pl12
-rw-r--r--release/picobsd/help/route.hlp.en13
-rw-r--r--release/picobsd/help/route.hlp.pl13
-rw-r--r--release/picobsd/help/sh.hlp.en3
-rw-r--r--release/picobsd/help/sh.hlp.pl3
-rw-r--r--release/picobsd/help/shutdown.hlp.en3
-rw-r--r--release/picobsd/help/shutdown.hlp.pl3
-rw-r--r--release/picobsd/help/ssh.hlp.en29
-rw-r--r--release/picobsd/help/ssh.hlp.pl29
-rw-r--r--release/picobsd/help/sysctl.hlp.en15
-rw-r--r--release/picobsd/help/sysctl.hlp.pl15
-rw-r--r--release/picobsd/help/telnet.hlp.en14
-rw-r--r--release/picobsd/help/telnet.hlp.pl14
-rw-r--r--release/picobsd/help/test.hlp.en1
-rw-r--r--release/picobsd/help/test.hlp.pl1
-rw-r--r--release/picobsd/help/traceroute.hlp.en14
-rw-r--r--release/picobsd/help/traceroute.hlp.pl14
-rw-r--r--release/picobsd/help/umount.hlp.en12
-rw-r--r--release/picobsd/help/umount.hlp.pl12
-rw-r--r--release/picobsd/help/vidcontrol.hlp.en7
-rw-r--r--release/picobsd/help/vidcontrol.hlp.pl7
-rw-r--r--release/picobsd/help/vm.hlp.en12
-rw-r--r--release/picobsd/help/vm.hlp.pl14
-rw-r--r--release/picobsd/install/Makefile.mfs46
-rw-r--r--release/picobsd/install/PICOBSD75
-rw-r--r--release/picobsd/install/PICOBSD.hints30
-rw-r--r--release/picobsd/install/crunch1/Makefile44
-rw-r--r--release/picobsd/install/crunch1/crunch.conf66
-rw-r--r--release/picobsd/install/floppy.tree.exclude1
-rw-r--r--release/picobsd/install/floppy.tree/boot.config0
-rw-r--r--release/picobsd/install/floppy.tree/etc/disktab87
-rwxr-xr-xrelease/picobsd/install/floppy.tree/etc/doinstall112
-rw-r--r--release/picobsd/install/floppy.tree/etc/fstab4
-rw-r--r--release/picobsd/install/floppy.tree/etc/gettytab40
-rw-r--r--release/picobsd/install/floppy.tree/etc/group19
-rw-r--r--release/picobsd/install/floppy.tree/etc/host.conf3
-rw-r--r--release/picobsd/install/floppy.tree/etc/inetd.conf21
-rw-r--r--release/picobsd/install/floppy.tree/etc/login.conf120
-rw-r--r--release/picobsd/install/floppy.tree/etc/master.passwd7
-rw-r--r--release/picobsd/install/floppy.tree/etc/mfs.rc34
-rwxr-xr-xrelease/picobsd/install/floppy.tree/etc/prepdisk52
-rw-r--r--release/picobsd/install/floppy.tree/etc/profile3
-rw-r--r--release/picobsd/install/floppy.tree/etc/protocols7
-rw-r--r--release/picobsd/install/floppy.tree/etc/rc64
-rw-r--r--release/picobsd/install/floppy.tree/etc/rc.conf26
-rw-r--r--release/picobsd/install/floppy.tree/etc/rc.network79
-rw-r--r--release/picobsd/install/floppy.tree/etc/rc.serial127
-rw-r--r--release/picobsd/install/floppy.tree/etc/remote50
-rw-r--r--release/picobsd/install/floppy.tree/etc/resolv.conf3
-rw-r--r--release/picobsd/install/floppy.tree/etc/services94
-rw-r--r--release/picobsd/install/floppy.tree/etc/shells6
-rw-r--r--release/picobsd/install/floppy.tree/etc/start_if.fxp01
-rw-r--r--release/picobsd/install/floppy.tree/etc/termcap123
-rw-r--r--release/picobsd/install/floppy.tree/etc/ttys32
-rw-r--r--release/picobsd/install/floppy.tree/kernel.config0
-rw-r--r--release/picobsd/install/lang/README.en41
-rw-r--r--release/picobsd/install/lang/README.pl56
-rw-r--r--release/picobsd/install/lang/boot.help.en18
-rw-r--r--release/picobsd/install/lang/boot.help.pl16
-rw-r--r--release/picobsd/install/lang/hosts.en5
-rw-r--r--release/picobsd/install/lang/hosts.pl5
-rw-r--r--release/picobsd/install/lang/motd.en12
-rw-r--r--release/picobsd/install/lang/motd.pl12
-rw-r--r--release/picobsd/install/lang/resolv.conf.pl3
-rw-r--r--release/picobsd/install/mfs.mtree58
-rw-r--r--release/picobsd/isp/Makefile.mfs10
-rw-r--r--release/picobsd/isp/PICOBSD116
-rw-r--r--release/picobsd/isp/PICOBSD.hints101
-rw-r--r--release/picobsd/isp/crunch1/crunch.conf50
-rw-r--r--release/picobsd/isp/floppy.tree.exclude0
-rw-r--r--release/picobsd/isp/lang/README.en37
-rw-r--r--release/picobsd/isp/lang/README.pl33
-rw-r--r--release/picobsd/isp/lang/boot.help.en18
-rw-r--r--release/picobsd/isp/lang/boot.help.pl16
-rw-r--r--release/picobsd/isp/lang/motd.en12
-rw-r--r--release/picobsd/isp/lang/motd.pl12
-rw-r--r--release/picobsd/isp/mfs.mtree56
-rw-r--r--release/picobsd/mfs_tree/etc/login.conf62
-rw-r--r--release/picobsd/mfs_tree/etc/rc31
-rwxr-xr-xrelease/picobsd/mfs_tree/stand/update39
-rw-r--r--release/picobsd/net/Makefile.mfs7
-rw-r--r--release/picobsd/net/PICOBSD90
-rw-r--r--release/picobsd/net/PICOBSD.hints65
-rw-r--r--release/picobsd/net/crunch1/crunch.conf53
-rw-r--r--release/picobsd/net/floppy.tree/boot.config0
-rw-r--r--release/picobsd/net/floppy.tree/etc/disktab87
-rw-r--r--release/picobsd/net/floppy.tree/etc/fstab4
-rw-r--r--release/picobsd/net/floppy.tree/etc/gettytab40
-rw-r--r--release/picobsd/net/floppy.tree/etc/group19
-rw-r--r--release/picobsd/net/floppy.tree/etc/host.conf3
-rw-r--r--release/picobsd/net/floppy.tree/etc/inetd.conf21
-rw-r--r--release/picobsd/net/floppy.tree/etc/login.conf120
-rw-r--r--release/picobsd/net/floppy.tree/etc/master.passwd7
-rw-r--r--release/picobsd/net/floppy.tree/etc/mfs.rc35
-rw-r--r--release/picobsd/net/floppy.tree/etc/ppp/ppp.conf8
-rw-r--r--release/picobsd/net/floppy.tree/etc/ppp/ppp.deny15
-rw-r--r--release/picobsd/net/floppy.tree/etc/ppp/ppp.linkup10
-rw-r--r--release/picobsd/net/floppy.tree/etc/ppp/ppp.secret.sample23
-rw-r--r--release/picobsd/net/floppy.tree/etc/profile3
-rw-r--r--release/picobsd/net/floppy.tree/etc/protocols7
-rw-r--r--release/picobsd/net/floppy.tree/etc/rc60
-rw-r--r--release/picobsd/net/floppy.tree/etc/rc.conf25
-rw-r--r--release/picobsd/net/floppy.tree/etc/rc.firewall172
-rw-r--r--release/picobsd/net/floppy.tree/etc/rc.network79
-rw-r--r--release/picobsd/net/floppy.tree/etc/rc.serial127
-rw-r--r--release/picobsd/net/floppy.tree/etc/remote50
-rw-r--r--release/picobsd/net/floppy.tree/etc/resolv.conf3
-rw-r--r--release/picobsd/net/floppy.tree/etc/services94
-rw-r--r--release/picobsd/net/floppy.tree/etc/shells6
-rw-r--r--release/picobsd/net/floppy.tree/etc/snmpd.conf58
-rw-r--r--release/picobsd/net/floppy.tree/etc/termcap123
-rw-r--r--release/picobsd/net/floppy.tree/etc/ttys32
-rw-r--r--release/picobsd/net/floppy.tree/kernel.config0
-rw-r--r--release/picobsd/net/lang/README.en41
-rw-r--r--release/picobsd/net/lang/README.pl56
-rw-r--r--release/picobsd/net/lang/boot.help.en18
-rw-r--r--release/picobsd/net/lang/boot.help.pl16
-rw-r--r--release/picobsd/net/lang/hosts.en5
-rw-r--r--release/picobsd/net/lang/hosts.pl5
-rw-r--r--release/picobsd/net/lang/motd.en12
-rw-r--r--release/picobsd/net/lang/motd.pl12
-rw-r--r--release/picobsd/net/mfs.mtree58
-rw-r--r--release/picobsd/router/Makefile.mfs7
-rw-r--r--release/picobsd/router/PICOBSD81
-rw-r--r--release/picobsd/router/PICOBSD.hints53
-rw-r--r--release/picobsd/router/crunch1/Makefile34
-rw-r--r--release/picobsd/router/crunch1/crunch.conf40
-rw-r--r--release/picobsd/router/floppy.tree.exclude13
-rw-r--r--release/picobsd/router/floppy.tree/etc/mfs.rc25
-rw-r--r--release/picobsd/router/floppy.tree/etc/rc18
-rw-r--r--release/picobsd/router/floppy.tree/etc/rc.firewall172
-rw-r--r--release/picobsd/router/lang/BAD_DOCS!!!0
-rw-r--r--release/picobsd/router/lang/README.en40
-rw-r--r--release/picobsd/router/lang/README.pl39
-rw-r--r--release/picobsd/router/lang/boot.help.en18
-rw-r--r--release/picobsd/router/lang/boot.help.pl16
-rw-r--r--release/picobsd/router/lang/hosts.en5
-rw-r--r--release/picobsd/router/lang/hosts.pl5
-rw-r--r--release/picobsd/router/lang/motd.en9
-rw-r--r--release/picobsd/router/lang/motd.pl11
-rw-r--r--release/picobsd/tinyware/aps/Makefile9
-rw-r--r--release/picobsd/tinyware/aps/README19
-rw-r--r--release/picobsd/tinyware/aps/main.c101
-rw-r--r--release/picobsd/tinyware/help/Makefile9
-rw-r--r--release/picobsd/tinyware/help/README8
-rw-r--r--release/picobsd/tinyware/help/help.c157
-rw-r--r--release/picobsd/tinyware/msg/Makefile9
-rw-r--r--release/picobsd/tinyware/msg/README15
-rw-r--r--release/picobsd/tinyware/msg/msg.c74
-rw-r--r--release/picobsd/tinyware/msh/Makefile8
-rw-r--r--release/picobsd/tinyware/msh/README13
-rw-r--r--release/picobsd/tinyware/msh/msh.1261
-rw-r--r--release/picobsd/tinyware/msh/sh.h388
-rw-r--r--release/picobsd/tinyware/msh/sh1.c953
-rw-r--r--release/picobsd/tinyware/msh/sh2.c801
-rw-r--r--release/picobsd/tinyware/msh/sh3.c1143
-rw-r--r--release/picobsd/tinyware/msh/sh4.c767
-rw-r--r--release/picobsd/tinyware/msh/sh5.c675
-rw-r--r--release/picobsd/tinyware/msh/sh6.c9
-rw-r--r--release/picobsd/tinyware/ns/Makefile10
-rw-r--r--release/picobsd/tinyware/ns/README43
-rw-r--r--release/picobsd/tinyware/ns/ns.c767
-rw-r--r--release/picobsd/tinyware/oinit/Makefile22
-rw-r--r--release/picobsd/tinyware/oinit/README123
-rw-r--r--release/picobsd/tinyware/oinit/oinit.c947
-rw-r--r--release/picobsd/tinyware/simple_httpd/Makefile7
-rw-r--r--release/picobsd/tinyware/simple_httpd/README167
-rw-r--r--release/picobsd/tinyware/simple_httpd/simple_httpd.c480
-rw-r--r--release/picobsd/tinyware/sps/Makefile9
-rw-r--r--release/picobsd/tinyware/sps/README11
-rw-r--r--release/picobsd/tinyware/sps/sps.c122
-rw-r--r--release/picobsd/tinyware/view/Makefile9
-rw-r--r--release/picobsd/tinyware/view/README86
-rw-r--r--release/picobsd/tinyware/view/fbsd.pngbin0 -> 7386 bytes
-rw-r--r--release/picobsd/tinyware/view/picobsd.vu9
-rw-r--r--release/picobsd/tinyware/view/view.c619
-rw-r--r--release/picobsd/tinyware/vm/Makefile10
-rw-r--r--release/picobsd/tinyware/vm/README10
-rw-r--r--release/picobsd/tinyware/vm/vm.c70
-rwxr-xr-xrelease/scripts/X11/build_x.sh64
-rwxr-xr-xrelease/scripts/X11/generate_plists.sh75
-rwxr-xr-xrelease/scripts/X11/generate_tarballs.sh81
-rwxr-xr-xrelease/scripts/X11/package_x_dists.sh54
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9480.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9EGC.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9GA9.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9GAN.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9LPW.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9MGA.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9NKV.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9NS3.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9SPW.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9SVG.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9TGU.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9WEP.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9WS.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/PC98-Servers/X9WSN.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/X3DL.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/X8514.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/XAGX.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/XI128.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/XMa32.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/XMa64.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/XMa8.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/XMono.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/XP9K.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/XS3.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/XS3V.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/XSVGA.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/XVG16.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Servers/XW32.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/X9set.tgz.plist76
-rw-r--r--release/scripts/X11/plists/i386/Xbin.tgz.plist175
-rw-r--r--release/scripts/X11/plists/i386/Xcfg.tgz.plist11
-rw-r--r--release/scripts/X11/plists/i386/Xdoc.tgz.plist63
-rw-r--r--release/scripts/X11/plists/i386/Xf100.tgz.plist201
-rw-r--r--release/scripts/X11/plists/i386/Xfcyr.tgz.plist71
-rw-r--r--release/scripts/X11/plists/i386/Xfnon.tgz.plist11
-rw-r--r--release/scripts/X11/plists/i386/Xfnts.tgz.plist270
-rw-r--r--release/scripts/X11/plists/i386/Xfscl.tgz.plist30
-rw-r--r--release/scripts/X11/plists/i386/Xfsrv.tgz.plist4
-rw-r--r--release/scripts/X11/plists/i386/Xhtml.tgz.plist672
-rw-r--r--release/scripts/X11/plists/i386/Xjdoc.tgz.plist49
-rw-r--r--release/scripts/X11/plists/i386/Xjset.tgz.plist76
-rw-r--r--release/scripts/X11/plists/i386/Xlib.tgz.plist390
-rw-r--r--release/scripts/X11/plists/i386/Xlk98.tgz.plist618
-rw-r--r--release/scripts/X11/plists/i386/Xlkit.tgz.plist854
-rw-r--r--release/scripts/X11/plists/i386/Xman.tgz.plist1090
-rw-r--r--release/scripts/X11/plists/i386/Xnest.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Xprog.tgz.plist349
-rw-r--r--release/scripts/X11/plists/i386/Xprt.tgz.plist1
-rw-r--r--release/scripts/X11/plists/i386/Xps.tgz.plist57
-rw-r--r--release/scripts/X11/plists/i386/Xset.tgz.plist76
-rw-r--r--release/scripts/X11/plists/i386/Xvfb.tgz.plist1
-rwxr-xr-xrelease/scripts/base-install.sh13
-rwxr-xr-xrelease/scripts/bin-install.sh13
-rwxr-xr-xrelease/scripts/catpages-install.sh8
-rwxr-xr-xrelease/scripts/catpages-make.sh10
-rwxr-xr-xrelease/scripts/commerce-install.sh9
-rwxr-xr-xrelease/scripts/compat1x-install.sh8
-rwxr-xr-xrelease/scripts/compat20-install.sh8
-rwxr-xr-xrelease/scripts/compat21-install.sh8
-rwxr-xr-xrelease/scripts/compat22-install.sh8
-rwxr-xr-xrelease/scripts/compat3x-install.sh8
-rwxr-xr-xrelease/scripts/crypto-install.sh23
-rwxr-xr-xrelease/scripts/dict-install.sh8
-rwxr-xr-xrelease/scripts/dict-make.sh17
-rw-r--r--release/scripts/doFS.sh73
-rwxr-xr-xrelease/scripts/doc-install.sh12
-rwxr-xr-xrelease/scripts/doc-make.sh8
-rwxr-xr-xrelease/scripts/dokern.sh161
-rw-r--r--release/scripts/driver-copy2.pl78
-rw-r--r--release/scripts/driver-remove.pl58
-rwxr-xr-xrelease/scripts/games-install.sh8
-rwxr-xr-xrelease/scripts/games-make.sh36
-rwxr-xr-xrelease/scripts/info-install.sh8
-rwxr-xr-xrelease/scripts/info-make.sh10
-rw-r--r--release/scripts/info.sh8
-rwxr-xr-xrelease/scripts/manpages-install.sh8
-rwxr-xr-xrelease/scripts/manpages-make.sh9
-rwxr-xr-xrelease/scripts/ports-install.sh9
-rwxr-xr-xrelease/scripts/print-cdrom-packages.sh142
-rwxr-xr-xrelease/scripts/proflibs-install.sh13
-rwxr-xr-xrelease/scripts/proflibs-make.sh8
-rwxr-xr-xrelease/scripts/src-install.sh30
-rw-r--r--release/scripts/tar.sh120
-rwxr-xr-xrelease/scripts/xperimnt-install.sh9
-rw-r--r--release/texts/ABOUT.TXT215
-rw-r--r--release/texts/ERRATA.TXT30
-rw-r--r--release/texts/FLOPPIES.TXT57
-rw-r--r--release/texts/HARDWARE.TXT1029
-rw-r--r--release/texts/LAYOUT.TXT101
-rw-r--r--release/texts/README.TXT105
-rw-r--r--release/texts/TROUBLE.TXT383
-rw-r--r--release/texts/UPGRADE.TXT179
-rw-r--r--release/texts/alpha/HARDWARE.TXT1898
-rw-r--r--release/texts/alpha/INSTALL.TXT443
-rw-r--r--release/texts/alpha/RELNOTES.TXT1499
-rw-r--r--release/texts/i386/INSTALL.TXT541
-rw-r--r--release/texts/i386/RELNOTES.TXT1801
-rw-r--r--release/write_mfs_in_kernel.c96
511 files changed, 41441 insertions, 0 deletions
diff --git a/release/Makefile b/release/Makefile
new file mode 100644
index 000000000000..cd02a72d2d5c
--- /dev/null
+++ b/release/Makefile
@@ -0,0 +1,904 @@
+# $FreeBSD$
+#
+# make release CHROOTDIR=/some/dir BUILDNAME=somename CVSROOT=/cvs/dir \
+# [ RELEASETAG=tag ]
+#
+# Where "/some/dir" is the pathname of a directory on a some filesystem with
+# at least 1000MB of free space, "somename" is what you want the release to
+# call itself, "/cvs/dir" is where our source repo resides and, optionally,
+# which CVS "tag" name should be used when checking out the sources to build
+# the release (default is HEAD).
+#
+# Please note: the vn driver must also be compiled into your kernel,
+# otherwise the target 'release.8' and possibly others will fail.
+#
+# Set these, release builder!
+#
+# Fixed version:
+#BUILDNAME=5.0-RELEASE
+#
+# Automatic SNAP versioning:
+DATE != date +%Y%m%d
+BASE = 5.0
+BUILDNAME?=${BASE}-${DATE}-SNAP
+#
+#CHROOTDIR=/junk/release
+# If this is a -stable snapshot, then set
+#RELEASETAG=RELENG_4
+#
+# Non-zero if ${RELEASETAG} is in the form "RELENG_ver_RELEASE"; we
+# are building an official release. Otherwise, we are building for
+# a branch.
+.if defined(RELEASETAG)
+ISRELEASE!= expr ${RELEASETAG} : '^RELENG_.*_RELEASE$$' || true
+.if ${ISRELEASE} != 0
+# Convert "RELENG_ver_RELEASE" to "RELEASE_ver" for ports and doc trees.
+AUXRELEASETAG!= echo ${RELEASETAG} | sed -e 's/^RELENG_/RELEASE_/' -e 's/_RELEASE$$//'
+DOCRELEASETAG?= ${AUXRELEASETAG}
+PORTSRELEASETAG?= ${AUXRELEASETAG}
+.endif
+.endif
+
+KERNCONF=GENERIC
+
+# If you want to pass flags to the world build such as -j X, use
+# WORLD_FLAGS. Similarly, you can specify make flags for kernel
+# builds via KERNEL_FLAGS.
+#WORLD_FLAGS=-j4
+#KERNEL_FLAGS=-j4
+
+# If you are using a local CVS repository with components stored in
+# non-standard modules, override these on the make commandline or
+# in the environment.
+RELEASESRCMODULE?= src
+RELEASEDOCMODULE?= doc
+RELEASEPORTSMODULE?= ports
+
+# Unless set elsewhere, indicate the object format we'll be using.
+OBJFORMAT?= elf
+
+# Uncomment this to disable the doc.1 target. It is also an ERROR
+# to set NOPORTS and not set NODOC since docs depend on ports.
+#NODOC= YES
+#NOPORTS= YES
+# Set ALLLANG=no if you want the release documentation to be
+# in English only.
+ALLLANG?= yes
+DOCPORTS= textproc/docproj
+# Set this to wherever the distfiles required by ${DOCPORTS} live.
+DOCDISTFILES?= ${.CURDIR}/../../ports/distfiles
+# Set this to 1 if you want -P to be used for automatic keyboard detection
+# on the boot floppy. WARNING: Breaks on some Athlon (K7) motherboards.
+AUTO_KEYBOARD_DETECT?= 0
+
+
+DIST_DOCS= ABOUT.TXT ERRATA.TXT LAYOUT.TXT README.TXT HARDWARE.TXT \
+ RELNOTES.TXT TROUBLE.TXT UPGRADE.TXT INSTALL.TXT
+
+# Things which without too much trouble can be considered variables
+# BIN_DISTS are special in that they get full /etc installation sets.
+#
+.if ${MACHINE_ARCH} == "i386"
+COMPAT_DISTS?= compat1x compat20 compat21 compat22 compat3x compat4x
+.else
+COMPAT_DISTS?= compat4x
+.endif
+OTHER_DISTS?= manpages catpages games proflibs dict info doc
+CRYPTO_DISTS?= crypto krb4 krb5
+BIN_DISTS?= bin
+DISTRIBUTIONS?= ${BIN_DISTS} ${OTHER_DISTS} ${COMPAT_DISTS} ${CRYPTO_DISTS}
+KERNELS?= GENERIC
+
+BOOT1= etc/protocols etc/netconfig etc/defaults/rc.conf
+
+# mountpoint for filesystems.
+MNT= /mnt
+
+# Various floppy image parameters.
+#
+
+.if ${MACHINE_ARCH} == "i386"
+.if ${MACHINE} == "pc98"
+SMALLBOOTSIZE= 1200
+BOOTSIZE= 1440
+FIXITSIZE= 1440
+MFSSIZE= 2880
+BOOTINODE= 80000
+FIXITINODE= 4000
+MFSINODE= 8000
+SMALLBOOTLABEL= fd1200
+BOOTLABEL= fd1440
+FIXITLABEL= fd1440
+MFSLABEL= minimum2
+.else
+BOOTSIZE= 1440
+FIXITSIZE= 1440
+MFSSIZE= 4320
+BIGBOOTSIZE= 2880
+BOOTINODE= 80000
+FIXITINODE= 4000
+MFSINODE= 8000
+BOOTLABEL= fd1440
+FIXITLABEL= fd1440
+MFSLABEL= minimum3
+BIGBOOTLABEL= minimum2
+.endif
+.elif ${MACHINE_ARCH} == "alpha"
+BOOTSIZE= 1440
+FIXITSIZE= 2880
+MFSSIZE= 2880
+BIGBOOTSIZE= 2880
+BOOTINODE= 80000
+FIXITINODE= 4000
+MFSINODE= 8000
+BOOTLABEL= fd1440
+FIXITLABEL= minimum2
+MFSLABEL= minimum2
+BIGBOOTLABEL= minimum2
+.endif
+
+ZIPNSPLIT= gzip --no-name -9 -c | split -b 240640 -
+
+
+VNDEVICE?= vn0
+
+# Things which may get you into trouble if you change them
+MTREEFILES= ${.CURDIR}/../etc/mtree
+_R= /R
+RD= ${_R}/stage
+FD= ${_R}/ftp
+CD= ${_R}/cdrom
+CD_DISC1= ${CD}/disc1
+CD_DISC2= ${CD}/disc2
+
+# Where the bootstrap ports (see DOCPORTS) get installed.
+LOCALDIR= /usr/local/bin
+
+# ${BOOTSTRAPDIR} is for those utilities that refer to the hosting
+# environment, rather than the target environment. This is specifically
+# intended for kernel-dependent utilities that are used during the build.
+#
+# ${BOOTSTRAPDIR} is actually being used by prepending it to the normal
+# ${PATH}. Thus, it's also available to outside utilities like doFS.sh.
+BOOTSTRAPDIR= /bootstrap
+#
+# The mount subsystem has been changed between 2.2 and 3.0 by the
+# Lite2 import.
+BOOTSTRAPUTILS= /sbin/mount /sbin/umount
+#
+# 3.0 cpio tries to reference lchown(2) which is not available in 2.2
+BOOTSTRAPUTILS+= /usr/bin/cpio
+
+.if !defined(CRUNCH_TARGETS)
+CRUNCH_TARGETS= boot fixit
+.endif
+
+.if ${MACHINE} == "pc98"
+EXTRAS= ftp.1
+.else
+EXTRAS= cdrom.1 ftp.1
+.endif
+
+.if !defined(NODOC)
+DOCREL= doc.1
+.endif
+
+.if !defined(NOPORTREADMES)
+MAKEREADMES= make readmes PORTSDIR=${CHROOTDIR}/usr/ports
+.else
+MAKEREADMES= true
+.endif
+
+rerelease release:
+.if !defined(CHROOTDIR) || !defined(BUILDNAME) || !defined(CVSROOT)
+ @echo "To make a release you must set CHROOTDIR, BUILDNAME and CVSROOT" && false
+.endif
+.if defined(NOPORTS) && !defined(NODOC)
+ @echo "Ports are required for building the docs. Either set NODOC or"
+ @echo "unset NOPORTS!"
+ @exit 1
+.endif
+ -vnconfig 2>/dev/null
+.if make(release)
+.if exists(${CHROOTDIR})
+# The first command will fail on a handful of files that have their schg
+# flags set. But it greatly speeds up the next two commands.
+ -rm -rf ${CHROOTDIR} 2>/dev/null
+ -chflags -R noschg ${CHROOTDIR}/.
+ -rm -rf ${CHROOTDIR}
+.endif
+ mkdir -p ${CHROOTDIR}
+ @echo ">>> make release started on `LC_ALL=C TZ=GMT date`"
+ cd ${.CURDIR}/../etc && ${MAKE} distrib-dirs DESTDIR=${CHROOTDIR}
+ cd ${.CURDIR}/../etc && ${MAKE} distribution DESTDIR=${CHROOTDIR}
+ if [ -f /etc/resolv.conf ]; then \
+ cp -p /etc/resolv.conf ${CHROOTDIR}/etc; \
+ fi
+ cd ${.CURDIR}/.. && ${MAKE} installworld DESTDIR=${CHROOTDIR} NOMAN=1
+ mkdir ${CHROOTDIR}/${BOOTSTRAPDIR}
+ for i in ${BOOTSTRAPUTILS} ; do \
+ cp -p ${CHROOTDIR}$$i ${CHROOTDIR}/${BOOTSTRAPDIR} ; \
+ done
+.if !defined(RELEASETAG)
+ cd ${CHROOTDIR}/usr && rm -rf src && \
+ cvs -R -d ${CVSROOT} co -P ${RELEASESRCMODULE}
+.else
+ cd ${CHROOTDIR}/usr && rm -rf src && \
+ cvs -R -d ${CVSROOT} co -P -r ${RELEASETAG} ${RELEASESRCMODULE}
+.endif
+.if defined(LOCAL_PATCHES) && exists(${LOCAL_PATCHES})
+ cd ${CHROOTDIR}/usr/src && patch ${PATCH_FLAGS} < ${LOCAL_PATCHES}
+.endif
+.if defined(LOCAL_SCRIPT) && exists(${LOCAL_SCRIPT})
+ cd ${CHROOTDIR} && env CHROOTDIR=${CHROOTDIR} BUILDNAME=${BUILDNAME} RELEASETAG=${RELEASETAG} ${LOCAL_SCRIPT}
+.endif
+.if !defined(NOPORTS)
+.if defined(PORTSRELEASETAG)
+ cd ${CHROOTDIR}/usr && rm -rf ports && cvs -R -d ${CVSROOT} co -P -r ${PORTSRELEASETAG} ${RELEASEPORTSMODULE} && cd ports && ${MAKEREADMES}
+.else
+ cd ${CHROOTDIR}/usr && rm -rf ports && cvs -R -d ${CVSROOT} co -P ${RELEASEPORTSMODULE} && cd ports && ${MAKEREADMES}
+.endif
+.endif
+.if !defined(NODOC)
+.if defined(DOCRELEASETAG)
+ cd ${CHROOTDIR}/usr && rm -rf doc && cvs -R -d ${CVSROOT} co -P -r ${DOCRELEASETAG} ${RELEASEDOCMODULE}
+.else
+ cd ${CHROOTDIR}/usr && rm -rf doc && cvs -R -d ${CVSROOT} co -P ${RELEASEDOCMODULE}
+.endif
+ if [ -d ${DOCDISTFILES}/ ]; then \
+ cp -rp ${DOCDISTFILES} ${CHROOTDIR}/usr/ports/distfiles; \
+ fi
+.endif
+.endif
+.if make(rerelease)
+.if !defined(RELEASENOUPDATE)
+.if !defined(RELEASETAG)
+ cd ${CHROOTDIR}/usr/src && cvs -R -q update -P -d
+.else
+ cd ${CHROOTDIR}/usr/src && cvs -R -q update -P -d -r ${RELEASETAG}
+.endif
+.if !defined(NOPORTS)
+ cd ${CHROOTDIR}/usr/ports && cvs -R -q update -P -d
+.endif
+.if !defined(NODOC)
+ cd ${CHROOTDIR}/usr/doc && cvs -R -q update -P -d
+.endif
+.endif
+.endif
+ # Add version information to those things that need it.
+ ( cd ${CHROOTDIR}/usr/src/sys/conf && \
+ mv newvers.sh foo && \
+ sed "s/^RELEASE=.*/RELEASE=${BUILDNAME}/" foo > newvers.sh && rm foo )
+ echo OBJFORMAT=${OBJFORMAT} > ${CHROOTDIR}/etc/objformat
+ -test -f install.cfg && cp install.cfg ${CHROOTDIR}/usr/src/release
+ echo "#!/bin/sh" > ${CHROOTDIR}/mk
+ echo "set -ex" >> ${CHROOTDIR}/mk
+ echo "_RELTARGET=\$${1:-doRELEASE}" >> ${CHROOTDIR}/mk
+ echo "export CFLAGS='-O -pipe'" >> ${CHROOTDIR}/mk
+ echo "export NO_X=YES" >> ${CHROOTDIR}/mk
+ echo "export DISTRIBUTIONS=\"${DISTRIBUTIONS}\"" >> ${CHROOTDIR}/mk
+ echo "export BUILDNAME=${BUILDNAME}" >> ${CHROOTDIR}/mk
+ echo "export VNDEVICE=${VNDEVICE}" >> ${CHROOTDIR}/mk
+ echo "export OBJFORMAT=${OBJFORMAT}" >> ${CHROOTDIR}/mk
+.if defined(RELEASETAG)
+ echo "export RELEASETAG=${RELEASETAG}" >> ${CHROOTDIR}/mk
+.endif
+.if defined(NOPORTS)
+ echo "export NOPORTS=${NOPORTS}" >> ${CHROOTDIR}/mk
+.endif
+.if defined(NODOC)
+ echo "export NODOC=${NODOC}" >> ${CHROOTDIR}/mk
+.endif
+.if defined(ALLLANG) && ${ALLLANG} != "NO" && ${ALLLANG} != "no"
+ echo "export ALLLANG=${ALLLANG}" >> ${CHROOTDIR}/mk
+.else
+ echo "export DOC_LANG=en_US.ISO_8859-1" >> ${CHROOTDIR}/mk
+.endif
+.if defined(NOSRC)
+ echo "export NOSRC=${NOSRC}" >> ${CHROOTDIR}/mk
+.endif
+.if defined(NOSHARED)
+ echo "export NOSHARED=${NOSHARED}" >> ${CHROOTDIR}/mk
+.endif
+.if defined(BOOT_CONFIG)
+ echo "export BOOT_CONFIG=\"${BOOT_CONFIG}\"">> ${CHROOTDIR}/mk
+.endif
+.if defined(KERNEL_FLAGS)
+ echo "export KERNEL_FLAGS=\"${KERNEL_FLAGS}\"" >> ${CHROOTDIR}/mk
+.endif
+ # Don't remove this, or the build will fall over!
+ echo "export RELEASEDIR=${_R}" >> ${CHROOTDIR}/mk
+ echo "export PATH=${BOOTSTRAPDIR}:$${PATH}:${LOCALDIR}" >> ${CHROOTDIR}/mk
+ echo "if [ ! -f /tmp/.world_done ]; then" >> ${CHROOTDIR}/mk
+ echo " cd /usr/src" >> ${CHROOTDIR}/mk
+.if make(release)
+ echo " (cd etc; make distrib-dirs distribution)" >> ${CHROOTDIR}/mk
+ echo " make ${WORLD_FLAGS} world && \\" >> ${CHROOTDIR}/mk
+.endif
+.if make(rerelease)
+ echo " make ${WORLD_FLAGS} all install && \\" >> ${CHROOTDIR}/mk
+.endif
+ echo " touch /tmp/.world_done" >> ${CHROOTDIR}/mk
+ echo "fi" >> ${CHROOTDIR}/mk
+ echo "cd /usr/src/release" >> ${CHROOTDIR}/mk
+ echo "make \$${_RELTARGET}" >> ${CHROOTDIR}/mk
+ echo "echo \">>> make ${.TARGET} finished on \`LC_ALL=C TZ=GMT date\`\"" >> ${CHROOTDIR}/mk
+ chmod 755 ${CHROOTDIR}/mk
+ chroot ${CHROOTDIR} /mk
+
+clean:
+ rm -rf boot_crunch release.[0-9]
+
+# Clean out ${_R} and make the directory structure.
+release.1:
+ mkdir -p ${_R}
+ -rm -rf ${_R}/* 2> /dev/null
+ -chflags -R noschg ${_R}/.
+ rm -rf ${_R}/*
+ mkdir ${RD}
+ mkdir ${RD}/floppies
+ mkdir ${RD}/trees
+ mkdir ${RD}/dists
+ mkdir ${RD}/kernels
+ for i in ${DISTRIBUTIONS} ; do \
+ mkdir ${RD}/trees/$$i && \
+ mkdir ${RD}/dists/$$i && \
+ mtree -deU -f ${MTREEFILES}/BSD.root.dist \
+ -p ${RD}/trees/$$i > /dev/null && \
+ mtree -deU -f ${MTREEFILES}/BSD.usr.dist \
+ -p ${RD}/trees/$$i/usr > /dev/null && \
+ mtree -deU -f ${MTREEFILES}/BSD.include.dist \
+ -p ${RD}/trees/$$i/usr/include > /dev/null && \
+ mtree -deU -f ${MTREEFILES}/BSD.var.dist \
+ -p ${RD}/trees/$$i/var > /dev/null ; \
+ done
+ touch release.1
+
+# Install the system into the various distributions.
+release.2:
+ cd ${.CURDIR}/../etc && make distrib-dirs DESTDIR=${RD}/trees/bin
+ cd ${.CURDIR}/.. && make distribworld DISTDIR=${RD}/trees
+.if exists(${.CURDIR}/../kerberosIV) && exists(${.CURDIR}/../crypto) && !defined(NOKERBEROS)
+ cd ${.CURDIR}/../kerberosIV && ( \
+ make bootstrap &&\
+ make obj all help-distribute DISTDIR=${RD}/trees &&\
+ make kprog \
+ )
+.endif
+.if exists(${.CURDIR}/../kerberos5) && exists(${.CURDIR}/../crypto) && !defined(NOKERBEROS)
+ cd ${.CURDIR}/../kerberos5 && ( \
+ make bootstrap &&\
+ make obj all help-distribute DISTDIR=${RD}/trees &&\
+ make kprog \
+ )
+.endif
+ -chflags -R noschg ${RD}/trees
+ touch release.2
+
+# Make and install the generic kernel(s).
+release.3:
+.for kernel in ${KERNELS}
+ -chflags -R noschg ${RD}/kernels/${kernel}
+ rm -rf ${RD}/kernels/${kernel}
+ rm -rf ${.CURDIR}/../sys/compile/${kernel}
+ cd ${.CURDIR} && ${MAKE} doSTDKERNEL KERNEL=${kernel} KODIR=/${kernel}
+ rm -rf ${.CURDIR}/../sys/compile/${kernel}
+ -mkdir ${RD}/trees/bin/boot/${kernel}
+ cp -p ${RD}/kernels/${kernel}/kernel ${RD}/trees/bin/boot/${kernel}
+.endfor
+ # Install a standard boot kernel+modules
+ mkdir -p ${RD}/trees/bin/boot/kernel
+ cp -Rp ${RD}/kernels/GENERIC/* ${RD}/trees/bin/boot/kernel
+ touch release.3
+
+# Make and install the three crunched binaries which live on the floppies.
+# You are not supposed to like this :-)
+#
+# NB: the "RELEASE_BUILD_FIXIT" magic prevents vi from including the
+# Tcl and Perl APIs. See also /usr/src/usr.bin/vi/Makefile.
+# It also prevents ls linking against termcap by disabling color support.
+# See /usr/src/bin/ls/Makefile.
+release.4:
+ @mkdir -p /stand
+ rm -rf ${RD}/crunch
+ mkdir -p ${RD}/crunch
+ export RELEASE_BUILD_FIXIT=noway ; \
+ for j in ${CRUNCH_TARGETS} ; do \
+ rm -rf $${j}_crunch && \
+ mkdir $${j}_crunch && \
+ ( cd $${j}_crunch && \
+ ( ( [ -f ${.CURDIR}/${MACHINE}/$${j}_crunch.conf ] && \
+ crunchgen ${.CURDIR}/${MACHINE}/$${j}_crunch.conf ) || \
+ ( crunchgen ${.CURDIR}/$${j}_crunch.conf ) ) && \
+ ${MAKE} -DRELEASE_CRUNCH -f $${j}_crunch.mk subclean all \
+ NOCRYPT=yes "CFLAGS=${CFLAGS} -DCRUNCHED_BINARY") && \
+ mv $${j}_crunch/$${j}_crunch ${RD}/crunch/$${j} && \
+ true || { rm -rf $${j}_crunch ; false ; } ; \
+ done
+ touch release.4
+
+#
+# --==## Fix up the distributions. ##==--
+#
+release.5:
+ # Handle some grief caused by the munition braindeadness.
+ for i in bin/ed usr.sbin/ppp usr.sbin/pppd usr.sbin/sendmail usr.sbin/tcpdump/tcpdump ; do \
+ ( cd ${.CURDIR}/../$$i; \
+ make -DNOCRYPT clean all distribute DISTDIR=${RD}/trees ) ; \
+ done
+
+ # Create any "synthetic dists" now.
+ @for i in ${DISTRIBUTIONS}; do \
+ if [ -f ${.CURDIR}/scripts/$${i}-make.sh ]; then \
+ echo -n "Running $$i dist creation script... "; \
+ env OBJFORMAT=${OBJFORMAT} RD=${RD} sh ${.CURDIR}/scripts/$${i}-make.sh || echo "$$i distribution script returned bad status."; \
+ echo "Done."; \
+ fi \
+ done \
+
+ # Remove all the directories we don't need.
+ -cd ${RD}/trees && \
+ find ${OTHER_DISTS} ${COMPAT_DISTS} ${CRYPTO_DISTS} -depth -type d -print | xargs rmdir
+ touch release.5
+
+#
+# --==## Package up the tarballs from assembled trees ##==--
+#
+release.6:
+ rm -rf ${RD}/dists
+ mkdir -p ${RD}/dists
+ @for i in ${DISTRIBUTIONS} ; \
+ do \
+ if [ -d ${RD}/trees/$${i} ] ; then \
+ cd ${.CURDIR} && $(MAKE) doTARBALL \
+ SD=${RD}/trees/$${i} \
+ TN=$$i TD=$$i ARG="." && \
+ echo "$${i} distribution is finished."; \
+ fi ; \
+ done
+ # More munition braindeadness.
+ ( cd ${RD}/dists && \
+ if [ -f krb4/krb4.aa ] ; then \
+ mv krb4/krb4.* crypto && \
+ cat krb4/CHECKSUM.MD5 >> crypto/CHECKSUM.MD5 && \
+ rm -r krb4; \
+ fi )
+ ( cd ${RD}/dists && \
+ if [ -f krb5/krb5.aa ] ; then \
+ mv krb5/krb5.* crypto && \
+ cat krb5/CHECKSUM.MD5 >> crypto/CHECKSUM.MD5 && \
+ rm -r krb5; \
+ fi )
+ touch release.6
+
+
+#
+# --==## Make source dists ##==--
+#
+release.7:
+.if !defined(NOSRC)
+ @cd ${.CURDIR} && $(MAKE) doTARBALL SD=/usr/src \
+ TD=src TN=sbase ARG="[A-Z]*"
+ @for i in `cd /usr/src && echo [a-z]*` ; do \
+ if [ -d /usr/src/$$i ] ; then \
+ cd ${.CURDIR} && $(MAKE) doTARBALL \
+ TN=`echo s$$i | tr -d '.' | \
+ sed -e 's/usr/u/' \
+ -e 's/kerberosIV/krb4/' \
+ -e 's/kerberos5/krb5/'` \
+ SD=/usr/src TD=src ARG="$$i" ; \
+ fi ; \
+ done
+.if defined(EXTRA_SRC)
+ @set ${EXTRA_SRC} && \
+ while [ $$# -ge 2 ] ; do \
+ if [ -d /usr/src/$$1 ] ; then \
+ cd ${.CURDIR} && $(MAKE) doTARBALL \
+ SD=/usr/src TN="s$$2" TD=src ARG="$$1" ; \
+ fi && shift && shift ; \
+ done
+.endif
+ if [ -d ${RD}/dists/crypto ] ; then ( cd ${RD}/dists/src && \
+ if [ -f ssecure.aa ] ; then mv ssecure.* ../crypto ; fi && \
+ if [ -f scrypto.aa ] ; then mv scrypto.* ../crypto ; fi && \
+ if [ -f skrb4.aa ] ; then mv skrb4.* ../crypto ; fi && \
+ if [ -f skrb5.aa ] ; then mv skrb5.* ../crypto ; fi ; ) ; fi
+ @echo "src distribution is finished."
+.endif
+ touch release.7
+
+# Complete the bootfd
+#
+# Now, just to get this picture down once and for all:
+#
+# +------------------------------------------------------------------------+
+# |boot.flp |
+# +-----+-----+------------------------------------------------------------+
+# |boot1|boot2|floppy filesystem "bootfd" |
+# +-----+-----+-+--------------------------------------------------------+-+
+# |kernel |
+# +------------+-----------------------------------------+-+
+# |mfs filesystem "mfsfd" |
+# +-----------------------------------------+
+#
+
+release.8: write_mfs_in_kernel
+ rm -rf ${RD}/mfsfd
+ mkdir ${RD}/mfsfd
+ cd ${RD}/mfsfd && \
+ mkdir -p etc/defaults dev mnt stand/help
+ @cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=boot \
+ DIR=${RD}/mfsfd/stand ZIP=false
+ ( cd ${RD}/trees/bin/dev && \
+ ls console tty bpf0 ttyv0 ttyv1 ttyv2 ttyv3 null zero card0 card1 card2 card3 usb usb0 uhid0 ums0 ulpt0 ugen0 kbd0 kmem mem | \
+ cpio -dump ${RD}/mfsfd/dev )
+ ( cd ${RD}/mfsfd/dev && rm -f *[swo]d*[bdefgh] )
+ ( cd ${RD}/mfsfd && \
+ for dir in bin sbin ; do \
+ ln -sf /stand $$dir; \
+ done )
+ cp /sbin/dhclient-script ${RD}/mfsfd/stand
+ cp ${.CURDIR}/../etc/defaults/pccard.conf ${RD}/mfsfd/etc/defaults/pccard.conf
+ cp ${.CURDIR}/../etc/usbd.conf ${RD}/mfsfd/etc/usbd.conf
+ cd ${RD}/trees/bin && ls ${BOOT1} | cpio -dump ${RD}/mfsfd/stand
+ grep -E '^(ftp|nameserver|domain|sunrpc|cmd|nfsd)[^-\w]' \
+ ${.CURDIR}/../etc/services > ${RD}/mfsfd/stand/etc/services
+ ln ${RD}/mfsfd/stand/etc/services ${RD}/mfsfd/etc/services
+ ln ${RD}/mfsfd/stand/etc/netconfig ${RD}/mfsfd/etc/netconfig
+ gzip -9c ${.CURDIR}/../COPYRIGHT > ${RD}/mfsfd/stand/help/COPYRIGHT.hlp.gz
+ @for i in README.TXT RELNOTES.TXT INSTALL.TXT UPGRADE.TXT HARDWARE.TXT; do \
+ if [ -f ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} ]; then \
+ gzip -9c ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} > ${RD}/mfsfd/stand/help/$${i}.gz; \
+ else \
+ gzip -9c ${.CURDIR}/texts/$${i} > ${RD}/mfsfd/stand/help/$${i}.gz; \
+ fi; \
+ done
+ -test -f ${.CURDIR}/install.cfg && cp ${.CURDIR}/install.cfg ${RD}/mfsfd
+ @mkdir -p ${RD}/mfsfd/boot
+ @cp /boot/boot* ${RD}/mfsfd/boot
+ @cp /boot/loader.help ${RD}/mfsfd/boot
+ @cd ${.CURDIR} && ${MAKE} createBOOTMFS
+.if exists(${.CURDIR}/${MACHINE_ARCH}/drivers.conf)
+ @cd ${.CURDIR} && ${MAKE} doMODULES KERNEL=BOOTMFS KERNEL_KO=BOOTMFS KODIR=""
+.endif
+ @echo "Making the regular boot floppy."
+ @tar --exclude CVS -cf - -C /usr/src/usr.sbin/sysinstall help | \
+ tar xf - -C ${RD}/mfsfd/stand
+ @echo "Compressing doc files..."
+ @gzip -9 ${RD}/mfsfd/stand/help/*.hlp
+.if exists(${.CURDIR}/${MACHINE_ARCH}/drivers.conf)
+ @mkdir -p ${RD}/mfsfd/stand/modules
+ @perl ${.CURDIR}/scripts/driver-copy2.pl \
+ ${.CURDIR}/${MACHINE_ARCH}/drivers.conf \
+ ${RD}/kernels ${RD}/mfsfd/stand/modules
+.endif
+ sh -e ${.CURDIR}/scripts/doFS.sh -s mfsroot ${RD} ${MNT} \
+ ${MFSSIZE} ${RD}/mfsfd ${MFSINODE} ${MFSLABEL}
+ @gzip -9vc mfsroot > mfsroot.gz
+.if ${MACHINE} == "pc98"
+ @sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/mfsroot.flp \
+ ${RD} ${MNT} ${SMALLBOOTSIZE} mfsroot.gz \
+ ${BOOTINODE} ${SMALLBOOTLABEL}
+ @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern-small FDSIZE=SMALL
+ @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern
+.else
+ @sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/mfsroot.flp \
+ ${RD} ${MNT} ${BOOTSIZE} mfsroot.gz ${BOOTINODE} ${BOOTLABEL}
+ @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern
+ @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=boot FDSIZE=BIG
+.endif
+ @rm mfsroot mfsroot.gz mfsroot.size
+ @echo "Regular and MFS boot floppies made."
+ touch release.8
+
+#
+# --==## Create a fixit floppy ##==--
+#
+release.9:
+ @echo "Making fixit floppy."
+ @rm -rf ${RD}/fixitfd
+ @mkdir ${RD}/fixitfd
+ @cd ${RD}/fixitfd && \
+ mkdir -p dev stand bin sbin etc mnt mnt1 mnt2 mnt3 mnt4 tmp \
+ usr/share/misc
+ @cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=fixit \
+ DIR=${RD}/fixitfd/stand ZIP=false
+ @( cd ${RD}/fixitfd/dev && \
+ cp ${RD}/trees/bin/dev/MAKEDEV MAKEDEV && \
+ chmod 755 MAKEDEV && \
+ sh MAKEDEV fixit )
+ @cp ${RD}/trees/bin/etc/spwd.db ${RD}/trees/bin/etc/group \
+ ${RD}/trees/bin/etc/protocols ${RD}/fixitfd/etc
+ @cp ${RD}/trees/bin/usr/share/misc/scsi_modes \
+ ${RD}/fixitfd/usr/share/misc
+ @cp ${.CURDIR}/fixit.profile ${RD}/fixitfd/.profile
+ @cp ${.CURDIR}/fixit.services ${RD}/fixitfd/etc/services
+ @cp ${.CURDIR}/scripts/tar.sh ${RD}/fixitfd/stand/tar
+ @chmod 555 ${RD}/fixitfd/stand/tar
+ @sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/fixit.flp ${RD} \
+ ${MNT} ${FIXITSIZE} ${RD}/fixitfd ${FIXITINODE} ${FIXITLABEL}
+# Do our last minute floppies directory setup in a convenient place.
+ @cp ${.CURDIR}/texts/FLOPPIES.TXT ${RD}/floppies/README.TXT
+ @(cd ${RD}/floppies; md5 README.TXT *.flp > CHECKSUM.MD5)
+ touch release.9
+
+#
+# --==## Setup a suitable ftp-area ##==--
+#
+ftp.1:
+ @echo "Setting up FTP distribution area"
+ @mkdir -p ${FD}
+ -@ln -s . ${FD}/${BUILDNAME}
+ @cd ${RD} && find floppies -print | cpio -dumpl ${FD}
+ @cd ${RD}/dists && find . -print | cpio -dumpl ${FD}
+ @for i in ${DIST_DOCS}; do \
+ if [ -f ${.CURDIR}/texts/$${i} ]; then \
+ cp ${.CURDIR}/texts/$${i} ${FD}; \
+ fi; \
+ if [ -f ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} ]; then \
+ echo "=== Platform specifics for ${MACHINE_ARCH}" >> ${FD}/$${i}; \
+ cat ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} >> ${FD}/$${i}; \
+ fi; \
+ done
+ @echo "CD_VERSION = ${BUILDNAME}" > ${FD}/cdrom.inf
+.if !defined(NOPORTS)
+ @tar --exclude CVS -cBf - -C ${CD_DISC1} ports | tar -xBf - -C ${FD}
+.endif
+ touch ftp.1
+
+#
+# --==## Setup a suitable cdrom-area ##==--
+#
+cdrom.1:
+ @echo "Setting up CDROM distribution area"
+ @mkdir -p ${CD_DISC1} ${CD_DISC2}
+ @cd ${RD} && find floppies -print | cpio -dumpl ${CD_DISC1}
+ @cd ${RD}/dists && find . -print | cpio -dumpl ${CD_DISC1}
+ @ln -f ${RD}/kernels/MFSKERNEL.boot ${CD_DISC1}/kernel
+ @for i in ${DISTRIBUTIONS} ; \
+ do \
+ if [ -d ${RD}/trees/$${i} ] ; then \
+ chflags -R noschg ${RD}/trees/$${i} || true ; \
+ ( cd ${RD}/trees/$${i} && \
+ find . -depth -print | cpio -dumpl ${CD_DISC2} ) ; \
+ fi \
+ done
+ @rm -f ${CD_DISC2}/.profile
+ @cp ${.CURDIR}/fixit.profile ${CD_DISC2}/.profile
+ @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC1}/cdrom.inf
+ @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC2}/cdrom.inf
+ @for i in ${DIST_DOCS}; do \
+ if [ -f ${.CURDIR}/texts/$${i} ]; then \
+ cp ${.CURDIR}/texts/$${i} ${CD_DISC1}; \
+ fi; \
+ if [ -f ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} ]; then \
+ echo "=== Platform specifics for ${MACHINE_ARCH}" >> ${CD_DISC1}/$${i}; \
+ cat ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} >> ${CD_DISC1}/$${i}; \
+ fi; \
+ done
+.if ${MACHINE_ARCH} == "alpha"
+ @echo "Setting up Alpha CD disc1 for booting"
+ @cp -Rp ${RD}/image.boot/boot ${CD_DISC1}
+ @ln -f ${CD_DISC2}/boot/cdboot ${CD_DISC1}/boot
+ @ln -f ${CD_DISC1}/boot/loader.rc ${CD_DISC2}/boot
+ @ln -f ${CD_DISC1}/kernel ${CD_DISC2}/kernel
+.endif
+.if !defined(NOPORTS)
+ @-rm -rf /usr/ports/distfiles/*
+ @mkdir -p ${CD_DISC1}/ports && \
+ tar --exclude CVS -czf ${CD_DISC1}/ports/ports.tgz -C /usr ports && \
+ cp ${.CURDIR}/scripts/ports-install.sh ${CD_DISC1}/ports/install.sh \
+ && (cd ${CD_DISC1}/ports; md5 * > CHECKSUM.MD5)
+.endif
+ touch cdrom.1
+
+doc.1:
+ @echo "Making docs..."
+ @for i in ${DOCPORTS}; do \
+ cd /usr/ports/$$i && make all install clean JADETEX=no FORCE_PKG_REGISTER=yes; \
+ done
+ @cd /usr/doc && make all install 'FORMATS=html html-split txt' INSTALL_COMPRESSED='' DOCDIR=${RD}/trees/bin/usr/share/doc
+ touch doc.1
+
+# Various "subroutine" and other supporting targets.
+
+# RD=
+# SD=
+# TD=
+# ARG=
+doTARBALL:
+.if !defined(SD)
+ @echo "SD undefined in doTARBALL" && exit 1
+.endif
+.if !defined(TD)
+ @echo "TB undefined in doTARBALL" && exit 1
+.endif
+.if !defined(ARG)
+ @echo "ARG undefined in doTARBALL" && exit 1
+.endif
+ @rm -rf ${RD}/dists/${TD}/${TN}*
+ @mkdir -p ${RD}/dists/${TD}
+ @( cd ${SD} && \
+ tn=`echo ${TN} | tr '[A-Z]' '[a-z]' | cut -c1-8` && \
+ echo rolling ${TD}/$$tn tarball &&\
+ tar --exclude CVS --exclude obj --exclude BOOTMFS -cf - ${ARG} | \
+ ${ZIPNSPLIT} ${RD}/dists/${TD}/$$tn. && \
+ sh ${.CURDIR}/scripts/info.sh ${RD}/dists/${TD}/$$tn > \
+ ${RD}/dists/${TD}/$$tn.inf && \
+ if [ -f ${.CURDIR}/scripts/$${TD}-install.sh ]; then \
+ cp -p ${.CURDIR}/scripts/$${TD}-install.sh ${RD}/dists/${TD}/install.sh; \
+ fi && \
+ if [ "${SD}" != "/usr/src" ]; then \
+ mtree -c -i -p ${SD}/${ARG} \
+ -k gname,md5digest,mode,nlink,uname,size,link,type \
+ > ${RD}/dists/${TD}/$$tn.mtree ; \
+ else \
+ true; \
+ fi; \
+ (cd ${RD}/dists/${TD}; \
+ rm -f CHECKSUM.MD5; \
+ md5 * > CHECKSUM.MD5) \
+ )
+
+doRELEASE: release.1 release.2 ${DOCREL} release.3 release.4 release.5 \
+ release.6 release.7 release.8 release.9
+ @cd ${.CURDIR} && ${MAKE} ${EXTRAS}
+ @echo "Release done"
+
+floppies:
+ @cd ${.CURDIR} && ${MAKE} boot.flp
+ @cd ${.CURDIR} && ${MAKE} fixit.flp
+ @cd ${RD} && find floppies -print | cpio -dumpl ${FD}
+
+boot.flp:
+ @rm -f release.4 release.8
+ @cd ${.CURDIR} && ${MAKE} release.4 release.8 CRUNCH_TARGETS=boot
+
+fixit.flp:
+ @rm -f release.4 release.9
+ @cd ${.CURDIR} && ${MAKE} release.4 release.9 CRUNCH_TARGETS=fixit
+
+write_mfs_in_kernel: ${.CURDIR}/write_mfs_in_kernel.c
+ ${CC} ${CFLAGS} -o write_mfs_in_kernel ${.CURDIR}/write_mfs_in_kernel.c
+
+installCRUNCH:
+.if !defined(CRUNCH)
+ @echo "CRUNCH undefined in installCRUNCH" && exit 1
+.endif
+.if !defined(DIR)
+ @echo "DIR undefined in installCRUNCH" && exit 1
+.endif
+.if !defined(ZIP)
+ @echo "ZIP undefined in installCRUNCH" && exit 1
+.endif
+ @if ${ZIP} ; then \
+ gzip -9 < ${RD}/crunch/${CRUNCH} > ${DIR}/${CRUNCH}_crunch ; \
+ else \
+ ln -f ${RD}/crunch/${CRUNCH} ${DIR}/${CRUNCH}_crunch ; \
+ fi
+ @chmod 555 ${DIR}/${CRUNCH}_crunch
+ @if [ -f ${.CURDIR}/${MACHINE}/${CRUNCH}_crunch.conf ] ; then \
+ for i in `crunchgen -l ${.CURDIR}/${MACHINE}/${CRUNCH}_crunch.conf` ; do \
+ ln -f ${DIR}/${CRUNCH}_crunch ${DIR}/$$i ; \
+ done \
+ else \
+ for i in `crunchgen -l ${.CURDIR}/${CRUNCH}_crunch.conf` ; do \
+ ln -f ${DIR}/${CRUNCH}_crunch ${DIR}/$$i ; \
+ done \
+ fi
+
+#
+# --==## BOOTMFS config file ##==--
+#
+
+createBOOTMFS:
+ @cd ${.CURDIR}/../sys/${MACHINE}/conf && \
+ sh ${.CURDIR}/scripts/dokern.sh ${FDSIZE} < ${KERNCONF} > BOOTMFS && \
+ [ -r ${KERNCONF}.hints ] && cp ${KERNCONF}.hints BOOTMFS.hints
+.if ${MACHINE_ARCH} == "i386"
+ @echo "options INTRO_USERCONFIG" >> \
+ ${.CURDIR}/../sys/${MACHINE}/conf/BOOTMFS
+.endif
+.if defined(FDSIZE) && ${FDSIZE} == "BIG"
+ @echo "options MD_ROOT_SIZE=`cat mfsroot.size`" >> \
+ ${.CURDIR}/../sys/${MACHINE}/conf/BOOTMFS
+.endif
+.if exists(${.CURDIR}/${MACHINE_ARCH}/drivers.conf)
+ @perl ${.CURDIR}/scripts/driver-remove.pl \
+ ${.CURDIR}/${MACHINE_ARCH}/drivers.conf \
+ ${.CURDIR}/../sys/${MACHINE}/conf/BOOTMFS
+.endif
+
+#
+# --==## Compile a kernel by name ${KERNEL} ##==--
+#
+# We don't erase the sys/compile/${KERNEL} directory, since somebody
+# may want to reuse it (release.8 presently)
+#
+doKERNEL:
+ @rm -f ${RD}/kernels/${KERNEL}
+ @cd ${.CURDIR}/../sys/${MACHINE}/conf && config ${KERNEL}
+ @cd ${.CURDIR}/../sys/compile/${KERNEL} && \
+ make kernel-depend && \
+ make ${KERNEL_FLAGS} ${KERNEL_KO} && \
+ make kernel-reinstall DESTDIR=${RD}/kernels && \
+ [ -r ${.CURDIR}/../sys/${MACHINE}/conf/${KERNEL}.hints ] && \
+ cp ${.CURDIR}/../sys/${MACHINE}/conf/${KERNEL}.hints ${RD}/kernels
+
+doMODULES:
+ @rm -f ${RD}/kernels/*.ko
+ @cd ${.CURDIR}/../sys/${MACHINE}/conf && config ${KERNEL}
+ @cd ${.CURDIR}/../sys/compile/${KERNEL} && \
+ make kernel-depend && \
+ make ${KERNEL_FLAGS} modules && \
+ make modules-reinstall DESTDIR=${RD}/kernels && \
+
+doSTDKERNEL:
+ @rm -f ${RD}/kernels/${KERNEL}
+ @cd ${.CURDIR}/../sys/${MACHINE}/conf && config ${KERNEL}
+ @cd ${.CURDIR}/../sys/compile/${KERNEL} && \
+ make depend && \
+ make ${KERNEL_FLAGS} KERNEL=${kernel} && \
+ make KERNEL=${kernel} DESTDIR=${RD}/kernels install && \
+ [ -r ${.CURDIR}/../sys/${MACHINE}/conf/${KERNEL}.hints ] && \
+ cp ${.CURDIR}/../sys/${MACHINE}/conf/${KERNEL}.hints ${RD}/kernels
+
+#
+# --==## Put a filesystem into a BOOTMFS kernel ##==--
+#
+doMFSKERN:
+ @echo "Running doMFSKERN for ${FSIMAGE}"
+ @rm -f ${RD}/kernels/BOOTMFS.${FSIMAGE}
+ @cd ${.CURDIR} && ${MAKE} createBOOTMFS
+ @cd ${.CURDIR} && ${MAKE} doKERNEL KERNEL=BOOTMFS KERNEL_KO=BOOTMFS KODIR=""
+ @rm -rf ${RD}/image.${FSIMAGE}
+ @mkdir ${RD}/image.${FSIMAGE}
+ @cd ${RD}/kernels && \
+ (chflags noschg BOOTMFS || true) && \
+ strip BOOTMFS && \
+ cp BOOTMFS BOOTMFS.${FSIMAGE} && \
+ [ -r BOOTMFS.hints ] && mv BOOTMFS.hints BOOTMFS.${FSIMAGE}.hints
+ mv ${RD}/kernels/BOOTMFS ${RD}/image.${FSIMAGE}/kernel
+ @echo "Setting up /boot directory for ${FSIMAGE} floppy"
+ @mkdir -p ${RD}/image.${FSIMAGE}/boot
+ @cp /boot/loader ${RD}/image.${FSIMAGE}/boot
+ @[ -r ${RD}/kernels/BOOTMFS.${FSIMAGE}.hints ] && \
+ sed -e '/^hint/s/^/set /' -e '/^#/d' \
+ ${RD}/kernels/BOOTMFS.${FSIMAGE}.hints > \
+ ${RD}/image.${FSIMAGE}/boot/device.hints && \
+ echo "include /boot/device.hints" > ${RD}/image.${FSIMAGE}/boot/loader.rc
+ @echo "load /kernel" >> ${RD}/image.${FSIMAGE}/boot/loader.rc
+.if !defined(FDSIZE) || ${FDSIZE} != "BIG"
+ @echo "echo \\007\\007" >> ${RD}/image.${FSIMAGE}/boot/loader.rc
+ @echo "echo Please insert MFS root floppy and press enter:" >> ${RD}/image.${FSIMAGE}/boot/loader.rc
+ @echo "read" >> ${RD}/image.${FSIMAGE}/boot/loader.rc
+ @echo "load -t mfs_root /mfsroot" >> ${RD}/image.${FSIMAGE}/boot/loader.rc
+.endif
+ @echo "echo \\007\\007" >> ${RD}/image.${FSIMAGE}/boot/loader.rc
+ @echo "autoboot 10" >> ${RD}/image.${FSIMAGE}/boot/loader.rc
+.if ${MACHINE_ARCH} == "i386" && ${AUTO_KEYBOARD_DETECT}
+ @echo "-P" >> ${RD}/image.${FSIMAGE}/boot.config
+.endif
+.if defined(FDSIZE) && ${FDSIZE} == "BIG"
+ @echo "Writing MFS image into kernel for ${FSIMAGE} floppy"
+ @./write_mfs_in_kernel ${RD}/image.${FSIMAGE}/kernel mfsroot
+ @cp ${RD}/image.${FSIMAGE}/kernel ${RD}/kernels/MFSKERNEL.${FSIMAGE}
+.endif
+ @gzip -9v ${RD}/image.${FSIMAGE}/kernel
+ @rm -f ${RD}/floppies/${FSIMAGE}.flp
+.if defined(FDSIZE) && ${FDSIZE} == "BIG"
+ sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/${FSIMAGE}.flp \
+ ${RD} ${MNT} ${BIGBOOTSIZE} ${RD}/image.${FSIMAGE} \
+ ${BOOTINODE} ${BIGBOOTLABEL}
+.elif defined(FDSIZE) && ${FDSIZE} == "SMALL"
+ sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/${FSIMAGE}.flp \
+ ${RD} ${MNT} ${SMALLBOOTSIZE} ${RD}/image.${FSIMAGE} \
+ ${BOOTINODE} ${SMALLBOOTLABEL}
+.else
+ sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/${FSIMAGE}.flp \
+ ${RD} ${MNT} ${BOOTSIZE} ${RD}/image.${FSIMAGE} \
+ ${BOOTINODE} ${BOOTLABEL}
+.endif
+ @echo "Created ${RD}/floppies/${FSIMAGE}.flp"
+
+.include <bsd.prog.mk>
diff --git a/release/alpha/boot_crunch.conf b/release/alpha/boot_crunch.conf
new file mode 100644
index 000000000000..9d14ccf08ec4
--- /dev/null
+++ b/release/alpha/boot_crunch.conf
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+srcdirs /usr/src/bin /usr/src/sbin /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin /usr/src/usr.sbin
+srcdirs /usr/src/usr.sbin/pccard
+
+progs sh find sed test rm
+progs pwd ppp
+progs sysinstall newfs minigzip cpio fsck fsck_4.2bsd ifconfig route slattach
+progs mount_nfs
+progs dhclient arp hostname
+progs rtsol
+progs pccardc pccardd
+progs usbd usbdevs
+progs tunefs
+ln minigzip gzip
+ln minigzip gunzip
+ln minigzip zcat
+ln sh -sh
+ln test [
+ln newfs mount_mfs
+
+libs -ll -ledit -lutil -lkvm -lmd -lcrypt -lftpio -lz -lnetgraph
+libs -ldialog -lncurses -lmytinfo -ldisk -lipx
diff --git a/release/alpha/dokern.sh b/release/alpha/dokern.sh
new file mode 100755
index 000000000000..47296bdc7aae
--- /dev/null
+++ b/release/alpha/dokern.sh
@@ -0,0 +1,161 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+if [ $# -lt 1 ]; then
+ FDSIZE=NORMAL
+else
+ FDSIZE=$1
+fi
+
+ARCH="`uname -m`"
+
+# First check for the standard x86 PC class.
+if [ "${ARCH}" = "i386" ]; then
+
+if [ "${FDSIZE}" = "SMALL" ]; then
+
+sed -e '/ pci$/d' \
+ -e '/ adv/d' \
+ -e '/ ahc/d' \
+ -e '/ amd/d' \
+ -e '/ isp/d' \
+ -e '/ ncr/d' \
+ -e '/ sym/d' \
+ -e '/ de/d' \
+ -e '/ fxp/d' \
+ -e '/ tx/d' \
+ -e '/ vx/d' \
+ -e '/ wx/d' \
+ -e '/ dc/d' \
+ -e '/ pcn/d' \
+ -e '/ rl/d' \
+ -e '/ sf/d' \
+ -e '/ sis/d' \
+ -e '/ ste/d' \
+ -e '/ tl/d' \
+ -e '/ vr/d' \
+ -e '/ wb/d' \
+ -e '/ xl/d' \
+ -e '/pty/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSVMSG/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ulpt/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+
+else
+
+sed -e '/pty/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSVMSG/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/ncr/d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/wds/d' \
+ -e '/lpt/d' \
+ -e '/ppi/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ulpt/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+
+fi
+
+echo "options NETGRAPH"
+echo "options NETGRAPH_ETHER"
+echo "options NETGRAPH_PPPOE"
+echo "options NETGRAPH_SOCKET"
+
+# Otherwise maybe it's an alpha, and it has big binaries.
+elif [ "${ARCH}" = "alpha" ]; then
+
+sed -e '/pty/d' \
+ -e '/DEC_3000_300/d' \
+ -e '/DEC_3000_500/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ sl /d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/NOBLOCKRANDOM/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSV/d' \
+ -e '/P1003_1B/d' \
+ -e '/_KPOSIX_PRIORITY_SCHEDULING/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/MSDOSFS/d' \
+ -e '/ncr/d' \
+ -e '/ le /d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/lpt/d' \
+ -e '/ppi/d' \
+ -e '/vpo/d' \
+ -e '/uhci/d' \
+ -e '/ohci/d' \
+ -e '/usb/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ukbd/d' \
+ -e '/ulpt/d' \
+ -e '/umass/d' \
+ -e '/ums/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/aue/d' \
+ -e '/cue/d' \
+ -e '/kue/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+fi
+
+# reset maxusers to something lower
+echo "maxusers 5"
+
+echo "options NFS_NOSERVER"
+echo "options SCSI_NO_OP_STRINGS"
+echo "options SCSI_NO_SENSE_STRINGS"
diff --git a/release/alpha/fixit_crunch.conf b/release/alpha/fixit_crunch.conf
new file mode 100644
index 000000000000..e8bd0ed6bd83
--- /dev/null
+++ b/release/alpha/fixit_crunch.conf
@@ -0,0 +1,37 @@
+# $FreeBSD$
+
+# first, we list the source dirs that our programs reside in. These are
+# searched in order listed to find the dir containing each program.
+
+srcdirs /usr/src/bin /usr/src/sbin /usr/src/usr.bin /usr/src/usr.sbin
+srcdirs /usr/src/gnu/usr.bin /usr/src/usr.bin/vi
+
+# second, we list all the programs we want to include in our crunched binary.
+# The order doesn't matter. Any program that needs hard links to it gets an
+# `ln' directive.
+
+# /bin stuff
+
+progs cat chmod chroot cp dd df echo expr kill ln ls mkdir
+progs mv rm rmdir sleep sync
+
+# /sbin stuff
+
+progs chown clri disklabel dmesg
+progs mknod mount reboot restore swapon umount
+
+progs mount_msdos mount_cd9660
+
+ln restore rrestore
+ln chown chgrp
+
+# /usr/bin stuff
+
+progs ftp telnet vi grep
+ln vi view
+ln vi ex
+
+# finally, we specify the libraries to link in with our binary
+
+libs -lcrypt -ltelnet -lutil -ll -lm
+libs -lcurses -ltermcap -ledit -lgnuregex -lkvm -lz
diff --git a/release/amd64/boot_crunch.conf b/release/amd64/boot_crunch.conf
new file mode 100644
index 000000000000..9d14ccf08ec4
--- /dev/null
+++ b/release/amd64/boot_crunch.conf
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+srcdirs /usr/src/bin /usr/src/sbin /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin /usr/src/usr.sbin
+srcdirs /usr/src/usr.sbin/pccard
+
+progs sh find sed test rm
+progs pwd ppp
+progs sysinstall newfs minigzip cpio fsck fsck_4.2bsd ifconfig route slattach
+progs mount_nfs
+progs dhclient arp hostname
+progs rtsol
+progs pccardc pccardd
+progs usbd usbdevs
+progs tunefs
+ln minigzip gzip
+ln minigzip gunzip
+ln minigzip zcat
+ln sh -sh
+ln test [
+ln newfs mount_mfs
+
+libs -ll -ledit -lutil -lkvm -lmd -lcrypt -lftpio -lz -lnetgraph
+libs -ldialog -lncurses -lmytinfo -ldisk -lipx
diff --git a/release/amd64/dokern.sh b/release/amd64/dokern.sh
new file mode 100755
index 000000000000..47296bdc7aae
--- /dev/null
+++ b/release/amd64/dokern.sh
@@ -0,0 +1,161 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+if [ $# -lt 1 ]; then
+ FDSIZE=NORMAL
+else
+ FDSIZE=$1
+fi
+
+ARCH="`uname -m`"
+
+# First check for the standard x86 PC class.
+if [ "${ARCH}" = "i386" ]; then
+
+if [ "${FDSIZE}" = "SMALL" ]; then
+
+sed -e '/ pci$/d' \
+ -e '/ adv/d' \
+ -e '/ ahc/d' \
+ -e '/ amd/d' \
+ -e '/ isp/d' \
+ -e '/ ncr/d' \
+ -e '/ sym/d' \
+ -e '/ de/d' \
+ -e '/ fxp/d' \
+ -e '/ tx/d' \
+ -e '/ vx/d' \
+ -e '/ wx/d' \
+ -e '/ dc/d' \
+ -e '/ pcn/d' \
+ -e '/ rl/d' \
+ -e '/ sf/d' \
+ -e '/ sis/d' \
+ -e '/ ste/d' \
+ -e '/ tl/d' \
+ -e '/ vr/d' \
+ -e '/ wb/d' \
+ -e '/ xl/d' \
+ -e '/pty/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSVMSG/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ulpt/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+
+else
+
+sed -e '/pty/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSVMSG/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/ncr/d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/wds/d' \
+ -e '/lpt/d' \
+ -e '/ppi/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ulpt/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+
+fi
+
+echo "options NETGRAPH"
+echo "options NETGRAPH_ETHER"
+echo "options NETGRAPH_PPPOE"
+echo "options NETGRAPH_SOCKET"
+
+# Otherwise maybe it's an alpha, and it has big binaries.
+elif [ "${ARCH}" = "alpha" ]; then
+
+sed -e '/pty/d' \
+ -e '/DEC_3000_300/d' \
+ -e '/DEC_3000_500/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ sl /d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/NOBLOCKRANDOM/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSV/d' \
+ -e '/P1003_1B/d' \
+ -e '/_KPOSIX_PRIORITY_SCHEDULING/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/MSDOSFS/d' \
+ -e '/ncr/d' \
+ -e '/ le /d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/lpt/d' \
+ -e '/ppi/d' \
+ -e '/vpo/d' \
+ -e '/uhci/d' \
+ -e '/ohci/d' \
+ -e '/usb/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ukbd/d' \
+ -e '/ulpt/d' \
+ -e '/umass/d' \
+ -e '/ums/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/aue/d' \
+ -e '/cue/d' \
+ -e '/kue/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+fi
+
+# reset maxusers to something lower
+echo "maxusers 5"
+
+echo "options NFS_NOSERVER"
+echo "options SCSI_NO_OP_STRINGS"
+echo "options SCSI_NO_SENSE_STRINGS"
diff --git a/release/amd64/fixit_crunch.conf b/release/amd64/fixit_crunch.conf
new file mode 100644
index 000000000000..7dca73777999
--- /dev/null
+++ b/release/amd64/fixit_crunch.conf
@@ -0,0 +1,38 @@
+# $FreeBSD$
+
+# first, we list the source dirs that our programs reside in. These are
+# searched in order listed to find the dir containing each program.
+
+srcdirs /usr/src/bin /usr/src/sbin /usr/src/usr.bin /usr/src/usr.sbin
+srcdirs /usr/src/gnu/usr.bin /usr/src/usr.bin/vi
+srcdirs /usr/src/sbin/i386
+
+# second, we list all the programs we want to include in our crunched binary.
+# The order doesn't matter. Any program that needs hard links to it gets an
+# `ln' directive.
+
+# /bin stuff
+
+progs cat chmod chroot cp dd df echo expr kill ln ls mkdir
+progs mv rm rmdir sleep sync
+
+# /sbin stuff
+
+progs chown clri disklabel dmesg fdisk
+progs mknod mount reboot restore swapon umount
+
+progs mount_msdos mount_cd9660
+
+ln restore rrestore
+ln chown chgrp
+
+# /usr/bin stuff
+
+progs ftp telnet vi grep
+ln vi view
+ln vi ex
+
+# finally, we specify the libraries to link in with our binary
+
+libs -lcrypt -ltelnet -lutil -ll -lm
+libs -lcurses -ltermcap -ledit -lgnuregex -lkvm -lz
diff --git a/release/boot_crunch.conf b/release/boot_crunch.conf
new file mode 100644
index 000000000000..9d14ccf08ec4
--- /dev/null
+++ b/release/boot_crunch.conf
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+srcdirs /usr/src/bin /usr/src/sbin /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin /usr/src/usr.sbin
+srcdirs /usr/src/usr.sbin/pccard
+
+progs sh find sed test rm
+progs pwd ppp
+progs sysinstall newfs minigzip cpio fsck fsck_4.2bsd ifconfig route slattach
+progs mount_nfs
+progs dhclient arp hostname
+progs rtsol
+progs pccardc pccardd
+progs usbd usbdevs
+progs tunefs
+ln minigzip gzip
+ln minigzip gunzip
+ln minigzip zcat
+ln sh -sh
+ln test [
+ln newfs mount_mfs
+
+libs -ll -ledit -lutil -lkvm -lmd -lcrypt -lftpio -lz -lnetgraph
+libs -ldialog -lncurses -lmytinfo -ldisk -lipx
diff --git a/release/fixit.profile b/release/fixit.profile
new file mode 100644
index 000000000000..fcd2830756a1
--- /dev/null
+++ b/release/fixit.profile
@@ -0,0 +1,36 @@
+:
+# $FreeBSD$
+
+export BLOCKSIZE=K
+export PS1="Fixit# "
+export EDITOR="/mnt2/stand/vi"
+export PAGER="/mnt2/stand/more"
+export SCSI_MODES="/mnt2/usr/share/misc/scsi_modes"
+# the root MFS doesn't have /dev/nrsa0, pick a better default for mt(1)
+export TAPE=/mnt2/dev/nrsa0
+
+alias ls="ls -F"
+alias ll="ls -l"
+alias m="more -e"
+
+echo '+---------------------------------------------------------------+'
+echo '| You are now running from a FreeBSD "fixit" floppy. |'
+echo '| ------------------------------------------------------------- |'
+echo "| When you're finished with this shell, please type exit. |"
+echo '| The fixit floppy itself is mounted as /mnt2. |'
+echo '| |'
+echo '| You might want to symlink /mnt/etc/*pwd.db and /mnt/etc/group |'
+echo '| to /etc after mounting a root filesystem from your disk. |'
+echo '| tar(1) will not restore all permissions correctly otherwise! |'
+echo '| |'
+echo '| Note: you might use the arrow keys to browse through the |'
+echo '| command history of this shell. |'
+echo '+---------------------------------------------------------------+'
+echo
+echo 'Good Luck!'
+echo
+
+# Make the arrow keys work; everybody will love this.
+set -o emacs 2>/dev/null
+
+cd /
diff --git a/release/fixit.services b/release/fixit.services
new file mode 100644
index 000000000000..ff776b2b6265
--- /dev/null
+++ b/release/fixit.services
@@ -0,0 +1,108 @@
+#
+# Network services, Internet style
+#
+# Stripped-down version.
+#
+# $FreeBSD$
+#
+# WELL KNOWN PORT NUMBERS
+#
+echo 7/tcp
+echo 7/udp
+discard 9/tcp sink null
+discard 9/udp sink null
+systat 11/tcp users #Active Users
+systat 11/udp users #Active Users
+daytime 13/tcp
+daytime 13/udp
+chargen 19/tcp ttytst source #Character Generator
+chargen 19/udp ttytst source #Character Generator
+ftp-data 20/tcp #File Transfer [Default Data]
+ftp-data 20/udp #File Transfer [Default Data]
+ftp 21/tcp #File Transfer [Control]
+ftp 21/udp #File Transfer [Control]
+ssh 22/tcp #Secure Shell Login
+ssh 22/udp #Secure Shell Login
+telnet 23/tcp
+telnet 23/udp
+# 24/tcp any private mail system
+# 24/udp any private mail system
+smtp 25/tcp mail #Simple Mail Transfer
+smtp 25/udp mail #Simple Mail Transfer
+time 37/tcp timserver
+time 37/udp timserver
+domain 53/tcp #Domain Name Server
+domain 53/udp #Domain Name Server
+bootps 67/tcp dhcps #Bootstrap Protocol Server
+bootps 67/udp dhcps #Bootstrap Protocol Server
+bootpc 68/tcp dhcpc #Bootstrap Protocol Client
+bootpc 68/udp dhcpc #Bootstrap Protocol Client
+tftp 69/tcp #Trivial File Transfer
+tftp 69/udp #Trivial File Transfer
+gopher 70/tcp
+gopher 70/udp
+finger 79/tcp
+finger 79/udp
+http 80/tcp www www-http #World Wide Web HTTP
+http 80/udp www www-http #World Wide Web HTTP
+sunrpc 111/tcp rpcbind #SUN Remote Procedure Call
+sunrpc 111/udp rpcbind #SUN Remote Procedure Call
+auth 113/tcp ident tap #Authentication Service
+auth 113/udp ident tap #Authentication Service
+nntp 119/tcp usenet #Network News Transfer Protocol
+nntp 119/udp usenet #Network News Transfer Protocol
+rmt 411/tcp #Remote MT Protocol
+rmt 411/udp #Remote MT Protocol
+https 443/tcp
+https 443/udp
+#
+# Berkeley-specific services
+#
+exec 512/tcp #remote process execution;
+# authentication performed using
+# passwords and UNIX loppgin names
+biff 512/udp comsat #used by mail system to notify users
+# of new mail received; currently
+# receives messages only from
+# processes on the same machine
+login 513/tcp #remote login a la telnet;
+# automatic authentication performed
+# based on priviledged port numbers
+# and distributed data bases which
+# identify "authentication domains"
+who 513/udp whod #maintains data bases showing who's
+# logged in to machines on a local
+# net and the load average of the
+# machine
+cmd 514/tcp shell #like exec, but automatic
+# authentication is performed as for
+# login server
+syslog 514/udp
+printer 515/tcp spooler
+printer 515/udp spooler
+talk 517/tcp #like tenex link, but across
+# machine - unfortunately, doesn't
+# use link protocol (this is actually
+# just a rendezvous port from which a
+# tcp connection is established)
+talk 517/udp #like tenex link, but across
+# machine - unfortunately, doesn't
+# use link protocol (this is actually
+# just a rendezvous port from which a
+# tcp connection is established)
+ntalk 518/tcp
+ntalk 518/udp
+utime 519/tcp unixtime
+utime 519/udp unixtime
+efs 520/tcp #extended file name server
+router 520/udp route routed #local routing process (on site);
+# uses variant of Xerox NS routing
+# information protocol
+uucp 540/tcp uucpd
+uucp 540/udp uucpd
+uucp-rlogin 541/tcp
+uucp-rlogin 541/udp
+klogin 543/tcp # Kerberos (v4/v5)
+klogin 543/udp # Kerberos (v4/v5)
+kshell 544/tcp krcmd # Kerberos (v4/v5)
+kshell 544/udp krcmd # Kerberos (v4/v5)
diff --git a/release/fixit_crunch.conf b/release/fixit_crunch.conf
new file mode 100644
index 000000000000..e8bd0ed6bd83
--- /dev/null
+++ b/release/fixit_crunch.conf
@@ -0,0 +1,37 @@
+# $FreeBSD$
+
+# first, we list the source dirs that our programs reside in. These are
+# searched in order listed to find the dir containing each program.
+
+srcdirs /usr/src/bin /usr/src/sbin /usr/src/usr.bin /usr/src/usr.sbin
+srcdirs /usr/src/gnu/usr.bin /usr/src/usr.bin/vi
+
+# second, we list all the programs we want to include in our crunched binary.
+# The order doesn't matter. Any program that needs hard links to it gets an
+# `ln' directive.
+
+# /bin stuff
+
+progs cat chmod chroot cp dd df echo expr kill ln ls mkdir
+progs mv rm rmdir sleep sync
+
+# /sbin stuff
+
+progs chown clri disklabel dmesg
+progs mknod mount reboot restore swapon umount
+
+progs mount_msdos mount_cd9660
+
+ln restore rrestore
+ln chown chgrp
+
+# /usr/bin stuff
+
+progs ftp telnet vi grep
+ln vi view
+ln vi ex
+
+# finally, we specify the libraries to link in with our binary
+
+libs -lcrypt -ltelnet -lutil -ll -lm
+libs -lcurses -ltermcap -ledit -lgnuregex -lkvm -lz
diff --git a/release/i386/boot_crunch.conf b/release/i386/boot_crunch.conf
new file mode 100644
index 000000000000..9d14ccf08ec4
--- /dev/null
+++ b/release/i386/boot_crunch.conf
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+srcdirs /usr/src/bin /usr/src/sbin /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin /usr/src/usr.sbin
+srcdirs /usr/src/usr.sbin/pccard
+
+progs sh find sed test rm
+progs pwd ppp
+progs sysinstall newfs minigzip cpio fsck fsck_4.2bsd ifconfig route slattach
+progs mount_nfs
+progs dhclient arp hostname
+progs rtsol
+progs pccardc pccardd
+progs usbd usbdevs
+progs tunefs
+ln minigzip gzip
+ln minigzip gunzip
+ln minigzip zcat
+ln sh -sh
+ln test [
+ln newfs mount_mfs
+
+libs -ll -ledit -lutil -lkvm -lmd -lcrypt -lftpio -lz -lnetgraph
+libs -ldialog -lncurses -lmytinfo -ldisk -lipx
diff --git a/release/i386/dokern.sh b/release/i386/dokern.sh
new file mode 100755
index 000000000000..47296bdc7aae
--- /dev/null
+++ b/release/i386/dokern.sh
@@ -0,0 +1,161 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+if [ $# -lt 1 ]; then
+ FDSIZE=NORMAL
+else
+ FDSIZE=$1
+fi
+
+ARCH="`uname -m`"
+
+# First check for the standard x86 PC class.
+if [ "${ARCH}" = "i386" ]; then
+
+if [ "${FDSIZE}" = "SMALL" ]; then
+
+sed -e '/ pci$/d' \
+ -e '/ adv/d' \
+ -e '/ ahc/d' \
+ -e '/ amd/d' \
+ -e '/ isp/d' \
+ -e '/ ncr/d' \
+ -e '/ sym/d' \
+ -e '/ de/d' \
+ -e '/ fxp/d' \
+ -e '/ tx/d' \
+ -e '/ vx/d' \
+ -e '/ wx/d' \
+ -e '/ dc/d' \
+ -e '/ pcn/d' \
+ -e '/ rl/d' \
+ -e '/ sf/d' \
+ -e '/ sis/d' \
+ -e '/ ste/d' \
+ -e '/ tl/d' \
+ -e '/ vr/d' \
+ -e '/ wb/d' \
+ -e '/ xl/d' \
+ -e '/pty/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSVMSG/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ulpt/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+
+else
+
+sed -e '/pty/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSVMSG/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/ncr/d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/wds/d' \
+ -e '/lpt/d' \
+ -e '/ppi/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ulpt/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+
+fi
+
+echo "options NETGRAPH"
+echo "options NETGRAPH_ETHER"
+echo "options NETGRAPH_PPPOE"
+echo "options NETGRAPH_SOCKET"
+
+# Otherwise maybe it's an alpha, and it has big binaries.
+elif [ "${ARCH}" = "alpha" ]; then
+
+sed -e '/pty/d' \
+ -e '/DEC_3000_300/d' \
+ -e '/DEC_3000_500/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ sl /d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/NOBLOCKRANDOM/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSV/d' \
+ -e '/P1003_1B/d' \
+ -e '/_KPOSIX_PRIORITY_SCHEDULING/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/MSDOSFS/d' \
+ -e '/ncr/d' \
+ -e '/ le /d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/lpt/d' \
+ -e '/ppi/d' \
+ -e '/vpo/d' \
+ -e '/uhci/d' \
+ -e '/ohci/d' \
+ -e '/usb/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ukbd/d' \
+ -e '/ulpt/d' \
+ -e '/umass/d' \
+ -e '/ums/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/aue/d' \
+ -e '/cue/d' \
+ -e '/kue/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+fi
+
+# reset maxusers to something lower
+echo "maxusers 5"
+
+echo "options NFS_NOSERVER"
+echo "options SCSI_NO_OP_STRINGS"
+echo "options SCSI_NO_SENSE_STRINGS"
diff --git a/release/i386/drivers.conf b/release/i386/drivers.conf
new file mode 100644
index 000000000000..71c673a601d8
--- /dev/null
+++ b/release/i386/drivers.conf
@@ -0,0 +1,58 @@
+# 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"
+de if_de 2 network "DEC DE435 PCI NIC or other DC21040-AA based 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"
diff --git a/release/i386/fixit_crunch.conf b/release/i386/fixit_crunch.conf
new file mode 100644
index 000000000000..7dca73777999
--- /dev/null
+++ b/release/i386/fixit_crunch.conf
@@ -0,0 +1,38 @@
+# $FreeBSD$
+
+# first, we list the source dirs that our programs reside in. These are
+# searched in order listed to find the dir containing each program.
+
+srcdirs /usr/src/bin /usr/src/sbin /usr/src/usr.bin /usr/src/usr.sbin
+srcdirs /usr/src/gnu/usr.bin /usr/src/usr.bin/vi
+srcdirs /usr/src/sbin/i386
+
+# second, we list all the programs we want to include in our crunched binary.
+# The order doesn't matter. Any program that needs hard links to it gets an
+# `ln' directive.
+
+# /bin stuff
+
+progs cat chmod chroot cp dd df echo expr kill ln ls mkdir
+progs mv rm rmdir sleep sync
+
+# /sbin stuff
+
+progs chown clri disklabel dmesg fdisk
+progs mknod mount reboot restore swapon umount
+
+progs mount_msdos mount_cd9660
+
+ln restore rrestore
+ln chown chgrp
+
+# /usr/bin stuff
+
+progs ftp telnet vi grep
+ln vi view
+ln vi ex
+
+# finally, we specify the libraries to link in with our binary
+
+libs -lcrypt -ltelnet -lutil -ll -lm
+libs -lcurses -ltermcap -ledit -lgnuregex -lkvm -lz
diff --git a/release/pc98/boot_crunch.conf b/release/pc98/boot_crunch.conf
new file mode 100644
index 000000000000..9d14ccf08ec4
--- /dev/null
+++ b/release/pc98/boot_crunch.conf
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+srcdirs /usr/src/bin /usr/src/sbin /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin /usr/src/usr.sbin
+srcdirs /usr/src/usr.sbin/pccard
+
+progs sh find sed test rm
+progs pwd ppp
+progs sysinstall newfs minigzip cpio fsck fsck_4.2bsd ifconfig route slattach
+progs mount_nfs
+progs dhclient arp hostname
+progs rtsol
+progs pccardc pccardd
+progs usbd usbdevs
+progs tunefs
+ln minigzip gzip
+ln minigzip gunzip
+ln minigzip zcat
+ln sh -sh
+ln test [
+ln newfs mount_mfs
+
+libs -ll -ledit -lutil -lkvm -lmd -lcrypt -lftpio -lz -lnetgraph
+libs -ldialog -lncurses -lmytinfo -ldisk -lipx
diff --git a/release/pc98/dokern.sh b/release/pc98/dokern.sh
new file mode 100755
index 000000000000..47296bdc7aae
--- /dev/null
+++ b/release/pc98/dokern.sh
@@ -0,0 +1,161 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+if [ $# -lt 1 ]; then
+ FDSIZE=NORMAL
+else
+ FDSIZE=$1
+fi
+
+ARCH="`uname -m`"
+
+# First check for the standard x86 PC class.
+if [ "${ARCH}" = "i386" ]; then
+
+if [ "${FDSIZE}" = "SMALL" ]; then
+
+sed -e '/ pci$/d' \
+ -e '/ adv/d' \
+ -e '/ ahc/d' \
+ -e '/ amd/d' \
+ -e '/ isp/d' \
+ -e '/ ncr/d' \
+ -e '/ sym/d' \
+ -e '/ de/d' \
+ -e '/ fxp/d' \
+ -e '/ tx/d' \
+ -e '/ vx/d' \
+ -e '/ wx/d' \
+ -e '/ dc/d' \
+ -e '/ pcn/d' \
+ -e '/ rl/d' \
+ -e '/ sf/d' \
+ -e '/ sis/d' \
+ -e '/ ste/d' \
+ -e '/ tl/d' \
+ -e '/ vr/d' \
+ -e '/ wb/d' \
+ -e '/ xl/d' \
+ -e '/pty/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSVMSG/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ulpt/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+
+else
+
+sed -e '/pty/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSVMSG/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/ncr/d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/wds/d' \
+ -e '/lpt/d' \
+ -e '/ppi/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ulpt/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+
+fi
+
+echo "options NETGRAPH"
+echo "options NETGRAPH_ETHER"
+echo "options NETGRAPH_PPPOE"
+echo "options NETGRAPH_SOCKET"
+
+# Otherwise maybe it's an alpha, and it has big binaries.
+elif [ "${ARCH}" = "alpha" ]; then
+
+sed -e '/pty/d' \
+ -e '/DEC_3000_300/d' \
+ -e '/DEC_3000_500/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ sl /d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/NOBLOCKRANDOM/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSV/d' \
+ -e '/P1003_1B/d' \
+ -e '/_KPOSIX_PRIORITY_SCHEDULING/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/MSDOSFS/d' \
+ -e '/ncr/d' \
+ -e '/ le /d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/lpt/d' \
+ -e '/ppi/d' \
+ -e '/vpo/d' \
+ -e '/uhci/d' \
+ -e '/ohci/d' \
+ -e '/usb/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ukbd/d' \
+ -e '/ulpt/d' \
+ -e '/umass/d' \
+ -e '/ums/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/aue/d' \
+ -e '/cue/d' \
+ -e '/kue/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+fi
+
+# reset maxusers to something lower
+echo "maxusers 5"
+
+echo "options NFS_NOSERVER"
+echo "options SCSI_NO_OP_STRINGS"
+echo "options SCSI_NO_SENSE_STRINGS"
diff --git a/release/pc98/fixit_crunch.conf b/release/pc98/fixit_crunch.conf
new file mode 100644
index 000000000000..29a0b0128d13
--- /dev/null
+++ b/release/pc98/fixit_crunch.conf
@@ -0,0 +1,38 @@
+# $FreeBSD$
+
+# first, we list the source dirs that our programs reside in. These are
+# searched in order listed to find the dir containing each program.
+
+srcdirs /usr/src/bin /usr/src/sbin /usr/src/usr.bin /usr/src/usr.sbin
+srcdirs /usr/src/gnu/usr.bin /usr/src/usr.bin/vi
+srcdirs /usr/src/sbin/pc98
+
+# second, we list all the programs we want to include in our crunched binary.
+# The order doesn't matter. Any program that needs hard links to it gets an
+# `ln' directive.
+
+# /bin stuff
+
+progs cat chmod chroot cp dd df echo expr kill ln ls mkdir
+progs mv rm rmdir sleep sync
+
+# /sbin stuff
+
+progs chown clri disklabel dmesg fdisk
+progs mknod mount reboot restore swapon umount
+
+progs mount_msdos mount_cd9660
+
+ln restore rrestore
+ln chown chgrp
+
+# /usr/bin stuff
+
+progs ftp telnet vi grep
+ln vi view
+ln vi ex
+
+# finally, we specify the libraries to link in with our binary
+
+libs -lcrypt -ltelnet -lutil -ll -lm
+libs -lcurses -ltermcap -ledit -lgnuregex -lkvm -lz
diff --git a/release/picobsd/Makefile b/release/picobsd/Makefile
new file mode 100644
index 000000000000..238a82126e2b
--- /dev/null
+++ b/release/picobsd/Makefile
@@ -0,0 +1,31 @@
+# $FreeBSD$
+#
+# Top level Makefile for PicoBSD
+
+# Please submit any changes to the freebsd-small mailing list for
+# discussion prior to committing.
+
+MAINTAINER= freebsd-small
+
+# install looks like a partially completed target,
+# but I don't want to finish this work.
+# FIXME
+# CONFIGS = custom dial isp net router
+CONFIGS = custom
+
+all clean tidy:
+ for i in ${CONFIGS}; do \
+ (cd $$i; \
+ echo '----- Building in' $$i; \
+ make $@); \
+ done
+ @if [ "$@" = "clean" ]; then \
+ rm -f *~; \
+ fi
+
+floppy floppy2:
+ @echo Please build this target from one of the ${CONFIGS} subdirectories.
+
+# Build one subdirectory
+${CONFIGS}:
+ cd $@; make clean all
diff --git a/release/picobsd/README.html b/release/picobsd/README.html
new file mode 100644
index 000000000000..aca246fe0d73
--- /dev/null
+++ b/release/picobsd/README.html
@@ -0,0 +1,19 @@
+<html>
+<body>
+<h1><b><center> PicoBSD Development Kit </center></b></h1>
+
+<p>All documentation, instructions, list of supported hardware and FAQ are
+in doc/ directory. If they are missing, go to the doc/src/ subdirectory and
+do a 'make'. The docs are marked with HTML tags, but we try to keep
+them readable even without a browser.
+
+<p>Please start from <A HREF="doc/intro.html">here</a> for general
+description of the project and its features, or just go directly
+<A HREF="doc/how2build.html">here</a> for detailed instructions on how to
+build your version of PicoBSD.
+
+<p>Enjoy!</p>
+
+<! $FreeBSD$ >
+</body>
+</html>
diff --git a/release/picobsd/README.luigi b/release/picobsd/README.luigi
new file mode 100644
index 000000000000..4261a1a797c7
--- /dev/null
+++ b/release/picobsd/README.luigi
@@ -0,0 +1,77 @@
+In this file i try to document the overall architecture of PicoBSD
+source tree.
+
+ ./ Per-image directory-tree and generic trees.
+
+ build/ Main build scripts and Makefiles.
+ build: main build script
+ stage1: invoked by build
+ clean: to clean up previous compilations
+ Makefile.conf
+ makefile to edit config file and build kernel
+ Makefile.mfs
+ makefile to create the memory filesystem
+ Makefile.crunch
+ makefile to handle the crunched directory
+ mfs.mtree
+ mtree cmd -- structure of the mfs tree
+
+ floppy.tree/
+ Default files to fill the floppy and mfs trees.
+ Can be overridden by listing files to be removed in
+ ${TYPE}/floppy.tree.exclude, and putting files to be replaced
+ in ${TYPE}/floppy.tree/
+
+ doc/
+ documentation (unchanged from original)
+
+ help/
+ help files in various languages. The suffix is the two letter
+ country code for the language. Currently only .en and .pl
+ used.
+
+ tinyware/
+ various small programs used instead of the corresponding
+ full-blown utilities.
+
+ $TYPE/ source and config files for the various image types.
+
+Structure of each image type is as follows:
+
+ Makefile.mfs
+ Makefile used to build/populate the MFS. Only needs two
+ lines typically:
+
+ MY_DEVS=std ....
+ .include "../build/Makefile.mfs"
+
+ PICOBSD
+ kernel config file. One line is required
+
+ #PicoBSD mfs_size init_name mfs_inodes floppy_inodes
+ e.g.
+ #PicoBSD 2400 init 4096 32768
+
+ crunch1/
+ Directory with crunched config etc. Main files:
+ crunch.conf main config file for crunchgen
+ crunch.inc (optional) file included in crunchgen
+ Makefiles, used e.g. to set make variables
+ such as RELEASE_CRUNCH or similar.
+
+ floppy.tree/
+ local files to be put into the floppy/mfs trees instead
+ of the ones in ../build/floppy.tree
+
+ floppy.tree.exclude
+ list of files to be omitted in the copy from ../build/floppy.tree
+
+ floppy.tree.${SITE}/
+ site-specific files which update the ones taken from one
+ of the two places above. Typically they are passwd, hosts,
+ rc.conf, rc.firewall things to go in /etc
+
+ lang/
+ language-dependant files (trimmed from the original one)
+
+
diff --git a/release/picobsd/Version b/release/picobsd/Version
new file mode 100644
index 000000000000..871bd81a0d5f
--- /dev/null
+++ b/release/picobsd/Version
@@ -0,0 +1 @@
+VER=0.500
diff --git a/release/picobsd/bridge/Makefile.mfs b/release/picobsd/bridge/Makefile.mfs
new file mode 100644
index 000000000000..3579e34c6f34
--- /dev/null
+++ b/release/picobsd/bridge/Makefile.mfs
@@ -0,0 +1,8 @@
+#
+# $FreeBSD$
+#
+
+MY_DEVS= std tun2 vty10 fd0 ad0 pty0 cuaa0 cuaa1 bpf0 bpf1 bpf2
+
+.include "../build/Makefile.mfs"
+
diff --git a/release/picobsd/bridge/PICOBSD b/release/picobsd/bridge/PICOBSD
new file mode 100644
index 000000000000..b25dab8024f5
--- /dev/null
+++ b/release/picobsd/bridge/PICOBSD
@@ -0,0 +1,117 @@
+#
+# $FreeBSD$
+#
+# Line starting with #PicoBSD contains PicoBSD build parameters
+#marker def_sz init MFS_inodes floppy_inodes
+#PicoBSD 2200 init 8192 32768
+options MD_ROOT_SIZE=2200 # same as def_sz
+
+machine i386
+#cpu I386_CPU # we do not want this on current...
+cpu I486_CPU
+cpu I586_CPU
+cpu I686_CPU
+ident PICOBSD
+maxusers 20
+
+#options MATH_EMULATE #Support for x87 emulation
+options INET #InterNETworking
+#options INET6
+options FFS #Berkeley Fast Filesystem
+options FFS_ROOT #FFS usable as root device [keep this!]
+#options BOOTP #Use BOOTP to obtain IP address/hostname
+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 DEVFS #Device Filesystem
+#options PROCFS #Process filesystem
+#options USERCONFIG #boot -c editor
+options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
+
+options DDB
+
+options IPFIREWALL
+options IPFIREWALL_DEFAULT_TO_ACCEPT
+options IPDIVERT # divert (for natd)
+options PCI_QUIET #quiets PCI code on chipset settings
+
+# Support for bridging and bandwidth limiting
+options DUMMYNET
+options BRIDGE
+options HZ=1000
+options NMBCLUSTERS=4096
+
+device isa
+device pci
+
+# Floppy drives
+device fdc
+
+# ATA and ATAPI devices
+device ata
+device atadisk # ATA disk drives
+device atapicd # ATAPI CDROM drives
+options ATA_STATIC_ID #Static device numbering
+
+# atkbdc0 controls both the keyboard and the PS/2 mouse
+device atkbdc 1 # At keyboard controller
+device atkbd
+#device psm # do we need the mouse ??
+
+device vga # VGA screen
+
+# syscons is the default console driver, resembling an SCO console
+device sc 1
+
+# Floating point support - do not disable.
+device npx
+
+# Serial (COM) ports
+device sio
+
+# Audio support
+#device pcm
+
+# PCCARD (PCMCIA) support
+#device card # pccard bus
+#device pcic # PCMCIA bridge
+
+# 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
+
+#
+# The following Ethernet NICs are all PCI devices.
+#
+device miibus
+#device de # DEC/Intel DC21x4x (``Tulip'')
+device fxp # Intel EtherExpress PRO/100B (82557, 82558)
+device xl # 3Com
+device rl # RealTek 8129/8139
+device vx # 3Com 3c590, 3c595 (``Vortex'')
+device wx # Intel Gigabit Ethernet Card (``Wiseman'')
+device dc # DEC/Intel 21143 and various workalikes
+device ed
+
+device loop # Network loopback
+device ether # Ethernet support
+device tun # Packet tunnel.
+#device vn #Vnode driver (turns a file into a device)
+device pty # Pseudo-ttys (telnet etc)
+device md # Memory "disks"
+#device gif 4 # IPv6 and IPv4 tunneling
+#device faith 1 # IPv6-to-IPv4 relaying (translation)
+#device tap
+
+
+# The `bpf' device enables the Berkeley Packet Filter.
+# Be aware of the administrative consequences of enabling this!
+#device bpf # Berkeley packet filter
diff --git a/release/picobsd/bridge/PICOBSD.hints b/release/picobsd/bridge/PICOBSD.hints
new file mode 100644
index 000000000000..580dd1a3381e
--- /dev/null
+++ b/release/picobsd/bridge/PICOBSD.hints
@@ -0,0 +1,39 @@
+# $FreeBSD$
+hint.fdc.0.at="isa"
+hint.fdc.0.port="0x3F0"
+hint.fdc.0.irq="6"
+hint.fdc.0.drq="2"
+hint.fd.0.at="fdc0"
+hint.fd.0.drive="0"
+hint.ata.0.at="isa"
+hint.ata.0.port="0x1F0"
+hint.ata.0.irq="14"
+hint.ata.1.at="isa"
+hint.ata.1.port="0x170"
+hint.ata.1.irq="15"
+hint.atkbdc.0.at="isa"
+hint.atkbdc.0.port="0x060"
+hint.atkbd.0.at="atkbdc"
+hint.atkbd.0.irq="1"
+hint.psm.0.at="atkbdc"
+hint.psm.0.irq="12"
+hint.vga.0.at="isa"
+hint.sc.0.at="isa"
+hint.npx.0.at="nexus"
+hint.npx.0.port="0x0F0"
+hint.npx.0.irq="13"
+hint.sio.0.at="isa"
+hint.sio.0.port="0x3F8"
+hint.sio.0.flags="0x10"
+hint.sio.0.irq="4"
+hint.sio.1.at="isa"
+hint.sio.1.port="0x2F8"
+hint.sio.1.irq="3"
+hint.ed.0.at="isa"
+hint.ed.0.port="0x280"
+hint.ed.0.irq="5"
+hint.ed.0.maddr="0xd8000"
+hint.ed.1.at="isa"
+hint.ed.1.port="0x300"
+hint.ed.1.irq="5"
+hint.ed.1.maddr="0xd0000"
diff --git a/release/picobsd/bridge/crunch1/crunch.conf b/release/picobsd/bridge/crunch1/crunch.conf
new file mode 100644
index 000000000000..7b3845621c71
--- /dev/null
+++ b/release/picobsd/bridge/crunch1/crunch.conf
@@ -0,0 +1,123 @@
+#
+# $FreeBSD$
+#
+# NOTE: the string "/usr/src" will be automatically replaced with the
+# correct value set in 'build' script - you should change it there
+
+# Default build options.
+buildopts -DNOPAM -DRELEASE_CRUNCH -DNOSECURE -DNOCRYPT -DNONETGRAPH -DNOIPSEC
+
+# other sources
+srcdirs /usr/src/bin
+srcdirs /usr/src/sbin/i386
+srcdirs /usr/src/sbin
+srcdirs /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin
+srcdirs /usr/src/usr.sbin
+srcdirs /usr/src/libexec
+# sources for ns & vm
+srcdirs ../../tinyware
+
+progs init # 4KB.
+progs fsck # 24KB.
+progs ifconfig # 4KB.
+progs sh # 36KB.
+ln sh -sh
+progs inetd # 12KB.
+progs df # 0KB.
+progs ps # 4KB.
+progs ns # 4KB.
+ln ns netstat
+progs vm # 0KB.
+progs cat # 0KB.
+progs test # 0KB.
+ln test [
+progs echo # 0KB.
+progs hostname # 0KB.
+progs ln # 0KB.
+progs login # 4KB.
+progs getty # 4KB.
+progs stty # 4KB.
+progs w # 0KB.
+progs msg # 0KB.
+ln msg dmesg
+progs kget # 0KB.
+progs reboot # 0KB.
+progs cp # 0KB. (strange!)
+progs rm
+progs mkdir
+progs rmdir
+progs ls
+progs chmod
+progs chown
+progs mv
+progs sysctl
+progs route
+progs swapon # 0KB.
+progs pwd_mkdb # 0KB.
+progs dev_mkdb # 0KB.
+progs mount
+progs umount
+# progs # mount_msdos umount # comcontrol
+progs kill mount_std # natd
+
+progs minigzip # 0KB.
+ln minigzip gzip
+progs ee # 32KB.
+libs -lncurses
+progs tcpdump # 48KB.
+special tcpdump srcdir /usr/src/usr.sbin/tcpdump/tcpdump
+progs arp # 0KB.
+progs disklabel # 4KB.
+progs fdisk # 4KB.
+progs vnconfig # 0KB.
+progs du # 0KB.
+progs tail # 0KB.
+progs tee # 0KB.
+
+progs pwd less # pppd
+ln less more
+progs grep # 16KB.
+progs passwd # 0KB.
+progs date # 4KB.
+progs mount_nfs # 0KB.
+ln mount_nfs nfs
+progs ping # 4KB.
+progs routed # 28KB.
+progs ipfw # 12KB.
+progs traceroute # 0KB.
+# progs mount_cd9660 # 4KB.
+# ln mount_cd9660 cd9660
+# progs newfs # 12KB.
+#ln newfs mount_mfs
+ln chown chgrp
+# ln mount_msdos msdos
+ln mount_std procfs
+ln mount_std mount_procfs
+
+# you can either use telnet/telnetd, or ssh
+progs telnet # 20KB.
+progs telnetd # 12KB.
+#progs ftp # 28KB.
+#progs tar # 32KB.
+
+### Check the ssh license! If you want to use this,
+### go to /usr/ports/security/ssh, do a make extract configure
+#progs sshd
+#special sshd srcdir /usr/ports/security/ssh/work/ssh-1.2.27
+#special sshd objvar SSHD_OBJS
+#progs ssh
+#ln ssh ssh1
+#special ssh srcdir /usr/ports/security/ssh/work/ssh-1.2.27
+#special ssh objvar SSH_OBJS
+#progs scp
+#special scp srcdir /usr/ports/security/ssh/work/ssh-1.2.27
+#special scp objvar SCP_OBJS
+
+# progs vi # ??
+# libs -lcurses # for vi
+
+### ee uses ncurses instead of curses
+libs -ledit -lutil -lmd -lcrypt -lmp -lgmp -lm -lkvm
+libs -lmytinfo -lipx -lz -lpcap -lalias -lwrap
+libs -ltermcap -lgnuregex -ltelnet # -lcurses
diff --git a/release/picobsd/bridge/floppy.tree.exclude b/release/picobsd/bridge/floppy.tree.exclude
new file mode 100644
index 000000000000..adfc6cc75420
--- /dev/null
+++ b/release/picobsd/bridge/floppy.tree.exclude
@@ -0,0 +1,2 @@
+etc/snmpd.conf
+etc/ppp
diff --git a/release/picobsd/bridge/lang/motd.en b/release/picobsd/bridge/lang/motd.en
new file mode 100644
index 000000000000..23675879a00f
--- /dev/null
+++ b/release/picobsd/bridge/lang/motd.en
@@ -0,0 +1,9 @@
+==================================================
+ )\_)\
+PicoBSD @VER@ (bridge) (o,o)
+ __ \~/
+Welcome to PicoBSD! -->====\
+ ~~ d d
+
+For more info contact the author (abial@freebsd.org).
+
diff --git a/release/picobsd/build/Makefile b/release/picobsd/build/Makefile
new file mode 100644
index 000000000000..d0b2aea4f4ad
--- /dev/null
+++ b/release/picobsd/build/Makefile
@@ -0,0 +1,250 @@
+# PicoBSD Makefile
+#
+# $FreeBSD$
+#
+
+# Building a PicoBSD kernel involves four basic operations:
+#
+# 1. Build a kernel. This is done by the 'kernel' target.
+# 2. Build a PicoBSD file system. This file system is loaded into an
+# MFS at boot time. This is done by the 'fs' target.
+# 3. Build a single executable file for all the programs, and install it in
+# the mfs image. This is done by the 'crunch' target.
+# 4. Build a floppy image containing the MFS image and some helper code
+# to boot it. This is done by the 'image' target.
+# 5. Copy the image to the floppy. Done by the 'copy' target.
+
+# You can set the SRC variable which points to your source tree. It's
+# /usr/src by default (most people shouldn't change it).
+SRC ?= /usr/src
+EDITOR = vi
+
+# LANGUAGE language to be used (en or pl)
+LANGUAGE = en
+
+# FLOPPY_SIZE floppy size in KB (default to 1440)
+FLOPPY_SIZE = 1440
+
+# BUILDDIR is this directory
+BUILDDIR = ${.CURDIR}
+
+# These programs are built with non-standard parameters. To be sure of
+# getting them right, we need to rebuild every time; otherwise we might
+# trip over the 'make world' objects.
+# To do this right, we need to build the objects in a different directory.
+# FIXME.
+SPECIAL_PROGS = ../../../usr.bin/login ../../../usr.bin/passwd
+
+# Get default parameters for MFS
+.include "mfsinfo"
+
+# MFS information
+MFS_NAME = fs.PICOBSD
+MFS_MOUNTPOINT = mmnt
+MFS_VNODE = /dev/vn0
+# /etc/rc for the mfs image. This reads the real stuff off the floppy
+MFS_RC = floppy.tree/etc/mfs.rc
+
+FLOPPY_NAME = picobsd.bin
+FLOPPY_VNODE = /dev/vn1
+FLOPPY_MOUNTPOINT = fmnt
+
+# Variables for building kernel
+CONF ?= $(SRC)/sys/i386/conf
+CONFFILE = PICOBSD${suffix}
+COMPILE = $(SRC)/sys/compile/$(CONFFILE)
+KERNFILE = $(COMPILE)/kernel
+
+FDEV ?= /dev/fd0
+
+# DEVFS is currently broken. Always set this.
+#
+NO_DEVFS = yes
+
+# Should we keep this?
+VER = 0.445
+
+all: kernel.gz ${MFS_NAME} crunch ${FLOPPY_NAME} copy crunch-2
+
+kernel.gz: ${COMPILE}/kernel
+ @echo "--> Compressing kernel"
+ cp -p ${COMPILE}/kernel kernel
+ strip kernel
+ strip --remove-section=.note --remove-section=.comment kernel
+ gzip -f -9 -v -n kernel
+ @ls -l kernel.gz
+
+# Create the MFS image file
+${MFS_NAME}: ${MFS_VNODE} ${MFS_MOUNTPOINT}
+ @echo "--> Building and mounting MFS image vnode"
+ -umount -f ${MFS_MOUNTPOINT}
+ -umount -f ${MFS_VNODE}
+ rm -f .mfs_mounted
+ -vnconfig -u ${MFS_VNODE}
+ rm -f ${MFS_NAME}
+ dd of=${MFS_NAME} if=/dev/zero count=${MFS_SIZE} bs=1k
+ awk 'BEGIN {printf "%c%c", 85, 170}' | \
+ dd of=${MFS_NAME} obs=1 seek=510 conv=notrunc 2> /dev/null
+ vnconfig -s labels -c ${MFS_VNODE} ${MFS_NAME}
+ dd if=/boot/boot1 of=${MFS_NAME} conv=notrunc
+ disklabel -rw vn0 auto
+ newfs -i ${MFS_INODES} -m 0 -p 0 -o space ${MFS_VNODE}c
+ make .mfs_mounted
+ make -f Makefile.mfs DESTDIR=${MFS_MOUNTPOINT} LANGUAGE=${LANGUAGE}
+ make -f Makefile.mfs devnodes DESTDIR=${MFS_MOUNTPOINT} LANGUAGE=${LANGUAGE}
+ MFS_MOUNTPOINT=${MFS_MOUNTPOINT} INIT=${INIT} VER=${VER} BUILDDIR=${BUILDDIR} LANGUAGE=${LANGUAGE}
+
+# Populate the MFS image.
+crunch: ${MFS_MOUNTPOINT}
+ @echo "--> Populating MFS image"
+ -vnconfig -c ${MFS_VNODE} ${MFS_NAME}
+ make .mfs_mounted
+ # We need to make login with other options
+ for i in ${SPECIAL_PROGS}; do (cd $$i; make clean); done
+ cd crunch1; make SRC=${SRC} INIT=${INIT}; make install MFS_MOUNTPOINT=../${MFS_MOUNTPOINT}
+ # who can tell me how these damned help files get in here?
+ rm -rf ${MFS_MOUNTPOINT}/sbin/help
+ # Other files for the mfs file system
+ (cd mfs; tar cXf ../floppy.tree.exclude - . | (cd ../${MFS_MOUNTPOINT}; tar xf -))
+ cd ${MFS_MOUNTPOINT}; chown -R root *
+ df -ik ${MFS_MOUNTPOINT}
+ umount ${MFS_MOUNTPOINT}
+ rm .mfs_mounted
+ fsck -p ${MFS_VNODE}
+
+# Create and mount the floppy image
+${FLOPPY_NAME}: ${FLOPPY_VNODE} ${FLOPPY_MOUNTPOINT} ${MFS_NAME} .mfs_mounted
+ @echo "--> Preparing ${FLOPPY_SIZE}kB floppy filesystem"
+ -umount ${FLOPPY_VNODE}
+ rm -f .floppy_mounted
+ -vnconfig -u ${FLOPPY_VNODE}
+ dd of=${FLOPPY_NAME} if=/dev/zero count=${FLOPPY_SIZE} bs=1k
+ awk 'BEGIN {printf "%c%c", 85, 170}' | \
+ dd of=${FLOPPY_NAME} obs=1 seek=510 conv=notrunc
+ -vnconfig -s labels -c ${FLOPPY_VNODE} ${FLOPPY_NAME}
+ dd if=/boot/boot1 of=${FLOPPY_NAME} conv=notrunc
+ disklabel -Brw -b /boot/boot1 -s /boot/boot2 ${FLOPPY_VNODE}c fd${FLOPPY_SIZE}
+ newfs -i ${FLOPPY_INODES} -m 0 -p 0 -o space ${FLOPPY_VNODE}c
+ make .floppy_mounted
+
+copy: ../floppy.tree/boot .floppy_mounted
+ @echo "--> Populating floppy filesystem from ../floppy.tree"
+ @echo -- Make a loader
+ kgzip -o floppy.tree/boot/loader /boot/loader
+ @echo -- copy base floppy tree
+ (wd=`pwd`; cd ../floppy.tree ; tar cXhf $${wd}/floppy.tree.exclude - . ) | \
+ (cd ${FLOPPY_MOUNTPOINT} ; tar xvf - )
+ @echo -- Now update from our private floppy tree if it exists
+ @echo -- Local files in `pwd`/floppy.tree
+ if [ -d floppy.tree ] ; then \
+ (cd floppy.tree; tar cXhf ../floppy.tree.exclude - .) | \
+ (cd ${FLOPPY_MOUNTPOINT} ; tar xvf - ); \
+ fi
+ # We get stuff here that we can't use. When the transition
+ # to Makefile-based build is complete, we can delete this.
+ # XXX
+ rm -rf ${FLOPPY_MOUNTPOINT}/etc
+ (cd floppy.etc; tar czvXf ../floppy.tree.exclude ../${FLOPPY_MOUNTPOINT}/etc.tar.gz .)
+ df -ik ${FLOPPY_MOUNTPOINT}
+ @echo -- Generate password file if we don't have one on the floppy.
+ @echo -- The variable PASSWD is defined in mfsinfo
+ if [ ${PASSWD} = NO ] ; then \
+ cp -p ${FLOPPY_MOUNTPOINT}/etc/master.passwd .; \
+ pwd_mkdb -d . master.passwd; \
+ mv spwd.db ${FLOPPY_MOUNTPOINT}/etc/; \
+ rm pwd.db master.passwd; \
+ fi
+ cp kernel.gz ${FLOPPY_MOUNTPOINT}/kernel.gz
+ if [ -f .mfs_mounted ]; then \
+ umount ${MFS_VNODE}; \
+ rm .mfs_mounted; \
+ fi
+ @echo -- Insert the MFS image
+ gzip -9cv ${MFS_NAME} > ${FLOPPY_MOUNTPOINT}/${MFS_NAME}.gz
+ (echo "-> Fixing permissions"; cd ${FLOPPY_MOUNTPOINT}; chown -R root *)
+ df -ik ${FLOPPY_MOUNTPOINT}
+ umount ${FLOPPY_MOUNTPOINT}
+ rm .floppy_mounted
+
+floppy:
+ @if [ -f .floppy_mounted ]; then \
+ umount ${FLOPPY_MOUNTPOINT}; \
+ rm .floppy_mounted; \
+ fi
+ @echo Copying ${FLOPPY_NAME} to ${FDEV}c. This will take about 50 seconds.
+ @dd if=${FLOPPY_NAME} of=${FDEV}c bs=36b >/dev/null
+ @echo Safe to remove disk from ${FDEV}
+
+floppy2:
+ @if [ -d crunch2 ]; then \
+ if [ ! -d crunch2/floppy2 ]; then \
+ (cd crunch2; make); \
+ fi; \
+ echo copying crunch2/floppy to ${FDEV}c. This will take about 50 seconds.; \
+ cd crunch2/floppy2; tar czvf - . | dd of=/dev/rfd0 conv=sync; \
+ echo Safe to remove disk from ${FDEV}; \
+ else \
+ echo No second floppy; \
+ fi
+
+# crunch-2: Build second floppy
+crunch-2:
+ if [ -d crunch2 ]; then cd crunch2; make; fi
+
+# Secondary targets
+
+${COMPILE}/kernel: ${CONFFILE}
+ @echo "--> Building kernel"
+ grep -q MD_ROOT ${CONFFILE}; if [ $$? -ne 0 ]; then \
+ echo -- '***** Config file must include MD_ROOT'; \
+ exit 1; \
+ fi
+ cp ${CONFFILE} ${CONF}; \
+ cd ${CONF}; \
+ config ${CONFFILE}; \
+ cd ${COMPILE}; \
+ make depend all
+
+# Device nodes for the vnode devices
+${FLOPPY_VNODE} ${MFS_VNODE}:
+ (cd /dev; ./MAKEDEV `basename $@`)
+
+# Directories to make
+${MFS_MOUNTPOINT} ${FLOPPY_MOUNTPOINT} ../floppy.tree/boot:
+ mkdir -p $@
+
+tidy: umount vnunconfig
+ rm -f ${MFS_NAME} ${MFS_NAME}.gz ${FLOPPY_NAME} *~ Make.log kernel.gz
+
+clean: tidy
+ if [ -d floppy.tree ]; then \
+ cd floppy.tree; rm -f boot/loader; \
+ fi
+ rm -rf ${MFS_MOUNTPOINT} ${FLOPPY_MOUNTPOINT} crunch1.conf
+ cd crunch1; make clean
+ if [ -d crunch2 ]; then cd crunch2; make clean; fi
+ if [ -d ${COMPILE} ] ; then cd ${COMPILE}; make clean; fi
+
+# XXX Just for testing
+vnconfig: vnunconfig
+ vnconfig -c ${MFS_VNODE} ${MFS_NAME}
+ vnconfig -c ${FLOPPY_VNODE} ${FLOPPY_NAME}
+
+vnunconfig:
+ -vnconfig -u ${MFS_VNODE}
+ -vnconfig -u ${FLOPPY_VNODE}
+
+mount: .floppy_mounted .mfs_mounted
+
+umount:
+ -umount ${MFS_VNODE} ${MFS_MOUNTPOINT} ${FLOPPY_VNODE} ${FLOPPY_MOUNTPOINT}
+ rm -f .floppy_mounted .mfs_mounted
+
+.floppy_mounted:
+ mount ${FLOPPY_VNODE} ${FLOPPY_MOUNTPOINT}
+ touch $@
+
+.mfs_mounted:
+ mount ${MFS_VNODE} ${MFS_MOUNTPOINT}
+ touch $@
+
diff --git a/release/picobsd/build/Makefile.conf b/release/picobsd/build/Makefile.conf
new file mode 100644
index 000000000000..92bf2ec4914b
--- /dev/null
+++ b/release/picobsd/build/Makefile.conf
@@ -0,0 +1,26 @@
+# $FreeBSD$
+#
+# Makefile for building PICOBSD kernels
+
+SRC?=/usr/src
+CONF?=$(SRC)/sys/i386/conf
+
+CONFFILE=PICOBSD${suffix}
+COMPILE=$(SRC)/sys/compile/$(CONFFILE)
+KERNFILE=$(COMPILE)/kernel
+
+all: $(KERNFILE)
+
+
+${CONF}/${CONFFILE}: PICOBSD
+ cp PICOBSD ${CONF}/${CONFFILE}
+ cp PICOBSD.hints ${CONF}/${CONFFILE}.hints
+
+${COMPILE}: ${CONF}/${CONFFILE}
+ (cd ${CONF}; config ${CONFFILE}; cd ${COMPILE}; \
+ make KERNEL=kernel -DNO_MODULES depend )
+
+$(KERNFILE): ${COMPILE}
+ (cd ${COMPILE}; \
+ make KERNEL=kernel -DNO_MODULES)
+
diff --git a/release/picobsd/build/Makefile.crunch b/release/picobsd/build/Makefile.crunch
new file mode 100644
index 000000000000..62e899c06363
--- /dev/null
+++ b/release/picobsd/build/Makefile.crunch
@@ -0,0 +1,38 @@
+#
+# $FreeBSD$
+#
+SRC?=/usr/src
+
+all: crunch
+
+crunch:
+ @cat crunch.conf|sed -e "s@/usr/src@${SRC}@" >crunch1.conf
+ -@( if [ -f crunch.inc ] ; then \
+ crunchgen -p ${PICO_OBJ} -o -h ./crunch.inc ./crunch1.conf ; \
+ else \
+ crunchgen -p ${PICO_OBJ} -o ./crunch1.conf ; \
+ fi )
+ @${MAKE} -f crunch1.mk
+ strip --remove-section=.note --remove-section=.comment crunch1
+
+
+clean:
+ if [ -f crunch1.mk ]; then \
+ make -f crunch1.mk realclean ; \
+ fi ;
+ rm -f crunch1*
+
+install:
+ cp crunch1 ${MFS_MOUNTPOINT}/stand/crunch
+ chmod 555 ${MFS_MOUNTPOINT}/stand/crunch
+ for i in `crunchgen -l crunch1.conf` ; \
+ do \
+ ln ${MFS_MOUNTPOINT}/stand/crunch ${MFS_MOUNTPOINT}/stand/$${i}; \
+ done
+ rm ${MFS_MOUNTPOINT}/stand/crunch
+ # Install the MIB files
+ #mkdir -p ${MFS_MOUNTPOINT}/usr/local/share/snmp/mibs
+ #cp ../../net/crunch1/mibs/*.txt ${MFS_MOUNTPOINT}/usr/local/share/snmp/mibs/
+
+
+.include <bsd.prog.mk>
diff --git a/release/picobsd/build/Makefile.mfs b/release/picobsd/build/Makefile.mfs
new file mode 100644
index 000000000000..f1b501dc9f5d
--- /dev/null
+++ b/release/picobsd/build/Makefile.mfs
@@ -0,0 +1,48 @@
+#
+# $FreeBSD$
+#
+
+DESTDIR?=${MFS_MOUNTPOINT}
+
+STAND_LINKS?= bin sbin usr/local/bin
+USR_LINKS?= bin sbin libexec
+#PL_LOCALE_LINKS?= pl polish
+MY_DEVS?= std tun2 cuaa0 cuaa1 cuaa2 vty10 fd0 ad0 pty0 ttyd0 cuaa0 wd1 wd2 wd3 bpf0 bpf1 sa0 sa1
+
+all: tree links
+
+tree:
+ @echo "--- making tree"
+ @( if [ -f mfs.mtree ] ; then \
+ mtree -deU -f mfs.mtree -p ${DESTDIR}; \
+ else \
+ mtree -deU -f ../build/mfs.mtree -p ${DESTDIR} ; \
+ fi )
+
+links: tree
+ @echo "--- making links"
+ (cd ${DESTDIR}; \
+ for i in ${STAND_LINKS}; \
+ do \
+ ln -s /stand $${i}; \
+ done; \
+ cd var/run; \
+ ln -s /dev/null log; \
+ cd ../../usr; \
+ for i in ${USR_LINKS}; \
+ do \
+ ln -s /stand $${i}; \
+ done; \
+ cd share/misc;\
+ ln -s /etc/termcap termcap; )
+
+
+# We don't do it under 'all' because it's needed only on non-DEVFS systems
+devnodes: tree
+ @echo "--- making device nodes"
+ (cd ${DESTDIR}/dev; \
+ ln -s /dev/MAKEDEV; \
+ ./MAKEDEV ${MY_DEVS}; \
+ rm MAKEDEV)
+
+clean:
diff --git a/release/picobsd/build/build b/release/picobsd/build/build
new file mode 100755
index 000000000000..1e8a6a5677ac
--- /dev/null
+++ b/release/picobsd/build/build
@@ -0,0 +1,387 @@
+#!/bin/sh -
+
+#
+# $FreeBSD$
+#
+# You can set the SRC variable which points to your source tree. It's
+# /usr/src by default (most people shouldn't change it).
+SRC=/usr/src
+OBJ=/usr/obj-pico
+
+# --------- YOU SHOULD NOT NEED TO CHANGE ANYTHING BELOW -----------
+# The "build" script will ask you for parameters. Just run it... :-)
+# --------- YOU SHOULD NOT NEED TO CHANGE ANYTHING BELOW -----------
+
+# EDITOR is the editor you use
+EDITOR=${EDITOR:-vi}
+# LANGUAGE language to be used (en or pl)
+LANGUAGE=en
+# SITE site-specific files
+SITE=
+
+# FLOPPY_SIZE floppy size in KB (default to 1440)
+FLOPPY_SIZE=1440 # 1440 1480 1720 (the latter will not boot!)
+
+# DEVFS is currently broken. Always set this.
+#
+NO_DEVFS=yes
+
+# RISU is where dialog replies go.
+RISU=.build.reply
+
+# abort in case of error...
+set -e
+
+. ../Version
+
+# support symbolically linked custom directory
+BUILDDIR=`pwd`
+export BUILDDIR
+
+# assign default values to variables.
+set_defaults() {
+ TYPE=${TYPE:-dial} # PicoBSD type (isp, router, net, custom, ...
+
+ # build image list
+ cat /dev/null > .image.list
+ for i in ../* ; do
+ if [ -d $i -a -f $i/PICOBSD ] ; then
+ a=`awk '/^#PicoBSD/ {print $2, $3, $4, $5, $6}' < $i/PICOBSD`
+ if [ "$a" != "" ]; then
+ echo "`basename $i` $a" >>.image.list
+ fi
+ fi
+ done
+ while read name sz init mfs_in floppy_in ; do
+ if [ "$name" != "#" -a $name != "" ] ; then
+ eval ${name}_DFLT_SIZE=$sz
+ eval ${name}_INIT=$init
+ eval ${name}_MFS_INODES=$mfs_in
+ eval ${name}_FLOPPY_INODES=$floppy_in
+ fi
+ done < .image.list
+}
+
+set_msgs() {
+ MSG1="Type: ${TYPE}"
+ if [ "X${TYPE}" = "Xcustom" ] ; then
+ MSG1="${MSG1} (from ${CUST_DIR})"
+ fi
+
+ MSG="PicoBSD build -- Current parameters:\n\n\t1. ${MSG1}\n\
+\t2. MFS size: ${MFS_SIZE} kB\n\t3. Language: ${LANGUAGE}\n\
+\t4. Site-info: ${SITE}\n"
+}
+
+
+# Main build procedure. It calls another script (stage1)
+main() {
+
+ if [ "X${TYPE}" = "X" ] ; then
+ echo "^G^G^G-> wrong floppy type"
+ exit 10
+ fi
+
+ export suffix
+
+ clear
+ set_msgs
+ printf "${MSG}"
+ echo "-> We'll use the sources living in ${SRC}"
+ echo ""
+ echo "-> I hope you have checked the ../${TYPE}/PICOBSD config file..."
+ echo ""
+ echo ""
+ sleep 2
+
+ export MFS_SIZE LANGUAGE TYPE SRC OBJ NO_DEVFS INIT
+ export SITE MFS_INODES FLOPPY_INODES FLOPPY_SIZE
+
+ ./stage1
+ if [ "X$?" != "X0" ] ; then
+ echo ""
+ echo "-> ERROR in \"${i}\" script. Aborting the build process."
+ echo -n "-> Cleaning temporary files... "
+ umount -f ${MFS_MOUNTPOINT}
+ rm -rf ${MFS_MOUNTPOINT}
+ vnconfig -u /dev/rvn${VNUM}
+ ./clean ${TYPE}
+ echo "Done."
+ exit 10
+ fi
+ echo "==================== ${i} completed ====================="
+}
+
+# check for existing custom config directory and ask user if they want to use it
+#
+# Note that specifying an alternate directory is broken due to relative
+# path assumptions during the kernel compilation phase of the build.
+# For now just dialog-ify.
+
+check_for_old_custom() {
+ KEEP_CUSTOM=no
+ if [ ! -d ../custom ] ; then
+ return
+ fi
+
+ CUSTOMLINK=`ls -l ../custom | awk -F\> '{ print $2 }' | awk '{ print $1 }'`
+ if dialog --title "Custom directory setup" --yesno "A custom configuration\n ${CUSTOMLINK}\nalready exists. Would you like to use it?" 7 50 ; then
+ KEEP_CUSTOM=yes
+ CUST_DIR=${CUSTOMLINK}
+ else
+ KEEP_CUSTOM=no
+ fi
+
+ # If custom is just a simple directory, assume the user wants it
+
+}
+
+# Ask for, and set the custom config directory
+
+set_custom() {
+ dialog --title "Custom directory setup" --inputbox \
+ "Please enter the full path to the directory containing your \
+ custom setup. \
+ This directory tree must be laid out exactly like the standard \
+ ones. (E.g. you can type in /home/abial/work/custom, which \
+ should contain crunch1/, floppy.tree/, lang/ )." \
+ 10 70 2> ${RISU}
+ CUST_DIR=`cat ${RISU}`
+}
+
+# Set type of floppy interactively. Also set the various defaults
+# associated to each type. We can override them manually afterwards.
+
+set_type() {
+ eval MFS_SIZE=$"${TYPE}_DFLT_SIZE"
+ eval INIT=$"${TYPE}_INIT"
+ eval MFS_INODES=$"${TYPE}_MFS_INODES"
+ eval FLOPPY_INODES=$"${TYPE}_FLOPPY_INODES"
+ suffix="-${TYPE}"
+ if [ "${MFS_SIZE}" = "" ] ; then
+ echo "TYPE $TYPE not found!"
+ sleep 2
+ TYPE=""
+ fi
+
+ case ${TYPE} in
+ custom)
+ check_for_old_custom
+ if [ "X${KEEP_CUSTOM}" != "Xyes" ] ; then
+ [ -r ../custom ] && rm -f ../custom
+ set_custom
+ (cd ..; ln -sf ${CUST_DIR} custom)
+ fi
+ ;;
+ esac
+
+}
+
+
+build_package() {
+ touch build.status
+ echo "##############################################" >>build.status
+ echo "## `date` ">>build.status
+ echo "##############################################" >>build.status
+ ./clean dial
+ for y in en pl ; do
+ for z in dial router net isp ; do
+ TYPE=${z}
+ LANGUAGE=${y}
+ set_type
+ echo "---------------------------------------------">>build.status
+ echo "Building TYPE=${z}, LANGUAGE=${y}, SIZE=${MFS_SIZE}" >>build.status
+ main
+ if [ "X$?" != "X0" ] ; then
+ echo " ** FAILED! **">>build.status
+ else
+ echo " (ok)">>build.status
+ fi
+ mv picobsd.bin pb_${y}${suffix}.bin
+ echo "Calling ./clean for ${TYPE}, ${LANGUAGE}, ${MFS_SIZE}">>build.status
+ ./clean ${TYPE}
+ done
+ done
+ exit 0
+}
+
+# Set build parameters interactively
+
+main_dialog() {
+ while [ true ] ; do
+ set_msgs
+ dialog --menu "PicoBSD build menu -- ver ${VER} (22aug1999)" 19 70 12 \
+ N "No change, build it" \
+ T "${MSG1}" \
+ K "edit Kernel config file for ${TYPE}" \
+ E "Edit crunch.conf file for ${TYPE}" \
+ S "MFS Size: ${MFS_SIZE}kB" \
+ L "Language: ${LANGUAGE}" \
+ I "Init type: ${INIT}" \
+ F "Floppy size: ${FLOPPY_SIZE}kB" \
+ M "MFS bytes per inode: ${MFS_INODES}" \
+ U "UFS bytes per inode: ${FLOPPY_INODES}" \
+ $ "Site-info: ${SITE}" \
+ Q "Quit" \
+ 2> ${RISU}
+ ans=`cat ${RISU}`
+ rm ${RISU}
+ case ${ans} in
+ T)
+ dialog --menu "Setup the type of configuration" 12 70 5 \
+ `awk '{ print $1, $1 }' < .image.list` \
+ 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ TYPE=`cat ${RISU}`
+ set_type
+ fi
+ ;;
+ I)
+ dialog --menu "Choose your init(8) program" \
+ 10 70 2 init "Standard init (requires getty)" \
+ oinit "small init from TinyWare" 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ INIT=`cat ${RISU}`
+ fi
+ ;;
+
+ K) ${EDITOR} ../${TYPE}/PICOBSD ;;
+
+ E) ${EDITOR} ../${TYPE}/crunch1/crunch.conf ;;
+
+ S)
+ dialog --title "MFS Size setup" --inputbox \
+"MFS size depends on what you need to put on the MFS image. Typically \
+ranges between 820kB (for very small bridge/router images) to \
+as much as 2500kB kB for a densely packed image. \
+Keep in mind that this memory is \
+totally lost to other programs. Usually you want to keep \
+this as small as possible. " 10 70 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ MFS_SIZE=`cat ${RISU}`
+ if [ "${MFS_SIZE}" = "" ] ; then
+ eval MFS_SIZE=$"${TYPE}_DFLT_SIZE"
+ fi
+ fi
+ ;;
+
+ L)
+ dialog --menu "Please choose language" \
+ 10 40 2 en English pl Polish 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ LANGUAGE=`cat ${RISU}`
+ fi
+ ;;
+
+ \$)
+ dialog --title "Site info setup" --inputbox \
+ "Please enter the full path to the directory \
+ containing site-specific setup. \
+ This directory tree must contain files that replace \
+ standard ones in floppy.tree/ and mfs.tree/ . " \
+ 10 70 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ SITE=`cat ${RISU}`
+ fi
+ ;;
+
+ F)
+ dialog --menu "Set floppy size" 15 70 4 \
+ 1440 "1.44MB" 1720 "1.72MB" \
+ 2880 "2.88MB" 4096 "4MB" 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ FLOPPY_SIZE=`cat ${RISU}`
+ fi
+ ;;
+
+ M)
+ dialog --title "MFS bytes per inode:" --inputbox \
+ "Enter MFS bytes per inode (typically 4096..65536). \
+ A larger value means fewer inodes but more space on MFS" \
+ 10 70 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ MFS_INODES=`cat ${RISU}`
+ if [ "${MFS_INODES}" = "" ] ; then
+ eval MFS_INODES=$"${TYPE}_DFLT_MFS_INODES"
+ fi
+ fi
+ ;;
+
+ U)
+ dialog --title "Floppy bytes per inode:" --inputbox \
+ "Enter floppy bytes per inode (typically 3072..65536). \
+ A larger value means fewer inodes but more space on the floppy." \
+ 10 70 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ FLOPPY_INODES=`cat ${RISU}`
+ if [ "${FLOPPY_INODES}" = "" ] ; then
+ eval FLOPPY_INODES=$"${TYPE}_DFLT_FLOPPY_INODES"
+ fi
+ fi
+ ;;
+
+ N) break 2
+ ;;
+
+ Q) exit 0 ;;
+
+ *) echo "Unknown option \"${ans}\". Try again."
+ sleep 2
+ clear
+ ;;
+ esac
+ done
+}
+
+# Call the build procedure
+# Install image
+do_install() {
+ dialog --title "Build ${TYPE} completed" --inputbox \
+"\nThe build process was completed successfuly.\n\
+`cat .build.reply` \n\n\
+Now we are going to install the image on the floppy.\n\
+Please insert a blank floppy in /dev/fd0.\\n
+WARNING: the contents of the floppy will be permanently erased!\n\
+\n\
+Your options:\n\
+ * ^C or [Cancel] to abort,\n\
+ * Enter to install \"picobsd.bin\",\n\
+ * name of other file to install.\n\
+" 20 80 2> ${RISU}
+ if [ "$?" = "0" ]; then
+ FILENAME=`cat ${RISU}`
+ if [ "${FILENAME}" = "" ] ; then
+ FILENAME=picobsd.bin
+ fi
+ echo "Writing ${FILENAME}..."
+ dd if=${FILENAME} of=/dev/rfd0.${FLOPPY_SIZE}
+ else
+ echo "Ok, the image is in picobsd.bin"
+ fi
+ echo "Done."
+}
+
+#-------------------------------------------------------------------
+# Main entry of the script
+
+interactive="YES"
+if [ "$1" = "-n" ] ; then
+ interactive="NO"
+ shift
+fi
+TYPE=$1
+SITE=$2
+set_defaults
+set_type
+
+# If $1="package", it creates a neat set of floppies
+
+if [ "$1" = "package" ] ; then
+ build_package
+fi
+if [ "$interactive" = "YES" ] ; then
+ main_dialog
+fi
+main # build ${TYPE}
+do_install
+exit 0
diff --git a/release/picobsd/build/clean b/release/picobsd/build/clean
new file mode 100755
index 000000000000..8e579ae6744f
--- /dev/null
+++ b/release/picobsd/build/clean
@@ -0,0 +1,47 @@
+#! /bin/sh -
+
+#
+# $FreeBSD$
+#
+set -e
+
+# Get a list of targets.
+TARGETS=""
+for i in ../* ; do
+ if [ -d $i -a -f $i/PICOBSD ] ; then
+ TARGETS="$TARGETS `basename $i`"
+ fi
+done
+
+if [ $# -lt 1 ]; then
+ echo "What to clean?"
+ echo "Possible targets are:${TARGETS} or 'all'"
+ exit 1
+fi
+
+if [ "$1" = "all" ]; then
+ list=${TARGETS}
+ old="old"
+else
+ list=$1
+ old=$1
+fi
+if [ -f picobsd.bin ]; then
+ mv -f picobsd.bin picobsd.bin.${old}
+fi
+
+rm -fr kernel kernel.gz fs.PICOBSD *.o *core *.db \
+ .build.reply stage1.out build.status .image.list \
+ floppy.tree loader
+cd ..
+rm -rf help/tmp_hlp
+echo "===================== $0 tools started ===================="
+for j in $list ; do
+ echo "===================== $0 $j started ======================"
+ (cd ${j}/crunch1; \
+ if [ -f crunch1.mk ]; then \
+ make -f crunch1.mk realclean ; \
+ fi ; \
+ make -f ../../build/Makefile.crunch clean)
+ echo "=============== $0 $j completed successfuly =============="
+done
diff --git a/release/picobsd/build/config b/release/picobsd/build/config
new file mode 100644
index 000000000000..f3bc238e83ff
--- /dev/null
+++ b/release/picobsd/build/config
@@ -0,0 +1,15 @@
+# config variables for PicoBSD floppies.
+# This file is sourced by the main build script. It should
+# only contain assignment to shell variables.
+#
+# The type-specific "config" file is sourced after this one, so
+# you can override things there.
+
+# The two variables below contain the list of links and device entries
+# which are created on the mfs image.
+
+STAND_LINKS=${STAND_LINKS:-"bin sbin usr/bin usr/sbin usr/libexec \
+ usr/local/bin"}
+
+MY_DEVS=${MY_DEVS:-"std tun2 cuaa0 cuaa1 cuaa2 vty10 fd0 ad0 pty0 \
+ ttyd0 cuaa0 bpf0 bpf1 sa0 sa1"}
diff --git a/release/picobsd/build/mfs.mtree b/release/picobsd/build/mfs.mtree
new file mode 100644
index 000000000000..5c8e70ce6b20
--- /dev/null
+++ b/release/picobsd/build/mfs.mtree
@@ -0,0 +1,70 @@
+#
+# $FreeBSD$
+#
+/set type=dir uname=root gname=wheel mode=0755
+.
+ cdrom
+ ..
+ dev
+ ..
+ dos
+ ..
+ etc
+ ..
+ fd
+ ..
+ home
+ user
+ ..
+ ..
+ mnt
+ ..
+ mnt1
+ ..
+ mnt2
+ ..
+ proc
+ ..
+ root
+ ..
+ stand
+ ..
+ start_floppy
+ ..
+ tftpboot
+ ..
+ tmp mode=01777
+ ..
+ usr
+ local
+ etc
+ ..
+ lib
+ snmp
+ ..
+ ..
+ ..
+ share
+ misc
+ ..
+ locale
+ ..
+ syscons
+ ..
+ nls
+ ..
+ ..
+ ..
+ var
+ db
+ ..
+ run
+ ..
+ spool
+ lock
+ ..
+ ..
+ ..
+ wd
+ ..
+..
diff --git a/release/picobsd/build/picobsd b/release/picobsd/build/picobsd
new file mode 100755
index 000000000000..78765804b76f
--- /dev/null
+++ b/release/picobsd/build/picobsd
@@ -0,0 +1,710 @@
+#!/bin/sh -
+#
+# $FreeBSD$
+#
+# The new PicoBSD build script. Invoked as
+#
+# picobsd [options] floppy_type site_name
+#
+# Where floppy_type is a directory where the picobsd config info
+# is held, and ${floppy_type}/floppy.tree.${site_name} contains
+# optional site-specific configuration.
+#
+# For Options, see the bottom of the file where the processing is
+# done... so
+#
+# This script depends on the following files:
+#
+# in ${PICO_TREE} :
+# Makefile.conf Makefile used to build the kernel
+# config shell variables, sourced here.
+# mfs.mtree mtree config file
+#
+# floppy.tree/ files which go on the floppy
+# mfs_tree/ files which go onto the mfs
+#
+# in ${MY_TREE} :
+# PICOBSD kernel config file
+# config shell variables, sourced here.
+# crunch.conf crunchgen configuration
+# floppy.tree.exclude files from floppy.tree/ which we do not need here.
+# floppy.tree/ local additions to the floppy.tree
+# floppy.tree.${site}/ same as above, site specific.
+
+#
+#--- here are various functions used by the script.
+#--- The main entry point is at the end.
+#
+
+# initialize some shell variables used by the script.
+
+init_vars() { # OK
+
+ # if you include the floppy tree in the mfs, you
+ # can boot from the image via diskless.
+ INCLUDE_FLOPPY_IN_MFS="yes"
+
+ # SRC points to your FreeBSD source tree.
+ # OBJ points to the obj tree. Normally /usr/obj-pico.
+ # PICO_TREE is where standard picobsd stuff resides.
+ # MY_TREE (set later) is where this floppy type resides.
+ # START_DIR is the directory where we start
+ # BUILDDIR is the build directory, which is the current one.
+
+ SRC=${SRC:-/usr/src}
+ OBJ=${OBJ:-/usr/obj-pico}
+ PICO_TREE=${PICO_TREE:-/usr/src/release/picobsd}
+ START_DIR=`pwd`
+
+ # Various temporary files and directories.
+ # User replies will be put in $RISU
+ RISU=${RISU:-`mktemp "/tmp/reply.XXXXXXXXXX"`}
+ MFS_MOUNTPOINT=`mktemp -d "/tmp/picobsd.XXXXXXXXXX"`
+
+ MFS_NAME=fs.PICOBSD
+
+ # EDITOR is the editor you use
+ # SITE is site_name above.
+ # FLOPPY_SIZE floppy size in KB (default to 1440). You can use 1480,
+ # 1720, 2880, etc. but beware that only 1440 and 1480 will boot
+ # from 1.44M floppy drives (1480 will not work on vmware).
+ EDITOR=${EDITOR:-vi}
+ SITE=
+ FLOPPY_SIZE=${FLOPPY_SIZE:-1440}
+
+ NO_DEVFS=yes # DEVFS is currently broken. Always set this.
+
+ # Find a suitable vnode
+ VNUM=`mount | awk "/vn/ { num++ } END { printf \"%d\", num }"`
+ log "---> Using vn${VNUM}..."
+
+ # Location of the boot blocks (in case you want them custom-built)
+ boot1=/boot/boot1
+ boot2=/boot/boot2
+
+ # abort in case of error...
+ set -e
+
+ trap fail 2 # catch user interrupt
+ free_vnode
+}
+
+# log something on stdout if verbose.
+log() {
+ if [ "$verbose" != "" ] ; then
+ printf "%s\n" "$*"
+ read -p "(log) enter to continue" foo
+ fi
+}
+
+# set_type <type> looks for the floppy type specified as
+# first argument in user- or standard- directory.
+# If found set variables accordingly.
+
+set_type() { # OK
+ a=$1
+ for i in ${START_DIR}/${a} ${PICO_TREE}/${a} ; do
+ if [ -d $i -a -f $i/PICOBSD -a -f $i/crunch.conf ] ; then
+ set -- `cat $i/PICOBSD | \
+ awk '/^#PicoBSD/ {print $2, $3, $4, $5, $6}'`
+ if [ "$1" != "" ]; then
+ MFS_SIZE=$1 ; INIT=$2
+ MFS_INODES=$3 ; FLOPPY_INODES=$4
+ name=`(cd $i ; pwd) `
+ name=`basename $name`
+ MY_TREE=$i
+ BUILDDIR=${START_DIR}/build_dir-${name}
+ log "---> Matching file $name in $i"
+ return ;
+ fi
+ fi
+ done
+ echo "Type $a NOT FOUND"
+}
+
+clean_tree() {
+ if [ "${name}" = "" ] ; then
+ echo "---> wrong floppy type"
+ exit 3
+ fi
+ rm -rf ${BUILDDIR}
+}
+
+# prepare a message to be printed in the dialog menus.
+set_msgs() { # OK
+ MSG1="Type: ${THETYPE} name $name"
+
+ MSG="PicoBSD build -- Current parameters:\n\n\t1. ${MSG1}\n\
+\t2. MFS size: ${MFS_SIZE} kB\n\
+\t3. Site-info: ${SITE}\n\t4. Full-path: ${MY_TREE}\n"
+}
+
+
+# Main build procedure.
+build_image() {
+ if [ "${name}" = "" ] ; then
+ echo "-> wrong floppy type"
+ final_cleanup
+ exit 1
+ fi
+ clear
+ set_msgs
+ printf "${MSG}"
+ echo "-> We'll use the sources living in ${SRC}"
+ echo "-> vnode is $VNUM"
+ echo ""
+ echo "-> I hope you have checked the PICOBSD config file..."
+ echo ""
+ echo ""
+
+ init_stage1
+ do_kernel
+ populate_floppy_fs # things which go into floppy
+ create_mfs
+ populate_mfs # things which go into mfs
+ fill_floppy_image # copies everything into the floppy
+}
+
+build_package() {
+ touch build.status
+ echo "##############################################" >>build.status
+ echo "## `date` ">>build.status
+ echo "##############################################" >>build.status
+ ./clean dial
+ for z in dial router net isp ; do
+ set_type ${z}
+ echo "---------------------------------------------">>build.status
+ echo "Building TYPE=${z}, SIZE=${MFS_SIZE}" >>build.status
+ build_image
+ if [ "X$?" != "X0" ] ; then
+ echo " ** FAILED! **">>build.status
+ else
+ echo " (ok)">>build.status
+ fi
+ mv ${BUILDDIR}/picobsd.bin ${BUILDDIR}/picobsd.${name}.bin
+ echo "Cleaning ${z}">>build.status
+ clean_tree
+ done
+ exit 0
+}
+
+# Set build parameters interactively
+
+main_dialog() {
+ while [ true ] ; do
+ set_msgs
+ dialog --menu "PicoBSD build menu -- (19 feb 2000)" 19 70 12 \
+ N "--> READY, build it <---" \
+ T "${MSG1}" \
+ K "edit Kernel config file" \
+ E "Edit crunch.conf file" \
+ S "MFS Size: ${MFS_SIZE}kB" \
+ I "Init type: ${INIT}" \
+ F "Floppy size: ${FLOPPY_SIZE}kB" \
+ M "MFS bytes per inode: ${MFS_INODES}" \
+ U "UFS bytes per inode: ${FLOPPY_INODES}" \
+ $ "Site-info: ${SITE}" \
+ Q "Quit" \
+ 2> ${RISU}
+ ans=`cat ${RISU}`
+ rm ${RISU}
+ case ${ans} in
+ T)
+ l=""
+ for i in ${START_DIR} ${START_DIR}/* ${PICO_TREE}/* ; do
+ if [ -d $i -a -f $i/PICOBSD -a -f $i/crunch.conf ]; then
+ l="$l `basename $i` `basename $i`"
+ fi
+ done
+ log $l
+ dialog --menu "Setup the type of configuration" 12 70 5 $l \
+ 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ THETYPE=`cat ${RISU}`
+ set_type $THETYPE
+ fi
+ ;;
+ I)
+ dialog --menu "Choose your init(8) program" \
+ 10 70 2 init "Standard init (requires getty)" \
+ oinit "small init from TinyWare" 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ INIT=`cat ${RISU}`
+ fi
+ ;;
+
+ K) ${EDITOR} ${MY_TREE}/PICOBSD ;;
+
+ E) ${EDITOR} ${MY_TREE}/crunch.conf ;;
+
+ S)
+ dialog --title "MFS Size setup" --inputbox \
+"MFS size depends on what you need to put on the MFS image. Typically \
+ranges between 820kB (for very small bridge/router images) to \
+as much as 2500kB kB for a densely packed image. \
+Keep in mind that this memory is \
+totally lost to other programs. Usually you want to keep \
+this as small as possible. " 10 70 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ MFS_SIZE=`cat ${RISU}`
+ fi
+ ;;
+
+ \$)
+ dialog --title "Site info setup" --inputbox \
+ "Please enter the full path to the directory \
+ containing site-specific setup. \
+ This directory tree must contain files that replace \
+ standard ones in floppy.tree/ and mfs.tree/ . " \
+ 10 70 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ SITE=`cat ${RISU}`
+ fi
+ ;;
+
+ F)
+ dialog --menu "Set floppy size" 15 70 4 \
+ 1440 "1.44MB" 1720 "1.72MB" \
+ 2880 "2.88MB" 4096 "4MB" 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ FLOPPY_SIZE=`cat ${RISU}`
+ fi
+ ;;
+
+ M)
+ dialog --title "MFS bytes per inode:" --inputbox \
+ "Enter MFS bytes per inode (typically 4096..65536). \
+ A larger value means fewer inodes but more space on MFS" \
+ 10 70 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ MFS_INODES=`cat ${RISU}`
+ fi
+ ;;
+
+ U)
+ dialog --title "Floppy bytes per inode:" --inputbox \
+ "Enter floppy bytes per inode (typically 3072..65536). \
+ A larger value means fewer inodes but more space on the floppy." \
+ 10 70 2> ${RISU} || rm ${RISU}
+ if [ -f ${RISU} ] ; then
+ FLOPPY_INODES=`cat ${RISU}`
+ fi
+ ;;
+
+ N) break 2
+ ;;
+
+ Q) exit 0 ;;
+
+ *) echo "Unknown option \"${ans}\". Try again."
+ sleep 2
+ clear
+ ;;
+ esac
+ done
+}
+
+# Call the build procedure
+# Install image
+do_install() {
+ dialog --title "Build ${TYPE} completed" --inputbox \
+"\nThe build process was completed successfuly.\n\
+`cat .build.reply` \n\n\
+Now we are going to install the image on the floppy.\n\
+Please insert a blank floppy in /dev/fd0.\\n
+WARNING: the contents of the floppy will be permanently erased!\n\
+\n\
+Your options:\n\
+ * ^C or [Cancel] to abort,\n\
+ * Enter to install \"picobsd.bin\",\n\
+" 20 80 2> ${RISU}
+ if [ "$?" = "0" ]; then
+ echo "Writing picobsd.bin..."
+ dd if=${BUILDDIR}/picobsd.bin of=/dev/rfd0.${FLOPPY_SIZE}
+ else
+ echo "Ok, the image is in picobsd.bin"
+ fi
+ echo "Done."
+}
+
+
+#-------------------------------------------------------------------
+
+init_stage1() {
+
+ # read config variables from a global and then a type-specific file
+ #
+ . ${PICO_TREE}/build/config
+ if [ -f ${MY_TREE}/config ]; then
+ . ${MY_TREE}/config
+ fi
+
+ export MFS_MOUNTPOINT # used in the makefiles.
+ export PICO_OBJ # used in the makefiles
+ export SRC # used in the makefiles.
+
+ PICO_OBJ=${OBJ}/picobsd/${TYPE}
+
+ if [ ! -d ${BUILDDIR} ]; then
+ log "Creating builddir"
+ mkdir $BUILDDIR
+ if [ ! -d ${BUILDDIR}/crunch ]; then
+ log "creating crunch dir"
+ mkdir ${BUILDDIR}/crunch
+ fi
+ else
+ rm -f ${BUILDDIR}/kernel.gz ${BUILDDIR}/${MFS_NAME} # cleanup...
+ fi
+}
+
+# invoke the makefile to compile the kernel.
+# Then copy it here and strip as much as possible.
+do_kernel() { # OK
+ log "---> Preparing kernel "$name" in $MY_TREE"
+ export name SRC # used in this makefile
+ (cd $MY_TREE; make -v -f ${PICO_TREE}/build/Makefile.conf )
+ cp -p ${SRC}/sys/compile/PICOBSD-${name}/kernel ${BUILDDIR}/kernel || \
+ fail $? missing_kernel
+ (cd ${BUILDDIR};
+ strip kernel
+ strip --remove-section=.note --remove-section=.comment kernel
+ )
+}
+
+# Populate the variable part of the floppy filesystem. Should be
+# done before the MFS because it might need to be copied there as well.
+#
+# This involves three subtrees, in this order:
+#
+# 1. a standard one from which type-specific files are excluded;
+# 2. a type-specific one;
+# 3. a site-specific one.
+#
+# Files are first copied to a local tree and then compressed.
+
+populate_floppy_fs() { # OK
+
+ dst=${BUILDDIR}/floppy.tree
+ log "---> Populating floppy filesystem..."
+
+ # clean relics from old compilations. This is the destination.
+ rm -rf $dst || true
+ mkdir $dst
+
+ excl=${MY_TREE}/floppy.tree.exclude
+ if [ -f ${excl} ] ; then
+ excl="--exclude-from ${excl}"
+ log "---> Exclude following files from generic tree:
+`cat ${excl}`"
+ else
+ excl=""
+ fi
+ (cd ${PICO_TREE}/floppy.tree ; tar -cf - --exclude CVS ${excl} . ) | \
+ (cd ${dst} ; tar x${TAR_VERBOSE}f - )
+ log "---> Copied from generic floppy-tree `echo; ls -laR ${dst}`"
+
+ srcdir=${MY_TREE}/floppy.tree
+ if [ -d ${srcdir} ] ; then
+ log "---> update with type-specific files:"
+ (cd ${srcdir} ; tar -cf - --exclude CVS . ) | \
+ (cd ${dst} ; tar x${TAR_VERBOSE}f - )
+ log "---> Copied from type floppy-tree `echo; ls -laR ${dst}`"
+ else
+ log "---> No type-specific floppy-tree"
+ fi
+ if [ -d ${srcdir}.${SITE} ] ; then
+ log "-> update with site-specific (${SITE}) files:"
+ (cd ${srcdir}.${SITE} ; tar -cf - --exclude CVS . ) | \
+ (cd ${dst} ; tar x${TAR_VERBOSE}f - )
+ log "---> Copied from site floppy-tree `echo; ls -laR ${dst}`"
+ else
+ log "---> No site-specific floppy-tree"
+ fi
+ # gzip returns an error if it fails to compress some file
+ (cd $dst
+ gzip -9 etc/*
+ log "---> Compressed files in etc/
+`ls -l etc`"
+ ) || true
+}
+
+create_mfs() { # OK
+ log "---> Preparing MFS filesystem..."
+
+ free_vnode
+
+ # zero-fill the MFS image
+ init_fs_image ${BUILDDIR}/${MFS_NAME} ${MFS_SIZE}
+
+ log "---> Labeling MFS image"
+ # Disklabel "auto" behaves strangely for sizes < 1024K. Basically
+ # it fails to install a label on the system. On the other hand,
+ # if you provide a specific disk type, the boot code is not
+ # installed so you have more space on the disk...
+ # For small image sizes, use std disktypes
+ if [ ${MFS_SIZE} -lt 1024 ] ; then
+ disklabel -rw vn${VNUM} fd${MFS_SIZE} || fail $? mfs_disklabel
+ else
+ disklabel -rw vn${VNUM} auto || fail $? mfs_disklabel
+ fi
+ newfs -i ${MFS_INODES} -m 0 -p 0 -o space /dev/rvn${VNUM}c > /dev/null
+ mount /dev/vn${VNUM}c ${MFS_MOUNTPOINT} || fail $? no_mount
+ log "`df /dev/vn${VNUM}c`"
+}
+
+# Populate the memory filesystem with binaries and non-variable
+# configuration files.
+# First do an mtree pass, then create directory links and device entries,
+# then run crunchgen etc. to build the binary and create links.
+# Then copy the specific/generic mfs_tree.
+# Finally, if required, make a copy of the floppy.tree onto /fd
+
+populate_mfs() {
+ log "---> Populating MFS tree..."
+ cd ../${TYPE}
+
+ log "---> Running mtree ..."
+ if [ -f ${MY_TREE}/mfs.mtree ] ; then
+ a=${MY_TREE}/mfs.mtree
+ else
+ a=${PICO_TREE}/build/mfs.mtree
+ fi
+ mtree -deU -f $a -p ${MFS_MOUNTPOINT} > /dev/null || fail $? mtree
+
+ # XXX create links
+ for i in ${STAND_LINKS}; do
+ ln -s /stand ${MFS_MOUNTPOINT}/$i
+ done
+ ln -s /dev/null ${MFS_MOUNTPOINT}/var/run/log
+ ln -s /etc/termcap ${MFS_MOUNTPOINT}/usr/share/misc/termcap
+
+ if [ "${NO_DEVFS}" != "" ] ; then
+ (cd ${MFS_MOUNTPOINT}/dev ; ln -s /dev/MAKEDEV ;
+ ./MAKEDEV ${MY_DEVS}; rm MAKEDEV)
+ fi
+
+ (
+ cd ${BUILDDIR}/crunch
+ log "---> Making and installing crunch1 from `pwd`..."
+ a=${BUILDDIR}/crunch1.conf
+ cat ${MY_TREE}/crunch.conf|sed -e "s@/usr/src@${SRC}@" | \
+ sed -e "s@CWD@${MY_TREE}@" > $a
+ arg=""
+ if [ -f ${MY_TREE}/crunch.inc ] ; then
+ h="-h ${MY_TREE}/crunch.inc"
+ fi
+ crunchgen -p ${PICO_OBJ} -o $arg -m ${BUILDDIR}/crunch.mk $a || true
+ # failure is not critical here
+ log "Now make -f crunch.mk"
+ make -s -f ${BUILDDIR}/crunch.mk
+ strip --remove-section=.note --remove-section=.comment crunch1
+ mv crunch1 ${MFS_MOUNTPOINT}/stand/crunch
+ chmod 555 ${MFS_MOUNTPOINT}/stand/crunch
+ log "---> Making links for binaries..."
+ for i in `crunchgen -l $a` ; do
+ ln ${MFS_MOUNTPOINT}/stand/crunch ${MFS_MOUNTPOINT}/stand/${i};
+ done
+ rm $a
+ ) || fail $? crunch
+
+ if [ -f ${MFS_MOUNTPOINT}/stand/sshd ] ; then
+ log "creating host key for sshd"
+ ssh-keygen -f ${MFS_MOUNTPOINT}/etc/ssh_host_key -N "" -C "root@picobsd"
+ fi
+
+ if [ -d ${MY_TREE}/mfs_tree ]; then
+ log "---> Copy site-specific MFS tree..."
+ MFS_TREE=${MY_TREE}/mfs_tree
+ else
+ log "---> Copy generic MFS tree..."
+ MFS_TREE=${PICO_TREE}/mfs_tree
+ fi
+ (cd ${MFS_TREE} ; tar -cf - --exclude CVS . ) | \
+ (cd ${MFS_MOUNTPOINT} ; tar x${TAR_VERBOSE}f - )
+
+ if [ "${INCLUDE_FLOPPY_IN_MFS}" = "yes" ]; then
+ log "---> Copy generic floppy_tree into MFS..."
+ cp -Rp ${BUILDDIR}/floppy.tree/* ${MFS_MOUNTPOINT}/fd
+ fi
+ (log "---> Fixing permissions"; cd ${MFS_MOUNTPOINT}; chown -R root . )
+ df -ik ${MFS_MOUNTPOINT}
+ umount ${MFS_MOUNTPOINT}
+ fsck -p /dev/rvn${VNUM}c
+ vnconfig -u vn${VNUM}
+}
+
+# free as much as possible from the vnode
+free_vnode() {
+ umount ${MFS_MOUNTPOINT} 2> /dev/null || true
+ umount /dev/vn${VNUM} 2> /dev/null || true
+ vnconfig -u vn${VNUM} 2> /dev/null || true
+}
+
+final_cleanup() {
+ free_vnode
+ rm -rf ${MFS_MOUNTPOINT} ${RISU} 2> /dev/null || true
+}
+
+# fail errno errcode
+# This function is used to trap errors and print msgs
+#
+fail() {
+ errno=$1
+ errcode=$2
+ echo "---> fail: Error <$errno> error code <$errcode>"
+ case $errcode in
+ no_vnconfig)
+ echo "Error while doing vnconfig of ${imgname} on /dev/rvn${VNUM}..."
+ echo " Most probably your running kernel doesn't have the vn(4) device."
+ ;;
+ mfs_disklabel)
+ echo "Error while labeling ${MFS_NAME} size ${MFS_SIZE}"
+ ;;
+ no_mount)
+ echo "Error while mounting ${MFS_NAME} (/dev/vn${VNUM}c) on ${MFS_MOUNTPOINT}"
+ ;;
+ mtree)
+ echo "Error while making hierarchy in ${MFS_MOUNTPOINT}"
+ ;;
+ makedevs)
+ echo "Error while making devices in ${MFS_MOUNTPOINT}"
+ ;;
+ crunch)
+ echo "Error while building ${name}."
+ ;;
+ vnconfig2)
+ echo "Error while doing vnconfig of floppy.img on /dev/rvn${VNUM}..."
+ ;;
+ floppy_disklabel)
+ echo "Error while doing disklabel on of floppy.img size $FLOPPY_SIZE"
+ ;;
+ kernel_compress)
+ echo "Error while copying compressed kernel to disk"
+ ;;
+ mfs_compress)
+ echo "Error while copying compressed mfs image to disk"
+ ;;
+ missing_kernel)
+ echo "-> ERROR: you must build PICOBSD${suffix} kernel first"
+ ;;
+ "")
+ echo "User break"
+ errcode="userbreak";
+ ;;
+ *)
+ echo "unknown error, maybe user break: $errno $errcode"
+ ;;
+ esac
+ echo "---> Aborting $0"
+ # try to cleanup the vnode.
+ final_cleanup
+ exit 2
+}
+
+#
+# Create a zero-filled disk image with a boot sector, and vnconfig it.
+#
+
+init_fs_image() { # filename size_in_kbytes
+ imgname=$1 ; imgsize=$2
+ dd if=/dev/zero of=${imgname} count=${imgsize} bs=1k 2> /dev/null
+ dd if=${boot1} of=${imgname} conv=notrunc 2> /dev/null
+
+ vnconfig -c vn${VNUM} ${imgname} || fail $? no_vnconfig
+}
+
+
+fill_floppy_image() {
+ log "---> Preparing ${FLOPPY_SIZE}kB floppy filesystem..."
+
+ # correct block and number of sectors according to size.
+ blocks=${FLOPPY_SIZE}; sectors=18
+ if [ "${blocks}" = "1720" ]; then
+ blocks=1722 ; sectors=21
+ elif [ "${blocks}" = "1480" ]; then
+ blocks=1476 ;
+ fi
+
+ init_fs_image ${BUILDDIR}/picobsd.bin ${blocks}
+
+ log "---> Labeling floppy image"
+ disklabel -Brw -b ${boot1} -s ${boot2} vn${VNUM} fd${FLOPPY_SIZE} || \
+ fail $? floppy_disklabel
+
+ newfs -i ${FLOPPY_INODES} -m 0 -p 0 -o space /dev/vn${VNUM}c > /dev/null
+
+ mount /dev/vn${VNUM}c ${MFS_MOUNTPOINT}
+
+ # preload kernel, compress with kgzip and copy to floppy image
+ (
+ cd ${BUILDDIR}
+ cc -o wmk ${PICO_TREE}/../write_mfs_in_kernel.c
+ ./wmk kernel ${MFS_NAME}
+ rm wmk
+ kgzip -o kernel.gz kernel
+ cp -p kernel.gz ${MFS_MOUNTPOINT}/kernel
+
+ # now transfer the floppy tree. If it is already in mfs, dont bother.
+ if [ "${INCLUDE_FLOPPY_IN_MFS}" != "yes" ]; then
+ cp -Rp floppy.tree/* ${MFS_MOUNTPOINT}
+ fi
+ )
+ (log "---> Fixing permissions"; cd ${MFS_MOUNTPOINT}; chown -R root *)
+ rm -rf ${BUILDDIR}/floppy.tree || true # cleanup
+
+ df -ik ${MFS_MOUNTPOINT} | colrm 70 > .build.reply
+ free_vnode
+ rm -rf ${MFS_MOUNTPOINT}
+ rm ${BUILDDIR}/kernel.gz ${BUILDDIR}/${MFS_NAME}
+}
+
+#-------------------------------------------------------------------
+# Main entry of the script
+
+init_vars
+
+while [ true ]; do
+ case $1 in
+ --floppy_size)
+ FLOPPY_SIZE=$2
+ shift
+ ;;
+ -n)
+ interactive="NO"
+ ;;
+ -c*) # clean
+ clean="YES"
+ interactive="NO"
+ ;;
+ -v)
+ verbose="YES"
+ TAR_VERBOSE="v"
+ ;;
+ *)
+ break ;
+ ;;
+
+ esac
+ shift
+done
+
+THETYPE=$1
+SITE=$2
+set_type $THETYPE
+
+# If $1="package", it creates a neat set of floppies
+
+if [ "$1" = "package" ] ; then
+ build_package
+fi
+if [ "$interactive" != "NO" ] ; then
+ main_dialog
+fi
+if [ "$clean" = "YES" ] ; then
+ clean_tree
+else
+ build_image
+ do_install
+fi
+final_cleanup
+exit 0
diff --git a/release/picobsd/build/stage1 b/release/picobsd/build/stage1
new file mode 100755
index 000000000000..48404178d61d
--- /dev/null
+++ b/release/picobsd/build/stage1
@@ -0,0 +1,290 @@
+#! /bin/sh -
+
+# $FreeBSD$
+#
+# stage1 -- this script prepares the actual picobsd image
+
+. ../Version
+
+set -e # abort in case of untested errors
+
+# By default, /tmp should exist.
+#
+MFS_NAME=fs.PICOBSD
+MFS_MOUNTPOINT=`mktemp -d "/tmp/picobsd.XXXXXXXXXX"`
+export MFS_MOUNTPOINT
+
+PICO_OBJ=${OBJ}/picobsd/${TYPE}
+export PICO_OBJ
+
+# Location of the boot blocks (in case you want them custom-built)
+boot1=/boot/boot1
+boot2=/boot/boot2
+
+rm -f kernel.gz ${MFS_NAME} # cleanup...
+
+# find a suitable vnode
+VNUM=`mount | awk "/vn/ { num++ } END { printf \"%d\", num }"`
+export VNUM
+echo "-> Using vn${VNUM}..."
+
+trap fail 2 # catch user interrupt
+
+# free as much as possible from the vnode
+free_vnode() {
+ umount ${MFS_MOUNTPOINT} 2> /dev/null || true
+ umount /dev/vn${VNUM} 2> /dev/null || true
+ vnconfig -u /dev/rvn${VNUM} 2> /dev/null || true
+}
+
+# fail errno errcode
+# This function is used to trap errors and print msgs
+#
+fail() {
+ errno=$1
+ errcode=$2
+ echo "--> Error $errno code $errcode"
+ case $errcode in
+ no_vnconfig)
+ echo "Error while doing vnconfig of ${MFS_NAME} on /dev/rvn${VNUM}..."
+ echo " Most probably your running kernel doesn't have the vn(4) device."
+ ;;
+ disklabel)
+ echo "Error while labeling ${MFS_NAME} size ${MFS_SIZE}"
+ ;;
+ no_mount)
+ echo "Error while mounting ${MFS_NAME} (/dev/vn${VNUM}c) on ${MFS_MOUNTPOINT}"
+ ;;
+ mtree)
+ echo "Error while making hierarchy in ${MFS_MOUNTPOINT}"
+ ;;
+ makedevs)
+ echo "Error while making devices in ${MFS_MOUNTPOINT}"
+ ;;
+ crunch)
+ echo "Error while building ../${TYPE}/crunch1..."
+ ;;
+ vnconfig2)
+ echo "Error while doing vnconfig of floppy.img on /dev/rvn${VNUM}..."
+ ;;
+ disklabel)
+ echo "Error while doing disklabel on of floppy.img size $FLOPPY_SIZE"
+ ;;
+ kernel_compress)
+ echo "Error while copying compressed kernel to disk"
+ ;;
+ mfs_compress)
+ echo "Error while copying compressed mfs image to disk"
+ ;;
+ missing_kernel)
+ echo "-> ERROR: you must build PICOBSD${suffix} kernel first"
+ ;;
+ *)
+ echo "unknown error, maybe user break: $errno $errcode"
+ ;;
+ esac
+ echo "-> Aborting $0"
+ # try to cleanup the vnode.
+ free_vnode
+ rm -rf ${MFS_MOUNTPOINT} 2> /dev/null || true
+ exit 10
+}
+
+create_mfs() {
+ echo "-> Preparing MFS filesystem..."
+
+ free_vnode
+
+ # zero-fill the MFS image
+ dd of=${MFS_NAME} if=/dev/zero count=${MFS_SIZE} bs=1k 2> /dev/null
+
+ vnconfig -s labels -c /dev/rvn${VNUM} ${MFS_NAME} 2>/dev/null || \
+ fail $? no_vnconfig
+
+ dd if=/boot/boot1 of=${MFS_NAME} conv=notrunc 2> /dev/null
+
+ # This command does weird things on 2.2.x systems.
+ # For small image sizes, use std disktypes
+ if [ ${MFS_SIZE} -lt 1024 ] ; then
+ disklabel -rw /dev/rvn${VNUM} fd${MFS_SIZE} || fail $? disklabel
+ else
+ disklabel -rw vn${VNUM} auto || fail $? disklabel
+ fi
+
+ newfs -i ${MFS_INODES} -m 0 -p 0 -o space /dev/rvn${VNUM}c
+ mount /dev/vn${VNUM}c ${MFS_MOUNTPOINT} || fail $? no_mount
+
+ pwd=`pwd`
+}
+
+populate_mfs() {
+ echo "-> Populating MFS tree..."
+ cd ../${TYPE}
+ make -f Makefile.mfs DESTDIR=${MFS_MOUNTPOINT} > /dev/null || \
+ fail $? mtree
+ if [ X"${NO_DEVFS}" != X"" ] ; then
+ make -f Makefile.mfs DESTDIR=${MFS_MOUNTPOINT} devnodes \
+ > /dev/null || fail $? makedevs
+ fi
+
+ MFS_RC=mfs_tree/etc/rc
+ if [ ! -f ${MFS_RC} ] ; then # no private version. use generic mfs.rc
+ MFS_RC=${BUILDDIR}/../${MFS_RC}
+ fi
+ if [ "${INIT}" = "oinit" ] ; then
+ cat ${MFS_RC} | sed -e "s/@VER@/${VER}/g" > ${MFS_MOUNTPOINT}/etc/oinit.rc
+ else
+ cat ${MFS_RC} | sed -e "s/@VER@/${VER}/g" > ${MFS_MOUNTPOINT}/etc/rc
+ fname=mfs_tree/etc/login.conf
+ if [ ! -f ${fname} ] ; then
+ fname=${BUILDDIR}/../${fname}
+ fi
+ cp ${fname} ${MFS_MOUNTPOINT}/etc/login.conf
+ fi
+
+ if [ "${TYPE}" = "dial" ] ; then
+ for i in login dialup; do
+ cp lang/${i}.${LANGUAGE} ${MFS_MOUNTPOINT}/stand/${i}
+ done
+ ln -s /stand/reboot ${MFS_MOUNTPOINT}/stand/shutdown
+ (cd ../help;\
+ rm -rf tmp_hlp;\
+ mkdir tmp_hlp;\
+ for i in `ls *.hlp.${LANGUAGE}`; do \
+ cp $i tmp_hlp/`basename $i .hlp.${LANGUAGE}`;\
+ done;\
+ cd tmp_hlp;\
+ ar -cru help.a *;\
+ cp help.a ${MFS_MOUNTPOINT}/help.a)
+ fi
+
+ echo "-> Making and installing crunch1..."
+ cd crunch1
+ make -f ../../build/Makefile.crunch "SRC=${SRC}" && \
+ make -f ../../build/Makefile.crunch install 2>&1 >/dev/null || \
+ fail $? crunch
+
+ cd ${pwd}
+ if [ -f ${MFS_MOUNTPOINT}/stand/sshd ] ; then
+ echo "creating host key for sshd"
+ ssh-keygen -f ${MFS_MOUNTPOINT}/etc/ssh_host_key -N "" -C "root@picobsd"
+ fi
+ cp -Rp ../mfs_tree/stand/update ${MFS_MOUNTPOINT}/stand/update
+
+ (echo "-> Fixing permissions"; cd ${MFS_MOUNTPOINT}; chown -R root *)
+ df -ik ${MFS_MOUNTPOINT}
+ umount ${MFS_MOUNTPOINT}
+ fsck -p /dev/rvn${VNUM}c
+ vnconfig -u /dev/rvn${VNUM}
+}
+
+do_kernel() {
+ echo "-> Preparing kernel..."
+ (cd ../${TYPE}; make -v -f ${BUILDDIR}/Makefile.conf )
+ cp -p ${SRC}/sys/compile/PICOBSD${suffix}/kernel kernel || \
+ fail $? missing_kernel
+ strip kernel
+ strip --remove-section=.note --remove-section=.comment kernel
+}
+
+do_floppy() {
+ # On entry we are in /usr/src/release/build.
+
+ echo "==> Preparing ${FLOPPY_SIZE}kB floppy filesystem..."
+
+ # correct block and number of sectors according to size.
+ blocks=${FLOPPY_SIZE}
+ sectors=18
+ if [ "${blocks}" = "1720" ]; then
+ blocks=1722
+ sectors=21
+ elif [ "${blocks}" = "1480" ]; then
+ blocks=1476
+ fi
+ echo "${sectors} sectors per track"
+ # create image
+ dd of=picobsd.bin if=/dev/zero count=${blocks} bs=1k
+ # put in boot sector so vnconfig and disklabel will not complain
+ dd if=${boot1} of=picobsd.bin conv=notrunc 2> /dev/null
+ vnconfig -c /dev/rvn${VNUM} picobsd.bin || fail $? vnconfig2
+
+ disklabel -Brw -b ${boot1} -s ${boot2} /dev/vn${VNUM}c \
+ fd${FLOPPY_SIZE} || \
+ fail $? disklabel
+
+ newfs -i ${FLOPPY_INODES} -m 0 -p 0 -o space /dev/rvn${VNUM}c
+
+ mount /dev/vn${VNUM}c ${MFS_MOUNTPOINT}
+
+ # preload kernel, compress with kgzip and copy to floppy image
+ cc -o ./wmk /usr/src/release/write_mfs_in_kernel.c
+ ./wmk kernel ${MFS_NAME}
+ rm wmk
+ kgzip -o kernel.gz kernel
+ cp -p kernel.gz ${MFS_MOUNTPOINT}/kernel
+
+ echo "==> Populating floppy filesystem..."
+
+ # Configuration files are first copied to a local tree, then
+ # compressed, then transferred back to the floppy.
+ rm -rf floppy.tree || true
+ mkdir floppy.tree
+
+ excl=${BUILDDIR}/../${TYPE}/floppy.tree.exclude
+ if [ -f ${excl} ] ; then
+ excl="--exclude-from ${excl}"
+ echo "Exclude following files from ${excl}:\n==="
+ cat ${excl}
+ echo "==="
+ else
+ excl=""
+ fi
+ (cd ${BUILDDIR}/../floppy.tree ; tar -cf - --exclude CVS ${excl} . ) | \
+ (cd floppy.tree ; tar xvf - )
+
+ srcdir=${BUILDDIR}/../${TYPE}/floppy.tree
+ if [ -d ${srcdir} ] ; then
+ echo "-> update with private files:"
+ (cd ${srcdir} ; tar cf - --exclude CVS . ) | \
+ (cd floppy.tree ; tar xvf - )
+ fi
+ if [ -d ${srcdir}.${SITE} ] ; then
+ echo "-> update with site-specific (${SITE}) files:"
+ (cd ${srcdir}.${SITE} ; tar cf - --exclude CVS . ) | \
+ (cd floppy.tree ; tar xvf - )
+ fi
+ files="motd"
+ echo "-> Copying language dependent files: ${files} -> ${MFS_MOUNTPOINT}/etc ..."
+ for i in ${files} ; do
+ if [ -f ${BUILDDIR}/../${TYPE}/lang/${i}.${LANGUAGE} ] ; then
+ cat ${BUILDDIR}/../${TYPE}/lang/${i}.${LANGUAGE} | \
+ sed -e "s/@VER@/${VER}/g" > floppy.tree/etc/${i}
+ fi
+ done
+
+ # XXX check this! i am unsure how it is necessary.
+ if [ "${TYPE}" = "dial" ] ; then
+ cp -p floppy.tree/etc/master.passwd .
+ pwd_mkdb -d . master.passwd
+ mv spwd.db floppy.tree/etc/
+ rm pwd.db master.passwd
+ fi
+ # gzip returns an error if it fails to compress some file
+ gzip -9 floppy.tree/etc/* || true
+
+ # now transfer the floppy tree
+ cp -Rp floppy.tree/* ${MFS_MOUNTPOINT}
+ rm -rf floppy.tree || true # cleanup
+ (echo "-> Fixing permissions"; cd ${MFS_MOUNTPOINT} ; chown -R root *)
+
+ df -ik ${MFS_MOUNTPOINT} | colrm 70 > .build.reply
+ umount ${MFS_MOUNTPOINT}
+ rm -rf ${MFS_MOUNTPOINT}
+ vnconfig -u /dev/rvn${VNUM}
+ rm kernel.gz ${MFS_NAME}
+}
+
+do_kernel
+create_mfs
+populate_mfs
+do_floppy
diff --git a/release/picobsd/build/write_mfs_in_kernel.c b/release/picobsd/build/write_mfs_in_kernel.c
new file mode 100644
index 000000000000..379112459ee8
--- /dev/null
+++ b/release/picobsd/build/write_mfs_in_kernel.c
@@ -0,0 +1,96 @@
+/*
+ * ----------------------------------------------------------------------------
+ * "THE BEER-WARE LICENSE" (Revision 42):
+ * <phk@login.dknet.dk> wrote this file. As long as you retain this notice you
+ * can do whatever you want with this stuff. If we meet some day, and you think
+ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+ * ----------------------------------------------------------------------------
+ *
+ * $FreeBSD$
+ *
+ * This program patches a filesystem into a kernel made with MD_ROOT
+ * option.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <ufs/ffs/fs.h>
+
+static int force = 0; /* don't check for zeros, may corrupt kernel */
+
+int
+main(int argc, char **argv)
+{
+ unsigned char *buf_kernel, *buf_fs, *p,*q, *prog;
+ int fd_kernel, fd_fs, ch, errs=0;
+ struct stat st_kernel, st_fs;
+ u_long l;
+
+ prog= *argv;
+ while ((ch = getopt(argc, argv, "f")) != EOF)
+ switch(ch) {
+ case 'f':
+ force = 1 - force;
+ break;
+ default:
+ errs++;
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (errs || argc != 2) {
+ fprintf(stderr,"Usage:\n\t%s [-f] kernel fs\n", prog);
+ exit(2);
+ }
+ --argv; /* original prog did not use getopt(3) */
+ fd_kernel = open(argv[1],O_RDWR);
+ if (fd_kernel < 0) { perror(argv[1]); exit(2); }
+ fstat(fd_kernel,&st_kernel);
+ fd_fs = open(argv[2],O_RDONLY);
+ if (fd_fs < 0) { perror(argv[2]); exit(2); }
+ fstat(fd_fs,&st_fs);
+ buf_kernel = malloc(st_kernel.st_size);
+ if (!buf_kernel) { perror("malloc"); exit(2); }
+ buf_fs = malloc(st_fs.st_size);
+ if (!buf_fs) { perror("malloc"); exit(2); }
+ if (st_kernel.st_size != read(fd_kernel,buf_kernel,st_kernel.st_size))
+ { perror(argv[1]); exit(2); }
+ if (st_fs.st_size != read(fd_fs,buf_fs,st_fs.st_size))
+ { perror(argv[2]); exit(2); }
+ for(l=0,p=buf_kernel; l < st_kernel.st_size - st_fs.st_size ; l++,p++ )
+ if(*p == 'M' && !strcmp(p,"MFS Filesystem goes here"))
+ goto found;
+ fprintf(stderr,"MFS filesystem signature not found in %s\n",argv[1]);
+ exit(1);
+found:
+ if (!force)
+ for(l=0,q= p + SBOFF; l < st_fs.st_size - SBOFF ; l++,q++ )
+ if (*q)
+ goto fail;
+ memcpy(p+SBOFF,buf_fs+SBOFF,st_fs.st_size-SBOFF);
+ lseek(fd_kernel,0L,SEEK_SET);
+ if (st_kernel.st_size != write(fd_kernel,buf_kernel,st_kernel.st_size))
+ { perror(argv[1]); exit(2); }
+ exit(0);
+fail:
+ l += SBOFF;
+ fprintf(stderr,"Obstruction in kernel after %ld bytes (%ld Kbyte)\n",
+ l, l/1024);
+ fprintf(stderr,"Filesystem is %ld bytes (%ld Kbyte)\n",
+ (u_long)st_fs.st_size, (u_long)st_fs.st_size/1024);
+ exit(1);
+}
+
+/*
+ * I added a '-f' option to force writing the image into the kernel, even when
+ * there is already data (i.e. not zero) in the written area. This is useful
+ * to rewrite a changed MD-image. Beware: If the written image is larger than
+ * the space reserved in the kernel (with option MD_ROOT) then
+ * THIS WILL CORRUPT THE KERNEL!
+ *
+ */
diff --git a/release/picobsd/custom/Makefile b/release/picobsd/custom/Makefile
new file mode 100644
index 000000000000..dc264ac50237
--- /dev/null
+++ b/release/picobsd/custom/Makefile
@@ -0,0 +1,263 @@
+# PicoBSD Makefile
+#
+# $Id: Makefile,v 1.1 1999/12/10 17:38:06 grog Exp $
+#
+# Taken from:
+#
+# $FreeBSD$
+#
+
+# Building a PicoBSD kernel involves four basic operations:
+#
+# 1. Build a kernel. This is done by the 'kernel' target.
+# 2. Build a PicoBSD file system. This file system is loaded into an
+# MFS at boot time. This is done by the 'fs' target.
+# 3. Build a single executable file for all the programs, and install it in
+# the mfs image. This is done by the 'crunch' target.
+# 4. Build a floppy image containing the MFS image and some helper code
+# to boot it. This is done by the 'image' target.
+# 5. Copy the image to the floppy. Done by the 'copy' target.
+
+# You can set the SRC variable which points to your source tree. It's
+# /usr/src by default (most people shouldn't change it).
+SRC ?= /usr/src
+EDITOR = vi
+
+# LANGUAGE language to be used (en or pl)
+LANGUAGE = en
+
+# FLOPPY_SIZE floppy size in KB (default to 1440)
+FLOPPY_SIZE = 1440
+
+# BUILDDIR is this directory
+BUILDDIR = ${.CURDIR}
+
+# These programs are built with non-standard parameters. To be sure of
+# getting them right, we need to rebuild every time; otherwise we might
+# trip over the 'make world' objects.
+# To do this right, we need to build the objects in a different directory.
+# FIXME.
+SPECIAL_PROGS = ../../../usr.bin/login ../../../usr.bin/passwd
+
+# Get default parameters for MFS
+.include "mfsinfo"
+
+# MFS information
+MFS_NAME = fs.PICOBSD
+MFS_MOUNTPOINT = mmnt
+MFS_VNODE = /dev/vn0
+# /etc/rc for the mfs image. This reads the real stuff off the floppy
+MFS_RC = floppy.tree/etc/mfs.rc
+
+FLOPPY_NAME = picobsd.bin
+FLOPPY_VNODE = /dev/vn1
+FLOPPY_MOUNTPOINT = fmnt
+
+# Variables for building kernel
+CONF ?= $(SRC)/sys/i386/conf
+CONFFILE = PICOBSD${suffix}
+COMPILE = $(SRC)/sys/compile/$(CONFFILE)
+KERNFILE = $(COMPILE)/kernel
+
+FDEV ?= /dev/fd0
+
+# DEVFS is currently broken. Always set this.
+#
+NO_DEVFS = yes
+
+# Should we keep this?
+VER = 0.445
+
+all: kernel.gz ${MFS_NAME} crunch ${FLOPPY_NAME} copy crunch-2
+
+kernel.gz: ${COMPILE}/kernel
+ @echo "--> Compressing kernel"
+ cp -p ${COMPILE}/kernel kernel
+ strip kernel
+ strip --remove-section=.note --remove-section=.comment kernel
+ gzip -f -9 -v -n kernel
+ @ls -l kernel.gz
+
+# Create the MFS image file
+${MFS_NAME}: ${MFS_VNODE} ${MFS_MOUNTPOINT}
+ @(cd ${.CURDIR} && ${MAKE} vnunconfig-mfs 2>&1 > /dev/null)
+ @echo "--> Building and mounting MFS image vnode"
+ rm -f ${MFS_NAME}
+ dd of=${MFS_NAME} if=/dev/zero count=${MFS_SIZE} bs=1k
+ awk 'BEGIN {printf "%c%c", 85, 170}' | \
+ dd of=${MFS_NAME} obs=1 seek=510 conv=notrunc 2> /dev/null
+ vnconfig -s labels -c ${MFS_VNODE} ${MFS_NAME}
+ #@cd ${.CURDIR} && ${MAKE} vnconfig-mfs
+ dd if=/boot/boot1 of=${MFS_NAME} conv=notrunc
+ disklabel -rw vn0 auto
+ newfs -i ${MFS_INODES} -m 0 -p 0 -o space ${MFS_VNODE}c
+ mount ${MFS_VNODE} ${MFS_MOUNTPOINT}
+ #@cd ${.CURDIR} && ${MAKE} mount-mfs
+ cd ${.CURDIR} && ${MAKE} -f Makefile.mfs DESTDIR=${MFS_MOUNTPOINT} LANGUAGE=${LANGUAGE}
+ cd ${.CURDIR} && ${MAKE} -f Makefile.mfs devnodes DESTDIR=${MFS_MOUNTPOINT} LANGUAGE=${LANGUAGE}
+ MFS_MOUNTPOINT=${MFS_MOUNTPOINT} INIT=${INIT} VER=${VER} BUILDDIR=${BUILDDIR} LANGUAGE=${LANGUAGE}
+
+# Populate the MFS image.
+crunch: ${MFS_MOUNTPOINT}
+ @(cd ${.CURDIR} && ${MAKE} mount-mfs)
+ @echo "--> Populating MFS image"
+ # We need to make login with other options
+ #for i in ${SPECIAL_PROGS}; do (cd $$i; make clean); done
+ @(cd ${.CURDIR}/crunch1 && ${MAKE} SRC=${SRC} INIT=${INIT}; ${MAKE} install MFS_MOUNTPOINT=../${MFS_MOUNTPOINT})
+ # who can tell me how these damned help files get in here?
+ rm -rf ${MFS_MOUNTPOINT}/sbin/help
+ # Other files for the mfs file system
+ ((cd ${.CURDIR}/mfs; tar cf - .) | (cd ${MFS_MOUNTPOINT}; tar xf -))
+ (cd ${MFS_MOUNTPOINT} && chown -R root *)
+ @df -ik ${MFS_MOUNTPOINT}
+ @(cd ${.CURDIR} && ${MAKE} umount-mfs)
+ @fsck -p ${MFS_VNODE}
+ @(cd ${.CURDIR} && ${MAKE} vnunconfig-mfs)
+
+# Create and mount the floppy image
+${FLOPPY_NAME}: ${FLOPPY_VNODE} ${FLOPPY_MOUNTPOINT} ${MFS_NAME}
+ @cd ${.CURDIR} && ${MAKE} vnunconfig-floppy
+ @echo "--> Preparing ${FLOPPY_SIZE}kB floppy filesystem"
+ dd of=${FLOPPY_NAME} if=/dev/zero count=${FLOPPY_SIZE} bs=1k
+ awk 'BEGIN {printf "%c%c", 85, 170}' | \
+ dd of=${FLOPPY_NAME} obs=1 seek=510 conv=notrunc
+ #-vnconfig -s labels -c ${FLOPPY_VNODE} ${FLOPPY_NAME}
+ @cd ${.CURDIR} && ${MAKE} vnconfig-floppy
+ dd if=/boot/boot1 of=${FLOPPY_NAME} conv=notrunc
+ disklabel -Brw -b /boot/boot1 -s /boot/boot2 ${FLOPPY_VNODE}c fd${FLOPPY_SIZE}
+ newfs -i ${FLOPPY_INODES} -m 0 -p 0 -o space ${FLOPPY_VNODE}c
+ #mount ${FLOPPY_VNODE} ${FLOPPY_MOUNTPOINT}
+ @cd ${.CURDIR} && ${MAKE} mount-floppy
+
+copy: ${FLOPPY_MOUNTPOINT}/boot/defaults ../floppy.tree/boot kernel.gz
+ @cd ${.CURDIR} && ${MAKE} mount-floppy
+ @echo "--> Populating floppy filesystem from ../floppy.tree"
+ @echo -- Make a loader
+ #cp /boot/loader floppy.tree/boot
+ #mv floppy.tree/boot/loader.kz floppy.tree/boot/loader
+.if foo
+ rm ../floppy.tree/boot/loader
+ mv ../floppy.tree/boot/loader.kz ../floppy.tree/boot/loader
+.endif
+ @echo -- copy base floppy tree
+ @echo -- Base files
+ @(cd ${.CURDIR}/../floppy.tree ; tar cXhf ${.CURDIR}/floppy.tree.exclude - . ) | \
+ (cd ${FLOPPY_MOUNTPOINT} ; tar xf - )
+ @kgzip -o ${FLOPPY_MOUNTPOINT}/boot/loader /boot/loader
+ @echo -- Now update from our private floppy tree if it exists
+ @echo -- Local files in `pwd`/floppy.tree
+ @if [ -d ${.CURDIR}/floppy.tree ] ; then \
+ (cd ${.CURDIR}/floppy.tree; tar cXhf ../floppy.tree.exclude - .) | (cd ${FLOPPY_MOUNTPOINT} ; tar xf - ); \
+ fi
+ # We get stuff here that we can't use. When the transition
+ # to Makefile-based build is complete, we can delete this.
+ # XXX
+ @rm -rf ${FLOPPY_MOUNTPOINT}/etc
+ @(cd ${.CURDIR}/floppy.etc; tar czXf ../floppy.tree.exclude ${.OBJDIR}/${FLOPPY_MOUNTPOINT}/etc.tar.gz .)
+ @echo -- Generate password file if we don\'t have one on the floppy.
+ @echo -- The variable PASSWD is defined in mfsinfo
+ @if [ ${PASSWD} = NO ] ; then \
+ cp -p ${FLOPPY_MOUNTPOINT}/etc/master.passwd .; \
+ pwd_mkdb -d . master.passwd; \
+ mv spwd.db ${FLOPPY_MOUNTPOINT}/etc/; \
+ rm pwd.db master.passwd; \
+ fi
+ @cp kernel.gz ${FLOPPY_MOUNTPOINT}/kernel.gz
+ @echo -- Insert the MFS image
+ @gzip -9cv ${MFS_NAME} > ${FLOPPY_MOUNTPOINT}/${MFS_NAME}.gz
+.if loaderconf
+ XXX finish this.
+ cp ${SRC}/sys/boot/forth/loader.conf ${FLOPPY_MOUNTPOINT}/boot/defaults
+ echo "userconfig_script_load=\"YES\"" >>${FLOPPY_MOUNTPOINT}/boot/defaults/loader.conf
+ echo "rootfs_load=\"YES\"" >>${FLOPPY_MOUNTPOINT}/boot/defaults/loader.conf
+ echo "rootfs_name=\"${MFS_NAME}\"" >>${FLOPPY_MOUNTPOINT}/boot/defaults/loader.conf
+ echo "rootfs_type=\"mfs_root\"" >>${FLOPPY_MOUNTPOINT}/boot/defaults/loader.conf
+# for i in frames screen ; do \
+# cp ${SRC}/share/examples/bootforth/$${i}.4th ${FLOPPY_MOUNTPOINT}/boot/; \
+# done
+.endif
+ (echo "-> Fixing permissions"; cd ${FLOPPY_MOUNTPOINT}; chown -R root *)
+ @cd ${.CURDIR} && ${MAKE} vnunconfig-floppy
+
+floppy: ${FLOPPY_NAME}
+ @echo copying ${FLOPPY_NAME} to ${FDEV}c. This will take about 50 seconds.
+ @echo "wait for the message 'safe to remove' before removing the floppy..."
+ @dd if=${FLOPPY_NAME} of=${FDEV}c bs=36b >/dev/null
+ @echo Safe to remove disk from ${FDEV}
+
+floppy2:
+ @if [ -d crunch2 ]; then \
+ if [ ! -d crunch2/floppy2 ]; then \
+ (cd crunch2; make); \
+ fi; \
+ echo copying crunch2/floppy to ${FDEV}c. This will take about 50 seconds.; \
+ cd crunch2/floppy2; tar czf - . | dd of=/dev/rfd0 conv=sync; \
+ echo Safe to remove disk from ${FDEV}; \
+ else \
+ echo No second floppy; \
+ fi
+
+# crunch-2: Build second floppy
+crunch-2:
+ #if [ -d crunch2 ]; then cd crunch2; make; fi
+
+# Secondary targets
+
+${COMPILE}/kernel: ${CONFFILE}
+ @echo "--> Building kernel"
+ @grep -q MD_ROOT ${.ALLSRC}; if [ $$? -ne 0 ]; then \
+ echo -- '***** Config file must include MD_ROOT'; \
+ exit 1; \
+ fi
+ cp ${.ALLSRC} ${CONF}
+ (cd ${CONF}; config ${CONFFILE};)
+.if !defined(NO_DEPENDS)
+ (cd ${COMPILE}; ${MAKE} depend NO_MODULES=1;)
+.endif
+ (cd ${COMPILE}; ${MAKE} all NO_MODULES=1)
+
+# Device nodes for the vnode devices
+${FLOPPY_VNODE} ${MFS_VNODE}:
+ (cd /dev; ./MAKEDEV `basename $@`)
+
+# Directories to make
+${MFS_MOUNTPOINT} ${FLOPPY_MOUNTPOINT} ${FLOPPY_MOUNTPOINT}/boot/defaults ../floppy.tree/boot:
+ mkdir -p $@
+
+tidy: vnunconfig
+ rm -f ${MFS_NAME} ${MFS_NAME}.gz ${FLOPPY_NAME} *~ Make.log kernel.gz
+
+clean: tidy
+ if [ -d ${.CURDIR}floppy.tree ]; then \
+ (cd ${.CURDIR}/floppy.tree; rm -f boot/loader;) \
+ fi
+ rm -rf ${MFS_MOUNTPOINT} ${FLOPPY_MOUNTPOINT} crunch1.conf
+ (cd ${.CURDIR}/crunch1; make clean)
+ if [ -d crunch2 ]; then cd crunch2; make clean; fi
+ if [ -d ${COMPILE} ] ; then cd ${COMPILE}; make clean; fi
+
+vnconfig: vnconfig-mfs vnconfig-floppy
+vnconfig-mfs: ${MFS_VNODE} vnunconfig-mfs
+ vnconfig -s labels -c ${MFS_VNODE} ${MFS_NAME}
+vnconfig-floppy: ${FLOPPY_VNODE} vnunconfig-floppy
+ vnconfig -s labels -c ${FLOPPY_VNODE} ${FLOPPY_NAME}
+vnunconfig: vnunconfig-mfs vnunconfig-floppy
+vnunconfig-mfs: ${MFS_VNODE} umount-mfs
+ @-vnconfig -u ${MFS_VNODE}
+vnunconfig-floppy: ${FLOPPY_VNODE} umount-floppy
+ @-vnconfig -u ${FLOPPY_VNODE}
+mount: mount-mfs mount-floppy
+mount-mfs: ${MFS_MOUNTPOINT} vnunconfig-mfs vnconfig-mfs
+ mount ${MFS_VNODE} ${MFS_MOUNTPOINT}
+mount-floppy: ${FLOPPY_MOUNTPOINT} vnunconfig-floppy vnconfig-floppy
+ mount ${FLOPPY_VNODE} ${FLOPPY_MOUNTPOINT}
+umount: umount-mfs umount-floppy
+umount-mfs: ${MFS_VNODE} ${MFS_MOUNTPOINT}
+ @-umount ${MFS_VNODE} #${MFS_MOUNTPOINT}
+umount-floppy: ${FLOPPY_VNODE} ${FLOPPY_MOUNTPOINT}
+ @-umount ${FLOPPY_VNODE} #${FLOPPY_MOUNTPOINT}
+
+SUBDIR= crunch1
+
+.include <bsd.obj.mk>
+.include <bsd.subdir.mk>
diff --git a/release/picobsd/custom/Makefile.conf b/release/picobsd/custom/Makefile.conf
new file mode 100644
index 000000000000..29908c53fc5c
--- /dev/null
+++ b/release/picobsd/custom/Makefile.conf
@@ -0,0 +1,21 @@
+# $FreeBSD$
+#
+# Makefile for building PICOBSD kernels
+
+SRC?=/usr/src
+CONF?=$(SRC)/sys/i386/conf
+
+CONFFILE=PICOBSD${suffix}
+COMPILE=$(SRC)/sys/compile/$(CONFFILE)
+KERNFILE=$(COMPILE)/kernel
+
+all: $(KERNFILE)
+
+$(KERNFILE): PICOBSD
+ cat PICOBSD | grep -v "MD_ROOT" > ${CONF}/${CONFFILE}
+ echo "options MD_ROOT" >> ${CONF}/${CONFFILE}
+ (cd ${CONF}; \
+ config ${CONFFILE}; \
+ cd ${COMPILE}; \
+ make depend all)
+
diff --git a/release/picobsd/custom/Makefile.mfs b/release/picobsd/custom/Makefile.mfs
new file mode 100644
index 000000000000..7a373a6dd707
--- /dev/null
+++ b/release/picobsd/custom/Makefile.mfs
@@ -0,0 +1,44 @@
+#
+# $FreeBSD$
+#
+
+DESTDIR?=${MFS_MOUNTPOINT}
+
+SBIN_LINKS= bin stand
+USR_LINKS= bin sbin libexec
+PL_LOCALE_LINKS= pl polish
+MY_DEVS= std tun2 cuaa0 cuaa1 vty10 fd0 pty0 ttyd0 bpf0 sa0 ad0s1 ad0s1a
+
+all: tree links
+
+tree:
+ @echo "--- making tree"
+ @mtree -deU -f ${.CURDIR}/mfs.mtree -p ${DESTDIR} 2>&1 > /dev/null
+
+links: tree
+ @echo "--- making links"
+ @(cd ${DESTDIR}; \
+ for i in ${SBIN_LINKS}; \
+ do \
+ ln -s sbin $${i}; \
+ done; \
+ cd var/run; \
+ ln -s /dev/null log; \
+ cd ../../usr; \
+ for i in ${USR_LINKS}; \
+ do \
+ ln -s ../sbin $${i}; \
+ done; \
+ cd share/misc;\
+ ln -s /etc/termcap termcap; )
+
+
+# We don't do it under 'all' because it's needed only on non-DEVFS systems
+devnodes: tree
+ @echo "--- making device nodes"
+ @(cd ${DESTDIR}/dev; \
+ ln -s /dev/MAKEDEV; \
+ ./MAKEDEV ${MY_DEVS}; \
+ rm MAKEDEV)
+
+clean:
diff --git a/release/picobsd/custom/PICOBSD-C b/release/picobsd/custom/PICOBSD-C
new file mode 100644
index 000000000000..215747885556
--- /dev/null
+++ b/release/picobsd/custom/PICOBSD-C
@@ -0,0 +1,219 @@
+#
+# PICOBSD-C -- Custom kernel for PicoBSD builds
+#
+# For more information on this file, please read the handbook section on
+# Kernel Configuration Files:
+#
+# http://www.FreeBSD.org/handbook/kernelconfig-config.html
+#
+# $FreeBSD$
+
+machine i386
+cpu I386_CPU
+cpu I486_CPU
+cpu I586_CPU
+cpu I686_CPU
+ident GENERIC
+maxusers 32
+
+hints "GENERIC.hints" #Default places to look for devices.
+
+#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
+
+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 RANDOMDEV #entropy device
+
+# 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=8 # number of busses
+#options NAPIC=1 # number of IO APICs
+#options NINTR=24 # number of INTs
+
+device isa
+device eisa
+device pci
+options COMPAT_OLDISA # compatability shims for lnc, fe, le
+
+# Floppy drives
+device fdc
+
+# ATA and ATAPI devices
+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 Controllers
+#device ahb # EISA AHA1742 family
+device ahc # AHA2940 and onboard AIC7xxx devices
+#device amd # AMD 53C974 (Teckram DC-390(T))
+#device dpt # DPT Smartcache - See LINT for options!
+#device isp # Qlogic family
+#device ncr # NCR/Symbios Logic
+device sym # NCR/Symbios Logic (newer chipsets)
+
+#device adv
+#device adw
+#device bt
+#device aha 1
+#device aic
+
+# 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
+#device ida # Compaq SmartRAID
+#device amr # AMI MegaRAID
+#device mlx # Mylex DAC960 family
+
+# atkbdc0 controls both the keyboard and the PS/2 mouse
+device atkbdc 1
+device atkbd
+device psm
+
+device vga
+
+# splash screen/screen saver
+#device splash
+
+# syscons is the default console driver, resembling an SCO console
+device sc 1
+
+# 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
+# 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 npx
+
+# Power management support (see LINT for more options)
+device apm
+
+# PCCARD (PCMCIA) support
+#device card
+#device pcic
+
+# Serial (COM) ports
+device sio
+
+# 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
+
+
+# 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.
+device miibus # MII bus support
+device dc # DEC/Intel 21143 and various workalikes
+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 ed
+device ex
+device ep
+device cs
+device sn
+# 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
+# BayStack 660 and others
+device awi
+# Xircom pccard ethernet
+device xe
+# The probe order of these is presently determined by i386/isa/isa_compat.c.
+device ie
+device fe
+device le
+device lnc
+
+# Pseudo devices - the number indicates how many units to allocated.
+device loop # Network loopback
+device ether # Ethernet support
+#device sl 1 # Kernel SLIP
+device ppp 1 # Kernel PPP
+device tun # Packet tunnel.
+device pty # Pseudo-ttys (telnet etc)
+device md # Memory "disks"
+#device gif 4 # IPv6 and IPv4 tunneling
+#device faith 1 # IPv6-to-IPv4 relaying (translation)
+
+
+# The `bpf' device enables the Berkeley Packet Filter.
+# Be aware of the administrative consequences of enabling this!
+device bpf #Berkeley packet filter
+
+# USB support
+#device uhci # UHCI PCI->USB interface
+#device ohci # OHCI PCI->USB interface
+#device usb # USB Bus (required)
+#device ugen # Generic
+#device udbp # USB Double Bulk Pipe devices
+#device uhid # "Human Interface Devices"
+#device ukbd # Keyboard
+#device ulpt # Printer
+#device umass # Disks/Mass storage - Requires scbus and da0
+#device ums # Mouse
+device urio # Diamond Rio 500 MP3 player
+# USB Ethernet, requires mii
+#device aue # ADMtek USB ethernet
+#device cue # CATC USB ethernet
+#device kue # Kawasaki LSI USB ethernet
diff --git a/release/picobsd/custom/crunch1/Makefile b/release/picobsd/custom/crunch1/Makefile
new file mode 100644
index 000000000000..176e6ae755ca
--- /dev/null
+++ b/release/picobsd/custom/crunch1/Makefile
@@ -0,0 +1,52 @@
+#
+# $FreeBSD$
+#
+SRC?=/usr/src
+
+COMMOBJ?= ${.OBJDIR}/../../common-obj
+
+all: crunch
+
+crunch1.conf: crunch.conf
+ @cat ${.ALLSRC} | sed -e "s@/usr/src@${SRC}@" > ${.TARGET}
+
+crunch.mk: crunch1.conf crunch.inc
+ @crunchgen -h ${.CURDIR}/crunch.inc -m crunch.mk crunch1.conf
+
+crunch1.mk: crunch.mk
+ @sed -e "s@make depend@make obj \&\& make depend@" \
+ -e "s@/usr/obj/@${COMMOBJ}@" crunch.mk > ${.TARGET}
+
+crunch: crunch1.mk
+ @if [ ! -d build ]; then mkdir build; fi
+ @cp crunch1.c build/
+ @(cd build && env MAKEOBJDIRPREFIX=${COMMOBJ} \
+ ${MAKE} -f ../crunch1.mk -DNOPAM all \
+ "CFLAGS=${CFLAGS} -DRELEASE_CRUNCH -DCRUNCHED_BINARY -DNOSECURE -DNOCRYPT") #2>&1 >/dev/null
+
+clean:
+ rm -rf build
+ rm -f *.o *.stub *.lo *_stub.c *.mk \
+ crunch.cache \
+ crunch.mk \
+ crunch.c \
+ crunch1* \
+ crunch \
+ .tmp_* \
+ *~ \
+ *.gz
+
+install:
+ rm -f ${MFS_MOUNTPOINT}/sbin/*
+ cp build/crunch1 ${MFS_MOUNTPOINT}/sbin/crunch
+ chmod 555 ${MFS_MOUNTPOINT}/sbin/crunch
+ for i in `crunchgen -l crunch1.conf` ; \
+ do \
+ ln ${MFS_MOUNTPOINT}/sbin/crunch ${MFS_MOUNTPOINT}/sbin/$${i}; \
+ done
+ rm ${MFS_MOUNTPOINT}/sbin/crunch
+ # Install the MIB files
+ #cp mibs/*.txt ${MFS_MOUNTPOINT}/usr/local/share/snmp/mibs/
+
+
+.include <bsd.prog.mk>
diff --git a/release/picobsd/custom/crunch1/crunch.conf b/release/picobsd/custom/crunch1/crunch.conf
new file mode 100644
index 000000000000..cf7896208c10
--- /dev/null
+++ b/release/picobsd/custom/crunch1/crunch.conf
@@ -0,0 +1,37 @@
+#
+# $FreeBSD$
+#
+# NOTE: the string "/usr/src" will be automatically replaced with the
+# correct value set in 'build' script - you should change it there
+
+# other sources
+srcdirs /usr/src/bin
+srcdirs /usr/src/libexec
+srcdirs /usr/src/sbin/i386
+srcdirs /usr/src/sbin
+srcdirs /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin
+srcdirs /usr/src/usr.sbin
+# sources for ns & vm
+srcdirs /usr/src/release/picobsd/tinyware
+
+progs sh test ln login getty stty
+progs w msg kget reboot
+progs init
+progs mv cp rm mknod chmod chown mkdir ls rmdir
+progs sysctl pwd_mkdb dev_mkdb
+progs mount umount
+progs dd swapon tar gzip
+
+ln test [
+ln sh -sh
+# ln mount_msdos msdos
+ln msg dmesg
+ln chown chgrp
+ln gzip gunzip
+ln gzip zcat
+
+libs -lmytinfo -lipx -lz -lpcap -lalias -lwrap
+libs -ledit -lutil -lmd -lcrypt -lmp -lgmp -lm -lkvm
+libs -lgnuregex -ltelnet -lcurses
+libs -lradius # used by ppp
diff --git a/release/picobsd/custom/crunch2/Makefile b/release/picobsd/custom/crunch2/Makefile
new file mode 100644
index 000000000000..ce2fada395dc
--- /dev/null
+++ b/release/picobsd/custom/crunch2/Makefile
@@ -0,0 +1,32 @@
+#
+# $FreeBSD$
+#
+SRC?=/usr/src
+
+all: crunch install
+
+crunch:
+ @cat crunch.conf|sed -e "s@/usr/src@${SRC}@" >crunch2.conf
+ @crunchgen ./crunch2.conf
+ ${MAKE} -f crunch2.mk RELEASE_CRUNCH= -DNOPAM all \
+ "CFLAGS=${CFLAGS} -DRELEASE_CRUNCH -DCRUNCHED_BINARY -DNOSECURE -DNOCRYPT"
+
+clean:
+ rm -f *.o *.stub *.lo *_stub.c *.mkcrunch.cache Make.log *~
+ rm -f crunch.mk crunch.c crunch2* crunch .tmp_* *.gz
+ rm -rf floppy2
+
+install: floppy2
+ rm -rf floppy2/sbin/*
+ cp crunch2 floppy2/sbin/crunch
+ chmod 555 floppy2/sbin/crunch
+ for i in `crunchgen -l crunch2.conf` ; \
+ do \
+ ln floppy2/sbin/crunch floppy2/sbin/$${i}; \
+ done
+ rm floppy2/sbin/crunch
+
+floppy2:
+ mkdir -p $@/sbin
+
+.include <bsd.prog.mk>
diff --git a/release/picobsd/custom/crunch2/crunch.conf b/release/picobsd/custom/crunch2/crunch.conf
new file mode 100644
index 000000000000..c654af34064d
--- /dev/null
+++ b/release/picobsd/custom/crunch2/crunch.conf
@@ -0,0 +1,45 @@
+#
+# $FreeBSD$
+#
+# NOTE: the string "/usr/src" will be automatically replaced with the
+# correct value set in 'build' script - you should change it there
+
+# other sources
+srcdirs /usr/src/bin
+srcdirs /usr/src/sbin/i386
+srcdirs /usr/src/sbin
+srcdirs /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin
+srcdirs /usr/src/usr.sbin
+srcdirs /usr/src/libexec
+# sources for ns & vm
+srcdirs ../../tinyware
+
+progs ftp rlogin rsh disklabel fsck vi inetd telnetd ifconfig
+progs badsect chroot clri dump ed expr fdisk find ftp grep mt
+progs restore sed sleep sync hostname route dhclient telnet
+progs mount_nfs ping traceroute routed natd
+progs pwd more date mount_msdos mount_cd9660 newfs
+progs kill mount_std tcpdump df sps ns vm cat syslogd
+progs ppp ipfw pccardd
+
+special grep srcdir /usr/src/gnu/usr.bin/grep
+special grep objdir /usr/obj/gnu/usr.bin/grep
+special grep objdir /usr/obj/T/src/FREEBIE/src/gnu/usr.bin/grep
+
+special tcpdump srcdir /usr/src/usr.sbin/tcpdump/tcpdump
+special tcpdump objdir /usr/obj/T/src/FREEBIE/src/usr.sbin/tcpdump/tcpdump
+
+special pccardd srcdir /usr/src/usr.sbin/pccard/pccardd
+
+ln vi ex
+ln vi view
+ln dump rdump
+ln restore rrestore
+ln mount_nfs nfs
+ln ns netstat
+
+libs -lmytinfo -lipx -lz -lpcap -lalias -lwrap -lcurses
+libs -ledit -lutil -lmd -lcrypt -lmp -lgmp -lm -lkvm
+libs -lgnuregex -ltelnet
+libs -lnetgraph # used by ppp
diff --git a/release/picobsd/custom/floppy.etc/fstab b/release/picobsd/custom/floppy.etc/fstab
new file mode 100644
index 000000000000..3b1e9074ea93
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/fstab
@@ -0,0 +1,9 @@
+#proc /proc procfs rw 0 0
+#/dev/fd0c /start_floppy ufs rw 1 1
+#/dev/wd0s1 /dos msdos rw 0 0
+/dev/wcd0c /cdrom cd9660 ro,noauto 0 0
+/dev/wd0s1a /mnt ufs ro,noauto 0 0
+/dev/wd0s1b none swap sw,noauto 0 0
+/dev/wd0s1e /mnt/usr ufs ro,noauto 0 0
+/dev/wd0s1f /mnt/var ufs ro,noauto 0 0
+/dev/wd0s1g /mnt/cache ufs ro,noauto 0 0
diff --git a/release/picobsd/custom/floppy.etc/host.conf b/release/picobsd/custom/floppy.etc/host.conf
new file mode 100644
index 000000000000..753112455a69
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/host.conf
@@ -0,0 +1,3 @@
+# $FreeBSD$
+hosts
+bind
diff --git a/release/picobsd/custom/floppy.etc/inetd.conf b/release/picobsd/custom/floppy.etc/inetd.conf
new file mode 100644
index 000000000000..c7c50de341e4
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/inetd.conf
@@ -0,0 +1,21 @@
+#
+# Internet server configuration database
+#
+# @(#)inetd.conf 5.4 (Berkeley) 6/30/90
+#
+telnet stream tcp nowait root /usr/libexec/telnetd telnetd
+#
+# "Small servers" -- used to be standard on, but we're more conservative
+# about things due to Internet security concerns. Only turn on what you
+# need.
+#
+#daytime stream tcp nowait root internal
+#daytime dgram udp wait root internal
+#time stream tcp nowait root internal
+#time dgram udp wait root internal
+#echo stream tcp nowait root internal
+#echo dgram udp wait root internal
+#discard stream tcp nowait root internal
+#discard dgram udp wait root internal
+#chargen stream tcp nowait root internal
+#chargen dgram udp wait root internal
diff --git a/release/picobsd/custom/floppy.etc/master.passwd b/release/picobsd/custom/floppy.etc/master.passwd
new file mode 100644
index 000000000000..21760f2c3110
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/master.passwd
@@ -0,0 +1,8 @@
+root::0:0::0:0:Charlie &:/root:/bin/sh
+toor:*:0:0::0:0:Bourne-again Superuser:/root:
+daemon:*:1:1::0:0:Owner of many system processes:/root:/nonexistent
+operator:*:2:20::0:0:System &:/usr/guest/operator:/bin/csh
+bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/nonexistent
+nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/nonexistent
+user:$1$T9q8Coad$WatJttamwr2UAdbfKbWxj.:1002:1002:polish:0:0:user:/home/user:/bin/sh
+netman::9999:209::0:0:Network access:/netman:/bin/sh
diff --git a/release/picobsd/custom/floppy.etc/mfs.rc b/release/picobsd/custom/floppy.etc/mfs.rc
new file mode 100644
index 000000000000..d746cb73d7a9
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/mfs.rc
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+### WARNING !!!!!! #####
+# We remove this file during execution (see EOF).
+# Awful things happen if its size is > 1024B
+
+stty status '^T'
+
+trap : 2
+trap : 3
+
+HOME=/; export HOME
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
+export PATH
+
+trap "echo 'Reboot interrupted'; exit 1" 3
+
+### Special setup for one floppy PICOBSD ###
+echo ""
+echo "-------------------------------------------"
+echo " Please wait. The system is coming up..."
+echo "-------------------------------------------"
+echo ""
+echo "Reading /etc from startup floppy..."
+mount -o rdonly /dev/fd0a /start_floppy
+cd /start_floppy/etc
+cp -Rp . /etc/
+cd /etc
+pwd_mkdb -p ./master.passwd
+umount /start_floppy
+echo "Ok. (Now you can remove floppy if you like)"
+echo ""
+. rc
+exit 0
diff --git a/release/picobsd/custom/floppy.etc/ppp/ppp.conf b/release/picobsd/custom/floppy.etc/ppp/ppp.conf
new file mode 100644
index 000000000000..ed5da5dd72ce
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/ppp/ppp.conf
@@ -0,0 +1,8 @@
+# PPP Sample Configuration File
+# Written by Toshiharu OHNO
+default:
+ set device /dev/cuaa1
+ set speed 38400
+ disable lqr
+ deny lqr
+ set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0 OK-AT-OK \\dATDT\\T TIMEOUT 40 CONNECT"
diff --git a/release/picobsd/custom/floppy.etc/ppp/ppp.deny b/release/picobsd/custom/floppy.etc/ppp/ppp.deny
new file mode 100644
index 000000000000..51e1e9bd03e3
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/ppp/ppp.deny
@@ -0,0 +1,15 @@
+# list of users disallowed any pppd access via 'system
+# password login'.
+# read by pppd(8).
+root
+toor
+daemon
+operator
+bin
+games
+news
+man
+ftp
+uucp
+xten
+ingres
diff --git a/release/picobsd/custom/floppy.etc/ppp/ppp.linkup b/release/picobsd/custom/floppy.etc/ppp/ppp.linkup
new file mode 100644
index 000000000000..05107c6df855
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/ppp/ppp.linkup
@@ -0,0 +1,10 @@
+# Example of ppp.linkup file
+#
+iij-demand:
+ delete ALL
+ add 0 0 HISADDR
+#
+# Otherwise, simply add peer as default gateway.
+#
+MYADDR:
+ add 0 0 HISADDR
diff --git a/release/picobsd/custom/floppy.etc/ppp/ppp.secret.sample b/release/picobsd/custom/floppy.etc/ppp/ppp.secret.sample
new file mode 100644
index 000000000000..bfaab7681aa5
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/ppp/ppp.secret.sample
@@ -0,0 +1,23 @@
+##################################################
+#
+# Example of ppp.secret file
+#
+# This file is used to authenticate incoming connections.
+# You must ``enable'' either PAP or CHAP in your ppp.conf file.
+# The peer may then use any of the Authname/Authkey pairs listed.
+# If an IP address is given, it will be assigned to the peer.
+#
+# If an entry exists for your local machine (as given by the
+# ``hostname -s'' command), the password specified will be
+# required for all server socket connections. Refer to the ppp(8)
+# and pppctl(8) man pages for further details.
+#
+# $FreeBSD$
+#
+##################################################
+
+# Authname Authkey Peer's IP address
+
+oscar OurSecretKey 192.244.184.34/24
+BigBird X4dWg9327 192.244.184.33/32
+tama localPasswdForControl
diff --git a/release/picobsd/custom/floppy.etc/profile b/release/picobsd/custom/floppy.etc/profile
new file mode 100644
index 000000000000..8de7c89675f7
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/profile
@@ -0,0 +1,5 @@
+# System-wide .profile file for sh(1).
+BLOCKSIZE=K; export BLOCKSIZE
+set -o emacs
+PATH=/stand:/mnt/bin:/mnt/sbin:/mnt/usr/bin:/mnt/usr/sbin export PATH
+stty erase 
diff --git a/release/picobsd/custom/floppy.etc/rc b/release/picobsd/custom/floppy.etc/rc
new file mode 100644
index 000000000000..45772ef9ad62
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/rc
@@ -0,0 +1,56 @@
+#!/bin/sh
+# $FreeBSD$
+### Special setup for PicoBSD ###
+mount -a -t nonfs
+reply=y
+while [ "$reply" != "n" ]; do
+ echo -n "Do you have an additional floppy? [yn] "
+ read reply
+ if [ "$reply" = "y" ]; then
+ cd /
+ tar xzvf /dev/fd0
+ fi
+done
+if [ -f /etc/rc.conf ]; then
+ . /etc/rc.conf
+fi
+rm -f /var/run/*
+if [ "x$swapfile" != "xNO" -a -w "$swapfile" -a -b /dev/vn0b ]; then
+ echo "Adding $swapfile as additional swap."
+ vnconfig /dev/vn0b $swapfile && swapon /dev/vn0b
+fi
+# configure serial devices
+if [ -f /etc/rc.serial ]; then
+ . /etc/rc.serial
+fi
+# start up the initial network configuration.
+if [ -f /etc/rc.network ]; then
+ . /etc/rc.network
+ network_pass1
+fi
+mount -a -t nfs
+chmod 666 /dev/tty[pqrsPQRS]*
+# clean up left-over files
+(cd /var/run && { cp /dev/null utmp; chmod 644 utmp; })
+if [ -n "$network_pass1_done" ]; then
+ network_pass2
+fi
+if [ -n "$network_pass2_done" ]; then
+ network_pass3
+fi
+if [ "X${inetd_enable}" = X"YES" ]; then
+ echo "Starting inetd."; inetd ${inetd_flags}
+fi
+
+dev_mkdb
+
+echo ''
+if [ "x$swapfile" = "xNO" ]; then
+ echo "WARNING: no swap partition!"
+ echo "Don't run too many programs at the same time..."
+fi
+# Only one /tmp
+ln -s /tmp /var
+
+# This needs to be in /sbin, but /sbin is magic.
+mv /etc/dhclient-script /sbin
diff --git a/release/picobsd/custom/floppy.etc/rc.conf b/release/picobsd/custom/floppy.etc/rc.conf
new file mode 100644
index 000000000000..94c31ba6bc50
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/rc.conf
@@ -0,0 +1,14 @@
+#!/bin/sh
+# $FreeBSD$
+swapfile="NO" # Set to name of swapfile if aux swapfile desired.
+hostname="Pico.freebsd.org" # Set this!
+firewall="NO" # firewall type (see /etc/rc.firewall) or NO
+tcp_extensions="NO" # Allow RFC1323 & RFC1644 extensions (or NO).
+network_interfaces="lo0" # List of network interfaces (lo0 is loopback).
+ifconfig_lo0="inet 127.0.0.1" # default loopback device configuration.
+#ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" # Sample alias entry.
+inetd_enable="YES" # Run the network daemon dispatcher (or NO)
+snmpd_enable="YES" # Run the SNMP daemon (or NO)
+snmpd_flags="-C -c /etc/snmpd.conf" # Optional flags to snmpd
+defaultrouter="NO" # Set to default gateway (or NO).
+gateway_enable="NO" # Set to YES if this host will be a gateway.
diff --git a/release/picobsd/custom/floppy.etc/rc.network b/release/picobsd/custom/floppy.etc/rc.network
new file mode 100644
index 000000000000..235db0aa14fd
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/rc.network
@@ -0,0 +1,79 @@
+#!/bin/sh -
+# $FreeBSD$
+network_pass1() {
+ echo -n 'Doing initial network setup:'
+ # Set the host name if it is not already set
+ if [ -z "`hostname -s`" ] ; then
+ hostname $hostname
+ echo ' hostname'
+ fi
+ # Set up all the network interfaces, calling startup scripts if needed
+ for ifn in ${network_interfaces}; do
+ if [ -e /etc/start_if.${ifn} ]; then
+ . /etc/start_if.${ifn}
+ fi
+ # Do the primary ifconfig if specified
+ eval ifconfig_args=\$ifconfig_${ifn}
+ if [ -n "${ifconfig_args}" ] ; then
+ ifconfig ${ifn} ${ifconfig_args}
+ fi
+ # Check to see if aliases need to be added
+ alias=0
+ while :
+ do
+ eval ifconfig_args=\$ifconfig_${ifn}_alias${alias}
+ if [ -n "${ifconfig_args}" ]; then
+ ifconfig ${ifn} ${ifconfig_args} alias
+ alias=`expr ${alias} + 1`
+ else
+ break;
+ fi
+ done
+ ifconfig ${ifn}
+ done
+ # Load the filters if required
+ if [ -n "$firewall_enable" -a -f /etc/rc.firewall -a \
+ "x$firewall_enable" = "xYES" ] ; then
+ . /etc/rc.firewall
+ echo "Firewall rules loaded."
+ else
+ echo "Warning: kernel has firewall functionality, but firewall rules weren't loaded."
+ echo " All ip services are ENABLED by default."
+ fi
+ # Configure routing
+ if [ "x$defaultrouter" != "xNO" ] ; then
+ static_routes="default ${static_routes}"
+ route_default="default ${defaultrouter}"
+ fi
+ # Set up any static routes. This should be done before router discovery.
+ if [ "x${static_routes}" != "x" ]; then
+ for i in ${static_routes}; do
+ eval route_args=\$route_${i}
+ route add ${route_args}
+ done
+ fi
+ echo -n 'Additional routing options:'
+ if [ -n "$tcp_extensions" -a "x$tcp_extensions" != "xYES" ] ; then
+ echo -n ' tcp_extensions=NO'
+ sysctl -w net.inet.tcp.rfc1323=0 >/dev/null 2>&1
+ sysctl -w net.inet.tcp.rfc1644=0 >/dev/null 2>&1
+ fi
+ if [ "X$gateway_enable" = X"YES" ]; then
+ echo -n ' IP_gateway=YES'
+ sysctl -w net.inet.ip.forwarding=1 >/dev/null 2>&1
+ fi
+ if [ "X$arpproxy_all" = X"YES" ]; then
+ echo -n ' turning on ARP_PROXY_ALL: '
+ sysctl -w net.link.ether.inet.proxyall=1 2>&1
+ fi
+ echo '.'
+ network_pass1_done=YES # Let future generations know we made it.
+}
+
+network_pass2() {
+ network_pass2_done=YES
+}
+
+network_pass3() {
+ network_pass3_done=YES
+}
diff --git a/release/picobsd/custom/floppy.etc/resolv.conf b/release/picobsd/custom/floppy.etc/resolv.conf
new file mode 100644
index 000000000000..873fb771d091
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/resolv.conf
@@ -0,0 +1,3 @@
+# $FreeBSD$
+domain sitaranetworks.com
+nameserver 199.103.141.105
diff --git a/release/picobsd/custom/floppy.etc/services b/release/picobsd/custom/floppy.etc/services
new file mode 100644
index 000000000000..eec499fafec7
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/services
@@ -0,0 +1,94 @@
+echo 4/ddp
+echo 7/tcp
+echo 7/udp
+discard 9/tcp
+discard 9/udp
+systat 11/tcp
+systat 11/udp
+daytime 13/tcp
+daytime 13/udp
+qotd 17/tcp
+qotd 17/udp
+chargen 19/tcp
+chargen 19/udp
+ftp-data 20/tcp
+ftp-data 20/udp
+ftp 21/tcp
+ftp 21/udp
+ssh 22/tcp
+ssh 22/udp
+telnet 23/tcp
+telnet 23/udp
+smtp 25/tcp
+smtp 25/udp
+time 37/tcp
+time 37/udp
+domain 53/tcp
+domain 53/udp
+tacacs-ds 65/tcp
+tacacs-ds 65/udp
+bootps 67/tcp
+bootps 67/udp
+bootpc 68/tcp
+bootpc 68/udp
+tftp 69/tcp
+tftp 69/udp
+gopher 70/tcp
+gopher 70/udp
+finger 79/tcp
+finger 79/udp
+http 80/tcp
+http 80/udp
+pop2 109/tcp
+pop2 109/udp
+pop3 110/tcp
+pop3 110/udp
+uucp-path 117/tcp
+uucp-path 117/udp
+nntp 119/tcp
+nntp 119/udp
+netbios-ns 137/tcp
+netbios-ns 137/udp
+netbios-dgm 138/tcp
+netbios-dgm 138/udp
+netbios-ssn 139/tcp
+netbios-ssn 139/udp
+imap 143/tcp
+imap 143/udp
+snmp 161/tcp
+snmp 161/udp
+snmptrap 162/tcp
+snmptrap 162/udp
+bgp 179/tcp
+bgp 179/udp
+irc 194/tcp
+irc 194/udp
+ipx 213/tcp
+ipx 213/udp
+imap3 220/tcp
+imap3 220/udp
+ldap 389/tcp
+ldap 389/udp
+netware-ip 396/tcp
+netware-ip 396/udp
+https 443/tcp
+https 443/udp
+exec 512/tcp
+biff 512/udp
+login 513/tcp
+who 513/udp
+cmd 514/tcp
+syslog 514/udp
+printer 515/tcp
+printer 515/udp
+talk 517/tcp
+talk 517/udp
+ntalk 518/tcp
+ntalk 518/udp
+timed 525/tcp
+timed 525/udp
+uucp 540/tcp
+uucp 540/udp
+uucp-rlogin 541/tcp
+uucp-rlogin 541/udp
+natd 8668/divert # Network Address Translation
diff --git a/release/picobsd/custom/floppy.etc/shells b/release/picobsd/custom/floppy.etc/shells
new file mode 100644
index 000000000000..df377f133737
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/shells
@@ -0,0 +1,6 @@
+# List of acceptable shells for chpass(1).
+# Ftpd will not allow users to connect who are not using
+# one of these shells.
+
+/bin/sh
+/bin/csh
diff --git a/release/picobsd/custom/floppy.etc/ttys b/release/picobsd/custom/floppy.etc/ttys
new file mode 100644
index 000000000000..2ed125dfd228
--- /dev/null
+++ b/release/picobsd/custom/floppy.etc/ttys
@@ -0,0 +1,27 @@
+#console none unknown off secure
+vga none cons25 off secure
+#
+ttyv0 "/usr/libexec/getty Pc" cons25 on secure
+# Virtual terminals
+ttyv1 "/usr/libexec/getty Pc" cons25 on secure
+ttyv2 "/usr/libexec/getty Pc" cons25 on secure
+ttyv3 "/usr/libexec/getty Pc" cons25 on secure
+ttyv4 "/usr/libexec/getty Pc" cons25 on secure
+ttyv5 "/usr/libexec/getty Pc" cons25 on secure
+ttyv6 "/usr/libexec/getty Pc" cons25 on secure
+ttyv7 "/usr/libexec/getty Pc" cons25 on secure
+ttyv8 "/usr/libexec/getty Pc" cons25 on secure
+ttyv9 "/usr/libexec/getty Pc" cons25 on secure
+# The 'dialup' keyword identifies dialin lines to login, fingerd etc.
+ttyd0 "/usr/libexec/getty std.9600" xterm on secure
+# Pseudo terminals
+ttyp0 none network secure
+ttyp1 none network secure
+ttyp2 none network secure
+ttyp3 none network
+ttyp4 none network
+ttyp5 none network
+ttyp6 none network
+ttyp7 none network
+ttyp8 none network
+ttyp9 none network
diff --git a/release/picobsd/custom/floppy.tree.exclude b/release/picobsd/custom/floppy.tree.exclude
new file mode 100644
index 000000000000..7ac83b287f2f
--- /dev/null
+++ b/release/picobsd/custom/floppy.tree.exclude
@@ -0,0 +1 @@
+CVS
diff --git a/release/picobsd/custom/floppy.tree/boot/loader.rc b/release/picobsd/custom/floppy.tree/boot/loader.rc
new file mode 100644
index 000000000000..6af022f4665e
--- /dev/null
+++ b/release/picobsd/custom/floppy.tree/boot/loader.rc
@@ -0,0 +1,2 @@
+load kernel
+load -t mfs_root fs.PICOBSD
diff --git a/release/picobsd/custom/floppy.tree/kernel.config b/release/picobsd/custom/floppy.tree/kernel.config
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/release/picobsd/custom/floppy.tree/kernel.config
diff --git a/release/picobsd/custom/lang/README.en b/release/picobsd/custom/lang/README.en
new file mode 100644
index 000000000000..d2482aeed561
--- /dev/null
+++ b/release/picobsd/custom/lang/README.en
@@ -0,0 +1,41 @@
+1998.07.12, Warsaw, Poland
+
+ PicoBSD @VER@ (NET)
+ -----------------
+
+
+What is PicoBSD?
+----------------
+
+It's a one floppy version of FreeBSD (please see http://www.freebsd.org),
+configured mainly for networking applications. It can be used as a router or
+firewall, or kind of a fixit floppy (or all of them).
+
+You can find more information on the home page of this project at:
+
+ http://www.freebsd.org/~picobsd/
+
+What are minimal requirements?
+------------------------------
+
+* 386SX CPU or better (there is an FPU emulator in kernel)
+* 10MB RAM - the more the better. If you have an HDD, you can make a
+ swap partition or swap file (using vnode driver and vnconfig). Then you
+ probably will be able to run with ca. 6MB only. But RAM is cheap...
+* Modem sitting on COM1-COM4 (default is to use COM2), if you want to have
+ a PPP connection.
+* Network card: compatible with NE2000, PCI Intel, 3Com 3c509 or with DEC
+ chipsets (ed, ep, fxp and de drivers). The kernel supports two of each
+ ISA (i.e. +6 total) plus two PPP connections (tun interfaces). So you can
+ easily build something like router with as many as 8 outlets :-)
+
+For detailed description and list of supported hardware see the original
+documentation, or:
+
+ http://www.freebsd.org/~picobsd/picobsd.html
+
+I'll be glad hearing from you about your experiences with PicoBSD. Thanks.
+
+Have fun!
+
+Andrzej Bialecki <abial@freebsd.org>
diff --git a/release/picobsd/custom/lang/README.pl b/release/picobsd/custom/lang/README.pl
new file mode 100644
index 000000000000..d7e3f6755ceb
--- /dev/null
+++ b/release/picobsd/custom/lang/README.pl
@@ -0,0 +1,56 @@
+1998.07.12, Warszawa
+
+ PicoBSD @VER@ (wersja NET)
+ ------------------------
+
+Co to jest PicoBSD?
+-------------------
+
+Jest to jednodyskietkowa wersja FreeBSD skonfigurowana glownie pod katem
+zastosowania jako klient/serwer uslug sieciowych (takich jak routing,
+firewall, NFS). W celu zapoznania sie z pelnym systemem zajrzyj na
+http://www.freebsd.org. Oficjalna strona tego projektu znajduje sie na
+http://www.freebsd.org/~picobsd.
+
+Jakie sa minimalne wymagania?
+-----------------------------
+
+* Procesor 386SX lub lepszy (jadro posiada emulator FPU)
+* 10MB pamieci - jest to absolutnie nieprzekraczalne minimum. Oczywiscie im
+ wiecej, tym lepiej - ograniczenie jest glownie spowodowane brakiem swapu. Po
+ zapoznaniu sie z systemem mozesz sobie skonfigurowac tzw. swap-file na dysku
+ twardym, np. na partycji DOS-owej. Wowczas prawdopodobnie wystarczy 6MB
+ pamieci.
+* Modem, skonfigurowany na COM1-COM4 (standardowo system wykorzystuje COM2),
+ jesli bedzie wykorzystywany dostep przez PPP.
+* Karta sieciowa: kompatybilna z NE2000, niektore typy 3Com, lub wersje PCI z
+ chipsetem DEC21040 (drivery ed, ep, fxp i de). Jadro jest skonfigurowane
+ tak, zeby moc obsluzyc po dwie karty ed, ep, i de (czyli w sumie siedem)
+ oraz dwa polaczenia PPP rownoczesnie. Mozna wiec zbudowac router z 9
+ interfejsami... :-)
+
+Jakie sa roznice w stosunku do poprzedniej wersji?
+--------------------------------------------------
+
+* Poszerzony zestaw sterownikow w jadrze systemu
+* dodana obsluga CD-ROM
+* agent SNMP (pelna wersja ucd-snmp, pozwalajaca na monitorowanie procesow i
+ zdalne uruchamianie skryptow)
+* brak ssh, ftp i edytora ee (oznacza to, ze musisz edytowac pliki
+ konfiguracyjne montujac dyskietke na normalnym systemie)
+* dodany inetd, telnetd, routed, tftpd, bootpd, ps, kill, netstat,
+ ping, traceroute
+* brak vnconfig i vn(4): w przypadku routera powinien on miec tyle pamieci
+ RAM, zeby nie potrzebowac swapu, lub miec normalny swap.
+* dodana obsluga hasel (passwd(1))
+* dodana obsluga NFS (klient)
+* sa dwaj uzytkownicy: root (haslo 'setup') i user (haslo 'PicoBSD'). Ze
+ wzgledu na skomplikowana sprawe z prawami dostepu, user praktycznie moze
+ jedynie zrobic te rzeczy, ktore nie wymagaja praw roota (czyli np. telnet).
+* dodany skrypt 'update', ktory powoduje uaktualnienie zawartosci katalogu
+ /etc na dyskietce w stosunku do tego, co znajduje sie na MFS.
+
+
+Milej zabawy!
+
+Andrzej Bialecki <abial@freebsd.org>
diff --git a/release/picobsd/custom/lang/boot.help.en b/release/picobsd/custom/lang/boot.help.en
new file mode 100644
index 000000000000..7cbce1354839
--- /dev/null
+++ b/release/picobsd/custom/lang/boot.help.en
@@ -0,0 +1,18 @@
+Usage: bios_drive:interface(unit,partition)kernel_name options
+ bios_drive 0, 1, ...
+ interface fd, wd or sd
+ unit 0, 1, ...
+ partition a, c, ...
+ kernel_name name of kernel, or ? for list of files in root directory
+ options -a (ask name) -C (cdrom) -c (userconfig) -D (dual consoles)
+ -d (debug early) -g (gdb) -h (serial console) -P (probe kbd)
+ -r (default root) -s (single user) -v (verbose)
+Examples:
+ 1:sd(0,a)mykernel boot `mykernel' on the first SCSI drive when one IDE
+ drive is present
+ 1:wd(2,a) boot from the second (secondary master) IDE drive
+ 1:sd(0,a)? list the files in the root directory on the specified
+ drive/unit/partition, and set the default bios_drive,
+ interface, unit and partition
+ -cv boot with the defaults, then run UserConfig to modify
+ hardware parameters (c), and print verbose messages (v)
diff --git a/release/picobsd/custom/lang/boot.help.pl b/release/picobsd/custom/lang/boot.help.pl
new file mode 100644
index 000000000000..bb5b422529aa
--- /dev/null
+++ b/release/picobsd/custom/lang/boot.help.pl
@@ -0,0 +1,16 @@
+Opcje: dysk_bios:kontroler(dysk,partycja)nazwa_kernela opcje
+ dysk_bios 0, 1, ...
+ kontroler fd (dyskietka), wd (dysk IDE) lub sd (dysk SCSI)
+ dysk 0, 1, ... (numer dysku w kontrolerze)
+ partycja a, c, e, f ... (wedlug nazewnictwa BSD)
+ nazwa_kernela nazwa pliku kernela, lub ? zeby dostac liste plikow
+ opcje -a (pytaj o rootdev) -C (cdrom) -c (userconf.) -D (podwojna konsola)
+ -d (uruchom debugger) -g (gdb) -h (konsola szeregowa)
+ -P (probkuj klawiature) -r (domyslny rootdev) -s (tryb single user)
+ -v (verbose - szczegolowe komunikaty)
+Np: 1:sd(0,a)mykernel startuj `mykernel' z 1 dysku SCSI gdy jest tez 1 dysk
+ IDE, i jednoczesnie ustaw go jako domyslny dysk_bios,
+ kontroler, dysk i partycje
+ -cv startuj z parametrami domyslnymi, potem uruchom
+ konfiguracje param. sprzetowych (-c), i podawaj
+ szczegolowe komunikaty w trakcie bootowania (-v).
diff --git a/release/picobsd/custom/lang/hosts.en b/release/picobsd/custom/lang/hosts.en
new file mode 100644
index 000000000000..53f13bab8b37
--- /dev/null
+++ b/release/picobsd/custom/lang/hosts.en
@@ -0,0 +1,5 @@
+# $FreeBSD$
+# This file should contain the addresses and aliases
+# for local hosts that share this file.
+127.0.0.1 localhost localhost.mydomain.edu
+127.0.0.1 pico.mydomain.edu
diff --git a/release/picobsd/custom/lang/hosts.pl b/release/picobsd/custom/lang/hosts.pl
new file mode 100644
index 000000000000..89081d798683
--- /dev/null
+++ b/release/picobsd/custom/lang/hosts.pl
@@ -0,0 +1,5 @@
+# $FreeBSD$
+# This file should contain the addresses and aliases
+# for local hosts that share this file.
+127.0.0.1 localhost localhost.mydomain.org.pl
+127.0.0.1 pico.mydomain.org.pl
diff --git a/release/picobsd/custom/lang/motd.en b/release/picobsd/custom/lang/motd.en
new file mode 100644
index 000000000000..97194182eedf
--- /dev/null
+++ b/release/picobsd/custom/lang/motd.en
@@ -0,0 +1,12 @@
+==================================================
+ )\_)\
+PicoBSD @VER@ (NET) (o,o)
+ __ \~/
+Welcome to PicoBSD! -->====\
+ ~~ d d
+You can find a short description of the picoBSD
+system in file /README. You can view it using
+"more /README".
+
+For more info contact the author (abial@freebsd.org).
+
diff --git a/release/picobsd/custom/lang/motd.pl b/release/picobsd/custom/lang/motd.pl
new file mode 100644
index 000000000000..4b1fcf551518
--- /dev/null
+++ b/release/picobsd/custom/lang/motd.pl
@@ -0,0 +1,12 @@
+=======================================================
+ )\_)\
+PicoBSD @VER@ (NET) (o,o)
+ __ \~/
+Witamy w PicoBSD! -->====\
+ ~~ d d
+W glownym katalogu w pliku README znajdziesz picoBSD
+krotki opis systemu. Mozesz go obejrzec przy pomocy
+"more /README".
+
+Wiecej informacji znajdziesz u autora (abial@freebsd.org).
+
diff --git a/release/picobsd/custom/lang/reboot.en b/release/picobsd/custom/lang/reboot.en
new file mode 100755
index 000000000000..4601bb87fdb3
--- /dev/null
+++ b/release/picobsd/custom/lang/reboot.en
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /sbin/echo "Press Ctrl-Alt-Del instead of $0"
diff --git a/release/picobsd/custom/lang/reboot.pl b/release/picobsd/custom/lang/reboot.pl
new file mode 100755
index 000000000000..8181ced947d9
--- /dev/null
+++ b/release/picobsd/custom/lang/reboot.pl
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /sbin/echo "Zamiast $0 nacisnij Ctrl-Alt-Del"
diff --git a/release/picobsd/custom/lang/update.en b/release/picobsd/custom/lang/update.en
new file mode 100755
index 000000000000..f8c91fd4f171
--- /dev/null
+++ b/release/picobsd/custom/lang/update.en
@@ -0,0 +1,23 @@
+#!/bin/sh
+# $FreeBSD$
+pwd=`pwd`
+echo -n "Updating /etc contents on startup floppy... "
+mount /dev/fd0a /start_floppy
+if [ "X$?" != "X0" ]
+then
+ echo ""
+ echo "Cannot mount the floppy read-write!"
+ echo "Check the write-protection..."
+ exit 1
+fi
+cd /etc
+rm *.db
+rm passwd
+cp -Rp . /start_floppy/etc/
+pwd_mkdb master.passwd
+echo " Done."
+echo -n "Updating kernel parameters... "
+kget /start_floppy/boot/kernel.conf
+umount /dev/fd0a
+cd ${pwd}
+echo " Done."
diff --git a/release/picobsd/custom/lang/update.pl b/release/picobsd/custom/lang/update.pl
new file mode 100755
index 000000000000..645f4c05570a
--- /dev/null
+++ b/release/picobsd/custom/lang/update.pl
@@ -0,0 +1,23 @@
+#!/bin/sh
+# $FreeBSD$
+pwd=`pwd`
+echo -n "Uaktualniam katalog /etc na dyskietce... "
+mount /dev/fd0a /start_floppy
+if [ "X$?" != "X0" ]
+then
+ echo ""
+ echo "Blad podczas montowania read/write dyskietki!"
+ echo "Sprawdz, czy nie jest zabezpieczona przed zapisem..."
+ exit 1
+fi
+cd /etc
+rm *.db
+rm passwd
+cp -Rp . /start_floppy/etc/
+pwd_mkdb master.passwd
+echo " Zrobione."
+echo -n "Uaktualniam parametry jadra..."
+kget /start_floppy/boot/kernel.conf
+umount /dev/fd0a
+cd ${pwd}
+echo " Zrobione."
diff --git a/release/picobsd/custom/mfs.mtree b/release/picobsd/custom/mfs.mtree
new file mode 100644
index 000000000000..90bded161415
--- /dev/null
+++ b/release/picobsd/custom/mfs.mtree
@@ -0,0 +1,58 @@
+#
+# $FreeBSD$
+#
+/set type=dir uname=root gname=wheel mode=0755
+.
+ dev
+ ..
+ dos
+ ..
+ etc
+ ..
+ home
+ user
+ ..
+ ..
+ mnt
+ ..
+ mnt1
+ ..
+ mnt2
+ ..
+ proc
+ ..
+ root
+ ..
+ sbin
+ ..
+ start_floppy
+ ..
+ tftpboot
+ ..
+ tmp mode=01777
+ ..
+ usr
+ local
+ share
+ snmp
+ mibs
+ ..
+ ..
+ ..
+ ..
+ share
+ misc
+ ..
+ ..
+ ..
+ var
+ db
+ ..
+ run
+ ..
+ spool
+ lock
+ ..
+ ..
+ ..
+..
diff --git a/release/picobsd/custom/mfs/etc/dhclient-script b/release/picobsd/custom/mfs/etc/dhclient-script
new file mode 100755
index 000000000000..c4f5320528e9
--- /dev/null
+++ b/release/picobsd/custom/mfs/etc/dhclient-script
@@ -0,0 +1,220 @@
+#!/bin/sh
+
+if [ -x /usr/bin/logger ]; then
+ LOGGER="/usr/bin/logger -s -p user.notice -t dhclient"
+else
+ LOGGER=echo
+fi
+
+make_resolv_conf() {
+ echo search $new_domain_name >/etc/resolv.conf
+ for nameserver in $new_domain_name_servers; do
+ echo nameserver $nameserver >>/etc/resolv.conf
+ done
+}
+
+# Must be used on exit. Invokes the local dhcp client exit hooks, if any.
+exit_with_hooks() {
+ exit_status=$1
+ if [ -x /etc/dhclient-exit-hooks ]; then
+ . /etc/dhclient-exit-hooks
+ fi
+# probably should do something with exit status of the local script
+ exit $exit_status
+}
+
+# Invoke the local dhcp client enter hooks, if they exist.
+if [ -x /etc/dhclient-enter-hooks ]; then
+ exit_status=0
+ . /etc/dhclient-enter-hooks
+ # allow the local script to abort processing of this state
+ # local script must set exit_status variable to nonzero.
+ if [ $exit_status -ne 0 ]; then
+ exit $exit_status
+ fi
+fi
+
+if [ x$new_network_number != x ]; then
+ $LOGGER New Network Number: $new_network_number
+fi
+
+if [ x$new_broadcast_address != x ]; then
+ $LOGGER New Broadcast Address: $new_broadcast_address
+ new_broadcast_arg="broadcast $new_broadcast_address"
+fi
+if [ x$old_broadcast_address != x ]; then
+ old_broadcast_arg="broadcast $old_broadcast_address"
+fi
+if [ x$new_subnet_mask != x ]; then
+ $LOGGER New Subnet Mask for $interface: $new_subnet_mask
+ new_netmask_arg="netmask $new_subnet_mask"
+fi
+if [ x$old_subnet_mask != x ]; then
+ old_netmask_arg="netmask $old_subnet_mask"
+fi
+if [ x$alias_subnet_mask != x ]; then
+ alias_subnet_arg="netmask $alias_subnet_mask"
+fi
+
+if [ x$reason = xMEDIUM ]; then
+ ifconfig $interface $medium
+ ifconfig $interface inet -alias 0.0.0.0 $medium >/dev/null 2>&1
+ sleep 1
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xPREINIT ]; then
+ if [ x$alias_ip_address != x ]; then
+ ifconfig $interface inet -alias $alias_ip_address > /dev/null 2>&1
+ route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
+ fi
+ ifconfig $interface inet 0.0.0.0 netmask 0.0.0.0 \
+ broadcast 255.255.255.255 up
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xARPCHECK ] || [ x$reason = xARPSEND ]; then
+ exit_with_hooks 0;
+fi
+
+if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
+ [ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then
+ current_hostname=`/bin/hostname`
+ if [ x$current_hostname = x ] || \
+ [ x$current_hostname = x$old_host_name ]; then
+ if [ x$new_host_name != x$old_host_name ]; then
+ $LOGGER New Hostname: $new_host_name
+ hostname $new_host_name
+ fi
+ fi
+ if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
+ [ x$alias_ip_address != x$old_ip_address ]; then
+ ifconfig $interface inet -alias $alias_ip_address > /dev/null 2>&1
+ route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
+ fi
+ if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then
+ ifconfig $interface inet -alias $old_ip_address $medium
+ route delete $old_ip_address 127.1 >/dev/null 2>&1
+ for router in $old_routers; do
+ route delete default $router >/dev/null 2>&1
+ done
+ if [ "$old_static_routes" != "" ]; then
+ set $old_static_routes
+ while [ $# -gt 1 ]; do
+ route delete $1 $2
+ shift; shift
+ done
+ fi
+ arp -n -a | sed -n -e 's/^.*(\(.*\)) at .*$/arp -n -d \1/p' |sh
+ fi
+ if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \
+ [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then
+ ifconfig $interface inet $new_ip_address $new_netmask_arg \
+ $new_broadcast_arg $medium
+ route add $new_ip_address 127.1 >/dev/null 2>&1
+ for router in $new_routers; do
+ route add default $router >/dev/null 2>&1
+ done
+ if [ "$new_static_routes" != "" ]; then
+ $LOGGER New Static Routes: $new_static_routes
+ set $new_static_routes
+ while [ $# -gt 1 ]; do
+ route add $1 $2
+ shift; shift
+ done
+ fi
+ fi
+ if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ];
+ then
+ ifconfig $interface inet alias $alias_ip_address $alias_subnet_arg
+ route add $alias_ip_address 127.0.0.1
+ fi
+ echo search $new_domain_name >/etc/resolv.conf
+ for nameserver in $new_domain_name_servers; do
+ echo nameserver $nameserver >>/etc/resolv.conf
+ done
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ]; then
+ if [ x$alias_ip_address != x ]; then
+ ifconfig $interface inet -alias $alias_ip_address > /dev/null 2>&1
+ route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
+ fi
+ if [ x$old_ip_address != x ]; then
+ ifconfig $interface inet -alias $old_ip_address $medium
+ route delete $old_ip_address 127.1 >/dev/null 2>&1
+ for router in $old_routers; do
+ route delete default $router >/dev/null 2>&1
+ done
+ if [ "$old_static_routes" != "" ]; then
+ set $old_static_routes
+ while [ $# -gt 1 ]; do
+ route delete $1 $2
+ shift; shift
+ done
+ fi
+ arp -n -a | sed -n -e 's/^.*(\(.*\)) at .*$/arp -n -d \1/p' \
+ |sh >/dev/null 2>&1
+ fi
+ if [ x$alias_ip_address != x ]; then
+ ifconfig $interface inet alias $alias_ip_address $alias_subnet_arg
+ route add $alias_ip_address 127.0.0.1
+ fi
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xTIMEOUT ]; then
+ if [ x$alias_ip_address != x ]; then
+ ifconfig $interface inet -alias $alias_ip_address > /dev/null 2>&1
+ route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
+ fi
+ ifconfig $interface inet $new_ip_address $new_netmask_arg \
+ $new_broadcast_arg $medium
+ sleep 1
+ if [ "$new_routers" != "" ]; then
+ $LOGGER New Routers: $new_routers
+ set $new_routers
+ if ping -q -c 1 $1; then
+ if [ x$new_ip_address != x$alias_ip_address ] && \
+ [ x$alias_ip_address != x ]; then
+ ifconfig $interface inet alias $alias_ip_address $alias_subnet_arg
+ route add $alias_ip_address 127.0.0.1
+ fi
+ route add $new_ip_address 127.1 >/dev/null 2>&1
+ for router in $new_routers; do
+ route add default $router >/dev/null 2>&1
+ done
+ set $new_static_routes
+ while [ $# -gt 1 ]; do
+ route add $0 $1
+ shift; shift
+ done
+ echo search $new_domain_name >/etc/resolv.conf.std
+ for nameserver in $new_domain_name_servers; do
+ echo nameserver $nameserver >>/etc/resolv.conf.std
+ done
+ if [ -f /etc/resolv.conf ]; then
+ rm -f /etc/resolv.conf
+ fi
+ mv /etc/resolv.conf.std /etc/resolv.conf
+ exit_with_hooks 0
+ fi
+ fi
+ ifconfig $interface inet -alias $new_ip_address $medium
+ for router in $old_routers; do
+ route delete default $router >/dev/null 2>&1
+ done
+ if [ "$old_static_routes" != "" ]; then
+ set $old_static_routes
+ while [ $# -gt 1 ]; do
+ route delete $1 $2
+ shift; shift
+ done
+ fi
+ arp -n -a | sed -n -e 's/^.*(\(.*\)) at .*$/arp -n -d \1/p' \
+ |sh >/dev/null 2>&1
+ exit_with_hooks 1
+fi
+
+exit_with_hooks 0
diff --git a/release/picobsd/custom/mfs/etc/disktab b/release/picobsd/custom/mfs/etc/disktab
new file mode 100644
index 000000000000..7575ba66e088
--- /dev/null
+++ b/release/picobsd/custom/mfs/etc/disktab
@@ -0,0 +1,87 @@
+#
+# Floppy formats:
+#
+# To make a filesystem on a floppy:
+# fdformat [-f <size>] fd<drive>[.<size>]
+# disklabel -B -r -w fd<drive>[.<size>] fd<size>
+# newfs <opts> fd<drive>[.<size>]
+#
+# with <opts>:
+# -t 2 - two heads
+# -u 9|15|18 - sectors per track
+# (using the default value of 1/4096 is not much useful for floppies)
+# -l 1 - interleave 1 (for most floppies)
+# -i 65536 - bytes of data per i-node
+# (the default -i value will render you with a floppy wasting way
+# too much space in i-node areas)
+#
+
+fd360:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#9:nc#40:\
+ :pa#720:oa#0:ba#4096:fa#512:\
+ :pb#720:ob#0:bb#4096:fb#512:\
+ :pc#720:oc#0:bc#4096:fc#512:
+
+fd720:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#9:nc#80:\
+ :pa#1440:oa#0:ba#4096:fa#512:\
+ :pb#1440:ob#0:bb#4096:fb#512:\
+ :pc#1440:oc#0:bc#4096:fc#512:
+
+fd1200|floppy5|5in|5.25in High Density Floppy:\
+ :ty=floppy:se#512:nt#2:rm#360:ns#15:nc#80:\
+ :pa#2400:oa#0:ba#4096:fa#512:\
+ :pb#2400:ob#0:bb#4096:fb#512:\
+ :pc#2400:oc#0:bc#4096:fc#512:
+
+fd1440|floppy|floppy3|3in|3.5in High Density Floppy:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#18:nc#80:\
+ :pa#2880:oa#0:ba#4096:fa#512:\
+ :pb#2880:ob#0:bb#4096:fb#512:\
+ :pc#2880:oc#0:bc#4096:fc#512:
+
+fd1024|floppy0|3.5in Special Density Floppy:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#16:nc#64:\
+ :pa#2048:oa#0:ba#4096:fa#512:\
+ :pb#2048:ob#0:bb#4096:fb#512:\
+ :pc#2048:oc#0:bc#4096:fc#512:
+
+# a == root
+# b == swap
+# c == d == whole disk
+# e == /var
+# f == scratch
+# h == /usr
+
+cp3100new|Connor Peripherals 100MB IDE, with a different configuration:\
+ :dt=ST506:ty=winchester:se#512:nt#8:ns#33:nc#766: \
+ :pa#15840:oa#0:ta=4.2BSD:ba#4096:fa#512: \
+ :pb#24288:ob#15840:tb=swap: \
+ :pc#202224:oc#0: \
+ :pd#202224:od#0: \
+ :pe#15840:oe#40128:te=4.2BSD:be#4096:fe#512: \
+ :pg#15840:og#55968:tg=4.2BSD:bg#4096:fg#512: \
+ :ph#130416:oh#71808:th=4.2BSD:bh#4096:fh#512:
+
+sony650|Sony 650 MB MOD|\
+ :ty=removable:dt=SCSI:se#512:nt#1:ns#31:nc#18600:ts#1:rm#4800:\
+ :pc#576600:oc#0:\
+ :pa#576600:oa#0:ta=4.2BSD:ba#8192:fa#1024:
+
+mta3230|mo230|IBM MTA-3230 230 Meg 3.5inch Magneto-Optical:\
+ :ty=removeable:dt=SCSI:rm#3600:\
+ :se#512:nt#64:ns#32:nc#216:sc#2048:su#444384:\
+ :pa#444384:oa#0:ba#4096:fa#0:ta=4.2BSD:\
+ :pc#444384:oc#0:
+
+minimum:ty=mfs:se#512:nt#1:rm#300:\
+ :ns#2880:nc#1:\
+ :pa#2880:oa#0:ba#4096:fa#512:\
+ :pc#2880:oc#0:bc#4096:fc#512:
+
+zip100|zip 100:\
+ :ty=removable:se#512:nc#96:nt#64:ns#32:\
+ :pa#196608:oa#0:ba#4096:fa#512:\
+ :pb#196608:ob#0:bb#4096:fb#512:\
+ :pc#196608:oc#0:bc#4096:fc#512:
+
diff --git a/release/picobsd/custom/mfs/etc/gettytab b/release/picobsd/custom/mfs/etc/gettytab
new file mode 100644
index 000000000000..90562acf2505
--- /dev/null
+++ b/release/picobsd/custom/mfs/etc/gettytab
@@ -0,0 +1,40 @@
+# from: @(#)gettytab 5.14 (Berkeley) 3/27/91
+#
+default:\
+ :cb:ce:ck:lc:fd#1000:cl:im=\r\nPicoBSD (%h) (%t)\r\n\r\n:sp#1200:
+
+P|Pc|Pc console:\
+ :ht:np:sp#115200:
+
+#
+# Fixed speed entries
+2|std.9600|9600-baud:\
+ :np:sp#9600:
+g|std.19200|19200-baud:\
+ :np:sp#19200:
+std.38400|38400-baud:\
+ :np:sp#38400:
+std.57600|57600-baud:\
+ :np:sp#57600:
+std.115200|115200-baud:\
+ :np:sp#115200:
+
+#
+# Entry specifying explicit device settings. See termios(4) and
+# /usr/include/termios.h, too. The entry forces the tty into
+# CLOCAL mode (so no DCD is required), and uses Xon/Xoff flow control.
+#
+# cflags: CLOCAL | HUPCL | CREAD | CS8
+# oflags: OPOST | ONLCR | OXTABS
+# iflags: IXOFF | IXON | ICRNL | IGNPAR
+# lflags: IEXTEN | ICANON | ISIG | ECHOCTL | ECHO | ECHOK | ECHOE | ECHOKE
+#
+# The `0' flags don't have input enabled. The `1' flags don't echo.
+# (Echoing is done inside getty itself.)
+#
+local.9600|CLOCAL tty @ 9600 Bd:\
+ :c0#0x0000c300:c1#0x0000cb00:c2#0x0000cb00:\
+ :o0#0x00000007:o1#0x00000002:o2#0x00000007:\
+ :i0#0x00000704:i1#0x00000000:i2#0x00000704:\
+ :l0#0x000005cf:l1#0x00000000:l2#0x000005cf:\
+ :sp#9600:
diff --git a/release/picobsd/custom/mfs/etc/group b/release/picobsd/custom/mfs/etc/group
new file mode 100644
index 000000000000..abbd733f3b0b
--- /dev/null
+++ b/release/picobsd/custom/mfs/etc/group
@@ -0,0 +1,19 @@
+wheel:*:0:root,user
+daemon:*:1:daemon
+kmem:*:2:root
+sys:*:3:root
+tty:*:4:root
+operator:*:5:root
+mail:*:6:
+bin:*:7:
+news:*:8:
+man:*:9:
+games:*:13:
+staff:*:20:root,user
+guest:*:31:root
+uucp:*:66:
+xten:*:67:xten
+dialer:*:68:
+network:*:69:
+nogroup:*:65533:
+nobody:*:65534:
diff --git a/release/picobsd/custom/mfs/etc/login.conf b/release/picobsd/custom/mfs/etc/login.conf
new file mode 100644
index 000000000000..1f2f02777ddd
--- /dev/null
+++ b/release/picobsd/custom/mfs/etc/login.conf
@@ -0,0 +1,120 @@
+# This file controls resource limits, accounting limits and
+# default user environment settings.
+#
+# $FreeBSD$
+#
+
+
+# Authentication methods
+
+auth-defaults:\
+ :auth=passwd:
+
+auth-root-defaults:\
+ :auth-login=passwd:\
+ :auth-rlogin=passwd:\
+
+auth-ftp-defaults:\
+ :auth=passwd:
+
+# Example defaults
+# These settings are used by login(1) by default for classless users
+# Note that entries like "cputime" set both "cputime-cur" and "cputime-max"
+
+default:\
+ :cputime=infinity:\
+ :datasize-cur=22M:\
+ :stacksize-cur=8M:\
+ :memorylocked-cur=10M:\
+ :memoryuse-cur=30M:\
+ :filesize=infinity:\
+ :coredumpsize=infinity:\
+ :maxproc-cur=64:\
+ :openfiles-cur=64:\
+ :priority=0:\
+ :requirehome@:\
+ :umask=022:\
+ :tc=auth-defaults:
+
+
+#
+# standard - standard user defaults
+#
+standard:\
+ :copyright=/etc/COPYRIGHT:\
+ :welcome=/etc/motd:\
+ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,EDITOR=/usr/bin/ee:\
+ :path=~/bin /bin /usr/bin:\
+ :nologin=/var/run/nologin:\
+ :cputime=1h30m:\
+ :datasize=8M:\
+ :stacksize=2M:\
+ :memorylocked=4M:\
+ :memoryuse=8M:\
+ :filesize=8M:\
+ :coredumpsize=8M:\
+ :openfiles=24:\
+ :maxproc=32:\
+ :priority=0:\
+ :requirehome:\
+ :passwordtime=90d:\
+ :umask=002:\
+ :ignoretime@:\
+ :tc=default:
+#
+# Staff users - few restrictions and allow login anytime
+#
+staff:\
+ :ignorenologin:\
+ :ignoretime:\
+ :requirehome@:\
+ :accounted@:\
+ :path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
+ :umask=022:\
+ :tc=standard:
+
+
+#
+# root - fallback for root logins
+#
+root:\
+ :path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
+ :cputime=infinity:\
+ :datasize=infinity:\
+ :stacksize=infinity:\
+ :memorylocked=infinity:\
+ :memoryuse=infinity:\
+ :filesize=infinity:\
+ :coredumpsize=infinity:\
+ :openfiles=infinity:\
+ :maxproc=infinity:\
+ :memoryuse-cur=32M:\
+ :maxproc-cur=64:\
+ :openfiles-cur=1024:\
+ :priority=0:\
+ :requirehome@:\
+ :umask=022:\
+ :tc=auth-root-defaults:\
+#
+# Settings used by /etc/rc
+#
+daemon:\
+ :coredumpsize@:\
+ :coredumpsize-cur=0:\
+ :datasize=infinity:\
+ :datasize-cur@:\
+ :maxproc=512:\
+ :maxproc-cur@:\
+ :memoryuse-cur=64M:\
+ :memorylocked-cur=64M:\
+ :openfiles=1024:\
+ :openfiles-cur@:\
+ :stacksize=16M:\
+ :stacksize-cur@:\
+ :tc=default:
+#
+# Polish Users Accounts. Setup proper environment variables.
+#
+polish:Polish Users Accounts:\
+ :lang=pl_pl.ISO-8859-2:\
+ :tc=default:
diff --git a/release/picobsd/custom/mfs/etc/protocols b/release/picobsd/custom/mfs/etc/protocols
new file mode 100644
index 000000000000..c80be39f693a
--- /dev/null
+++ b/release/picobsd/custom/mfs/etc/protocols
@@ -0,0 +1,7 @@
+#
+# Internet (IP) protocols
+ip 0 IP # internet protocol, pseudo protocol number
+icmp 1 ICMP # internet control message protocol
+igmp 2 IGMP # Internet Group Management
+tcp 6 TCP # transmission control protocol
+udp 17 UDP # user datagram protocol
diff --git a/release/picobsd/custom/mfs/etc/rc b/release/picobsd/custom/mfs/etc/rc
new file mode 100644
index 000000000000..486ba8455f8a
--- /dev/null
+++ b/release/picobsd/custom/mfs/etc/rc
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+### WARNING !!!!!! #####
+# We remove this file during execution (see EOF).
+# Awful things happen if its size is > 1024B
+
+stty status '^T'
+
+trap : 2
+trap : 3
+
+HOME=/; export HOME
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
+export PATH
+
+trap "echo 'Reboot interrupted'; exit 1" 3
+
+### Special setup for two floppy PICOBSD ###
+echo ""
+echo "-------------------------------------------"
+echo " Please wait. The system is coming up..."
+echo "-------------------------------------------"
+echo ""
+echo "Reading /etc from startup floppy..."
+mount -o rdonly /dev/fd0a /start_floppy
+cd /etc
+tar zxvf /start_floppy/etc.tar.gz
+cd /etc
+pwd_mkdb -p ./master.passwd
+umount /start_floppy
+echo "Ok. (Now you can remove floppy if you like)"
+echo ""
+. rc
+exit 0
diff --git a/release/picobsd/custom/mfs/etc/rc.firewall b/release/picobsd/custom/mfs/etc/rc.firewall
new file mode 100644
index 000000000000..c2860baedce0
--- /dev/null
+++ b/release/picobsd/custom/mfs/etc/rc.firewall
@@ -0,0 +1,172 @@
+############
+# Setup system for firewall service.
+# $FreeBSD$
+
+############
+# Define the firewall type in /etc/rc.conf. Valid values are:
+# open - will allow anyone in
+# client - will try to protect just this machine
+# simple - will try to protect a whole network
+# closed - totally disables IP services except via lo0 interface
+# UNKNOWN - disables the loading of firewall rules.
+# filename - will load the rules in the given filename (full path required)
+#
+# For ``client'' and ``simple'' the entries below should be customized
+# appropriately.
+
+############
+#
+# If you don't know enough about packet filtering, we suggest that you
+# take time to read this book:
+#
+# Building Internet Firewalls
+# Brent Chapman and Elizabeth Zwicky
+#
+# O'Reilly & Associates, Inc
+# ISBN 1-56592-124-0
+# http://www.ora.com/
+#
+# For a more advanced treatment of Internet Security read:
+#
+# Firewalls & Internet Security
+# Repelling the wily hacker
+# William R. Cheswick, Steven M. Bellowin
+#
+# Addison-Wesley
+# ISBN 0-201-6337-4
+# http://www.awl.com/
+#
+
+if [ "x$1" != "x" ]; then
+ firewall_type=$1
+fi
+
+############
+# Set quiet mode if requested
+if [ "x$firewall_quiet" = "xYES" ]; then
+ fwcmd="/sbin/ipfw -q"
+else
+ fwcmd="/sbin/ipfw"
+fi
+
+############
+# Flush out the list before we begin.
+$fwcmd -f flush
+
+############
+# If you just configured ipfw in the kernel as a tool to solve network
+# problems or you just want to disallow some particular kinds of traffic
+# they you will want to change the default policy to open. You can also
+# do this as your only action by setting the firewall_type to ``open''.
+
+# $fwcmd add 65000 pass all from any to any
+
+############
+# Only in rare cases do you want to change these rules
+$fwcmd add 1000 pass all from any to any via lo0
+$fwcmd add 1010 deny all from 127.0.0.0/8 to 127.0.0.0/8
+
+
+# Prototype setups.
+if [ "${firewall_type}" = "open" -o "${firewall_type}" = "OPEN" ]; then
+
+ $fwcmd add 65000 pass all from any to any
+
+elif [ "${firewall_type}" = "client" ]; then
+
+ ############
+ # This is a prototype setup that will protect your system somewhat against
+ # people from outside your own network.
+ ############
+
+ # set these to your network and netmask and ip
+ net="192.168.4.0"
+ mask="255.255.255.0"
+ ip="192.168.4.17"
+
+ # Allow any traffic to or from my own net.
+ $fwcmd add pass all from ${ip} to ${net}:${mask}
+ $fwcmd add pass all from ${net}:${mask} to ${ip}
+
+ # Allow TCP through if setup succeeded
+ $fwcmd add pass tcp from any to any established
+
+ # Allow setup of incoming email
+ $fwcmd add pass tcp from any to ${ip} 25 setup
+
+ # Allow setup of outgoing TCP connections only
+ $fwcmd add pass tcp from ${ip} to any setup
+
+ # Disallow setup of all other TCP connections
+ $fwcmd add deny tcp from any to any setup
+
+ # Allow DNS queries out in the world
+ $fwcmd add pass udp from any 53 to ${ip}
+ $fwcmd add pass udp from ${ip} to any 53
+
+ # Allow NTP queries out in the world
+ $fwcmd add pass udp from any 123 to ${ip}
+ $fwcmd add pass udp from ${ip} to any 123
+
+ # Everything else is denied as default.
+
+elif [ "${firewall_type}" = "simple" ]; then
+
+ ############
+ # This is a prototype setup for a simple firewall. Configure this machine
+ # as a named server and ntp server, and point all the machines on the inside
+ # at this machine for those services.
+ ############
+
+ # set these to your outside interface network and netmask and ip
+ oif="ed0"
+ onet="192.168.4.0"
+ omask="255.255.255.0"
+ oip="192.168.4.17"
+
+ # set these to your inside interface network and netmask and ip
+ iif="ed1"
+ inet="192.168.3.0"
+ imask="255.255.255.0"
+ iip="192.168.3.17"
+
+ # Stop spoofing
+ $fwcmd add deny all from ${inet}:${imask} to any in via ${oif}
+ $fwcmd add deny all from ${onet}:${omask} to any in via ${iif}
+
+ # Stop RFC1918 nets on the outside interface
+ $fwcmd add deny all from 192.168.0.0:255.255.0.0 to any via ${oif}
+ $fwcmd add deny all from 172.16.0.0:255.240.0.0 to any via ${oif}
+ $fwcmd add deny all from 10.0.0.0:255.0.0.0 to any via ${oif}
+
+ # Allow TCP through if setup succeeded
+ $fwcmd add pass tcp from any to any established
+
+ # Allow setup of incoming email
+ $fwcmd add pass tcp from any to ${oip} 25 setup
+
+ # Allow access to our DNS
+ $fwcmd add pass tcp from any to ${oip} 53 setup
+
+ # Allow access to our WWW
+ $fwcmd add pass tcp from any to ${oip} 80 setup
+
+ # Reject&Log all setup of incoming connections from the outside
+ $fwcmd add deny log tcp from any to any in via ${oif} setup
+
+ # Allow setup of any other TCP connection
+ $fwcmd add pass tcp from any to any setup
+
+ # Allow DNS queries out in the world
+ $fwcmd add pass udp from any 53 to ${oip}
+ $fwcmd add pass udp from ${oip} to any 53
+
+ # Allow NTP queries out in the world
+ $fwcmd add pass udp from any 123 to ${oip}
+ $fwcmd add pass udp from ${oip} to any 123
+
+ # Everything else is denied as default.
+
+elif [ "${firewall_type}" != "UNKNOWN" -a -r "${firewall_type}" ]; then
+ $fwcmd ${firewall_type}
+fi
diff --git a/release/picobsd/custom/mfs/etc/rc.serial b/release/picobsd/custom/mfs/etc/rc.serial
new file mode 100644
index 000000000000..40fbd8a334cc
--- /dev/null
+++ b/release/picobsd/custom/mfs/etc/rc.serial
@@ -0,0 +1,127 @@
+#!/bin/sh
+# $FreeBSD$
+
+# Change some defaults for serial devices.
+# Standard defaults are:
+# dtrwait 300 drainwait 0
+# initial cflag from <sys/ttydefaults.h> = cread cs8 hupcl
+# initial iflag, lflag and oflag all 0
+# speed 9600
+# special chars from <sys/ttydefaults.h>
+# nothing locked
+# except for serial consoles the initial iflag, lflag and oflag are from
+# <sys/ttydefaults.h> and clocal is locked on.
+
+default() {
+ # Reset everything changed by the other functions to initial defaults.
+
+ ci=$1; shift # call in device identifier
+ co=$1; shift # call out device identifier
+
+ for i in $*
+ do
+ comcontrol /dev/tty$ci$i dtrwait 300 drainwait 0
+ stty </dev/ttyi$ci$i -clocal crtscts hupcl 9600 reprint ^R
+ stty </dev/ttyl$ci$i -clocal -crtscts -hupcl 0
+ stty </dev/cuai$co$i -clocal crtscts hupcl 9600 reprint ^R
+ stty </dev/cual$co$i -clocal -crtscts -hupcl 0
+ done
+}
+
+maybe() {
+ # Special settings.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # Don't use ^R; it breaks bash's ^R when typed ahead.
+ stty </dev/ttyi$ci$i reprint undef
+ stty </dev/cuai$co$i reprint undef
+ # Lock clocal off on dialin device for security.
+ stty </dev/ttyl$ci$i clocal
+ # Lock the speeds to use old binaries that don't support them.
+ # Any legal speed works to lock the initial speed.
+ stty </dev/ttyl$ci$i 300
+ stty </dev/cual$co$i 300
+ done
+}
+
+modem() {
+ # Modem that supports CTS and perhaps RTS handshaking.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # may depend on modem
+ comcontrol /dev/tty$ci$i dtrwait 100 drainwait 180
+ # Lock crtscts on.
+ # Speed reasonable for V42bis.
+ stty </dev/ttyi$ci$i crtscts 57600
+ stty </dev/ttyl$ci$i crtscts
+ stty </dev/cuai$co$i crtscts 57600
+ stty </dev/cual$co$i crtscts
+ done
+}
+
+mouse() {
+ # Mouse on either callin or callout port.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # Lock clocal on, hupcl off.
+ # Standard speed for Microsoft mouse.
+ stty </dev/ttyi$ci$i clocal -hupcl 1200
+ stty </dev/ttyl$ci$i clocal hupcl
+ stty </dev/cuai$co$i clocal -hupcl 1200
+ stty </dev/cual$co$i clocal hupcl
+ done
+}
+
+terminal() {
+ # Terminal that supports CTS and perhaps RTS handshaking
+ # with the cable or terminal arranged so that DCD is on
+ # at least while the terminal is on.
+ # Also works for bidirectional communications to another pc
+ # provided at most one side runs getty.
+ # Same as modem() except we want a faster speed and no dtrwait.
+
+ ci=$1; shift
+ co=$1; shift
+
+ modem $ci $co $*
+ for i in $*
+ do
+ comcontrol /dev/tty$ci$i dtrwait 0
+ stty </dev/ttyi$ci$i 115200
+ stty </dev/cuai$co$i 115200
+ done
+}
+
+# Don't use anything from this file unless you have some buggy programs
+# that require it.
+
+# Edit the functions and the examples to suit your system.
+# $1 is the call in device identifier, $2 is the call out device identifier
+# and the remainder of the line lists the device numbers.
+
+# Initialize assorted 8250-16550 (sio) ports.
+# maybe d a 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v
+# mouse d a 2
+# modem d a 1
+# terminal d a 0
+
+# Initialize all ports on a Cyclades-8yo.
+# modem c c 00 01 02 03 04 05 06 07
+
+# Initialize all ports on a Cyclades-16ye.
+# modem c c 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
+
+# Initialize all ports on a Digiboard 8.
+# modem D D 00 01 02 03 04 05 06 07
diff --git a/release/picobsd/custom/mfs/etc/remote b/release/picobsd/custom/mfs/etc/remote
new file mode 100644
index 000000000000..6f9fcaf4ad5d
--- /dev/null
+++ b/release/picobsd/custom/mfs/etc/remote
@@ -0,0 +1,50 @@
+# @(#)remote 5.2 (Berkeley) 6/30/90
+#
+# remote -- remote host description file
+# see tip(1), remote(5)
+#
+# dv device to use for the tty
+# el EOL marks (default is NULL)
+# du make a call flag (dial up)
+# pn phone numbers (@ =>'s search phones file; possibly taken from
+# PHONES environment variable)
+# at ACU type
+# ie input EOF marks (default is NULL)
+# oe output EOF string (default is NULL)
+# cu call unit (default is dv)
+# br baud rate (defaults to 300)
+# fs frame size (default is BUFSIZ) -- used in buffering writes on
+# receive operations
+# tc to continue a capability
+
+# Systems definitions
+netcom|Netcom Unix Access:\
+ :pn=\@:tc=unix1200:
+omen|Omen BBS:\
+ :pn=\@:tc=dos1200:
+
+# UNIX system definitions
+unix1200|1200 Baud dial-out to a UNIX system:\
+ :el=^U^C^R^O^D^S^Q:ie=%$:oe=^D:tc=dial1200:
+unix300|300 Baud dial-out to a UNIX system:\
+ :el=^U^C^R^O^D^S^Q:ie=%$:oe=^D:tc=dial300:
+
+# DOS system definitions
+dos1200|1200 Baud dial-out to a DOS system:\
+ :el=^U^C^R^O^D^S^Q:ie=%$:oe=^Z:pa=none:tc=dial1200:
+
+# General dialer definitions used below
+#
+# COURIER switch settings:
+# switch: 1 2 3 4 5 6 7 8 9 10
+# setting: D U D U D D U D U U
+# Rackmount: U U D U D U D D U D
+#
+dial2400|2400 Baud Hayes attributes:\
+ :dv=/dev/cuaa0:br#2400:cu=/dev/cuaa0:at=hayes:du:
+dial1200|1200 Baud Hayes attributes:\
+ :dv=/dev/cuaa0:br#1200:cu=/dev/cuaa0:at=hayes:du:
+
+# Hardwired line
+cuaa0b|cua0b:dv=/dev/cuaa0:br#2400
+cuaa0c|cua0c:dv=/dev/cuaa0:br#9600
diff --git a/release/picobsd/custom/mfs/etc/snmpd.conf b/release/picobsd/custom/mfs/etc/snmpd.conf
new file mode 100644
index 000000000000..29400dfb4b5e
--- /dev/null
+++ b/release/picobsd/custom/mfs/etc/snmpd.conf
@@ -0,0 +1,58 @@
+# load average checks
+
+# load [1MAX=DEFMAXLOADAVE] [5MAX=DEFMAXLOADAVE] [15MAX=DEFMAXLOADAVE]
+#
+# 1MAX: If the 1 minute load average is above this limit at query
+# time, the errorFlag will be set.
+# 5MAX: Similar, but for 5 min average.
+# 15MAX: Similar, but for 15 min average.
+
+# Check for loads:
+load 12 14 14
+
+# % snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.10
+
+# snmp agent errors
+
+# % snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.101
+
+# snmp version mib
+
+# % snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.100
+
+# System contact information
+
+syslocation PicoBSD
+syscontact root <root@pico>
+
+# Setting up the access control lists to the agent
+
+# sec.name source community
+com2sec local localhost private
+com2sec public default public
+
+# sec.model sec.name
+group local any local
+group public any public
+
+# incl/excl subtree mask
+view all included .1 80
+view system included system fe
+view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
+
+# context sec.model sec.level prefix read write not
+access public "" any noauth 0 system none none
+access local "" any noauth 0 all all all
+
+# If you want to get back to the functionality of previous versions,
+# where the public community could read anything from anywhere and the
+# private community could write anything from anywhere, use these
+# lines instead:
+#
+# com2sec public default public
+# com2sec private default private
+# group public any public
+# group private any private
+# view all included .1 80
+# access public "" any noauth 0 all none none
+# access private "" any noauth 0 all all none
diff --git a/release/picobsd/custom/mfs/etc/termcap b/release/picobsd/custom/mfs/etc/termcap
new file mode 100644
index 000000000000..0c17360936eb
--- /dev/null
+++ b/release/picobsd/custom/mfs/etc/termcap
@@ -0,0 +1,133 @@
+# Copyright (c) 1980, 1985, 1989 The Regents of the University of California.
+# All rights reserved.
+# @(#)termcap.src 5.88 (Berkeley) 4/30/91
+#
+#
+# for syscons
+# common entry without semigraphics
+cons25w|ansiw|ansi80x25-raw:\
+ :al=\E[L:am:bs:NP:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:co#80:\
+ :dc=\E[P:dl=\E[M:do=\E[B:bt=\E[Z:ho=\E[H:ic=\E[@:li#25:cb=\E[1K:\
+ :ms:nd=\E[C:pt:rs=\E[x\E[m\Ec:so=\E[7m:se=\E[m:up=\E[A:\
+ :pa#64:Co#8:Sf=\E[3%dm:Sb=\E[4%dm:op=\E[37;40m:\
+ :k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:\
+ :k9=\E[U:k;=\E[V:F1=\E[W:F2=\E[X:K2=\E[E:nw=\E[E:ec=\E[%dX:\
+ :kb=^H:kh=\E[H:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:le=^H:eo:sf=\E[S:sr=\E[T:\
+ :kN=\E[G:kP=\E[I:@7=\E[F:kI=\E[L:kD=\E[K:kB=\E[Z:\
+ :IC=\E[%d@:DC=\E[%dP:SF=\E[%dS:SR=\E[%dT:AL=\E[%dL:DL=\E[%dM:\
+ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:cv=\E[%i%dd:ch=\E[%i%d`:bw:\
+ :mb=\E[5m:md=\E[1m:mh=\E[30;1m:mr=\E[7m:me=\E[m:bl=^G:ut:it#8:
+cons25|ansis|ansi80x25:\
+ :ac=l\332m\300k\277j\331u\264t\303v\301w\302q\304x\263n\305`^Da\260f\370g\361~\371.^Y-^Xh\261I^U0\333y\363z\362:\
+ :tc=cons25w:
+cons25-m|ansis-mono|ansi80x25-mono:\
+ :pa@:Co@:Sf@:Sb@:op@:us=\E[4m:ue=\E[m:md@:mh@:tc=cons25:
+cons50|ansil|ansi80x50:\
+ :li#50:tc=cons25:
+cons50-m|ansil-mono|ansi80x50-mono:\
+ :li#50:tc=cons25-m:
+# 80x25 ISO 8859-1 FreeBSD console
+cons25l1|cons25-iso8859-1:\
+ :ac=l\215m\216k\214j\213u\226t\225v\227w\230q\222x\231n\217o\220s\224p\221r\223`\201a\202f\207g\210~\237.^Y-^X+\253,\273I\247y\232z\233:\
+ :tc=cons25w:
+cons25l1-m|cons25-iso8859-1-mono:\
+ :pa@:Co@:Sf@:Sb@:op@:us=\E[4m:ue=\E[m:md@:mh@:tc=cons25l1:
+# 80x50 ISO 8859-1 FreeBSD console
+cons50l1|cons50-iso8859-1:\
+ :li#50:tc=cons25l1:
+cons50l1-m|cons50-iso8859-1-mono:\
+ :li#50:tc=cons25l1-m:
+dosansi|ANSI.SYS standard crt|ansi:\
+ :am:bs:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:co#80:\
+ :do=\E[B:li#25:mi:nd=\E[C:\
+ :se=\E[m:so=\E[7m:up=\E[A:us=\E[4m:ue=\E[m:\
+ :md=\E[1m:mh=\E[m:mb=\E[5m:me=\E[m:\
+ :kh=\EG:kb=^h:ku=\EH:kd=\EP:kl=\EK:kr=\EM:\
+ :k1=\E;:k2=\E<:k3=\E=:k4=\E>:k5=\E?:\
+ :k6=\E@:k7=\EA:k8=\EB:k9=\EC:k0=\ED:
+
+# Note: this entry describes the "native"
+# capabilities of the PC monochrome display, without ANY emulation; most
+# communications packages (but NOT PC/IX connect) do some kind of emulation.
+pc|ibmpc|ibm pc PC/IX:\
+ :li#24:co#80:am:bs:bw:eo:\
+ :cd=\E[J:ce=\E[K:cl=\Ec:cm=\E[%i%2;%2H:do=\E[B:ho=\E[;H:\
+ :nd=\E[C:up=\E[A:so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m:
+pc3mono|IBM PC 386BSD Console with monochrome monitor:\
+ :so=\E[0;1r\E[m:tc=pc3:
+pc3|ibmpc3|IBM PC 386BSD Console:\
+ :Co#8:\
+ :DO=\E[%dB:\
+ :F1=\E[W:\
+ :F2=\E[X:\
+ :K1=\E[H:\
+ :K2=\E[I:\
+ :K3=\E[E:\
+ :K4=\E[F:\
+ :K5=\E[G:\
+ :LE=\E[%dD:\
+ :RI=\E[%dC:\
+ :Sb=\E[1;%dx:\
+ :Sf=\E[2;%dx:\
+ :UP=\E[%dA:\
+ :ac=l\332m\300k\277j\331u\264t\303v\301w\302q\304x\263n\305`^Da\260f\370g\361~\371.^Y-^Xh\261I^U0\333y\363z\362:\
+ :am:\
+ :bl=^G:\
+ :bs:\
+ :cb=\E[1K:\
+ :cd=\E[J:\
+ :ce=\E[K:\
+ :cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:\
+ :co#80:\
+ :cr=^M:\
+ :do=\E[B:\
+ :ho=\E[H:\
+ :is=\E[m:\
+ :it#8:\
+ :k;=\E[V:\
+ :k1=\E[M:\
+ :k2=\E[N:\
+ :k3=\E[O:\
+ :k4=\E[P:\
+ :k5=\E[Q:\
+ :k6=\E[R:\
+ :k7=\E[S:\
+ :k8=\E[T:\
+ :k9=\E[U:\
+ :kD=\177:\
+ :@7=\E[F:\
+ :kN=\E[G:\
+ :kP=\E[I:\
+ :kb=\177:\
+ :kd=\E[B:\
+ :kh=\E[H:\
+ :kl=\E[D:\
+ :kr=\E[C:\
+ :ku=\E[A:\
+ :le=^H:\
+ :li#25:\
+ :ms:\
+ :nd=\E[C:\
+ :op=\E[x:\
+ :pa#64:\
+ :rs=\E[m:\
+ :se=\E[m:\
+ :sf=\E[S:\
+ :so=\E[7;1r\E[7m:\
+ :sr=\E[T:\
+ :ta=^I:\
+ :te=\E[m:\
+ :ti=\E[m:\
+ :up=\E[A:\
+ :ut:
+xterm|vs100|xterm terminal emulator (X window system):\
+ :li#65:\
+ :kh=\EOH:@7=\EOF:kb=^H:kD=^?:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:km:\
+ :is=\E>\E[?1;3;4;5l\E[?7;8h\E[1;65r\E[65;1H:\
+ :rs=\E>\E[?1;3;4;5l\E[?7;8h:\
+ :tc=vt220:
+xterms|vs100s|xterm terminal emulator (small)(X window system):\
+ :is=\E>\E[?1;3;4;5l\E[?7;8h\E[1;24r\E[24;1H:\
+ :li#24:tc=xterm:
diff --git a/release/picobsd/custom/mfsinfo b/release/picobsd/custom/mfsinfo
new file mode 100644
index 000000000000..e53f171ff14d
--- /dev/null
+++ b/release/picobsd/custom/mfsinfo
@@ -0,0 +1,17 @@
+# Information about mfs parameters
+# Size of mfs in kilobytes
+MFS_SIZE = 3500
+
+# Name of init program
+INIT = init
+
+# Number of bytes per inode in mfs
+MFS_INODES = 4096
+
+# Number of bytes per inode in floppy image
+FLOPPY_INODES = 32768
+
+# Suffix to tack on somewhere
+suffix = -C
+
+PASSWD = YES
diff --git a/release/picobsd/dial/Makefile.mfs b/release/picobsd/dial/Makefile.mfs
new file mode 100644
index 000000000000..fa83cfa2b78a
--- /dev/null
+++ b/release/picobsd/dial/Makefile.mfs
@@ -0,0 +1,75 @@
+#
+# $FreeBSD$
+#
+
+.ifndef (DESTDIR)
+DESTDIR?=/mnt
+.endif
+
+STAND_LINKS= bin sbin
+USR_LINKS= bin sbin libexec
+PL_LOCALE_LINKS= pl polish
+US_LOCALE_LINKS= en english
+MY_DEVS= std sysmouse tun2 cuaa0 cuaa1 cuaa2 vty10 fd0 pty0 \
+ psm0 \
+ wd0s1h wd0s2 wd0s3 wd0s4 wd1s1h wd1s2 wd1s3 wd1s4
+
+.if ${LANGUAGE} == pl
+LOCALE=pl_PL.ISO_8859-2
+LOCALE_LINKS=${PL_LOCALE_LINKS}
+FONT=iso02-8x16.fnt
+KBD=pl_PL.ISO_8859-2.kbd
+.else
+LOCALE=en_US.ISO_8859-1
+LOCALE_LINKS=${US_LOCALE_LINKS}
+.endif
+
+all: tree links
+
+tree:
+ mtree -deU -f ../build/mfs.mtree -p ${DESTDIR}
+
+links: tree
+ (cd ${DESTDIR}; \
+ for i in ${STAND_LINKS}; \
+ do \
+ ln -s /stand $${i}; \
+ done; \
+ cd var/run; \
+ ln -s /dev/null log; \
+ cd ../../usr; \
+ for i in ${USR_LINKS}; \
+ do \
+ ln -s /stand $${i}; \
+ done; \
+ cd share/misc;\
+ ln -s /etc/termcap termcap; \
+ echo emacs >${DESTDIR}/usr/share/misc/init.ee; \
+ cd ../; \
+ cd locale; \
+ for i in ${LOCALE_LINKS}; \
+ do \
+ ln -s ${LOCALE} $${i}; \
+ done; \
+ mkdir ${LOCALE}/; \
+ cp /usr/share/locale/${LOCALE}/* ${LOCALE}/; \
+ if [ "X${FONT}" != "X" ]; \
+ then \
+ cp /usr/share/syscons/fonts/${FONT} ../syscons/; \
+ cp /usr/share/syscons/keymaps/${KBD} ../syscons/; \
+ fi; \
+ cd ../nls; \
+ for i in ${LOCALE_LINKS}; \
+ do \
+ ln -s ${LOCALE} $${i}; \
+ done;)
+
+
+# We don't do it under 'all' because it's needed only on non-DEVFS systems
+devnodes: tree
+ (cd ${DESTDIR}/dev; \
+ ln -s /dev/MAKEDEV; \
+ ./MAKEDEV ${MY_DEVS} ; \
+ rm MAKEDEV)
+
+clean:
diff --git a/release/picobsd/dial/PICOBSD b/release/picobsd/dial/PICOBSD
new file mode 100644
index 000000000000..0acaf8e93dac
--- /dev/null
+++ b/release/picobsd/dial/PICOBSD
@@ -0,0 +1,63 @@
+#
+# $FreeBSD$
+#Line starting with #PicoBSD contains PicoBSD build parameters
+#marker def_sz init MFS_inodes floppy_inodes
+#PicoBSD 2200 init 4096 32768
+options MD_ROOT_SIZE=2200 # same as def_sz
+
+#
+machine i386
+cpu I586_CPU
+cpu I686_CPU
+ident PICOBSD
+maxusers 3
+
+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 MD_ROOT #Use MFS for root
+options MSDOSFS #MSDOS Filesystem
+options CD9660 #ISO 9660 Filesystem
+options EXT2FS
+options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
+options USERCONFIG #boot -c editor
+options VISUAL_USERCONFIG #visual boot -c editor
+options INTRO_USERCONFIG #imply -c and parse info area
+#options DEVFS
+options PCI_QUIET
+options NO_SWAPPING
+options COMPAT_OLDISA #Use ISA shims and glue for old drivers
+
+device isa
+device pci
+
+device fdc
+device ata
+device atadisk
+device atapicd
+options ATA_STATIC_ID #Static device numbering
+
+# atkbdc0 controls both the keyboard and the PS/2 mouse
+device atkbdc 1
+device atkbd
+device psm
+
+device vga
+
+# syscons is the default console driver, resembling an SCO console
+device sc 1
+
+# Floating point support - do not disable.
+device npx
+
+# Serial (COM) ports
+device sio
+
+device random # Entropy device
+device loop # Network loopback
+device ether # Ethernet support
+device tun # Packet tunnel.
+device pty # Pseudo-ttys (telnet etc)
+device md # Memory "disks"
diff --git a/release/picobsd/dial/PICOBSD.hints b/release/picobsd/dial/PICOBSD.hints
new file mode 100644
index 000000000000..1c6c3b29aeb9
--- /dev/null
+++ b/release/picobsd/dial/PICOBSD.hints
@@ -0,0 +1,33 @@
+# $FreeBSD$
+hint.fdc.0.at="isa"
+hint.fdc.0.port="0x3F0"
+hint.fdc.0.irq="6"
+hint.fdc.0.drq="2"
+hint.fd.0.at="fdc0"
+hint.fd.0.drive="0"
+hint.fd.1.at="fdc0"
+hint.fd.1.drive="1"
+hint.ata.0.at="isa"
+hint.ata.0.port="0x1F0"
+hint.ata.0.irq="14"
+hint.ata.1.at="isa"
+hint.ata.1.port="0x170"
+hint.ata.1.irq="15"
+hint.atkbdc.0.at="isa"
+hint.atkbdc.0.port="0x060"
+hint.atkbd.0.at="atkbdc"
+hint.atkbd.0.irq="1"
+hint.psm.0.at="atkbdc"
+hint.psm.0.irq="12"
+hint.vga.0.at="isa"
+hint.sc.0.at="isa"
+hint.npx.0.at="nexus"
+hint.npx.0.port="0x0F0"
+hint.npx.0.irq="13"
+hint.sio.0.at="isa"
+hint.sio.0.port="0x3F8"
+hint.sio.0.flags="0x10"
+hint.sio.0.irq="4"
+hint.sio.1.at="isa"
+hint.sio.1.port="0x2F8"
+hint.sio.1.irq="3"
diff --git a/release/picobsd/dial/crunch1/crunch.conf b/release/picobsd/dial/crunch1/crunch.conf
new file mode 100644
index 000000000000..d7caf9e61901
--- /dev/null
+++ b/release/picobsd/dial/crunch1/crunch.conf
@@ -0,0 +1,48 @@
+# $FreeBSD$
+#
+# NOTE1: the string "/usr/src" will be automatically replaced with the
+# correct value set in 'build' script - you should change it there
+
+# Default build options
+buildopts -DNOPAM -DRELEASE_CRUNCH -DNOSECURE -DNOCRYPT -DNONETGRAPH -DNOIPSEC
+
+# other sources
+srcdirs /usr/src/bin
+srcdirs /usr/src/sbin/i386
+srcdirs /usr/src/sbin
+srcdirs /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin
+srcdirs /usr/src/usr.sbin
+srcdirs /usr/src/libexec
+
+# ns, vm etc...
+srcdirs ../../tinyware
+
+progs ppp ftp telnet ee gzip less
+#progs ssh
+ln gzip gunzip
+ln gzip zcat
+ln gzip gzcat
+ln less more
+
+progs sh test kget echo pwd msg stty
+progs hostname cat kill sps vm ns
+progs chmod chown help getty
+progs cp df fsck ping mv ln traceroute
+progs ifconfig kbdcontrol moused
+progs ls mkdir mount mount_msdos mount_cd9660 mount_ext2fs
+progs rm route sysctl umount reboot
+progs vidcontrol
+ln sh -sh
+ln test [
+ln sps ps
+ln msg dmesg
+ln ns netstat
+ln mount_msdos msdos
+ln mount_cd9660 cd9660
+ln mount_ext2fs ext2fs
+ln chown chgrp
+
+libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lgnuregex -lmp -lgmp -lm
+libs -lncurses -lmytinfo -lipx -lz
+libs -ltermcap -ltelnet -lalias
diff --git a/release/picobsd/dial/floppy.tree.exclude b/release/picobsd/dial/floppy.tree.exclude
new file mode 100644
index 000000000000..64c05e2b3a76
--- /dev/null
+++ b/release/picobsd/dial/floppy.tree.exclude
@@ -0,0 +1,16 @@
+etc/disktab
+etc/inetd.conf
+etc/master.passwd
+etc/mfs.rc
+etc/ppp.conf
+etc/ppp.conf
+etc/ppp.linkup
+etc/rc
+etc/rc.conf
+etc/rc.firewall
+etc/rc.serial
+etc/remote
+etc/shells
+etc/snmpd.conf
+etc/sshd_config
+etc/ttys
diff --git a/release/picobsd/dial/floppy.tree/etc/master.passwd b/release/picobsd/dial/floppy.tree/etc/master.passwd
new file mode 100644
index 000000000000..f58c3ffe768a
--- /dev/null
+++ b/release/picobsd/dial/floppy.tree/etc/master.passwd
@@ -0,0 +1,6 @@
+root:*:0:0::0:0:Charlie &:/root:/bin/sh
+toor:*:0:0::0:0:Bourne-again Superuser:/root:
+daemon:*:1:1::0:0:Owner of many system processes:/root:/nonexistent
+operator:*:2:20::0:0:System &:/usr/guest/operator:/bin/csh
+bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/nonexistent
+nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/nonexistent
diff --git a/release/picobsd/dial/floppy.tree/etc/mfs.rc b/release/picobsd/dial/floppy.tree/etc/mfs.rc
new file mode 100644
index 000000000000..fe32516232d7
--- /dev/null
+++ b/release/picobsd/dial/floppy.tree/etc/mfs.rc
@@ -0,0 +1,35 @@
+#!/bin/sh
+# $FreeBSD$
+### WARNING !!!!!! #####
+# We remove this file during execution (see EOF).
+# Awful things happen if its size is > 1024B
+
+trap : 2
+trap : 3
+
+HOME=/; export HOME
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
+export PATH
+
+trap "echo 'Reboot interrupted'; exit 1" 3
+
+sysctl -w vm.defer_swapspace_pageouts=1 vm.disable_swapspace_pageouts=1 2>&1 >/dev/null
+
+echo ""
+echo "-------------------------------------------"
+echo " Please wait. The system is coming up..."
+echo "-------------------------------------------"
+echo ""
+echo "Reading /etc from startup floppy..."
+mount -o rdonly /dev/fd0a /start_floppy
+cd /start_floppy/etc
+cp -Rp . /etc/
+cd /etc
+umount /start_floppy
+echo "Ok. (Now you can remove floppy if you like)"
+echo ""
+
+gzip -d -f *.gz
+. rc
+
+exit 0
diff --git a/release/picobsd/dial/floppy.tree/etc/ppp/ppp.conf b/release/picobsd/dial/floppy.tree/etc/ppp/ppp.conf
new file mode 100644
index 000000000000..440ba294bdf5
--- /dev/null
+++ b/release/picobsd/dial/floppy.tree/etc/ppp/ppp.conf
@@ -0,0 +1,9 @@
+# $FreeBSD$
+#
+# PPP Sample Configuration File
+default:
+ set speed 38400
+ disable lqr
+ deny lqr
+ set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
+
diff --git a/release/picobsd/dial/floppy.tree/etc/ppp/ppp.conf.template b/release/picobsd/dial/floppy.tree/etc/ppp/ppp.conf.template
new file mode 100644
index 000000000000..0473c4aec6f2
--- /dev/null
+++ b/release/picobsd/dial/floppy.tree/etc/ppp/ppp.conf.template
@@ -0,0 +1,10 @@
+#
+# $FreeBSD$
+# PPP Sample Configuration File
+#
+default:
+ set speed 38400
+ disable lqr
+ deny lqr
+ set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
+
diff --git a/release/picobsd/dial/floppy.tree/etc/ppp/ppp.linkup b/release/picobsd/dial/floppy.tree/etc/ppp/ppp.linkup
new file mode 100644
index 000000000000..8a9d900cf382
--- /dev/null
+++ b/release/picobsd/dial/floppy.tree/etc/ppp/ppp.linkup
@@ -0,0 +1,6 @@
+# Example of ppp.linkup file
+#
+# Otherwise, simply add peer as default gateway.
+#
+MYADDR:
+ add 0 0 HISADDR
diff --git a/release/picobsd/dial/floppy.tree/etc/rc b/release/picobsd/dial/floppy.tree/etc/rc
new file mode 100644
index 000000000000..710adc9f7189
--- /dev/null
+++ b/release/picobsd/dial/floppy.tree/etc/rc
@@ -0,0 +1,102 @@
+#!/bin/sh
+# $FreeBSD$
+############################################
+### Special setup for one floppy PICOBSD ###
+### THIS IS NOT THE NORMAL /etc/rc !!!!! ###
+############################################
+mount -a -t nonfs
+if [ -f /etc/rc.conf ]; then
+ . /etc/rc.conf
+fi
+# start up the initial network configuration.
+if [ -f /etc/rc.network ]; then
+ . /etc/rc.network
+ network_pass1
+fi
+# clean up left-over files
+if [ -n "$network_pass1_done" ]; then
+ network_pass2
+fi
+if [ -n "$network_pass2_done" ]; then
+ network_pass3
+fi
+
+# stdin must be redirected because it might be for a serial console
+kbddev=/dev/ttyv0
+viddev=/dev/ttyv0
+
+echo -n "Configuring console:"
+
+# keymap
+if [ "X${keymap}" != X"NO" ]; then
+ echo -n ' keymap'; kbdcontrol < ${kbddev} -l /usr/share/syscons/${keymap}
+fi
+
+# keyrate
+if [ "X${keyrate}" != X"NO" ]; then
+ echo -n ' keyrate'; kbdcontrol < ${kbddev} -r ${keyrate}
+fi
+
+# keybell
+if [ "X${keybell}" != X"NO" ]; then
+ echo -n ' keybell'; kbdcontrol < ${kbddev} -b ${keybell}
+fi
+
+# change function keys
+if [ "X${keychange}" != X"NO" ]; then
+ echo -n " keychange"
+ set - ${keychange}
+ while [ $# -gt 0 ]
+ do
+ kbdcontrol < ${kbddev} -f "$1" "$2"
+ shift; shift
+ done
+fi
+
+# cursor type
+if [ "X${cursor}" != X"NO" ]; then
+ echo -n ' cursor'; vidcontrol < ${viddev} -c ${cursor}
+fi
+
+# font 8x16
+if [ "X${font8x16}" != X"NO" ]; then
+ echo -n ' font8x16'; vidcontrol < ${viddev} -f 8x16 /usr/share/syscons/${font8x16}
+fi
+
+# font 8x14
+if [ "X${font8x14}" != X"NO" ]; then
+ echo -n ' font8x14'; vidcontrol < ${viddev} -f 8x14 /usr/share/syscons/${font8x14}
+fi
+
+# font 8x8
+if [ "X${font8x8}" != X"NO" ]; then
+ echo -n ' font8x8'; vidcontrol < ${viddev} -f 8x8 /usr/share/syscons/${font8x8}
+fi
+
+# blank time
+if [ "X${blanktime}" != X"NO" ]; then
+ echo -n ' blanktime'; vidcontrol < ${viddev} -t ${blanktime}
+fi
+
+# mouse daemon
+if [ "X${moused_enable}" = X"YES" ] ; then
+ echo -n ' moused'
+ moused ${moused_flags} -p ${moused_port} -t ${moused_type}
+ vidcontrol <${viddev} -m on
+fi
+
+echo ''
+echo ''
+echo ''
+echo '+---------- PicoBSD @VER@ (DIALUP) -------------+'
+echo '| |'
+echo '| Log in as "root" (no password). |'
+echo '| |'
+echo '| This version of PicoBSD is fully under |'
+echo '| BSD license (except for SSH). For more |'
+echo '| details see http://www.freebsd.org/~picobsd, |'
+echo '| or contact the author. |'
+echo '| |'
+echo '| abial@freebsd.org |'
+echo '| |'
+echo '+----------------------------------------------+'
diff --git a/release/picobsd/dial/floppy.tree/etc/rc.conf b/release/picobsd/dial/floppy.tree/etc/rc.conf
new file mode 100644
index 000000000000..0c7684df82c2
--- /dev/null
+++ b/release/picobsd/dial/floppy.tree/etc/rc.conf
@@ -0,0 +1,32 @@
+#!/bin/sh
+# $FreeBSD$
+### Network configuration sub-section ######################
+### Basic network options: ###
+hostname="pico.mydomain.edu" # Set this!
+tcp_extensions="NO" # Allow RFC1323 & RFC1644 extensions (or NO).
+network_interfaces="lo0" # List of network interfaces (lo0 is loopback).
+ifconfig_lo0="inet 127.0.0.1" # default loopback device configuration.
+#ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" # Sample alias entry.
+### Network routing options: ###
+defaultrouter="NO" # Set to default gateway (or NO).
+static_routes="" # Set to static route list (or leave empty).
+gateway_enable="NO" # Set to YES if this host will be a gateway.
+arpproxy_all="" # replaces obsolete kernel option ARP_PROXYALL.
+### System console options #################################
+keymap="NO" # keymap in /usr/share/syscons/* (or NO).
+keyrate="NO" # keyboard rate to: slow, normal, fast (or NO).
+keybell="NO" # bell to duration.pitch or normal or visual (or NO).
+keychange="NO" # function keys default values (or NO).
+cursor="NO" # cursor type {normal|blink|destructive} (or NO).
+font8x16="NO" # font 8x16 from /usr/share/syscons/* (or NO).
+font8x14="NO" # font 8x14 from /usr/share/syscons/* (or NO).
+font8x8="NO" # font 8x8 from /usr/share/syscons/* (or NO).
+blanktime="NO" # blank time (in seconds) or "NO" to turn it off.
+moused_enable="YES" # Run the mouse daemon
+moused_type="microsoft"
+moused_port="/dev/cuaa0"
+moused_flags="-3"
+### Allow local configuration override at the very end here ##
+if [ -f /etc/rc.conf.local ]; then
+ . /etc/rc.conf.local
+fi
diff --git a/release/picobsd/dial/floppy.tree/etc/ttys b/release/picobsd/dial/floppy.tree/etc/ttys
new file mode 100644
index 000000000000..2f4f449729f4
--- /dev/null
+++ b/release/picobsd/dial/floppy.tree/etc/ttys
@@ -0,0 +1,10 @@
+#
+# @(#)ttys 5.1 (Berkeley) 4/17/89
+#
+# name getty type status comments
+#
+# This entry needed for asking password when init goes to single-user mode
+# If you want to be asked for password, change "secure" to "insecure" here
+console none unknown off secure
+ttyv0 "/usr/libexec/getty Pc" cons25 on secure
+
diff --git a/release/picobsd/dial/lang/LICENCE.ssh b/release/picobsd/dial/lang/LICENCE.ssh
new file mode 100644
index 000000000000..c4fa584542ad
--- /dev/null
+++ b/release/picobsd/dial/lang/LICENCE.ssh
@@ -0,0 +1,8 @@
+SSH is included here under different license than BSD one. Please see
+http://www.cs.hut.fi/ssh for details. In short, it permits non-commercial
+use only. Your usage may be further restricted by applicable local laws on
+using strong encryption methods.
+
+<abial@freebsd.org>
+
+$FreeBSD$
diff --git a/release/picobsd/dial/lang/README.en b/release/picobsd/dial/lang/README.en
new file mode 100644
index 000000000000..018b4ecc68db
--- /dev/null
+++ b/release/picobsd/dial/lang/README.en
@@ -0,0 +1,106 @@
+1999.04.22, Warsaw, Poland
+
+ PicoBSD @VER@ (DIALUP flavor)
+ ---------------------------
+
+
+What is PicoBSD?
+----------------
+
+It's a one floppy version of FreeBSD (please see http://www.freebsd.org),
+configured mainly for dialup access. It can be used as a means to read your
+mail remotely, or to log in somewhere and do the work there.
+
+What are minimal requirements?
+------------------------------
+
+* 386SX CPU or better (this release contains also FPU emulator)
+* 8MB RAM - the more the better.
+* Modem sitting on COM1-COM4 (default is to use COM2), if you want to have
+ a PPP connection.
+* Network card: compatible with NE2000, or PCI cards with DEC chipsets
+ or 3C509 series (ed, ep and de drivers). There is also driver for Intel
+ EtherExpress PCI card (fxp), and Lance/PCnet (lnc).
+
+How to make a dialup connection?
+--------------------------------
+
+I recommend running /stand/dialup script, which will additionally configure
+the PPP to allow you to automatically connect to your provider, and
+will make the ppp to run in background. However, if you like to do it
+yourself, or the script doesn't work properly in your case (let me know
+this!), here are the steps you should take:
+
+1. Go to /etc/ppp directory and edit file ppp.conf (using ee editor). You
+ should check at least the port number of your modem (it's configured
+ on cuaa1==COM2 by default).
+2. After you're happy with it, start 'ppp' program. Enter the terminal
+ mode ('term') - you are now directly connected to your modem, so you
+ can normally dial the number using AT commands (e.g. atdt555666777),
+ and log in to communictaion server. You should see something like
+ this:
+
+ (comm server prompt) login: abial
+ (comm server prompt) Password: ********
+
+ Then either the comm server automatically switches to PPP, or you
+ should issue a command to tell it to do so (e.g. 'go ppp', 'PPP' or
+ other). When PPP is started, you should see something like:
+
+ ppp on pico> Packet mode
+ PPP on pico>
+
+ Notice the uppercase PPP - it means that the protocol is up, and now
+ you're connected. Congratulations. :-)
+3. Your console is blocked now, but you can use other virtual consoles
+ available under Alt-Fn.
+
+How to configure my Ethernet card?
+----------------------------------
+
+Hopefully your ethernet card is supported by PicoBSD kernel, and in case of
+ISA cards you have already set up correctly its parameters in UserConfig
+editor. You can check if PicoBSD found your card by looking into startup
+messages ('dmesg | more').
+
+The easiest way to do it is to edit /etc/rc.conf file ('ee /etc/rc.conf').
+Find the line which says 'network_interfaces' and add the name of your
+card to the list. Then add yet another line 'ifconfig_<if_name>' which
+actually sets up your IP address and netmask. E.g:
+
+ network_interfaces="lo0 ed0"
+ ifconfig_lo0="inet 127.0.0.1"
+ ifconfig_ed0="inet 192.168.0.1 netmask 255.255.255.0"
+
+Then you have to set up your default gateway, which is usually the router
+nearest to you (on the same LAN). E.g:
+
+ defaultrouter="192.168.0.100"
+
+Then you save this information on the floppy with 'update' command, and
+reboot.
+
+Of course, you can also issue the proper commands by hand:
+
+ ifconfig ed0 inet 192.168.0.1 netmask 255.255.255.0
+ route add default 192.168.0.100
+
+Once you do this, you should be able to 'ping' some remote IP address.
+
+Where to get additional info?
+-----------------------------
+
+There is official page of this project at:
+
+ http://www.freebsd.org/~picobsd/
+
+You can find some informations there - not too much yet, to be sure... ;-)
+I'll put there also new versions of PicoBSD and bugfixes.
+
+I'll be glad hearing from you about your experiences with PicoBSD. Thanks.
+
+Have fun!
+
+Andrzej Bialecki <abial@freebsd.org>
+
+$FreeBSD$
diff --git a/release/picobsd/dial/lang/README.pl b/release/picobsd/dial/lang/README.pl
new file mode 100644
index 000000000000..ef5bdf1f0615
--- /dev/null
+++ b/release/picobsd/dial/lang/README.pl
@@ -0,0 +1,107 @@
+1998.07.23, Warszawa
+
+ PicoBSD @VER@ (wersja DIALUP)
+ ---------------------------
+
+Co to jest PicoBSD?
+-------------------
+
+Jest to jednodyskietkowa wersja FreeBSD skonfigurowana g³ównie pod k±tem
+zastosowania jako narzêdzie dostêpu przez dialup lub ethernet.
+W celu zapoznania siê z pe³nym systemem zajrzyj na http://www.freebsd.org
+
+Jakie s± minimalne wymagania?
+-----------------------------
+
+* Procesor 386SX lub lepszy (dostêpny jest emulator FPU)
+* 8MB pamiêci - jest to absolutnie nieprzekraczalne minimum. Oczywi¶cie im
+ wiecej, tym lepiej - ograniczenie jest g³ównie spowodowane brakiem swapu. Po
+ zapoznaniu siê z systemem mo¿esz sobie skonfigurowaæ tzw. swap-file na dysku
+ twardym, np. na partycji DOS-owej lub Linux-owej. S³u¿y do tego program
+ vnconfig, oraz urz±dzenie vn(4). Wówczas prawdopodobnie wystarczy 4MB pamiêci.
+* Modem, skonfigurowany na COM1-COM4 (standardowo system wykorzystuje COM2),
+ je¶li bêdzie wykorzystywany dostêp przez PPP.
+* Karta sieciowa: kompatybilna z NE2000, niektóre typy 3Com, lub wersje PCI z
+ chipsetem DEC21040 (drivery ed, ep i de), je¶li bêdziesz korzystaæ z dostêpu
+ przez ethernet. Jest te¿ driver do karty PCI Intel EtherExpress (fxp), i
+ kart Lance/PCnet (lnc).
+
+W jaki sposób uzyskaæ dostêp dialup?
+------------------------------------
+
+Zalecam skorzystanie ze skryptu /stand/dialup, który skonfiguruje dodatkowo
+us³ugê PPP w ten sposób, ¿e bêdzie siê automatycznie ³±czyæ z providerem, oraz
+ppp bêdzie dzia³aæ w tle. Je¶li jednak co¶ nie wyjdzie (daj mi znaæ o tym!),
+lub lubisz robiæ to sam, oto opis poszczególnych kroków:
+
+1. wejd¼ do katalogu /etc/ppp i w pliku ppp.conf zmieñ port
+ szeregowy na ten, na którym masz modem (cuaa0==COM1, cuaa1==COM2,
+ itd...) Mo¿esz to zrobiæ edytorem 'ee /etc/ppp/ppp.conf'.
+
+2. uruchom program 'ppp'. Przejd¼ do trybu terminalowego (polecenie
+ 'term'). W tym momencie masz bezpo¶redni kontakt z modemem, wiêc
+ normalnie wybierz numer dialup i zaloguj siê do serwera
+ komunikacyjnego. Wydaj mu polecenie przej¶cia w tryb ppp. Powiniene¶
+ zobaczyæ co¶ takiego:
+
+ (communication server...): ppp
+
+ ppp on pico> Packet mode
+ PPP on pico>
+
+ W tym momencie jeste¶ ju¿ online! Gratulujê.
+3. Do Twojej dyspozycji s± nastêpuj±ce programy: telnet, ftp, i ssh.
+ Poniewa¿ wywo³a³e¶ 'ppp' rêcznie, wiêc blokuje Ci konsolê. Nie
+ szkodzi - masz do dyspozycji 9 kolejnych konsoli wirtualnych, po
+ których mo¿na siê poruszaæ naciskaj±c lewy Alt i klawisz funkcyjny
+ F1-F10.
+
+Jak skonfigurowaæ kartê Ethernet?
+---------------------------------
+
+Miejmy nadziejê, ¿e Twoja karta jest obs³ugiwana przez j±dro dostêpne na
+dyskietce, oraz ¿e poprawnie ustawi³e¶ jej parametry (w przypadku kart
+ISA) w edytorze UserConfig. Mo¿esz sprawdziæ, czy PicoBSD wykry³o tê kartê,
+patrz±c na komunikaty startowe ('dmesg | more').
+
+Naj³atwiejszym sposobem na skonfigurowanie dostepu LAN jest ustawienie
+parametrów w pliku konfiguracyjnym systemu ('ee /etc/rc.conf'). Znajd¼ liniê,
+która zaczyna siê od 'network_interfaces' i dopisz nazwê sterownika karty do
+listy interfejsów. Potem dodaj jeszcze jedn± liniê 'ifconfig_<nazwa>',
+która ustawi w³a¶ciwy adres IP i maskê sieci. Np.:
+
+ network_interfaces="lo0 ed0"
+ ifconfig_lo0="inet 127.0.0.1"
+ ifconfig_ed0="inet 192.168.0.1 netmask 255.255.255.0"
+
+Nastêpnie musisz ustawiæ swój domy¶lny router (jest to zazwyczaj adres IP
+routera w Twojej sieci LAN). Np.:
+
+ defaultrouter="192.168.0.100"
+
+Nastêpnie zachowujesz te informacje na dyskietce startowej przy pomocy
+polecenia 'update', i restartujesz system.
+
+Oczywi¶cie mo¿na te¿ zrobiæ to rêcznie, wydaj±c odpowiednie polecenia:
+
+ ifconfig ed0 inet 192.168.0.1 netmask 255.255.255.0
+ route add default 192.168.0.100
+
+Je¶li poprawnie wszystko ustawi³e¶, powiniene¶ byæ w stanie uzyskaæ
+odpowied¼ od swojego routera ('ping 192.168.0.100') oraz od jakiej¶
+maszyny poza Twoj± sieci±.
+
+Skad wzi±æ dodatkowe informacje?
+--------------------------------
+
+Oficjalna strona projektu PicoBSD:
+
+ http://www.freebsd.org/~picobsd/
+
+Mo¿na tam znale¼æ trochê wiêcej informacji, oraz poprawki i nowe wersje.
+
+Mi³ej zabawy!
+
+Andrzej Bia³ecki <abial@freebsd.org>
+
+$FreeBSD$
diff --git a/release/picobsd/dial/lang/boot.help.en b/release/picobsd/dial/lang/boot.help.en
new file mode 100644
index 000000000000..382222b61887
--- /dev/null
+++ b/release/picobsd/dial/lang/boot.help.en
@@ -0,0 +1,23 @@
+
++--------------------------------------------------------------------------+
+ Welcome to FreeBSD !!!
+ The system is coming up, please wait.
++--------------------------------------------------------------------------+
+
+ This is special version of FreeBSD-3.0, called PicoBSD (v.@VER@).
+
+ It allows you to connect to the Internet via dialup connection (using PPP)
+ or via Ethernet card.
+
+ You can adjust kernel parameters to match those of your hardware via
+ -c switch (boot: -c) to boot prompt. If you are booting for the first
+ time, you enter this mode automatically.
+
+ The floppy contains also some tools for remote access (telnet, ftp, SSH)
+ and local disk access (FreeBSD, DOS and Linux filesystem support).
+
+ I hope you'll enjoy it.
+
+ abial@freebsd.org
++--------------------------------------------------------------------------+
+
diff --git a/release/picobsd/dial/lang/boot.help.pl b/release/picobsd/dial/lang/boot.help.pl
new file mode 100644
index 000000000000..c52eb1191496
--- /dev/null
+++ b/release/picobsd/dial/lang/boot.help.pl
@@ -0,0 +1,23 @@
+
++----------------------------------------------------------------------+
+ Witamy we FreeBSD !!!
+ Prosze czekac. Trwa uruchamianie systemu.
++----------------------------------------------------------------------+
+
+ To jest specjalna wersja FreeBSD-3.0, zwana PicoBSD (v.@VER@).
+
+ Pozwala ona na uzyskanie polaczenia z Internetem przez protokol PPP
+ (polaczenie dialup) lub karte Ethernet.
+
+ Mozna dopasowac parametry sprzetowe podajac opcje -c przy starcie
+ systemu (boot: -c). Przy pierwszym starcie tryb ten jest uruchamiany
+ automatycznie.
+
+ Zawarte jest tu kilka narzedzi dla zdalnego dostepu (telnet, ftp, SSH)
+ oraz do obslugi lokalnej maszyny (dyskow FreeBSD, Linux i DOS).
+
+ Milego uzywania.
+
+ abial@freebsd.org
++----------------------------------------------------------------------+
+
diff --git a/release/picobsd/dial/lang/dialup.en b/release/picobsd/dial/lang/dialup.en
new file mode 100755
index 000000000000..ab1491245c02
--- /dev/null
+++ b/release/picobsd/dial/lang/dialup.en
@@ -0,0 +1,410 @@
+#!/bin/sh
+# $FreeBSD$
+set_resolv() {
+ echo ""
+ echo " Default Domain Name"
+ echo ""
+ echo "Here you should enter your default Internet domain. If your"
+ echo "provider uses something like 'www.big.isp.com', this should"
+ echo "be most probably 'big.isp.com'."
+ echo ""
+ echo "If you simply press enter here, you will have a 'mydomain.edu',"
+ echo "which is not the best idea, but may suffice for now..."
+ echo ""
+ read -p "Please enter the default domain name: " domain
+ if [ "X${domain}" = "X" ]
+ then
+ echo ""
+ echo "Fine, your domain will be 'mydomain.edu', but be aware"
+ echo "that it probably doesn't exist."
+ echo ""
+ read -p "Press any key to continue." junk
+ domain="mydomain.edu"
+ fi
+ echo ""
+ echo " DNS Server Address"
+ echo ""
+ echo "Here you should enter the numeric address of your domain name"
+ echo "server. It is needed for resolving human-readable host names"
+ echo "(such as www.freebsd.org) to machine readable IP numbers. If"
+ echo "it's not set properly, you will have to use numeric IP addresses"
+ echo "when connecting to other hosts, which is highly inconvenient."
+ echo ""
+ echo "If you simply press Enter here, we'll set it to one of root"
+ echo "DNS servers. This may not always work."
+ echo ""
+ read -p "Please enter the DNS server address in form A.B.C.D: " dns
+ if [ "X${dns}" = "X" ]
+ then
+ echo ""
+ echo "Fine, your DNS server will be 192.33.4.12, but be aware"
+ echo "that this may not always work ok."
+ echo ""
+ read -p "Press any key to continue." junk
+ dns="192.33.4.12"
+ fi
+}
+
+set_phone() {
+while [ "X${phone}" = "X" ]
+do
+ echo ""
+ echo " Phone Number"
+ echo ""
+ echo "Here you should enter the full phone number you normally"
+ echo "use to connect to your provider, with all necessary prefixes"
+ echo "attached, e.g.: 01122334455"
+ echo ""
+ read -p "Please enter the phone number: " phone
+done
+}
+
+set_port() {
+while [ "X${dev}" = "X" ]
+do
+ echo ""
+ echo " Port Number"
+ echo ""
+ echo "Here you should enter the port number, to which your modem is"
+ echo "attached. REMEMBER: COM1 is port 0 in FreeBSD, COM2 - port 1,"
+ echo "and so on. You should enter only the number, not the full name"
+ echo "of the device."
+ echo ""
+ read -p "Please enter the port number (0,1,2): " dev
+done
+}
+
+set_speed() {
+while [ "X${speed}" = "X" ]
+do
+ echo ""
+ echo " Port Speed"
+ echo ""
+ echo "Here you should choose the serial port speed."
+ echo ""
+ echo "NOTICE: port speed is NOT the same as modem speed - these are"
+ echo "different things. If your modem is capable of V.42 or MNP"
+ echo "compression, the actual speed of serial port should be set much"
+ echo "higher. E.g. for 14.4 kbps modem with compression you should"
+ echo "choose 38400, for 28.8 kbps modem with compression you should"
+ echo "choose 115200."
+ echo ""
+ echo " 1. 9600 bps"
+ echo " 2. 14400 bps"
+ echo " 3. 28800 bps"
+ echo " 4. 38400 bps (14.4 kbps modem with compression)"
+ echo " 5. 57600 bps"
+ echo " 6. 115200 bps (28.8 kbps modem with compression)"
+ echo ""
+ read -p "Please choose the port speed (1-6): " ans
+ case ${ans} in
+ 1)
+ speed=9600
+ ;;
+ 2)
+ speed=14400
+ ;;
+ 3)
+ speed=28800
+ ;;
+ 4)
+ speed=38400
+ ;;
+ 5)
+ speed=57600
+ ;;
+ 6)
+ speed=115200
+ ;;
+ *)
+ read -p "Bad value! Press enter to continue..." junk
+ unset speed
+ ;;
+ esac
+done
+}
+
+set_timeout() {
+while [ "X${timo}" = "X" ]
+do
+ echo ""
+ echo " Idle Timeout"
+ echo ""
+ echo "Here you should enter timeout (in seconds). After this time, if"
+ echo "the connection is idle, it's disconnected (to save your money :-)"
+ echo ""
+ read -p "Please enter the timeout value: " timo
+done
+}
+
+set_login() {
+while [ "X${user}" = "X" ]
+do
+ echo ""
+ echo " Login Name"
+ echo ""
+ echo "Here you should enter your login name that you normally use"
+ echo "to log in to your provider's terminal server."
+ echo ""
+ read -p "Please enter your login name: " user
+done
+}
+
+set_password() {
+while [ "X${pass}" = "X" ]
+do
+ echo ""
+ echo " Password"
+ echo ""
+ echo "Here you enter the password that you use to log in to the"
+ echo "terminal server."
+ echo ""
+ echo "WARNING: your password will be stored in readable form on the"
+ echo "floppy!!! If you don't like it... well, you must dial in manually."
+ echo "In that case abort this script (Ctrl-C). Otherwise, continue."
+ echo ""
+ stty -echo
+ read -p "Please enter your password: " pass
+ echo ""
+ read -p "Enter again your password: " pass1
+ stty echo
+ echo ""
+ if [ "X${pass}" != "X${pass1}" ]
+ then
+ echo "Passwords didn't match! Press Enter to continue..."
+ read junk
+ pass=""
+ set_password
+ fi
+done
+}
+
+set_chat() {
+echo ""
+while [ "X${chat}" = "X" ]
+do
+ echo " Type of Login Dialog"
+ echo ""
+ echo "What type of login dialog do you expect from the terminal server?"
+ echo ""
+ echo "1) ......login: ${user}"
+ echo " ...password: ********"
+ echo " (terminal server starts PPP here)"
+ echo "2) ......login: ${user}"
+ echo " ...password: ********"
+ echo " ...protocol: ppp"
+ echo " (terminal server starts PPP here)"
+ echo "3) ......username: ${user}"
+ echo " ......password: ********"
+ echo " (terminal server starts PPP here)"
+ echo "4) ......username: ${user}"
+ echo " ......password: ********"
+ echo " portX/..xxx...: ppp"
+ echo " (terminal server starts PPP here)"
+ echo "5) Use CHAP to log in."
+ echo "6) Use PAP to log in."
+ echo ""
+ read -p "Choose 1,2,3,4,5 or 6: " chat
+ case ${chat} in
+ 1)
+ chat1="TIMEOUT 10 ogin:--ogin: ${user} word: \\\\P"
+ chat2="login/password"
+ ;;
+ 2)
+ chat1="TIMEOUT 10 ogin:--ogin: ${user} word: \\\\P otocol: ppp"
+ chat2="login/password/protocol"
+ ;;
+ 3)
+ chat1="TIMEOUT 10 ername:--ername: ${user} word: \\\\P"
+ chat2="username/password"
+ ;;
+ 4)
+ chat1="TIMEOUT 10 ername:--ername: ${user} word: \\\\P port ppp"
+ chat2="username/password/port"
+ ;;
+ 5) chat1="-"
+ chat2="CHAP"
+ ;;
+ 6) chat1="-"
+ chat2="PAP"
+ ;;
+ *) echo "Bad value! Please choose 1,2,3 or 4."
+ echo ""
+ unset chat
+ unset chat2
+ ;;
+ esac
+done
+}
+
+# Main entry of the script
+
+echo ""
+echo " Welcome to The Simplest PPP Configurator! :-)"
+echo ""
+echo " Your PPP is already preconfigured, so that you can dial manually."
+echo "However, you probably noticed that it requires chatting with your modem"
+echo "and logging in every time you want to connect. It's simple and it works,"
+echo "but it's also annoying."
+echo ""
+echo "This script will try to configure your PPP so that you can run it in"
+echo "background (thus freeing the console), and log in automatically."
+echo ""
+echo "If you want to continue, press Enter, otherwise press Ctrl-C."
+echo ""
+read junk
+
+# Step through the options.
+set_phone
+set_port
+set_speed
+set_timeout
+set_login
+set_password
+set_chat
+set_resolv
+
+ans="loop_it"
+while [ "X${ans}" != "X" ]
+do
+
+echo ""
+echo " Ok. You assigned the following values:"
+echo ""
+echo " 1. Phone number: ${phone}"
+echo " 2. Port number: cuaa${dev}"
+echo " 3. Port speed: ${speed} baud"
+echo " 4. Timeout: ${timo} s"
+echo " 5. Login name: ${user}"
+echo " 6. Password: ${pass}"
+echo " 7. Chat pattern: ${chat} (${chat2})"
+echo " 8. Default domain: ${domain}"
+echo " DNS Server: ${dns}"
+echo ""
+echo "If you're satisfied with these values, just press Enter."
+read -p "Otherwise, enter the number of the option you want to change (1-8): " ans
+a="X${ans}"
+case ${a} in
+X1)
+ unset phone
+ set_phone
+ ;;
+X2)
+ unset dev
+ set_port
+ ;;
+X3)
+ unset speed
+ set_speed
+ ;;
+X4)
+ unset timo
+ set_timeout
+ ;;
+X5)
+ unset user
+ set_login
+ ;;
+X6)
+ unset pass
+ set_password
+ ;;
+X7)
+ unset chat
+ set_chat
+ ;;
+X8)
+ unset dns
+ unset domain
+ set_resolv
+ ;;
+X) ;;
+*)
+ read -p "Unknown option: ${ans}. Press enter to continue..."
+ ;;
+esac
+
+done
+
+echo ""
+echo -n "Generating /etc/ppp/ppp.conf file..."
+rm -f /etc/ppp/ppp.conf
+cp /etc/ppp/ppp.conf.template /etc/ppp/ppp.conf
+echo "" >>/etc/ppp/ppp.conf
+echo "# This part was generated with $0" >>/etc/ppp/ppp.conf
+echo "dialup:" >>/etc/ppp/ppp.conf
+echo " set line /dev/cuaa${dev}" >>/etc/ppp/ppp.conf
+echo " set speed ${speed}" >>/etc/ppp/ppp.conf
+echo " set phone ${phone}" >>/etc/ppp/ppp.conf
+echo " set authkey ${pass}" >>/etc/ppp/ppp.conf
+echo " set timeout ${timo}" >>/etc/ppp/ppp.conf
+if [ "X${chat1}" = "-" ]
+then
+ echo " set authname ${user}" >>/etc/ppp/ppp.conf
+else
+ echo " set login \"${chat1}\"" >>/etc/ppp/ppp.conf
+fi
+echo " set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0" >>/etc/ppp/ppp.conf
+
+echo " Done."
+echo -n "Generating /etc/resolv.conf..."
+echo "# This file was generated with $0">/etc/resolv.conf
+echo "domain ${domain}" >>/etc/resolv.conf
+echo "nameserver ${dns}">>/etc/resolv.conf
+echo "hostname=\"pico.${domain}\"">>/etc/rc.conf
+
+echo " Done."
+
+echo ""
+echo "REMEMBER to run /stand/update! Otherwise these changes will be lost!"
+echo ""
+echo "Please check the contents of /etc/ppp/ppp.conf, and edit it if"
+echo "necessary. When you're satisfied with it, run ppp in background:"
+echo ""
+echo " ppp -background dialup"
+echo ""
+echo "Now, if you're sure that your /etc/ppp/ppp.conf file is ok (which is"
+echo -n "probable :-) would you like to start the dialup connection now? (y/n) "
+read ans
+opts=""
+while [ "X${ans}" = "Xy" ]
+do
+ echo ""
+ if [ "X${opts}" = "X" ]
+ then
+ echo "We'll use the following arguments to 'ppp':"
+ echo ""
+ echo " ppp -background dialup"
+ echo ""
+ echo -n "Would you like to change them? (y/n) "
+ read oo
+ if [ "X${oo}" = "Xy" ]
+ then
+ read -p "Enter ppp arguments here: " opts
+ else
+ opts="-background dialup"
+ fi
+ echo ""
+ echo ""
+ fi
+ echo "Starting dialup connection. Wait until you see a 'PPP Enabled' message..."
+ echo ""
+ ppp ${opts}
+ if [ "X$?" != "X0" ]
+ then
+ echo ""
+ echo -n "Hmmm... Command failed. Try again? (y/n) "
+ read ans
+ if [ "X${ans}" != "Xy" ]
+ then
+ echo ""
+ echo "Try again later. Check also your config file (/etc/ppp/ppp.conf)"
+ echo ""
+ fi
+ else
+ echo ""
+ echo "Congratulations! You're on-line now."
+ echo ""
+ exit 0
+ fi
+done
diff --git a/release/picobsd/dial/lang/dialup.pl b/release/picobsd/dial/lang/dialup.pl
new file mode 100755
index 000000000000..1ace50f921d0
--- /dev/null
+++ b/release/picobsd/dial/lang/dialup.pl
@@ -0,0 +1,409 @@
+#!/bin/sh
+# $FreeBSD$
+set_resolv() {
+ echo ""
+ echo " Domy¶lna Nazwa Domeny"
+ echo ""
+ echo "Podaj domy¶ln± nazwê domeny Internetowej, której bêdziesz u¿ywaæ."
+ echo "Je¶li Twój provider ma nazwy typu 'www.akuku.com.pl', to bêdzie"
+ echo "to najprawdopodobniej 'akuku.com.pl'."
+ echo ""
+ echo "Je¶li po prostu naci¶niesz Enter, ustawisz (nieistniej±c±) domenê"
+ echo "'mydomain.org.pl', co nie jest najlepszym pomys³em, ale mo¿e na"
+ echo "razie wystarczyæ."
+ echo ""
+ read -p "Podaj domy¶ln± nazwê domeny: " domain
+ if [ "X${domain}" = "X" ]
+ then
+ echo ""
+ echo "Dobrze, ustawimy 'mydomain.org.pl', ale miej ¶wiadomo¶æ"
+ echo "¿e taka domena prawdopodobnie nie istnieje."
+ echo ""
+ read -p "Naci¶nij Enter" junk
+ domain="mydomain.org.pl"
+ fi
+ echo ""
+ echo " Adres Serwera DNS"
+ echo ""
+ echo "Podaj adres w postaci numerycznej serwera DNS. Jest on potrzebny"
+ echo "do zamiany nazw (takich jak www.freebsd.org.pl) na adresy IP"
+ echo "(takie jak 192.168.1.1). Je¶li nie jest to ustawione poprawnie,"
+ echo "bêdziesz musia³ pos³ugiwaæ siê adresami IP podczas ³±czenia siê"
+ echo "z innymi maszynami - jest to co najmniej niewygodne."
+ echo ""
+ echo "Je¶li po prostu naci¶niesz Enter, ustawisz (istniej±cy) serwer"
+ echo "o numerze 194.204.159.1 (w sieci TP SA)."
+ echo ""
+ read -p "Podaj adres IP serwera DNS (w postaci A.B.C.D): " dns
+ if [ "X${dns}" = "X" ]
+ then
+ echo ""
+ echo "Dobrze, ustawimy adres DNS serwera na 194.204.159.1, ale"
+ echo "niekoniecznie musi to byæ najlepszy serwer w Twojej czê¶ci sieci."
+ echo ""
+ read -p "Naci¶nij Enter..." junk
+ dns="194.204.159.1"
+ fi
+}
+set_phone() {
+while [ "X${phone}" = "X" ]
+do
+ echo ""
+ echo " Numer Telefoniczny"
+ echo ""
+ echo "Podaj numer telefoniczny, którego normalnie u¿ywasz, ¿eby"
+ echo "dodzwoniæ siê do swojego providera. Powiniene¶ podaæ pe³ny"
+ echo "numer, z ewentualnymi przedrostkami, np: 022113355"
+ echo ""
+ read -p "Podaj numer telefoniczny: " phone
+done
+}
+
+set_port() {
+while [ "X${dev}" = "X" ]
+do
+ echo ""
+ echo " Numer Portu Modemowego"
+ echo ""
+ echo "Podaj numer portu szeregowego, do którego pod³±czony jest modem."
+ echo "UWAGA: DOSowy port COM1 to port 0 (cuaa0) we FreeBSD, COM2 -"
+ echo "port 1, itd. Podaj tutaj tylko numer, a nie pe³n± nazwê urz±dzenia."
+ echo ""
+ read -p "Podaj numer portu szeregowego (0,1,2): " dev
+done
+}
+
+set_speed() {
+while [ "X${speed}" = "X" ]
+do
+ echo ""
+ echo " Prêdko¶æ Linii Szeregowej"
+ echo ""
+ echo "Wybierz prêdko¶æ linii szeregowej, której u¿ywa modem."
+ echo ""
+ echo "UWAGA: Prêdko¶æ linii szeregowej NIE jest tym samym, co prêdko¶æ"
+ echo "modemu. Je¶li Twój modem obs³uguje protokó³ V.42 lub MNP"
+ echo "(zazwyczaj tak w³a¶nie jest), prêdko¶æ linii szeregowej musi byæ"
+ echo "du¿o wiêksza od prêdko¶ci modemu. Np. dla modemów 14.4 kbps z"
+ echo "kompresj± nale¿y wybraæ prêdko¶æ 38400 bps, a dla modemów"
+ echo "28.8 kbps z kompresj± nale¿y wybraæ prêdko¶æ 115200 bps."
+ echo ""
+ echo " 1. 9600 bps"
+ echo " 2. 14400 bps"
+ echo " 3. 28800 bps"
+ echo " 4. 38400 bps (modem 14.4 kbps z kompresj±)"
+ echo " 5. 57600 bps"
+ echo " 6. 115200 bps (modem 28.8 kbps z kompresj±)"
+ echo ""
+ read -p "Wybierz prêdko¶æ linii szeregowej (1-6): " ans
+ case ${ans} in
+ 1)
+ speed=9600
+ ;;
+ 2)
+ speed=14400
+ ;;
+ 3)
+ speed=28800
+ ;;
+ 4)
+ speed=38400
+ ;;
+ 5)
+ speed=57600
+ ;;
+ 6)
+ speed=115200
+ ;;
+ *)
+ read -p "Z³a warto¶æ! Naci¶nij Enter..." junk
+ unset speed
+ ;;
+ esac
+done
+}
+
+set_timeout() {
+while [ "X${timo}" = "X" ]
+do
+ echo ""
+ echo " Czas roz³±czenia"
+ echo ""
+ echo "Podaj czas (w sekundach), po którym, je¶li nie ma ruchu na ³±czu,"
+ echo "nast±pi automatyczne roz³±czenie. To pomaga w oszczêdzaniu :-)"
+ echo ""
+ read -p "Podaj czas roz³±czenia: " timo
+done
+}
+
+set_user() {
+while [ "X${user}" = "X" ]
+do
+ echo ""
+ echo " Nazwa U¿ytkownika"
+ echo ""
+ echo "Podaj nazwê u¿ytkownika (login name), której normalnie u¿ywasz"
+ echo "do zalogowania siê do serwera komunikacyjnego providera."
+ echo ""
+ read -p "Podaj nazwê u¿ytkownika: " user
+done
+}
+
+set_pass() {
+while [ "X${pass}" = "X" ]
+do
+ echo ""
+ echo " Has³o"
+ echo ""
+ echo "Podaj has³o, którego u¿ywasz do zalogowania siê do providera."
+ echo ""
+ echo "UWAGA: Has³o to zostanie zapisane w czytelnej postaci na"
+ echo "dyskietce!!! Je¶li tego nie chcesz... bêdziesz musia³ logowaæ siê"
+ echo "rêcznie, tak jak dotychczas. W tym przypadku przerwij ten skrypt"
+ echo "przez Ctrl-C."
+ echo ""
+ stty -echo
+ read -p "Podaj swoje has³o: " pass
+ echo ""
+ read -p "Podaj powtórnie swoje has³o: " pass1
+ stty echo
+ echo ""
+ if [ "X${pass}" != "X${pass1}" ]
+ then
+ echo "Has³a nie pasuj± do siebie. Naci¶nij Enter..."
+ pass=""
+ read junk
+ set_pass
+ fi
+done
+}
+
+set_chat() {
+echo ""
+while [ "X${chat}" = "X" ]
+do
+ echo " Rodzaj dialogu podczas logowania siê"
+ echo ""
+ echo "Jak normalnie przebiega proces logowania siê do serwera"
+ echo "komunikacyjnego?"
+ echo ""
+ echo "1) ......login: ${user}"
+ echo " ...password: ********"
+ echo " (tutaj startuje PPP)"
+ echo ""
+ echo "2) ...username: ${user} (TP S.A.)"
+ echo " ...password: ********"
+ echo " (tutaj startuje PPP)"
+ echo ""
+ echo "3) ......username: ${user} (NASK)"
+ echo " ......password: ********"
+ echo " portX/..xxx...: ppp"
+ echo " (tutaj startuje PPP)"
+ echo ""
+ echo "4) Zastosuj CHAP"
+ echo ""
+ echo "5) Zastosuj PAP"
+ echo ""
+ read -p "Wybierz 1,2,3,4 lub 5: " chat
+ case ${chat} in
+ 1)
+ chat1="TIMEOUT 10 ogin:--ogin: ${user} word: \\\\P"
+ chat2="login/password"
+ ;;
+ 2)
+ chat1="TIMEOUT 10 ername:--ername: ${user} word: \\\\P"
+ chat2="TP SA - username/password"
+ ;;
+ 3)
+ chat1="TIMEOUT 10 ername:--ername: ${user} word: \\\\P port ppp"
+ chat2="NASK - username/password/port"
+ ;;
+ 4) chat1="-"
+ chat2="CHAP"
+ ;;
+ 5) chat1="-"
+ chat2="PAP"
+ ;;
+ *) echo "Z³a warto¶æ! Musisz wybraæ 1,2 lub 3."
+ echo ""
+ unset chat
+ unset chat2
+ ;;
+ esac
+done
+}
+
+
+# Main entry of the script
+
+echo ""
+echo " Witamy w Automatycznym Konfiguratorze PPP! :-)"
+echo ""
+echo " PPP jest ju¿ wstêpnie skonfigurowane, tak ¿e mo¿na rêcznie wybieraæ"
+echo "numer i rêcznie logowaæ siê do serwera komunikacyjnego. Jest to jednak"
+echo "dosyæ uci±¿liwy sposób na d³u¿sz± metê."
+echo ""
+echo "Ten skrypt postara siê stworzyæ tak± konfiguracjê PPP, ¿eby umo¿liwiæ"
+echo "automatyczne wybieranie numeru i logowanie siê, a ponadto pozwoli na"
+echo "uruchamianie ppp w tle - nie zajmuje ono wówczas konsoli."
+echo ""
+echo "Je¶li chcesz kontynuowaæ, naci¶nij Enter, je¶li nie - Ctrl-C."
+echo ""
+read junk
+# Step through the options
+set_phone
+set_port
+set_speed
+set_timeout
+set_user
+set_pass
+set_chat
+set_resolv
+
+ans="loop_it"
+while [ "X${ans}" != "X" ]
+do
+
+echo ""
+echo " Ustawione zosta³y nastêpuj±ce parametry:"
+echo ""
+echo " 1. Numer telef.: ${phone}"
+echo " 2. Numer portu: cuaa${dev}"
+echo " 3. Prêdko¶æ portu: ${speed}"
+echo " 4. Czas roz³±cz.: ${timo} s"
+echo " 5. U¿ytkownik: ${user}"
+echo " 6. Has³o: ${pass}"
+echo " 7. Typ dialogu: ${chat} (${chat2})"
+echo " 8. Nazwa domeny: ${domain}"
+echo " Serwer DNS: ${dns}"
+echo ""
+echo "Je¶li te warto¶ci s± poprawne, po prostu naci¶nij Enter"
+read -p "Je¶li nie, podaj numer opcji, któr± chcesz zmieniæ (1-8): " ans
+
+a="X${ans}"
+case ${a} in
+X1)
+ unset phone
+ set_phone
+ ;;
+X2)
+ unset dev
+ set_port
+ ;;
+X3)
+ unset speed
+ set_speed
+ ;;
+X4)
+ unset timo
+ set_timeout
+ ;;
+X5)
+ unset user
+ set_user
+ ;;
+X6)
+ unset pass
+ set_pass
+ ;;
+X7)
+ unset chat
+ unset chat1
+ unset chat2
+ set_chat
+ ;;
+X8)
+ unset domain
+ unset dns
+ set_resolv
+ ;;
+X)
+ ;;
+*)
+ read -p "Z³y numer opcji! Naci¶nij Enter..." junk
+ ans="wrong"
+ ;;
+esac
+done
+
+echo ""
+echo -n "Generowanie /etc/ppp/ppp.conf file..."
+rm -f /etc/ppp/ppp.conf
+cp /etc/ppp/ppp.conf.template /etc/ppp/ppp.conf
+echo "" >>/etc/ppp/ppp.conf
+echo "# This part was generated with $0" >>/etc/ppp/ppp.conf
+echo "dialup:" >>/etc/ppp/ppp.conf
+echo " set line /dev/cuaa${dev}" >>/etc/ppp/ppp.conf
+echo " set phone ${phone}" >>/etc/ppp/ppp.conf
+echo " set authkey ${pass}" >>/etc/ppp/ppp.conf
+echo " set timeout ${timo}" >>/etc/ppp/ppp.conf
+if [ "X${chat1}" = "-" ]
+then
+ echo "set authname ${user}" >>/etc/ppp/ppp.conf
+else
+ echo " set login \"${chat1}\"" >>/etc/ppp/ppp.conf
+fi
+echo " set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0" >>/etc/ppp/ppp.conf
+
+echo " Zrobione."
+
+echo -n "Generowanie /etc/resolv.conf..."
+echo "# This file was generated with $0">/etc/resolv.conf
+echo "domain ${domain}" >>/etc/resolv.conf
+echo "nameserver ${dns}">>/etc/resolv.conf
+echo "hostname=\"pico.${domain}\"">>/etc/rc.conf
+echo " Zrobione."
+
+echo ""
+echo "Ok. Sprawd¼ zawarto¶æ /etc/ppp/ppp.conf, i popraw go je¶li to konieczne."
+echo "Nastêpnie mo¿esz wystartowaæ ppp w tle:"
+echo ""
+echo " ppp -background dialup"
+echo ""
+echo "PAMIÊTAJ, ¿eby uruchomiæ /stand/update ! Inaczej zmiany nie zostan± zapisane"
+echo "na dyskietce!"
+echo ""
+echo "Ok. Je¶li Twój plik /etc/ppp/ppp.conf jest prawid³owy (co jest dosyæ"
+echo -n "prawdopodobne :-), czy chcesz teraz uruchomiæ po³±czenie dialup? (t/n) "
+read ans
+opts=""
+while [ "X${ans}" = "Xt" ]
+do
+ echo ""
+ if [ "X${opts}" = "X" ]
+ then
+ echo "Wystartujemy 'ppp' z poni¿szymi opcjami:"
+ echo ""
+ echo " ppp -background dialup"
+ echo ""
+ echo -n "Czy chcesz je zmienic?? (t/n) "
+ read oo
+ if [ "X${oo}" = "Xt" ]
+ then
+ read -p "Podaj opcje ppp: " opts
+ else
+ opts="-background dialup"
+ fi
+ echo ""
+ echo ""
+ fi
+ echo "Uruchamiam po³±czenie dialup. Proszê czekaæ dopóki nie pojawi siê"
+ echo "komunikat 'PPP Enabled'..."
+ echo ""
+ ppp -background dialup
+ if [ "X$?" != "X0" ]
+ then
+ echo -n "Po³±czenie nie powiod³o siê. Spróbowaæ jeszcze raz? (t/n) "
+ read ans
+ if [ "X${ans}" != "Xt" ]
+ then
+ echo "Spróbuj pó¼niej. Sprawd¼ równie¿ plik konfiguracyjny /etc/ppp/ppp.conf."
+ echo ""
+ fi
+ else
+ echo ""
+ echo "Gratulujê! Jeste¶ on-line."
+ echo ""
+ exit 0
+ fi
+done
diff --git a/release/picobsd/dial/lang/hosts.en b/release/picobsd/dial/lang/hosts.en
new file mode 100644
index 000000000000..53f13bab8b37
--- /dev/null
+++ b/release/picobsd/dial/lang/hosts.en
@@ -0,0 +1,5 @@
+# $FreeBSD$
+# This file should contain the addresses and aliases
+# for local hosts that share this file.
+127.0.0.1 localhost localhost.mydomain.edu
+127.0.0.1 pico.mydomain.edu
diff --git a/release/picobsd/dial/lang/hosts.pl b/release/picobsd/dial/lang/hosts.pl
new file mode 100644
index 000000000000..89081d798683
--- /dev/null
+++ b/release/picobsd/dial/lang/hosts.pl
@@ -0,0 +1,5 @@
+# $FreeBSD$
+# This file should contain the addresses and aliases
+# for local hosts that share this file.
+127.0.0.1 localhost localhost.mydomain.org.pl
+127.0.0.1 pico.mydomain.org.pl
diff --git a/release/picobsd/dial/lang/login.en b/release/picobsd/dial/lang/login.en
new file mode 100755
index 000000000000..e3ceeee2dd3e
--- /dev/null
+++ b/release/picobsd/dial/lang/login.en
@@ -0,0 +1,9 @@
+#!/bin/sh
+# $FreeBSD$
+
+if [ "$2" != "root" ]
+then
+ exit
+fi
+cat /etc/motd
+HOME=/root exec -sh
diff --git a/release/picobsd/dial/lang/login.pl b/release/picobsd/dial/lang/login.pl
new file mode 100755
index 000000000000..28df1b7f8157
--- /dev/null
+++ b/release/picobsd/dial/lang/login.pl
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+if [ "$2" != "root" ]
+then
+ exit
+fi
+cat /etc/motd
+LANG=pl; export LANG
+HOME=/root exec -sh
diff --git a/release/picobsd/dial/lang/motd.en b/release/picobsd/dial/lang/motd.en
new file mode 100644
index 000000000000..b286a414f5ee
--- /dev/null
+++ b/release/picobsd/dial/lang/motd.en
@@ -0,0 +1,16 @@
+==================================================
+ )\_)\
+PicoBSD @VER@ (DIALUP) (o,o)
+ __ \~/
+Welcome to PicoBSD! -->====\
+ ~~ d d
+You can find a short description of the picoBSD
+system in file /README. You can view it using
+"ee /README" or "more /README". There is also 'help'
+command which gives short description of each program.
+
+Run 'dialup' script to additionaly configure PPP
+(including automatic dialing and background operation).
+
+For more info see http://www.freebsd.org/~picobsd.
+
diff --git a/release/picobsd/dial/lang/motd.pl b/release/picobsd/dial/lang/motd.pl
new file mode 100644
index 000000000000..791af1bd1b5e
--- /dev/null
+++ b/release/picobsd/dial/lang/motd.pl
@@ -0,0 +1,16 @@
+=======================================================
+ )\_)\
+PicoBSD @VER@ (DIALUP) (o,o)
+ __ \~/
+Witamy w PicoBSD! -->====\
+ ~~ d d
+W glownym katalogu w pliku README znajdziesz picoBSD
+krotki opis systemu. Mozesz go obejrzec przy pomocy
+"more /README" lub "ee /README". Mozesz tez uzyskac
+krotki opis kazdego polecenia podajac 'help polecenie'.
+
+Uruchom skrypt 'dialup', zeby w pelni skonfigurowac PPP
+(wraz z automatycznym laczeniem sie i praca w tle).
+
+Wiecej informacji znajdziesz na http://www.freebsd.org/~picobsd.
+
diff --git a/release/picobsd/doc/src/Makefile b/release/picobsd/doc/src/Makefile
new file mode 100644
index 000000000000..c5f4aeb0836e
--- /dev/null
+++ b/release/picobsd/doc/src/Makefile
@@ -0,0 +1,17 @@
+#
+# $FreeBSD$
+#
+
+.include "../../Version"
+
+DATE!="date"
+
+DOCS= bugs.html faq.html hardware.html how2build.html \
+ intrinsics.html intro.html TODO.html installflp.html
+
+all: ../../Version
+ for i in ${DOCS}; \
+ do \
+ cat $${i}|sed -e 's/@VER@/${VER}/g' \
+ -e 's/@DATE@/${DATE}/g' >../$${i}; \
+ done
diff --git a/release/picobsd/doc/src/TODO.html b/release/picobsd/doc/src/TODO.html
new file mode 100644
index 000000000000..c2bbf07e34a0
--- /dev/null
+++ b/release/picobsd/doc/src/TODO.html
@@ -0,0 +1,154 @@
+<html>
+<! $FreeBSD$ >
+<body>
+<h1><center> Small FreeBSD ToDo List.
+</center></h1>
+
+<p>This list represents various tasks which are being collected from
+discussions on freebsd-small, and which represent the general
+direction and needs of using FreeBSD for small installations.</p>
+
+<p>The tasks are arranged by how important they are to the overall
+idea and goals of the project. If you are interested in doing some
+part of the work, please contact the coordinator of PicoBSD project
+(<A HREF="mailto:abial@freebsd.org">Andrzej Bialecki</a>).</p>
+
+<hr>
+
+<h2>Short term tasks:</h2>
+
+<ul>
+<li>
+Eliminate need for patching FreeBSD source tree - either by
+keeping our own version of Makefiles, or by adding (many) knobs to
+the standard ones. (NOTE: this will be resolved in v. 0.45).
+</li>
+<li>
+Provide options for building separate kernel and FS images of
+various sizes.
+</li>
+<li>
+Add some "wizards" to help people new to Unix configure "dialup"
+and "net" for most common tasks.
+</li>
+<li>
+Replace most of currently used scripts with Makefiles.
+(NOTE: this will be resolved in v. 0.45).
+</li>
+<li>
+Add simple authentication module to oinit.
+</li>
+<li>
+Fix kzip to be able to produce kzip'ped ELF kernels.
+(NOTE: currently we work around it by using kzipped /boot/loader).
+</li>
+<li>
+Write better documentation. This is very important - the most
+common configurations should be described in detail, step by step.
+</li>
+<li>
+Collect our experiences with using FreeBSD with SBCs, flash disks
+etc, and write a short practical guide to embedding FreeBSD.
+</li>
+</ul>
+<hr>
+
+<h2>Medium term tasks:</h2>
+
+<ul>
+<li>
+Change currently used crunched binaries to something more flexible
+- as it is now, even small change in set of programs requires
+rebuilding of the whole image.
+</li>
+<li>
+Change the building process so that it allows to easily choose
+(with finer granularity) needed components of the target system.
+</li>
+<li>
+Make use of recently added KLD to allow for easy adding and
+removing drivers when running stripped kernels.
+</li>
+<li>
+Investigate pros and cons of using the new boot/loader together
+with ELF kernels.
+(NOTE for v.0.43: it was simply mandatory to start to use it :-)
+</li>
+<li>
+Provide options for building systems which operate from
+(basically) read-only media, such as CD-ROM or flash disk. Such
+system doesn't need to keep all root FS in memory, but only small
+fraction of it for /tmp and /var.
+</li>
+<li>
+Integrate DHCP into "dialup" version.
+</li>
+<li>
+Rework oinit to be more modular, and write additional modules
+(remote access, SNMP (?), authentication, shell(), configuration
+editor).
+</li>
+<li>
+Provide a remote access (telnetd/login/shell) module for the
+"router" version. Make the shell() module more predictable and
+compatible with common sense :-)
+</li>
+<li>
+At last prepare usable version of ISP floppy, and test it (some
+basic tests with server PPP). This involves among others a version
+of PPP which supports Radius.
+</li>
+</ul>
+
+<hr>
+
+<h2>Long term tasks:</h2>
+
+<ul>
+<li>
+Either port ROMfs from Linux, or write our own replacement for it.
+</li>
+<li>
+Describe the configuration tasks and parameters of PicoBSD systems
+in terms of hierarchy of categories - this is needed to start
+working on the next two points.
+</li>
+<li>
+Design a flexible and efficient scheme (not necessarily compatible
+with currently used set of shell scripts) for storing and editing
+system configuration in some form of hierarchical DB.
+</li>
+<li>
+Design a user interface for configuration of system parameters
+and services, meeting the following requirements: hierachical,
+logical, helpful (hinting), providing ability to automate certain
+tasks.
+</li>
+<li>
+Reduce memory footprint.
+</li>
+<li>
+Add other language versions.
+</li>
+<li>
+Throw some more effort in porting the newer version of W (graphical
+UI), so that it uses VESA color modes. IMHO it's worth it.
+</li>
+</ul>
+
+<hr>
+
+<h2>Other half-baked ideas...</h2>
+
+<p>(fill this in :-)</p>
+
+<hr>
+Last modified:
+@DATE@
+
+
+<p><i>Send your comments, ideas, and most importantly the code itself, to
+<A HREF="mailto:abial@freebsd.org">abial@freebsd.org</a>.</i></p>
+
+</body>
+</html>
diff --git a/release/picobsd/doc/src/UCI.html b/release/picobsd/doc/src/UCI.html
new file mode 100644
index 000000000000..5c0caaab5051
--- /dev/null
+++ b/release/picobsd/doc/src/UCI.html
@@ -0,0 +1,960 @@
+<html>
+<! $FreeBSD$ >
+<body>
+<h1><center> Unified Configuration Interface Project
+</center></h1>
+
+<p>The idea behind this project is to completely replace currently
+used configuration approach, which is based on several shell scripts, and to
+provide ability to change system behaviour basing on set of well-defined
+parameters' hierarchy. One of the goals is also to provide an object
+oriented model of the OS management and structure, instead of currently
+used (inconsistent) procedural model of system/service startup/shutdown.</p>
+
+<p>This project involves such issues as:
+<ul>
+<li>
+providing consistent view of the system and its functional subsystems as
+a set of interrelated objects equipped with certain properties.
+</li>
+<li>
+providing global approach to user interface, either command-line or with GUI
+front-ends.
+</li>
+<li>
+managing system resources and subsystems. This includes managing
+static and dynamic interdependencies between subsystems, ability to
+upgrade/downgrade specific subsystems on-the-fly.
+</li>
+</ul>
+</p>
+
+<p><i><b>This is work in progress</b> - I'm aware that many pieces
+are either completely missing or misplaced. Please send any comments and
+changes you seem appropriate either directly to me, or better to
+freebsd-small@freebsd.org. I'll gladly welcome anyone who can help with
+design and/or implementation.</i></p>
+
+
+<hr>
+
+<h1><center> Unified Configuration Interface
+</center></h1>
+
+<ul>
+<li>
+<p>Let's first introduce the following terms:
+<ul>
+<li>
+<b>management base</b> - the actual structure holding configuration and
+information data according to defined structure. This structure will most
+probably have a form of tree (possibly with cross-branch links or some other
+mechanism representing mutual dependencies) - the way it's stored is
+something which needs to be discussed.
+</li>
+<li>
+<b>user interface</b> - a method (and agent) for presenting data stored in
+management base in such a way that it can be viewed and modified by
+legitimate users.
+</li>
+<li>
+<b>system monitor</b> - an entity performing actual configuration and monitoring
+tasks, from one side dealing with management base, and from the other
+dealing with the system resources and subsystems, and from yet another dealing
+either directly with the user (thus acting as a user interface),
+or passing requests to other entity which acts as user interface.
+</li>
+<li>
+<b>subsystem</b> - a package containing programs, configuration data, as well
+as installing/deinstalling/start/stop stubs, which form together one logical
+entity performing specific services on behalf of the system. Each subsystem
+is viewed as an object with specific properties, dependencies, which is able
+to generate events, service general requests common to all such subsystems,
+and provide specific services to other subsystems.
+</li>
+</ul>
+</li>
+<li>
+<p>One possible approach to storing the management data is to use already
+existing framework known as MIB, as defined in applicable RFCs.</p>
+
+<p>This approach has several advantages: it represents well thought-out work
+of many experienced individuals and teams, it has already proven to be
+useful, it's widely used and accepted, it's easily extensible, it's able to
+represent quite complicated objects, etc.</p>
+
+<p>It has some drawbacks, as well: e.g. there is no standard mechanism for
+representing events and indirectly related objects, it tends to create
+deep and narrow trees which require to descent several levels to change some
+commonly used parameters, it doesn't say anything about the mutual
+dependencies between objects and parameters (except parent-child-sibling),
+and about required sequence to properly set their parameters, etc.</p>
+
+<p>These issues are not directly addressed in standards, and real
+implementations (known to me) have to implement these additional mechanisms
+"behind the scenes", so that their workings are not obvious nor easily
+accessible (let alone changeable).</p>
+
+<p>So, if we decide to use it, we need to address these issues somehow.
+The next point presents one possible approach to this dilemma.</p>
+</li>
+<li>
+<p>The term "object" used in the following discussion represents a functional
+subsystem, such as system service, usually performed by some specific
+process (or, a set of global system parameters, in which case the system
+monitor agent is the service itself). </p>
+
+<p>Each object represented in management base can be characterized by
+following properties:
+<ul>
+<li>
+its internal state, possibly consisting of several parameters and currently
+performed functions, but represented to the rest of the system as a symbolic
+state, one of set of states common to all objects.
+</li>
+<li>
+a temporary space for new sets of parameters, which are being supplied by
+other subsystems, prior to their actual application,
+</li>
+<li>
+FSM definition, describing state transitions in reaction to received events,
+</li>
+<li>
+list of events it can generate and accept,
+</li>
+<li>
+list of dependencies on other objects' states and services,
+</li>
+<li>
+list of requests it can handle,
+</li>
+<li>
+list of parameters it can accept and/or provide, with their valid ranges.
+</li>
+</ul>
+</p>
+
+<p>A few words on system startup: the system startup routines should ensure
+that dependencies can be unwound into linear, ordered list. If it's not
+possible, they should detect possible deadlocks at runtime, and act as an
+arbiter between conflicting parties (or signal an error). In case of
+unsatisfied dependency on some missing subsystem, the system monitor will
+act appropriately as described below (in paragraph on request handling).</p>
+
+<p>The <b>set of symbolic states</b> may consist of the following states,
+depicting object's current internal state (as described by its FSM):
+
+<center><table border>
+<tr><th>Name</th><th>Meaning</th></tr>
+<tr>
+<td>INIT</td><td>the subsystem is initializing itself, possibly loading
+necessary data and binaries from permanent storage.</td>
+</tr>
+<tr>
+<td>CHECK</td><td>performing consistency check on newly supplied parameter values</td>
+</tr>
+<tr>
+<td>READY</td><td>ready to start performing its primary function, but not started</td>
+</tr>
+<tr>
+<td>START</td><td>start-up tasks (related to its primary function, as opposed
+to INIT which is related to its own initialization)</td>
+</tr>
+<tr>
+<td>STOP</td><td>stop (shutdown) tasks (when the object intends to stop
+performing its function). This can involve unloading data and binaries from
+main memory.</td>
+</tr>
+<tr>
+<td>RUN</td><td>primary (work) phase</td>
+</tr>
+<tr>
+<td>IDLE</td><td>waiting for some external event to happen</td>
+</tr>
+<tr>
+<td>BUSY</td><td>the subsystem is busy (either with performing some
+high-priority task, or just simply hung), and cannot be interrupted without
+complete restart,</td>
+</tr>
+<tr>
+<td>ERROR</td><td>this object is either improperly configured, or
+malfunctioning</td>
+</tr>
+<tr>
+<td>(other...)</td><td>(other...)</td>
+</tr>
+</table></center>
+</p>
+
+<p>The <b>set of possible actions</b> may include the following actions:</p>
+
+<center><table border>
+<tr><th>Name</th><th>Meaning</th></tr>
+<tr>
+<td>LIST_EV_REQ</td><td>get list of events the subsystem can generate</td>
+</tr>
+<tr>
+<td>LIST_ACT_REQ</td><td>get list of actions the subsystem can respond to</td>
+</tr>
+<tr>
+<td>GET_DEF_REQ</td><td>get definition of given parameter (the arguments, and
+valid ranges)</td>
+</tr>
+<tr>
+<td>SET_REQ</td><td>set given parameter to given value (this value will
+be used only after COMMIT_REQ)</td>
+</tr>
+<tr>
+<td>GET_REQ</td><td>get currently used value of given parameter</td>
+</tr>
+<tr>
+<td>COMMIT_REQ</td><td>commit changes supplied in last transaction to currently
+used set of parameters</td>
+</tr>
+<tr>
+<td>ROLLBACK_REQ</td><td>revert last commit</td>
+</tr>
+<tr>
+<td>INIT_REQ</td><td>perform initialization tasks</td>
+</tr>
+<tr>
+<td>START_REQ</td><td>start performing primary function</td>
+</tr>
+<tr>
+<td>STOP_REQ</td><td>stop performing primary function</td>
+</tr>
+<tr>
+<td>RESTART_REQ</td><td>restart operation, possibly forcefully</td>
+</tr>
+<tr>
+<td>NOTIFY_REQ</td><td>notify me of any changes in your state</td>
+</tr>
+<tr>
+<td>CHECK_REQ</td><td>perform self-consistency check</td>
+</tr>
+<tr>
+<td>UPGRADE_REQ</td><td>upgrade the subsystem - this possibly involves
+downloading necessary pieces via network to permanent storage area. The
+upgrade process should be transactional, and should save the older version
+of the subsystem in case the DOWNGRADE_REQ should be issued.</td>
+</tr>
+<tr>
+<td>DOWNGRADE_REQ</td><td>downgrade the subsystem - restore the previous
+version of the subsystem from the copy on permanent storage.</td>
+</tr>
+<tr>
+<td>UNINSTALL_REQ</td><td>uninstall the subsystem completely - possibly
+freeing the space on permanent storage.</td>
+</tr>
+<tr>
+<td>(other...)</td><td>(other...)</td>
+</tr>
+</table></center>
+<p><i>(Each request includes source service identifier and credentials of
+the sender)</i></p>
+
+<p>The <b>set of events</b> which can be generated by subsystems may include
+the following:</p>
+
+<center><table border>
+<tr><th>Name</th><th>Meaning</th></tr>
+<tr>
+<td>EV_ACK</td><td>positive acknowledge of the last operation</td>
+</tr>
+<tr>
+<td>EV_NACK</td><td>negative acknowledge of the last operation</td>
+</tr>
+<tr>
+<td>EV_CHANGE</td><td>change notification (includes the name of changed
+parameter, and/or FSM state change)</td>
+</tr>
+<tr>
+<td>EV_DEP</td><td>signal the dependency on another subsystem - ask for
+existence of the service. Probably there should be two types of the dependency:
+a soft one (where the subsystem can still function even if the dependency is
+unresolved) and a hard one (when the existence and proper functioning of the
+other subsystem is mandatory for its function).</td>
+</tr>
+<tr>
+<td>(other...)</td><td>(other...)</td>
+</tr>
+</table></center>
+
+<p>One of event attributes can be a flag which says that this particular event
+is a directed, or broadcast message. In case of directed message, it should
+be forwarded only to interested parties. Broadcast message is sent to all
+subsystems.</p>
+
+<p>System monitor agent will process these events and route them to
+appropriate subsystems which are registered with it. Generally, if some
+subsystem is dependent on some other, it will want to also receive all events
+generated by the other subsystem.</p>
+
+<p>In case the subsystem
+is missing, and the system monitor received events signalling that some other
+subsystem is depending on it, the system monitor should arrange either for
+installing necessary pieces from some media (be it permanent storage, or the
+network), or to send an EV_NACK to the requesting subsystem. It's the
+responsibility of the requesting subsystem to deal with such case
+appropriately to the type of dependency (i.e. either "hard" or "soft").
+
+<p>Ideally, the system monitor agent will be equipped with routines to
+serialize the management data into human-readable form, so that it's easily
+stored, backed up, and repaired in case of inconsistencies.</p>
+</li>
+<li>
+<p>Actual user interface is still quite another story: I've seen UIs which
+merely followed the standard MIBs, and menus were composed of actual OID
+numbers plus DESCRIPTION field. In my experience, they are (barely)
+acceptable, though due to the usual width and depth of MIB trees you had to
+traverse several levels down and up in order to change some (protocol-wise)
+related parameters.</p>
+
+<p>More acceptable UI would collect interrelated items under common menu
+entries, irrespectibly of their actual position in the MIB tree.</p>
+
+<p>A worthwhile goal to pursue is to create such an UI which could guide
+you through the most common configuration tasks, while at the same time
+allowing for unrestricted and quick use by power users. This can be done
+either as a set of configuration "wizards" or extensive hinting, command
+completion, etc.</p>
+</li>
+<li>
+<p>The management database should be easily exportable via standard
+protocols, such as SNMP or LDAP.</p>
+
+<p>Most known to me (if not all) implementations of agents for these
+protocols are (contrary to their name) quite heavy-weight - so their use
+should be either optional, or replaced with some other light-weight
+protocol and a proxy agent running on other machine. One example of
+such proxy agent is existing UCD-SNMP implementation which in
+significant part follows the sysctl(3) tree, merely exporting it as
+a part of the MIB trees.</p>
+
+<p>It's worthwhile to consider also use of other protocols such as
+DHCP (and BOOTP), Service Location Protocol (SLP - RFC2165) for easy
+integration with LAN resources, easy initial configuration, and peer
+discovery.</p>
+</li>
+<li>
+<p>All operations performed by system monitor agent should be transactional,
+i.e. it should be possible to commit a set of changes as one logical entity,
+and be sure that either it's applied in whole, or not at all. This includes
+also ability to abort processing in the middle.</p>
+
+<p>This probably means that each object (subsystem) should be able to store
+not only its current configuration data, but also the newly supplied config
+data that are to be applied after the transaction ends successfuly.</p>
+
+<p>Operations should be verified against allowed values, as well as against
+allowed credentials, and basing on this either committed or aborted.</p>
+</li>
+<li>
+<p>A few notes on possible implementation of system monitor:</p>
+<ul>
+<li>
+let's assume that all configuration information is read on startup
+by some specialized daemon (this can be part of init(8) as well),
+which then performs role of communication agent through which passes
+all configuration information, be it request for change, request
+for info, request for start / shutdown, or notification about the change.
+</li>
+<li>
+configuration information itself is stored either in binary database, or as
+a filesystem hierachy mimicking configuration items hierarchy.
+</li>
+<li>
+each user-level program performing some task (such as routing daemon, inetd
+etc) is either equipped with the ability to communicate with config agent, or
+is relinked with special stub which fakes to the program necessary config
+files and events (such as signals to reread configuration).
+<p>This probably means also that some libc routines would have to be replaced,
+because they assume reading configuration from certain disk files.</p>
+
+<p>Since each such subsystem needs to implement some common actions such as
+installing, deinstalling, start/stop etc, we could use already present
+system of packages (with some minor modifications) to easily achieve
+part of the goals (i.e. install/deinstall/upgrade/downgrade/stop/start).</p>
+</li>
+<li>
+each subsystem performing some task requests its initial config data
+from system monitor, at the same time registering with it to receive
+configuration events, such as request to re-read data, to provide currently
+used config data, return status, react for signals, restarts, etc...
+</li>
+<li>
+system monitor acts as a meeting point for all producers and consumers
+of events and config data. It needs to maintain a table of registered
+subsystems, set of events they provide, set of events they want to receive,
+etc.. Basing on this table, it routes appropriate information to
+appropriate parties.
+</li>
+<li>
+user interface is then just one of clients of system monitor, albeit possessing
+special privileges.
+</li>
+<li>
+one of important tasks of system monitor, in case given
+object (subsystem) registers with it to be notified about certain events, is
+to ensure that such type of event can be possibly generated. This is to
+prevent subsystems from waiting for events coming from other non-existent
+subsystems. See the discussion above on satisfying dependencies.
+</li>
+</ul>
+<i><p>NOTE: this is one possible approach - a centralized one. It's worth to
+consider other approach, distributed, in which case each object (subsystem)
+sends and listens to the data at a meeting point specific to each other
+object. This eliminates (or drastically minimizes) the role of system
+monitor which is a single point of failure in centralized case.</p></i>
+</li>
+</ul>
+
+<hr>
+
+<p>Here is my initial proposal for the User Interface hierarchy:</p>
+
+<ul>
+<li>
+System configuration.
+ <ol>
+ <li>
+ Boot device and file <br>
+ <small>Name of the boot device (possibly networked) and boot
+ image.</small>
+ <ol>
+ <li>
+ (Enumeration of available devices)
+ <ol>
+ <li>
+ (Enumeration of available files)
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ Config file <br>
+ <small>Configuration file management - loading and saving, either
+ local or remote (if applicable). </small>
+ <ol>
+ <li>
+ Load / Save
+ <ol>
+ <li>
+ Source / Destination <br>
+ (Enumeration of available storage places, possibly
+ networked)
+ </li>
+ </ol>
+ </li>
+ <li>
+ Edit directly (geek mode)
+ </li>
+ </ol>
+ </li>
+ <li>
+ Subsystems <br>
+ <ol>
+ <li>
+ Module management <br>
+ <small>Optional hardware drivers and protocol modules
+ management.</small>
+ <ol>
+ <li>
+ (Enumeration of available loadable modules)
+ <ol>
+ <li>
+ Load / unload / status
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ Package management<br>
+ <small>Management of basic and optional system services.</small>
+ <ol>
+ <li>
+ (Enumeration of locally available packages)
+ <ol>
+ <li>
+ Start / Stop / Status / Configure
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ Default source of service packages<br>
+ <small>Where to automatically get the missing packages from.
+ </small>
+ <ol>
+ <li>
+ (Enumeration of available media) <br>
+ (local and remote disks, ftp, http)
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ Resource management
+ <ol>
+ <li>
+ Memory consumption <br>
+ <small>This is entry point to a subtree, which allows to set
+ up various resource limits for subsystems, services and
+ processes.</small>
+ </li>
+ <li>
+ Space consumption<br>
+ <small>(Things like minimal free space on permanent storage..)
+ </small>
+ </li>
+ <li>
+ Task priorities
+ <small>This includes not only currently running tasks, but all
+ which can possibly be started.</small>
+ <ol>
+ <li>
+ List / Modify
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ System console
+ </li>
+ <li>
+ Virtual consoles (if applicable)
+ </li>
+ <li>
+ System Date / Time Zone
+ </li>
+ <li>
+ Banner
+ </li>
+ <li>
+ Logging
+ <ol>
+ <li>
+ Local logging
+ </li>
+ <li>
+ Remote logging
+ </li>
+ </ol>
+ </li>
+ </ol>
+</li>
+<li>
+Network configuration.
+ <ol>
+ <li>
+ Hostname and Domain
+ </li>
+ <li>
+ Interfaces
+ <ol>
+ <li>
+ (Enumeration of physical interfaces) <br>
+ (Enumeration of virtual interfaces, if applicable) <br>
+ (Options for creating virtual interfaces, if applicable)
+ <ol>
+ <li>
+ Interface options (speed, media, encapsulation,
+ description, etc.)
+ </li>
+ <li>
+ ARP
+ </li>
+ <li>
+ Bridging
+ </li>
+ <li>
+ IP
+ <ol>
+ <li>
+ Adress / netmask / alias
+ </li>
+ </ol>
+ </li>
+ <li>
+ IPX
+ </li>
+ <li>
+ AppleTalk
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ Protocol Options
+ <ol>
+ <li>
+ IP, UDP, TCP, ARP, IPX, ATM ... <br>
+ (Enumeration of available protocols)
+ <ol>
+ <li>
+ (Enumeration of protocol specific options, such as
+ buffer sizes, algorithms, ARP tables etc)
+ <ol>
+ <li>
+ List / Add / Delete / Modify / Set (where
+ applicable)
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ Routes
+ <ol>
+ <li>
+ List
+ </li>
+ <li>
+ Static
+ <ol>
+ <li>
+ Add / Delete / List
+ <ol>
+ <li>
+ (route expression)
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ Dynamic
+ <ol>
+ <li>
+ (Enumeration of available routing protocols)
+ <ol>
+ <li>
+ Add / Delete / List
+ <ol>
+ <li>
+ (route expression)
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ Network services
+ <ol>
+ <li>
+ DNS
+ <ol>
+ <li>
+ Hosts
+ <ol>
+ <li>
+ Add / Delete / List
+ <ol>
+ <li>
+ (hosts definitions)
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ Resolvers
+ <ol>
+ <li>
+ Add / Delete / List
+ <ol>
+ <li>
+ (hosts addresses)
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ Local DNS server config
+ </li>
+ </ol>
+ </li>
+ <li>
+ PPP
+ <ol>
+ <li>
+ Server
+ </li>
+ <li>
+ Client
+ </li>
+ </ol>
+ </li>
+ <li>
+ NFS
+ <ol>
+ <li>
+ Server
+ </li>
+ <li>
+ Client
+ </li>
+ </ol>
+ </li>
+ <li>
+ NIS
+ </li>
+ <li>
+ DHCP
+ <ol>
+ <li>
+ Add / Delete / Reserve / List
+ <ol>
+ <li>
+ (IP address expressions)
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ SNMP
+ <ol>
+ <li>
+ Protocol version
+ </li>
+ <li>
+ Send traps to...
+ </li>
+ <li>
+ Access Control Lists <br>
+ <small>(This is either full-blown ACL system in case
+ of SNMPv2, or a community string for SNMPv1.)</small>
+ </li>
+ </ol>
+ </li>
+ <li>
+ Printing
+ <ol>
+ <li>
+ Local / Remote
+ <ol>
+ <li>
+ Printers
+ <ol>
+ <li>
+ Add / Modify / Delete / List
+ </li>
+ </ol>
+ </li>
+ <li>
+ Queues
+ <ol>
+ <li>
+ Priority / Delete / List
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ SMB services
+ </li>
+ <li>
+ Network Address Translation
+ </li>
+ <li>
+ Packet filters
+ </li>
+ <li>
+ Bandwidth Manager
+ </li>
+ <li>
+ NTP
+ </li>
+ <li>
+ Remote Access
+ </li>
+ </ol>
+ </li>
+ </ol>
+<li>
+User management.
+ <ol>
+ <li>
+ User accounts
+ <ol>
+ <li>
+ Add / Delete / Modify / List
+ <ol>
+ <li>
+ Name / Password / ACL
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ User profiles
+ <ol>
+ <li>
+ Access Control Lists.
+ <ol>
+ <li>
+ Add / Delete / Modify / List
+ <ol>
+ <li>
+ Name / Template / Definition
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ ACL Templates
+ <ol>
+ <li>
+ Add / Delete / Modify / List
+ <ol>
+ <li>
+ Name
+ <ol>
+ <li>
+ Command restrictions list
+ </li>
+ <li>
+ Location restrictions list
+ </li>
+ <li>
+ Resources restrictions list
+ </li>
+ <li>
+ Time restrictions list
+ </li>
+ <li>
+ Authentication methods
+ <ol>
+ <li>
+ Unix passwd
+ </li>
+ <li>
+ S/Key
+ </li>
+ <li>
+ Kerberos
+ </li>
+ <li>
+ Radius
+ </li>
+ <li>
+ TACACS
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+</li>
+<li>
+Other services
+ <ol>
+ <li>
+ Cron tasks
+ </li>
+ </ol>
+</li>
+<li>
+Filesystems.
+ <ol>
+ <li>
+ Local / Remote
+ <ol>
+ <li>
+ (Enumeration of available FS-s)
+ <ol>
+ <li>
+ FS / Mounting point / Options
+ </li>
+ </ol>
+ </li>
+ <li>
+ Swap Partition / Swap File
+ <ol>
+ <li>
+ Create / Turn on
+ </li>
+ </ol>
+ </ol>
+ </li>
+ </ol>
+</li>
+<li>
+Environment
+ <ol>
+ <li>
+ Set / Unset / List
+ </li>
+ </ol>
+</li>
+<li>
+System status
+ <ol>
+ <li>
+ (Enumeration of available status items)
+ </li>
+ </ol>
+</li>
+<li>
+Diagnostics
+ <ol>
+ <li>
+ Debug
+ <ol>
+ <li>
+ (Enumeration of subsystems hierarchy, those of which can
+ provide debugging data)
+ <ol>
+ <li>
+ Set / Clear / Level
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ System messages
+ </li>
+ <li>
+ Ping / traceroute / rtquery
+ </li>
+ </ol>
+</li>
+</ul>
+
+<hr>
+<i>
+<p>Please send your comments to <A HREF="mailto:abial@freebsd.org">
+Andrzej Bialecki</a></p>
+<p>Last modified:
+@DATE@
+</p>
+</i>
+
+</body>
+</html>
diff --git a/release/picobsd/doc/src/bugs.html b/release/picobsd/doc/src/bugs.html
new file mode 100644
index 000000000000..f7c91c99b3fb
--- /dev/null
+++ b/release/picobsd/doc/src/bugs.html
@@ -0,0 +1,152 @@
+<HTML>
+<! $FreeBSD$ >
+<HEAD>
+ <TITLE>History and Bug fixes</TITLE>
+</HEAD>
+<BODY>
+
+<center><h1>History and List of Bugfixes</h1></center>
+
+<p>This is the short release history of PicoBSD, as well as the list of bugs
+which were found. Some of them were already corrected, so that you should read
+the list before reporting a new one.</p>
+
+<p>We tried to make this software bug-free, but life is life... Sorry for the
+ inconvenience.</p>
+
+<h3>PicoBSD 0.44</h3>
+<ul>
+<li>
+ 1999.05.10: Slightly refreshed version to match 3.2-RELEASE.
+ No significant changes (yet)... :-(
+</li>
+</ul>
+<h3>PicoBSD 0.43</h3>
+<ul>
+<li>
+ 1999.01.19: A lot of fixes related to architectural changes in
+ 3.0-current code. Most importantly, we run now ELF kernel and we use
+ the new bootloader. This is most probably the last release of PicoBSD in
+ its present shape - the next version will (hopefully) become a part of
+ normal release building process.
+</li>
+</ul>
+
+<h3>PicoBSD 0.42</h3>
+<ul>
+<li>
+ 1999.01.15: Well, it seems that this version was for developers
+ only... ;-) It was abandoned when recent massive changes in -current
+ demanded more serious measures...
+</li>
+<li>
+ 1998.10.15: Small fixes and updates to match the 3.0-RELEASE
+ source tree. The binary snapshot built from 3.0-R sources will
+ soon follow...
+</li>
+</ul>
+
+<h3>PicoBSD 0.41</h3>
+<ul>
+<li>
+ 1998.10.12: Two small buglets has been discovered, and fixed in CVS
+ copy of the sources. 'kget' utility was dumping core due to unexpected
+ change in behaviour of dumpnlist. 'ns' utility poorly handled other
+ netmasks than class C network.
+ <p>I prepared new tar archive containing these corrected sources.</p>
+</li>
+<li>
+ 1998.09.26: Yes, this took more than just "a few days"... :-(. This is
+ mainly a bugfix release of 0.4 - almost no new features were added,
+ except the 'dmesg' to examine kernel messages buffer. Also, all
+ programs are compiled in ELF format. SNMP services are provided now
+ by UCD-SNMP v.3.5.
+
+ <p>Unfortunately, I had to remove DEVFS for now - there are too many
+ problems with it for now. This also means that we're back to creating
+ device nodes manually, and chances are that the one you need is
+ missing... </p>
+</li>
+</ul>
+
+<h3>PicoBSD 0.4</h3>
+<ul>
+<li>
+ 1998.08.28: Serious bug was discovered in MFS code (thanks to Eric
+ P. Scott for detailed bug report!). Though the bug itself is in
+ FreeBSD-current kernel code and not in the PicoBSD-specific sources,
+ it makes PicoBSD very fragile and easy to crash.
+ <p>Some people are already working on it, so expect the fixed version
+ in a few days. Its availability will be noted here, on this page,
+ so keep an eye on it.</p>
+</li>
+<li>
+ 1998.08.27: PicoBSD source tree is now a part of official FreeBSD
+ source tree (you can find it in src/release/picobsd). From now on,
+ all the fixes and changes will go directly to this tree, and from
+ time to time I'll be preparing a stand-alone snapshot of the sources.
+</li>
+<li>
+ 1998.08.19: PicoBSD 0.4 released.
+ <p>New features include: NATd,
+ netstat, DEVFS/SLICE instead of standard /dev, additional network
+ drivers, and several minor fixes. Distribution contains also
+ a collection of small versions of system programs (TinyWare), among
+ them custom init(8).</p>
+ <p>I added also the fourth type of setup - 'router' - which is a
+ specialized version of PicoBSD that focuses on providing as small
+ as possible router solution.</p>
+</li>
+</ul>
+<h3>PicoBSD 0.31</h3>
+<ul>
+<li>
+ 1998.03.28: Some people reported that the binary files (*.flp) were
+ being corrupted during download because their browsers assumed that
+ these are text files. I changed the names to *.bin - their contents
+ is the same.
+</li>
+<li>
+ 1998.03.20: PicoBSD 0.31 released. New features include: SNMP daemon,
+ better creation of /kernel.config, some other minor fixes. Massive
+ changes in the building scripts. I also removed vn(4) driver from
+ "net" and "isp" floppies.
+</li>
+</ul>
+<h3>PicoBSD 0.3</h3>
+<p>The following bugs were found in this release of PicoBSD:</p>
+<ul>
+<li> 1998.02.27: A bug in kget(8) utility caused it to dump core in certain
+ situations. As a consequence, it wasn't possible to save the changes
+ made in UserConfig (-c). This will be corrected in the next release (or
+ bugfix issue).
+</li>
+<li> 1998.02.24: Wrongly sized MFS caused the passwd(1) on "net" type
+ floppy to fail because of lack of space for temporary files. This bug
+ affected only "net" floppies, and of course the scripts ("2000" looks
+ quite similar to "2200" :-(( ). Also, the 'update' script didn't work
+ as expected...
+<p> This was fixed the same day, and the corrected files are: pb03en1.zip,
+ pb03pn1.zip, and pbsd-s031.tgz respectively. They are now under standard
+ links on the main page of PicoBSD project, so if you downloaded after
+ this date, you shouldn't worry.</p>
+<p> Please check that you have the fixed versions - the archive name should
+ contain the tiny number, such as "pb03en<b>1</b>.zip", or
+ pbsd-s03<b>1</b>.tgz".</p>
+<li>
+ 1998.02.15: PicoBSD 0.3 released. This is the first version that I can
+ truly recommend - previous one was too buggy... :-)
+</li>
+</li>
+</ul>
+
+<h5>Last modified:
+@DATE@
+</h5>
+
+<HR align="center" width="100%">
+<CENTER><h5>Any comments? Send them to
+<A HREF="mailto:abial@freebsd.org">the author</A> </h5></CENTER>
+
+</BODY>
+</HTML>
diff --git a/release/picobsd/doc/src/faq.html b/release/picobsd/doc/src/faq.html
new file mode 100644
index 000000000000..4a0d34e98cce
--- /dev/null
+++ b/release/picobsd/doc/src/faq.html
@@ -0,0 +1,243 @@
+<HTML>
+<! $FreeBSD$ >
+<HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+ <META NAME="Author" CONTENT="Dinesh Nair">
+ <META NAME="Description" CONTENT="Frequently Asked Questions for PicoBSD">
+ <META NAME="Keywords" CONTENT="PicoBSD,FreeBSD,Unix,Dinesh Nair,Andrzej Bialecki,Network Computer">
+ <META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; I; FreeBSD 2.2.5-STABLE i386) [Netscape]">
+ <TITLE>PicoBSD FAQ</TITLE>
+</HEAD>
+<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EF" VLINK="#51188E" ALINK="#FF0000">
+
+<CENTER>
+<H1>
+The PicoBSD FAQ
+</H1></CENTER>
+
+<CENTER>
+<HR WIDTH="100%"></CENTER>
+<p><B>What is PicoBSD ?</B></p>
+
+<P>PicoBSD is a floppy sized version of popular operating system FreeBSD.
+It fits within a single bootable 1.44MB floppy and runs on a minimum i386
+with 8MB RAM. PicoBSD currently comes in four flavours: dialup, net, router and
+isp. For a description of how each of the flavours differ, take a look
+at the <B><A HREF="http://www.freebsd.org/~picobsd/picobsd.html">PicoBSD
+home page</A></B>.
+
+<p><B>What is this "pico" in the name?</B></p>
+
+<p>It's an SI measure unit, which is equivalent of 10e<sup>-12</sup>.
+This is a good approximation of more colloquial "extremely small".</p>
+
+<p>You can also think of normal FreeBSD as a system infested with
+fully grown daemons, and PicoBSD as a system infested with
+"the little people" :-). </p>
+
+<P><B>What version of FreeBSD is PicoBSD based on ?</B></p>
+
+<P>PicoBSD has versions based on FreeBSD 3.2-RELEASE, 4.0-current and
+FreeBSD 2.2.5-RELEASE.
+<A HREF="mailto:abial@freebsd.org">Andrzej Bialecki</A> maintains the <A HREF="http://www.freebsd.org/~picobsd/picobsd.html">FreeBSD
+3.x-RELEASE and -current versions</A> and
+<A HREF="mailto:dinesh@alphaque.com">Dinesh Nair</A>
+maintains the <A HREF="http://info.net-gw.com/picoBSD/">FreeBSD
+2.2.5-RELEASE</A> version. Both the versions are different:
+<UL TYPE=CIRCLE>
+<LI>
+the 3.x-RELEASE version is the one actively maintained, and provides support
+for many new devices</li>
+
+<LI>
+the 2.2.5-RELEASE version is not maintained anymore - the only difference is
+that it has lynx on board.</li>
+</UL>
+
+<p><b>What is current version of PicoBSD?</b></p>
+
+<p>Current version of PicoBSD is @VER@.</p>
+
+<P><B>What can PicoBSD do?</B></p>
+
+<P>With the TCP/IP capabilities of FreeBSD included in and based on the
+strong 4.4BSD TCP/IP stack, PicoBSD can be used as a low cost Network Computer.
+With a text based HTML 3.2 compliant browser (2.2.5-RELEASE version only)
+and Internet access tools such as telnet and ftp, it can serve as a low
+cost Internet dialup client. With support for mounting MSDOS and Unix harddisks,
+it also can be used as a portable OS which you can carry around in a floppy.
+The net and isp flavours would allow you to make use of those redundant
+i386es as a low cost router or dialin PPP server. With SNMP and firewall
+support built-in, PicoBSD provides the functionality of dedicated routers
+and dialin terminal servers.
+
+<P><B>What are PicoBSD's minimum requirements?</B></p>
+
+<P>PicoBSD runs on a minimum i386 with 8MB RAM for the dialup flavour and
+10MB RAM for the net and isp flavours. Diskspace requirements are a single
+1.44MB floppy. For on-demand PPP access, a modem would be required, either
+external or internal.
+For LAN access, an Ethernet NIC (support for 3Com, NE2000 etc available)
+would also be required.
+<p>In case of "router" flavor, its requirements are even smaller: it can
+run in as low as 4MB of RAM, on a 386SX CPU.</p>
+
+<P><B>Where do I get PicoBSD?</B></p>
+ PicoBSD is available at the following
+locations:
+<UL TYPE=CIRCLE>
+<LI>
+<A HREF="http://www.freebsd.org/~picobsd/picobsd.html">PicoBSD based on
+FreeBSD 3.0-RELEASE and -current</A> maintained by Andrzej Bialecki</LI>
+
+<LI>
+<A HREF="http://info.net-gw.com/picoBSD/">PicoBSD based on FreeBSD 2.2.5-RELEASE</A>
+prepared by Dinesh Nair</LI>
+</UL>
+Additional mirror sites will be brought online as demand increases. If
+you're interested in mirroring the PicoBSD distribution, please get in
+touch with <A HREF="mailto:dinesh@alphaque.com">Dinesh Nair</A> or
+<A HREF="mailto:abial@freebsd.org">Andrzej Bialecki</A>.
+
+<P><B>How do I copy it to the floppy?</B></p>
+
+<P>The binary images provided as part of the PicoBSD distribution are 1.44MB
+sized floppy images. They cannot be copied to a floppy using the <I>MSDOS
+COPY</I> or <I>Unix cp</I> commands. Instead, an image copy must be done
+using tools such as&nbsp; <A HREF="ftp://ftp.freebsd.org/pub/FreeBSD/tools/rawrite.exe">rawrite.exe</A>
+or f<A HREF="ftp://ftp.freebsd.org/pub/FreeBSD/tools/fdimage.exe">dimage.exe</A>
+under MSDOS and <B>dd</B> under Unix.
+
+<P>Under DOS you would do something like this:
+<UL>
+<PRE><B>C:\> fdimage.exe picobsd.flp a:</B></PRE>
+</UL>
+while under Unix you would use something like:
+<UL><B>dd if=picobsd.flp of=/dev/rfd0</B></UL>
+
+<p><B>How do I configure dialup PPP access on the Dialup flavour?</B></p>
+
+<P>There is an auto-configuration script to configure PPP dialup access.
+Run <I>/stand/dialup</I> after booting up from the floppy and make the
+relevant menu selections. Once you've tested it to work, you should make
+your changes permanent by committing them to the floppy using <I>/stand/update</I>.
+
+<P><B>How do I set my DNS server ?</B></p>
+
+<P>Use the provided <I>/stand/ee</I> editor and edit <I>/etc/resolv.conf</I>.
+Replace the <U>domain</U> with your domain and change the <U>nameserver</U>
+IP address to your nameserver or your ISP's nameserver. You may have as
+many <U>nameserver</U> lines as you want. Don't forget to run <I>/stand/update</I>
+to commit your changes to the floppy.
+<p>NOTE: starting with version 0.4, the <i>dialup</i> script asks you to
+set your nameserver as well as default domain name.</p>
+
+<p><b>I can't execute the <i>/stand/update</i> on the "router" floppy.</b></p>
+<p>The "router" floppy doesn't contain any real shell, so some commands work
+differently (and some don't work at all). In order to use this script you
+have to 'source it in', i.e.:
+<pre>
+ (48)/# pwd
+ /
+ (48)/# . /stand/update
+</pre>
+
+<P><B>How do I set my hostname ?</B></p>
+
+<P>Edit /<I>etc/rc.conf</I> and change the value of the <U>hostname</U>
+variable.
+
+<p><b>PicoBSD has "mkdir" but not "rmdir". How can I delete
+subsdirectories?</b></p>
+<p>"rm -d" will delete directories.</p>
+
+<p><b>Can I use a modem configured on COM3/COM4 instead of COM1, COM2?</b></p>
+
+<p>Yes, but these ports are initially disabled - most machines have only
+two serial ports anyway. You have to enable them in UserConfig.</P>
+<p>Here are the preferred settings:</p>
+<ul>
+<li> sio0=COM1: port 0x3f8, irq 4, used by default for mouse (/dev/cuaa0)
+</li>
+<li> sio1=COM2: port 0x2f8, irq 3, used by default for modem (/dev/cuaa1)
+</li>
+<li> sio2=COM3: port 0x3e8, irq 5, disabled by default
+</li>
+<li> sio3=COM4: port 0x2e8, irq 10, disabled by default
+</li>
+</ul>
+
+<p><b>I see a configuration conflict the first time I boot PicoBSD. What
+should I do?</b></p>
+
+<p>Disable those devices which are not present in your machine. If there is
+still some conflict, change the settings (I/O port, IRQ etc.).</p>
+
+<p><b>Exception:</b> if you're using a PS/2 mouse, the visual configuration
+tool will display CONF for sc0 and psm0. The default settings are correct,
+and you should simply ignore the warning.</p>
+
+<p><b>What kind of SCSI support is there?</b></p>
+
+<p>None. Either build your own version of PicoBSD, or just install normal
+FreeBSD distribution.</p>
+
+<p><b>Using version 0.4 I get many strange messages on my console...</b></p>
+<p>This is related in large part to DEVFS subsystem - it is still somewhat
+experimental, and its author left some diagnostics turned on.. They are
+harmless. Versions 0.4x, x>0 don't use DEVFS at all, as it was too
+experimental to work reliably...</p>
+
+<P><B>How do I connect using PPP ?</B></p>
+
+<P>Just run the PPP process, <I>/stand/ppp</I>. at the <B>ppp on pico></B>
+prompt, type <U>dial</U> and sit back and wait for the modem to sing it's
+mating tunes. When the <B>ppp on pico></B> prompt is capitalized to <B>PPP
+on pico></B>, you've managed to succesfully achieve a link-level PPP and
+TCP/IP connection with your ISP. Additionally, the PPP program will enter
+<I>Packet Mode</I>. Remember, don't <U>quit</U> or <U>close</U> the PPP
+connection if you want to continue to access the Internet.&nbsp; Type <U>help</U>
+at the <B>ppp on pico></B> prompt for a list of PPP commands.
+
+<P><B>The PPP process is running on my screen. How do I use the browser
+or telnet to a host ?</B></p>
+
+<P>PicoBSD has many virtual terminals, 10 on the dialup flavour. You have
+run PPP on the first virtual terminal. You can switch to the others and
+run the browser and telnet clients there. Switching thru the VTs is done
+by ALT-F1 for VT0, ALT-F2 for VT1, ALT-F3 for VT2 etc. From these terminals,
+you could use telnet or the lynx browser cum newsreader.
+
+<p><b>I can't establish a PPP connection. The mouse pointer randomly appears
+and disappears. and moving the mouse has no effect.</b></p>
+
+<p>You have the mouse driver configured to use the modem's serial port.
+Issue a 'ps -ax', remember the pid (process ID) of 'moused', then issue a
+'kill -9 <pid>'. Edit /etc/rc.conf to specify the correct mouse port. Issue
+an 'update' commmand to save new configuration to the floppy, and reboot.</p>
+
+<P><B>I saved my lynx configuration but it was not there when I rebooted.
+Why ?</B>
+
+<P>The lynx configuration is saved in <I>/etc/lynx.cfg</I>. You should
+run /<I>stand/update</I> to commit this to the floppy when you change the
+configuration. In effect, anything you change in /etc can be committed
+by running /<I>stand/update</I>.
+
+<P><B>How come there are no manual pages ?</B></p>
+
+<P>Well, this is a floppy-sized OS, so there's not enough space for full
+manpages. Instead, short help descriptions are given with the <I>/stand/help</I>
+program. If you need more detailed descriptions, take a look at the <A HREF="http://www.freebsd.org/handbook/">FreeBSD
+Handbook</A> or the <A HREF="http://www.freebsd.org/">FreeBSD Home</A>.
+<BR>&nbsp;
+<BR>&nbsp;
+<HR WIDTH="100%">
+<CENTER><FONT SIZE=-1>More FAQ points will be added as feedback from the
+PicoBSD user community comes in. And big thanks to all of you who already
+sent us some suggestions!</FONT></CENTER>
+<P><B><FONT SIZE=-1>Last Modified:
+@DATE@
+</FONT></B></P>
+</BODY>
+</HTML>
diff --git a/release/picobsd/doc/src/hardware.html b/release/picobsd/doc/src/hardware.html
new file mode 100644
index 000000000000..0afede238cf1
--- /dev/null
+++ b/release/picobsd/doc/src/hardware.html
@@ -0,0 +1,112 @@
+<html>
+<! $FreeBSD$ >
+<body>
+<h1><center>Lists of supported hardware configurations.</center></h1>
+
+<p>Below you will find supported configurations for each of the flavors of
+PicoBSD as of version @VER@, as well as the lists of programs included.</p>
+
+<h3>Dialup version:</h3>
+<ul>
+<li>minimum 386SX CPU (either Intel, AMD, Cyrix etc - doesn't matter),
+</li>
+<li>minimum 8MB of RAM (some people reported success
+stories with 4MB only, but I certainly don't recommend it)
+</li>
+<li>a modem (for Internet connection using PPP protocol), either internal or
+external, connected to COM1-COM4. NOTE: COM3 and COM4 are disabled by default
+- you have to explicitly enable them in UserConfig.
+</li>
+<li>an Ethernet card for LAN connection:
+<ul>
+<li> ed - default settings: port 0x280, irq 10, iomem 0xd8000
+ <p>NE2000 compatible ISA and PCI cards, most SMC and 3C503</p>
+</li>
+<li> ep - default settings: port 0x300, irq 10,
+ <p>3C509 ISA card</p>
+</li>
+<li> ie - default settings: port 0x300, irq 10, iomem 0xd0000
+ <p>Intel EtherExpress ISA, StarLan, 3C507</p>
+</li>
+<li> le - default settings: port 0x300, irq 5, iomem 0xd0000
+ <p>DEC EtherWorks 2 and 3</p>
+</li>
+<li> lnc - default settings: port 0x280, irq 10, iomem 0xd0000
+ <p>Lance/PCNet</p>
+</li>
+<li> de - DEC21040-based PCI cards,
+</li>
+<li> fxp - Intel EtherExpress Pro/100B PCI card
+</li>
+</ul>
+</li>
+<li>10 virtual consoles plus console utilities (vidcontrol, kbdcontrol)
+</li>
+<li>basic networking tools: ifconfig, route, ping, ns (mini-netstat),
+traceroute
+</li>
+<li>basic remote access tools: telnet, ftp and SSH
+</li>
+<li>basic OS tools: shell, mount (FreeBSD, DOS, Linux), umount, ps, kill, vm
+(mini-vmstat), fsck, df, etc..
+</li>
+<li>editable configuration (/etc directory and kernel configuration)
+</li>
+<li>simple editor ee
+</li>
+<li>simple help system for people new to FreeBSD
+</li>
+</ul>
+<h3>Router-like version:</h3>
+<ul>
+<li>minimum 386SX CPU,
+</li>
+<li>minimum 10 MB of RAM (8MB for basic setup)
+</li>
+<li>support for PPP protocol on dialup/leased lines (using ijppp)
+</li>
+<li>support for several types of Ethernet cards (two of each kind) - see above
+for descriptions: ed, ie, ep, de, fxp, lnc
+</li>
+<li>network daemons: routing daemon (routed), inetd, telnetd.
+</li>
+<li>IP Firewall and NAT daemon (natd).
+</li>
+<li>more OS utilities, including: syslogd, mount_nfs, network logins via
+telnet
+</li>
+<li>this version doesn't include: ssh, ftp
+</li>
+</ul>
+<h3>Router version:</h3>
+<ul>
+<li>minimum 386SX CPU,
+</li>
+<li>minimum 4 MB of RAM (6MB for running some additional daemons)
+</li>
+<li>support for PPP protocol on dialup/leased lines (using kernel ppp)
+</li>
+<li>support for several types of Ethernet cards - see above
+for descriptions: ed, ie, ep, de, fxp, lnc
+</li>
+<li>custom init(8), which includes also a simple command-line interface,
+and its own way to configure the system on startup.
+</li>
+<li>IP Firewall and NAT daemon (natd - it requires additional portion of RAM).
+</li>
+<li>very few OS tools, except those absolutely necessary,
+</li>
+</ul>
+
+<p>There's also the fourth version, which can serve as a dialin server - I hope
+you'll find it as a cheap yet reliable alternative to commercial communication
+servers :-)) This work is still in progress, and
+<A HREF="beta.html">I need some people to test</a> the early
+dial-in server version.</p>
+
+<hr>
+<i>Last modified:
+@DATE@
+</i>
+</body>
+</html>
diff --git a/release/picobsd/doc/src/how2build.html b/release/picobsd/doc/src/how2build.html
new file mode 100644
index 000000000000..e8da1e268dde
--- /dev/null
+++ b/release/picobsd/doc/src/how2build.html
@@ -0,0 +1,196 @@
+<html>
+<! $FreeBSD$ >
+<head>
+<title>PicoBSD Development Kit</title>
+</head>
+<body>
+<h1><center> How to build your own version
+ of PicoBSD?
+</center></h1>
+
+<ol>
+<li>
+<p> Beginning with version 0.4, PicoBSD sources are maintained as
+ part of official FreeBSD CVS repository, so
+ you can find them in src/release/picobsd.</p>
+</li>
+<li>
+ Become root. You'll need to mount and unmount various volumes.
+</li>
+<li>
+ Make sure you are running kernel with support for vn(4) devices.
+ If you run plain GENERIC (just as it was installed on your system),
+ you'll need to recompile you kernel and reinstall it. See the
+ appropriate entries in The Handbook (/usr/share/doc/handbook).
+</li>
+<li> Change working directory (<code>cd build</code>) and run the
+ <code>./build</code> script. Select target language, size of MFS and
+ one of pre-canned setups (personal dialup, dialin server or
+ router-like). Details of each setup are contained in dial/,
+ router/, isp/ and net/ directories respectively. You should at least
+ check <code>${TYPE}/config/PICOBSD</code> file to make sure it contains
+ the drivers you want.
+
+<p> You can also choose a special type called 'custom'. You'll need to
+ supply the full path to your own custom config tree constructed
+ exactly like one of the standard config directories. Also, you'll
+ probably want to adjust the number of inodes on MFS - see the
+ <code>stage1</code> script and look for <code>INODES=</code>.</p>
+
+<p> I also recommend to adjust the ISA devices parameters to
+ match the ones of your hardware - though PicoBSD can save the
+ changes from UserConfig, this way it will produce smaller
+ <code>/kernel.config</code> file.</p>
+</li>
+<li> I assume you will use 1.44MB floppy. If not, please edit the file
+ <code>build/stage3</code>.
+</li>
+<li> There are several directories which contain some sources and config
+ files:
+<pre>
+ build/ main build directory; you MUST cd here!
+ dial/ config files for dialup setup
+ conf/ kernel config file
+ crunch1/ crunch of system programs
+ mfs.tree/ contains the MFS configuration
+ lang/ contains language-dependent files
+ floppy.tree/ contains the startup floppy hierarchy
+
+ isp/ config files for dialin server setup
+ ... (as above)
+ net/ config files for router-like setup
+ ... (as above)
+ tinyware/ collection of small system utilities
+ tools/ additional tools them needed during build
+</pre>
+<p> There are no <code>/etc/passwd</code> nor <code>/etc/pwd.db</code>
+ files on the "dial" floppy - in case of other types, they are
+ reconstructed from <code>/etc/master.passwd</code> on each startup
+ (and then put on MFS with the rest of <code>/etc</code>).
+ In case of "dial" type floppy, you don't need them at all.</p>
+
+<p> NOTE: thanks to the above, the floppy is needed only during startup,
+ and then only if you want to synchronize (possibly changed) MFS /etc
+ with the one on the floppy. It means that you can pull off the floppy
+ from the drive as soon as <code>login:</code> prompt appears.
+ In other words, it is almost equal to read-only floppy.</p>
+</li>
+<li> Edit the set of installed programs.
+<ul>
+<li> Go to <code>${TYPE}/crunch1</code> directory, and edit it
+ to suit your needs. Keep in mind that floppies aren't made
+ of rubber... :-)
+</li>
+<li> There are some patches included in these directories, which
+ are applied during build process to some of the Makefiles in
+ your <code>/usr/src</code>. These patches attempt to decrease
+ the size of some programs by cutting off rarely/unlikely used
+ parts. The patches are reversed when you do a
+ <code>make clean</code> (or <code>build/clean</code>
+ for that matter).
+<p> NOTE: patches may fail to apply, if your sources are too
+ different from the ones I used. Don't worry: they are so
+ straightforward that you can apply them by hand.</p>
+</li>
+<li> In order to have a functioning system you MUST include at
+ least <code>/stand/init</code>, or <code>/stand/oinit</code>,
+ or <code>/stand/sysinstall</code> in
+ your <code>crunch.conf</code>. Of course these can be your
+ own programs... But if you install the stock
+ <code>/sbin/init</code>, you
+ also have to install some others, like sh, getty, login etc...
+<p> This release of PicoBSD contains a small replacement for
+ init(8), called 'oinit'. You can find it in TinyWare
+ collection. The main building script allows you to use it
+ instead of normal init(8). <b>Be sure to read the oinit's docs
+ before you decide to use it!</b></p>
+</li>
+</ul>
+</li>
+<li> Make sure that the system you're running has /dev/[r]vn0* entries in
+ /dev directory (if not, you can make them with 'MAKEDEV vn0'), AND
+ that your running kernel has built-in vnode driver (there should be a
+ line in your kernel config file stating 'pseudo-device vn xxx').
+</li>
+<li> You'll need at least 9MB of free disk space, and free /mnt directory.
+</li>
+<li> Do a <code>cd build/</code> and fire off the <code>./build</code>
+ script. Select the build parameters or 'n' for 'no change'. If all
+ is well, after some time (like 10-30m) you end up with a
+ 'picobsd.bin' file in this directory.
+
+<p> WARNING: make sure you don't have stale <code>.depend</code> files
+ around!!! You may encounter many strange errors during build process
+ in that case.</p>
+
+<p> If there were any errors, please execute each script by hand and try
+ to find what causes this error. Most often this will be one of the
+ following reasons:</p>
+<ul>
+<li> <code>crunchgen</code> can't find the source directory for a
+ program 'proggy':
+<ul>
+<li> make sure that the source directory for 'proggy' is called
+ 'proggy', otherwise the crunchgen won't find it
+</li>
+<li> make sure that the Makefile allows crunchgen to deduce the
+ set of objects to build. You can manually add an OBJS= ...
+ to the program's Makefile.
+</li>
+</ul>
+</li>
+<li> crunch fails to build.
+<ul>
+<li> check your system source tree for stale .depend files and/or
+ objects (*.o)
+</li>
+<li> see if the individual programs can be built using original
+ Makefiles. If not, cvsup the correct sources.
+</li>
+</ul>
+</li>
+<li> /: write failed - file system is full
+<ul>
+<li> this one is obvious - you wanted to put too many programs on
+ the MFS and/or the target floppy. Or, you really don't have
+ any space left on the root partition.. :-)
+</li>
+<li> also, you can check if the
+ MFS size is correctly reported while it's still mounted (right
+ after <code>stage1</code> script ends).
+</li>
+</ul>
+<li> the build process displays "Preparing MFS" and then
+ silently stops. In this case check if you're running it as
+ root, and that you run kernel with support for vn(4)
+ devices. Also, you can add 'set -x' at hte beginning
+ of the scripts to see exactly where they stop.
+</li>
+</ul>
+
+ You can also remove <code>2>&amp;1</code> redirections from Makefiles
+ to see the stderr.
+</li>
+<li> Transfer this file to the floppy:
+<pre>
+ dd if=picobsd.bin of=/dev/rfd0
+</pre>
+
+ (The 'build' script asks you if you want to do this.)
+</li>
+</ol>
+
+<p>That's all. You're welcome to change and improve these scripts. If you
+ stumble upon something which looks like a good idea to have it here, let me
+ know.</p>
+
+<p>If, for some reason, the scripts don't work for you at all, also let me
+ know.</p>
+
+<hr>
+<i>Last modified:
+@DATE@
+
+<p><A HREF="mailto:abial@freebsd.org">&lt;abial@freebsd.org&gt;</a></i></p>
+</body>
+</html>
diff --git a/release/picobsd/doc/src/installflp.html b/release/picobsd/doc/src/installflp.html
new file mode 100644
index 000000000000..b0ead20390b8
--- /dev/null
+++ b/release/picobsd/doc/src/installflp.html
@@ -0,0 +1,99 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<!-- $FreeBSD$ -->
+<html>
+ <head>
+ <title>Configuring the PicoBSD install floppy</title>
+ </head>
+
+ <body>
+ <h1>Configuring the PicoBSD install floppy</h1>
+
+ <p>The PicoBSD Install Floppy is engineered to be flexible since every
+ site has their own needs for an automated install solution. The
+ base package contains tools and frameworks for further
+ customization. </p>
+
+ <h2>Generating an Install Image</h2>
+
+ <p>Central to the design of the install floppy is a tarball image of
+ the operating system. The install floppy downloads and extracts
+ the image from a master server. </p>
+
+ <p>To generate the install image:</p>
+
+ <ol>
+ <li>Install and configure a machine as it should be
+ installed.
+ <ul>
+ <li><em>Make the template machine as close to the target
+ machines as possible.</em> System-specific files such as
+ <tt>/etc/fstab</tt> can cause problems if they are
+ specific to a particular disk setup, such as multiple SCSI
+ disks in the template vs. single IDE disks in the target.
+ <li><em>Try to keep the template as small as practical.</em>
+ The more packages you install on the template, the larger
+ the image becomes.
+ </ul>
+ <li>Use tar to create the image. This shell script is useful
+ for automating the process.
+ <blockquote><pre>
+#!/bin/sh
+TARBALL="/fbsdimage.tgz"
+GZIP="-9"
+
+tar -cpvzf ${TARBALL} --totals --exclude '/proc/*' --exclude '/var/tmp/*' \
+ --exclude '/var/log/*' --exclude '/tmp/*' --exclude '/fbsdimage.tgz' /
+ </pre></blockquote>
+ <ul>
+ <li>Use the '--exclude' argument to remove files from the
+ image.
+ <li>Don't forget to exclude the image itself or your tarball
+ will be much larger than it should.
+ <li>The <b>GZIP</b> environment variable sets arguments to the
+ gzip command called by tar's z option.
+ </ul>
+ <li>Copy the image file to your load server into a public FTP
+ directory.
+ </ol>
+
+ <h2>Configuring the Install Floppy</h2>
+
+ <p>Once the install floppy has been built using the PicoBSD build
+ script, mount the floppy and modify the install
+ script, <tt>/floppy/etc/doinstall</tt>. <tt>doinstall</tt> is
+ called from rc on startup to install the disk image and perform
+ whatever other setup tasks are necessary. The script can set
+ network parameters, configure applications, select kernels, or
+ whatever else a shell script can do. A handful of useful
+ utilities is included on the disk to ease automated installation.</p>
+
+ <p>At minumum, set the URL to the FTP server holding the disk
+ image. If you wish, uncomment and modify to taste any of the
+ code blocks provided.</p>
+
+ <p>By default, the install floppy:</p>
+ <ul>
+ <li>Creates one large FreeBSD slice on the first IDE disk (wd0).
+ <li>Creates a 256MB swap partition and the rest for a large
+ root partition.
+ <li>Formats the large partition using <tt>newfs</tt> with
+ default parameters. '
+ <li>Downloads the image via FTP and feeds it directly into
+ <tt>cpio</tt> for extraction.
+ </ul>
+
+ <P>To modify the disk formatting parameters, modify the
+ <tt>/floppy/etc/prepdisk</tt> script. <tt>prepdisk</tt> is a
+ simple awk script that feeds directly into <tt>disklabel</tt>.
+ Simply edit the generated partition table to taste.</P>
+
+
+
+ <hr>
+ <address><a href="mailto:dwhite@freebsd.org">Doug White</a></address>
+<!-- Created: Thu Oct 7 21:42:17 PDT 1999 -->
+<!-- hhmts start -->
+Last modified: Thu Oct 7 22:18:22 PDT 1999
+<!-- hhmts end -->
+ </body>
+</html>
diff --git a/release/picobsd/doc/src/intrinsics.html b/release/picobsd/doc/src/intrinsics.html
new file mode 100644
index 000000000000..c69d022a6126
--- /dev/null
+++ b/release/picobsd/doc/src/intrinsics.html
@@ -0,0 +1,126 @@
+<html>
+<! $FreeBSD$ >
+<head>
+<title><center>Details of building process</center></title>
+</head>
+<body>
+<h1><center> Details of building process.</center></h1>
+
+<p>For those of you who really want to know what's going on behind the scene,
+and can't quite deduce it from scripts themselves, here's short description of
+the build process:</p>
+
+<ul>
+<li> The './build' script sets the basic parameters of the floppy, such as:
+<ul>
+<li> LANGUAGE: language of the various system messages, and C locale.
+ Available choices are: "en" (English) and "pl" (Polish).
+</li>
+<li>
+ SIZE: size of the memory filesystem (MFS), which will contain all the
+ binaries (except the kernel). Make it big enough for all the pieces to
+ fit, but keep it as small as possible (remember that running system
+ needs some space in /var and /tmp!). Presently, "dial" type of floppy
+ requires at least SIZE=1700, and others require ca. 2800 (numbers
+ are in kB).
+</li>
+<li>
+ TYPE: determines which set of programs and which trees will be
+ installed on the floppies. This simply acts as a selector to dive into
+ respective subdirectories in ../. Presently, the TYPE can be one of:
+ "dial" (dialup floppy), "net" (networking floppy), "router" (router
+ floppy) or "isp" (work in progress - not really usable yet).
+</li>
+</ul>
+<li>
+ Then the './build' scripts checks if there is a kernel built on basis
+ of previously set parameters. The check is error prone, but is simple:
+ the target config file is called PICOBSD-${TYPE}.${SIZE}, and if there
+ exists a file called /sys/compile/PICOBSD-${TYPE}.${SIZE}/kernel, then
+ it is assumed it's the right one.
+
+<p> If there is no such file, the script starts compilation of the kernel,
+ using template in ../${YTPE}/conf/PICOBSD, and adding parameters which
+ determine the built-in MFS size.</p>
+<li>
+ Then the './build' script starts the consecutive stages of the build
+ process, which are performed by scripts (in the following order):
+ stage1, populate, stage2, stage3.
+</li>
+<li>
+ 'stage1' prepares the file called fs.PICOBSD with given size - it's a
+ placeholder for the future MFS. Next, it turns it into device (using
+ vnconfig), and then performs some tricks :-) which allow for
+ doing 'disklabel'. I use the 'auto' option to disklabel(8), which
+ behaves strangely in 2.2.x - what it's supposed to do is to
+ automagically determine the disk parameters from the underlying
+ device (in this case, /dev/rvn0). This works ok in 3.0-current, and
+ allows for using arbitrary (>1024kB) MFS sizes.
+
+<p> One notable exception here is with the "router" floppy - I use one
+ of extended floppy formats (820kB).</p>
+
+<p> After the file is labelled, the newfs(8) is run. Here you can adjust
+ the parameter -i, which can gain you some space on the MFS (sacrificing
+ available number of inodes, so be careful).</p>
+
+<p> Such prepared blank filesystem is mounted on /mnt. Here the stage1
+ ends.</p>
+</li>
+<li>
+ 'populate', as its name suggests, transfers all the pieces which will
+ reside in MFS, to the filesystem mounted on /mnt. This includes:
+<ul>
+<li> copying language dependent files from ../${TYPE}/lang/</li>
+<li> making the MFS hierarchy according to informations in
+ ../${TYPE}/mfs.tree/ subdir.
+<p> The MFS tree includes the /etc, which will contain the startup file
+ /etc/rc.
+ This file in turn doesn't do anything useful except copying the
+ real /etc hierarchy from the floppy filesystem. (There's one possible
+ improvement which comes to my mind - to have the whole /etc on the
+ floppy in tar.gz - this would require only one inode to store the whole
+ /etc, and we could gain some kB on the floppy)</p>
+</li>
+<li> making and installing the set of crunched programs, basing on the
+ description in ../${TYPE}/crunch1/crunch.conf. This involves
+ making the 'crunch', copying it to /mnt and making hard links to
+ the names of all the programs contained therein.</li>
+<li> preparing a short list of kernel symbols, which will be used by
+ various utilities at runtime. In case of "net" and "isp" floppy, it also
+ prepares the kvm_kernel.db database, which will be used by such
+ programs as ps, netstat and others</li>
+<li> preparing the list of "virgin" configuration of devices in kernel -
+ this list will be used by kget(8) program to save the changes to
+ /kernel.config file.</li>
+</ul>
+</li>
+<li>
+ 'stage2' prepares the target kernel. It takes the filesystem contained
+ in fs.PICOBSD (which has all the above pieces inside), and writes it
+ into the target kernel. Then it kzip(8)'s such construed kernel. This
+ process also strips the symbols from the kernel (that's why we prepared
+ the symbol list earlier).
+</li>
+<li>
+ 'stage3' does almost the same as 'stage1', but this time it prepares
+ the filesystem of the target floppy. Default size for the floppy is
+ set at 1440kB.
+<p> After preparing the filesystem (which again involves doing disklabel(8)
+ and newfs(8) - here you can notice that the resulting FS has very small
+ number of inodes in order to save space), the script transfers the
+ floppy hierarchy (which is
+ taken from ../${TYPE}/floppy.tree). Notice that it also contains
+ the /etc directory - its contents is copied right after bootup to the
+ real /etc in MFS. This allows for changing the system behaviour
+ (because you can't change the MFS contents without recompiling).</p>
+<p> The script finally copies previously prepared kernel to the floppy
+ filesystem. The filesystem is unmounted, and here the build process
+ ends.</p>
+</li>
+</ul>
+
+<h6>
+Last modified:
+@DATE@
+</h6>
diff --git a/release/picobsd/doc/src/intro.html b/release/picobsd/doc/src/intro.html
new file mode 100644
index 000000000000..035cd0c14d21
--- /dev/null
+++ b/release/picobsd/doc/src/intro.html
@@ -0,0 +1,306 @@
+<HTML>
+<! $FreeBSD$ >
+<HEAD>
+ <TITLE>PicoBSD</TITLE>
+</HEAD>
+<BODY>
+
+<CENTER><h1><B>PicoBSD</B></h1>
+<HR shade align="center" size="8" width="25%"></CENTER>
+
+
+<p><b>Contents:</b></p>
+<ul>
+<li>
+<A HREF="#what">What is it</a>, and
+<A HREF="#hardware">what hardware is supported?</a>
+</li>
+<li>
+<A HREF="#where"><b>Where can I get it?</b></a>
+</li>
+<li>
+<A HREF="#how">How can I use it?</a>
+</li>
+<li>
+<A HREF="#create">Create your own, custom version of PicoBSD!</a>
+<p>Get the full PicoBSD Development Kit as well as full CVS repository of
+the project.</p>
+</li>
+<li>
+<A HREF="#info">Where can I get more info?</a>
+</li>
+<li>
+<A HREF="bugs.html">Release history and bugs parade...</a>
+<li>
+<A HREF="#future">Plans for the future.</a>
+</li>
+<li>
+<A HREF="#credits">Credits</a>
+</li>
+<li>
+<A HREF="#license">Licensing issues</a>
+</li>
+<li>
+<A HREF="faq.html">FAQ</a>
+</li>
+</ul>
+
+<HR shade align="center">
+<HR shade align="center">
+
+<A NAME="what"><h3>What is it?</h3>
+<p>If you ever dreamed about having really small, tiny, minimal system that
+would offer you benefits of Unix, while still fitting in reasonable space -
+here it is!</p>
+
+<p>PicoBSD is a one floppy version of
+<A HREF="http://www.freebsd.org/">FreeBSD</a> 3.0-current, which in its
+different variations allows you to have secure dialup access, small diskless
+router or even a dial-in server. And all this on only one standard 1.44MB
+floppy - no need to sacrifice over 100MB of your precious HDD space.</p>
+
+<p>PicoBSD is... well, pico-sized :-) , and the minimal hardware that
+is required to run it is 386SX CPU with 8MB of RAM (no HDD!).
+</p>
+
+<A NAME="hardware">
+<p>Here you can find detailed <A HREF="hardware.html">list of supported
+hardware and features</a>.
+
+<p>Current version of PicoBSD is @VER@, and this means that I consider it
+still immature, while on the other hand being somewhat tested and improved
+over previous versions. Does it tell you something? Well, at least you can
+try it - I cannot guarantee that it doesn't burn your house or blow up your
+machine, though the former is unlikely... :-)</p>
+
+<HR shade align="center">
+<A NAME="where"><h3>Where can I get it?</h3>
+
+<p>There are two language editions of PicoBSD - English and Polish one. You'll
+be probably more interested in the former :-) The only difference is in
+the set of fonts included, C locale, and the language of messages.</p>
+<p>You can download them from www.freebsd.org or one of its mirrors:</p>
+<ul>
+<li>Dialup version: <A HREF="http://www.freebsd.org/~picobsd/picobsd/pb_en-D.bin">English</a>
+(<A HREF="http://www.freebsd.org/~picobsd/picobsd/doc_dial/README.en">README</a>) or
+<A HREF="http://www.freebsd.org/~picobsd/picobsd/pb_pl-D.bin">Polish</a>
+(<A HREF="http://www.freebsd.org/~picobsd/picobsd/doc_dial/README.pl">README</a>)
+</li>
+<li>Networking (formerly known as 'router-like') version: <A HREF="http://www.freebsd.org/~picobsd/picobsd/pb_en-N.bin">English</a>
+(<A HREF="http://www.freebsd.org/~picobsd/picobsd/doc_net/README.en">README</a>)
+ or <A HREF="http://www.freebsd.org/~picobsd/picobsd/pb_pl-N.bin">Polish</a>
+(<A HREF="http://www.freebsd.org/~picobsd/picobsd/doc_net/README.pl">README</a>)
+</li>
+<li>Router version: <A HREF="http://www.freebsd.org/~picobsd/picobsd/pb_en-R.bin">English</a>
+(<A HREF="http://www.freebsd.org/~picobsd/picobsd/doc_router/README.en">README</a>)
+ or <A HREF="http://www.freebsd.org/~picobsd/picobsd/pb_pl-R.bin">Polish</a>
+(<A HREF="http://www.freebsd.org/~picobsd/picobsd/doc_router/README.pl">README</a>)
+</li>
+<li>Dial-in server version: waiting for
+<A HREF="http://www.freebsd.org/~picobsd/beta.html">beta testers</a> ... :-)
+</ul>
+
+<p><i>(See the <A HREF="hardware.html">feature list</a> for more
+details)</i></p>
+
+<p>The above floppies were built from 3.0-current sources. Though they
+provide more features, they tend to be less stable than the latest
+RELEASE of FreeBSD. Dinesh Nair back-ported these scripts to the
+latest release (2.2.5), and continues development of PicoBSD using sources
+from that branch. You can find floppies built from 2.2.5 sources
+<A HREF="http://www.freebsd.org/~picobsd/picobsd225/">here</a> or at
+<A HREF="http://info.net-gw.com/picoBSD/">his server</a>.</p>
+
+<HR shade align="center">
+<A NAME="how"><h3>How can I use it?</h3>
+<p>Previous versions were packed with PKZIP(tm) compatible program - now they
+are simply the raw binary floppy images, so you just need to grab the
+appropriate version of the file.</p>
+
+<p>I assume you will use 1.44MB floppy to boot the system - other sizes
+(bigger) are not tested.</p>
+
+<p>The file 'pb_xx-X.bin' must be written onto a blank floppy. It does NOT
+mean that it can be copied using e.g. DOS 'copy' command. You must use a
+program like
+<A HREF="ftp://ftp.freebsd.org/pub/FreeBSD/tools/rawrite.exe">rawrite.exe</a>
+or
+<A HREF="ftp://ftp.freebsd.org/pub/FreeBSD/tools/fdimage.exe">fdimage.exe</a>
+ to write this file directly on the raw floppy.</p>
+
+<p>Under DOS you would do something like this:</p>
+<pre>
+ C:\> fdimage.exe pb_xx-X.bin a:
+</pre>
+
+<p>while under Unix you would use something like:</p>
+<pre>
+ dd if=pb_xx-X.bin of=/dev/rfd0
+</pre>
+
+<p>Then boot off this floppy and enjoy!</p>
+
+<p>If you feel lost, try the 'help' command (it's available only on "dialup"
+floppies)</p>
+
+<HR shade align="center">
+<A NAME="create">
+<h3>Create your own, custom version of PicoBSD!</h3>
+
+<p>I made available also the set of tools
+(a.k.a the PicoBSD Development Kit) I used to create the floppies (see also the
+ <A HREF="how2build.html">detailed instructions</a>)</p>
+
+<p>You can also access the full CVS repository of PicoBSD - beginning with
+version 0.4 it's a part of official FreeBSD CVS and lives in
+<code>src/release/picobsd</code>. I also create the snapshots of this source
+tree - keep in mind that they are not so up-to-date as the tree
+in FreeBSD CVS. You can get the snapshot I made on
+Sun Nov 1 11:48:32 PST 1998
+<A HREF="http://www.freebsd.org/~picobsd/picobsd/picobsd.tgz">here</a>.</p>
+
+<p> Now, if you don't like the setup of PicoBSD, or you miss
+some program, or (better yet) you want to improve PicoBSD - you can grab the
+copy of exactly the same tools I used and build your own, customized
+ version! </p>
+
+<p>Think of it: if your're an ISP, you can build the dialup version for
+ your customers, including some scripts to automatically connect them to
+your site. You can also create a demo disk for your friend (or your boss! :-)).
+You can also build a firewall/router for your office, etc, etc...
+ possibilities are really endless and limited only by your imagination.</p>
+
+<p>You will need at least 10MB of free disk space for building, and of course
+the full system sources installed. I also assume that the sources are
+quite -current. There is also a back-ported version of the scripts prepared by
+<A HREF="mailto:dinesh@alphaque.com">Dinesh Nair</a> which builds ok on
+2.2.6-R systems.</p>
+
+<p>Version 0.31 was packed with pax(1) - newer versions are packed again
+with tar and gzip to avoid confusion... :-)</p>
+
+<p>I'm very interested in hearing from you about your experiences - if you
+come up with a setup you think is interesting, please let me know!</p>
+
+<HR shade align="center">
+<A NAME="info"><h3>Where can I get more info?</h3>
+
+<p>Almost all of the programs included on the floppies are exactly the
+same versions as in normal FreeBSD installation, so that the normal
+manual pages apply. However, I didn't include the manpages themselves -
+they would take over 200kB!</p>
+
+<p> For the total newbies, which would use (I assume)
+the 'dialup' version, there is a short README on the floppy which gives
+step by step instructions on how to get a dialup connection. There is also
+a script called 'dialup' which attempts to configure PPP to allow for automatic
+log in to your provider, and for background operation.
+There is also a small help system ('help' command)</p>
+
+<p> There are some system utilities which are unique to PicoBSD, and at this
+ moment they are documented in detail only in source and READMEs :-(.</p>
+
+
+<p>As for the new releases which will (hopefully) be prepared in the future:
+just keep an eye on this page. I'll also send announcements to FreeBSD mailing
+lists.</p>
+
+<HR shade align="center">
+<A NAME="future"><h3>Plans for the future</h3>
+
+<p>Well, I hope that thanks to your comments I'll be able to continuously
+improve the setup and contents of PicoBSD. I also have specific dreams (if
+dreams can be specific..) - here they are, as an incentive to your
+imagination and coding skills:</p>
+<ul>
+<li>
+To write a command line tool patterned after Cisco IOS, which could configure
+various aspects of router-like version of PicoBSD.
+<p>Well, currently you can read very preliminary draft of proposed
+architecture, called the <A HREF="UCI.html">Unified Configuration Interface.</a></p>
+</li>
+<li>
+To put an XWindow-like GUI on the 'dialup' floppy. (Update: you can look at
+<A HREF="http://www.freebsd.org/~picobsd/preview/preview2.tgz">preview
+version</a> and send me your comments. <b>I need some help in porting newer
+version of W</b>).
+</li>
+<li>
+To gain some experience with solid state disks, and prepare standard images
+for e.g. 4MB versions of SSD, with Cisco 25xx-like contents... I also hope
+ to achieve this goal in the nearest
+future, thanks to involvement of some PicoBSD enthusiast :-)</p>
+(Update: I'm experimenting with an M-System's 16MB flash right now, and
+there is also ongoing development for a driver for their DiskOnChip)
+</li>
+<li>
+To be able to boot from more primitive filesystem than FFS - DOS or Minix
+would be just fine, as they don't waste so much space for their internals.
+</li>
+<li>
+To have an alternative to current MFS - it wastes a lot of space just
+because it mimicks the normal FFS on top of memory blocks...
+</li>
+<li>
+To further minimize the memory footprint of router-like setup. I'd like it
+to be able to run truely effortlessly on 4MB machines... This would
+probably include rewriting oinit(8) to run multithreaded.
+</li>
+<li>
+And many others... You can find a complete list
+<A HREF="TODO.html">here</a>.
+</li>
+</ul>
+
+<A NAME="credits"><h3>Credits</h3>
+
+<p>The following people are either responsible for the very existence of this
+project, or significantly eased my pains in gaining necessary knowledge:</p>
+<ul>
+<li>
+the whole FreeBSD team for this magnificent OS, and their hard work of
+continuous development,
+</li>
+<li>
+Dinesh Nair, for co-development and preparing of the version which compiled
+on 2.2.5-RELEASE,
+</li>
+<li>
+Joe Greco, for his encouraging example of XKERNEL (some parts of the scripts
+still bear his fingerprints :-) (you can get it
+ <A HREF="../../../xkernel.tgz">here</a>).
+</li>
+<li>Goran Hasse of <A HREF="http://www.raditex.se">Raditex AB, Sweden</a>, for
+sending me M-Systems' and SanDisk flash disks to experiment with.
+</li>
+<li>
+Mike Smith for various tips and encouragement.
+</li>
+<li>
+freebsd-* mailing lists participants, which helped me with some other
+pieces.
+</li>
+<li>
+and many other people who keep encouraging me to continue this work. Thanks,
+guys!
+</li>
+</ul>
+
+<A NAME="license"><h3>Licensing issues</h3>
+
+<p>PicoBSD is distributed under BSD copyright,
+which allows you to use it in various ways, including commercial
+applications. So grab it and enjoy! And if you feel that you want to help
+with this project, either by donating some time to write code, or by
+some other donation, just <A HREF="mailto:abial@freebsd.org">contact me</a>.</p>
+
+<h5>Last modified:
+@DATE@
+</h5>
+
+<HR shade align="left" size="2" width="100%">
+<CENTER><h5>Any comments? Send them to
+<A HREF="mailto:abial@freebsd.org">the author</A> </h5></CENTER>
+
+</BODY>
+</HTML>
diff --git a/release/picobsd/floppy.tree/boot.config b/release/picobsd/floppy.tree/boot.config
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/release/picobsd/floppy.tree/boot.config
diff --git a/release/picobsd/floppy.tree/etc/disktab b/release/picobsd/floppy.tree/etc/disktab
new file mode 100644
index 000000000000..ba97b44bd5f4
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/disktab
@@ -0,0 +1,85 @@
+#
+# Floppy formats:
+#
+# To make a filesystem on a floppy:
+# fdformat [-f <size>] fd<drive>[.<size>]
+# disklabel -B -r -w fd<drive>[.<size>] fd<size>
+# newfs <opts> fd<drive>[.<size>]
+#
+# with <opts>:
+# -t 2 - two heads
+# -u 9|15|18 - sectors per track
+# (using the default value of 1/4096 is not much useful for floppies)
+# -l 1 - interleave 1 (for most floppies)
+# -i 65536 - bytes of data per i-node
+# (the default -i value will render you with a floppy wasting way
+# too much space in i-node areas)
+
+fd360:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#9:nc#40:\
+ :pa#720:oa#0:ba#4096:fa#512:\
+ :pb#720:ob#0:bb#4096:fb#512:\
+ :pc#720:oc#0:bc#4096:fc#512:
+
+fd720:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#9:nc#80:\
+ :pa#1440:oa#0:ba#4096:fa#512:\
+ :pb#1440:ob#0:bb#4096:fb#512:\
+ :pc#1440:oc#0:bc#4096:fc#512:
+
+fd1200|floppy5|5in|5.25in High Density Floppy:\
+ :ty=floppy:se#512:nt#2:rm#360:ns#15:nc#80:\
+ :pa#2400:oa#0:ba#4096:fa#512:\
+ :pb#2400:ob#0:bb#4096:fb#512:\
+ :pc#2400:oc#0:bc#4096:fc#512:
+
+fd1440|floppy|floppy3|3in|3.5in High Density Floppy:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#18:nc#80:\
+ :pa#2880:oa#0:ba#4096:fa#512:\
+ :pb#2880:ob#0:bb#4096:fb#512:\
+ :pc#2880:oc#0:bc#4096:fc#512:
+
+fd1024|floppy0|3.5in Special Density Floppy:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#16:nc#64:\
+ :pa#2048:oa#0:ba#4096:fa#512:\
+ :pb#2048:ob#0:bb#4096:fb#512:\
+ :pc#2048:oc#0:bc#4096:fc#512:
+
+# a == root
+# b == swap
+# c == d == whole disk
+# e == /var
+# f == scratch
+# h == /usr
+
+cp3100new|Connor Peripherals 100MB IDE, with a different configuration:\
+ :dt=ST506:ty=winchester:se#512:nt#8:ns#33:nc#766: \
+ :pa#15840:oa#0:ta=4.2BSD:ba#4096:fa#512: \
+ :pb#24288:ob#15840:tb=swap: \
+ :pc#202224:oc#0: \
+ :pd#202224:od#0: \
+ :pe#15840:oe#40128:te=4.2BSD:be#4096:fe#512: \
+ :pg#15840:og#55968:tg=4.2BSD:bg#4096:fg#512: \
+ :ph#130416:oh#71808:th=4.2BSD:bh#4096:fh#512:
+
+sony650|Sony 650 MB MOD|\
+ :ty=removable:dt=SCSI:se#512:nt#1:ns#31:nc#18600:ts#1:rm#4800:\
+ :pc#576600:oc#0:\
+ :pa#576600:oa#0:ta=4.2BSD:ba#8192:fa#1024:
+
+mta3230|mo230|IBM MTA-3230 230 Meg 3.5inch Magneto-Optical:\
+ :ty=removeable:dt=SCSI:rm#3600:\
+ :se#512:nt#64:ns#32:nc#216:sc#2048:su#444384:\
+ :pa#444384:oa#0:ba#4096:fa#0:ta=4.2BSD:\
+ :pc#444384:oc#0:
+
+minimum:ty=mfs:se#512:nt#1:rm#300:\
+ :ns#2880:nc#1:\
+ :pa#2880:oa#0:ba#4096:fa#512:\
+ :pc#2880:oc#0:bc#4096:fc#512:
+
+zip100|zip 100:\
+ :ty=removable:se#512:nc#96:nt#64:ns#32:\
+ :pa#196608:oa#0:ba#4096:fa#512:\
+ :pb#196608:ob#0:bb#4096:fb#512:\
+ :pc#196608:oc#0:bc#4096:fc#512:
diff --git a/release/picobsd/floppy.tree/etc/fstab b/release/picobsd/floppy.tree/etc/fstab
new file mode 100644
index 000000000000..38e443535d82
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/fstab
@@ -0,0 +1,4 @@
+/dev/fd0c /fd ufs rw,noauto 0 0
+/dev/wd0s1 /dos msdos rw,noauto 0 0
+/dev/wd0s1a /wd ufs rw,noauto 0 0
+/dev/wcd0c /cdrom cd9660 ro,noauto 0 0
diff --git a/release/picobsd/floppy.tree/etc/gettytab b/release/picobsd/floppy.tree/etc/gettytab
new file mode 100644
index 000000000000..d2e252c97d1f
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/gettytab
@@ -0,0 +1,38 @@
+# from: @(#)gettytab 5.14 (Berkeley) 3/27/91
+#
+default:\
+ :cb:ce:ck:lc:fd#1000:cl:im=\r\nPicoBSD (%h) (%t)\r\n\r\n:sp#1200:
+
+P|Pc|Pc console:\
+ :ht:np:sp#115200:
+
+# Fixed speed entries
+2|std.9600|9600-baud:\
+ :np:sp#9600:
+g|std.19200|19200-baud:\
+ :np:sp#19200:
+std.38400|38400-baud:\
+ :np:sp#38400:
+std.57600|57600-baud:\
+ :np:sp#57600:
+std.115200|115200-baud:\
+ :np:sp#115200:
+
+# Entry specifying explicit device settings. See termios(4) and
+# /usr/include/termios.h, too. The entry forces the tty into
+# CLOCAL mode (so no DCD is required), and uses Xon/Xoff flow control.
+#
+# cflags: CLOCAL | HUPCL | CREAD | CS8
+# oflags: OPOST | ONLCR | OXTABS
+# iflags: IXOFF | IXON | ICRNL | IGNPAR
+# lflags: IEXTEN | ICANON | ISIG | ECHOCTL | ECHO | ECHOK | ECHOE | ECHOKE
+#
+# The `0' flags don't have input enabled. The `1' flags don't echo.
+# (Echoing is done inside getty itself.)
+#
+local.9600|CLOCAL tty @ 9600 Bd:\
+ :c0#0x0000c300:c1#0x0000cb00:c2#0x0000cb00:\
+ :o0#0x00000007:o1#0x00000002:o2#0x00000007:\
+ :i0#0x00000704:i1#0x00000000:i2#0x00000704:\
+ :l0#0x000005cf:l1#0x00000000:l2#0x000005cf:\
+ :sp#9600:
diff --git a/release/picobsd/floppy.tree/etc/group b/release/picobsd/floppy.tree/etc/group
new file mode 100644
index 000000000000..abbd733f3b0b
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/group
@@ -0,0 +1,19 @@
+wheel:*:0:root,user
+daemon:*:1:daemon
+kmem:*:2:root
+sys:*:3:root
+tty:*:4:root
+operator:*:5:root
+mail:*:6:
+bin:*:7:
+news:*:8:
+man:*:9:
+games:*:13:
+staff:*:20:root,user
+guest:*:31:root
+uucp:*:66:
+xten:*:67:xten
+dialer:*:68:
+network:*:69:
+nogroup:*:65533:
+nobody:*:65534:
diff --git a/release/picobsd/floppy.tree/etc/host.conf b/release/picobsd/floppy.tree/etc/host.conf
new file mode 100644
index 000000000000..753112455a69
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/host.conf
@@ -0,0 +1,3 @@
+# $FreeBSD$
+hosts
+bind
diff --git a/release/picobsd/floppy.tree/etc/hosts b/release/picobsd/floppy.tree/etc/hosts
new file mode 100644
index 000000000000..fdcd49b4b7c4
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/hosts
@@ -0,0 +1,14 @@
+# $FreeBSD$
+# This file contains ip <-> hostname mapping.
+# It is also used for autoconfiguration based on Ethernet address
+# and other things. The initial part is just a standard /etc/hosts
+# for local hosts that share this file.
+127.0.0.1 localhost localhost.mydomain.edu
+127.0.0.1 pico.mydomain.edu
+10.0.0.1 default
+
+#ethertable This line starts the ethernet->hostname mapping
+# main_ether hostname
+# 00:12:34:56:78:9a myaddress
+# default default
+
diff --git a/release/picobsd/floppy.tree/etc/inetd.conf b/release/picobsd/floppy.tree/etc/inetd.conf
new file mode 100644
index 000000000000..c7c50de341e4
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/inetd.conf
@@ -0,0 +1,21 @@
+#
+# Internet server configuration database
+#
+# @(#)inetd.conf 5.4 (Berkeley) 6/30/90
+#
+telnet stream tcp nowait root /usr/libexec/telnetd telnetd
+#
+# "Small servers" -- used to be standard on, but we're more conservative
+# about things due to Internet security concerns. Only turn on what you
+# need.
+#
+#daytime stream tcp nowait root internal
+#daytime dgram udp wait root internal
+#time stream tcp nowait root internal
+#time dgram udp wait root internal
+#echo stream tcp nowait root internal
+#echo dgram udp wait root internal
+#discard stream tcp nowait root internal
+#discard dgram udp wait root internal
+#chargen stream tcp nowait root internal
+#chargen dgram udp wait root internal
diff --git a/release/picobsd/floppy.tree/etc/login.conf b/release/picobsd/floppy.tree/etc/login.conf
new file mode 100644
index 000000000000..4337b1fb7481
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/login.conf
@@ -0,0 +1,118 @@
+# This file controls resource limits, accounting limits and
+# default user environment settings.
+#
+# $FreeBSD$
+#
+
+
+# Authentication methods
+
+auth-defaults:\
+ :auth=passwd:
+
+auth-root-defaults:\
+ :auth-login=passwd:\
+ :auth-rlogin=passwd:\
+
+auth-ftp-defaults:\
+ :auth=passwd:
+
+# Example defaults
+# These settings are used by login(1) by default for classless users
+# Note that entries like "cputime" set both "cputime-cur" and "cputime-max"
+
+default:\
+ :cputime=infinity:\
+ :datasize-cur=22M:\
+ :stacksize-cur=8M:\
+ :memorylocked-cur=10M:\
+ :memoryuse-cur=30M:\
+ :filesize=infinity:\
+ :coredumpsize=0:\
+ :maxproc-cur=64:\
+ :openfiles-cur=64:\
+ :priority=0:\
+ :requirehome@:\
+ :umask=022:\
+ :tc=auth-defaults:
+
+# standard - standard user defaults
+#
+standard:\
+ :copyright=/etc/COPYRIGHT:\
+ :welcome=/etc/motd:\
+ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,EDITOR=/usr/bin/ee:\
+ :path=~/bin /bin /usr/bin:\
+ :nologin=/var/run/nologin:\
+ :cputime=1h30m:\
+ :datasize=8M:\
+ :stacksize=2M:\
+ :memorylocked=4M:\
+ :memoryuse=8M:\
+ :filesize=8M:\
+ :coredumpsize=0:\
+ :openfiles=24:\
+ :maxproc=32:\
+ :priority=0:\
+ :requirehome:\
+ :passwordtime=90d:\
+ :umask=002:\
+ :ignoretime@:\
+ :tc=default:
+#
+# Staff users - few restrictions and allow login anytime
+#
+staff:\
+ :ignorenologin:\
+ :ignoretime:\
+ :requirehome@:\
+ :accounted@:\
+ :path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
+ :umask=022:\
+ :tc=standard:
+
+
+#
+# root - fallback for root logins
+#
+root:\
+ :path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
+ :cputime=infinity:\
+ :datasize=infinity:\
+ :stacksize=infinity:\
+ :memorylocked=infinity:\
+ :memoryuse=infinity:\
+ :filesize=infinity:\
+ :coredumpsize=0:\
+ :openfiles=infinity:\
+ :maxproc=infinity:\
+ :memoryuse-cur=32M:\
+ :maxproc-cur=64:\
+ :openfiles-cur=1024:\
+ :priority=0:\
+ :requirehome@:\
+ :umask=022:\
+ :tc=auth-root-defaults:\
+#
+# Settings used by /etc/rc
+#
+daemon:\
+ :coredumpsize@:\
+ :coredumpsize-cur=0:\
+ :datasize=infinity:\
+ :datasize-cur@:\
+ :maxproc=512:\
+ :maxproc-cur@:\
+ :memoryuse-cur=64M:\
+ :memorylocked-cur=64M:\
+ :openfiles=1024:\
+ :openfiles-cur@:\
+ :stacksize=16M:\
+ :stacksize-cur@:\
+ :tc=default:
+#
+# Polish Users Accounts. Setup proper environment variables.
+#
+polish:Polish Users Accounts:\
+ :lang=pl_pl.ISO-8859-2:\
+ :tc=default:
diff --git a/release/picobsd/floppy.tree/etc/master.passwd b/release/picobsd/floppy.tree/etc/master.passwd
new file mode 100644
index 000000000000..9d85cdf91b0e
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/master.passwd
@@ -0,0 +1,7 @@
+root:$1$xOOaGnKU$U9QdsCI40XXcCUMBN.7Az.:0:0::0:0:Charlie &:/root:/bin/sh
+toor:*:0:0::0:0:Bourne-again Superuser:/root:
+daemon:*:1:1::0:0:Owner of many system processes:/root:/nonexistent
+operator:*:2:20::0:0:System &:/usr/guest/operator:/bin/csh
+bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/nonexistent
+nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/nonexistent
+user:$1$T9q8Coad$WatJttamwr2UAdbfKbWxj.:1002:1002:polish:0:0:user:/home/user:/bin/sh
diff --git a/release/picobsd/floppy.tree/etc/mfs.login.conf b/release/picobsd/floppy.tree/etc/mfs.login.conf
new file mode 100644
index 000000000000..ba74169f9a2b
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/mfs.login.conf
@@ -0,0 +1,62 @@
+# $FreeBSD$
+
+# Authentication methods
+
+auth-defaults:\
+ :auth=krb_skey_or_passwd,passwd,kerberos,skey:
+
+auth-root-defaults:\
+ :auth-login=krb_skey_or_passwd,passwd,kerberos,skey:\
+ :auth-rlogin=krb_or_skey,kerberos,skey:
+auth-ftp-defaults:\
+ :auth=skey_or_pwd,passwd,skey:
+# Example defaults
+default:\
+ :cputime=infinity:\
+ :datasize-cur=22M:\
+ :stacksize-cur=8M:\
+ :memorylocked-cur=10M:\
+ :memoryuse-cur=30M:\
+ :filesize=infinity:\
+ :coredumpsize=infinity:\
+ :maxproc-cur=64:\
+ :openfiles-cur=64:\
+ :priority=0:\
+ :requirehome@:\
+ :umask=022:\
+ :tc=auth-defaults:
+
+# root - fallback for root logins
+root:\
+ :path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
+ :cputime=infinity:\
+ :datasize=infinity:\
+ :stacksize=infinity:\
+ :memorylocked=infinity:\
+ :memoryuse=infinity:\
+ :filesize=infinity:\
+ :coredumpsize=infinity:\
+ :openfiles=infinity:\
+ :maxproc=infinity:\
+ :memoryuse-cur=32M:\
+ :maxproc-cur=64:\
+ :openfiles-cur=1024:\
+ :priority=0:\
+ :requirehome@:\
+ :umask=022:\
+ :tc=auth-root-defaults:
+# Settings used by /etc/rc
+daemon:\
+ :coredumpsize@:\
+ :coredumpsize-cur=0:\
+ :datasize=infinity:\
+ :datasize-cur@:\
+ :maxproc=512:\
+ :maxproc-cur@:\
+ :memoryuse-cur=64M:\
+ :memorylocked-cur=64M:\
+ :openfiles=1024:\
+ :openfiles-cur@:\
+ :stacksize=16M:\
+ :stacksize-cur@:\
+ :tc=default:
diff --git a/release/picobsd/floppy.tree/etc/mfs.rc b/release/picobsd/floppy.tree/etc/mfs.rc
new file mode 100644
index 000000000000..c82b583d6442
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/mfs.rc
@@ -0,0 +1,27 @@
+#!/bin/sh
+# $FreeBSD$
+# WARNING !!! We remove this file during execution (see EOF).
+# Awful things happen if its size is > 1024B
+
+stty status '^T'
+trap : 2
+trap : 3
+
+HOME=/; export HOME
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
+export PATH
+
+trap "echo 'Reboot interrupted'; exit 1" 3
+
+### Special setup for one floppy PICOBSD ###
+mount -o rdonly /dev/fd0 /start_floppy
+cd /start_floppy/etc ; cp -Rp . /etc/
+cp -Rp /start_floppy/root /
+cd /etc
+gzip -d *.gz
+pwd_mkdb -p ./master.passwd
+umount /start_floppy
+echo "Ok. (Now you can remove /dev/fd0 if you like)"
+echo ""
+. rc
+exit 0
diff --git a/release/picobsd/floppy.tree/etc/ppp/ppp.conf b/release/picobsd/floppy.tree/etc/ppp/ppp.conf
new file mode 100644
index 000000000000..ed5da5dd72ce
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/ppp/ppp.conf
@@ -0,0 +1,8 @@
+# PPP Sample Configuration File
+# Written by Toshiharu OHNO
+default:
+ set device /dev/cuaa1
+ set speed 38400
+ disable lqr
+ deny lqr
+ set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0 OK-AT-OK \\dATDT\\T TIMEOUT 40 CONNECT"
diff --git a/release/picobsd/floppy.tree/etc/ppp/ppp.deny b/release/picobsd/floppy.tree/etc/ppp/ppp.deny
new file mode 100644
index 000000000000..51e1e9bd03e3
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/ppp/ppp.deny
@@ -0,0 +1,15 @@
+# list of users disallowed any pppd access via 'system
+# password login'.
+# read by pppd(8).
+root
+toor
+daemon
+operator
+bin
+games
+news
+man
+ftp
+uucp
+xten
+ingres
diff --git a/release/picobsd/floppy.tree/etc/ppp/ppp.linkup b/release/picobsd/floppy.tree/etc/ppp/ppp.linkup
new file mode 100644
index 000000000000..05107c6df855
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/ppp/ppp.linkup
@@ -0,0 +1,10 @@
+# Example of ppp.linkup file
+#
+iij-demand:
+ delete ALL
+ add 0 0 HISADDR
+#
+# Otherwise, simply add peer as default gateway.
+#
+MYADDR:
+ add 0 0 HISADDR
diff --git a/release/picobsd/floppy.tree/etc/ppp/ppp.secret.sample b/release/picobsd/floppy.tree/etc/ppp/ppp.secret.sample
new file mode 100644
index 000000000000..bfaab7681aa5
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/ppp/ppp.secret.sample
@@ -0,0 +1,23 @@
+##################################################
+#
+# Example of ppp.secret file
+#
+# This file is used to authenticate incoming connections.
+# You must ``enable'' either PAP or CHAP in your ppp.conf file.
+# The peer may then use any of the Authname/Authkey pairs listed.
+# If an IP address is given, it will be assigned to the peer.
+#
+# If an entry exists for your local machine (as given by the
+# ``hostname -s'' command), the password specified will be
+# required for all server socket connections. Refer to the ppp(8)
+# and pppctl(8) man pages for further details.
+#
+# $FreeBSD$
+#
+##################################################
+
+# Authname Authkey Peer's IP address
+
+oscar OurSecretKey 192.244.184.34/24
+BigBird X4dWg9327 192.244.184.33/32
+tama localPasswdForControl
diff --git a/release/picobsd/floppy.tree/etc/profile b/release/picobsd/floppy.tree/etc/profile
new file mode 100644
index 000000000000..deb3213e76f2
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/profile
@@ -0,0 +1,4 @@
+# System-wide .profile file for sh(1).
+BLOCKSIZE=K; export BLOCKSIZE
+PATH=/stand:.; export PATH
+set -E
diff --git a/release/picobsd/floppy.tree/etc/protocols b/release/picobsd/floppy.tree/etc/protocols
new file mode 100644
index 000000000000..9555c28018a7
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/protocols
@@ -0,0 +1,11 @@
+#
+# Internet (IP) protocols
+ip 0 IP # internet protocol, pseudo protocol number
+icmp 1 ICMP # internet control message protocol
+igmp 2 IGMP # Internet Group Management
+tcp 6 TCP # transmission control protocol
+udp 17 UDP # user datagram protocol
+ipv6 41 IPV6 # ipv6
+ospf 89 OSPFIGP # Open Shortest Path First IGP
+pim 103 PIM # Protocol Independent Multicast
+pgm 113 PGM # PGM
diff --git a/release/picobsd/floppy.tree/etc/rc b/release/picobsd/floppy.tree/etc/rc
new file mode 100644
index 000000000000..84c0fb8efc48
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/rc
@@ -0,0 +1,67 @@
+#!/bin/sh
+# $FreeBSD$
+############################################
+### Special setup for one floppy PICOBSD ###
+### THIS IS NOT THE NORMAL /etc/rc !!!!! ###
+############################################
+mount -a -t nonfs
+# before calling rc.conf, try to identify the system by using the
+# ethernet address and name of the first interface. This is available
+# to rc.conf and others as $main_eth $main_if for further processing.
+
+main_ether=""
+for main_if in `ifconfig -l` ; do
+ set `ifconfig $main_if`
+ while [ "$1" != "" ] ; do
+ if [ $1 = "ether" ] ; then
+ main_ether=$2
+ break 2
+ else
+ shift
+ fi
+ done
+done
+
+if [ -f /etc/rc.conf ]; then
+ . /etc/rc.conf
+fi
+rm -f /var/run/*
+if [ "x$swapfile" != "xNO" -a -w "$swapfile" -a -b /dev/vn0b ]; then
+ echo "Adding $swapfile as additional swap."
+ vnconfig /dev/vn0b $swapfile && swapon /dev/vn0b
+fi
+# configure serial devices
+if [ -f /etc/rc.serial ]; then
+ . /etc/rc.serial
+fi
+# start up the initial network configuration.
+if [ -f /etc/rc.network ]; then
+ . /etc/rc.network
+ network_pass1
+fi
+mount -a -t nfs
+chmod 666 /dev/tty[pqrsPQRS]*
+# clean up left-over files
+(cd /var/run && { cp /dev/null utmp; chmod 644 utmp; })
+if [ -n "$network_pass1_done" ]; then
+ network_pass2
+fi
+if [ -n "$network_pass2_done" ]; then
+ network_pass3
+fi
+if [ "X${inetd_enable}" = X"YES" -a -f /stand/inetd ]; then
+ echo "Starting inetd."; inetd ${inetd_flags}
+fi
+
+[ "X${sshd_enable}" = "XYES" ] && [ -f /stand/sshd ] && \
+ sshd -f /etc/sshd_config
+
+dev_mkdb
+
+echo ''
+if [ "x$swapfile" = "xNO" ]; then
+ echo "WARNING: no swap partition!"
+ echo "Don't run too many programs at the same time..."
+fi
+cat /etc/motd
+exit 0
diff --git a/release/picobsd/floppy.tree/etc/rc.conf b/release/picobsd/floppy.tree/etc/rc.conf
new file mode 100644
index 000000000000..12744fffaaff
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/rc.conf
@@ -0,0 +1,72 @@
+#!/bin/sh
+# $FreeBSD$
+#
+# rc.conf for picobsd.
+# $main_ether and $main_if are set from rc to the ethernet address and
+# name of the first ethernet interface, if available, so a simple
+# here-document below can be used for autoconfiguration.
+# Remaining parameters are set using a switch.
+
+rc_conf_set_defaults() {
+syslogd_enable="NO"
+pccard_enable="NO"
+swapfile="NO" # Set to name of swapfile if aux swapfile desired.
+firewall_enable="NO" # firewall type (see /etc/rc.firewall) or NO
+tcp_extensions="NO" # Allow RFC1323 & RFC1644 extensions (or NO).
+ifconfig_lo0="inet 127.0.0.1" # default loopback device configuration.
+#ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" # Sample alias entry.
+### Network daemons options: ###
+sshd_enable="YES" # if present...
+inetd_enable="YES" # Run the network daemon dispatcher (or NO)
+inetd_flags="" # Optional flags to inetd
+snmpd_enable="NO" # Run the SNMP daemon (or NO)
+snmpd_flags="-C -c /etc/snmpd.conf" # Optional flags to snmpd
+### Network routing options: ###
+defaultrouter="NO" # Set to default gateway (or NO).
+static_routes="" # Set to static route list (or leave empty).
+gateway_enable="NO" # Set to YES if this host will be a gateway.
+arpproxy_all="" # replaces obsolete kernel option ARP_PROXYALL.
+mask="0xffffff00"
+}
+
+# the following lets the user specify a name and ip for his system
+read_address() {
+ echo "Please enter a hostname and IP address for your system $main_ether"
+ read hostname the_ip
+ if [ "X$hostname" != "X" ] ; then
+ echo "# $main_ether $hostname" >> /etc/hosts
+ echo "$the_ip $hostname" >> /etc/hosts
+ else
+ hostname=default
+ fi
+}
+
+rc_conf_set_defaults
+
+hostname=""
+while read a b c ; do
+ if [ "$a" = "#ethertable" ] ; then
+ hostname="."
+ elif [ "X$hostname" = "X." -a "X$a" = "X#" -a "X$b" = "X$main_ether" ]
+ then
+ hostname=$c
+ break
+ fi
+done < /etc/hosts
+if [ "X$hostname" = "X" -o "X$hostname" = "X." ] ; then
+ if [ "X$main_ether" = "X" ] ; then
+ echo "No ethernets found, using localhost"
+ hostname=localhost
+ else
+ read_address
+ fi
+fi
+
+eval ifconfig_${main_if}=\" \$hostname netmask \$mask\"
+network_interfaces=`ifconfig -l`
+
+### Allow local configuration override at the very end here ##
+### can make use of a case statement to set per-host things.
+if [ -f /etc/rc.conf.local ]; then
+ . /etc/rc.conf.local
+fi
diff --git a/release/picobsd/floppy.tree/etc/rc.firewall b/release/picobsd/floppy.tree/etc/rc.firewall
new file mode 100644
index 000000000000..c2860baedce0
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/rc.firewall
@@ -0,0 +1,172 @@
+############
+# Setup system for firewall service.
+# $FreeBSD$
+
+############
+# Define the firewall type in /etc/rc.conf. Valid values are:
+# open - will allow anyone in
+# client - will try to protect just this machine
+# simple - will try to protect a whole network
+# closed - totally disables IP services except via lo0 interface
+# UNKNOWN - disables the loading of firewall rules.
+# filename - will load the rules in the given filename (full path required)
+#
+# For ``client'' and ``simple'' the entries below should be customized
+# appropriately.
+
+############
+#
+# If you don't know enough about packet filtering, we suggest that you
+# take time to read this book:
+#
+# Building Internet Firewalls
+# Brent Chapman and Elizabeth Zwicky
+#
+# O'Reilly & Associates, Inc
+# ISBN 1-56592-124-0
+# http://www.ora.com/
+#
+# For a more advanced treatment of Internet Security read:
+#
+# Firewalls & Internet Security
+# Repelling the wily hacker
+# William R. Cheswick, Steven M. Bellowin
+#
+# Addison-Wesley
+# ISBN 0-201-6337-4
+# http://www.awl.com/
+#
+
+if [ "x$1" != "x" ]; then
+ firewall_type=$1
+fi
+
+############
+# Set quiet mode if requested
+if [ "x$firewall_quiet" = "xYES" ]; then
+ fwcmd="/sbin/ipfw -q"
+else
+ fwcmd="/sbin/ipfw"
+fi
+
+############
+# Flush out the list before we begin.
+$fwcmd -f flush
+
+############
+# If you just configured ipfw in the kernel as a tool to solve network
+# problems or you just want to disallow some particular kinds of traffic
+# they you will want to change the default policy to open. You can also
+# do this as your only action by setting the firewall_type to ``open''.
+
+# $fwcmd add 65000 pass all from any to any
+
+############
+# Only in rare cases do you want to change these rules
+$fwcmd add 1000 pass all from any to any via lo0
+$fwcmd add 1010 deny all from 127.0.0.0/8 to 127.0.0.0/8
+
+
+# Prototype setups.
+if [ "${firewall_type}" = "open" -o "${firewall_type}" = "OPEN" ]; then
+
+ $fwcmd add 65000 pass all from any to any
+
+elif [ "${firewall_type}" = "client" ]; then
+
+ ############
+ # This is a prototype setup that will protect your system somewhat against
+ # people from outside your own network.
+ ############
+
+ # set these to your network and netmask and ip
+ net="192.168.4.0"
+ mask="255.255.255.0"
+ ip="192.168.4.17"
+
+ # Allow any traffic to or from my own net.
+ $fwcmd add pass all from ${ip} to ${net}:${mask}
+ $fwcmd add pass all from ${net}:${mask} to ${ip}
+
+ # Allow TCP through if setup succeeded
+ $fwcmd add pass tcp from any to any established
+
+ # Allow setup of incoming email
+ $fwcmd add pass tcp from any to ${ip} 25 setup
+
+ # Allow setup of outgoing TCP connections only
+ $fwcmd add pass tcp from ${ip} to any setup
+
+ # Disallow setup of all other TCP connections
+ $fwcmd add deny tcp from any to any setup
+
+ # Allow DNS queries out in the world
+ $fwcmd add pass udp from any 53 to ${ip}
+ $fwcmd add pass udp from ${ip} to any 53
+
+ # Allow NTP queries out in the world
+ $fwcmd add pass udp from any 123 to ${ip}
+ $fwcmd add pass udp from ${ip} to any 123
+
+ # Everything else is denied as default.
+
+elif [ "${firewall_type}" = "simple" ]; then
+
+ ############
+ # This is a prototype setup for a simple firewall. Configure this machine
+ # as a named server and ntp server, and point all the machines on the inside
+ # at this machine for those services.
+ ############
+
+ # set these to your outside interface network and netmask and ip
+ oif="ed0"
+ onet="192.168.4.0"
+ omask="255.255.255.0"
+ oip="192.168.4.17"
+
+ # set these to your inside interface network and netmask and ip
+ iif="ed1"
+ inet="192.168.3.0"
+ imask="255.255.255.0"
+ iip="192.168.3.17"
+
+ # Stop spoofing
+ $fwcmd add deny all from ${inet}:${imask} to any in via ${oif}
+ $fwcmd add deny all from ${onet}:${omask} to any in via ${iif}
+
+ # Stop RFC1918 nets on the outside interface
+ $fwcmd add deny all from 192.168.0.0:255.255.0.0 to any via ${oif}
+ $fwcmd add deny all from 172.16.0.0:255.240.0.0 to any via ${oif}
+ $fwcmd add deny all from 10.0.0.0:255.0.0.0 to any via ${oif}
+
+ # Allow TCP through if setup succeeded
+ $fwcmd add pass tcp from any to any established
+
+ # Allow setup of incoming email
+ $fwcmd add pass tcp from any to ${oip} 25 setup
+
+ # Allow access to our DNS
+ $fwcmd add pass tcp from any to ${oip} 53 setup
+
+ # Allow access to our WWW
+ $fwcmd add pass tcp from any to ${oip} 80 setup
+
+ # Reject&Log all setup of incoming connections from the outside
+ $fwcmd add deny log tcp from any to any in via ${oif} setup
+
+ # Allow setup of any other TCP connection
+ $fwcmd add pass tcp from any to any setup
+
+ # Allow DNS queries out in the world
+ $fwcmd add pass udp from any 53 to ${oip}
+ $fwcmd add pass udp from ${oip} to any 53
+
+ # Allow NTP queries out in the world
+ $fwcmd add pass udp from any 123 to ${oip}
+ $fwcmd add pass udp from ${oip} to any 123
+
+ # Everything else is denied as default.
+
+elif [ "${firewall_type}" != "UNKNOWN" -a -r "${firewall_type}" ]; then
+ $fwcmd ${firewall_type}
+fi
diff --git a/release/picobsd/floppy.tree/etc/rc.network b/release/picobsd/floppy.tree/etc/rc.network
new file mode 100644
index 000000000000..235db0aa14fd
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/rc.network
@@ -0,0 +1,79 @@
+#!/bin/sh -
+# $FreeBSD$
+network_pass1() {
+ echo -n 'Doing initial network setup:'
+ # Set the host name if it is not already set
+ if [ -z "`hostname -s`" ] ; then
+ hostname $hostname
+ echo ' hostname'
+ fi
+ # Set up all the network interfaces, calling startup scripts if needed
+ for ifn in ${network_interfaces}; do
+ if [ -e /etc/start_if.${ifn} ]; then
+ . /etc/start_if.${ifn}
+ fi
+ # Do the primary ifconfig if specified
+ eval ifconfig_args=\$ifconfig_${ifn}
+ if [ -n "${ifconfig_args}" ] ; then
+ ifconfig ${ifn} ${ifconfig_args}
+ fi
+ # Check to see if aliases need to be added
+ alias=0
+ while :
+ do
+ eval ifconfig_args=\$ifconfig_${ifn}_alias${alias}
+ if [ -n "${ifconfig_args}" ]; then
+ ifconfig ${ifn} ${ifconfig_args} alias
+ alias=`expr ${alias} + 1`
+ else
+ break;
+ fi
+ done
+ ifconfig ${ifn}
+ done
+ # Load the filters if required
+ if [ -n "$firewall_enable" -a -f /etc/rc.firewall -a \
+ "x$firewall_enable" = "xYES" ] ; then
+ . /etc/rc.firewall
+ echo "Firewall rules loaded."
+ else
+ echo "Warning: kernel has firewall functionality, but firewall rules weren't loaded."
+ echo " All ip services are ENABLED by default."
+ fi
+ # Configure routing
+ if [ "x$defaultrouter" != "xNO" ] ; then
+ static_routes="default ${static_routes}"
+ route_default="default ${defaultrouter}"
+ fi
+ # Set up any static routes. This should be done before router discovery.
+ if [ "x${static_routes}" != "x" ]; then
+ for i in ${static_routes}; do
+ eval route_args=\$route_${i}
+ route add ${route_args}
+ done
+ fi
+ echo -n 'Additional routing options:'
+ if [ -n "$tcp_extensions" -a "x$tcp_extensions" != "xYES" ] ; then
+ echo -n ' tcp_extensions=NO'
+ sysctl -w net.inet.tcp.rfc1323=0 >/dev/null 2>&1
+ sysctl -w net.inet.tcp.rfc1644=0 >/dev/null 2>&1
+ fi
+ if [ "X$gateway_enable" = X"YES" ]; then
+ echo -n ' IP_gateway=YES'
+ sysctl -w net.inet.ip.forwarding=1 >/dev/null 2>&1
+ fi
+ if [ "X$arpproxy_all" = X"YES" ]; then
+ echo -n ' turning on ARP_PROXY_ALL: '
+ sysctl -w net.link.ether.inet.proxyall=1 2>&1
+ fi
+ echo '.'
+ network_pass1_done=YES # Let future generations know we made it.
+}
+
+network_pass2() {
+ network_pass2_done=YES
+}
+
+network_pass3() {
+ network_pass3_done=YES
+}
diff --git a/release/picobsd/floppy.tree/etc/rc.serial b/release/picobsd/floppy.tree/etc/rc.serial
new file mode 100644
index 000000000000..40fbd8a334cc
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/rc.serial
@@ -0,0 +1,127 @@
+#!/bin/sh
+# $FreeBSD$
+
+# Change some defaults for serial devices.
+# Standard defaults are:
+# dtrwait 300 drainwait 0
+# initial cflag from <sys/ttydefaults.h> = cread cs8 hupcl
+# initial iflag, lflag and oflag all 0
+# speed 9600
+# special chars from <sys/ttydefaults.h>
+# nothing locked
+# except for serial consoles the initial iflag, lflag and oflag are from
+# <sys/ttydefaults.h> and clocal is locked on.
+
+default() {
+ # Reset everything changed by the other functions to initial defaults.
+
+ ci=$1; shift # call in device identifier
+ co=$1; shift # call out device identifier
+
+ for i in $*
+ do
+ comcontrol /dev/tty$ci$i dtrwait 300 drainwait 0
+ stty </dev/ttyi$ci$i -clocal crtscts hupcl 9600 reprint ^R
+ stty </dev/ttyl$ci$i -clocal -crtscts -hupcl 0
+ stty </dev/cuai$co$i -clocal crtscts hupcl 9600 reprint ^R
+ stty </dev/cual$co$i -clocal -crtscts -hupcl 0
+ done
+}
+
+maybe() {
+ # Special settings.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # Don't use ^R; it breaks bash's ^R when typed ahead.
+ stty </dev/ttyi$ci$i reprint undef
+ stty </dev/cuai$co$i reprint undef
+ # Lock clocal off on dialin device for security.
+ stty </dev/ttyl$ci$i clocal
+ # Lock the speeds to use old binaries that don't support them.
+ # Any legal speed works to lock the initial speed.
+ stty </dev/ttyl$ci$i 300
+ stty </dev/cual$co$i 300
+ done
+}
+
+modem() {
+ # Modem that supports CTS and perhaps RTS handshaking.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # may depend on modem
+ comcontrol /dev/tty$ci$i dtrwait 100 drainwait 180
+ # Lock crtscts on.
+ # Speed reasonable for V42bis.
+ stty </dev/ttyi$ci$i crtscts 57600
+ stty </dev/ttyl$ci$i crtscts
+ stty </dev/cuai$co$i crtscts 57600
+ stty </dev/cual$co$i crtscts
+ done
+}
+
+mouse() {
+ # Mouse on either callin or callout port.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # Lock clocal on, hupcl off.
+ # Standard speed for Microsoft mouse.
+ stty </dev/ttyi$ci$i clocal -hupcl 1200
+ stty </dev/ttyl$ci$i clocal hupcl
+ stty </dev/cuai$co$i clocal -hupcl 1200
+ stty </dev/cual$co$i clocal hupcl
+ done
+}
+
+terminal() {
+ # Terminal that supports CTS and perhaps RTS handshaking
+ # with the cable or terminal arranged so that DCD is on
+ # at least while the terminal is on.
+ # Also works for bidirectional communications to another pc
+ # provided at most one side runs getty.
+ # Same as modem() except we want a faster speed and no dtrwait.
+
+ ci=$1; shift
+ co=$1; shift
+
+ modem $ci $co $*
+ for i in $*
+ do
+ comcontrol /dev/tty$ci$i dtrwait 0
+ stty </dev/ttyi$ci$i 115200
+ stty </dev/cuai$co$i 115200
+ done
+}
+
+# Don't use anything from this file unless you have some buggy programs
+# that require it.
+
+# Edit the functions and the examples to suit your system.
+# $1 is the call in device identifier, $2 is the call out device identifier
+# and the remainder of the line lists the device numbers.
+
+# Initialize assorted 8250-16550 (sio) ports.
+# maybe d a 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v
+# mouse d a 2
+# modem d a 1
+# terminal d a 0
+
+# Initialize all ports on a Cyclades-8yo.
+# modem c c 00 01 02 03 04 05 06 07
+
+# Initialize all ports on a Cyclades-16ye.
+# modem c c 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
+
+# Initialize all ports on a Digiboard 8.
+# modem D D 00 01 02 03 04 05 06 07
diff --git a/release/picobsd/floppy.tree/etc/remote b/release/picobsd/floppy.tree/etc/remote
new file mode 100644
index 000000000000..6f9fcaf4ad5d
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/remote
@@ -0,0 +1,50 @@
+# @(#)remote 5.2 (Berkeley) 6/30/90
+#
+# remote -- remote host description file
+# see tip(1), remote(5)
+#
+# dv device to use for the tty
+# el EOL marks (default is NULL)
+# du make a call flag (dial up)
+# pn phone numbers (@ =>'s search phones file; possibly taken from
+# PHONES environment variable)
+# at ACU type
+# ie input EOF marks (default is NULL)
+# oe output EOF string (default is NULL)
+# cu call unit (default is dv)
+# br baud rate (defaults to 300)
+# fs frame size (default is BUFSIZ) -- used in buffering writes on
+# receive operations
+# tc to continue a capability
+
+# Systems definitions
+netcom|Netcom Unix Access:\
+ :pn=\@:tc=unix1200:
+omen|Omen BBS:\
+ :pn=\@:tc=dos1200:
+
+# UNIX system definitions
+unix1200|1200 Baud dial-out to a UNIX system:\
+ :el=^U^C^R^O^D^S^Q:ie=%$:oe=^D:tc=dial1200:
+unix300|300 Baud dial-out to a UNIX system:\
+ :el=^U^C^R^O^D^S^Q:ie=%$:oe=^D:tc=dial300:
+
+# DOS system definitions
+dos1200|1200 Baud dial-out to a DOS system:\
+ :el=^U^C^R^O^D^S^Q:ie=%$:oe=^Z:pa=none:tc=dial1200:
+
+# General dialer definitions used below
+#
+# COURIER switch settings:
+# switch: 1 2 3 4 5 6 7 8 9 10
+# setting: D U D U D D U D U U
+# Rackmount: U U D U D U D D U D
+#
+dial2400|2400 Baud Hayes attributes:\
+ :dv=/dev/cuaa0:br#2400:cu=/dev/cuaa0:at=hayes:du:
+dial1200|1200 Baud Hayes attributes:\
+ :dv=/dev/cuaa0:br#1200:cu=/dev/cuaa0:at=hayes:du:
+
+# Hardwired line
+cuaa0b|cua0b:dv=/dev/cuaa0:br#2400
+cuaa0c|cua0c:dv=/dev/cuaa0:br#9600
diff --git a/release/picobsd/floppy.tree/etc/services b/release/picobsd/floppy.tree/etc/services
new file mode 100644
index 000000000000..eec499fafec7
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/services
@@ -0,0 +1,94 @@
+echo 4/ddp
+echo 7/tcp
+echo 7/udp
+discard 9/tcp
+discard 9/udp
+systat 11/tcp
+systat 11/udp
+daytime 13/tcp
+daytime 13/udp
+qotd 17/tcp
+qotd 17/udp
+chargen 19/tcp
+chargen 19/udp
+ftp-data 20/tcp
+ftp-data 20/udp
+ftp 21/tcp
+ftp 21/udp
+ssh 22/tcp
+ssh 22/udp
+telnet 23/tcp
+telnet 23/udp
+smtp 25/tcp
+smtp 25/udp
+time 37/tcp
+time 37/udp
+domain 53/tcp
+domain 53/udp
+tacacs-ds 65/tcp
+tacacs-ds 65/udp
+bootps 67/tcp
+bootps 67/udp
+bootpc 68/tcp
+bootpc 68/udp
+tftp 69/tcp
+tftp 69/udp
+gopher 70/tcp
+gopher 70/udp
+finger 79/tcp
+finger 79/udp
+http 80/tcp
+http 80/udp
+pop2 109/tcp
+pop2 109/udp
+pop3 110/tcp
+pop3 110/udp
+uucp-path 117/tcp
+uucp-path 117/udp
+nntp 119/tcp
+nntp 119/udp
+netbios-ns 137/tcp
+netbios-ns 137/udp
+netbios-dgm 138/tcp
+netbios-dgm 138/udp
+netbios-ssn 139/tcp
+netbios-ssn 139/udp
+imap 143/tcp
+imap 143/udp
+snmp 161/tcp
+snmp 161/udp
+snmptrap 162/tcp
+snmptrap 162/udp
+bgp 179/tcp
+bgp 179/udp
+irc 194/tcp
+irc 194/udp
+ipx 213/tcp
+ipx 213/udp
+imap3 220/tcp
+imap3 220/udp
+ldap 389/tcp
+ldap 389/udp
+netware-ip 396/tcp
+netware-ip 396/udp
+https 443/tcp
+https 443/udp
+exec 512/tcp
+biff 512/udp
+login 513/tcp
+who 513/udp
+cmd 514/tcp
+syslog 514/udp
+printer 515/tcp
+printer 515/udp
+talk 517/tcp
+talk 517/udp
+ntalk 518/tcp
+ntalk 518/udp
+timed 525/tcp
+timed 525/udp
+uucp 540/tcp
+uucp 540/udp
+uucp-rlogin 541/tcp
+uucp-rlogin 541/udp
+natd 8668/divert # Network Address Translation
diff --git a/release/picobsd/floppy.tree/etc/shells b/release/picobsd/floppy.tree/etc/shells
new file mode 100644
index 000000000000..df377f133737
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/shells
@@ -0,0 +1,6 @@
+# List of acceptable shells for chpass(1).
+# Ftpd will not allow users to connect who are not using
+# one of these shells.
+
+/bin/sh
+/bin/csh
diff --git a/release/picobsd/floppy.tree/etc/snmpd.conf b/release/picobsd/floppy.tree/etc/snmpd.conf
new file mode 100644
index 000000000000..29400dfb4b5e
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/snmpd.conf
@@ -0,0 +1,58 @@
+# load average checks
+
+# load [1MAX=DEFMAXLOADAVE] [5MAX=DEFMAXLOADAVE] [15MAX=DEFMAXLOADAVE]
+#
+# 1MAX: If the 1 minute load average is above this limit at query
+# time, the errorFlag will be set.
+# 5MAX: Similar, but for 5 min average.
+# 15MAX: Similar, but for 15 min average.
+
+# Check for loads:
+load 12 14 14
+
+# % snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.10
+
+# snmp agent errors
+
+# % snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.101
+
+# snmp version mib
+
+# % snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.100
+
+# System contact information
+
+syslocation PicoBSD
+syscontact root <root@pico>
+
+# Setting up the access control lists to the agent
+
+# sec.name source community
+com2sec local localhost private
+com2sec public default public
+
+# sec.model sec.name
+group local any local
+group public any public
+
+# incl/excl subtree mask
+view all included .1 80
+view system included system fe
+view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
+
+# context sec.model sec.level prefix read write not
+access public "" any noauth 0 system none none
+access local "" any noauth 0 all all all
+
+# If you want to get back to the functionality of previous versions,
+# where the public community could read anything from anywhere and the
+# private community could write anything from anywhere, use these
+# lines instead:
+#
+# com2sec public default public
+# com2sec private default private
+# group public any public
+# group private any private
+# view all included .1 80
+# access public "" any noauth 0 all none none
+# access private "" any noauth 0 all all none
diff --git a/release/picobsd/floppy.tree/etc/sshd_config b/release/picobsd/floppy.tree/etc/sshd_config
new file mode 100644
index 000000000000..5e9688791d42
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/sshd_config
@@ -0,0 +1,29 @@
+Port 22
+ListenAddress 0.0.0.0
+HostKey /etc/ssh_host_key
+RandomSeed /etc/ssh_random_seed
+ServerKeyBits 768
+LoginGraceTime 600
+KeyRegenerationInterval 3600
+PermitRootLogin yes
+IgnoreRhosts no
+StrictModes yes
+QuietMode no
+X11Forwarding no
+X11DisplayOffset 10
+FascistLogging no
+PrintMotd yes
+KeepAlive yes
+SyslogFacility AUTH
+RhostsAuthentication no
+RhostsRSAAuthentication yes
+RSAAuthentication yes
+PasswordAuthentication no
+PermitEmptyPasswords no
+UseLogin no
+# CheckMail no
+# PidFile /u/zappa/.ssh/pid
+# AllowHosts *.our.com friend.other.com
+# DenyHosts lowsecurity.theirs.com *.evil.org evil.org
+# Umask 022
+# SilentDeny yes
diff --git a/release/picobsd/floppy.tree/etc/termcap b/release/picobsd/floppy.tree/etc/termcap
new file mode 100644
index 000000000000..dfbccb29debd
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/termcap
@@ -0,0 +1,158 @@
+# Copyright (c) 1980, 1985, 1989 The Regents of the University of California.
+# All rights reserved.
+# @(#)termcap.src 5.88 (Berkeley) 4/30/91
+#
+# $FreeBSD$
+#
+# for syscons
+# common entry without semigraphics
+cons25w|ansiw|ansi80x25-raw:\
+ :al=\E[L:am:bs:NP:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:co#80:\
+ :dc=\E[P:dl=\E[M:do=\E[B:bt=\E[Z:ho=\E[H:ic=\E[@:li#25:cb=\E[1K:\
+ :ms:nd=\E[C:pt:rs=\E[x\E[m\Ec:so=\E[7m:se=\E[m:up=\E[A:\
+ :pa#64:Co#8:Sf=\E[3%dm:Sb=\E[4%dm:op=\E[37;40m:\
+ :k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:\
+ :k9=\E[U:k;=\E[V:F1=\E[W:F2=\E[X:K2=\E[E:nw=\E[E:ec=\E[%dX:\
+ :kb=^H:kh=\E[H:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:le=^H:eo:sf=\E[S:sr=\E[T:\
+ :kN=\E[G:kP=\E[I:@7=\E[F:kI=\E[L:kD=\E[K:kB=\E[Z:\
+ :IC=\E[%d@:DC=\E[%dP:SF=\E[%dS:SR=\E[%dT:AL=\E[%dL:DL=\E[%dM:\
+ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:cv=\E[%i%dd:ch=\E[%i%d`:bw:\
+ :mb=\E[5m:md=\E[1m:mh=\E[30;1m:mr=\E[7m:me=\E[m:bl=^G:ut:it#8:
+cons25|ansis|ansi80x25:\
+ :ac=l\332m\300k\277j\331u\264t\303v\301w\302q\304x\263n\305`^Da\260f\370g\361~\371.^Y-^Xh\261I^U0\333y\363z\362:\
+ :tc=cons25w:
+cons25-m|ansis-mono|ansi80x25-mono:\
+ :pa@:Co@:Sf@:Sb@:op@:us=\E[4m:ue=\E[m:md@:mh@:tc=cons25:
+cons50|ansil|ansi80x50:\
+ :li#50:tc=cons25:
+cons50-m|ansil-mono|ansi80x50-mono:\
+ :li#50:tc=cons25-m:
+# 80x25 ISO 8859-1 FreeBSD console
+cons25l1|cons25-iso8859-1:\
+ :ac=l\215m\216k\214j\213u\226t\225v\227w\230q\222x\231n\217o\220s\224p\221r\223`\201a\202f\207g\210~\237.^Y-^X+\253,\273I\247y\232z\233:\
+ :tc=cons25w:
+cons25l1-m|cons25-iso8859-1-mono:\
+ :pa@:Co@:Sf@:Sb@:op@:us=\E[4m:ue=\E[m:md@:mh@:tc=cons25l1:
+# 80x50 ISO 8859-1 FreeBSD console
+cons50l1|cons50-iso8859-1:\
+ :li#50:tc=cons25l1:
+cons50l1-m|cons50-iso8859-1-mono:\
+ :li#50:tc=cons25l1-m:
+dosansi|ANSI.SYS standard crt|ansi:\
+ :am:bs:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:co#80:\
+ :do=\E[B:li#25:mi:nd=\E[C:\
+ :se=\E[m:so=\E[7m:up=\E[A:us=\E[4m:ue=\E[m:\
+ :md=\E[1m:mh=\E[m:mb=\E[5m:me=\E[m:\
+ :kh=\EG:kb=^h:ku=\EH:kd=\EP:kl=\EK:kr=\EM:\
+ :k1=\E;:k2=\E<:k3=\E=:k4=\E>:k5=\E?:\
+ :k6=\E@:k7=\EA:k8=\EB:k9=\EC:k0=\ED:
+vt200|vt220|vt220am|vt200am|dec-vt220|dec-vt200|dec vt200 series with jump scroll:\
+ :@7=\E[4~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kh=\E[1~:\
+ :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+ :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
+ :ve=\E[?25h:vi=\E[?25l:k0@:im@:ei@:\
+ :F1=\E[23~:F2=\E[24~:ic=\E[@:IC=\E[%d@:ec=\E[%dX:tc=vt102:
+vt100|dec-vt100|vt100-am|vt100am|dec vt100:\
+ :do=2\E[B:co#80:li#24:cl=50\E[H\E[J:sf=2*\ED:\
+ :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\
+ :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\
+ :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:\
+ :is=\E>\E[?1;3;4;5l\E[?7;8h\E[1;24r\E[24;1H:\
+ :if=/usr/share/tabset/vt100:nw=2\EE:ho=\E[H:\
+ :as=2\E(0:ae=2\E(B:ac=llmmkkjjuuttvvwwqqxxnnpprr``aa:\
+ :rs=\E>\E[?1;3;4;5l\E[?7;8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\
+ :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=\177:\
+ :k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOt:\
+ :k6=\EOu:k7=\EOv:k8=\EOl:k9=\EOw:k;=\EOx:@8=\EOM:\
+ :K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:pt:sr=2*\EM:vt#3:xn:\
+ :sc=2\E7:rc=2\E8:cs=5\E[%i%d;%dr:UP=2\E[%dA:DO=2\E[%dB:RI=2\E[%dC:\
+ :LE=2\E[%dD:ct=2\E[3g:st=2\EH:ta=^I:ms:bl=^G:cr=^M:eo:it#8:ut:\
+ :RA=\E[?7l:SA=\E[?7h:
+xterm|vs100|xterm terminal emulator (X window system):\
+ :li#65:\
+ :kh=\EOH:@7=\EOF:kb=^H:kD=^?:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:km:\
+ :is=\E>\E[?1;3;4;5l\E[?7;8h\E[1;65r\E[65;1H:\
+ :rs=\E>\E[?1;3;4;5l\E[?7;8h:\
+ :tc=vt220:
+
+
+vt100-nam|dec-vt100-nam|vt100nam|vt100 w/no am:\
+ :am@:xn@:\
+ :is=\E>\E[?1;3;4;5;7l\E[?8h\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?1;3;4;5;7l\E[?8h:\
+ :tc=vt100-am:
+vt100-np|dec-vt100-np|vt100 with no padding (for psl games):\
+ :do=\E[B:cl=\E[H\E[J:sf=\ED:as=\E(0:ae=\E(B:\
+ :cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:nw=\EE:\
+ :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\
+ :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:sr=\EM:\
+ :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:UP=\E[%dA:DO=\E[%dB:RI=\E[%dC:\
+ :LE=\E[%dD:ct=\E[3g:st=\EH:tc=vt100-am:
+vt100-nac|dec-vt100-nac|vt100 without pseudographics and padding:\
+ :as@:ae@:ac@:tc=vt100-np:
+vt102|dec-vt102-am|vt102am|vt100 w/adv. video:\
+ :al=\E[L:dl=\E[M:im=\E[4h:ei=\E[4l:mi:dc=\E[P:\
+ :AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:tc=vt100-np:
+
+# Note: this entry describes the "native"
+# capabilities of the PC monochrome display, without ANY emulation; most
+# communications packages (but NOT PC/IX connect) do some kind of emulation.
+pc|ibmpc|ibm pc PC/IX:\
+ :li#24:co#80:am:bs:bw:eo:\
+ :cd=\E[J:ce=\E[K:cl=\Ec:cm=\E[%i%2;%2H:do=\E[B:ho=\E[;H:\
+ :nd=\E[C:up=\E[A:so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m:
+pc3mono|IBM PC 386BSD Console with monochrome monitor:\
+ :so=\E[0;1r\E[m:tc=pc3:
+pc3|ibmpc3|IBM PC 386BSD Console:\
+ :Co#8:\
+ :DO=\E[%dB:\
+ :F1=\E[W:F2=\E[X:\
+ :K1=\E[H:K2=\E[I:K3=\E[E:K4=\E[F:K5=\E[G:\
+ :LE=\E[%dD:\
+ :RI=\E[%dC:\
+ :Sb=\E[1;%dx:\
+ :Sf=\E[2;%dx:\
+ :UP=\E[%dA:\
+ :ac=l\332m\300k\277j\331u\264t\303v\301w\302q\304x\263n\305`^Da\260f\370g\361~\371.^Y-^Xh\261I^U0\333y\363z\362:\
+ :am:\
+ :bl=^G:\
+ :bs:\
+ :cb=\E[1K:\
+ :cd=\E[J:\
+ :ce=\E[K:\
+ :cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:\
+ :co#80:\
+ :cr=^M:\
+ :do=\E[B:\
+ :ho=\E[H:\
+ :is=\E[m:\
+ :it#8:\
+ :k;=\E[V:k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:k9=\E[U:\
+ :kD=\177:\
+ :@7=\E[F:\
+ :kN=\E[G:\
+ :kP=\E[I:\
+ :kb=\177:\
+ :kd=\E[B:\
+ :kh=\E[H:\
+ :kl=\E[D:\
+ :kr=\E[C:\
+ :ku=\E[A:\
+ :le=^H:\
+ :li#25:\
+ :ms:\
+ :nd=\E[C:\
+ :op=\E[x:\
+ :pa#64:\
+ :rs=\E[m:\
+ :se=\E[m:\
+ :sf=\E[S:\
+ :so=\E[7;1r\E[7m:\
+ :sr=\E[T:\
+ :ta=^I:\
+ :te=\E[m:\
+ :ti=\E[m:\
+ :up=\E[A:\
+ :ut:
diff --git a/release/picobsd/floppy.tree/etc/ttys b/release/picobsd/floppy.tree/etc/ttys
new file mode 100644
index 000000000000..33fe991b85ad
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/ttys
@@ -0,0 +1,32 @@
+#
+# @(#)ttys 5.1 (Berkeley) 4/17/89
+#
+# name getty type status comments
+#
+# This entry needed for asking password when init goes to single-user mode
+# If you want to be asked for password, change "secure" to "insecure" here
+#console none unknown off secure
+vga none cons25 off secure
+#
+ttyv0 "/usr/libexec/getty Pc" cons25 on secure
+# Virtual terminals
+ttyv1 "/usr/libexec/getty Pc" cons25 on secure
+ttyv2 "/usr/libexec/getty Pc" cons25 on secure
+ttyv3 "/usr/libexec/getty Pc" cons25 on secure
+ttyv4 "/usr/libexec/getty Pc" cons25 on secure
+ttyv5 "/usr/libexec/getty Pc" cons25 on secure
+ttyv6 "/usr/libexec/getty Pc" cons25 on secure
+ttyv7 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv8 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv9 "/usr/libexec/getty Pc" cons25 on secure
+# Pseudo terminals
+ttyp0 none network secure
+ttyp1 none network secure
+ttyp2 none network secure
+ttyp3 none network secure
+ttyp4 none network secure
+ttyp5 none network secure
+ttyp6 none network secure
+ttyp7 none network secure
+ttyp8 none network secure
+ttyp9 none network secure
diff --git a/release/picobsd/floppy.tree/etc/update b/release/picobsd/floppy.tree/etc/update
new file mode 100755
index 000000000000..c6ec9da61be3
--- /dev/null
+++ b/release/picobsd/floppy.tree/etc/update
@@ -0,0 +1,22 @@
+#!/bin/sh
+# $FreeBSD$
+pwd=`pwd`
+set `df /` ; dev="$8"
+echo -n "Updating /etc contents on ${dev}... "
+mount ${dev} /start_floppy
+if [ "X$?" != "X0" ] ; then
+ echo ""
+ echo "Cannot mount ${dev} read-write!"
+ exit 1
+fi
+cd /etc
+rm *.db
+rm passwd
+cp -Rp . /start_floppy/etc/
+pwd_mkdb master.passwd
+echo " Done."
+echo -n "Updating kernel parameters... "
+kget /start_floppy/boot/kernel.conf
+umount /start_floppy
+cd ${pwd}
+echo " Done."
diff --git a/release/picobsd/floppy.tree/kernel.config b/release/picobsd/floppy.tree/kernel.config
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/release/picobsd/floppy.tree/kernel.config
diff --git a/release/picobsd/floppy.tree/root/.profile b/release/picobsd/floppy.tree/root/.profile
new file mode 100644
index 000000000000..dfe32d45f3f8
--- /dev/null
+++ b/release/picobsd/floppy.tree/root/.profile
@@ -0,0 +1 @@
+set -E # just make the shell understand arrow keys
diff --git a/release/picobsd/help/README b/release/picobsd/help/README
new file mode 100644
index 000000000000..69babc4612f2
--- /dev/null
+++ b/release/picobsd/help/README
@@ -0,0 +1,8 @@
+1998.02.20
+
+This is work in progress. Eventually I'll prepare the help system for newbies,
+and these files are just the beginning of it...
+
+<abial@nask.pl>
+
+$FreeBSD$
diff --git a/release/picobsd/help/cat.hlp.en b/release/picobsd/help/cat.hlp.en
new file mode 100644
index 000000000000..ed14871118ff
--- /dev/null
+++ b/release/picobsd/help/cat.hlp.en
@@ -0,0 +1,5 @@
+cat concatenate and print files
+
+ Usage:
+
+ cat [-benstuv] [-] [file ...]
diff --git a/release/picobsd/help/cat.hlp.pl b/release/picobsd/help/cat.hlp.pl
new file mode 100644
index 000000000000..cb49b995193c
--- /dev/null
+++ b/release/picobsd/help/cat.hlp.pl
@@ -0,0 +1,5 @@
+cat polacz lub wyswietl pliki
+
+ Sposob uzycia:
+
+ cat [-benstuv] [-] [plik ...]
diff --git a/release/picobsd/help/chmod.hlp.en b/release/picobsd/help/chmod.hlp.en
new file mode 100644
index 000000000000..6e516c5eb13c
--- /dev/null
+++ b/release/picobsd/help/chmod.hlp.en
@@ -0,0 +1,5 @@
+chmod change file modes
+
+ Usage:
+
+ chmod [-R [-H | -L | -P]] mode file ...
diff --git a/release/picobsd/help/chmod.hlp.pl b/release/picobsd/help/chmod.hlp.pl
new file mode 100644
index 000000000000..be690196a8aa
--- /dev/null
+++ b/release/picobsd/help/chmod.hlp.pl
@@ -0,0 +1,5 @@
+chmod zmiana praw dostepu do pliku
+
+ Sposob uzycia:
+
+ chmod [-R [-H | -L | -P]] prawa plik ...
diff --git a/release/picobsd/help/chown.hlp.en b/release/picobsd/help/chown.hlp.en
new file mode 100644
index 000000000000..e32e855c33c0
--- /dev/null
+++ b/release/picobsd/help/chown.hlp.en
@@ -0,0 +1,8 @@
+chgrp change group
+chown change owner
+
+ Usage:
+
+ chown [-R [-H | -L | -P]] [-f] [-h] owner[:group] file ...
+ chown [-R [-H | -L | -P]] [-f] [-h] :group file ...
+ chgrp [-R [-H | -L | -P]] [-f] [-h] group file ...
diff --git a/release/picobsd/help/chown.hlp.pl b/release/picobsd/help/chown.hlp.pl
new file mode 100644
index 000000000000..0cdda8b86921
--- /dev/null
+++ b/release/picobsd/help/chown.hlp.pl
@@ -0,0 +1,8 @@
+chgrp zmien grupe
+chown zmien wlasciciela
+
+ Sposob uzycia:
+
+ chown [-R [-H | -L | -P]] [-f] [-h] wlasc[:grupa] plik ...
+ chown [-R [-H | -L | -P]] [-f] [-h] :grupa plik ...
+ chgrp [-R [-H | -L | -P]] [-f] [-h] grupa plik ...
diff --git a/release/picobsd/help/cp.hlp.en b/release/picobsd/help/cp.hlp.en
new file mode 100644
index 000000000000..81171591a57d
--- /dev/null
+++ b/release/picobsd/help/cp.hlp.en
@@ -0,0 +1,6 @@
+cp copy files
+
+ Usage:
+
+ cp [-R [-H | -L | -P]] [-f | -i] [-p] src target
+ cp [-R [-H | -L | -P]] [-f | -i] [-p] src1 ... srcN directory
diff --git a/release/picobsd/help/cp.hlp.pl b/release/picobsd/help/cp.hlp.pl
new file mode 100644
index 000000000000..30dea47a95f6
--- /dev/null
+++ b/release/picobsd/help/cp.hlp.pl
@@ -0,0 +1,6 @@
+cp kopiuj pliki
+
+ Sposob uzycia:
+
+ cp [-R [-H | -L | -P]] [-f | -i] [-p] plik1 plik2
+ cp [-R [-H | -L | -P]] [-f | -i] [-p] plik1 ... plikN katalog
diff --git a/release/picobsd/help/df.hlp.en b/release/picobsd/help/df.hlp.en
new file mode 100644
index 000000000000..987849b52aed
--- /dev/null
+++ b/release/picobsd/help/df.hlp.en
@@ -0,0 +1,5 @@
+df display free disk space
+
+ Usage:
+
+ df [-ikn] [-t type] [file | filesystem ...]
diff --git a/release/picobsd/help/df.hlp.pl b/release/picobsd/help/df.hlp.pl
new file mode 100644
index 000000000000..39fda444a3d4
--- /dev/null
+++ b/release/picobsd/help/df.hlp.pl
@@ -0,0 +1,5 @@
+df pokaz ilosc wolnego miejsca na dysku
+
+ Sposob uzycia:
+
+ df [-ikn] [-t typ] [plik | filesystem ...]
diff --git a/release/picobsd/help/dialup.hlp.en b/release/picobsd/help/dialup.hlp.en
new file mode 100644
index 000000000000..c729023a6e83
--- /dev/null
+++ b/release/picobsd/help/dialup.hlp.en
@@ -0,0 +1,4 @@
+dialup a simple PPP configuration script
+
+ This script attempts to create the /etc/ppp/ppp.conf file suitable for
+ automatic dialing and background operation of 'ppp' program.
diff --git a/release/picobsd/help/dialup.hlp.pl b/release/picobsd/help/dialup.hlp.pl
new file mode 100644
index 000000000000..a19c8d911c83
--- /dev/null
+++ b/release/picobsd/help/dialup.hlp.pl
@@ -0,0 +1,5 @@
+dialup prosty skrypt konfiguracyjny do PPP
+
+ Skrypt ten tworzy plik /etc/ppp/ppp.conf w oparciu o wartosci
+ podane przez uzytkownika, umozliwiajac automatyczne wybieranie
+ numeru oraz dzialanie w tle.
diff --git a/release/picobsd/help/dmesg.hlp.en b/release/picobsd/help/dmesg.hlp.en
new file mode 100644
index 000000000000..b55e690b2b5b
--- /dev/null
+++ b/release/picobsd/help/dmesg.hlp.en
@@ -0,0 +1,5 @@
+dmesg display kernel message buffer contents
+
+ Usage:
+
+ dmesg | more
diff --git a/release/picobsd/help/dmesg.hlp.pl b/release/picobsd/help/dmesg.hlp.pl
new file mode 100644
index 000000000000..544c6ca49da3
--- /dev/null
+++ b/release/picobsd/help/dmesg.hlp.pl
@@ -0,0 +1,5 @@
+dmesg wy¶wietl zawarto¶æ bufora komunikatów
+
+ Sposób u¿ycia:
+
+ dmesg | more
diff --git a/release/picobsd/help/echo.hlp.en b/release/picobsd/help/echo.hlp.en
new file mode 100644
index 000000000000..b54bdc3a736b
--- /dev/null
+++ b/release/picobsd/help/echo.hlp.en
@@ -0,0 +1,8 @@
+echo write arguments to the standard output
+
+ Usage:
+
+ echo [-n] [string...]
+
+ Optional parameter -n tells echo not to end the output with new
+ line character.
diff --git a/release/picobsd/help/echo.hlp.pl b/release/picobsd/help/echo.hlp.pl
new file mode 100644
index 000000000000..e268038a5554
--- /dev/null
+++ b/release/picobsd/help/echo.hlp.pl
@@ -0,0 +1,8 @@
+echo wypisz argumenty na standardowym wyjsciu (stdout)
+
+ Sposob uzycia:
+
+ echo [-n] [argumenty...]
+
+ Opcjonalny parametr -n powoduje, ze nie zostanie dodany znak
+ konca wiersza.
diff --git a/release/picobsd/help/ee.hlp.en b/release/picobsd/help/ee.hlp.en
new file mode 100644
index 000000000000..dfb66c09fa1a
--- /dev/null
+++ b/release/picobsd/help/ee.hlp.en
@@ -0,0 +1,4 @@
+ee Easy Editor
+
+ This simple editor comes with its own help, visible in the upper part
+ of the screen. Follow that instructions.
diff --git a/release/picobsd/help/ee.hlp.pl b/release/picobsd/help/ee.hlp.pl
new file mode 100644
index 000000000000..e0582195af06
--- /dev/null
+++ b/release/picobsd/help/ee.hlp.pl
@@ -0,0 +1,4 @@
+ee Easy Editor
+
+ Ten prosty edytor wyposazony jest w swoj wlasny system pomocy,
+ umieszczony w gornej czesci ekranu.
diff --git a/release/picobsd/help/fsck.hlp.en b/release/picobsd/help/fsck.hlp.en
new file mode 100644
index 000000000000..e4c13e35a576
--- /dev/null
+++ b/release/picobsd/help/fsck.hlp.en
@@ -0,0 +1,15 @@
+fsck filesystem consistency check and interactive repair
+
+ Usage:
+
+ fsck -p [-f] [-m mode]
+ fsck [-b block#] [-c level] [-l maxparallel] [-y] [-n] [-m mode]
+ [filesystem] ...
+
+ but in its simplest and most common version:
+
+ fsck -y <filesystem>
+
+ where <filesystem> is a name of the raw device, on which the filesystem
+ lies, e.g. /dev/rfd0 for floppy A:, or /dev/rwd0s1 for partition #1 on
+ first IDE drive.
diff --git a/release/picobsd/help/fsck.hlp.pl b/release/picobsd/help/fsck.hlp.pl
new file mode 100644
index 000000000000..5f4b74889bbe
--- /dev/null
+++ b/release/picobsd/help/fsck.hlp.pl
@@ -0,0 +1,15 @@
+fsck narzedzie do sprawdzania poprawnosci i spojnosci filesystemu.
+
+ Sposob uzycia:
+
+ fsck -p [-f] [-m mode]
+ fsck [-b block#] [-c level] [-l maxparallel] [-y] [-n] [-m mode]
+ [filesystem] ...
+
+ ...ale w najprostszej i najczesciej spotykanej formie:
+
+ fsck -y <filesystem>
+
+ gdzie <filesystem> jest nazwa "surowego" urzadzenia, na ktorym
+ znajduje sie system plikow, np. /dev/rfd0 dla dyskietki A:, lub
+ /dev/rwd0s1 dla pierwszej partycji pierwszego dysku IDE.
diff --git a/release/picobsd/help/ftp.hlp.en b/release/picobsd/help/ftp.hlp.en
new file mode 100644
index 000000000000..3b61e90378b5
--- /dev/null
+++ b/release/picobsd/help/ftp.hlp.en
@@ -0,0 +1,8 @@
+ftp ARPANET file transfer program
+
+ Usage:
+
+ ftp [-adeginptvV] [host [port]]
+ ftp host:path[/]
+ ftp ftp://host[:port]/path[/]
+ ftp http://host[:port]/file
diff --git a/release/picobsd/help/ftp.hlp.pl b/release/picobsd/help/ftp.hlp.pl
new file mode 100644
index 000000000000..201aa17d694f
--- /dev/null
+++ b/release/picobsd/help/ftp.hlp.pl
@@ -0,0 +1,8 @@
+ftp Program do przesylania plikow
+
+ Sposob uzycia:
+
+ ftp [-adeginptvV] [host [port]]
+ ftp host:path[/]
+ ftp ftp://host[:port]/path[/]
+ ftp http://host[:port]/file
diff --git a/release/picobsd/help/gzip.hlp.en b/release/picobsd/help/gzip.hlp.en
new file mode 100644
index 000000000000..f125fe3ad139
--- /dev/null
+++ b/release/picobsd/help/gzip.hlp.en
@@ -0,0 +1,26 @@
+gzip, gunzip, zcat compress or expand files
+
+ Usage:
+
+ gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]
+ -c --stdout write on standard output, keep original
+ files unchanged
+ -d --decompress decompress
+ -f --force force overwrite of output file and compress
+ links
+ -h --help give this help
+ -l --list list compressed file contents
+ -L --license display software license
+ -n --no-name do not save or restore the original name and
+ time stamp
+ -N --name save or restore the original name and time stamp
+ -q --quiet suppress all warnings
+ -r --recursive operate recursively on directories
+ -S .suf --suffix .suf use suffix .suf on compressed files
+ -t --test test compressed file integrity
+ -v --verbose verbose mode
+ -V --version display version number
+ -1 --fast compress faster
+ -9 --best compress better
+ file... files to (de)compress. If none given, use
+ standard input.
diff --git a/release/picobsd/help/gzip.hlp.pl b/release/picobsd/help/gzip.hlp.pl
new file mode 100644
index 000000000000..807a95e6c27f
--- /dev/null
+++ b/release/picobsd/help/gzip.hlp.pl
@@ -0,0 +1,12 @@
+gzip, gunzip, zcat kompresuj lub dekompresuj plik(i)
+
+ Sposob uzycia:
+
+ gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]
+ -c --stdout dekompresuj na stdout
+ -d --decompress dekompresuj
+ -l --list pokaz zawartosc
+ -t --test testuj poprawnosc archiwum
+ -1 --fast szybka kompresja
+ -9 --best dobra kompresja
+ file... pliki do (de)kompresji.
diff --git a/release/picobsd/help/help.hlp.en b/release/picobsd/help/help.hlp.en
new file mode 100644
index 000000000000..b38db3d6c552
--- /dev/null
+++ b/release/picobsd/help/help.hlp.en
@@ -0,0 +1,7 @@
+help Simple help system for PicoBSD
+
+ This command displays short description of the commands included
+ on PicoBSD floppy. When invoked with no argument, it displays this
+ text :-). Any other argument is treated as a name of file located in
+ /help.a archive on the floppy, and this file is displayed page by
+ page.
diff --git a/release/picobsd/help/help.hlp.pl b/release/picobsd/help/help.hlp.pl
new file mode 100644
index 000000000000..47e039d0c847
--- /dev/null
+++ b/release/picobsd/help/help.hlp.pl
@@ -0,0 +1,7 @@
+help Prosty system pomocy dla PicoBSD
+
+ To polecenie wyswietla krotka instrukcje obslugi programow na
+ dyskietce. Uruchomione bez zadnego argumentu, wyswietla ten tekst. :-)
+ Kazdy inny argument traktowany jest jak nazwa pliku znajdujacego sie
+ w archiwum /help.a, po czym zostaje wyswietlona zawartosc tego pliku
+ strona po stronie.
diff --git a/release/picobsd/help/hostname.hlp.en b/release/picobsd/help/hostname.hlp.en
new file mode 100644
index 000000000000..0e29ffe18ff0
--- /dev/null
+++ b/release/picobsd/help/hostname.hlp.en
@@ -0,0 +1,5 @@
+hostname set or print name of current host system
+
+ Usage:
+
+ hostname [-s] [name-of-host]
diff --git a/release/picobsd/help/hostname.hlp.pl b/release/picobsd/help/hostname.hlp.pl
new file mode 100644
index 000000000000..b40bda80c33b
--- /dev/null
+++ b/release/picobsd/help/hostname.hlp.pl
@@ -0,0 +1,5 @@
+hostname ustaw lub wyswietl nazwe maszyny
+
+ Sposob uzycia:
+
+ hostname [-s] [name-of-host]
diff --git a/release/picobsd/help/ifconfig.hlp.en b/release/picobsd/help/ifconfig.hlp.en
new file mode 100644
index 000000000000..65da95f4952f
--- /dev/null
+++ b/release/picobsd/help/ifconfig.hlp.en
@@ -0,0 +1,18 @@
+ifconfig configure network interface parameters
+
+ Usage:
+
+ ifconfig -a [ -d ] [ -u ] [ af ]
+ ifconfig -l [ -d ] [ -u ]
+ [ af [ address [ dest_addr ] ] [ netmask mask ]
+ [ broadcast addr ]
+
+ [ alias ] [ delete ] ]
+ [ up ] [ down ]
+ [ metric n ]
+ [ mtu n ]
+ [ arp | -arp ]
+ [ link0 | -link0 ] [ link1 | -link1 ] [ link2 | -link2 ]
+ [ media mtype ]
+ [ mediaopt mopts ]
+ [ -mediaopt mopts ]
diff --git a/release/picobsd/help/ifconfig.hlp.pl b/release/picobsd/help/ifconfig.hlp.pl
new file mode 100644
index 000000000000..7d35e4ead16d
--- /dev/null
+++ b/release/picobsd/help/ifconfig.hlp.pl
@@ -0,0 +1,18 @@
+ifconfig konfiguracja parametrow interfejsow sieciowych
+
+ Sposob uzycia:
+
+ ifconfig -a [ -d ] [ -u ] [ af ]
+ ifconfig -l [ -d ] [ -u ]
+ [ af [ address [ dest_addr ] ] [ netmask mask ]
+ [ broadcast addr ]
+
+ [ alias ] [ delete ] ]
+ [ up ] [ down ]
+ [ metric n ]
+ [ mtu n ]
+ [ arp | -arp ]
+ [ link0 | -link0 ] [ link1 | -link1 ] [ link2 | -link2 ]
+ [ media mtype ]
+ [ mediaopt mopts ]
+ [ -mediaopt mopts ]
diff --git a/release/picobsd/help/kbdcontrol.hlp.en b/release/picobsd/help/kbdcontrol.hlp.en
new file mode 100644
index 000000000000..0a776568800c
--- /dev/null
+++ b/release/picobsd/help/kbdcontrol.hlp.en
@@ -0,0 +1,7 @@
+kbdcontrol a utility for manipulating the syscons keyboard driver section
+
+ Usage:
+
+ kbdcontrol [-dFx] [-b duration.pitch | belltype]
+ [-r delay.repeat | speed] [-l mapfile] [-f # string]
+ [-h size] [-L mapfile]
diff --git a/release/picobsd/help/kbdcontrol.hlp.pl b/release/picobsd/help/kbdcontrol.hlp.pl
new file mode 100644
index 000000000000..a45933704992
--- /dev/null
+++ b/release/picobsd/help/kbdcontrol.hlp.pl
@@ -0,0 +1,7 @@
+kbdcontrol ustawianie parametrow klawiatury
+
+ Sposob uzycia:
+
+ kbdcontrol [-dFx] [-b dlugosc.wysokosc | rodzaj]
+ [-r opoz.czest | szybk] [-l mapa] [-f # napis]
+ [-h rozmiar] [-L mapa]
diff --git a/release/picobsd/help/kget.hlp.en b/release/picobsd/help/kget.hlp.en
new file mode 100644
index 000000000000..632c807940ff
--- /dev/null
+++ b/release/picobsd/help/kget.hlp.en
@@ -0,0 +1,21 @@
+kget Get list of kernel configuration.
+
+ This utility allows to gather device configuration which possibly
+ was changed in userconfig (-c) session, and to save it to /kernel.config
+ file on startup floppy, so that when user boots next time, the
+ settings will automatically be changed.
+
+ Usage is straightforward:
+
+ kget [-incore|kernel_name] [vanilla]
+
+ E.g.: Get device configuration of running kernel
+
+ kget -incore
+
+ Produce list of parameters changed from /stand/vanilla
+
+ kget -incore /stand/vanilla
+
+ (You can redirect the stdout to /kernel.config - this list
+ already contains all the requires keywords.)
diff --git a/release/picobsd/help/kget.hlp.pl b/release/picobsd/help/kget.hlp.pl
new file mode 100644
index 000000000000..005fb26c8d11
--- /dev/null
+++ b/release/picobsd/help/kget.hlp.pl
@@ -0,0 +1,23 @@
+kget Utworz liste konfiguracji jadra
+
+ Ten program pozwala uzyskac parametry sterownikow urzadzen,
+ ktore byc moze zostaly zmienione na etapie uruchamiania systemu z
+ flaga '-c', pozwala rowniez zachowac te liste w specjalnym formacie
+ do pliku /kernel.config, zeby zostala uzyta jako dane konfiguracyjne
+ przy nastepnym starcie systemu.
+
+ Sposob uzycia:
+
+ kget [-incore|nazwa_jadra] [vanilla]
+
+ E.g.: Utworz liste parametrow dzialajacego jadra:
+
+ kget -incore
+
+ Utworz liste roznic w parametrach w stosunku do listy
+ zawartej w pliku /stand/vanilla:
+
+ kget -incore /stand/vanilla
+
+ (Wynik tego polecenia mozna przekierowac wprost do pliku
+ /kernel.config na dyskietce)
diff --git a/release/picobsd/help/kill.hlp.en b/release/picobsd/help/kill.hlp.en
new file mode 100644
index 000000000000..e6322e703b01
--- /dev/null
+++ b/release/picobsd/help/kill.hlp.en
@@ -0,0 +1,8 @@
+kill terminate or signal a process
+
+ Usage:
+
+ kill [-s signal_name] pid ...
+ kill -l [exit_status]
+ kill -signal_name pid ...
+ kill -signal_number pid ...
diff --git a/release/picobsd/help/kill.hlp.pl b/release/picobsd/help/kill.hlp.pl
new file mode 100644
index 000000000000..bde1e71686e5
--- /dev/null
+++ b/release/picobsd/help/kill.hlp.pl
@@ -0,0 +1,8 @@
+kill zakoncz proces, lub wyslij sygnal
+
+ Sposob uzycia:
+
+ kill [-s signal_name] pid ...
+ kill -l [exit_status]
+ kill -signal_name pid ...
+ kill -signal_number pid ...
diff --git a/release/picobsd/help/ln.hlp.en b/release/picobsd/help/ln.hlp.en
new file mode 100644
index 000000000000..a7c7065a55a9
--- /dev/null
+++ b/release/picobsd/help/ln.hlp.en
@@ -0,0 +1,9 @@
+ln make links
+
+ Usage:
+
+ ln [-fs] file1 file2
+ ln [-fs] file ... directory
+
+ -f Unlink any already existing file (force link)
+ -s Create symbolic link
diff --git a/release/picobsd/help/ln.hlp.pl b/release/picobsd/help/ln.hlp.pl
new file mode 100644
index 000000000000..22fbd0681f91
--- /dev/null
+++ b/release/picobsd/help/ln.hlp.pl
@@ -0,0 +1,9 @@
+ln utworz link
+
+ Sposob uzycia:
+
+ ln [-fs] plik1 plik2
+ ln [-fs] plik ... katalog
+
+ -f (force) usun uprzednio istniejacy plik o tej samej nazwie
+ -s utworz link symboliczny
diff --git a/release/picobsd/help/ls.hlp.en b/release/picobsd/help/ls.hlp.en
new file mode 100644
index 000000000000..7a171cba2eed
--- /dev/null
+++ b/release/picobsd/help/ls.hlp.en
@@ -0,0 +1,10 @@
+ls list directory contents
+
+ Usage:
+
+ ls [-ACFLRTWacdfgikloqrstu1] [file ...]
+
+ Most common switches are:
+
+ -l list in long format
+ -a include directory entries whose names begin with a dot '.'
diff --git a/release/picobsd/help/ls.hlp.pl b/release/picobsd/help/ls.hlp.pl
new file mode 100644
index 000000000000..f6860b69d910
--- /dev/null
+++ b/release/picobsd/help/ls.hlp.pl
@@ -0,0 +1,11 @@
+ls wyswietl zawartosc katalogu
+
+ Sposob uzycia:
+
+ ls [-ACFLRTWacdfgikloqrstu1] [plik ...]
+
+ Najczesciej uzywane opcje:
+
+ -l (long) wyswietl w rozszerzonym formacie
+ -a wyswietl rowniez te pliki, ktorych nazwy zaczynaja sie od '.'
+ -R wyswietl rowniez zawartosc podkatalogow
diff --git a/release/picobsd/help/mkdir.hlp.en b/release/picobsd/help/mkdir.hlp.en
new file mode 100644
index 000000000000..85c31422f25a
--- /dev/null
+++ b/release/picobsd/help/mkdir.hlp.en
@@ -0,0 +1,5 @@
+mkdir make directories
+
+ Usage:
+
+ mkdir [-p] [-m mode] directory ...
diff --git a/release/picobsd/help/mkdir.hlp.pl b/release/picobsd/help/mkdir.hlp.pl
new file mode 100644
index 000000000000..2354766303c6
--- /dev/null
+++ b/release/picobsd/help/mkdir.hlp.pl
@@ -0,0 +1,5 @@
+mkdir utworz katalog
+
+ Sposob uzycia:
+
+ mkdir [-p] [-m mode] nazwa_katalogu ...
diff --git a/release/picobsd/help/more.hlp.en b/release/picobsd/help/more.hlp.en
new file mode 100644
index 000000000000..0333be22bca3
--- /dev/null
+++ b/release/picobsd/help/more.hlp.en
@@ -0,0 +1,7 @@
+more file perusal filter for crt viewing
+
+ Usage:
+
+ more [-ceinus] [-t tag] [-x tabs] [-/ pattern] [-#] [file ...]
+
+ But most commonly just 'more <file>' or e.g. 'ls -l|more'
diff --git a/release/picobsd/help/more.hlp.pl b/release/picobsd/help/more.hlp.pl
new file mode 100644
index 000000000000..1e4d4e955fb0
--- /dev/null
+++ b/release/picobsd/help/more.hlp.pl
@@ -0,0 +1,8 @@
+more program do wyswietlania zawartosci plikow
+
+ Sposob uzycia:
+
+ more [-ceinus] [-t tag] [-x tabs] [-/ pattern] [-#] [plik ...]
+
+ Najczesciej stosowany w postaci 'more nazwa pliku' lub jako
+ filtr: 'ls -l | more'
diff --git a/release/picobsd/help/mount.hlp.en b/release/picobsd/help/mount.hlp.en
new file mode 100644
index 000000000000..526fbe87f0c0
--- /dev/null
+++ b/release/picobsd/help/mount.hlp.en
@@ -0,0 +1,21 @@
+mount mount file systems
+
+ Usage:
+
+ mount [-dfpruvw] [-o options] [-t ufs | external_type] special node
+ mount [-adfpruvw] [-t ufs | external_type]
+ mount [-dfpruvw] special | node
+
+ E.g.:
+
+ * mount UFS floppy A: on /mnt directory:
+
+ mount /dev/fd0c /mnt
+
+ * mount DOS primary partition (on primary IDE drive) on /dos:
+
+ mount -t msdos /dev/wd0s1 /dos
+
+ * mount Linux partition on /mnt
+
+ mount -t ext2fs /dev/wd0s1 /mnt
diff --git a/release/picobsd/help/mount.hlp.pl b/release/picobsd/help/mount.hlp.pl
new file mode 100644
index 000000000000..0bf0bed254ae
--- /dev/null
+++ b/release/picobsd/help/mount.hlp.pl
@@ -0,0 +1,19 @@
+mount zamontuj system plikow
+
+ Sposob uzycia:
+
+ mount [-dfpruvw] [-o opcje] [-t [ufs|msdos|ext2fs] urzadzenie punkt
+
+ N.p.:
+
+ * zamontuj dyskietke DOS A: na katalogu /mnt:
+
+ mount -t msdos /dev/fd0a /mnt
+
+ * zamontuj pierwsza partycje DOS (na pierwszym dysku IDE) na /dos:
+
+ mount -t msdos /dev/wd0s1 /dos
+
+ * zamontuj partycje Linux na /mnt:
+
+ mount -t ext2fs /dev/wd0s1 /mnt
diff --git a/release/picobsd/help/mount_cd9660.hlp.en b/release/picobsd/help/mount_cd9660.hlp.en
new file mode 100644
index 000000000000..1e138248cb29
--- /dev/null
+++ b/release/picobsd/help/mount_cd9660.hlp.en
@@ -0,0 +1,9 @@
+mount_cd9660 mount an ISO-9660 filesystem
+
+ Usage:
+
+ mount_cd9660 [-egrv] [-o options] [-s startsector] special node
+
+ Most commonly, to mount an ATAPI CD-ROM on /mnt directory:
+
+ mount_cd9660 /dev/wcd0c /mnt
diff --git a/release/picobsd/help/mount_cd9660.hlp.pl b/release/picobsd/help/mount_cd9660.hlp.pl
new file mode 100644
index 000000000000..d7b7d7511171
--- /dev/null
+++ b/release/picobsd/help/mount_cd9660.hlp.pl
@@ -0,0 +1,9 @@
+mount_cd9660 zamontuj CD-ROM (ISO-9660 filesystem)
+
+ Sposob uzycia:
+
+ mount_cd9660 [-egrv] [-o options] [-s startsector] urzadzenie punkt
+
+ Najczesciej w celu zamontowania CD-ROMu ATAPI:
+
+ mount_cd9660 /dev/wcd0c /mnt
diff --git a/release/picobsd/help/mount_ext2fs.hlp.en b/release/picobsd/help/mount_ext2fs.hlp.en
new file mode 100644
index 000000000000..636d9c90a728
--- /dev/null
+++ b/release/picobsd/help/mount_ext2fs.hlp.en
@@ -0,0 +1,11 @@
+mount_ext2fs mount a ext2fs (Linux) file system
+
+ Usage:
+
+ mount_ext2fs [-o options] special node
+
+ E.g. to mount first partition of first IDE drive on /mnt:
+
+ mount_ext2fs /dev/wd0s1 /mnt
+
+ To mount it read-only, add '-o ro' as options.
diff --git a/release/picobsd/help/mount_ext2fs.hlp.pl b/release/picobsd/help/mount_ext2fs.hlp.pl
new file mode 100644
index 000000000000..f2c241c0a560
--- /dev/null
+++ b/release/picobsd/help/mount_ext2fs.hlp.pl
@@ -0,0 +1,11 @@
+mount_ext2fs zamontuj system plikow EXT2FS (Linux)
+
+ Sposob uzycia:
+
+ mount_ext2fs [-o opcje] urzadzenie punkt
+
+ N.p. zeby zamontowac pierwsza partycje na pierwszym dysku IDE:
+
+ mount_ext2fs /dev/wd0s1 /mnt
+
+ W celu zamontowania tylko do odczytu, nalezy dodac opcje -o ro.
diff --git a/release/picobsd/help/mount_msdos.hlp.en b/release/picobsd/help/mount_msdos.hlp.en
new file mode 100644
index 000000000000..365b65c61274
--- /dev/null
+++ b/release/picobsd/help/mount_msdos.hlp.en
@@ -0,0 +1,13 @@
+mount_msdos mount an MS-DOS file system
+
+ Usage:
+
+ mount_msdos [-o options] [-u user] [-g group] [-m mask] bdev dir
+
+ E.g. to mount primary DOS partition of primary IDE drive on /dos:
+
+ mount_msdos /dev/wd0s1 /dos
+
+ To mount first extended partition on /mnt:
+
+ mount_msdos /dev/wd0s5 /mnt
diff --git a/release/picobsd/help/mount_msdos.hlp.pl b/release/picobsd/help/mount_msdos.hlp.pl
new file mode 100644
index 000000000000..b587110387aa
--- /dev/null
+++ b/release/picobsd/help/mount_msdos.hlp.pl
@@ -0,0 +1,13 @@
+mount_msdos zamontuj system plikow MS-DOS
+
+ Sposob uzycia:
+
+ mount_msdos [-o opcje] [-u user] [-g grupa] [-m maska] bdev dir
+
+ N.p. zeby zamontowac partycje C: z dysku IDE na /doc
+
+ mount_msdos /dev/wd0s1 /dos
+
+ W celu zamontowania pierwszej partycji extended"
+
+ mount_msdos /dev/wd0s5 /mnt
diff --git a/release/picobsd/help/moused.hlp.en b/release/picobsd/help/moused.hlp.en
new file mode 100644
index 000000000000..0b7f7f401810
--- /dev/null
+++ b/release/picobsd/help/moused.hlp.en
@@ -0,0 +1,44 @@
+moused mouse daemon
+
+ Usage:
+
+ moused [-3DPRcdfs] [-F rate] [-r resolution] [-S baudrate] [-C threshold]
+ [-m N=M] [-z target] [-t mousetype] -p port
+
+ Most common options are:
+
+ -3 Emulate the third (middle) button for 2-button mice. It is emu-
+ lated by pressing the left and right physical buttons simultane-
+ ously.
+ -p port Use port to communicate with the mouse.
+ -t type
+ microsoft Microsoft (2-button) serial mouse protocol.
+ intellimouse Microsoft IntelliMouse protocol. Genius Net-
+ Mouse, ASCII Mie Mouse, Logitech MouseMan+ and
+ FirstMouse+ use this protocol too.
+ mousesystems MouseSystems 5-byte protocol. 3-button mice may
+ use this protocol.
+ mmseries MM Series mouse protocol.
+ logitech Logitech mouse protocol. Note that this is for
+ old Logitech models. mouseman or intellimouse
+ should be specified for newer models.
+ mouseman Logitech MouseMan and TrackMan protocol. Some
+ 3-button mice may be compatible with this proto-
+ col. Note that MouseMan+ and FirstMouse+ use
+ intellimouse protocol rather than this one.
+ glidepoint ALPS GlidePoint protocol.
+ thinkingmouse Kensington ThinkingMouse protocol.
+ mmhittab Hitachi tablet protocol.
+
+3-button serial mice may have a small switch to choose between
+``MS'' and ``PC'', or ``2'' and ``3''. ``MS'' or ``2'' usually mean
+the microsoft protocol. ``PC'' or ``3'' will choose the
+mousesystems protocol.
+To test if the selected protocol type is correct for the given mouse, en-
+able the mouse pointer in the current virtual console:
+ vidcontrol -m on
+start the mouse daemon in the foreground mode:
+ moused -f -p _selected_port_ -t _selected_protocol_
+and see if the mouse pointer travels correctly according to the mouse
+movement. Then try cut & paste features by clicking the left, right and
+middle buttons. Type ^C to stop the command.
diff --git a/release/picobsd/help/moused.hlp.pl b/release/picobsd/help/moused.hlp.pl
new file mode 100644
index 000000000000..41791207e716
--- /dev/null
+++ b/release/picobsd/help/moused.hlp.pl
@@ -0,0 +1,29 @@
+moused mouse daemon
+
+ Sposob uzycia:
+
+ moused [-3DPRcdfs] [-F rate] [-r resolution] [-S baudrate] [-C threshold]
+ [-m N=M] [-z target] [-t mousetype] -p port
+
+ Najczestsze opcje to:
+
+ -3 emulacja trzeciego (srodkowego) przycisku na dwu-klawiszowych
+ myszach.
+ -p port nazwa portu: /dev/cuaa0 == COM1:, psm0 == gniazdo PS/2
+ -t typ
+ microsoft Microsoft (2 przyciski) mysz szeregowa.
+ intellimouse Microsoft IntelliMouse, Genius Net- Mouse,
+ ASCII Mie Mouse, Logitech MouseMan+, FirstMouse+
+ mousesystems MouseSystems
+ mmseries MM Series
+ logitech Logitech. Ten protokol jest dla starszych typow
+ myszy - dla nowszych trzeba uzywac mouseman lub
+ intellimouse
+ mouseman Logitech MouseMan i TrackMan
+ glidepoint ALPS GlidePoint
+ thinkingmouse Kensington ThinkingMouse protocol.
+ mmhittab Hitachi tablet
+
+Mozna wlaczyc wyswietlanie wskaznika myszy przez:
+
+ vidcontrol -m on
diff --git a/release/picobsd/help/mv.hlp.en b/release/picobsd/help/mv.hlp.en
new file mode 100644
index 000000000000..0cbf6d8991c7
--- /dev/null
+++ b/release/picobsd/help/mv.hlp.en
@@ -0,0 +1,9 @@
+mv move files
+
+ Usage:
+
+ mv [-f | -i] source target
+ mv [-f | -i] source ... directory
+
+ -f Do not prompt for confirmation
+ -i Prompt for confirmation
diff --git a/release/picobsd/help/mv.hlp.pl b/release/picobsd/help/mv.hlp.pl
new file mode 100644
index 000000000000..5a6b27e50fbb
--- /dev/null
+++ b/release/picobsd/help/mv.hlp.pl
@@ -0,0 +1,9 @@
+mv przenis plik(i)
+
+ Sposob uzycia:
+
+ mv [-f | -i] plik1 plik2
+ mv [-f | -i] plik1 ... plikN katalog
+
+ -f nie pytaj o potwierdzenie
+ -i pytaj o potwierdzenie
diff --git a/release/picobsd/help/ping.hlp.en b/release/picobsd/help/ping.hlp.en
new file mode 100644
index 000000000000..6d3cb71079f7
--- /dev/null
+++ b/release/picobsd/help/ping.hlp.en
@@ -0,0 +1,10 @@
+ping send ICMP ECHO_REQUEST packets to network hosts
+
+ Usage:
+
+ ping [-QRadfnqrv] [-c count] [-i wait] [-l preload] [-p pattern]
+ [-s packetsize] [host | [-L] [-I iface] [-T ttl] mcast-group]
+
+ Most commonly:
+
+ ping <host>
diff --git a/release/picobsd/help/ping.hlp.pl b/release/picobsd/help/ping.hlp.pl
new file mode 100644
index 000000000000..47faed6a12f0
--- /dev/null
+++ b/release/picobsd/help/ping.hlp.pl
@@ -0,0 +1,10 @@
+ping wyslij prosbe ICMP o echo
+
+ Sposob uzycia:
+
+ ping [-QRadfnqrv] [-c count] [-i wait] [-l preload] [-p pattern]
+ [-s packetsize] [host | [-L] [-I iface] [-T ttl] mcast-group]
+
+ Najczesciej:
+
+ ping nazwa_maszyny
diff --git a/release/picobsd/help/ppp.hlp.en b/release/picobsd/help/ppp.hlp.en
new file mode 100644
index 000000000000..55527dd72308
--- /dev/null
+++ b/release/picobsd/help/ppp.hlp.en
@@ -0,0 +1,16 @@
+ppp Point to Point Protocol client
+
+ Usage:
+
+ ppp [-auto | -background | -direct | -dedicated | -ddial ] [system]
+
+ In case of PicoBSD most probably this will be:
+
+ ppp -background <system_name>
+
+ You should run 'dialup' script to configure automatic dialing. Then
+ you can use
+
+ ppp -background dialup
+
+ to connect to your provider.
diff --git a/release/picobsd/help/ppp.hlp.pl b/release/picobsd/help/ppp.hlp.pl
new file mode 100644
index 000000000000..7c5f6a6c5974
--- /dev/null
+++ b/release/picobsd/help/ppp.hlp.pl
@@ -0,0 +1,14 @@
+ppp obsluga protokolu PPP
+
+ Sposob uzycia:
+
+ ppp [-auto | -background | -direct | -dedicated | -ddial ] [system]
+
+ W przypadku PicoBSD najczesciej bedzie to:
+
+ ppp -background nazwa_polaczenia
+
+ Nalezy przedtem uruchomic skrypt 'dialup' w celu poprawnej
+ konfiguracji. Wowczas w celu dokonania polaczenia wystarczy:
+
+ ppp -background dialup
diff --git a/release/picobsd/help/ps.hlp.en b/release/picobsd/help/ps.hlp.en
new file mode 100644
index 000000000000..3e5125b3a045
--- /dev/null
+++ b/release/picobsd/help/ps.hlp.en
@@ -0,0 +1,9 @@
+ps List running processes
+
+ This is a small 'ps' replacement, which uses information
+ available via sysctl(3) interface. It's primitive, but
+ gives you the most important informations, i.e. how many
+ processes are running and on which vty, and the pid number
+ to kill some of them. :-)
+
+ Currently, no options are implemented yet.
diff --git a/release/picobsd/help/ps.hlp.pl b/release/picobsd/help/ps.hlp.pl
new file mode 100644
index 000000000000..f9b61ccd5504
--- /dev/null
+++ b/release/picobsd/help/ps.hlp.pl
@@ -0,0 +1,7 @@
+ps Pokaz dzialajace procesy
+
+ Prosta wersja programu, korzystajaca z informacji dostepnych przez
+ sysctl(3). Wyswietla wystarczajaco duzo informacji, zeby zorientowac
+ sie w stanie systemu, oraz ewentualnie zastopowac jakies procesy.
+
+ Obecnie nie posiada zadnych opcji.
diff --git a/release/picobsd/help/pwd.hlp.en b/release/picobsd/help/pwd.hlp.en
new file mode 100644
index 000000000000..593a9ebd57d2
--- /dev/null
+++ b/release/picobsd/help/pwd.hlp.en
@@ -0,0 +1 @@
+pwd return working directory name
diff --git a/release/picobsd/help/pwd.hlp.pl b/release/picobsd/help/pwd.hlp.pl
new file mode 100644
index 000000000000..2a926bcfb6b3
--- /dev/null
+++ b/release/picobsd/help/pwd.hlp.pl
@@ -0,0 +1 @@
+pwd wyswietl aktualny katalog.
diff --git a/release/picobsd/help/reboot.hlp.en b/release/picobsd/help/reboot.hlp.en
new file mode 100644
index 000000000000..d40c8ca398c0
--- /dev/null
+++ b/release/picobsd/help/reboot.hlp.en
@@ -0,0 +1,3 @@
+reboot reboot the system
+
+ Press Ctlr-Alt-Del instead of 'reboot'.
diff --git a/release/picobsd/help/reboot.hlp.pl b/release/picobsd/help/reboot.hlp.pl
new file mode 100644
index 000000000000..b809804f31d6
--- /dev/null
+++ b/release/picobsd/help/reboot.hlp.pl
@@ -0,0 +1,3 @@
+reboot zrestartuj system
+
+ Nacisnij Ctlr-Alt-Del.
diff --git a/release/picobsd/help/rm.hlp.en b/release/picobsd/help/rm.hlp.en
new file mode 100644
index 000000000000..60f2cd11feb3
--- /dev/null
+++ b/release/picobsd/help/rm.hlp.en
@@ -0,0 +1,13 @@
+rm remove directory entries
+
+ Usage:
+
+ rm [-f | -i] [-dPRrW] file ...
+
+ -f attepmt removal without confirmation, regardless of
+ premissions
+ -i request confirmation before removing
+ -r remove the whole tree rooted at "file" argument
+
+ WARNING: There is no way to "undelete" deleted files! They
+ are lost forever.
diff --git a/release/picobsd/help/rm.hlp.pl b/release/picobsd/help/rm.hlp.pl
new file mode 100644
index 000000000000..d847ff0b48c3
--- /dev/null
+++ b/release/picobsd/help/rm.hlp.pl
@@ -0,0 +1,12 @@
+rm usun plik(i)
+
+ Sposob uzycia:
+
+ rm [-f | -i] [-dPRrW] plik ...
+
+ -f sprobuj usunac sila, nie sprawdzajac praw dostepu
+ -i pytaj przed usunieciem
+ -r usun cale drzewko zaczynajace sie od nazwy 'plik'
+
+ OSTRZEZENIE: Nie ma zadnego sposobu na odtworzenie
+ skasowanych plikow!!! Sa one stracone na zawsze.
diff --git a/release/picobsd/help/route.hlp.en b/release/picobsd/help/route.hlp.en
new file mode 100644
index 000000000000..bf0061bc61ad
--- /dev/null
+++ b/release/picobsd/help/route.hlp.en
@@ -0,0 +1,13 @@
+route manually manipulate the routing tables
+
+ Usage:
+
+ route [ -nqv ] command [[ modifiers ] args ]
+
+ Where 'command' is most commonly 'add' or 'delete', modifiers can be
+ '-net' or '-host', and args are destination and gateway.
+
+ E.g., to add default route to the gateway:
+
+ route add default <gateway name or IP>
+
diff --git a/release/picobsd/help/route.hlp.pl b/release/picobsd/help/route.hlp.pl
new file mode 100644
index 000000000000..92f4f6d03a74
--- /dev/null
+++ b/release/picobsd/help/route.hlp.pl
@@ -0,0 +1,13 @@
+route recznie manipuluj tablica routingu
+
+ Sposob uzycia:
+
+ route [ -nqv ] polecenie [[ opcje ] args ]
+
+ 'Polecenie' to najczesciej 'add' (dodaj) lub 'delete' (usun),
+ 'opcje to '-net' lub '-host', a argumenty to nazwa hosta lub routera.
+
+ Np. w celu dodania routingu do podstawowego routera w sieci (default):
+
+ route add default nazwa_routera
+
diff --git a/release/picobsd/help/sh.hlp.en b/release/picobsd/help/sh.hlp.en
new file mode 100644
index 000000000000..6198b237eff9
--- /dev/null
+++ b/release/picobsd/help/sh.hlp.en
@@ -0,0 +1,3 @@
+sh a Bourne Shell (command interpreter)
+
+ This version is a slightly stripped down /bin/sh, also known as Ash.
diff --git a/release/picobsd/help/sh.hlp.pl b/release/picobsd/help/sh.hlp.pl
new file mode 100644
index 000000000000..c278b8e38242
--- /dev/null
+++ b/release/picobsd/help/sh.hlp.pl
@@ -0,0 +1,3 @@
+sh Bourne Shell (interpeter polecen)
+
+ Jeest to Ash, nieco skromniejsz wersja standardowego /bin/sh.
diff --git a/release/picobsd/help/shutdown.hlp.en b/release/picobsd/help/shutdown.hlp.en
new file mode 100644
index 000000000000..f222d5ac3721
--- /dev/null
+++ b/release/picobsd/help/shutdown.hlp.en
@@ -0,0 +1,3 @@
+shutdown shut down the system
+
+ Press Ctlr-Alt-Del instead of 'shutdown'.
diff --git a/release/picobsd/help/shutdown.hlp.pl b/release/picobsd/help/shutdown.hlp.pl
new file mode 100644
index 000000000000..2a9a47a32698
--- /dev/null
+++ b/release/picobsd/help/shutdown.hlp.pl
@@ -0,0 +1,3 @@
+shutdown zakoncz dzialanie systemu
+
+ Nacisnij Ctlr-Alt-Del
diff --git a/release/picobsd/help/ssh.hlp.en b/release/picobsd/help/ssh.hlp.en
new file mode 100644
index 000000000000..bf6c168e22c8
--- /dev/null
+++ b/release/picobsd/help/ssh.hlp.en
@@ -0,0 +1,29 @@
+ssh Secure Shell remote access command
+
+ Usage: ssh [options] host [command]
+
+ -l user Log in using this user name.
+ -n Redirect input from /dev/null.
+ -a Disable authentication agent forwarding.
+ -x Disable X11 connection forwarding.
+ -i file Identity for RSA authentication (default: ~/.ssh/identity).
+ -t Tty; allocate a tty even if command is given.
+ -v Verbose; display verbose debugging messages.
+ -V Display version number only.
+ -q Quiet; don't display any warning messages.
+ -f Fork into background after authentication.
+ -e char Set escape character; ``none'' = disable (default: ~).
+ -c cipher Select encryption algorithm: ``idea'', ``3des''
+ -p port Connect to this port. Server must be on the same port.
+ -P Don't use priviledged source port.
+ -L listen-port:host:port Forward local port to remote address
+ -R listen-port:host:port Forward remote port to local address
+ These cause ssh to listen for connections on a port, and
+ forward them to the other side by connecting to host:port.
+ -C Enable compression.
+ -o 'option' Process the option as if it was read from a configuration
+ file.
+
+ Most commonly this will be:
+
+ ssh -l your_login remote_host
diff --git a/release/picobsd/help/ssh.hlp.pl b/release/picobsd/help/ssh.hlp.pl
new file mode 100644
index 000000000000..5a0d3cbac977
--- /dev/null
+++ b/release/picobsd/help/ssh.hlp.pl
@@ -0,0 +1,29 @@
+ssh Secure Shell
+
+ Sposob uzycia: ssh [options] host [command]
+
+ -l user Log in using this user name.
+ -n Redirect input from /dev/null.
+ -a Disable authentication agent forwarding.
+ -x Disable X11 connection forwarding.
+ -i file Identity for RSA authentication (default: ~/.ssh/identity).
+ -t Tty; allocate a tty even if command is given.
+ -v Verbose; display verbose debugging messages.
+ -V Display version number only.
+ -q Quiet; don't display any warning messages.
+ -f Fork into background after authentication.
+ -e char Set escape character; ``none'' = disable (default: ~).
+ -c cipher Select encryption algorithm: ``idea'', ``3des''
+ -p port Connect to this port. Server must be on the same port.
+ -P Don't use priviledged source port.
+ -L listen-port:host:port Forward local port to remote address
+ -R listen-port:host:port Forward remote port to local address
+ These cause ssh to listen for connections on a port, and
+ forward them to the other side by connecting to host:port.
+ -C Enable compression.
+ -o 'option' Process the option as if it was read from a configuration
+ file.
+
+ Najczesciej uzywa sie w tej postaci:
+
+ ssh -l nazwa_uzytk nazwa_maszyny
diff --git a/release/picobsd/help/sysctl.hlp.en b/release/picobsd/help/sysctl.hlp.en
new file mode 100644
index 000000000000..8a2c911a5afe
--- /dev/null
+++ b/release/picobsd/help/sysctl.hlp.en
@@ -0,0 +1,15 @@
+sysctl get or set kernel state
+
+ Usage:
+
+ sysctl [-bnX] variable ...
+ sysctl [-bnX] -w variable=value ...
+ sysctl [-bnX] -a
+ sysctl [-bnX] -A
+
+ To see the whole MIB table use:
+ sysctl -a
+
+ To set specific variable to new value use:
+
+ sysctl -w variable=value
diff --git a/release/picobsd/help/sysctl.hlp.pl b/release/picobsd/help/sysctl.hlp.pl
new file mode 100644
index 000000000000..abce3318bb1a
--- /dev/null
+++ b/release/picobsd/help/sysctl.hlp.pl
@@ -0,0 +1,15 @@
+sysctl ustaw lub wyswietl parametr jadra
+
+ Sposob uzycia:
+
+ sysctl [-bnX] zmienna ...
+ sysctl [-bnX] -w zmienna=wartosc ...
+ sysctl [-bnX] -a
+ sysctl [-bnX] -A
+
+ W celu wyswietlenia calego drzewa MIB:
+ sysctl -a
+
+ W celu przypisania wartosci zmiennek:
+
+ sysctl -w zmienna=wartosc
diff --git a/release/picobsd/help/telnet.hlp.en b/release/picobsd/help/telnet.hlp.en
new file mode 100644
index 000000000000..ddceebd53e64
--- /dev/null
+++ b/release/picobsd/help/telnet.hlp.en
@@ -0,0 +1,14 @@
+telnet user interface to the TELNET protocol
+
+ Usage:
+
+ telnet [-8] [-E] [-L] [-S tos] [-a] [-c] [-d] [-e char] [-l user]
+ [-n tracefile][-r] [host-name [port]]
+
+ Most commonly this will be just:
+
+ telnet <remote_host>
+
+ WARNING: Telnet protocol is unsafe, as it passes the
+ passwords in clear text over the network. Use 'ssh' instead, where it's
+ possible.
diff --git a/release/picobsd/help/telnet.hlp.pl b/release/picobsd/help/telnet.hlp.pl
new file mode 100644
index 000000000000..be3f77b2aba3
--- /dev/null
+++ b/release/picobsd/help/telnet.hlp.pl
@@ -0,0 +1,14 @@
+telnet klient protokolu Telnet
+
+ Sposob uzycia:
+
+ telnet [-8] [-E] [-L] [-S tos] [-a] [-c] [-d] [-e char] [-l user]
+ [-n tracefile][-r] [host-name [port]]
+
+ Najczesciej jest to:
+
+ telnet nazwa_maszyny
+
+ UWAGA: Protokol telnet jest niezbyt bezpieczny, gdyz
+ przesyla niezaszyfrowane hasla przez siec. Jesli to mozliwe, uzywaj
+ zamiast niego SSH.
diff --git a/release/picobsd/help/test.hlp.en b/release/picobsd/help/test.hlp.en
new file mode 100644
index 000000000000..351dc764895a
--- /dev/null
+++ b/release/picobsd/help/test.hlp.en
@@ -0,0 +1 @@
+test condition evaluation utility
diff --git a/release/picobsd/help/test.hlp.pl b/release/picobsd/help/test.hlp.pl
new file mode 100644
index 000000000000..de1cec87fdc9
--- /dev/null
+++ b/release/picobsd/help/test.hlp.pl
@@ -0,0 +1 @@
+test sprawdz istnienie warunku
diff --git a/release/picobsd/help/traceroute.hlp.en b/release/picobsd/help/traceroute.hlp.en
new file mode 100644
index 000000000000..6eccd46b29fb
--- /dev/null
+++ b/release/picobsd/help/traceroute.hlp.en
@@ -0,0 +1,14 @@
+traceroute print the route packets take to network host
+
+ Usage:
+
+ traceroute [-dnrv] [-w wait] [-m max_ttl] [-p port#] [-q nqueries]
+ [-t tos] [-s src_addr] [-g gateway] host [data_size]
+
+ Most commonly:
+
+ traceroute <host>
+ or
+ traceroute -n <host>
+
+ if you don't want to waste time for resolving IP addresses into names.
diff --git a/release/picobsd/help/traceroute.hlp.pl b/release/picobsd/help/traceroute.hlp.pl
new file mode 100644
index 000000000000..bddf4a479df2
--- /dev/null
+++ b/release/picobsd/help/traceroute.hlp.pl
@@ -0,0 +1,14 @@
+traceroute poka¿ trasê pakietów w sieci
+
+ Sposób u¿ycia:
+
+ traceroute [-dnrv] [-w wait] [-m max_ttl] [-p port#] [-q nqueries]
+ [-t tos] [-s src_addr] [-g gateway] host [data_size]
+
+ Najczê¶ciej:
+
+ traceroute <host>
+ lub
+ traceroute -n <host>
+
+ je¶li nie chcesz traciæ czasu na zamianê adresów IP na nazwy.
diff --git a/release/picobsd/help/umount.hlp.en b/release/picobsd/help/umount.hlp.en
new file mode 100644
index 000000000000..910a0b4bed11
--- /dev/null
+++ b/release/picobsd/help/umount.hlp.en
@@ -0,0 +1,12 @@
+umount unmount filesystems
+
+ Usage:
+
+ umount [-fv] special | node
+ umount -a | -A [-fv] [-h host] [-t type]
+
+ Most commonly this will be:
+
+ umount <mount_point>
+
+ e.g. 'umount /mnt'
diff --git a/release/picobsd/help/umount.hlp.pl b/release/picobsd/help/umount.hlp.pl
new file mode 100644
index 000000000000..20ea0d183d63
--- /dev/null
+++ b/release/picobsd/help/umount.hlp.pl
@@ -0,0 +1,12 @@
+umount odmontuj system plikow
+
+ Sposob uzycia:
+
+ umount [-fv] urzadzenie | punkt
+ umount -a | -A [-fv] [-h host] [-t type]
+
+ Najczesciej:
+
+ umount /nazwa_katalogu
+
+ Np. 'umount /mnt'
diff --git a/release/picobsd/help/vidcontrol.hlp.en b/release/picobsd/help/vidcontrol.hlp.en
new file mode 100644
index 000000000000..0aafefbcfa38
--- /dev/null
+++ b/release/picobsd/help/vidcontrol.hlp.en
@@ -0,0 +1,7 @@
+vidcontrol a utility for manipulating the syscons video driver
+
+ Usage:
+
+ vidcontrol [-r fg bg] [-b color] [-c appearance] [-d] [-l scrmap]
+ [-L] [-m on|off] [-f size file] [-s number] [-t N|off]
+ [-x] [mode] [fgcol [bgcol]] [show]
diff --git a/release/picobsd/help/vidcontrol.hlp.pl b/release/picobsd/help/vidcontrol.hlp.pl
new file mode 100644
index 000000000000..5e8df49cbcec
--- /dev/null
+++ b/release/picobsd/help/vidcontrol.hlp.pl
@@ -0,0 +1,7 @@
+vidcontrol ustwa parametry sterownika video
+
+ Sposob uzycia:
+
+ vidcontrol [-r fg bg] [-b kolor] [-c kursor] [-d] [-l mapa]
+ [-L] [-m on|off] [-f rozmiar plik] [-s numer] [-t N|off]
+ [-x] [mode] [fgcol [bgcol]] [show]
diff --git a/release/picobsd/help/vm.hlp.en b/release/picobsd/help/vm.hlp.en
new file mode 100644
index 000000000000..6a391c1b1956
--- /dev/null
+++ b/release/picobsd/help/vm.hlp.en
@@ -0,0 +1,12 @@
+vm Show memory usage.
+
+ This program repeatedly displays current memory usage, showing the
+ following numbers:
+
+ * procs: number of processes; r - running, w - waiting for I/O,
+ l - sleeping, s - swapping
+ * virt mem: virtual memory amounts (total and active), in kB
+ * real mem: real memory amounts (total and active), in kB
+ * shared vm: amount of shared virtual memory (total and active), in kB
+ * shared real: amount of shared real memory (total and active), in kB
+ * free: amount of free memory, in kB
diff --git a/release/picobsd/help/vm.hlp.pl b/release/picobsd/help/vm.hlp.pl
new file mode 100644
index 000000000000..00b8509a92d3
--- /dev/null
+++ b/release/picobsd/help/vm.hlp.pl
@@ -0,0 +1,14 @@
+vm Pokaz zajetosc pamieci
+
+ Program pokazuje aktualna zajetosc pamieci (do nacisniecia ^C),
+ wyswietlajac nastepujace wartosci:
+
+ * procs: liczba procesow: r - running (dzialajace),
+ w - czekajace na I/O,
+ l - sleeping,
+ s - swapping,
+ * virt mem: ilosc pamieci witrualnej (total i active), w kB
+ * real mem: ilosc pamieci rzeczywistej (total i active) w kB
+ * shared vm: ilosc dzielonej pamieci wirtualnej, w kB
+ * shared real: ilosc dzielonej pamieci rzeczywistej, w kB
+ * free: ilosc wolnej pamieci, w kB.
diff --git a/release/picobsd/install/Makefile.mfs b/release/picobsd/install/Makefile.mfs
new file mode 100644
index 000000000000..ac567daefaca
--- /dev/null
+++ b/release/picobsd/install/Makefile.mfs
@@ -0,0 +1,46 @@
+#
+# $Id: Makefile,v 1.2.2.1 1999/05/09 22:04:07 abial Exp $
+#
+
+DESTDIR?=/mnt
+
+STAND_LINKS= bin sbin
+USR_LINKS= bin sbin libexec
+PL_LOCALE_LINKS= pl polish
+MY_DEVS= std tun2 cuaa0 cuaa1 cuaa2 vty10 fd0 wd0s1h pty0 wd0 wd1 wd2 wd3 da0 da1 da2 da3 da4 da5 da6 bpf4
+
+all: tree links files
+
+tree:
+ mtree -deU -f mfs.mtree -p ${DESTDIR}
+
+links: tree
+ (cd ${DESTDIR}; \
+ for i in ${STAND_LINKS}; \
+ do \
+ ln -s /stand $${i}; \
+ done; \
+ cd var/run; \
+ ln -s /dev/null log; \
+ cd ../../usr; \
+ for i in ${USR_LINKS}; \
+ do \
+ ln -s /stand $${i}; \
+ done; \
+ cd share/misc;\
+ ln -s /etc/termcap termcap; )
+
+files: tree
+ (cd ${DESTDIR}; \
+ cp /sbin/dhclient-script stand/; \
+ cp -Rp /boot . ; )
+
+
+# We don't do it under 'all' because it's needed only on non-DEVFS systems
+devnodes: tree
+ (cd ${DESTDIR}/dev; \
+ ln -s /dev/MAKEDEV; \
+ ./MAKEDEV ${MY_DEVS}; \
+ rm MAKEDEV)
+
+clean:
diff --git a/release/picobsd/install/PICOBSD b/release/picobsd/install/PICOBSD
new file mode 100644
index 000000000000..77ee4b5156f5
--- /dev/null
+++ b/release/picobsd/install/PICOBSD
@@ -0,0 +1,75 @@
+#
+# $Id: PICOBSD,v 1.8.2.2 1999/02/15 02:49:24 des Exp $
+#
+#Line starting with #PicoBSD contains PicoBSD build parameters
+#marker def_sz init MFS_inodes floppy_inodes
+#PicoBSD 2200 init 4096 4096
+options MD_ROOT_SIZE=2200 # same as def_sz
+
+machine "i386"
+#cpu "I386_CPU"
+#cpu "I486_CPU"
+#cpu "I586_CPU"
+cpu "I686_CPU"
+ident PICOBSD
+maxusers 10
+
+options MATH_EMULATE #Support for x87 emulation
+options INET #InterNETworking
+options FFS #Berkeley Fast Filesystem
+options FFS_ROOT
+# options NFS #Network Filesystem
+options MFS
+options MD_ROOT
+options MSDOSFS #MSDOS Filesystem
+# options "EXT2FS"
+options "COMPAT_43" #Compatible with BSD 4.3 [KEEP THIS!]
+options "NO_F00F_HACK"
+
+device isa
+device pci
+
+device fdc
+
+# ATA and ATAPI devices
+device ata
+device atadisk
+
+# syscons is the default console driver, resembling an SCO console
+
+device atkbdc 1
+device atkbd
+device vga
+device sc 1
+
+device npx
+
+device sio
+
+#device ppc
+#controller ppbus
+#device nlpt
+#device plip
+#device ppi
+
+# 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.
+device de
+device fxp
+
+#device ed
+#device ep
+#device ie
+
+device loop
+device ether
+# device tun 2
+device vn
+device pty 16
+device md
+#device gzip # Exec gzipped a.out's
+device bpf 4
+options COMPAT_OLDISA #Use ISA shims and glue for old drivers
+
diff --git a/release/picobsd/install/PICOBSD.hints b/release/picobsd/install/PICOBSD.hints
new file mode 100644
index 000000000000..3301f28051d7
--- /dev/null
+++ b/release/picobsd/install/PICOBSD.hints
@@ -0,0 +1,30 @@
+# $FreeBSD$
+hint.fd.0.at="fdc0"
+hint.fd.0.drive="0"
+hint.ata.0.port="0x1F0"
+hint.ata.0.irq="14"
+hint.ata.1.at="isa"
+hint.ata.1.port="0x170"
+hint.ata.1.irq="15"
+hint.atkbd.0.at="isa"
+hint.atkbd.0.irq="1"
+hint.vga.0.at="isa"
+hint.sc.0.at="isa"
+hint.npx.0.at="isa"
+hint.npx.0.port="0x0F0"
+hint.npx.0.irq="13"
+hint.sio.0.at="isa"
+hint.sio.0.port="0x3F8"
+hint.sio.0.flags="0x10"
+hint.sio.0.irq="4"
+hint.sio.1.at="isa"
+hint.sio.1.port="0x2F8"
+hint.sio.1.irq="3"
+hint.sio.2.at="isa"
+hint.sio.2.disabled="1"
+hint.sio.2.port="0x3E8"
+hint.sio.2.irq="5"
+hint.sio.3.at="isa"
+hint.sio.3.disabled="1"
+hint.sio.3.port="0x2E8"
+hint.sio.3.irq="9"
diff --git a/release/picobsd/install/crunch1/Makefile b/release/picobsd/install/crunch1/Makefile
new file mode 100644
index 000000000000..a5da44217483
--- /dev/null
+++ b/release/picobsd/install/crunch1/Makefile
@@ -0,0 +1,44 @@
+#
+# $Id: Makefile,v 1.3 1999/01/19 23:12:50 abial Exp $
+#
+SRC?=/usr/src
+
+all: crunch
+
+crunch:
+# @if [ ! -f /usr/src/usr.bin/passwd/.picobsd.patched ]; then \
+# cat passwd.diff|(cd /usr/src/usr.bin/passwd; patch -p0); \
+# touch /usr/src/usr.bin/passwd/.picobsd.patched; \
+# fi
+ @cat crunch.conf|sed -e "s@/usr/src@${SRC}@" >crunch1.conf
+ @crunchgen ./crunch1.conf
+ @${MAKE} -f crunch1.mk -DNOPAM all \
+ "CFLAGS=${CFLAGS} -DNOPAM -DRELEASE_CRUNCH -DCRUNCHED_BINARY -DNOSECURE -DNOCRYPT" #2>&1 >/dev/null
+
+clean:
+# @if [ -f /usr/src/usr.bin/passwd/.picobsd.patched ]; then \
+# cat passwd.diff|(cd /usr/src/usr.bin/passwd; patch -R -p0); \
+# rm /usr/src/usr.bin/passwd/.picobsd.patched; \
+# fi
+ rm -f *.o *.stub *.lo *_stub.c *.mk \
+ crunch.cache \
+ crunch.mk \
+ crunch.c \
+ crunch1* \
+ crunch \
+ .tmp_* \
+ *.gz
+
+install:
+ cp crunch1 ${MFS_MOUNTPOINT}/stand/crunch
+ chmod 555 ${MFS_MOUNTPOINT}/stand/crunch
+ for i in `crunchgen -l crunch1.conf` ; \
+ do \
+ ln ${MFS_MOUNTPOINT}/stand/crunch ${MFS_MOUNTPOINT}/stand/$${i}; \
+ done
+ rm ${MFS_MOUNTPOINT}/stand/crunch
+ # Install the MIB files
+ #cp mibs/*.txt ${MFS_MOUNTPOINT}/usr/local/share/snmp/mibs/
+
+
+.include <bsd.prog.mk>
diff --git a/release/picobsd/install/crunch1/crunch.conf b/release/picobsd/install/crunch1/crunch.conf
new file mode 100644
index 000000000000..3a45dc126a0b
--- /dev/null
+++ b/release/picobsd/install/crunch1/crunch.conf
@@ -0,0 +1,66 @@
+#
+# $Id: crunch.conf,v 1.5.2.2 1999/05/07 10:03:06 abial Exp $
+#
+# NOTE: the string "/usr/src" will be automatically replaced with the
+# correct value set in 'build' script - you should change it there
+
+# Default build options
+buildopts -DNOPAM -DRELEASE_CRUNCH -DNOSECURE -DNOCRYPT -DNONETGRAPH -DNOIPSEC
+
+# other sources
+srcdirs /usr/src/bin
+srcdirs /usr/src/sbin/i386
+srcdirs /usr/src/sbin
+srcdirs /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin
+srcdirs /usr/src/usr.sbin
+srcdirs /usr/src/libexec
+# sources for ns & vm
+srcdirs ../../tinyware
+
+
+progs sh test awk cat chflags chmod chown cp cpio date dd
+# progs sh test awk cat chflags chmod chown cp cpio date dd dev_mkdb
+progs df dhclient disklabel echo fdisk fetch getty grep minigzip
+progs hostname ifconfig init ln login ls mkdir mknod msg
+progs more mount newfs pwd mount_std pwd_mkdb
+# progs mount mount_ext2fs mount_cd9660 mount_nfs msg newfs ns passwd pwd pwd_mkdb mount_std
+# progs reboot rm route stty sysctl syslogd tr umount
+progs reboot rm route stty sysctl tr umount
+# progs vm w
+
+#progs sh test echo hostname ln login getty stty
+#progs msg kget reboot
+#progs init ifconfig df sps cat
+## progs cp rm mknod chmod chown mkdir ls syslogd
+#progs cp rm mknod chmod chown mkdir ls
+#progs sysctl route pwd_mkdb dev_mkdb
+#progs mount umount
+#progs kill mount_std grep tr awk newfs fetch
+#progs pwd more
+##progs passwd date
+#progs date fdisk disklabel
+#progs mount_cd9660 mount_nfs ping traceroute
+#progs tar gzip cpio dhclient
+
+#ln mount_cd9660 cd9660
+# ln mount_nfs nfs
+ln test [
+ln sh -sh
+ln mount_std procfs
+ln mount_std mount_procfs
+ln msg dmesg
+#ln ns netstat
+ln minigzip gunzip
+ln minigzip zcat
+ln minigzip gzip
+ln chown chgrp
+
+# libs -lncurses -lmytinfo -lipx -lz -lpcap -lalias -lwrap
+#libs -lncurses -lmytinfo -lipx -lz -lpcap
+# libs -lmytinfo -lz -lpcap -lipx
+libs -lmytinfo -lz -lpcap -lipx
+# libs -ledit -lutil -lmd -lcrypt -lmp -lgmp -lm -lkvm
+libs -ledit -lutil -lcrypt -lm
+libs -lgnuregex -lftpio
+#libs -lradius # used by ppp
diff --git a/release/picobsd/install/floppy.tree.exclude b/release/picobsd/install/floppy.tree.exclude
new file mode 100644
index 000000000000..5f412ef5e7f4
--- /dev/null
+++ b/release/picobsd/install/floppy.tree.exclude
@@ -0,0 +1 @@
+CVS/*
diff --git a/release/picobsd/install/floppy.tree/boot.config b/release/picobsd/install/floppy.tree/boot.config
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/boot.config
diff --git a/release/picobsd/install/floppy.tree/etc/disktab b/release/picobsd/install/floppy.tree/etc/disktab
new file mode 100644
index 000000000000..7575ba66e088
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/disktab
@@ -0,0 +1,87 @@
+#
+# Floppy formats:
+#
+# To make a filesystem on a floppy:
+# fdformat [-f <size>] fd<drive>[.<size>]
+# disklabel -B -r -w fd<drive>[.<size>] fd<size>
+# newfs <opts> fd<drive>[.<size>]
+#
+# with <opts>:
+# -t 2 - two heads
+# -u 9|15|18 - sectors per track
+# (using the default value of 1/4096 is not much useful for floppies)
+# -l 1 - interleave 1 (for most floppies)
+# -i 65536 - bytes of data per i-node
+# (the default -i value will render you with a floppy wasting way
+# too much space in i-node areas)
+#
+
+fd360:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#9:nc#40:\
+ :pa#720:oa#0:ba#4096:fa#512:\
+ :pb#720:ob#0:bb#4096:fb#512:\
+ :pc#720:oc#0:bc#4096:fc#512:
+
+fd720:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#9:nc#80:\
+ :pa#1440:oa#0:ba#4096:fa#512:\
+ :pb#1440:ob#0:bb#4096:fb#512:\
+ :pc#1440:oc#0:bc#4096:fc#512:
+
+fd1200|floppy5|5in|5.25in High Density Floppy:\
+ :ty=floppy:se#512:nt#2:rm#360:ns#15:nc#80:\
+ :pa#2400:oa#0:ba#4096:fa#512:\
+ :pb#2400:ob#0:bb#4096:fb#512:\
+ :pc#2400:oc#0:bc#4096:fc#512:
+
+fd1440|floppy|floppy3|3in|3.5in High Density Floppy:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#18:nc#80:\
+ :pa#2880:oa#0:ba#4096:fa#512:\
+ :pb#2880:ob#0:bb#4096:fb#512:\
+ :pc#2880:oc#0:bc#4096:fc#512:
+
+fd1024|floppy0|3.5in Special Density Floppy:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#16:nc#64:\
+ :pa#2048:oa#0:ba#4096:fa#512:\
+ :pb#2048:ob#0:bb#4096:fb#512:\
+ :pc#2048:oc#0:bc#4096:fc#512:
+
+# a == root
+# b == swap
+# c == d == whole disk
+# e == /var
+# f == scratch
+# h == /usr
+
+cp3100new|Connor Peripherals 100MB IDE, with a different configuration:\
+ :dt=ST506:ty=winchester:se#512:nt#8:ns#33:nc#766: \
+ :pa#15840:oa#0:ta=4.2BSD:ba#4096:fa#512: \
+ :pb#24288:ob#15840:tb=swap: \
+ :pc#202224:oc#0: \
+ :pd#202224:od#0: \
+ :pe#15840:oe#40128:te=4.2BSD:be#4096:fe#512: \
+ :pg#15840:og#55968:tg=4.2BSD:bg#4096:fg#512: \
+ :ph#130416:oh#71808:th=4.2BSD:bh#4096:fh#512:
+
+sony650|Sony 650 MB MOD|\
+ :ty=removable:dt=SCSI:se#512:nt#1:ns#31:nc#18600:ts#1:rm#4800:\
+ :pc#576600:oc#0:\
+ :pa#576600:oa#0:ta=4.2BSD:ba#8192:fa#1024:
+
+mta3230|mo230|IBM MTA-3230 230 Meg 3.5inch Magneto-Optical:\
+ :ty=removeable:dt=SCSI:rm#3600:\
+ :se#512:nt#64:ns#32:nc#216:sc#2048:su#444384:\
+ :pa#444384:oa#0:ba#4096:fa#0:ta=4.2BSD:\
+ :pc#444384:oc#0:
+
+minimum:ty=mfs:se#512:nt#1:rm#300:\
+ :ns#2880:nc#1:\
+ :pa#2880:oa#0:ba#4096:fa#512:\
+ :pc#2880:oc#0:bc#4096:fc#512:
+
+zip100|zip 100:\
+ :ty=removable:se#512:nc#96:nt#64:ns#32:\
+ :pa#196608:oa#0:ba#4096:fa#512:\
+ :pb#196608:ob#0:bb#4096:fb#512:\
+ :pc#196608:oc#0:bc#4096:fc#512:
+
diff --git a/release/picobsd/install/floppy.tree/etc/doinstall b/release/picobsd/install/floppy.tree/etc/doinstall
new file mode 100755
index 000000000000..1e29e19fddb3
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/doinstall
@@ -0,0 +1,112 @@
+#!/bin/sh
+#
+# PicoBSD installer script for FreeBSD
+#
+# Doug White
+# $FreeBSD$
+
+#### CONFIGURATION
+
+# URL to image tarball, fed to fetch(1)
+image_url="ftp://YOUR.SERVER.HERE/pub/fbsdimage.tgz"
+
+# Target disk driver to fdisk -e
+target_disk="wd0"
+
+#### END CONFIGURATION
+
+# Immediately abort on error
+set -e
+
+# Do the install
+
+echo "==> Partitioning disk"
+fdisk -e ${target_disk}
+
+echo "==> Disklabeling disk"
+/etc/prepdisk ${target_disk}
+
+echo "==> Creating filesystem"
+newfs /dev/r${target_disk}s1a > /dev/null
+
+echo "==> Mounting new filesystem"
+mount /dev/${target_disk}s1a /mnt
+
+echo "==> Installing disk image"
+if [ "X${image_url}" = "X" ] ; then
+ echo "No URL specified!"
+else
+ echo "=====> From: ${image_url}"
+ cd /mnt
+ fetch -a -o - ${image_url} | gzip -d | cpio -idmu --quiet
+fi
+
+# Some examples of post-install tweaking
+
+# The install floppy always DHCPs an address. If you want to make that
+# address permanent on the system, use this code bit.
+
+#echo "==> Saving IP address"
+#set `ifconfig fxp0 | grep inet`
+#echo "ifconfig_fxp0=\"inet $2 netmask $4\"" >> /mnt/etc/rc.conf
+#echo "=====> IP Address is $2"
+
+# If you enable different apps based on environment, here's an example.
+# For 10.2.X.X networks, enable AMD.
+
+#echo "==> Checking if amd should be enabled"
+#IFS=.
+#set $2
+#if [ "X$1" = "X10" -a "X$2" = "X1" ] ; then
+# echo "=====> Enabling amd"
+# echo "amd_enable=\"YES\"" >> /mnt/etc/rc.conf
+#fi
+
+#echo "==> Setting default router"
+#echo "defaultrouter=\"10.1.1.3\"" >> /mnt/etc/rc.conf
+
+# Grab the DNS servers from the local DHCP configuration.
+
+#echo "==> Configuring name resolution"
+#cp /etc/resolv.conf /mnt/etc
+
+# Prompt a menu to install a single or multiprocessor kernel. On our
+# main image, we have two kernels, kernel-SMP and kernel-NOSMP. This
+# menu drops a symlink that the bootblocks follow to the proper kernel.
+# The user can enter a name for a different kernel if desired.
+
+#echo "==> Linking kernel"
+
+#DOKERN=0
+#cd /mnt
+#chflags noschg kernel
+#rm -f kernel
+#
+#while [ "X$DOKERN" = "X0" ] ; do
+#
+# DOKERN=1
+#
+# echo " Please specify which kernel to use:"
+# echo " 1. Uniprocessor"
+# echo " 2. Multiprocessor (OK for SMP equipped systems with one CPU)"
+# echo " Or type the name of the kernel you wish to use"
+# read -p "Select >" KERN
+#
+#
+# if [ "X$KERN" = "X1" ] ; then
+# ln -s kernel-NOSMP kernel
+# echo "=====> Uniprocessor kernel selected"
+# elif [ "X$KERN" = "X2" ] ; then
+# ln -s kernel-SMP kernel
+# echo "=====> SMP kernel selected"
+# elif [ -f $KERN ] ; then
+# ln -s $KERN kernel
+# echo "=====> User supplied kernel $KERN selected"
+# else
+# echo "*** Unknown kernel $KERN"
+# KERN=0
+# fi
+#
+#done
+
+echo "==> Install complete!"
diff --git a/release/picobsd/install/floppy.tree/etc/fstab b/release/picobsd/install/floppy.tree/etc/fstab
new file mode 100644
index 000000000000..64d34ca9b1ae
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/fstab
@@ -0,0 +1,4 @@
+#proc /proc procfs rw 0 0
+#/dev/fd0c /start_floppy ufs rw 1 1
+#/dev/wd0s1 /dos msdos rw 0 0
+#/dev/wcd0c /cdrom cd9660 ro,noauto 0 0
diff --git a/release/picobsd/install/floppy.tree/etc/gettytab b/release/picobsd/install/floppy.tree/etc/gettytab
new file mode 100644
index 000000000000..90562acf2505
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/gettytab
@@ -0,0 +1,40 @@
+# from: @(#)gettytab 5.14 (Berkeley) 3/27/91
+#
+default:\
+ :cb:ce:ck:lc:fd#1000:cl:im=\r\nPicoBSD (%h) (%t)\r\n\r\n:sp#1200:
+
+P|Pc|Pc console:\
+ :ht:np:sp#115200:
+
+#
+# Fixed speed entries
+2|std.9600|9600-baud:\
+ :np:sp#9600:
+g|std.19200|19200-baud:\
+ :np:sp#19200:
+std.38400|38400-baud:\
+ :np:sp#38400:
+std.57600|57600-baud:\
+ :np:sp#57600:
+std.115200|115200-baud:\
+ :np:sp#115200:
+
+#
+# Entry specifying explicit device settings. See termios(4) and
+# /usr/include/termios.h, too. The entry forces the tty into
+# CLOCAL mode (so no DCD is required), and uses Xon/Xoff flow control.
+#
+# cflags: CLOCAL | HUPCL | CREAD | CS8
+# oflags: OPOST | ONLCR | OXTABS
+# iflags: IXOFF | IXON | ICRNL | IGNPAR
+# lflags: IEXTEN | ICANON | ISIG | ECHOCTL | ECHO | ECHOK | ECHOE | ECHOKE
+#
+# The `0' flags don't have input enabled. The `1' flags don't echo.
+# (Echoing is done inside getty itself.)
+#
+local.9600|CLOCAL tty @ 9600 Bd:\
+ :c0#0x0000c300:c1#0x0000cb00:c2#0x0000cb00:\
+ :o0#0x00000007:o1#0x00000002:o2#0x00000007:\
+ :i0#0x00000704:i1#0x00000000:i2#0x00000704:\
+ :l0#0x000005cf:l1#0x00000000:l2#0x000005cf:\
+ :sp#9600:
diff --git a/release/picobsd/install/floppy.tree/etc/group b/release/picobsd/install/floppy.tree/etc/group
new file mode 100644
index 000000000000..abbd733f3b0b
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/group
@@ -0,0 +1,19 @@
+wheel:*:0:root,user
+daemon:*:1:daemon
+kmem:*:2:root
+sys:*:3:root
+tty:*:4:root
+operator:*:5:root
+mail:*:6:
+bin:*:7:
+news:*:8:
+man:*:9:
+games:*:13:
+staff:*:20:root,user
+guest:*:31:root
+uucp:*:66:
+xten:*:67:xten
+dialer:*:68:
+network:*:69:
+nogroup:*:65533:
+nobody:*:65534:
diff --git a/release/picobsd/install/floppy.tree/etc/host.conf b/release/picobsd/install/floppy.tree/etc/host.conf
new file mode 100644
index 000000000000..c67b871b42b5
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/host.conf
@@ -0,0 +1,3 @@
+# $Id: host.conf,v 1.1.1.1 1998/08/27 17:38:42 abial Exp $
+hosts
+bind
diff --git a/release/picobsd/install/floppy.tree/etc/inetd.conf b/release/picobsd/install/floppy.tree/etc/inetd.conf
new file mode 100644
index 000000000000..c7c50de341e4
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/inetd.conf
@@ -0,0 +1,21 @@
+#
+# Internet server configuration database
+#
+# @(#)inetd.conf 5.4 (Berkeley) 6/30/90
+#
+telnet stream tcp nowait root /usr/libexec/telnetd telnetd
+#
+# "Small servers" -- used to be standard on, but we're more conservative
+# about things due to Internet security concerns. Only turn on what you
+# need.
+#
+#daytime stream tcp nowait root internal
+#daytime dgram udp wait root internal
+#time stream tcp nowait root internal
+#time dgram udp wait root internal
+#echo stream tcp nowait root internal
+#echo dgram udp wait root internal
+#discard stream tcp nowait root internal
+#discard dgram udp wait root internal
+#chargen stream tcp nowait root internal
+#chargen dgram udp wait root internal
diff --git a/release/picobsd/install/floppy.tree/etc/login.conf b/release/picobsd/install/floppy.tree/etc/login.conf
new file mode 100644
index 000000000000..17bfb137ab45
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/login.conf
@@ -0,0 +1,120 @@
+# This file controls resource limits, accounting limits and
+# default user environment settings.
+#
+# $Id: login.conf,v 1.2.2.1 1999/04/30 18:48:09 hoek Exp $
+#
+
+
+# Authentication methods
+
+auth-defaults:\
+ :auth=passwd:
+
+auth-root-defaults:\
+ :auth-login=passwd:\
+ :auth-rlogin=passwd:\
+
+auth-ftp-defaults:\
+ :auth=passwd:
+
+# Example defaults
+# These settings are used by login(1) by default for classless users
+# Note that entries like "cputime" set both "cputime-cur" and "cputime-max"
+
+default:\
+ :cputime=infinity:\
+ :datasize-cur=22M:\
+ :stacksize-cur=8M:\
+ :memorylocked-cur=10M:\
+ :memoryuse-cur=30M:\
+ :filesize=infinity:\
+ :coredumpsize=infinity:\
+ :maxproc-cur=64:\
+ :openfiles-cur=64:\
+ :priority=0:\
+ :requirehome@:\
+ :umask=022:\
+ :tc=auth-defaults:
+
+
+#
+# standard - standard user defaults
+#
+standard:\
+ :copyright=/etc/COPYRIGHT:\
+ :welcome=/etc/motd:\
+ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,EDITOR=/usr/bin/ee:\
+ :path=~/bin /bin /usr/bin:\
+ :nologin=/var/run/nologin:\
+ :cputime=1h30m:\
+ :datasize=8M:\
+ :stacksize=2M:\
+ :memorylocked=4M:\
+ :memoryuse=8M:\
+ :filesize=8M:\
+ :coredumpsize=8M:\
+ :openfiles=24:\
+ :maxproc=32:\
+ :priority=0:\
+ :requirehome:\
+ :passwordtime=90d:\
+ :umask=002:\
+ :ignoretime@:\
+ :tc=default:
+#
+# Staff users - few restrictions and allow login anytime
+#
+staff:\
+ :ignorenologin:\
+ :ignoretime:\
+ :requirehome@:\
+ :accounted@:\
+ :path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
+ :umask=022:\
+ :tc=standard:
+
+
+#
+# root - fallback for root logins
+#
+root:\
+ :path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
+ :cputime=infinity:\
+ :datasize=infinity:\
+ :stacksize=infinity:\
+ :memorylocked=infinity:\
+ :memoryuse=infinity:\
+ :filesize=infinity:\
+ :coredumpsize=infinity:\
+ :openfiles=infinity:\
+ :maxproc=infinity:\
+ :memoryuse-cur=32M:\
+ :maxproc-cur=64:\
+ :openfiles-cur=1024:\
+ :priority=0:\
+ :requirehome@:\
+ :umask=022:\
+ :tc=auth-root-defaults:\
+#
+# Settings used by /etc/rc
+#
+daemon:\
+ :coredumpsize@:\
+ :coredumpsize-cur=0:\
+ :datasize=infinity:\
+ :datasize-cur@:\
+ :maxproc=512:\
+ :maxproc-cur@:\
+ :memoryuse-cur=64M:\
+ :memorylocked-cur=64M:\
+ :openfiles=1024:\
+ :openfiles-cur@:\
+ :stacksize=16M:\
+ :stacksize-cur@:\
+ :tc=default:
+#
+# Polish Users Accounts. Setup proper environment variables.
+#
+polish:Polish Users Accounts:\
+ :lang=pl_pl.ISO-8859-2:\
+ :tc=default:
diff --git a/release/picobsd/install/floppy.tree/etc/master.passwd b/release/picobsd/install/floppy.tree/etc/master.passwd
new file mode 100644
index 000000000000..9d85cdf91b0e
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/master.passwd
@@ -0,0 +1,7 @@
+root:$1$xOOaGnKU$U9QdsCI40XXcCUMBN.7Az.:0:0::0:0:Charlie &:/root:/bin/sh
+toor:*:0:0::0:0:Bourne-again Superuser:/root:
+daemon:*:1:1::0:0:Owner of many system processes:/root:/nonexistent
+operator:*:2:20::0:0:System &:/usr/guest/operator:/bin/csh
+bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/nonexistent
+nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/nonexistent
+user:$1$T9q8Coad$WatJttamwr2UAdbfKbWxj.:1002:1002:polish:0:0:user:/home/user:/bin/sh
diff --git a/release/picobsd/install/floppy.tree/etc/mfs.rc b/release/picobsd/install/floppy.tree/etc/mfs.rc
new file mode 100644
index 000000000000..22b7678e49cf
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/mfs.rc
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $Id: mfs.rc.en,v 1.1.1.1 1998/08/27 17:38:42 abial Exp $
+### WARNING !!!!!! #####
+# We remove this file during execution (see EOF).
+# Awful things happen if its size is > 1024B
+
+stty status '^T'
+
+trap : 2
+trap : 3
+
+HOME=/; export HOME
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
+export PATH
+
+trap "echo 'Reboot interrupted'; exit 1" 3
+
+### Special setup for one floppy PICOBSD ###
+echo ""
+echo "-------------------------------------------"
+echo " Please wait. The system is coming up..."
+echo "-------------------------------------------"
+echo ""
+echo "Reading /etc from startup floppy..."
+mount -o rdonly /dev/fd0a /start_floppy
+cd /start_floppy/etc
+cp -Rp . /etc/
+cd /etc
+pwd_mkdb -p ./master.passwd
+umount /start_floppy
+echo "Ok. (Now you can remove floppy if you like)"
+echo ""
+. rc
+exit 0
diff --git a/release/picobsd/install/floppy.tree/etc/prepdisk b/release/picobsd/install/floppy.tree/etc/prepdisk
new file mode 100755
index 000000000000..ddba5c72ad3f
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/prepdisk
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# Prepares disk based on kernel disk information. Assumes fdisk -e was
+# run beforehand.
+#
+# 'swap' is the size of the swap partition in 512 byte blocks (def: 256MB)
+
+# dev=target_disk
+
+target_disk=$1
+
+dmesg | grep "${target_disk}.*sectors" | tr -d '(:)' | awk '
+ {
+ v = $3
+ c = $5
+ h = $7
+ s = $9
+ ss = c * h * s - s
+ sw = 522240
+ ap = ss - sw
+
+ print "#",$0 > "_"
+ print "g c"c" h"h" s"s > "_"
+ print "p 1 165",s,ss > "_"
+ print "a 1" > "_"
+
+ print "#",$0 > "__"
+ print "type: ESDI" > "__"
+ print "disk:", $1 > "__"
+ print "label:" > "__"
+ print "flags:" > "__"
+ print "bytes/sector: 512" > "__"
+ print "sectors/track:", s > "__"
+ print "tracks/cylinder:", h > "__"
+ print "sectors/cylinder:", s * h > "__"
+ print "cylinders:", c > "__"
+ print "sectors/unit:", ss > "__"
+ print "rpm: 3600" > "__"
+ print "interleave: 1" > "__"
+ print "trackskew: 0" > "__"
+ print "cylinderskew: 0" > "__"
+ print "headswitch: 0 # milliseconds" > "__"
+ print "track-to-track seek: 0 # milliseconds" > "__"
+ print "drivedata: 0 " > "__"
+ print "8 partitions:" > "__"
+ print "# size offset fstype [fsize bsize bps/cpg]" > "__"
+ print "a:",ap,"0 4.2BSD 512 4096 " > "__"
+ print "b:",sw,ap,"swap " > "__"
+ print "c:",ss,"0 unused 0 0" > "__"
+ }
+'
+disklabel -BrR ${target_disk} __
diff --git a/release/picobsd/install/floppy.tree/etc/profile b/release/picobsd/install/floppy.tree/etc/profile
new file mode 100644
index 000000000000..babb9333f494
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/profile
@@ -0,0 +1,3 @@
+# System-wide .profile file for sh(1).
+BLOCKSIZE=K; export BLOCKSIZE
+PATH=/stand:.; export PATH
diff --git a/release/picobsd/install/floppy.tree/etc/protocols b/release/picobsd/install/floppy.tree/etc/protocols
new file mode 100644
index 000000000000..c80be39f693a
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/protocols
@@ -0,0 +1,7 @@
+#
+# Internet (IP) protocols
+ip 0 IP # internet protocol, pseudo protocol number
+icmp 1 ICMP # internet control message protocol
+igmp 2 IGMP # Internet Group Management
+tcp 6 TCP # transmission control protocol
+udp 17 UDP # user datagram protocol
diff --git a/release/picobsd/install/floppy.tree/etc/rc b/release/picobsd/install/floppy.tree/etc/rc
new file mode 100644
index 000000000000..09612a08784f
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/rc
@@ -0,0 +1,64 @@
+#!/bin/sh
+# $Id: rc.en,v 1.5 1999/01/19 23:15:41 abial Exp $
+############################################
+### Special setup for one floppy PICOBSD ###
+### THIS IS NOT THE NORMAL /etc/rc !!!!! ###
+############################################
+mount -a -t nonfs
+if [ -f /etc/rc.conf ]; then
+ . /etc/rc.conf
+fi
+rm -f /var/run/*
+if [ "x$swapfile" != "xNO" -a -w "$swapfile" -a -b /dev/vn0b ]; then
+ echo "Adding $swapfile as additional swap."
+ vnconfig /dev/vn0b $swapfile && swapon /dev/vn0b
+fi
+# configure serial devices
+if [ -f /etc/rc.serial ]; then
+ . /etc/rc.serial
+fi
+# start up the initial network configuration.
+if [ -f /etc/rc.network ]; then
+ . /etc/rc.network
+ network_pass1
+fi
+mount -a -t nfs
+chmod 666 /dev/tty[pqrsPQRS]*
+# clean up left-over files
+(cd /var/run && { cp /dev/null utmp; chmod 644 utmp; })
+if [ -n "$network_pass1_done" ]; then
+ network_pass2
+fi
+if [ -n "$network_pass2_done" ]; then
+ network_pass3
+fi
+if [ "X${inetd_enable}" = X"YES" ]; then
+ echo "Starting inetd."; inetd ${inetd_flags}
+fi
+
+dev_mkdb
+
+echo ''
+if [ "x$swapfile" = "xNO" ]; then
+ echo "WARNING: no swap partition!"
+ echo "Don't run too many programs at the same time..."
+fi
+
+# Launch the installer
+. /etc/doinstall
+
+echo ''
+echo ''
+echo '+----------- PicoBSD @VER@ (NET) ---------------+'
+echo '| |'
+echo '| Log in as "root" (password "setup"). |'
+echo '| |'
+echo '| This version of PicoBSD is fully under |'
+echo '| BSD license. For more details see |'
+echo '| http://www.freebsd.org/~picobsd, or contact |'
+echo '| the author. |'
+echo '| |'
+echo '| abial@freebsd.org |'
+echo '| |'
+echo '+----------------------------------------------+'
+exit 0
diff --git a/release/picobsd/install/floppy.tree/etc/rc.conf b/release/picobsd/install/floppy.tree/etc/rc.conf
new file mode 100644
index 000000000000..7ec2d5cd15ea
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/rc.conf
@@ -0,0 +1,26 @@
+#!/bin/sh
+# $Id: rc.conf.en,v 1.1.1.1 1998/08/27 17:38:42 abial Exp $
+swapfile="NO" # Set to name of swapfile if aux swapfile desired.
+### Network configuration sub-section ######################
+### Basic network options: ###
+hostname="pico.mydomain.edu" # Set this!
+firewall="NO" # firewall type (see /etc/rc.firewall) or NO
+tcp_extensions="NO" # Allow RFC1323 & RFC1644 extensions (or NO).
+network_interfaces="lo0 fxp0" # List of network interfaces (lo0 is loopback).
+ifconfig_lo0="inet 127.0.0.1" # default loopback device configuration.
+ifconfig_fxp0="" # Force call to start_if.fxp0
+#ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" # Sample alias entry.
+### Network daemons options: ###
+inetd_enable="NO" # Run the network daemon dispatcher (or NO)
+inetd_flags="" # Optional flags to inetd
+snmpd_enable="NO" # Run the SNMP daemon (or NO)
+snmpd_flags="-C -c /etc/snmpd.conf" # Optional flags to snmpd
+### Network routing options: ###
+defaultrouter="NO" # Set to default gateway (or NO).
+static_routes="" # Set to static route list (or leave empty).
+gateway_enable="NO" # Set to YES if this host will be a gateway.
+arpproxy_all="" # replaces obsolete kernel option ARP_PROXYALL.
+### Allow local configuration override at the very end here ##
+if [ -f /etc/rc.conf.local ]; then
+ . /etc/rc.conf.local
+fi
diff --git a/release/picobsd/install/floppy.tree/etc/rc.network b/release/picobsd/install/floppy.tree/etc/rc.network
new file mode 100644
index 000000000000..5c58b4c20b64
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/rc.network
@@ -0,0 +1,79 @@
+#!/bin/sh -
+# $Id: rc.network.en,v 1.1.1.1 1998/08/27 17:38:42 abial Exp $
+network_pass1() {
+ echo -n 'Doing initial network setup:'
+ # Set the host name if it is not already set
+ if [ -z "`hostname -s`" ] ; then
+ hostname $hostname
+ echo ' hostname'
+ fi
+ # Set up all the network interfaces, calling startup scripts if needed
+ for ifn in ${network_interfaces}; do
+ if [ -e /etc/start_if.${ifn} ]; then
+ . /etc/start_if.${ifn}
+ fi
+ # Do the primary ifconfig if specified
+ eval ifconfig_args=\$ifconfig_${ifn}
+ if [ -n "${ifconfig_args}" ] ; then
+ ifconfig ${ifn} ${ifconfig_args}
+ fi
+ # Check to see if aliases need to be added
+ alias=0
+ while :
+ do
+ eval ifconfig_args=\$ifconfig_${ifn}_alias${alias}
+ if [ -n "${ifconfig_args}" ]; then
+ ifconfig ${ifn} ${ifconfig_args} alias
+ alias=`expr ${alias} + 1`
+ else
+ break;
+ fi
+ done
+ ifconfig ${ifn}
+ done
+ # Load the filters if required
+ if [ -n "$firewall_enable" -a -f /etc/rc.firewall -a \
+ "x$firewall_enable" = "xYES" ] ; then
+ . /etc/rc.firewall
+ echo "Firewall rules loaded."
+ else
+ echo "Warning: kernel has firewall functionality, but firewall rules weren't loaded."
+ echo " All ip services are ENABLED by default."
+ fi
+ # Configure routing
+ if [ "x$defaultrouter" != "xNO" ] ; then
+ static_routes="default ${static_routes}"
+ route_default="default ${defaultrouter}"
+ fi
+ # Set up any static routes. This should be done before router discovery.
+ if [ "x${static_routes}" != "x" ]; then
+ for i in ${static_routes}; do
+ eval route_args=\$route_${i}
+ route add ${route_args}
+ done
+ fi
+ echo -n 'Additional routing options:'
+ if [ -n "$tcp_extensions" -a "x$tcp_extensions" != "xYES" ] ; then
+ echo -n ' tcp_extensions=NO'
+ sysctl -w net.inet.tcp.rfc1323=0 >/dev/null 2>&1
+ sysctl -w net.inet.tcp.rfc1644=0 >/dev/null 2>&1
+ fi
+ if [ "X$gateway_enable" = X"YES" ]; then
+ echo -n ' IP_gateway=YES'
+ sysctl -w net.inet.ip.forwarding=1 >/dev/null 2>&1
+ fi
+ if [ "X$arpproxy_all" = X"YES" ]; then
+ echo -n ' turning on ARP_PROXY_ALL: '
+ sysctl -w net.link.ether.inet.proxyall=1 2>&1
+ fi
+ echo '.'
+ network_pass1_done=YES # Let future generations know we made it.
+}
+
+network_pass2() {
+ network_pass2_done=YES
+}
+
+network_pass3() {
+ network_pass3_done=YES
+}
diff --git a/release/picobsd/install/floppy.tree/etc/rc.serial b/release/picobsd/install/floppy.tree/etc/rc.serial
new file mode 100644
index 000000000000..9eb1c8db1ae6
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/rc.serial
@@ -0,0 +1,127 @@
+#!/bin/sh
+# $Id: rc.serial,v 1.1.1.1 1998/08/27 17:38:42 abial Exp $
+
+# Change some defaults for serial devices.
+# Standard defaults are:
+# dtrwait 300 drainwait 0
+# initial cflag from <sys/ttydefaults.h> = cread cs8 hupcl
+# initial iflag, lflag and oflag all 0
+# speed 9600
+# special chars from <sys/ttydefaults.h>
+# nothing locked
+# except for serial consoles the initial iflag, lflag and oflag are from
+# <sys/ttydefaults.h> and clocal is locked on.
+
+default() {
+ # Reset everything changed by the other functions to initial defaults.
+
+ ci=$1; shift # call in device identifier
+ co=$1; shift # call out device identifier
+
+ for i in $*
+ do
+ comcontrol /dev/tty$ci$i dtrwait 300 drainwait 0
+ stty </dev/ttyi$ci$i -clocal crtscts hupcl 9600 reprint ^R
+ stty </dev/ttyl$ci$i -clocal -crtscts -hupcl 0
+ stty </dev/cuai$co$i -clocal crtscts hupcl 9600 reprint ^R
+ stty </dev/cual$co$i -clocal -crtscts -hupcl 0
+ done
+}
+
+maybe() {
+ # Special settings.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # Don't use ^R; it breaks bash's ^R when typed ahead.
+ stty </dev/ttyi$ci$i reprint undef
+ stty </dev/cuai$co$i reprint undef
+ # Lock clocal off on dialin device for security.
+ stty </dev/ttyl$ci$i clocal
+ # Lock the speeds to use old binaries that don't support them.
+ # Any legal speed works to lock the initial speed.
+ stty </dev/ttyl$ci$i 300
+ stty </dev/cual$co$i 300
+ done
+}
+
+modem() {
+ # Modem that supports CTS and perhaps RTS handshaking.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # may depend on modem
+ comcontrol /dev/tty$ci$i dtrwait 100 drainwait 180
+ # Lock crtscts on.
+ # Speed reasonable for V42bis.
+ stty </dev/ttyi$ci$i crtscts 57600
+ stty </dev/ttyl$ci$i crtscts
+ stty </dev/cuai$co$i crtscts 57600
+ stty </dev/cual$co$i crtscts
+ done
+}
+
+mouse() {
+ # Mouse on either callin or callout port.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # Lock clocal on, hupcl off.
+ # Standard speed for Microsoft mouse.
+ stty </dev/ttyi$ci$i clocal -hupcl 1200
+ stty </dev/ttyl$ci$i clocal hupcl
+ stty </dev/cuai$co$i clocal -hupcl 1200
+ stty </dev/cual$co$i clocal hupcl
+ done
+}
+
+terminal() {
+ # Terminal that supports CTS and perhaps RTS handshaking
+ # with the cable or terminal arranged so that DCD is on
+ # at least while the terminal is on.
+ # Also works for bidirectional communications to another pc
+ # provided at most one side runs getty.
+ # Same as modem() except we want a faster speed and no dtrwait.
+
+ ci=$1; shift
+ co=$1; shift
+
+ modem $ci $co $*
+ for i in $*
+ do
+ comcontrol /dev/tty$ci$i dtrwait 0
+ stty </dev/ttyi$ci$i 115200
+ stty </dev/cuai$co$i 115200
+ done
+}
+
+# Don't use anything from this file unless you have some buggy programs
+# that require it.
+
+# Edit the functions and the examples to suit your system.
+# $1 is the call in device identifier, $2 is the call out device identifier
+# and the remainder of the line lists the device numbers.
+
+# Initialize assorted 8250-16550 (sio) ports.
+# maybe d a 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v
+# mouse d a 2
+# modem d a 1
+# terminal d a 0
+
+# Initialize all ports on a Cyclades-8yo.
+# modem c c 00 01 02 03 04 05 06 07
+
+# Initialize all ports on a Cyclades-16ye.
+# modem c c 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
+
+# Initialize all ports on a Digiboard 8.
+# modem D D 00 01 02 03 04 05 06 07
diff --git a/release/picobsd/install/floppy.tree/etc/remote b/release/picobsd/install/floppy.tree/etc/remote
new file mode 100644
index 000000000000..6f9fcaf4ad5d
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/remote
@@ -0,0 +1,50 @@
+# @(#)remote 5.2 (Berkeley) 6/30/90
+#
+# remote -- remote host description file
+# see tip(1), remote(5)
+#
+# dv device to use for the tty
+# el EOL marks (default is NULL)
+# du make a call flag (dial up)
+# pn phone numbers (@ =>'s search phones file; possibly taken from
+# PHONES environment variable)
+# at ACU type
+# ie input EOF marks (default is NULL)
+# oe output EOF string (default is NULL)
+# cu call unit (default is dv)
+# br baud rate (defaults to 300)
+# fs frame size (default is BUFSIZ) -- used in buffering writes on
+# receive operations
+# tc to continue a capability
+
+# Systems definitions
+netcom|Netcom Unix Access:\
+ :pn=\@:tc=unix1200:
+omen|Omen BBS:\
+ :pn=\@:tc=dos1200:
+
+# UNIX system definitions
+unix1200|1200 Baud dial-out to a UNIX system:\
+ :el=^U^C^R^O^D^S^Q:ie=%$:oe=^D:tc=dial1200:
+unix300|300 Baud dial-out to a UNIX system:\
+ :el=^U^C^R^O^D^S^Q:ie=%$:oe=^D:tc=dial300:
+
+# DOS system definitions
+dos1200|1200 Baud dial-out to a DOS system:\
+ :el=^U^C^R^O^D^S^Q:ie=%$:oe=^Z:pa=none:tc=dial1200:
+
+# General dialer definitions used below
+#
+# COURIER switch settings:
+# switch: 1 2 3 4 5 6 7 8 9 10
+# setting: D U D U D D U D U U
+# Rackmount: U U D U D U D D U D
+#
+dial2400|2400 Baud Hayes attributes:\
+ :dv=/dev/cuaa0:br#2400:cu=/dev/cuaa0:at=hayes:du:
+dial1200|1200 Baud Hayes attributes:\
+ :dv=/dev/cuaa0:br#1200:cu=/dev/cuaa0:at=hayes:du:
+
+# Hardwired line
+cuaa0b|cua0b:dv=/dev/cuaa0:br#2400
+cuaa0c|cua0c:dv=/dev/cuaa0:br#9600
diff --git a/release/picobsd/install/floppy.tree/etc/resolv.conf b/release/picobsd/install/floppy.tree/etc/resolv.conf
new file mode 100644
index 000000000000..57a54e3ea70e
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/resolv.conf
@@ -0,0 +1,3 @@
+# $Id: resolv.conf.en,v 1.1.1.1 1998/08/27 17:38:42 abial Exp $
+domain mydomain.edu
+nameserver 192.33.4.12
diff --git a/release/picobsd/install/floppy.tree/etc/services b/release/picobsd/install/floppy.tree/etc/services
new file mode 100644
index 000000000000..eec499fafec7
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/services
@@ -0,0 +1,94 @@
+echo 4/ddp
+echo 7/tcp
+echo 7/udp
+discard 9/tcp
+discard 9/udp
+systat 11/tcp
+systat 11/udp
+daytime 13/tcp
+daytime 13/udp
+qotd 17/tcp
+qotd 17/udp
+chargen 19/tcp
+chargen 19/udp
+ftp-data 20/tcp
+ftp-data 20/udp
+ftp 21/tcp
+ftp 21/udp
+ssh 22/tcp
+ssh 22/udp
+telnet 23/tcp
+telnet 23/udp
+smtp 25/tcp
+smtp 25/udp
+time 37/tcp
+time 37/udp
+domain 53/tcp
+domain 53/udp
+tacacs-ds 65/tcp
+tacacs-ds 65/udp
+bootps 67/tcp
+bootps 67/udp
+bootpc 68/tcp
+bootpc 68/udp
+tftp 69/tcp
+tftp 69/udp
+gopher 70/tcp
+gopher 70/udp
+finger 79/tcp
+finger 79/udp
+http 80/tcp
+http 80/udp
+pop2 109/tcp
+pop2 109/udp
+pop3 110/tcp
+pop3 110/udp
+uucp-path 117/tcp
+uucp-path 117/udp
+nntp 119/tcp
+nntp 119/udp
+netbios-ns 137/tcp
+netbios-ns 137/udp
+netbios-dgm 138/tcp
+netbios-dgm 138/udp
+netbios-ssn 139/tcp
+netbios-ssn 139/udp
+imap 143/tcp
+imap 143/udp
+snmp 161/tcp
+snmp 161/udp
+snmptrap 162/tcp
+snmptrap 162/udp
+bgp 179/tcp
+bgp 179/udp
+irc 194/tcp
+irc 194/udp
+ipx 213/tcp
+ipx 213/udp
+imap3 220/tcp
+imap3 220/udp
+ldap 389/tcp
+ldap 389/udp
+netware-ip 396/tcp
+netware-ip 396/udp
+https 443/tcp
+https 443/udp
+exec 512/tcp
+biff 512/udp
+login 513/tcp
+who 513/udp
+cmd 514/tcp
+syslog 514/udp
+printer 515/tcp
+printer 515/udp
+talk 517/tcp
+talk 517/udp
+ntalk 518/tcp
+ntalk 518/udp
+timed 525/tcp
+timed 525/udp
+uucp 540/tcp
+uucp 540/udp
+uucp-rlogin 541/tcp
+uucp-rlogin 541/udp
+natd 8668/divert # Network Address Translation
diff --git a/release/picobsd/install/floppy.tree/etc/shells b/release/picobsd/install/floppy.tree/etc/shells
new file mode 100644
index 000000000000..df377f133737
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/shells
@@ -0,0 +1,6 @@
+# List of acceptable shells for chpass(1).
+# Ftpd will not allow users to connect who are not using
+# one of these shells.
+
+/bin/sh
+/bin/csh
diff --git a/release/picobsd/install/floppy.tree/etc/start_if.fxp0 b/release/picobsd/install/floppy.tree/etc/start_if.fxp0
new file mode 100644
index 000000000000..03e59894948c
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/start_if.fxp0
@@ -0,0 +1 @@
+/stand/dhclient
diff --git a/release/picobsd/install/floppy.tree/etc/termcap b/release/picobsd/install/floppy.tree/etc/termcap
new file mode 100644
index 000000000000..5a9316af0295
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/termcap
@@ -0,0 +1,123 @@
+# Copyright (c) 1980, 1985, 1989 The Regents of the University of California.
+# All rights reserved.
+# @(#)termcap.src 5.88 (Berkeley) 4/30/91
+#
+#
+# for syscons
+# common entry without semigraphics
+cons25w|ansiw|ansi80x25-raw:\
+ :al=\E[L:am:bs:NP:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:co#80:\
+ :dc=\E[P:dl=\E[M:do=\E[B:bt=\E[Z:ho=\E[H:ic=\E[@:li#25:cb=\E[1K:\
+ :ms:nd=\E[C:pt:rs=\E[x\E[m\Ec:so=\E[7m:se=\E[m:up=\E[A:\
+ :pa#64:Co#8:Sf=\E[3%dm:Sb=\E[4%dm:op=\E[37;40m:\
+ :k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:\
+ :k9=\E[U:k;=\E[V:F1=\E[W:F2=\E[X:K2=\E[E:nw=\E[E:ec=\E[%dX:\
+ :kb=^H:kh=\E[H:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:le=^H:eo:sf=\E[S:sr=\E[T:\
+ :kN=\E[G:kP=\E[I:@7=\E[F:kI=\E[L:kD=\E[K:kB=\E[Z:\
+ :IC=\E[%d@:DC=\E[%dP:SF=\E[%dS:SR=\E[%dT:AL=\E[%dL:DL=\E[%dM:\
+ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:cv=\E[%i%dd:ch=\E[%i%d`:bw:\
+ :mb=\E[5m:md=\E[1m:mh=\E[30;1m:mr=\E[7m:me=\E[m:bl=^G:ut:it#8:
+cons25|ansis|ansi80x25:\
+ :ac=l\332m\300k\277j\331u\264t\303v\301w\302q\304x\263n\305`^Da\260f\370g\361~\371.^Y-^Xh\261I^U0\333y\363z\362:\
+ :tc=cons25w:
+cons25-m|ansis-mono|ansi80x25-mono:\
+ :pa@:Co@:Sf@:Sb@:op@:us=\E[4m:ue=\E[m:md@:mh@:tc=cons25:
+cons50|ansil|ansi80x50:\
+ :li#50:tc=cons25:
+cons50-m|ansil-mono|ansi80x50-mono:\
+ :li#50:tc=cons25-m:
+# 80x25 ISO 8859-1 FreeBSD console
+cons25l1|cons25-iso8859-1:\
+ :ac=l\215m\216k\214j\213u\226t\225v\227w\230q\222x\231n\217o\220s\224p\221r\223`\201a\202f\207g\210~\237.^Y-^X+\253,\273I\247y\232z\233:\
+ :tc=cons25w:
+cons25l1-m|cons25-iso8859-1-mono:\
+ :pa@:Co@:Sf@:Sb@:op@:us=\E[4m:ue=\E[m:md@:mh@:tc=cons25l1:
+# 80x50 ISO 8859-1 FreeBSD console
+cons50l1|cons50-iso8859-1:\
+ :li#50:tc=cons25l1:
+cons50l1-m|cons50-iso8859-1-mono:\
+ :li#50:tc=cons25l1-m:
+dosansi|ANSI.SYS standard crt|ansi:\
+ :am:bs:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:co#80:\
+ :do=\E[B:li#25:mi:nd=\E[C:\
+ :se=\E[m:so=\E[7m:up=\E[A:us=\E[4m:ue=\E[m:\
+ :md=\E[1m:mh=\E[m:mb=\E[5m:me=\E[m:\
+ :kh=\EG:kb=^h:ku=\EH:kd=\EP:kl=\EK:kr=\EM:\
+ :k1=\E;:k2=\E<:k3=\E=:k4=\E>:k5=\E?:\
+ :k6=\E@:k7=\EA:k8=\EB:k9=\EC:k0=\ED:
+
+# Note: this entry describes the "native"
+# capabilities of the PC monochrome display, without ANY emulation; most
+# communications packages (but NOT PC/IX connect) do some kind of emulation.
+pc|ibmpc|ibm pc PC/IX:\
+ :li#24:co#80:am:bs:bw:eo:\
+ :cd=\E[J:ce=\E[K:cl=\Ec:cm=\E[%i%2;%2H:do=\E[B:ho=\E[;H:\
+ :nd=\E[C:up=\E[A:so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m:
+pc3mono|IBM PC 386BSD Console with monochrome monitor:\
+ :so=\E[0;1r\E[m:tc=pc3:
+pc3|ibmpc3|IBM PC 386BSD Console:\
+ :Co#8:\
+ :DO=\E[%dB:\
+ :F1=\E[W:\
+ :F2=\E[X:\
+ :K1=\E[H:\
+ :K2=\E[I:\
+ :K3=\E[E:\
+ :K4=\E[F:\
+ :K5=\E[G:\
+ :LE=\E[%dD:\
+ :RI=\E[%dC:\
+ :Sb=\E[1;%dx:\
+ :Sf=\E[2;%dx:\
+ :UP=\E[%dA:\
+ :ac=l\332m\300k\277j\331u\264t\303v\301w\302q\304x\263n\305`^Da\260f\370g\361~\371.^Y-^Xh\261I^U0\333y\363z\362:\
+ :am:\
+ :bl=^G:\
+ :bs:\
+ :cb=\E[1K:\
+ :cd=\E[J:\
+ :ce=\E[K:\
+ :cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:\
+ :co#80:\
+ :cr=^M:\
+ :do=\E[B:\
+ :ho=\E[H:\
+ :is=\E[m:\
+ :it#8:\
+ :k;=\E[V:\
+ :k1=\E[M:\
+ :k2=\E[N:\
+ :k3=\E[O:\
+ :k4=\E[P:\
+ :k5=\E[Q:\
+ :k6=\E[R:\
+ :k7=\E[S:\
+ :k8=\E[T:\
+ :k9=\E[U:\
+ :kD=\177:\
+ :@7=\E[F:\
+ :kN=\E[G:\
+ :kP=\E[I:\
+ :kb=\177:\
+ :kd=\E[B:\
+ :kh=\E[H:\
+ :kl=\E[D:\
+ :kr=\E[C:\
+ :ku=\E[A:\
+ :le=^H:\
+ :li#25:\
+ :ms:\
+ :nd=\E[C:\
+ :op=\E[x:\
+ :pa#64:\
+ :rs=\E[m:\
+ :se=\E[m:\
+ :sf=\E[S:\
+ :so=\E[7;1r\E[7m:\
+ :sr=\E[T:\
+ :ta=^I:\
+ :te=\E[m:\
+ :ti=\E[m:\
+ :up=\E[A:\
+ :ut:
diff --git a/release/picobsd/install/floppy.tree/etc/ttys b/release/picobsd/install/floppy.tree/etc/ttys
new file mode 100644
index 000000000000..8ef5e6ebb37f
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/etc/ttys
@@ -0,0 +1,32 @@
+#
+# @(#)ttys 5.1 (Berkeley) 4/17/89
+#
+# name getty type status comments
+#
+# This entry needed for asking password when init goes to single-user mode
+# If you want to be asked for password, change "secure" to "insecure" here
+#console none unknown off secure
+vga none cons25 off secure
+#
+ttyv0 "/usr/libexec/getty Pc" cons25 on secure
+# Virtual terminals
+ttyv1 "/usr/libexec/getty Pc" cons25 on secure
+ttyv2 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv3 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv4 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv5 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv6 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv7 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv8 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv9 "/usr/libexec/getty Pc" cons25 on secure
+# Pseudo terminals
+ttyp0 none network secure
+ttyp1 none network secure
+ttyp2 none network secure
+ttyp3 none network
+ttyp4 none network
+ttyp5 none network
+ttyp6 none network
+ttyp7 none network
+ttyp8 none network
+ttyp9 none network
diff --git a/release/picobsd/install/floppy.tree/kernel.config b/release/picobsd/install/floppy.tree/kernel.config
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/release/picobsd/install/floppy.tree/kernel.config
diff --git a/release/picobsd/install/lang/README.en b/release/picobsd/install/lang/README.en
new file mode 100644
index 000000000000..d2482aeed561
--- /dev/null
+++ b/release/picobsd/install/lang/README.en
@@ -0,0 +1,41 @@
+1998.07.12, Warsaw, Poland
+
+ PicoBSD @VER@ (NET)
+ -----------------
+
+
+What is PicoBSD?
+----------------
+
+It's a one floppy version of FreeBSD (please see http://www.freebsd.org),
+configured mainly for networking applications. It can be used as a router or
+firewall, or kind of a fixit floppy (or all of them).
+
+You can find more information on the home page of this project at:
+
+ http://www.freebsd.org/~picobsd/
+
+What are minimal requirements?
+------------------------------
+
+* 386SX CPU or better (there is an FPU emulator in kernel)
+* 10MB RAM - the more the better. If you have an HDD, you can make a
+ swap partition or swap file (using vnode driver and vnconfig). Then you
+ probably will be able to run with ca. 6MB only. But RAM is cheap...
+* Modem sitting on COM1-COM4 (default is to use COM2), if you want to have
+ a PPP connection.
+* Network card: compatible with NE2000, PCI Intel, 3Com 3c509 or with DEC
+ chipsets (ed, ep, fxp and de drivers). The kernel supports two of each
+ ISA (i.e. +6 total) plus two PPP connections (tun interfaces). So you can
+ easily build something like router with as many as 8 outlets :-)
+
+For detailed description and list of supported hardware see the original
+documentation, or:
+
+ http://www.freebsd.org/~picobsd/picobsd.html
+
+I'll be glad hearing from you about your experiences with PicoBSD. Thanks.
+
+Have fun!
+
+Andrzej Bialecki <abial@freebsd.org>
diff --git a/release/picobsd/install/lang/README.pl b/release/picobsd/install/lang/README.pl
new file mode 100644
index 000000000000..d7e3f6755ceb
--- /dev/null
+++ b/release/picobsd/install/lang/README.pl
@@ -0,0 +1,56 @@
+1998.07.12, Warszawa
+
+ PicoBSD @VER@ (wersja NET)
+ ------------------------
+
+Co to jest PicoBSD?
+-------------------
+
+Jest to jednodyskietkowa wersja FreeBSD skonfigurowana glownie pod katem
+zastosowania jako klient/serwer uslug sieciowych (takich jak routing,
+firewall, NFS). W celu zapoznania sie z pelnym systemem zajrzyj na
+http://www.freebsd.org. Oficjalna strona tego projektu znajduje sie na
+http://www.freebsd.org/~picobsd.
+
+Jakie sa minimalne wymagania?
+-----------------------------
+
+* Procesor 386SX lub lepszy (jadro posiada emulator FPU)
+* 10MB pamieci - jest to absolutnie nieprzekraczalne minimum. Oczywiscie im
+ wiecej, tym lepiej - ograniczenie jest glownie spowodowane brakiem swapu. Po
+ zapoznaniu sie z systemem mozesz sobie skonfigurowac tzw. swap-file na dysku
+ twardym, np. na partycji DOS-owej. Wowczas prawdopodobnie wystarczy 6MB
+ pamieci.
+* Modem, skonfigurowany na COM1-COM4 (standardowo system wykorzystuje COM2),
+ jesli bedzie wykorzystywany dostep przez PPP.
+* Karta sieciowa: kompatybilna z NE2000, niektore typy 3Com, lub wersje PCI z
+ chipsetem DEC21040 (drivery ed, ep, fxp i de). Jadro jest skonfigurowane
+ tak, zeby moc obsluzyc po dwie karty ed, ep, i de (czyli w sumie siedem)
+ oraz dwa polaczenia PPP rownoczesnie. Mozna wiec zbudowac router z 9
+ interfejsami... :-)
+
+Jakie sa roznice w stosunku do poprzedniej wersji?
+--------------------------------------------------
+
+* Poszerzony zestaw sterownikow w jadrze systemu
+* dodana obsluga CD-ROM
+* agent SNMP (pelna wersja ucd-snmp, pozwalajaca na monitorowanie procesow i
+ zdalne uruchamianie skryptow)
+* brak ssh, ftp i edytora ee (oznacza to, ze musisz edytowac pliki
+ konfiguracyjne montujac dyskietke na normalnym systemie)
+* dodany inetd, telnetd, routed, tftpd, bootpd, ps, kill, netstat,
+ ping, traceroute
+* brak vnconfig i vn(4): w przypadku routera powinien on miec tyle pamieci
+ RAM, zeby nie potrzebowac swapu, lub miec normalny swap.
+* dodana obsluga hasel (passwd(1))
+* dodana obsluga NFS (klient)
+* sa dwaj uzytkownicy: root (haslo 'setup') i user (haslo 'PicoBSD'). Ze
+ wzgledu na skomplikowana sprawe z prawami dostepu, user praktycznie moze
+ jedynie zrobic te rzeczy, ktore nie wymagaja praw roota (czyli np. telnet).
+* dodany skrypt 'update', ktory powoduje uaktualnienie zawartosci katalogu
+ /etc na dyskietce w stosunku do tego, co znajduje sie na MFS.
+
+
+Milej zabawy!
+
+Andrzej Bialecki <abial@freebsd.org>
diff --git a/release/picobsd/install/lang/boot.help.en b/release/picobsd/install/lang/boot.help.en
new file mode 100644
index 000000000000..7cbce1354839
--- /dev/null
+++ b/release/picobsd/install/lang/boot.help.en
@@ -0,0 +1,18 @@
+Usage: bios_drive:interface(unit,partition)kernel_name options
+ bios_drive 0, 1, ...
+ interface fd, wd or sd
+ unit 0, 1, ...
+ partition a, c, ...
+ kernel_name name of kernel, or ? for list of files in root directory
+ options -a (ask name) -C (cdrom) -c (userconfig) -D (dual consoles)
+ -d (debug early) -g (gdb) -h (serial console) -P (probe kbd)
+ -r (default root) -s (single user) -v (verbose)
+Examples:
+ 1:sd(0,a)mykernel boot `mykernel' on the first SCSI drive when one IDE
+ drive is present
+ 1:wd(2,a) boot from the second (secondary master) IDE drive
+ 1:sd(0,a)? list the files in the root directory on the specified
+ drive/unit/partition, and set the default bios_drive,
+ interface, unit and partition
+ -cv boot with the defaults, then run UserConfig to modify
+ hardware parameters (c), and print verbose messages (v)
diff --git a/release/picobsd/install/lang/boot.help.pl b/release/picobsd/install/lang/boot.help.pl
new file mode 100644
index 000000000000..bb5b422529aa
--- /dev/null
+++ b/release/picobsd/install/lang/boot.help.pl
@@ -0,0 +1,16 @@
+Opcje: dysk_bios:kontroler(dysk,partycja)nazwa_kernela opcje
+ dysk_bios 0, 1, ...
+ kontroler fd (dyskietka), wd (dysk IDE) lub sd (dysk SCSI)
+ dysk 0, 1, ... (numer dysku w kontrolerze)
+ partycja a, c, e, f ... (wedlug nazewnictwa BSD)
+ nazwa_kernela nazwa pliku kernela, lub ? zeby dostac liste plikow
+ opcje -a (pytaj o rootdev) -C (cdrom) -c (userconf.) -D (podwojna konsola)
+ -d (uruchom debugger) -g (gdb) -h (konsola szeregowa)
+ -P (probkuj klawiature) -r (domyslny rootdev) -s (tryb single user)
+ -v (verbose - szczegolowe komunikaty)
+Np: 1:sd(0,a)mykernel startuj `mykernel' z 1 dysku SCSI gdy jest tez 1 dysk
+ IDE, i jednoczesnie ustaw go jako domyslny dysk_bios,
+ kontroler, dysk i partycje
+ -cv startuj z parametrami domyslnymi, potem uruchom
+ konfiguracje param. sprzetowych (-c), i podawaj
+ szczegolowe komunikaty w trakcie bootowania (-v).
diff --git a/release/picobsd/install/lang/hosts.en b/release/picobsd/install/lang/hosts.en
new file mode 100644
index 000000000000..522c1811553a
--- /dev/null
+++ b/release/picobsd/install/lang/hosts.en
@@ -0,0 +1,5 @@
+# $Id: hosts.en,v 1.1.1.1 1998/08/27 17:38:43 abial Exp $
+# This file should contain the addresses and aliases
+# for local hosts that share this file.
+127.0.0.1 localhost localhost.mydomain.edu
+127.0.0.1 pico.mydomain.edu
diff --git a/release/picobsd/install/lang/hosts.pl b/release/picobsd/install/lang/hosts.pl
new file mode 100644
index 000000000000..c3563eae8767
--- /dev/null
+++ b/release/picobsd/install/lang/hosts.pl
@@ -0,0 +1,5 @@
+# $Id: hosts.pl,v 1.1.1.1 1998/08/27 17:38:43 abial Exp $
+# This file should contain the addresses and aliases
+# for local hosts that share this file.
+127.0.0.1 localhost localhost.mydomain.org.pl
+127.0.0.1 pico.mydomain.org.pl
diff --git a/release/picobsd/install/lang/motd.en b/release/picobsd/install/lang/motd.en
new file mode 100644
index 000000000000..97194182eedf
--- /dev/null
+++ b/release/picobsd/install/lang/motd.en
@@ -0,0 +1,12 @@
+==================================================
+ )\_)\
+PicoBSD @VER@ (NET) (o,o)
+ __ \~/
+Welcome to PicoBSD! -->====\
+ ~~ d d
+You can find a short description of the picoBSD
+system in file /README. You can view it using
+"more /README".
+
+For more info contact the author (abial@freebsd.org).
+
diff --git a/release/picobsd/install/lang/motd.pl b/release/picobsd/install/lang/motd.pl
new file mode 100644
index 000000000000..4b1fcf551518
--- /dev/null
+++ b/release/picobsd/install/lang/motd.pl
@@ -0,0 +1,12 @@
+=======================================================
+ )\_)\
+PicoBSD @VER@ (NET) (o,o)
+ __ \~/
+Witamy w PicoBSD! -->====\
+ ~~ d d
+W glownym katalogu w pliku README znajdziesz picoBSD
+krotki opis systemu. Mozesz go obejrzec przy pomocy
+"more /README".
+
+Wiecej informacji znajdziesz u autora (abial@freebsd.org).
+
diff --git a/release/picobsd/install/lang/resolv.conf.pl b/release/picobsd/install/lang/resolv.conf.pl
new file mode 100644
index 000000000000..fe9223b69f87
--- /dev/null
+++ b/release/picobsd/install/lang/resolv.conf.pl
@@ -0,0 +1,3 @@
+# $Id: resolv.conf.pl,v 1.1.1.1 1998/08/27 17:38:43 abial Exp $
+domain mydomain.org.pl
+nameserver 148.81.16.51
diff --git a/release/picobsd/install/mfs.mtree b/release/picobsd/install/mfs.mtree
new file mode 100644
index 000000000000..5df3481116ec
--- /dev/null
+++ b/release/picobsd/install/mfs.mtree
@@ -0,0 +1,58 @@
+#
+# $Id: mfs.mtree,v 1.1.1.1 1998/08/27 17:38:44 abial Exp $
+#
+/set type=dir uname=root gname=wheel mode=0755
+.
+ dev
+ ..
+ dos
+ ..
+ etc
+ ..
+ home
+ user
+ ..
+ ..
+ mnt
+ ..
+ mnt1
+ ..
+ mnt2
+ ..
+ proc
+ ..
+ root
+ ..
+ stand
+ ..
+ start_floppy
+ ..
+ tftpboot
+ ..
+ tmp mode=01777
+ ..
+ usr
+ local
+ share
+ snmp
+ mibs
+ ..
+ ..
+ ..
+ ..
+ share
+ misc
+ ..
+ ..
+ ..
+ var
+ db
+ ..
+ run
+ ..
+ spool
+ lock
+ ..
+ ..
+ ..
+..
diff --git a/release/picobsd/isp/Makefile.mfs b/release/picobsd/isp/Makefile.mfs
new file mode 100644
index 000000000000..12eeab618065
--- /dev/null
+++ b/release/picobsd/isp/Makefile.mfs
@@ -0,0 +1,10 @@
+#
+# $FreeBSD$
+#
+
+MY_DEVS= std tun2 vty10 fd0 wd0s1h pty0 \
+ cuaa0 cuaa1 cuaa2 cuaa3 cuaa4 \
+ cuaa5 cuaa6 cuaa7 cuaa8 cuaa9
+
+.include "../build/Makefile.mfs"
+
diff --git a/release/picobsd/isp/PICOBSD b/release/picobsd/isp/PICOBSD
new file mode 100644
index 000000000000..0990679741ca
--- /dev/null
+++ b/release/picobsd/isp/PICOBSD
@@ -0,0 +1,116 @@
+#
+# $FreeBSD$
+#
+# Line starting with #PicoBSD contains PicoBSD build parameters
+#marker def_sz init MFS_inodes floppy_inodes
+#PicoBSD 2200 init 4096 32768
+options MD_ROOT_SIZE=2200 # same as def_sz
+
+machine i386
+cpu I386_CPU
+cpu I486_CPU
+cpu I586_CPU
+cpu I686_CPU
+ident PICOBSD
+maxusers 20
+
+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 NFS #Network Filesystem
+options NFS_NOSERVER #Network Filesystem
+#options BOOTP
+options MFS #Memory Filesystem
+options MD_ROOT #MFS as root
+options MSDOSFS #MSDOS Filesystem
+options CD9660 #ISO 9660 Filesystem
+options PROCFS #Process filesystem
+options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
+options USERCONFIG #boot -c editor
+options INTRO_USERCONFIG #imply -c and parse info area
+options VISUAL_USERCONFIG #visual boot -c editor
+options IPFIREWALL
+options IPFIREWALL_DEFAULT_TO_ACCEPT
+options IPDIVERT
+#options DEVFS
+options PCI_QUIET
+# Support for bridging and bandwidth limiting
+options DUMMYNET
+options HZ=1000
+#options NMBCLUSTERS=4096
+#options BRIDGE
+
+device isa
+device pci
+
+device fdc
+
+device ata
+device atadisk
+device atapicd
+
+# atkbdc0 controls both the keyboard and the PS/2 mouse
+device atkbdc 1
+device atkbd
+device vga
+
+# syscons is the default console driver, resembling an SCO console
+device sc 1
+
+device npx
+
+device sio
+
+# Support for multiport serial cards
+
+options COM_MULTIPORT
+
+# Hayes ESP boards
+
+options COM_ESP
+
+# Comtrol Rocketport
+# The PCI versions
+#device rp
+#device rp
+# The ISA versions
+device rp
+
+# Cyclades Cyclom-Y serial driver
+device cy 1
+
+device ppc
+device ppbus
+device lpt
+device plip
+device ppi
+
+#
+# The following Ethernet NICs are all PCI devices.
+#
+device de
+device fxp
+
+# 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.
+
+device ed
+device ep
+device ie
+device lnc
+
+device loop
+device ether
+# iijppp uses tun instead of ppp device
+device ppp 8
+device tun 2
+#device vn
+device pty 16
+device md
+#device gzip # Exec gzipped a.out's
+
+options COMPAT_OLDISA #Use ISA shims and glue for old drivers
+
diff --git a/release/picobsd/isp/PICOBSD.hints b/release/picobsd/isp/PICOBSD.hints
new file mode 100644
index 000000000000..d69345e0b2a6
--- /dev/null
+++ b/release/picobsd/isp/PICOBSD.hints
@@ -0,0 +1,101 @@
+# $FreeBSD$
+hint.fdc.0.at="isa"
+hint.fdc.0.port="0x3F0"
+hint.fdc.0.irq="6"
+hint.fdc.0.drq="2"
+hint.fd.0.at="fdc0"
+hint.fd.0.drive="0"
+hint.ata.0.at="isa"
+hint.ata.0.port="0x1F0"
+hint.ata.0.irq="14"
+hint.ata.1.at="isa"
+hint.ata.1.port="0x170"
+hint.ata.1.irq="15"
+hint.atkbdc.0.at="isa"
+hint.atkbdc.0.port="0x060"
+hint.atkbd.0.at="atkbdc"
+hint.atkbd.0.irq="1"
+hint.vga.0.at="isa"
+hint.sc.0.at="isa"
+hint.npx.0.at="nexus"
+hint.npx.0.port="0x0F0"
+hint.npx.0.irq="13"
+hint.sio.0.at="isa"
+hint.sio.0.port="0x3F8"
+hint.sio.0.flags="0x10"
+hint.sio.0.irq="4"
+hint.sio.1.at="isa"
+hint.sio.1.port="0x2F8"
+hint.sio.1.irq="3"
+hint.sio.2.at="isa"
+hint.sio.2.port="0x3E8"
+hint.sio.2.irq="5"
+hint.sio.3.at="isa"
+hint.sio.3.port="0x2E8"
+hint.sio.3.irq="9"
+hint.sio.4.at="isa"
+hint.sio.4.port="0x2a0"
+hint.sio.4.flags="0x701"
+hint.sio.5.at="isa"
+hint.sio.5.port="0x2a8"
+hint.sio.5.flags="0x701"
+hint.sio.6.at="isa"
+hint.sio.6.port="0x2b0"
+hint.sio.6.flags="0x701"
+hint.sio.7.at="isa"
+hint.sio.7.port="0x2b8"
+hint.sio.7.flags="0x701"
+hint.sio.7.irq="12"
+hint.sio.8.at="isa"
+hint.sio.8.port="0x120"
+hint.sio.8.flags="0xb05"
+hint.sio.9.at="isa"
+hint.sio.9.port="0x128"
+hint.sio.9.flags="0xb05"
+hint.sio.10.at="isa"
+hint.sio.10.port="0x130"
+hint.sio.10.flags="0xb05"
+hint.sio.11.at="isa"
+hint.sio.11.port="0x138"
+hint.sio.11.flags="0xb05"
+hint.sio.11.irq="12"
+hint.rp.0.at="isa"
+hint.rp.0.port="0x100"
+hint.rp.1.at="isa"
+hint.rp.1.port="0x180"
+hint.cy.0.at="isa"
+hint.cy.0.irq="10"
+hint.cy.0.maddr="0xd4000"
+hint.cy.0.msize="0x2000"
+hint.cy.1.at="isa"
+hint.cy.1.irq="11"
+hint.cy.1.maddr="0xd6000"
+hint.cy.1.msize="0x2000"
+hint.ppc.0.at="isa"
+hint.ppc.0.flags="0x40"
+hint.ppc.0.irq="7"
+hint.lpt.0.at="ppbus"
+hint.plip.0.at="ppbus"
+hint.ppi.0.at="ppbus"
+hint.ed.0.at="isa"
+hint.ed.0.port="0x280"
+hint.ed.0.irq="5"
+hint.ed.0.maddr="0xd8000"
+hint.ed.1.at="isa"
+hint.ed.1.port="0x300"
+hint.ed.1.irq="5"
+hint.ed.1.maddr="0xd0000"
+hint.ep.0.at="isa"
+hint.ep.0.port="0x300"
+hint.ep.0.irq="10"
+hint.ep.1.at="isa"
+hint.ep.1.port="0x280"
+hint.ep.1.irq="5"
+hint.ie.0.at="isa"
+hint.ie.0.port="0x300"
+hint.ie.0.irq="5"
+hint.ie.0.maddr="0xd0000"
+hint.lnc.0.at="isa"
+hint.lnc.0.port="0x300"
+hint.lnc.0.irq="10"
+hint.lnc.0.drq="0"
diff --git a/release/picobsd/isp/crunch1/crunch.conf b/release/picobsd/isp/crunch1/crunch.conf
new file mode 100644
index 000000000000..ecbf65ed270c
--- /dev/null
+++ b/release/picobsd/isp/crunch1/crunch.conf
@@ -0,0 +1,50 @@
+#
+# $FreeBSD$
+#
+# NOTE: the string "/usr/src" will be automatically replaced with the
+# correct value set in 'build' script - you should change it there
+
+# Default build options
+buildopts -DNOPAM -DRELEASE_CRUNCH -DNOSECURE -DNOCRYPT -DNONETGRAPH -DNOIPSEC
+
+# other sources
+srcdirs /usr/src/bin
+srcdirs /usr/src/sbin/i386
+srcdirs /usr/src/sbin
+srcdirs /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin
+srcdirs /usr/src/usr.sbin
+srcdirs /usr/src/libexec
+# sources for ns & vm
+srcdirs ../../tinyware
+
+progs sh test echo hostname ln login getty
+progs inetd telnetd stty w msg kget natd reboot
+progs init fsck ifconfig df ps ns vm cat
+progs cp rm mkdir ls chmod chown
+progs sysctl route swapon pwd_mkdb dev_mkdb
+progs mount mount_msdos umount comcontrol
+progs kill mount_std natd
+
+progs minigzip
+ln minigzip gzip
+progs pwd pppd telnet less
+ln less more
+progs passwd date
+progs mount_cd9660 mount_nfs ping traceroute routed ipfw
+
+ln mount_cd9660 cd9660
+ln mount_nfs nfs
+ln test [
+ln sh -sh
+#ln newfs mount_mfs
+ln chown chgrp
+ln mount_msdos msdos
+ln mount_std procfs
+ln mount_std mount_procfs
+ln msg dmesg
+ln ns netstat
+
+libs -ledit -lutil -lmd -lcrypt -lmp -lgmp -lm -lkvm
+libs -lmytinfo -lipx -lz -lpcap -lalias -lwrap
+libs -ltermcap -lgnuregex -ltelnet -lcurses
diff --git a/release/picobsd/isp/floppy.tree.exclude b/release/picobsd/isp/floppy.tree.exclude
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/release/picobsd/isp/floppy.tree.exclude
diff --git a/release/picobsd/isp/lang/README.en b/release/picobsd/isp/lang/README.en
new file mode 100644
index 000000000000..3f4128d10a4a
--- /dev/null
+++ b/release/picobsd/isp/lang/README.en
@@ -0,0 +1,37 @@
+1999.04.20, Warsaw, Poland
+
+ PicoBSD @VER@
+ -----------
+
+
+What is PicoBSD?
+----------------
+
+It's a one floppy version of FreeBSD (please see http://www.freebsd.org),
+configured mainly for networking applications. It can be used as a router or
+firewall, or kind of a fixit floppy (or all of them).
+
+What are minimal requirements?
+------------------------------
+
+* 386SX CPU or better (there is an FPU emulator in kernel)
+* 10MB RAM - the more the better. If you have an HDD, you can make a
+ swap partition or swap file (using vnode driver and vnconfig). Then you
+ probably will be able to run with ca. 6MB only. But RAM is cheap...
+* Modem sitting on COM1-COM4 (default is to use COM2), if you want to have
+ a PPP connection.
+* Network card: compatible with NE2000, or PCI cards with DEC chipsets
+ (ed and de drivers). The kernel supports two of them (i.e. four total) plus
+ two PPP connections (tun interfaces). So you can easily build something like
+ router with as many as 6 outlets :-)
+
+If you want to build a NAT (a.k.a. masquerading) router for your local
+network, it's often enough if you run 'ppp -alias' on your serial line.
+However, if you use ethernet cards, you should use combination of natd(8)
+and ipfw(8). See the documentation on your full FreeBSD system.
+
+I'll be glad hearing from you about your experiences with PicoBSD. Thanks.
+
+Have fun!
+
+Andrzej Bialecki <abial@freebsd.org>
diff --git a/release/picobsd/isp/lang/README.pl b/release/picobsd/isp/lang/README.pl
new file mode 100644
index 000000000000..a680e20c3f4a
--- /dev/null
+++ b/release/picobsd/isp/lang/README.pl
@@ -0,0 +1,33 @@
+1998.07.29, Warszawa
+
+ PicoBSD @VER@
+ -----------
+
+Co to jest PicoBSD?
+-------------------
+
+Jest to jednodyskietkowa wersja FreeBSD skonfigurowana glownie pod katem
+zastosowania jako klient/serwer uslug sieciowych (takich jak routing,
+firewall, NFS). W celu zapoznania sie z pelnym systemem zajrzyj na
+http://www.freebsd.org
+
+Jakie sa minimalne wymagania?
+-----------------------------
+
+* Procesor 386SX lub lepszy (jadro posiada emulator FPU)
+* 10MB pamieci - jest to absolutnie nieprzekraczalne minimum. Oczywiscie im
+ wiecej, tym lepiej - ograniczenie jest glownie spowodowane brakiem swapu. Po
+ zapoznaniu sie z systemem mozesz sobie skonfigurowac tzw. swap-file na dysku
+ twardym, np. na partycji DOS-owej. Wowczas prawdopodobnie wystarczy 6MB
+ pamieci.
+* Modem, skonfigurowany na COM1-COM4 (standardowo system wykorzystuje COM2),
+ jesli bedzie wykorzystywany dostep przez PPP.
+* Karta sieciowa: kompatybilna z NE2000, niektore typy 3Com, lub wersje PCI z
+ chipsetem DEC21040 (drivery ed i de). Jadro jest skonfigurowane tak, zeby
+ moc obsluzyc po dwie karty ed i de (czyli w sumie cztery) oraz dwa
+ polaczenia PPP rownoczesnie. Mozna wiec zbudowac router z 6 interfejsami.
+
+
+Milej zabawy!
+
+Andrzej Bialecki <abial@freebsd.org>
diff --git a/release/picobsd/isp/lang/boot.help.en b/release/picobsd/isp/lang/boot.help.en
new file mode 100644
index 000000000000..7cbce1354839
--- /dev/null
+++ b/release/picobsd/isp/lang/boot.help.en
@@ -0,0 +1,18 @@
+Usage: bios_drive:interface(unit,partition)kernel_name options
+ bios_drive 0, 1, ...
+ interface fd, wd or sd
+ unit 0, 1, ...
+ partition a, c, ...
+ kernel_name name of kernel, or ? for list of files in root directory
+ options -a (ask name) -C (cdrom) -c (userconfig) -D (dual consoles)
+ -d (debug early) -g (gdb) -h (serial console) -P (probe kbd)
+ -r (default root) -s (single user) -v (verbose)
+Examples:
+ 1:sd(0,a)mykernel boot `mykernel' on the first SCSI drive when one IDE
+ drive is present
+ 1:wd(2,a) boot from the second (secondary master) IDE drive
+ 1:sd(0,a)? list the files in the root directory on the specified
+ drive/unit/partition, and set the default bios_drive,
+ interface, unit and partition
+ -cv boot with the defaults, then run UserConfig to modify
+ hardware parameters (c), and print verbose messages (v)
diff --git a/release/picobsd/isp/lang/boot.help.pl b/release/picobsd/isp/lang/boot.help.pl
new file mode 100644
index 000000000000..d60601ff4c9e
--- /dev/null
+++ b/release/picobsd/isp/lang/boot.help.pl
@@ -0,0 +1,16 @@
+Opcje: dysk_bios:kontroler(dysk,partycja)nazwa_kernela opcje
+ dysk_bios 0, 1, ...
+ kontroler fd (dyskietka), wd (dysk IDE) lub sd (dysk SCSI)
+ dysk 0, 1, ... (numer dysku w kontrolerze)
+ partycja a, c, e, f ... (wedlug nazewnictwa BSD)
+ nazwa_kernela nazwa pliku kernela, lub ? zeby dostac liste plikow
+ opcje -a (pytaj o rootdev) -C (cdrom) -c (userconf.) -D (podwojna konsola)
+ -d (uruchom debugger) -g (gdb) -h (konsola szeregowa)
+ -P (probkuj klawiature) -r (domyslny rootdev) -s (tryb single user)
+ -v (verbose - szczegolowe komunikaty)
+Np: 1:sd(0,a)mykernel startuj `mykernel' z 1 dysku SCSI gdy jest tez 1 dysk
+ IDE, i jednoczesnie ustaw go jako domyslny dysk_bios,
+ kontroler, dysk i partycja
+ -cv startuj z parametrami domyslnymi, potem uruchom
+ konfiguracje param. sprzetowych (-c), i podawaj
+ szczegolowe komunikaty w trakcie bootowania (-v).
diff --git a/release/picobsd/isp/lang/motd.en b/release/picobsd/isp/lang/motd.en
new file mode 100644
index 000000000000..86b4f8a0708a
--- /dev/null
+++ b/release/picobsd/isp/lang/motd.en
@@ -0,0 +1,12 @@
+==================================================
+ )\_)\
+PicoBSD @VER@ (ISP-alpha) (o,o)
+ __ \~/
+Welcome to PicoBSD! -->====\
+ ~~ d d
+You can find a short description of the picoBSD
+system in file /README. You can view it using
+"more /README".
+
+For more info contact the author (abial@freebsd.org).
+
diff --git a/release/picobsd/isp/lang/motd.pl b/release/picobsd/isp/lang/motd.pl
new file mode 100644
index 000000000000..749792d823e4
--- /dev/null
+++ b/release/picobsd/isp/lang/motd.pl
@@ -0,0 +1,12 @@
+=======================================================
+ )\_)\
+PicoBSD @VER@ (ISP-alpha) (o,o)
+ __ \~/
+Witamy w PicoBSD! -->====\
+ ~~ d d
+W glownym katalogu w pliku README znajdziesz picoBSD
+krotki opis systemu. Mozesz go obejrzec przy pomocy
+"more /README".
+
+Wiecej informacji znajdziesz u autora (abial@freebsd.org).
+
diff --git a/release/picobsd/isp/mfs.mtree b/release/picobsd/isp/mfs.mtree
new file mode 100644
index 000000000000..b8057bb46a4e
--- /dev/null
+++ b/release/picobsd/isp/mfs.mtree
@@ -0,0 +1,56 @@
+#
+# $FreeBSD$
+#
+/set type=dir uname=root gname=wheel mode=0755
+.
+ dev
+ ..
+ dos
+ ..
+ etc
+ ..
+ home
+ user
+ ..
+ ..
+ mnt
+ ..
+ mnt1
+ ..
+ mnt2
+ ..
+ proc
+ ..
+ root
+ ..
+ stand
+ ..
+ start_floppy
+ ..
+ tftpboot
+ ..
+ tmp mode=01777
+ ..
+ usr
+ local
+ lib
+ snmp
+ ..
+ ..
+ ..
+ share
+ misc
+ ..
+ ..
+ ..
+ var
+ db
+ ..
+ run
+ ..
+ spool
+ lock
+ ..
+ ..
+ ..
+..
diff --git a/release/picobsd/mfs_tree/etc/login.conf b/release/picobsd/mfs_tree/etc/login.conf
new file mode 100644
index 000000000000..60e50f4c03bf
--- /dev/null
+++ b/release/picobsd/mfs_tree/etc/login.conf
@@ -0,0 +1,62 @@
+# $FreeBSD$
+
+# Authentication methods
+
+auth-defaults:\
+ :auth=krb_skey_or_passwd,passwd,kerberos,skey:
+
+auth-root-defaults:\
+ :auth-login=krb_skey_or_passwd,passwd,kerberos,skey:\
+ :auth-rlogin=krb_or_skey,kerberos,skey:
+auth-ftp-defaults:\
+ :auth=skey_or_pwd,passwd,skey:
+# Example defaults
+default:\
+ :cputime=infinity:\
+ :datasize-cur=22M:\
+ :stacksize-cur=8M:\
+ :memorylocked-cur=10M:\
+ :memoryuse-cur=30M:\
+ :filesize=infinity:\
+ :coredumpsize=0:\
+ :maxproc-cur=64:\
+ :openfiles-cur=64:\
+ :priority=0:\
+ :requirehome@:\
+ :umask=022:\
+ :tc=auth-defaults:
+
+# root - fallback for root logins
+root:\
+ :path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
+ :cputime=infinity:\
+ :datasize=infinity:\
+ :stacksize=infinity:\
+ :memorylocked=infinity:\
+ :memoryuse=infinity:\
+ :filesize=infinity:\
+ :coredumpsize=0:\
+ :openfiles=infinity:\
+ :maxproc=infinity:\
+ :memoryuse-cur=32M:\
+ :maxproc-cur=64:\
+ :openfiles-cur=1024:\
+ :priority=0:\
+ :requirehome@:\
+ :umask=022:\
+ :tc=auth-root-defaults:
+# Settings used by /etc/rc
+daemon:\
+ :coredumpsize@:\
+ :coredumpsize-cur=0:\
+ :datasize=infinity:\
+ :datasize-cur@:\
+ :maxproc=512:\
+ :maxproc-cur@:\
+ :memoryuse-cur=64M:\
+ :memorylocked-cur=64M:\
+ :openfiles=1024:\
+ :openfiles-cur@:\
+ :stacksize=16M:\
+ :stacksize-cur@:\
+ :tc=default:
diff --git a/release/picobsd/mfs_tree/etc/rc b/release/picobsd/mfs_tree/etc/rc
new file mode 100644
index 000000000000..f4273370bcb6
--- /dev/null
+++ b/release/picobsd/mfs_tree/etc/rc
@@ -0,0 +1,31 @@
+#!/bin/sh
+# $FreeBSD$
+# WARNING !!! We overwrite this file during execution with a new rc file.
+# Awful things happen if this file's size is > 1024B
+
+stty status '^T'
+trap : 2
+trap : 3
+
+HOME=/; export HOME
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
+export PATH
+
+trap "echo 'Reboot interrupted'; exit 1" 3
+
+### Special setup for one floppy PICOBSD ###
+dev="/dev/fd0c"
+echo "Reading /etc from ${dev}..."
+mount -o rdonly ${dev} /mnt
+cd /mnt/etc ; cp -Rp . /etc/
+cp -Rp /mnt/root /
+cd /etc
+#rm files to stop overwrite warning
+rm rc login.conf
+gzip -d *.gz
+pwd_mkdb -p ./master.passwd
+umount /mnt
+echo "Ok. (Now you can remove ${dev} if you like)"
+echo ""
+. rc
+exit 0
diff --git a/release/picobsd/mfs_tree/stand/update b/release/picobsd/mfs_tree/stand/update
new file mode 100755
index 000000000000..1b2193eda576
--- /dev/null
+++ b/release/picobsd/mfs_tree/stand/update
@@ -0,0 +1,39 @@
+#!/bin/sh
+# $FreeBSD$
+# script to edit and save some config file(s)
+thefiles=$*
+pwd=`pwd`
+dev="/dev/fd0c"
+echo "Updating content on ${dev}: "
+mount ${dev} /mnt
+if [ "X$?" != "X0" ] ; then
+ echo ""
+ echo "Cannot mount ${dev} read-write!"
+ exit 1
+fi
+if [ "$thefiles" = "" ] ; then
+ srcs=`ls /etc`
+ for i in $srcs ; do
+ if [ -f /mnt/etc/$i.gz ] ; then
+ echo -n "$i ..."
+ gzip < /etc/$i > /mnt/etc/$i.gz
+ fi
+ done
+elif [ "$thefiles" = "passwd" ] ; then
+ ee /etc/master.passwd
+ pwd_mkdb master.passwd
+ gzip < /etc/master.passwd /mnt/etc/master.passwd.gz
+else
+ for i in $thefiles; do
+ if [ -f $i ] ; then
+ ee $i
+ gzip < $i > /mnt/$i.gz
+ fi
+ done
+fi
+echo " Done."
+echo -n "Updating kernel parameters... "
+kget /mnt/boot/kernel.conf
+umount /mnt
+cd ${pwd}
+echo " Done."
diff --git a/release/picobsd/net/Makefile.mfs b/release/picobsd/net/Makefile.mfs
new file mode 100644
index 000000000000..e471061c9b3c
--- /dev/null
+++ b/release/picobsd/net/Makefile.mfs
@@ -0,0 +1,7 @@
+#
+# $FreeBSD$
+#
+
+MY_DEVS= std tun2 cuaa0 cuaa1 cuaa2 vty10 fd0 wd0s1h pty0
+
+.include "../build/Makefile.mfs"
diff --git a/release/picobsd/net/PICOBSD b/release/picobsd/net/PICOBSD
new file mode 100644
index 000000000000..d11eb94dc543
--- /dev/null
+++ b/release/picobsd/net/PICOBSD
@@ -0,0 +1,90 @@
+#
+# $FreeBSD$
+#
+#Line starting with #PicoBSD contains PicoBSD build parameters
+#marker def_sz init MFS_inodes floppy_inodes
+#PicoBSD 2200 init 4096 32768
+options MD_ROOT_SIZE=2200 # same as def_sz
+
+machine i386
+cpu I386_CPU
+cpu I486_CPU
+cpu I586_CPU
+cpu I686_CPU
+ident PICOBSD
+maxusers 10
+
+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 NFS_NOSERVER #Network Filesystem
+options MFS #Memory Filesystem
+options MD_ROOT #MFS as root
+options MSDOSFS #MSDOS Filesystem
+options CD9660 #ISO 9660 Filesystem
+options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
+options USERCONFIG #boot -c editor
+options INTRO_USERCONFIG #imply -c and parse info area
+options VISUAL_USERCONFIG #visual boot -c editor
+options IPFIREWALL
+options IPFIREWALL_DEFAULT_TO_ACCEPT
+options IPDIVERT
+options PCI_QUIET
+options COMPAT_OLDISA #Use ISA shims and glue for old drivers
+#options DEVFS
+# Support for bridging and bandwidth limiting
+#options DUMMYNET
+#options BRIDGE
+
+device isa
+device pci
+
+device fdc
+
+device ata
+device atadisk
+device atapicd
+options ATA_STATIC_ID #Static device numbering
+
+# atkbdc0 controls both the keyboard and the PS/2 mouse
+device atkbdc 1
+device atkbd
+
+device vga
+
+# syscons is the default console driver, resembling an SCO console
+device sc 1
+
+device npx
+
+device sio
+
+device ppc
+device ppbus
+device lpt
+device plip
+device ppi
+
+#
+# The following Ethernet NICs are all PCI devices.
+#
+device de
+device fxp
+
+# 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.
+
+device ed
+device ep
+device ie
+
+device loop
+device ether
+device tun 2
+#device vn
+device pty 16
+device md
+#device gzip # Exec gzipped a.out's
diff --git a/release/picobsd/net/PICOBSD.hints b/release/picobsd/net/PICOBSD.hints
new file mode 100644
index 000000000000..676ea781caa3
--- /dev/null
+++ b/release/picobsd/net/PICOBSD.hints
@@ -0,0 +1,65 @@
+# $FreeBSD$
+hint.fdc.0.at="isa"
+hint.fdc.0.port="0x3F0"
+hint.fdc.0.irq="6"
+hint.fdc.0.drq="2"
+hint.fd.0.at="fdc0"
+hint.fd.0.drive="0"
+hint.ata.0.at="isa"
+hint.ata.0.port="0x1F0"
+hint.ata.0.irq="14"
+hint.ata.1.at="isa"
+hint.ata.1.port="0x170"
+hint.ata.1.irq="15"
+hint.atkbdc.0.at="isa"
+hint.atkbdc.0.port="0x060"
+hint.atkbd.0.at="atkbdc"
+hint.atkbd.0.irq="1"
+hint.vga.0.at="isa"
+hint.sc.0.at="isa"
+hint.npx.0.at="nexus"
+hint.npx.0.port="0x0F0"
+hint.npx.0.irq="13"
+hint.sio.0.at="isa"
+hint.sio.0.port="0x3F8"
+hint.sio.0.flags="0x10"
+hint.sio.0.irq="4"
+hint.sio.1.at="isa"
+hint.sio.1.port="0x2F8"
+hint.sio.1.irq="3"
+hint.sio.2.at="isa"
+hint.sio.2.disabled="1"
+hint.sio.2.port="0x3E8"
+hint.sio.2.irq="5"
+hint.sio.3.at="isa"
+hint.sio.3.disabled="1"
+hint.sio.3.port="0x2E8"
+hint.sio.3.irq="9"
+hint.ppc.0.at="isa"
+hint.ppc.0.flags="0x40"
+hint.ppc.0.irq="7"
+hint.lpt.0.at="ppbus"
+hint.plip.0.at="ppbus"
+hint.ppi.0.at="ppbus"
+hint.ed.0.at="isa"
+hint.ed.0.port="0x280"
+hint.ed.0.irq="5"
+hint.ed.0.maddr="0xd8000"
+hint.ed.1.at="isa"
+hint.ed.1.port="0x300"
+hint.ed.1.irq="10"
+hint.ed.1.maddr="0xd0000"
+hint.ep.0.at="isa"
+hint.ep.0.port="0x300"
+hint.ep.0.irq="10"
+hint.ep.1.at="isa"
+hint.ep.1.port="0x280"
+hint.ep.1.irq="5"
+hint.ie.0.at="isa"
+hint.ie.0.port="0x300"
+hint.ie.0.irq="5"
+hint.ie.0.maddr="0xd0000"
+hint.ie.1.at="isa"
+hint.ie.1.port="0x360"
+hint.ie.1.irq="7"
+hint.ie.1.maddr="0xd0000"
diff --git a/release/picobsd/net/crunch1/crunch.conf b/release/picobsd/net/crunch1/crunch.conf
new file mode 100644
index 000000000000..587296ff91c0
--- /dev/null
+++ b/release/picobsd/net/crunch1/crunch.conf
@@ -0,0 +1,53 @@
+#
+# $FreeBSD$
+#
+# NOTE: the string "/usr/src" will be automatically replaced with the
+# correct value set in 'build' script - you should change it there
+
+# Default build options.
+buildopts -DNOPAM -DRELEASE_CRUNCH -DNOSECURE -DNOCRYPT -DNONETGRAPH -DNOIPSEC
+
+# other sources
+srcdirs /usr/src/bin
+srcdirs /usr/src/sbin/i386
+srcdirs /usr/src/sbin
+srcdirs /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin
+srcdirs /usr/src/usr.sbin
+srcdirs /usr/src/libexec
+# sources for ns & vm
+srcdirs ../../tinyware
+
+progs sh test echo hostname ln login getty stty
+progs inetd telnetd w msg kget reboot
+progs init ifconfig df sps ns vm cat
+progs cp rm mknod chmod chown mkdir ls syslogd
+progs sysctl route pwd_mkdb dev_mkdb
+progs mount mount_msdos umount
+progs kill mount_std natd
+
+progs pwd telnet less
+ln less more
+progs passwd date
+progs mount_cd9660 mount_nfs ping traceroute routed ipfw
+
+progs ppp
+special ppp buildopts -DNOKLDLOAD -DNOINET6 -DNONAT -DNOATM -DNOSUID -DHAVE_DES -DNORADIUS -DNOI4B
+
+progs minigzip
+ln minigzip gzip
+ln mount_cd9660 cd9660
+ln mount_nfs nfs
+ln test [
+ln sh -sh
+ln mount_msdos msdos
+ln mount_std procfs
+ln mount_std mount_procfs
+ln sps ps
+ln msg dmesg
+ln ns netstat
+ln chown chgrp
+
+libs -lncurses -lmytinfo -lipx -lz -lpcap -lalias -lwrap
+libs -ledit -lutil -lmd -lcrypt -lmp -lgmp -lm -lkvm
+libs -lgnuregex -ltelnet
diff --git a/release/picobsd/net/floppy.tree/boot.config b/release/picobsd/net/floppy.tree/boot.config
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/boot.config
diff --git a/release/picobsd/net/floppy.tree/etc/disktab b/release/picobsd/net/floppy.tree/etc/disktab
new file mode 100644
index 000000000000..7575ba66e088
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/disktab
@@ -0,0 +1,87 @@
+#
+# Floppy formats:
+#
+# To make a filesystem on a floppy:
+# fdformat [-f <size>] fd<drive>[.<size>]
+# disklabel -B -r -w fd<drive>[.<size>] fd<size>
+# newfs <opts> fd<drive>[.<size>]
+#
+# with <opts>:
+# -t 2 - two heads
+# -u 9|15|18 - sectors per track
+# (using the default value of 1/4096 is not much useful for floppies)
+# -l 1 - interleave 1 (for most floppies)
+# -i 65536 - bytes of data per i-node
+# (the default -i value will render you with a floppy wasting way
+# too much space in i-node areas)
+#
+
+fd360:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#9:nc#40:\
+ :pa#720:oa#0:ba#4096:fa#512:\
+ :pb#720:ob#0:bb#4096:fb#512:\
+ :pc#720:oc#0:bc#4096:fc#512:
+
+fd720:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#9:nc#80:\
+ :pa#1440:oa#0:ba#4096:fa#512:\
+ :pb#1440:ob#0:bb#4096:fb#512:\
+ :pc#1440:oc#0:bc#4096:fc#512:
+
+fd1200|floppy5|5in|5.25in High Density Floppy:\
+ :ty=floppy:se#512:nt#2:rm#360:ns#15:nc#80:\
+ :pa#2400:oa#0:ba#4096:fa#512:\
+ :pb#2400:ob#0:bb#4096:fb#512:\
+ :pc#2400:oc#0:bc#4096:fc#512:
+
+fd1440|floppy|floppy3|3in|3.5in High Density Floppy:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#18:nc#80:\
+ :pa#2880:oa#0:ba#4096:fa#512:\
+ :pb#2880:ob#0:bb#4096:fb#512:\
+ :pc#2880:oc#0:bc#4096:fc#512:
+
+fd1024|floppy0|3.5in Special Density Floppy:\
+ :ty=floppy:se#512:nt#2:rm#300:ns#16:nc#64:\
+ :pa#2048:oa#0:ba#4096:fa#512:\
+ :pb#2048:ob#0:bb#4096:fb#512:\
+ :pc#2048:oc#0:bc#4096:fc#512:
+
+# a == root
+# b == swap
+# c == d == whole disk
+# e == /var
+# f == scratch
+# h == /usr
+
+cp3100new|Connor Peripherals 100MB IDE, with a different configuration:\
+ :dt=ST506:ty=winchester:se#512:nt#8:ns#33:nc#766: \
+ :pa#15840:oa#0:ta=4.2BSD:ba#4096:fa#512: \
+ :pb#24288:ob#15840:tb=swap: \
+ :pc#202224:oc#0: \
+ :pd#202224:od#0: \
+ :pe#15840:oe#40128:te=4.2BSD:be#4096:fe#512: \
+ :pg#15840:og#55968:tg=4.2BSD:bg#4096:fg#512: \
+ :ph#130416:oh#71808:th=4.2BSD:bh#4096:fh#512:
+
+sony650|Sony 650 MB MOD|\
+ :ty=removable:dt=SCSI:se#512:nt#1:ns#31:nc#18600:ts#1:rm#4800:\
+ :pc#576600:oc#0:\
+ :pa#576600:oa#0:ta=4.2BSD:ba#8192:fa#1024:
+
+mta3230|mo230|IBM MTA-3230 230 Meg 3.5inch Magneto-Optical:\
+ :ty=removeable:dt=SCSI:rm#3600:\
+ :se#512:nt#64:ns#32:nc#216:sc#2048:su#444384:\
+ :pa#444384:oa#0:ba#4096:fa#0:ta=4.2BSD:\
+ :pc#444384:oc#0:
+
+minimum:ty=mfs:se#512:nt#1:rm#300:\
+ :ns#2880:nc#1:\
+ :pa#2880:oa#0:ba#4096:fa#512:\
+ :pc#2880:oc#0:bc#4096:fc#512:
+
+zip100|zip 100:\
+ :ty=removable:se#512:nc#96:nt#64:ns#32:\
+ :pa#196608:oa#0:ba#4096:fa#512:\
+ :pb#196608:ob#0:bb#4096:fb#512:\
+ :pc#196608:oc#0:bc#4096:fc#512:
+
diff --git a/release/picobsd/net/floppy.tree/etc/fstab b/release/picobsd/net/floppy.tree/etc/fstab
new file mode 100644
index 000000000000..64d34ca9b1ae
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/fstab
@@ -0,0 +1,4 @@
+#proc /proc procfs rw 0 0
+#/dev/fd0c /start_floppy ufs rw 1 1
+#/dev/wd0s1 /dos msdos rw 0 0
+#/dev/wcd0c /cdrom cd9660 ro,noauto 0 0
diff --git a/release/picobsd/net/floppy.tree/etc/gettytab b/release/picobsd/net/floppy.tree/etc/gettytab
new file mode 100644
index 000000000000..90562acf2505
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/gettytab
@@ -0,0 +1,40 @@
+# from: @(#)gettytab 5.14 (Berkeley) 3/27/91
+#
+default:\
+ :cb:ce:ck:lc:fd#1000:cl:im=\r\nPicoBSD (%h) (%t)\r\n\r\n:sp#1200:
+
+P|Pc|Pc console:\
+ :ht:np:sp#115200:
+
+#
+# Fixed speed entries
+2|std.9600|9600-baud:\
+ :np:sp#9600:
+g|std.19200|19200-baud:\
+ :np:sp#19200:
+std.38400|38400-baud:\
+ :np:sp#38400:
+std.57600|57600-baud:\
+ :np:sp#57600:
+std.115200|115200-baud:\
+ :np:sp#115200:
+
+#
+# Entry specifying explicit device settings. See termios(4) and
+# /usr/include/termios.h, too. The entry forces the tty into
+# CLOCAL mode (so no DCD is required), and uses Xon/Xoff flow control.
+#
+# cflags: CLOCAL | HUPCL | CREAD | CS8
+# oflags: OPOST | ONLCR | OXTABS
+# iflags: IXOFF | IXON | ICRNL | IGNPAR
+# lflags: IEXTEN | ICANON | ISIG | ECHOCTL | ECHO | ECHOK | ECHOE | ECHOKE
+#
+# The `0' flags don't have input enabled. The `1' flags don't echo.
+# (Echoing is done inside getty itself.)
+#
+local.9600|CLOCAL tty @ 9600 Bd:\
+ :c0#0x0000c300:c1#0x0000cb00:c2#0x0000cb00:\
+ :o0#0x00000007:o1#0x00000002:o2#0x00000007:\
+ :i0#0x00000704:i1#0x00000000:i2#0x00000704:\
+ :l0#0x000005cf:l1#0x00000000:l2#0x000005cf:\
+ :sp#9600:
diff --git a/release/picobsd/net/floppy.tree/etc/group b/release/picobsd/net/floppy.tree/etc/group
new file mode 100644
index 000000000000..abbd733f3b0b
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/group
@@ -0,0 +1,19 @@
+wheel:*:0:root,user
+daemon:*:1:daemon
+kmem:*:2:root
+sys:*:3:root
+tty:*:4:root
+operator:*:5:root
+mail:*:6:
+bin:*:7:
+news:*:8:
+man:*:9:
+games:*:13:
+staff:*:20:root,user
+guest:*:31:root
+uucp:*:66:
+xten:*:67:xten
+dialer:*:68:
+network:*:69:
+nogroup:*:65533:
+nobody:*:65534:
diff --git a/release/picobsd/net/floppy.tree/etc/host.conf b/release/picobsd/net/floppy.tree/etc/host.conf
new file mode 100644
index 000000000000..753112455a69
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/host.conf
@@ -0,0 +1,3 @@
+# $FreeBSD$
+hosts
+bind
diff --git a/release/picobsd/net/floppy.tree/etc/inetd.conf b/release/picobsd/net/floppy.tree/etc/inetd.conf
new file mode 100644
index 000000000000..c7c50de341e4
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/inetd.conf
@@ -0,0 +1,21 @@
+#
+# Internet server configuration database
+#
+# @(#)inetd.conf 5.4 (Berkeley) 6/30/90
+#
+telnet stream tcp nowait root /usr/libexec/telnetd telnetd
+#
+# "Small servers" -- used to be standard on, but we're more conservative
+# about things due to Internet security concerns. Only turn on what you
+# need.
+#
+#daytime stream tcp nowait root internal
+#daytime dgram udp wait root internal
+#time stream tcp nowait root internal
+#time dgram udp wait root internal
+#echo stream tcp nowait root internal
+#echo dgram udp wait root internal
+#discard stream tcp nowait root internal
+#discard dgram udp wait root internal
+#chargen stream tcp nowait root internal
+#chargen dgram udp wait root internal
diff --git a/release/picobsd/net/floppy.tree/etc/login.conf b/release/picobsd/net/floppy.tree/etc/login.conf
new file mode 100644
index 000000000000..1f2f02777ddd
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/login.conf
@@ -0,0 +1,120 @@
+# This file controls resource limits, accounting limits and
+# default user environment settings.
+#
+# $FreeBSD$
+#
+
+
+# Authentication methods
+
+auth-defaults:\
+ :auth=passwd:
+
+auth-root-defaults:\
+ :auth-login=passwd:\
+ :auth-rlogin=passwd:\
+
+auth-ftp-defaults:\
+ :auth=passwd:
+
+# Example defaults
+# These settings are used by login(1) by default for classless users
+# Note that entries like "cputime" set both "cputime-cur" and "cputime-max"
+
+default:\
+ :cputime=infinity:\
+ :datasize-cur=22M:\
+ :stacksize-cur=8M:\
+ :memorylocked-cur=10M:\
+ :memoryuse-cur=30M:\
+ :filesize=infinity:\
+ :coredumpsize=infinity:\
+ :maxproc-cur=64:\
+ :openfiles-cur=64:\
+ :priority=0:\
+ :requirehome@:\
+ :umask=022:\
+ :tc=auth-defaults:
+
+
+#
+# standard - standard user defaults
+#
+standard:\
+ :copyright=/etc/COPYRIGHT:\
+ :welcome=/etc/motd:\
+ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,EDITOR=/usr/bin/ee:\
+ :path=~/bin /bin /usr/bin:\
+ :nologin=/var/run/nologin:\
+ :cputime=1h30m:\
+ :datasize=8M:\
+ :stacksize=2M:\
+ :memorylocked=4M:\
+ :memoryuse=8M:\
+ :filesize=8M:\
+ :coredumpsize=8M:\
+ :openfiles=24:\
+ :maxproc=32:\
+ :priority=0:\
+ :requirehome:\
+ :passwordtime=90d:\
+ :umask=002:\
+ :ignoretime@:\
+ :tc=default:
+#
+# Staff users - few restrictions and allow login anytime
+#
+staff:\
+ :ignorenologin:\
+ :ignoretime:\
+ :requirehome@:\
+ :accounted@:\
+ :path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
+ :umask=022:\
+ :tc=standard:
+
+
+#
+# root - fallback for root logins
+#
+root:\
+ :path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
+ :cputime=infinity:\
+ :datasize=infinity:\
+ :stacksize=infinity:\
+ :memorylocked=infinity:\
+ :memoryuse=infinity:\
+ :filesize=infinity:\
+ :coredumpsize=infinity:\
+ :openfiles=infinity:\
+ :maxproc=infinity:\
+ :memoryuse-cur=32M:\
+ :maxproc-cur=64:\
+ :openfiles-cur=1024:\
+ :priority=0:\
+ :requirehome@:\
+ :umask=022:\
+ :tc=auth-root-defaults:\
+#
+# Settings used by /etc/rc
+#
+daemon:\
+ :coredumpsize@:\
+ :coredumpsize-cur=0:\
+ :datasize=infinity:\
+ :datasize-cur@:\
+ :maxproc=512:\
+ :maxproc-cur@:\
+ :memoryuse-cur=64M:\
+ :memorylocked-cur=64M:\
+ :openfiles=1024:\
+ :openfiles-cur@:\
+ :stacksize=16M:\
+ :stacksize-cur@:\
+ :tc=default:
+#
+# Polish Users Accounts. Setup proper environment variables.
+#
+polish:Polish Users Accounts:\
+ :lang=pl_pl.ISO-8859-2:\
+ :tc=default:
diff --git a/release/picobsd/net/floppy.tree/etc/master.passwd b/release/picobsd/net/floppy.tree/etc/master.passwd
new file mode 100644
index 000000000000..9d85cdf91b0e
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/master.passwd
@@ -0,0 +1,7 @@
+root:$1$xOOaGnKU$U9QdsCI40XXcCUMBN.7Az.:0:0::0:0:Charlie &:/root:/bin/sh
+toor:*:0:0::0:0:Bourne-again Superuser:/root:
+daemon:*:1:1::0:0:Owner of many system processes:/root:/nonexistent
+operator:*:2:20::0:0:System &:/usr/guest/operator:/bin/csh
+bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/nonexistent
+nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/nonexistent
+user:$1$T9q8Coad$WatJttamwr2UAdbfKbWxj.:1002:1002:polish:0:0:user:/home/user:/bin/sh
diff --git a/release/picobsd/net/floppy.tree/etc/mfs.rc b/release/picobsd/net/floppy.tree/etc/mfs.rc
new file mode 100644
index 000000000000..0ae2d0170eef
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/mfs.rc
@@ -0,0 +1,35 @@
+#!/bin/sh
+# $FreeBSD$
+### WARNING !!!!!! #####
+# We remove this file during execution (see EOF).
+# Awful things happen if its size is > 1024B
+
+stty status '^T'
+
+trap : 2
+trap : 3
+
+HOME=/; export HOME
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
+export PATH
+
+trap "echo 'Reboot interrupted'; exit 1" 3
+
+### Special setup for one floppy PICOBSD ###
+echo ""
+echo "-------------------------------------------"
+echo " Please wait. The system is coming up..."
+echo "-------------------------------------------"
+echo ""
+echo "Reading /etc from startup floppy..."
+mount -o rdonly /dev/fd0a /start_floppy
+cd /start_floppy/etc
+cp -Rp . /etc/
+cd /etc
+gzip -d -f *.gz
+pwd_mkdb -p ./master.passwd
+umount /start_floppy
+echo "Ok. (Now you can remove floppy if you like)"
+echo ""
+. rc
+exit 0
diff --git a/release/picobsd/net/floppy.tree/etc/ppp/ppp.conf b/release/picobsd/net/floppy.tree/etc/ppp/ppp.conf
new file mode 100644
index 000000000000..ed5da5dd72ce
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/ppp/ppp.conf
@@ -0,0 +1,8 @@
+# PPP Sample Configuration File
+# Written by Toshiharu OHNO
+default:
+ set device /dev/cuaa1
+ set speed 38400
+ disable lqr
+ deny lqr
+ set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0 OK-AT-OK \\dATDT\\T TIMEOUT 40 CONNECT"
diff --git a/release/picobsd/net/floppy.tree/etc/ppp/ppp.deny b/release/picobsd/net/floppy.tree/etc/ppp/ppp.deny
new file mode 100644
index 000000000000..51e1e9bd03e3
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/ppp/ppp.deny
@@ -0,0 +1,15 @@
+# list of users disallowed any pppd access via 'system
+# password login'.
+# read by pppd(8).
+root
+toor
+daemon
+operator
+bin
+games
+news
+man
+ftp
+uucp
+xten
+ingres
diff --git a/release/picobsd/net/floppy.tree/etc/ppp/ppp.linkup b/release/picobsd/net/floppy.tree/etc/ppp/ppp.linkup
new file mode 100644
index 000000000000..05107c6df855
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/ppp/ppp.linkup
@@ -0,0 +1,10 @@
+# Example of ppp.linkup file
+#
+iij-demand:
+ delete ALL
+ add 0 0 HISADDR
+#
+# Otherwise, simply add peer as default gateway.
+#
+MYADDR:
+ add 0 0 HISADDR
diff --git a/release/picobsd/net/floppy.tree/etc/ppp/ppp.secret.sample b/release/picobsd/net/floppy.tree/etc/ppp/ppp.secret.sample
new file mode 100644
index 000000000000..bfaab7681aa5
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/ppp/ppp.secret.sample
@@ -0,0 +1,23 @@
+##################################################
+#
+# Example of ppp.secret file
+#
+# This file is used to authenticate incoming connections.
+# You must ``enable'' either PAP or CHAP in your ppp.conf file.
+# The peer may then use any of the Authname/Authkey pairs listed.
+# If an IP address is given, it will be assigned to the peer.
+#
+# If an entry exists for your local machine (as given by the
+# ``hostname -s'' command), the password specified will be
+# required for all server socket connections. Refer to the ppp(8)
+# and pppctl(8) man pages for further details.
+#
+# $FreeBSD$
+#
+##################################################
+
+# Authname Authkey Peer's IP address
+
+oscar OurSecretKey 192.244.184.34/24
+BigBird X4dWg9327 192.244.184.33/32
+tama localPasswdForControl
diff --git a/release/picobsd/net/floppy.tree/etc/profile b/release/picobsd/net/floppy.tree/etc/profile
new file mode 100644
index 000000000000..babb9333f494
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/profile
@@ -0,0 +1,3 @@
+# System-wide .profile file for sh(1).
+BLOCKSIZE=K; export BLOCKSIZE
+PATH=/stand:.; export PATH
diff --git a/release/picobsd/net/floppy.tree/etc/protocols b/release/picobsd/net/floppy.tree/etc/protocols
new file mode 100644
index 000000000000..c80be39f693a
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/protocols
@@ -0,0 +1,7 @@
+#
+# Internet (IP) protocols
+ip 0 IP # internet protocol, pseudo protocol number
+icmp 1 ICMP # internet control message protocol
+igmp 2 IGMP # Internet Group Management
+tcp 6 TCP # transmission control protocol
+udp 17 UDP # user datagram protocol
diff --git a/release/picobsd/net/floppy.tree/etc/rc b/release/picobsd/net/floppy.tree/etc/rc
new file mode 100644
index 000000000000..8efee86aaeb0
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/rc
@@ -0,0 +1,60 @@
+#!/bin/sh -
+# $FreeBSD$
+############################################
+### Special setup for one floppy PICOBSD ###
+### THIS IS NOT THE NORMAL /etc/rc !!!!! ###
+############################################
+mount -a -t nonfs
+if [ -f /etc/rc.conf ]; then
+ . /etc/rc.conf
+fi
+rm -f /var/run/*
+if [ "x$swapfile" != "xNO" -a -w "$swapfile" -a -b /dev/vn0b ]; then
+ echo "Adding $swapfile as additional swap."
+ vnconfig /dev/vn0b $swapfile && swapon /dev/vn0b
+fi
+# configure serial devices
+if [ -f /etc/rc.serial ]; then
+ . /etc/rc.serial
+fi
+# start up the initial network configuration.
+if [ -f /etc/rc.network ]; then
+ . /etc/rc.network
+ network_pass1
+fi
+mount -a -t nfs
+chmod 666 /dev/tty[pqrsPQRS]*
+# clean up left-over files
+(cd /var/run && { cp /dev/null utmp; chmod 644 utmp; })
+if [ -n "$network_pass1_done" ]; then
+ network_pass2
+fi
+if [ -n "$network_pass2_done" ]; then
+ network_pass3
+fi
+if [ "X${inetd_enable}" = X"YES" ]; then
+ echo "Starting inetd."; inetd ${inetd_flags}
+fi
+
+dev_mkdb
+
+echo ''
+if [ "x$swapfile" = "xNO" ]; then
+ echo "WARNING: no swap partition!"
+ echo "Don't run too many programs at the same time..."
+fi
+echo ''
+echo ''
+echo '+----------- PicoBSD @VER@ (NET) ---------------+'
+echo '| |'
+echo '| Log in as "root" (password "setup"). |'
+echo '| |'
+echo '| This version of PicoBSD is fully under |'
+echo '| BSD license. For more details see |'
+echo '| http://www.freebsd.org/~picobsd, or contact |'
+echo '| the author. |'
+echo '| |'
+echo '| abial@freebsd.org |'
+echo '| |'
+echo '+----------------------------------------------+'
+exit 0
diff --git a/release/picobsd/net/floppy.tree/etc/rc.conf b/release/picobsd/net/floppy.tree/etc/rc.conf
new file mode 100644
index 000000000000..24cb9394bab4
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/rc.conf
@@ -0,0 +1,25 @@
+#!/bin/sh
+# $FreeBSD$
+swapfile="NO" # Set to name of swapfile if aux swapfile desired.
+### Network configuration sub-section ######################
+### Basic network options: ###
+hostname="pico.mydomain.edu" # Set this!
+firewall="NO" # firewall type (see /etc/rc.firewall) or NO
+tcp_extensions="NO" # Allow RFC1323 & RFC1644 extensions (or NO).
+network_interfaces="lo0" # List of network interfaces (lo0 is loopback).
+ifconfig_lo0="inet 127.0.0.1" # default loopback device configuration.
+#ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" # Sample alias entry.
+### Network daemons options: ###
+inetd_enable="YES" # Run the network daemon dispatcher (or NO)
+inetd_flags="" # Optional flags to inetd
+snmpd_enable="YES" # Run the SNMP daemon (or NO)
+snmpd_flags="-C -c /etc/snmpd.conf" # Optional flags to snmpd
+### Network routing options: ###
+defaultrouter="NO" # Set to default gateway (or NO).
+static_routes="" # Set to static route list (or leave empty).
+gateway_enable="NO" # Set to YES if this host will be a gateway.
+arpproxy_all="" # replaces obsolete kernel option ARP_PROXYALL.
+### Allow local configuration override at the very end here ##
+if [ -f /etc/rc.conf.local ]; then
+ . /etc/rc.conf.local
+fi
diff --git a/release/picobsd/net/floppy.tree/etc/rc.firewall b/release/picobsd/net/floppy.tree/etc/rc.firewall
new file mode 100644
index 000000000000..c2860baedce0
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/rc.firewall
@@ -0,0 +1,172 @@
+############
+# Setup system for firewall service.
+# $FreeBSD$
+
+############
+# Define the firewall type in /etc/rc.conf. Valid values are:
+# open - will allow anyone in
+# client - will try to protect just this machine
+# simple - will try to protect a whole network
+# closed - totally disables IP services except via lo0 interface
+# UNKNOWN - disables the loading of firewall rules.
+# filename - will load the rules in the given filename (full path required)
+#
+# For ``client'' and ``simple'' the entries below should be customized
+# appropriately.
+
+############
+#
+# If you don't know enough about packet filtering, we suggest that you
+# take time to read this book:
+#
+# Building Internet Firewalls
+# Brent Chapman and Elizabeth Zwicky
+#
+# O'Reilly & Associates, Inc
+# ISBN 1-56592-124-0
+# http://www.ora.com/
+#
+# For a more advanced treatment of Internet Security read:
+#
+# Firewalls & Internet Security
+# Repelling the wily hacker
+# William R. Cheswick, Steven M. Bellowin
+#
+# Addison-Wesley
+# ISBN 0-201-6337-4
+# http://www.awl.com/
+#
+
+if [ "x$1" != "x" ]; then
+ firewall_type=$1
+fi
+
+############
+# Set quiet mode if requested
+if [ "x$firewall_quiet" = "xYES" ]; then
+ fwcmd="/sbin/ipfw -q"
+else
+ fwcmd="/sbin/ipfw"
+fi
+
+############
+# Flush out the list before we begin.
+$fwcmd -f flush
+
+############
+# If you just configured ipfw in the kernel as a tool to solve network
+# problems or you just want to disallow some particular kinds of traffic
+# they you will want to change the default policy to open. You can also
+# do this as your only action by setting the firewall_type to ``open''.
+
+# $fwcmd add 65000 pass all from any to any
+
+############
+# Only in rare cases do you want to change these rules
+$fwcmd add 1000 pass all from any to any via lo0
+$fwcmd add 1010 deny all from 127.0.0.0/8 to 127.0.0.0/8
+
+
+# Prototype setups.
+if [ "${firewall_type}" = "open" -o "${firewall_type}" = "OPEN" ]; then
+
+ $fwcmd add 65000 pass all from any to any
+
+elif [ "${firewall_type}" = "client" ]; then
+
+ ############
+ # This is a prototype setup that will protect your system somewhat against
+ # people from outside your own network.
+ ############
+
+ # set these to your network and netmask and ip
+ net="192.168.4.0"
+ mask="255.255.255.0"
+ ip="192.168.4.17"
+
+ # Allow any traffic to or from my own net.
+ $fwcmd add pass all from ${ip} to ${net}:${mask}
+ $fwcmd add pass all from ${net}:${mask} to ${ip}
+
+ # Allow TCP through if setup succeeded
+ $fwcmd add pass tcp from any to any established
+
+ # Allow setup of incoming email
+ $fwcmd add pass tcp from any to ${ip} 25 setup
+
+ # Allow setup of outgoing TCP connections only
+ $fwcmd add pass tcp from ${ip} to any setup
+
+ # Disallow setup of all other TCP connections
+ $fwcmd add deny tcp from any to any setup
+
+ # Allow DNS queries out in the world
+ $fwcmd add pass udp from any 53 to ${ip}
+ $fwcmd add pass udp from ${ip} to any 53
+
+ # Allow NTP queries out in the world
+ $fwcmd add pass udp from any 123 to ${ip}
+ $fwcmd add pass udp from ${ip} to any 123
+
+ # Everything else is denied as default.
+
+elif [ "${firewall_type}" = "simple" ]; then
+
+ ############
+ # This is a prototype setup for a simple firewall. Configure this machine
+ # as a named server and ntp server, and point all the machines on the inside
+ # at this machine for those services.
+ ############
+
+ # set these to your outside interface network and netmask and ip
+ oif="ed0"
+ onet="192.168.4.0"
+ omask="255.255.255.0"
+ oip="192.168.4.17"
+
+ # set these to your inside interface network and netmask and ip
+ iif="ed1"
+ inet="192.168.3.0"
+ imask="255.255.255.0"
+ iip="192.168.3.17"
+
+ # Stop spoofing
+ $fwcmd add deny all from ${inet}:${imask} to any in via ${oif}
+ $fwcmd add deny all from ${onet}:${omask} to any in via ${iif}
+
+ # Stop RFC1918 nets on the outside interface
+ $fwcmd add deny all from 192.168.0.0:255.255.0.0 to any via ${oif}
+ $fwcmd add deny all from 172.16.0.0:255.240.0.0 to any via ${oif}
+ $fwcmd add deny all from 10.0.0.0:255.0.0.0 to any via ${oif}
+
+ # Allow TCP through if setup succeeded
+ $fwcmd add pass tcp from any to any established
+
+ # Allow setup of incoming email
+ $fwcmd add pass tcp from any to ${oip} 25 setup
+
+ # Allow access to our DNS
+ $fwcmd add pass tcp from any to ${oip} 53 setup
+
+ # Allow access to our WWW
+ $fwcmd add pass tcp from any to ${oip} 80 setup
+
+ # Reject&Log all setup of incoming connections from the outside
+ $fwcmd add deny log tcp from any to any in via ${oif} setup
+
+ # Allow setup of any other TCP connection
+ $fwcmd add pass tcp from any to any setup
+
+ # Allow DNS queries out in the world
+ $fwcmd add pass udp from any 53 to ${oip}
+ $fwcmd add pass udp from ${oip} to any 53
+
+ # Allow NTP queries out in the world
+ $fwcmd add pass udp from any 123 to ${oip}
+ $fwcmd add pass udp from ${oip} to any 123
+
+ # Everything else is denied as default.
+
+elif [ "${firewall_type}" != "UNKNOWN" -a -r "${firewall_type}" ]; then
+ $fwcmd ${firewall_type}
+fi
diff --git a/release/picobsd/net/floppy.tree/etc/rc.network b/release/picobsd/net/floppy.tree/etc/rc.network
new file mode 100644
index 000000000000..235db0aa14fd
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/rc.network
@@ -0,0 +1,79 @@
+#!/bin/sh -
+# $FreeBSD$
+network_pass1() {
+ echo -n 'Doing initial network setup:'
+ # Set the host name if it is not already set
+ if [ -z "`hostname -s`" ] ; then
+ hostname $hostname
+ echo ' hostname'
+ fi
+ # Set up all the network interfaces, calling startup scripts if needed
+ for ifn in ${network_interfaces}; do
+ if [ -e /etc/start_if.${ifn} ]; then
+ . /etc/start_if.${ifn}
+ fi
+ # Do the primary ifconfig if specified
+ eval ifconfig_args=\$ifconfig_${ifn}
+ if [ -n "${ifconfig_args}" ] ; then
+ ifconfig ${ifn} ${ifconfig_args}
+ fi
+ # Check to see if aliases need to be added
+ alias=0
+ while :
+ do
+ eval ifconfig_args=\$ifconfig_${ifn}_alias${alias}
+ if [ -n "${ifconfig_args}" ]; then
+ ifconfig ${ifn} ${ifconfig_args} alias
+ alias=`expr ${alias} + 1`
+ else
+ break;
+ fi
+ done
+ ifconfig ${ifn}
+ done
+ # Load the filters if required
+ if [ -n "$firewall_enable" -a -f /etc/rc.firewall -a \
+ "x$firewall_enable" = "xYES" ] ; then
+ . /etc/rc.firewall
+ echo "Firewall rules loaded."
+ else
+ echo "Warning: kernel has firewall functionality, but firewall rules weren't loaded."
+ echo " All ip services are ENABLED by default."
+ fi
+ # Configure routing
+ if [ "x$defaultrouter" != "xNO" ] ; then
+ static_routes="default ${static_routes}"
+ route_default="default ${defaultrouter}"
+ fi
+ # Set up any static routes. This should be done before router discovery.
+ if [ "x${static_routes}" != "x" ]; then
+ for i in ${static_routes}; do
+ eval route_args=\$route_${i}
+ route add ${route_args}
+ done
+ fi
+ echo -n 'Additional routing options:'
+ if [ -n "$tcp_extensions" -a "x$tcp_extensions" != "xYES" ] ; then
+ echo -n ' tcp_extensions=NO'
+ sysctl -w net.inet.tcp.rfc1323=0 >/dev/null 2>&1
+ sysctl -w net.inet.tcp.rfc1644=0 >/dev/null 2>&1
+ fi
+ if [ "X$gateway_enable" = X"YES" ]; then
+ echo -n ' IP_gateway=YES'
+ sysctl -w net.inet.ip.forwarding=1 >/dev/null 2>&1
+ fi
+ if [ "X$arpproxy_all" = X"YES" ]; then
+ echo -n ' turning on ARP_PROXY_ALL: '
+ sysctl -w net.link.ether.inet.proxyall=1 2>&1
+ fi
+ echo '.'
+ network_pass1_done=YES # Let future generations know we made it.
+}
+
+network_pass2() {
+ network_pass2_done=YES
+}
+
+network_pass3() {
+ network_pass3_done=YES
+}
diff --git a/release/picobsd/net/floppy.tree/etc/rc.serial b/release/picobsd/net/floppy.tree/etc/rc.serial
new file mode 100644
index 000000000000..40fbd8a334cc
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/rc.serial
@@ -0,0 +1,127 @@
+#!/bin/sh
+# $FreeBSD$
+
+# Change some defaults for serial devices.
+# Standard defaults are:
+# dtrwait 300 drainwait 0
+# initial cflag from <sys/ttydefaults.h> = cread cs8 hupcl
+# initial iflag, lflag and oflag all 0
+# speed 9600
+# special chars from <sys/ttydefaults.h>
+# nothing locked
+# except for serial consoles the initial iflag, lflag and oflag are from
+# <sys/ttydefaults.h> and clocal is locked on.
+
+default() {
+ # Reset everything changed by the other functions to initial defaults.
+
+ ci=$1; shift # call in device identifier
+ co=$1; shift # call out device identifier
+
+ for i in $*
+ do
+ comcontrol /dev/tty$ci$i dtrwait 300 drainwait 0
+ stty </dev/ttyi$ci$i -clocal crtscts hupcl 9600 reprint ^R
+ stty </dev/ttyl$ci$i -clocal -crtscts -hupcl 0
+ stty </dev/cuai$co$i -clocal crtscts hupcl 9600 reprint ^R
+ stty </dev/cual$co$i -clocal -crtscts -hupcl 0
+ done
+}
+
+maybe() {
+ # Special settings.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # Don't use ^R; it breaks bash's ^R when typed ahead.
+ stty </dev/ttyi$ci$i reprint undef
+ stty </dev/cuai$co$i reprint undef
+ # Lock clocal off on dialin device for security.
+ stty </dev/ttyl$ci$i clocal
+ # Lock the speeds to use old binaries that don't support them.
+ # Any legal speed works to lock the initial speed.
+ stty </dev/ttyl$ci$i 300
+ stty </dev/cual$co$i 300
+ done
+}
+
+modem() {
+ # Modem that supports CTS and perhaps RTS handshaking.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # may depend on modem
+ comcontrol /dev/tty$ci$i dtrwait 100 drainwait 180
+ # Lock crtscts on.
+ # Speed reasonable for V42bis.
+ stty </dev/ttyi$ci$i crtscts 57600
+ stty </dev/ttyl$ci$i crtscts
+ stty </dev/cuai$co$i crtscts 57600
+ stty </dev/cual$co$i crtscts
+ done
+}
+
+mouse() {
+ # Mouse on either callin or callout port.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # Lock clocal on, hupcl off.
+ # Standard speed for Microsoft mouse.
+ stty </dev/ttyi$ci$i clocal -hupcl 1200
+ stty </dev/ttyl$ci$i clocal hupcl
+ stty </dev/cuai$co$i clocal -hupcl 1200
+ stty </dev/cual$co$i clocal hupcl
+ done
+}
+
+terminal() {
+ # Terminal that supports CTS and perhaps RTS handshaking
+ # with the cable or terminal arranged so that DCD is on
+ # at least while the terminal is on.
+ # Also works for bidirectional communications to another pc
+ # provided at most one side runs getty.
+ # Same as modem() except we want a faster speed and no dtrwait.
+
+ ci=$1; shift
+ co=$1; shift
+
+ modem $ci $co $*
+ for i in $*
+ do
+ comcontrol /dev/tty$ci$i dtrwait 0
+ stty </dev/ttyi$ci$i 115200
+ stty </dev/cuai$co$i 115200
+ done
+}
+
+# Don't use anything from this file unless you have some buggy programs
+# that require it.
+
+# Edit the functions and the examples to suit your system.
+# $1 is the call in device identifier, $2 is the call out device identifier
+# and the remainder of the line lists the device numbers.
+
+# Initialize assorted 8250-16550 (sio) ports.
+# maybe d a 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v
+# mouse d a 2
+# modem d a 1
+# terminal d a 0
+
+# Initialize all ports on a Cyclades-8yo.
+# modem c c 00 01 02 03 04 05 06 07
+
+# Initialize all ports on a Cyclades-16ye.
+# modem c c 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
+
+# Initialize all ports on a Digiboard 8.
+# modem D D 00 01 02 03 04 05 06 07
diff --git a/release/picobsd/net/floppy.tree/etc/remote b/release/picobsd/net/floppy.tree/etc/remote
new file mode 100644
index 000000000000..6f9fcaf4ad5d
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/remote
@@ -0,0 +1,50 @@
+# @(#)remote 5.2 (Berkeley) 6/30/90
+#
+# remote -- remote host description file
+# see tip(1), remote(5)
+#
+# dv device to use for the tty
+# el EOL marks (default is NULL)
+# du make a call flag (dial up)
+# pn phone numbers (@ =>'s search phones file; possibly taken from
+# PHONES environment variable)
+# at ACU type
+# ie input EOF marks (default is NULL)
+# oe output EOF string (default is NULL)
+# cu call unit (default is dv)
+# br baud rate (defaults to 300)
+# fs frame size (default is BUFSIZ) -- used in buffering writes on
+# receive operations
+# tc to continue a capability
+
+# Systems definitions
+netcom|Netcom Unix Access:\
+ :pn=\@:tc=unix1200:
+omen|Omen BBS:\
+ :pn=\@:tc=dos1200:
+
+# UNIX system definitions
+unix1200|1200 Baud dial-out to a UNIX system:\
+ :el=^U^C^R^O^D^S^Q:ie=%$:oe=^D:tc=dial1200:
+unix300|300 Baud dial-out to a UNIX system:\
+ :el=^U^C^R^O^D^S^Q:ie=%$:oe=^D:tc=dial300:
+
+# DOS system definitions
+dos1200|1200 Baud dial-out to a DOS system:\
+ :el=^U^C^R^O^D^S^Q:ie=%$:oe=^Z:pa=none:tc=dial1200:
+
+# General dialer definitions used below
+#
+# COURIER switch settings:
+# switch: 1 2 3 4 5 6 7 8 9 10
+# setting: D U D U D D U D U U
+# Rackmount: U U D U D U D D U D
+#
+dial2400|2400 Baud Hayes attributes:\
+ :dv=/dev/cuaa0:br#2400:cu=/dev/cuaa0:at=hayes:du:
+dial1200|1200 Baud Hayes attributes:\
+ :dv=/dev/cuaa0:br#1200:cu=/dev/cuaa0:at=hayes:du:
+
+# Hardwired line
+cuaa0b|cua0b:dv=/dev/cuaa0:br#2400
+cuaa0c|cua0c:dv=/dev/cuaa0:br#9600
diff --git a/release/picobsd/net/floppy.tree/etc/resolv.conf b/release/picobsd/net/floppy.tree/etc/resolv.conf
new file mode 100644
index 000000000000..4438442fb0ed
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/resolv.conf
@@ -0,0 +1,3 @@
+# $FreeBSD$
+domain mydomain.edu
+nameserver 192.33.4.12
diff --git a/release/picobsd/net/floppy.tree/etc/services b/release/picobsd/net/floppy.tree/etc/services
new file mode 100644
index 000000000000..eec499fafec7
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/services
@@ -0,0 +1,94 @@
+echo 4/ddp
+echo 7/tcp
+echo 7/udp
+discard 9/tcp
+discard 9/udp
+systat 11/tcp
+systat 11/udp
+daytime 13/tcp
+daytime 13/udp
+qotd 17/tcp
+qotd 17/udp
+chargen 19/tcp
+chargen 19/udp
+ftp-data 20/tcp
+ftp-data 20/udp
+ftp 21/tcp
+ftp 21/udp
+ssh 22/tcp
+ssh 22/udp
+telnet 23/tcp
+telnet 23/udp
+smtp 25/tcp
+smtp 25/udp
+time 37/tcp
+time 37/udp
+domain 53/tcp
+domain 53/udp
+tacacs-ds 65/tcp
+tacacs-ds 65/udp
+bootps 67/tcp
+bootps 67/udp
+bootpc 68/tcp
+bootpc 68/udp
+tftp 69/tcp
+tftp 69/udp
+gopher 70/tcp
+gopher 70/udp
+finger 79/tcp
+finger 79/udp
+http 80/tcp
+http 80/udp
+pop2 109/tcp
+pop2 109/udp
+pop3 110/tcp
+pop3 110/udp
+uucp-path 117/tcp
+uucp-path 117/udp
+nntp 119/tcp
+nntp 119/udp
+netbios-ns 137/tcp
+netbios-ns 137/udp
+netbios-dgm 138/tcp
+netbios-dgm 138/udp
+netbios-ssn 139/tcp
+netbios-ssn 139/udp
+imap 143/tcp
+imap 143/udp
+snmp 161/tcp
+snmp 161/udp
+snmptrap 162/tcp
+snmptrap 162/udp
+bgp 179/tcp
+bgp 179/udp
+irc 194/tcp
+irc 194/udp
+ipx 213/tcp
+ipx 213/udp
+imap3 220/tcp
+imap3 220/udp
+ldap 389/tcp
+ldap 389/udp
+netware-ip 396/tcp
+netware-ip 396/udp
+https 443/tcp
+https 443/udp
+exec 512/tcp
+biff 512/udp
+login 513/tcp
+who 513/udp
+cmd 514/tcp
+syslog 514/udp
+printer 515/tcp
+printer 515/udp
+talk 517/tcp
+talk 517/udp
+ntalk 518/tcp
+ntalk 518/udp
+timed 525/tcp
+timed 525/udp
+uucp 540/tcp
+uucp 540/udp
+uucp-rlogin 541/tcp
+uucp-rlogin 541/udp
+natd 8668/divert # Network Address Translation
diff --git a/release/picobsd/net/floppy.tree/etc/shells b/release/picobsd/net/floppy.tree/etc/shells
new file mode 100644
index 000000000000..df377f133737
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/shells
@@ -0,0 +1,6 @@
+# List of acceptable shells for chpass(1).
+# Ftpd will not allow users to connect who are not using
+# one of these shells.
+
+/bin/sh
+/bin/csh
diff --git a/release/picobsd/net/floppy.tree/etc/snmpd.conf b/release/picobsd/net/floppy.tree/etc/snmpd.conf
new file mode 100644
index 000000000000..29400dfb4b5e
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/snmpd.conf
@@ -0,0 +1,58 @@
+# load average checks
+
+# load [1MAX=DEFMAXLOADAVE] [5MAX=DEFMAXLOADAVE] [15MAX=DEFMAXLOADAVE]
+#
+# 1MAX: If the 1 minute load average is above this limit at query
+# time, the errorFlag will be set.
+# 5MAX: Similar, but for 5 min average.
+# 15MAX: Similar, but for 15 min average.
+
+# Check for loads:
+load 12 14 14
+
+# % snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.10
+
+# snmp agent errors
+
+# % snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.101
+
+# snmp version mib
+
+# % snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.100
+
+# System contact information
+
+syslocation PicoBSD
+syscontact root <root@pico>
+
+# Setting up the access control lists to the agent
+
+# sec.name source community
+com2sec local localhost private
+com2sec public default public
+
+# sec.model sec.name
+group local any local
+group public any public
+
+# incl/excl subtree mask
+view all included .1 80
+view system included system fe
+view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
+
+# context sec.model sec.level prefix read write not
+access public "" any noauth 0 system none none
+access local "" any noauth 0 all all all
+
+# If you want to get back to the functionality of previous versions,
+# where the public community could read anything from anywhere and the
+# private community could write anything from anywhere, use these
+# lines instead:
+#
+# com2sec public default public
+# com2sec private default private
+# group public any public
+# group private any private
+# view all included .1 80
+# access public "" any noauth 0 all none none
+# access private "" any noauth 0 all all none
diff --git a/release/picobsd/net/floppy.tree/etc/termcap b/release/picobsd/net/floppy.tree/etc/termcap
new file mode 100644
index 000000000000..5a9316af0295
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/termcap
@@ -0,0 +1,123 @@
+# Copyright (c) 1980, 1985, 1989 The Regents of the University of California.
+# All rights reserved.
+# @(#)termcap.src 5.88 (Berkeley) 4/30/91
+#
+#
+# for syscons
+# common entry without semigraphics
+cons25w|ansiw|ansi80x25-raw:\
+ :al=\E[L:am:bs:NP:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:co#80:\
+ :dc=\E[P:dl=\E[M:do=\E[B:bt=\E[Z:ho=\E[H:ic=\E[@:li#25:cb=\E[1K:\
+ :ms:nd=\E[C:pt:rs=\E[x\E[m\Ec:so=\E[7m:se=\E[m:up=\E[A:\
+ :pa#64:Co#8:Sf=\E[3%dm:Sb=\E[4%dm:op=\E[37;40m:\
+ :k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:\
+ :k9=\E[U:k;=\E[V:F1=\E[W:F2=\E[X:K2=\E[E:nw=\E[E:ec=\E[%dX:\
+ :kb=^H:kh=\E[H:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:le=^H:eo:sf=\E[S:sr=\E[T:\
+ :kN=\E[G:kP=\E[I:@7=\E[F:kI=\E[L:kD=\E[K:kB=\E[Z:\
+ :IC=\E[%d@:DC=\E[%dP:SF=\E[%dS:SR=\E[%dT:AL=\E[%dL:DL=\E[%dM:\
+ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:cv=\E[%i%dd:ch=\E[%i%d`:bw:\
+ :mb=\E[5m:md=\E[1m:mh=\E[30;1m:mr=\E[7m:me=\E[m:bl=^G:ut:it#8:
+cons25|ansis|ansi80x25:\
+ :ac=l\332m\300k\277j\331u\264t\303v\301w\302q\304x\263n\305`^Da\260f\370g\361~\371.^Y-^Xh\261I^U0\333y\363z\362:\
+ :tc=cons25w:
+cons25-m|ansis-mono|ansi80x25-mono:\
+ :pa@:Co@:Sf@:Sb@:op@:us=\E[4m:ue=\E[m:md@:mh@:tc=cons25:
+cons50|ansil|ansi80x50:\
+ :li#50:tc=cons25:
+cons50-m|ansil-mono|ansi80x50-mono:\
+ :li#50:tc=cons25-m:
+# 80x25 ISO 8859-1 FreeBSD console
+cons25l1|cons25-iso8859-1:\
+ :ac=l\215m\216k\214j\213u\226t\225v\227w\230q\222x\231n\217o\220s\224p\221r\223`\201a\202f\207g\210~\237.^Y-^X+\253,\273I\247y\232z\233:\
+ :tc=cons25w:
+cons25l1-m|cons25-iso8859-1-mono:\
+ :pa@:Co@:Sf@:Sb@:op@:us=\E[4m:ue=\E[m:md@:mh@:tc=cons25l1:
+# 80x50 ISO 8859-1 FreeBSD console
+cons50l1|cons50-iso8859-1:\
+ :li#50:tc=cons25l1:
+cons50l1-m|cons50-iso8859-1-mono:\
+ :li#50:tc=cons25l1-m:
+dosansi|ANSI.SYS standard crt|ansi:\
+ :am:bs:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:co#80:\
+ :do=\E[B:li#25:mi:nd=\E[C:\
+ :se=\E[m:so=\E[7m:up=\E[A:us=\E[4m:ue=\E[m:\
+ :md=\E[1m:mh=\E[m:mb=\E[5m:me=\E[m:\
+ :kh=\EG:kb=^h:ku=\EH:kd=\EP:kl=\EK:kr=\EM:\
+ :k1=\E;:k2=\E<:k3=\E=:k4=\E>:k5=\E?:\
+ :k6=\E@:k7=\EA:k8=\EB:k9=\EC:k0=\ED:
+
+# Note: this entry describes the "native"
+# capabilities of the PC monochrome display, without ANY emulation; most
+# communications packages (but NOT PC/IX connect) do some kind of emulation.
+pc|ibmpc|ibm pc PC/IX:\
+ :li#24:co#80:am:bs:bw:eo:\
+ :cd=\E[J:ce=\E[K:cl=\Ec:cm=\E[%i%2;%2H:do=\E[B:ho=\E[;H:\
+ :nd=\E[C:up=\E[A:so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m:
+pc3mono|IBM PC 386BSD Console with monochrome monitor:\
+ :so=\E[0;1r\E[m:tc=pc3:
+pc3|ibmpc3|IBM PC 386BSD Console:\
+ :Co#8:\
+ :DO=\E[%dB:\
+ :F1=\E[W:\
+ :F2=\E[X:\
+ :K1=\E[H:\
+ :K2=\E[I:\
+ :K3=\E[E:\
+ :K4=\E[F:\
+ :K5=\E[G:\
+ :LE=\E[%dD:\
+ :RI=\E[%dC:\
+ :Sb=\E[1;%dx:\
+ :Sf=\E[2;%dx:\
+ :UP=\E[%dA:\
+ :ac=l\332m\300k\277j\331u\264t\303v\301w\302q\304x\263n\305`^Da\260f\370g\361~\371.^Y-^Xh\261I^U0\333y\363z\362:\
+ :am:\
+ :bl=^G:\
+ :bs:\
+ :cb=\E[1K:\
+ :cd=\E[J:\
+ :ce=\E[K:\
+ :cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:\
+ :co#80:\
+ :cr=^M:\
+ :do=\E[B:\
+ :ho=\E[H:\
+ :is=\E[m:\
+ :it#8:\
+ :k;=\E[V:\
+ :k1=\E[M:\
+ :k2=\E[N:\
+ :k3=\E[O:\
+ :k4=\E[P:\
+ :k5=\E[Q:\
+ :k6=\E[R:\
+ :k7=\E[S:\
+ :k8=\E[T:\
+ :k9=\E[U:\
+ :kD=\177:\
+ :@7=\E[F:\
+ :kN=\E[G:\
+ :kP=\E[I:\
+ :kb=\177:\
+ :kd=\E[B:\
+ :kh=\E[H:\
+ :kl=\E[D:\
+ :kr=\E[C:\
+ :ku=\E[A:\
+ :le=^H:\
+ :li#25:\
+ :ms:\
+ :nd=\E[C:\
+ :op=\E[x:\
+ :pa#64:\
+ :rs=\E[m:\
+ :se=\E[m:\
+ :sf=\E[S:\
+ :so=\E[7;1r\E[7m:\
+ :sr=\E[T:\
+ :ta=^I:\
+ :te=\E[m:\
+ :ti=\E[m:\
+ :up=\E[A:\
+ :ut:
diff --git a/release/picobsd/net/floppy.tree/etc/ttys b/release/picobsd/net/floppy.tree/etc/ttys
new file mode 100644
index 000000000000..8ef5e6ebb37f
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/etc/ttys
@@ -0,0 +1,32 @@
+#
+# @(#)ttys 5.1 (Berkeley) 4/17/89
+#
+# name getty type status comments
+#
+# This entry needed for asking password when init goes to single-user mode
+# If you want to be asked for password, change "secure" to "insecure" here
+#console none unknown off secure
+vga none cons25 off secure
+#
+ttyv0 "/usr/libexec/getty Pc" cons25 on secure
+# Virtual terminals
+ttyv1 "/usr/libexec/getty Pc" cons25 on secure
+ttyv2 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv3 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv4 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv5 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv6 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv7 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv8 "/usr/libexec/getty Pc" cons25 on secure
+#ttyv9 "/usr/libexec/getty Pc" cons25 on secure
+# Pseudo terminals
+ttyp0 none network secure
+ttyp1 none network secure
+ttyp2 none network secure
+ttyp3 none network
+ttyp4 none network
+ttyp5 none network
+ttyp6 none network
+ttyp7 none network
+ttyp8 none network
+ttyp9 none network
diff --git a/release/picobsd/net/floppy.tree/kernel.config b/release/picobsd/net/floppy.tree/kernel.config
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/release/picobsd/net/floppy.tree/kernel.config
diff --git a/release/picobsd/net/lang/README.en b/release/picobsd/net/lang/README.en
new file mode 100644
index 000000000000..d2482aeed561
--- /dev/null
+++ b/release/picobsd/net/lang/README.en
@@ -0,0 +1,41 @@
+1998.07.12, Warsaw, Poland
+
+ PicoBSD @VER@ (NET)
+ -----------------
+
+
+What is PicoBSD?
+----------------
+
+It's a one floppy version of FreeBSD (please see http://www.freebsd.org),
+configured mainly for networking applications. It can be used as a router or
+firewall, or kind of a fixit floppy (or all of them).
+
+You can find more information on the home page of this project at:
+
+ http://www.freebsd.org/~picobsd/
+
+What are minimal requirements?
+------------------------------
+
+* 386SX CPU or better (there is an FPU emulator in kernel)
+* 10MB RAM - the more the better. If you have an HDD, you can make a
+ swap partition or swap file (using vnode driver and vnconfig). Then you
+ probably will be able to run with ca. 6MB only. But RAM is cheap...
+* Modem sitting on COM1-COM4 (default is to use COM2), if you want to have
+ a PPP connection.
+* Network card: compatible with NE2000, PCI Intel, 3Com 3c509 or with DEC
+ chipsets (ed, ep, fxp and de drivers). The kernel supports two of each
+ ISA (i.e. +6 total) plus two PPP connections (tun interfaces). So you can
+ easily build something like router with as many as 8 outlets :-)
+
+For detailed description and list of supported hardware see the original
+documentation, or:
+
+ http://www.freebsd.org/~picobsd/picobsd.html
+
+I'll be glad hearing from you about your experiences with PicoBSD. Thanks.
+
+Have fun!
+
+Andrzej Bialecki <abial@freebsd.org>
diff --git a/release/picobsd/net/lang/README.pl b/release/picobsd/net/lang/README.pl
new file mode 100644
index 000000000000..d7e3f6755ceb
--- /dev/null
+++ b/release/picobsd/net/lang/README.pl
@@ -0,0 +1,56 @@
+1998.07.12, Warszawa
+
+ PicoBSD @VER@ (wersja NET)
+ ------------------------
+
+Co to jest PicoBSD?
+-------------------
+
+Jest to jednodyskietkowa wersja FreeBSD skonfigurowana glownie pod katem
+zastosowania jako klient/serwer uslug sieciowych (takich jak routing,
+firewall, NFS). W celu zapoznania sie z pelnym systemem zajrzyj na
+http://www.freebsd.org. Oficjalna strona tego projektu znajduje sie na
+http://www.freebsd.org/~picobsd.
+
+Jakie sa minimalne wymagania?
+-----------------------------
+
+* Procesor 386SX lub lepszy (jadro posiada emulator FPU)
+* 10MB pamieci - jest to absolutnie nieprzekraczalne minimum. Oczywiscie im
+ wiecej, tym lepiej - ograniczenie jest glownie spowodowane brakiem swapu. Po
+ zapoznaniu sie z systemem mozesz sobie skonfigurowac tzw. swap-file na dysku
+ twardym, np. na partycji DOS-owej. Wowczas prawdopodobnie wystarczy 6MB
+ pamieci.
+* Modem, skonfigurowany na COM1-COM4 (standardowo system wykorzystuje COM2),
+ jesli bedzie wykorzystywany dostep przez PPP.
+* Karta sieciowa: kompatybilna z NE2000, niektore typy 3Com, lub wersje PCI z
+ chipsetem DEC21040 (drivery ed, ep, fxp i de). Jadro jest skonfigurowane
+ tak, zeby moc obsluzyc po dwie karty ed, ep, i de (czyli w sumie siedem)
+ oraz dwa polaczenia PPP rownoczesnie. Mozna wiec zbudowac router z 9
+ interfejsami... :-)
+
+Jakie sa roznice w stosunku do poprzedniej wersji?
+--------------------------------------------------
+
+* Poszerzony zestaw sterownikow w jadrze systemu
+* dodana obsluga CD-ROM
+* agent SNMP (pelna wersja ucd-snmp, pozwalajaca na monitorowanie procesow i
+ zdalne uruchamianie skryptow)
+* brak ssh, ftp i edytora ee (oznacza to, ze musisz edytowac pliki
+ konfiguracyjne montujac dyskietke na normalnym systemie)
+* dodany inetd, telnetd, routed, tftpd, bootpd, ps, kill, netstat,
+ ping, traceroute
+* brak vnconfig i vn(4): w przypadku routera powinien on miec tyle pamieci
+ RAM, zeby nie potrzebowac swapu, lub miec normalny swap.
+* dodana obsluga hasel (passwd(1))
+* dodana obsluga NFS (klient)
+* sa dwaj uzytkownicy: root (haslo 'setup') i user (haslo 'PicoBSD'). Ze
+ wzgledu na skomplikowana sprawe z prawami dostepu, user praktycznie moze
+ jedynie zrobic te rzeczy, ktore nie wymagaja praw roota (czyli np. telnet).
+* dodany skrypt 'update', ktory powoduje uaktualnienie zawartosci katalogu
+ /etc na dyskietce w stosunku do tego, co znajduje sie na MFS.
+
+
+Milej zabawy!
+
+Andrzej Bialecki <abial@freebsd.org>
diff --git a/release/picobsd/net/lang/boot.help.en b/release/picobsd/net/lang/boot.help.en
new file mode 100644
index 000000000000..7cbce1354839
--- /dev/null
+++ b/release/picobsd/net/lang/boot.help.en
@@ -0,0 +1,18 @@
+Usage: bios_drive:interface(unit,partition)kernel_name options
+ bios_drive 0, 1, ...
+ interface fd, wd or sd
+ unit 0, 1, ...
+ partition a, c, ...
+ kernel_name name of kernel, or ? for list of files in root directory
+ options -a (ask name) -C (cdrom) -c (userconfig) -D (dual consoles)
+ -d (debug early) -g (gdb) -h (serial console) -P (probe kbd)
+ -r (default root) -s (single user) -v (verbose)
+Examples:
+ 1:sd(0,a)mykernel boot `mykernel' on the first SCSI drive when one IDE
+ drive is present
+ 1:wd(2,a) boot from the second (secondary master) IDE drive
+ 1:sd(0,a)? list the files in the root directory on the specified
+ drive/unit/partition, and set the default bios_drive,
+ interface, unit and partition
+ -cv boot with the defaults, then run UserConfig to modify
+ hardware parameters (c), and print verbose messages (v)
diff --git a/release/picobsd/net/lang/boot.help.pl b/release/picobsd/net/lang/boot.help.pl
new file mode 100644
index 000000000000..bb5b422529aa
--- /dev/null
+++ b/release/picobsd/net/lang/boot.help.pl
@@ -0,0 +1,16 @@
+Opcje: dysk_bios:kontroler(dysk,partycja)nazwa_kernela opcje
+ dysk_bios 0, 1, ...
+ kontroler fd (dyskietka), wd (dysk IDE) lub sd (dysk SCSI)
+ dysk 0, 1, ... (numer dysku w kontrolerze)
+ partycja a, c, e, f ... (wedlug nazewnictwa BSD)
+ nazwa_kernela nazwa pliku kernela, lub ? zeby dostac liste plikow
+ opcje -a (pytaj o rootdev) -C (cdrom) -c (userconf.) -D (podwojna konsola)
+ -d (uruchom debugger) -g (gdb) -h (konsola szeregowa)
+ -P (probkuj klawiature) -r (domyslny rootdev) -s (tryb single user)
+ -v (verbose - szczegolowe komunikaty)
+Np: 1:sd(0,a)mykernel startuj `mykernel' z 1 dysku SCSI gdy jest tez 1 dysk
+ IDE, i jednoczesnie ustaw go jako domyslny dysk_bios,
+ kontroler, dysk i partycje
+ -cv startuj z parametrami domyslnymi, potem uruchom
+ konfiguracje param. sprzetowych (-c), i podawaj
+ szczegolowe komunikaty w trakcie bootowania (-v).
diff --git a/release/picobsd/net/lang/hosts.en b/release/picobsd/net/lang/hosts.en
new file mode 100644
index 000000000000..53f13bab8b37
--- /dev/null
+++ b/release/picobsd/net/lang/hosts.en
@@ -0,0 +1,5 @@
+# $FreeBSD$
+# This file should contain the addresses and aliases
+# for local hosts that share this file.
+127.0.0.1 localhost localhost.mydomain.edu
+127.0.0.1 pico.mydomain.edu
diff --git a/release/picobsd/net/lang/hosts.pl b/release/picobsd/net/lang/hosts.pl
new file mode 100644
index 000000000000..89081d798683
--- /dev/null
+++ b/release/picobsd/net/lang/hosts.pl
@@ -0,0 +1,5 @@
+# $FreeBSD$
+# This file should contain the addresses and aliases
+# for local hosts that share this file.
+127.0.0.1 localhost localhost.mydomain.org.pl
+127.0.0.1 pico.mydomain.org.pl
diff --git a/release/picobsd/net/lang/motd.en b/release/picobsd/net/lang/motd.en
new file mode 100644
index 000000000000..97194182eedf
--- /dev/null
+++ b/release/picobsd/net/lang/motd.en
@@ -0,0 +1,12 @@
+==================================================
+ )\_)\
+PicoBSD @VER@ (NET) (o,o)
+ __ \~/
+Welcome to PicoBSD! -->====\
+ ~~ d d
+You can find a short description of the picoBSD
+system in file /README. You can view it using
+"more /README".
+
+For more info contact the author (abial@freebsd.org).
+
diff --git a/release/picobsd/net/lang/motd.pl b/release/picobsd/net/lang/motd.pl
new file mode 100644
index 000000000000..4b1fcf551518
--- /dev/null
+++ b/release/picobsd/net/lang/motd.pl
@@ -0,0 +1,12 @@
+=======================================================
+ )\_)\
+PicoBSD @VER@ (NET) (o,o)
+ __ \~/
+Witamy w PicoBSD! -->====\
+ ~~ d d
+W glownym katalogu w pliku README znajdziesz picoBSD
+krotki opis systemu. Mozesz go obejrzec przy pomocy
+"more /README".
+
+Wiecej informacji znajdziesz u autora (abial@freebsd.org).
+
diff --git a/release/picobsd/net/mfs.mtree b/release/picobsd/net/mfs.mtree
new file mode 100644
index 000000000000..9330dcf8f8ec
--- /dev/null
+++ b/release/picobsd/net/mfs.mtree
@@ -0,0 +1,58 @@
+#
+# $FreeBSD$
+#
+/set type=dir uname=root gname=wheel mode=0755
+.
+ dev
+ ..
+ dos
+ ..
+ etc
+ ..
+ home
+ user
+ ..
+ ..
+ mnt
+ ..
+ mnt1
+ ..
+ mnt2
+ ..
+ proc
+ ..
+ root
+ ..
+ stand
+ ..
+ start_floppy
+ ..
+ tftpboot
+ ..
+ tmp mode=01777
+ ..
+ usr
+ local
+ share
+ snmp
+ mibs
+ ..
+ ..
+ ..
+ ..
+ share
+ misc
+ ..
+ ..
+ ..
+ var
+ db
+ ..
+ run
+ ..
+ spool
+ lock
+ ..
+ ..
+ ..
+..
diff --git a/release/picobsd/router/Makefile.mfs b/release/picobsd/router/Makefile.mfs
new file mode 100644
index 000000000000..d9f96cc07118
--- /dev/null
+++ b/release/picobsd/router/Makefile.mfs
@@ -0,0 +1,7 @@
+#
+# $FreeBSD$
+#
+
+MY_DEVS= std tun2 vty3 fd0 pty0 cuaa0 cuaa1 cuaa2
+
+.include "../build/Makefile.mfs"
diff --git a/release/picobsd/router/PICOBSD b/release/picobsd/router/PICOBSD
new file mode 100644
index 000000000000..a64eaf51632a
--- /dev/null
+++ b/release/picobsd/router/PICOBSD
@@ -0,0 +1,81 @@
+#
+# $FreeBSD$
+#
+#Line starting with #PicoBSD contains PicoBSD build parameters
+#marker def_sz init MFS_inodes floppy_inodes
+#PicoBSD 820 oinit 3072 32768
+options MD_ROOT_SIZE=820 # same as def_sz
+
+machine i386
+cpu I386_CPU
+cpu I486_CPU
+cpu I586_CPU
+cpu I686_CPU
+ident PICOBSD
+maxusers 10
+
+#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 NFS #Network Filesystem
+options MFS #Memory Filesystem
+options MD_ROOT #MFS as root
+#options MSDOSFS #MSDOS Filesystem
+#options CD9660 #ISO 9660 Filesystem
+#options PROCFS #Process filesystem
+options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
+options USERCONFIG #boot -c editor
+#options USERCONFIG_BOOT #imply -c and parse info area
+#options VISUAL_USERCONFIG #visual boot -c editor
+options IPFIREWALL
+options IPFIREWALL_DEFAULT_TO_ACCEPT
+options IPDIVERT
+options PCI_QUIET
+#options DEVFS
+options NO_SWAPPING
+# Support for bridging and bandwidth limiting
+#options DUMMYNET
+#options BRIDGE
+
+device isa
+device pci
+
+device fdc
+
+# atkbdc0 controlls both the keyboard and the PS/2 mouse
+device atkbdc 1
+device atkbd
+
+device vga
+
+# syscons is the default console driver, resembling an SCO console
+device sc 1
+
+device npx
+
+device sio
+
+# The following Ethernet NICs are all PCI devices.
+#
+device de
+device fxp
+
+# 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.
+
+device ed
+device ep
+device ie
+
+device loop
+device ether
+#device tun 2
+device ppp 4
+device pty 16
+device md
+
+options COMPAT_OLDISA #Use ISA shims and glue for old drivers
+
diff --git a/release/picobsd/router/PICOBSD.hints b/release/picobsd/router/PICOBSD.hints
new file mode 100644
index 000000000000..b9d89f79ab16
--- /dev/null
+++ b/release/picobsd/router/PICOBSD.hints
@@ -0,0 +1,53 @@
+# $FreeBSD$
+hint.fdc.0.at="isa"
+hint.fdc.0.port="0x3F0"
+hint.fdc.0.irq="6"
+hint.fdc.0.drq="2"
+hint.fd.0.at="fdc0"
+hint.fd.0.drive="0"
+hint.atkbdc.0.at="isa"
+hint.atkbdc.0.port="0x060"
+hint.atkbd.0.at="atkbdc"
+hint.atkbd.0.irq="1"
+hint.vga.0.at="isa"
+hint.sc.0.at="isa"
+hint.npx.0.at="nexus"
+hint.npx.0.port="0x0F0"
+hint.npx.0.irq="13"
+hint.sio.0.at="isa"
+hint.sio.0.port="0x3F8"
+hint.sio.0.flags="0x10"
+hint.sio.0.irq="4"
+hint.sio.1.at="isa"
+hint.sio.1.port="0x2F8"
+hint.sio.1.irq="3"
+hint.sio.2.at="isa"
+hint.sio.2.disabled="1"
+hint.sio.2.port="0x3E8"
+hint.sio.2.irq="5"
+hint.sio.3.at="isa"
+hint.sio.3.disabled="1"
+hint.sio.3.port="0x2E8"
+hint.sio.3.irq="9"
+hint.ed.0.at="isa"
+hint.ed.0.port="0x280"
+hint.ed.0.irq="5"
+hint.ed.0.maddr="0xd8000"
+hint.ed.1.at="isa"
+hint.ed.1.port="0x300"
+hint.ed.1.irq="10"
+hint.ed.1.maddr="0xd0000"
+hint.ep.0.at="isa"
+hint.ep.0.port="0x300"
+hint.ep.0.irq="10"
+hint.ep.1.at="isa"
+hint.ep.1.port="0x280"
+hint.ep.1.irq="5"
+hint.ie.0.at="isa"
+hint.ie.0.port="0x300"
+hint.ie.0.irq="5"
+hint.ie.0.maddr="0xd0000"
+hint.ie.1.at="isa"
+hint.ie.1.port="0x360"
+hint.ie.1.irq="7"
+hint.ie.1.maddr="0xd0000"
diff --git a/release/picobsd/router/crunch1/Makefile b/release/picobsd/router/crunch1/Makefile
new file mode 100644
index 000000000000..08736da70a1d
--- /dev/null
+++ b/release/picobsd/router/crunch1/Makefile
@@ -0,0 +1,34 @@
+#
+# $FreeBSD$
+#
+SRC?=/usr/src
+
+all: crunch
+
+crunch:
+ @cat crunch.conf|sed -e "s@/usr/src@${SRC}@" >crunch1.conf
+ @crunchgen ./crunch1.conf
+ @${MAKE} -f crunch1.mk NOSECURE=yes NOCRYPT=yes all \
+ "CFLAGS=${CFLAGS} -DCRUNCHED_BINARY -DRELEASE_CRUNCH" #2>&1 >/dev/null
+
+clean:
+ rm -f *.o *.stub *.lo *_stub.c *.mk \
+ crunch.cache \
+ crunch.mk \
+ crunch.c \
+ crunch1* \
+ crunch \
+ .tmp_* \
+ *.gz
+
+install:
+ cp crunch1 ${MFS_MOUNTPOINT}/stand/crunch
+ chmod 555 ${MFS_MOUNTPOINT}/stand/crunch
+ for i in `crunchgen -l crunch1.conf` ; \
+ do \
+ ln ${MFS_MOUNTPOINT}/stand/crunch ${MFS_MOUNTPOINT}/stand/$${i}; \
+ done
+ rm ${MFS_MOUNTPOINT}/stand/crunch
+
+
+.include <bsd.prog.mk>
diff --git a/release/picobsd/router/crunch1/crunch.conf b/release/picobsd/router/crunch1/crunch.conf
new file mode 100644
index 000000000000..5e655a27aaf6
--- /dev/null
+++ b/release/picobsd/router/crunch1/crunch.conf
@@ -0,0 +1,40 @@
+#
+# $FreeBSD$
+#
+# NOTE: the string "/usr/src" will be automatically replaced with the
+# correct value set in 'build' script - you should change it there
+
+# Default build options
+buildopts -DNOPAM -DRELEASE_CRUNCH -DNOSECURE -DNOCRYPT -DNONETGRAPH -DNOIPSEC
+
+# other sources
+srcdirs /usr/src/bin
+srcdirs /usr/src/sbin/i386
+srcdirs /usr/src/sbin
+srcdirs /usr/src/usr.bin
+srcdirs /usr/src/gnu/usr.bin
+srcdirs /usr/src/usr.sbin
+srcdirs /usr/src/libexec
+# sources for ns & vm
+srcdirs ../../tinyware
+
+progs hostname cat kget
+progs oinit ifconfig df sps ns vm msg
+progs cp rm ls reboot
+progs sysctl route
+progs mount umount
+progs kill natd
+
+progs pppd less
+ln less more
+progs ping traceroute routed ipfw
+
+progs minigzip
+ln minigzip gzip
+ln sps ps
+ln ns netstat
+ln msg dmesg
+
+libs -lncurses -lmytinfo -lipx -lz -lpcap -lalias
+libs -ledit -lutil -lmd -lcrypt -lmp -lgmp -lm -lkvm
+libs -lgnuregex -ltelnet
diff --git a/release/picobsd/router/floppy.tree.exclude b/release/picobsd/router/floppy.tree.exclude
new file mode 100644
index 000000000000..8850a34dd83b
--- /dev/null
+++ b/release/picobsd/router/floppy.tree.exclude
@@ -0,0 +1,13 @@
+etc/inetd.conf
+etc/master.passwd
+etc/mfs.login.conf
+etc/mfs.rc
+etc/rc
+etc/rc.conf
+etc/rc.firewall
+etc/rc.network
+etc/rc.serial
+etc/remote
+etc/shells
+etc/snmpd.conf
+etc/ttys
diff --git a/release/picobsd/router/floppy.tree/etc/mfs.rc b/release/picobsd/router/floppy.tree/etc/mfs.rc
new file mode 100644
index 000000000000..aa60593473b1
--- /dev/null
+++ b/release/picobsd/router/floppy.tree/etc/mfs.rc
@@ -0,0 +1,25 @@
+# $FreeBSD$
+# This file is interpreted by oinit(8)
+#
+ncons 2
+motd /etc/motd
+set HOME=/
+set PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
+
+sysctl -w vm.defer_swapspace_pageouts=1 vm.disable_swapspace_pageouts=1
+
+### Special setup for one floppy PICOBSD ###
+echo
+echo "-------------------------------------------"
+echo " Please wait. The system is coming up..."
+echo "-------------------------------------------"
+echo
+echo "Reading /etc from startup floppy..."
+mount -o rdonly /dev/fd0a /start_floppy
+cd /start_floppy/etc
+cp -Rp . /etc
+cd /etc
+umount /dev/fd0a
+echo "Ok. (Now you may remove floppy if you like)"
+echo
+. rc
diff --git a/release/picobsd/router/floppy.tree/etc/rc b/release/picobsd/router/floppy.tree/etc/rc
new file mode 100644
index 000000000000..794e928a1da5
--- /dev/null
+++ b/release/picobsd/router/floppy.tree/etc/rc
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $FreeBSD$
+### Special setup for one floppy PICOBSD ###
+ifconfig lo0 inet 127.0.0.1 netmask 0xffffff00
+hostname pico
+echo ""
+echo ""
+echo '+----------- PicoBSD @VER@ (ROUTER) ------------+'
+echo '| |'
+echo '| This version of PicoBSD is fully under |'
+echo '| BSD license. For more details see |'
+echo '| http://www.freebsd.org/~picobsd, or contact |'
+echo '| the author. |'
+echo '| |'
+echo '| abial@freebsd.org |'
+echo '| |'
+echo '+----------------------------------------------+'
+echo ""
diff --git a/release/picobsd/router/floppy.tree/etc/rc.firewall b/release/picobsd/router/floppy.tree/etc/rc.firewall
new file mode 100644
index 000000000000..c2860baedce0
--- /dev/null
+++ b/release/picobsd/router/floppy.tree/etc/rc.firewall
@@ -0,0 +1,172 @@
+############
+# Setup system for firewall service.
+# $FreeBSD$
+
+############
+# Define the firewall type in /etc/rc.conf. Valid values are:
+# open - will allow anyone in
+# client - will try to protect just this machine
+# simple - will try to protect a whole network
+# closed - totally disables IP services except via lo0 interface
+# UNKNOWN - disables the loading of firewall rules.
+# filename - will load the rules in the given filename (full path required)
+#
+# For ``client'' and ``simple'' the entries below should be customized
+# appropriately.
+
+############
+#
+# If you don't know enough about packet filtering, we suggest that you
+# take time to read this book:
+#
+# Building Internet Firewalls
+# Brent Chapman and Elizabeth Zwicky
+#
+# O'Reilly & Associates, Inc
+# ISBN 1-56592-124-0
+# http://www.ora.com/
+#
+# For a more advanced treatment of Internet Security read:
+#
+# Firewalls & Internet Security
+# Repelling the wily hacker
+# William R. Cheswick, Steven M. Bellowin
+#
+# Addison-Wesley
+# ISBN 0-201-6337-4
+# http://www.awl.com/
+#
+
+if [ "x$1" != "x" ]; then
+ firewall_type=$1
+fi
+
+############
+# Set quiet mode if requested
+if [ "x$firewall_quiet" = "xYES" ]; then
+ fwcmd="/sbin/ipfw -q"
+else
+ fwcmd="/sbin/ipfw"
+fi
+
+############
+# Flush out the list before we begin.
+$fwcmd -f flush
+
+############
+# If you just configured ipfw in the kernel as a tool to solve network
+# problems or you just want to disallow some particular kinds of traffic
+# they you will want to change the default policy to open. You can also
+# do this as your only action by setting the firewall_type to ``open''.
+
+# $fwcmd add 65000 pass all from any to any
+
+############
+# Only in rare cases do you want to change these rules
+$fwcmd add 1000 pass all from any to any via lo0
+$fwcmd add 1010 deny all from 127.0.0.0/8 to 127.0.0.0/8
+
+
+# Prototype setups.
+if [ "${firewall_type}" = "open" -o "${firewall_type}" = "OPEN" ]; then
+
+ $fwcmd add 65000 pass all from any to any
+
+elif [ "${firewall_type}" = "client" ]; then
+
+ ############
+ # This is a prototype setup that will protect your system somewhat against
+ # people from outside your own network.
+ ############
+
+ # set these to your network and netmask and ip
+ net="192.168.4.0"
+ mask="255.255.255.0"
+ ip="192.168.4.17"
+
+ # Allow any traffic to or from my own net.
+ $fwcmd add pass all from ${ip} to ${net}:${mask}
+ $fwcmd add pass all from ${net}:${mask} to ${ip}
+
+ # Allow TCP through if setup succeeded
+ $fwcmd add pass tcp from any to any established
+
+ # Allow setup of incoming email
+ $fwcmd add pass tcp from any to ${ip} 25 setup
+
+ # Allow setup of outgoing TCP connections only
+ $fwcmd add pass tcp from ${ip} to any setup
+
+ # Disallow setup of all other TCP connections
+ $fwcmd add deny tcp from any to any setup
+
+ # Allow DNS queries out in the world
+ $fwcmd add pass udp from any 53 to ${ip}
+ $fwcmd add pass udp from ${ip} to any 53
+
+ # Allow NTP queries out in the world
+ $fwcmd add pass udp from any 123 to ${ip}
+ $fwcmd add pass udp from ${ip} to any 123
+
+ # Everything else is denied as default.
+
+elif [ "${firewall_type}" = "simple" ]; then
+
+ ############
+ # This is a prototype setup for a simple firewall. Configure this machine
+ # as a named server and ntp server, and point all the machines on the inside
+ # at this machine for those services.
+ ############
+
+ # set these to your outside interface network and netmask and ip
+ oif="ed0"
+ onet="192.168.4.0"
+ omask="255.255.255.0"
+ oip="192.168.4.17"
+
+ # set these to your inside interface network and netmask and ip
+ iif="ed1"
+ inet="192.168.3.0"
+ imask="255.255.255.0"
+ iip="192.168.3.17"
+
+ # Stop spoofing
+ $fwcmd add deny all from ${inet}:${imask} to any in via ${oif}
+ $fwcmd add deny all from ${onet}:${omask} to any in via ${iif}
+
+ # Stop RFC1918 nets on the outside interface
+ $fwcmd add deny all from 192.168.0.0:255.255.0.0 to any via ${oif}
+ $fwcmd add deny all from 172.16.0.0:255.240.0.0 to any via ${oif}
+ $fwcmd add deny all from 10.0.0.0:255.0.0.0 to any via ${oif}
+
+ # Allow TCP through if setup succeeded
+ $fwcmd add pass tcp from any to any established
+
+ # Allow setup of incoming email
+ $fwcmd add pass tcp from any to ${oip} 25 setup
+
+ # Allow access to our DNS
+ $fwcmd add pass tcp from any to ${oip} 53 setup
+
+ # Allow access to our WWW
+ $fwcmd add pass tcp from any to ${oip} 80 setup
+
+ # Reject&Log all setup of incoming connections from the outside
+ $fwcmd add deny log tcp from any to any in via ${oif} setup
+
+ # Allow setup of any other TCP connection
+ $fwcmd add pass tcp from any to any setup
+
+ # Allow DNS queries out in the world
+ $fwcmd add pass udp from any 53 to ${oip}
+ $fwcmd add pass udp from ${oip} to any 53
+
+ # Allow NTP queries out in the world
+ $fwcmd add pass udp from any 123 to ${oip}
+ $fwcmd add pass udp from ${oip} to any 123
+
+ # Everything else is denied as default.
+
+elif [ "${firewall_type}" != "UNKNOWN" -a -r "${firewall_type}" ]; then
+ $fwcmd ${firewall_type}
+fi
diff --git a/release/picobsd/router/lang/BAD_DOCS!!! b/release/picobsd/router/lang/BAD_DOCS!!!
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/release/picobsd/router/lang/BAD_DOCS!!!
diff --git a/release/picobsd/router/lang/README.en b/release/picobsd/router/lang/README.en
new file mode 100644
index 000000000000..71e9dd267f46
--- /dev/null
+++ b/release/picobsd/router/lang/README.en
@@ -0,0 +1,40 @@
+1998.07.12, Warsaw, Poland
+
+ PicoBSD @VER@ (ROUTER)
+ ------------------
+
+
+What is PicoBSD?
+----------------
+
+It's a one floppy version of FreeBSD (please see http://www.freebsd.org),
+configured as a stand-alone router. It offers also IP Firewall capabilities.
+
+You can find more information on the home page of this project at:
+
+ http://www.freebsd.org/~picobsd/
+
+What are minimal requirements?
+------------------------------
+
+* 386SX CPU or better (there is an FPU emulator in kernel)
+* 4MB RAM - the more the better. The system will run a couple of small
+ processes in 4MB - enough to configure static routes and IP Firewall. If
+ you want to run routed(8), you'll need at least 6MB.
+* Modem sitting on COM1-COM4 (default is to use COM2), if you want to have
+ a PPP connection.
+* Network card: compatible with NE2000, PCI Intel, 3Com 3c509 or with DEC
+ chipsets (ed, ep, fxp and de drivers). The kernel supports two of them
+ (i.e. 7 total) plus two PPP connections (tun interfaces). So you can
+ easily build something like router with as many as 9 outlets :-)
+
+For detailed description and list of supported hardware see the original
+documentation, or:
+
+ http://www.freebsd.org/~picobsd/picobsd.html
+
+I'll be glad hearing from you about your experiences with PicoBSD. Thanks.
+
+Have fun!
+
+Andrzej Bialecki <abial@freebsd.org>
diff --git a/release/picobsd/router/lang/README.pl b/release/picobsd/router/lang/README.pl
new file mode 100644
index 000000000000..269348b20c5c
--- /dev/null
+++ b/release/picobsd/router/lang/README.pl
@@ -0,0 +1,39 @@
+1998.07.12, Warszawa
+
+ PicoBSD @VER@ (wersja ROUTER)
+ -------------------------
+
+Co to jest PicoBSD?
+-------------------
+
+Jest to jednodyskietkowa wersja FreeBSD skonfigurowana pod katem
+zastosowania jako router, oferuje rowniez modul IP Firewall i translacje
+adresow (NAT).
+
+W celu zapoznania sie z pelnym systemem zajrzyj na http://www.freebsd.org.
+Oficjalna strona tego projektu znajduje sie na
+
+ http://www.freebsd.org/~picobsd.
+
+Jakie sa minimalne wymagania?
+-----------------------------
+
+* Procesor 386SX lub lepszy (jadro posiada emulator FPU)
+* 4MB pamieci - jest to absolutnie nieprzekraczalne minimum. Oczywiscie im
+ wiecej, tym lepiej - przy tej ilosci mozliwe jest skonfigurowanie
+ statycznego routingu oraz IP Firewalla; jesli potrzebujesz rowniez
+ daemona routed i translacji adresow, wymagane jest minimum 6MB.
+* Modem, skonfigurowany na COM1-COM4 (standardowo system wykorzystuje COM2),
+ jesli bedzie wykorzystywany dostep przez PPP.
+* Karta sieciowa: kompatybilna z NE2000, niektore typy 3Com, lub wersje PCI z
+ chipsetem DEC21040 (drivery ed, ep, fxp i de). Jadro jest skonfigurowane
+ tak, zeby moc obsluzyc po dwie karty ed, ep, i de (czyli w sumie siedem)
+ oraz dwa polaczenia PPP rownoczesnie. Mozna wiec zbudowac router z 9
+ interfejsami... :-)
+
+Po dalsze szczegoly zajrzyj do oryginalnej dokumentacji.
+
+
+Milej zabawy!
+
+Andrzej Bialecki <abial@freebsd.org>
diff --git a/release/picobsd/router/lang/boot.help.en b/release/picobsd/router/lang/boot.help.en
new file mode 100644
index 000000000000..7cbce1354839
--- /dev/null
+++ b/release/picobsd/router/lang/boot.help.en
@@ -0,0 +1,18 @@
+Usage: bios_drive:interface(unit,partition)kernel_name options
+ bios_drive 0, 1, ...
+ interface fd, wd or sd
+ unit 0, 1, ...
+ partition a, c, ...
+ kernel_name name of kernel, or ? for list of files in root directory
+ options -a (ask name) -C (cdrom) -c (userconfig) -D (dual consoles)
+ -d (debug early) -g (gdb) -h (serial console) -P (probe kbd)
+ -r (default root) -s (single user) -v (verbose)
+Examples:
+ 1:sd(0,a)mykernel boot `mykernel' on the first SCSI drive when one IDE
+ drive is present
+ 1:wd(2,a) boot from the second (secondary master) IDE drive
+ 1:sd(0,a)? list the files in the root directory on the specified
+ drive/unit/partition, and set the default bios_drive,
+ interface, unit and partition
+ -cv boot with the defaults, then run UserConfig to modify
+ hardware parameters (c), and print verbose messages (v)
diff --git a/release/picobsd/router/lang/boot.help.pl b/release/picobsd/router/lang/boot.help.pl
new file mode 100644
index 000000000000..bb5b422529aa
--- /dev/null
+++ b/release/picobsd/router/lang/boot.help.pl
@@ -0,0 +1,16 @@
+Opcje: dysk_bios:kontroler(dysk,partycja)nazwa_kernela opcje
+ dysk_bios 0, 1, ...
+ kontroler fd (dyskietka), wd (dysk IDE) lub sd (dysk SCSI)
+ dysk 0, 1, ... (numer dysku w kontrolerze)
+ partycja a, c, e, f ... (wedlug nazewnictwa BSD)
+ nazwa_kernela nazwa pliku kernela, lub ? zeby dostac liste plikow
+ opcje -a (pytaj o rootdev) -C (cdrom) -c (userconf.) -D (podwojna konsola)
+ -d (uruchom debugger) -g (gdb) -h (konsola szeregowa)
+ -P (probkuj klawiature) -r (domyslny rootdev) -s (tryb single user)
+ -v (verbose - szczegolowe komunikaty)
+Np: 1:sd(0,a)mykernel startuj `mykernel' z 1 dysku SCSI gdy jest tez 1 dysk
+ IDE, i jednoczesnie ustaw go jako domyslny dysk_bios,
+ kontroler, dysk i partycje
+ -cv startuj z parametrami domyslnymi, potem uruchom
+ konfiguracje param. sprzetowych (-c), i podawaj
+ szczegolowe komunikaty w trakcie bootowania (-v).
diff --git a/release/picobsd/router/lang/hosts.en b/release/picobsd/router/lang/hosts.en
new file mode 100644
index 000000000000..53f13bab8b37
--- /dev/null
+++ b/release/picobsd/router/lang/hosts.en
@@ -0,0 +1,5 @@
+# $FreeBSD$
+# This file should contain the addresses and aliases
+# for local hosts that share this file.
+127.0.0.1 localhost localhost.mydomain.edu
+127.0.0.1 pico.mydomain.edu
diff --git a/release/picobsd/router/lang/hosts.pl b/release/picobsd/router/lang/hosts.pl
new file mode 100644
index 000000000000..89081d798683
--- /dev/null
+++ b/release/picobsd/router/lang/hosts.pl
@@ -0,0 +1,5 @@
+# $FreeBSD$
+# This file should contain the addresses and aliases
+# for local hosts that share this file.
+127.0.0.1 localhost localhost.mydomain.org.pl
+127.0.0.1 pico.mydomain.org.pl
diff --git a/release/picobsd/router/lang/motd.en b/release/picobsd/router/lang/motd.en
new file mode 100644
index 000000000000..d0b03603c746
--- /dev/null
+++ b/release/picobsd/router/lang/motd.en
@@ -0,0 +1,9 @@
+==================================================
+ )\_)\
+PicoBSD @VER@ (ROUTER) (o,o)
+ __ \~/
+Welcome to PicoBSD! -->====\
+ ~~ d d
+You can find a short description of the picoBSD
+system in http://www.freebsd.org/~picobsd/.
+
diff --git a/release/picobsd/router/lang/motd.pl b/release/picobsd/router/lang/motd.pl
new file mode 100644
index 000000000000..5acadf0d2aa1
--- /dev/null
+++ b/release/picobsd/router/lang/motd.pl
@@ -0,0 +1,11 @@
+=======================================================
+ )\_)\
+PicoBSD @VER@ (ROUTER) (o,o)
+ __ \~/
+Witamy w PicoBSD! -->====\
+ ~~ d d
+Dokumentacja systemu znajduje sie na picoBSD
+http://www.freebsd.org/~picobsd/.
+
+Wiecej informacji znajdziesz u autora (abial@freebsd.org).
+
diff --git a/release/picobsd/tinyware/aps/Makefile b/release/picobsd/tinyware/aps/Makefile
new file mode 100644
index 000000000000..cda9bdddba1c
--- /dev/null
+++ b/release/picobsd/tinyware/aps/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+#
+PROG=ps
+SRCS+=main.c
+NOMAN=yes
+
+.include <bsd.prog.mk>
+
+
diff --git a/release/picobsd/tinyware/aps/README b/release/picobsd/tinyware/aps/README
new file mode 100644
index 000000000000..f455c7bae307
--- /dev/null
+++ b/release/picobsd/tinyware/aps/README
@@ -0,0 +1,19 @@
+1998.07.12
+
+This is a small 'ps' replacement, which uses information available via
+procfs(5) interface. It's primitive, but gives you the most important
+informations, i.e. how many processes are running and on which vty, and the
+pid number to kill some of them. :-)
+
+When I have some time, I'll add usual switches and other functions that normal
+'ps' has...
+
+Also, what I'm now inclined to think is that it should be reworked to use
+more general (and less complicated) sysctl(3).
+
+<abial@freebsd.org>
+
+(As of 1998.07.31 this program is no longer used in PicoBSD. See sps(1) in
+TinyWare collection).
+
+$FreeBSD$
diff --git a/release/picobsd/tinyware/aps/main.c b/release/picobsd/tinyware/aps/main.c
new file mode 100644
index 000000000000..eece247af3bd
--- /dev/null
+++ b/release/picobsd/tinyware/aps/main.c
@@ -0,0 +1,101 @@
+/*-
+ * Copyright (c) 1998 Andrzej Bialecki
+ * 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$
+ *
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+/*
+ * Ok, I could extract almost anything from /proc, but I'm too lazy...
+ * I think it will suffice for now.
+ */
+
+int
+main(int argc, char *argv[])
+{
+ DIR *d;
+ struct dirent *e;
+ FILE *fd;
+ char buf[100];
+ char *tok, *sep=" ", *sep1=",";
+ char *name, *pid, *ppid, *uid, *gid;
+ char *pgid, *sid, *tty, *cred;
+ char *major, *minor;
+ char con[10];
+
+ d=opendir("/proc");
+ printf(" PID PPID TTY COMMAND\n");
+ while((e=readdir(d))!=NULL) {
+ /* Skip '.' and '..' */
+ if(e->d_name[0]=='.') continue;
+ /* Skip 'curproc' - it's us */
+ if(e->d_name[0]=='c') continue;
+ sprintf(buf,"/proc/%s/status",e->d_name);
+ fd=fopen(buf,"r");
+ fgets(buf,99,fd);
+ fclose(fd);
+ name=strtok(buf,sep);
+ pid=strtok(NULL,sep);
+ ppid=strtok(NULL,sep);
+ pgid=strtok(NULL,sep);
+ sid=strtok(NULL,sep);
+ tty=strtok(NULL,sep);
+ tok=strtok(NULL,sep); /* flags */
+ tok=strtok(NULL,sep); /* start */
+ tok=strtok(NULL,sep); /* user time */
+ tok=strtok(NULL,sep); /* system time */
+ tok=strtok(NULL,sep); /* wchan */
+ cred=strtok(NULL,sep); /* credentials */
+ major=strtok(tty,sep1);
+ minor=strtok(NULL,sep1);
+ if(strcmp(minor,"-1")==0) {
+ minor="?";
+ }
+ if(strcmp(major,"-1")==0) {
+ major="?";
+ } else if(strcmp(major,"12")==0) {
+ major="v";
+ } else if(strcmp(major,"0")==0) {
+ major="con";
+ minor="-";
+ } else if(strcmp(major,"5")==0) {
+ major="p";
+ } else major="x";
+ if((strcmp(major,"v")==0) && (strcmp(minor,"255")==0)) {
+ major="con";
+ minor="-";
+ }
+ sprintf(con,"%s%s",major,minor);
+ printf("%5s %5s %4s (%s)\n",pid,ppid,con,name);
+
+ }
+ closedir(d);
+ exit(0);
+}
diff --git a/release/picobsd/tinyware/help/Makefile b/release/picobsd/tinyware/help/Makefile
new file mode 100644
index 000000000000..2bf727af61b7
--- /dev/null
+++ b/release/picobsd/tinyware/help/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+#
+PROG=help
+SRCS+=help.c
+NOMAN=yes
+
+.include <bsd.prog.mk>
+
+
diff --git a/release/picobsd/tinyware/help/README b/release/picobsd/tinyware/help/README
new file mode 100644
index 000000000000..9c9900feba3f
--- /dev/null
+++ b/release/picobsd/tinyware/help/README
@@ -0,0 +1,8 @@
+1998.02.20
+
+This is work in progress. Eventually I'll prepare the help system for newbies,
+and these files are just the beginning of it...
+
+<abial@freebsd.org>
+
+$FreeBSD$
diff --git a/release/picobsd/tinyware/help/help.c b/release/picobsd/tinyware/help/help.c
new file mode 100644
index 000000000000..b57b4f6f1557
--- /dev/null
+++ b/release/picobsd/tinyware/help/help.c
@@ -0,0 +1,157 @@
+/*-
+ * Copyright (c) 1998 Eric P. Scott <eps@sirius.com>
+ * Copyright (c) 1998 Andrzej Bialecki <abial@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$
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <ar.h>
+#include <sys/ioctl.h>
+
+int display(FILE *, const char *);
+
+static int cnt, crt=-1;
+
+int
+main(int argc, char *argv[])
+{
+ register int i, s;
+ FILE *fd;
+ struct ttysize ts;
+
+ if (!(fd=fopen("/help.a", "r"))) {
+ (void)fputs("Couldn't open help archive.\n", stderr);
+ exit(1);
+ }
+ cnt=0;
+ if (ioctl(fileno(stdout), TIOCGWINSZ, &ts)>=0) {
+ crt=ts.ts_lines-1;
+ }
+ if (crt<3) crt=23;
+ s=display(fd, argc>1 ? argv[1] : "help");
+ if (s<0) s=0;
+ else for (i=2;i<argc;) {
+ rewind(fd);
+ s|=display(fd, argv[i++]);
+ if (s<0) {
+ s=0;
+ break;
+ }
+ }
+ (void)fclose(fd);
+ exit(s);
+}
+
+int
+more(void)
+{
+ char buf[8];
+
+ (void)fflush(stdout);
+ (void)fputs("\033[7mPress Enter to continue\033[m", stderr);
+ (void)fflush(stderr);
+ cnt=0;
+ if (fgets(buf, sizeof buf, stdin)) return 0;
+ (void)fputc('\n', stderr);
+ return 1;
+}
+
+int
+display(FILE *fd, const char *fname)
+{
+ register char *p;
+ register int c, n, o;
+ struct ar_hdr ar;
+ char aname[20];
+
+ if (!fgets(aname, sizeof aname, fd)) {
+ return 1;
+ }
+ if (strncmp(aname, ARMAG, SARMAG)) return 1;
+ (void)snprintf(aname, sizeof(aname), "%s/", fname);
+ for (;;) {
+ if (fread((void *)&ar, sizeof ar, 1, fd)!=1) return 1;
+ if (strncmp(ar.ar_fmag, ARFMAG, 2)) return 1;
+ n=0;
+ p=ar.ar_size;
+ do {
+ if ((c=(int)(*p++-'0'))<0||c>9) break;
+ n*=10; n+=c;
+ } while (p<&ar.ar_size[sizeof ar.ar_size]);
+ if (!strncmp(ar.ar_name, aname, strlen(aname))) break;
+ if (fseek(fd, (long)n, SEEK_CUR)<0) return 1;
+ if ((n&1)&&fgetc(fd)!='\n') return 1;
+ }
+ if (cnt>=crt&&more()) return -1;
+ (void)fputc('\n', stdout);
+ cnt++;
+ o=0; while (o<n&&(c=fgetc(fd))!=EOF) {
+ per:
+ o++;
+ (void)fputc(c, stdout);
+ if (c!='\n') continue;
+ if (++cnt<crt) continue;
+ if (o>=n||(c=fgetc(fd))==EOF) break;
+ if (more()) return -1;
+ goto per;
+ }
+ if (cnt>=crt&&more()) return -1;
+ (void)fputc('\n', stdout);
+ cnt++;
+ if (!strcmp(fname, "help")) {
+ rewind(fd);
+ (void)fgets(aname, sizeof aname, fd);
+ if (cnt>=crt&&more()) return -1;
+ (void)fputs("The following help items are available:\n",
+ stdout);
+ cnt++;
+ o=0;
+ while (fread((void *)&ar, sizeof ar, 1, fd)==1) {
+ if (strncmp(ar.ar_fmag, ARFMAG, 2)) break;
+ if ((o%6)==0) {
+ (void)fputc('\n', stdout);
+ if (++cnt>=crt&&more()) return -1;
+ }
+ *(index(ar.ar_name,'/'))=' ';
+ (void)printf("%.13s", ar.ar_name);
+ ++o;
+ n=0;
+ p=ar.ar_size;
+ do {
+ if ((c=(int)(*p++-'0'))<0||c>9) break;
+ n*=10; n+=c;
+ } while (p<&ar.ar_size[sizeof ar.ar_size]);
+ if (fseek(fd, (long)n, SEEK_CUR)<0) break;
+ if ((n&1)&&fgetc(fd)!='\n') break;
+ }
+ if (cnt>=crt&&more()) return -1;
+ (void)fputc('\n', stdout);
+ cnt++;
+ }
+ return 0;
+}
diff --git a/release/picobsd/tinyware/msg/Makefile b/release/picobsd/tinyware/msg/Makefile
new file mode 100644
index 000000000000..840868872c5e
--- /dev/null
+++ b/release/picobsd/tinyware/msg/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+#
+PROG=msg
+SRCS= msg.c
+NOMAN=yes
+
+.include <bsd.prog.mk>
+
+
diff --git a/release/picobsd/tinyware/msg/README b/release/picobsd/tinyware/msg/README
new file mode 100644
index 000000000000..d26e38326a9e
--- /dev/null
+++ b/release/picobsd/tinyware/msg/README
@@ -0,0 +1,15 @@
+1998.09.14, Warsaw
+
+This program replaces 'dmesg' utility, aand allows you to retrieve the
+system's message buffer without resorting to such dirty tricks as normal
+'dmesg' uses (using libkvm and /dev/kmem to directly read kernel
+memory.. *shudder*).
+
+This utility uses sysctl(3) interface. The mib variable it uses was
+recently added to the kernel sources, so if you don't mind patching your
+kernel tree, contact me directly - the patches are very small and simple.
+
+Andrzej Bialecki
+<abial@freebsd.org>
+
+$FreeBSD$
diff --git a/release/picobsd/tinyware/msg/msg.c b/release/picobsd/tinyware/msg/msg.c
new file mode 100644
index 000000000000..1aa458cf11c4
--- /dev/null
+++ b/release/picobsd/tinyware/msg/msg.c
@@ -0,0 +1,74 @@
+/*-
+ * Copyright (c) 1998 Andrzej Bialecki <abial@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$
+ */
+
+/*
+ * Small replacement for 'dmesg'. It doesn't need libkvm nor /dev/kmem.
+ */
+
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
+int
+main(int argc, char *argv[])
+{
+ int len,i;
+ char *buf,*p;
+ char *mib="machdep.msgbuf";
+
+ /* We use sysctlbyname, because the oid is unknown (OID_AUTO) */
+
+ /* get the buffer size */
+ i=sysctlbyname(mib,NULL,&len,NULL,NULL);
+ if(i) {
+ perror("buffer sizing");
+ exit(-1);
+ }
+ buf=(char *)malloc(len*sizeof(char));
+ i=sysctlbyname(mib,buf,&len,NULL,NULL);
+ if(i) {
+ perror("retrieving data");
+ exit(-1);
+ }
+ p=buf;
+ i=0;
+ while(p<(buf+len)) {
+ switch(*p) {
+ case '\0':
+ /* skip initial NULLs */
+ break;
+ default:
+ putchar(*p);
+ }
+ p++;
+ }
+ if(*--p!='\n') putchar('\n');
+ free(buf);
+ exit(0);
+}
diff --git a/release/picobsd/tinyware/msh/Makefile b/release/picobsd/tinyware/msh/Makefile
new file mode 100644
index 000000000000..e1a1b541ca35
--- /dev/null
+++ b/release/picobsd/tinyware/msh/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+#
+PROG=msh
+SRCS= sh1.c sh2.c sh3.c sh4.c sh5.c sh6.c
+
+.include <bsd.prog.mk>
+
+
diff --git a/release/picobsd/tinyware/msh/README b/release/picobsd/tinyware/msh/README
new file mode 100644
index 000000000000..1b95b8271c8a
--- /dev/null
+++ b/release/picobsd/tinyware/msh/README
@@ -0,0 +1,13 @@
+This is a port of Minix /bin/sh shell.
+
+It's quite limited, but also quite small. One of most serious
+limitations is lack of support for user-defined functions. Also,
+globbing should be implemented with our glob(3) - the version in
+sh4.c is rather primitive.
+
+This version is under BSD license.
+
+Andrzej Bialecki
+<abial@FreeBSD.org>
+
+$Id$
diff --git a/release/picobsd/tinyware/msh/msh.1 b/release/picobsd/tinyware/msh/msh.1
new file mode 100644
index 000000000000..f19bce02cb7a
--- /dev/null
+++ b/release/picobsd/tinyware/msh/msh.1
@@ -0,0 +1,261 @@
+.TH SH 1
+.SH NAME
+sh, ., break, case, cd, continue, eval, exec, exit, export, for, if, read, readonly, set, shift, trap, umask, wait, while \- shell
+.SH SYNOPSIS
+\fBsh\fR [\fB\-eiknqstvxu\fR] [\fB\-c \fIstr\fR] \fB[\fIfile\fR]\fR
+.br
+.de FL
+.TP
+\\fB\\$1\\fR
+\\$2
+..
+.de EX
+.TP 20
+\\fB\\$1\\fR
+# \\$2
+..
+.SH OPTIONS
+.FL "\-c" "Execute the commands in \fIstr\fR"
+.FL "\-e" "Quit on error"
+.FL "\-i" "Interactive mode; ignore QUIT, TERMINATE, INTERRUPT"
+.FL "\-k" "Look for name=value everywhere on command line"
+.FL "\-n" "Do not execute commands"
+.FL "\-q" "Change qflag from sig_ign to sig_del"
+.FL "\-s" "Read commands from standard input"
+.FL "\-t" "Exit after reading and executing one command"
+.FL "\-v" "Echo input lines as they are read"
+.FL "\-x" "Trace"
+.FL "\-u" "Unset variables"
+.SH EXAMPLES
+.EX "sh script" "Run a shell script"
+.SH DESCRIPTION
+.PP
+.I Sh
+is the shell, which forms the user's main interface with the system.
+On startup, the shell reads /etc/profile and $HOME/.profile, if they exist,
+and executes any commands they contain. The Minix shell has most of the
+features of the V7 (Bourne) shell, including redirection of input and output,
+pipes, magic characters, background processes, and shell scripts. A brief
+summary follows, but whole books have been written on shell programming alone.
+.LP
+Some of the more common notations are:
+.PP
+.in +2.45i
+.ta 2i 2.2i
+.ti -2.2i
+date # Regular command
+.ti -2.2i
+sort <file # Redirect \fIstdin\fR (standard input)
+.ti -2.2i
+sort <file1 >file2 # Redirect \fIstdin\fR and \fIstdout\fR
+.ti -2.2i
+cc file.c 2>error # Redirect \fIstderr\fR
+.ti -2.2i
+a.out >f 2>&1 # Combine standard output and standard error
+.ti -2.2i
+sort <file1 >>file2 # Append output to \fIfile2\fR
+.ti -2.2i
+sort <file1 >file2 & # Background job
+.ti -2.2i
+(ls \-l; a.out) & # Run two background commands sequentially
+.ti -2.2i
+sort <file | wc # Two-process pipeline
+.ti -2.2i
+sort <f | uniq | wc # Three-process pipeline
+.ti -2.2i
+ls \-l *.c # List all files ending in \fI.c\fR
+.ti -2.2i
+ls \-l [\fIa-c\fR]* # List all files beginning with \fIa\fR, \fIb\fR, or \fIc\fR
+.ti -2.2i
+ls \-l ? # List all one-character file names
+.ti -2.2i
+ls \e? # List the file whose name is question mark
+.ti -2.2i
+ls \(fm???\(fm # List the file whose name is three question marks
+.ti -2.2i
+v=/usr/ast # Set shell variable \fIv\fR
+.ti -2.2i
+ls \-l $v # Use shell variable \fIv\fR
+.ti -2.2i
+PS1=\(fmHi! \(fm # Change the primary prompt to \fIHi!\fR
+.ti -2.2i
+PS2=\(fmMore: \(fm # Change the secondary prompt to \fIMore:\fR
+.ti -2.2i
+ls \-l $HOME # List the home directory
+.ti -2.2i
+echo $PATH # Echo the search path
+.ti -2.2i
+echo $? # Echo exit status of previous command in decimal
+.ti -2.2i
+echo $$ # Echo shell's pid in decimal
+.ti -2.2i
+echo $! # Echo PID of last background process
+.ti -2.2i
+echo $# # Echo number of parameters (shell script)
+.ti -2.2i
+echo $2 # Echo second parameter (shell script)
+.ti -2.2i
+echo "$2" # Echo second parameter without expanding spaces
+.ti -2.2i
+echo $* # Echo all parameters (shell script)
+.ti -2.2i
+echo $@ # Echo all parameters (shell script)
+.ti -2.2i
+echo "$@" # Echo all parameters without expanding spaces
+.in -2.45i
+.LP
+The shell uses the following variables for specific purposes:
+.PP
+.in +2.25i
+.ta 2i
+.ti -2i
+SHELL the path of the current shell
+.ti -2i
+HOME the default value for the cd(1) command
+.ti -2i
+PATH the directories to be searched to find commands
+.ti -2i
+IFS the internal field separators for command strings
+.ti -2i
+PS1 the primary shell prompt
+.ti -2i
+PS2 the secondary shell prompt
+.in -2.25i
+.LP
+There are various forms of substitution on the shell command line:
+.PP
+.in +2.25i
+.ta 2i
+.ti -2i
+`...` Command string between back-quotes is replaced by its output
+.ti -2i
+"..." Permits variable substitution between quotes
+.ti -2i
+\&'...' Inhibits variable substitution between quotes
+.ti -2i
+$VAR Replaced by contents of variable VAR
+.ti -2i
+${VAR} Delimits variable VAR from any following string
+.in -2.25i
+.LP
+The expressions below depend on whether or not VAR has ever been set.
+If VAR has been set, they give:
+.PP
+.in +2.25i
+.ta 2i
+.ti -2i
+${VAR-str} Replace expression by VAR, else by str
+.ti -2i
+${VAR=str} Replace expression by VAR, else by str and set VAR to str
+.ti -2i
+${VAR?str} Replace expression by VAR, else print str and exit shell
+.ti -2i
+${VAR+str} Replace expression by str, else by null string
+.in -2.25i
+.LP
+If a colon is placed after VAR, the expressions depend on whether or not
+VAR is currently set and non-null.
+.LP
+The shell has a number of built-in commands:
+.PP
+.in +2.25i
+.ta 2i
+.ti -2i
+: return true status
+.ti -2i
+\&. fn execute shell script fn on current path
+.ti -2i
+break [n] break from a for, until or while loop; exit n levels
+.ti -2i
+continue [n] continue a for, until or while loop; resume nth loop
+.ti -2i
+cd [dir] change current working directory; move to $HOME
+.ti -2i
+eval cmd rescan cmd, performing substitutions
+.ti -2i
+eval rescan the current command line
+.ti -2i
+exec cmd execute cmd without creating a new process
+.ti -2i
+exec <|> with no command name, modify shell I/O
+.ti -2i
+exit [n] exit a shell program, with exit value n
+.ti -2i
+export [var] export var to shell's children; list exported variables
+.ti -2i
+pwd print the name of the current working directory
+.ti -2i
+read var read a line from stdin and assign to var
+.ti -2i
+readonly [var] make var readonly; list readonly variables
+.ti -2i
+set -f set shell flag (+f unsets flag)
+.ti -2i
+set str set positional parameter to str
+.ti -2i
+set show the current shell variables
+.ti -2i
+shift reassign positional parameters (except ${0}) one left
+.ti -2i
+times print accumulated user and system times for processes
+.ti -2i
+trap arg sigs trap signals sigs and run arg on receipt
+.ti -2i
+trap list trapped signals
+.ti -2i
+umask [n] set the user file creation mask; show the current umask
+.ti -2i
+wait [n] wait for process pid n; wait for all processes
+.in -2.25i
+.LP
+The shell also contains a programming language, which has the following
+operators and flow control statements:
+.PP
+.in +3.50i
+.ta 2i 3.25i
+.ti -3.25i
+# Comment The rest of the line is ignored
+.ti -3.25i
+= Assignment Set a shell variable
+.ti -3.25i
+&& Logical AND Execute second command only if first succeeds
+.ti -3.25i
+|| Logical OR Execute second command only if first fails
+.ti -3.25i
+(...) Group Execute enclosed commands before continuing
+.in -3.50i
+.PP
+.in +2.25i
+.ta 2i
+.ti -2i
+for For loop (for ... in ... do ... done)
+.ti -2i
+case Case statement ((case ... ) ... ;; ... esac)
+.ti -2i
+esac Case statement end
+.ti -2i
+while While loop (while ... do ... done)
+.ti -2i
+do Do/For/While loop start (do ... until ...)
+.ti -2i
+done For/While loop end
+.ti -2i
+if Conditional statement (if ... else ... elif ... fi)
+.ti -2i
+in For loop selection
+.ti -2i
+then Conditional statement start
+.ti -2i
+else Conditional statement alternative
+.ti -2i
+elif Conditional statement end
+.ti -2i
+until Do loop end
+.ti -2i
+fi Conditional statement end
+.in -2.25i
+.SH "SEE ALSO"
+.BR echo (1),
+.BR expr (1),
+.BR pwd (1),
+.BR true (1).
diff --git a/release/picobsd/tinyware/msh/sh.h b/release/picobsd/tinyware/msh/sh.h
new file mode 100644
index 000000000000..223761eb18c7
--- /dev/null
+++ b/release/picobsd/tinyware/msh/sh.h
@@ -0,0 +1,388 @@
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+/* Need a way to have void used for ANSI, nothing for K&R. */
+#ifndef _ANSI
+#undef _VOID
+#define _VOID
+#endif
+
+/* -------- sh.h -------- */
+/*
+ * shell
+ */
+
+#define LINELIM 2100
+#define NPUSH 8 /* limit to input nesting */
+
+#define NOFILE 20 /* Number of open files */
+#define NUFILE 10 /* Number of user-accessible files */
+#define FDBASE 10 /* First file usable by Shell */
+
+/*
+ * values returned by wait
+ */
+#define WAITSIG(s) ((s)&0177)
+#define WAITVAL(s) (((s)>>8)&0377)
+#define WAITCORE(s) (((s)&0200)!=0)
+
+/*
+ * library and system defintions
+ */
+#ifdef __STDC__
+typedef void xint; /* base type of jmp_buf, for not broken compilers */
+#else
+typedef char * xint; /* base type of jmp_buf, for broken compilers */
+#endif
+
+/*
+ * shell components
+ */
+/* #include "area.h" */
+/* #include "word.h" */
+/* #include "io.h" */
+/* #include "var.h" */
+
+#define QUOTE 0200
+
+#define NOBLOCK ((struct op *)NULL)
+#define NOWORD ((char *)NULL)
+#define NOWORDS ((char **)NULL)
+#define NOPIPE ((int *)NULL)
+
+/*
+ * Description of a command or an operation on commands.
+ * Might eventually use a union.
+ */
+struct op {
+ int type; /* operation type, see below */
+ char **words; /* arguments to a command */
+ struct ioword **ioact; /* IO actions (eg, < > >>) */
+ struct op *left;
+ struct op *right;
+ char *str; /* identifier for case and for */
+};
+
+#define TCOM 1 /* command */
+#define TPAREN 2 /* (c-list) */
+#define TPIPE 3 /* a | b */
+#define TLIST 4 /* a [&;] b */
+#define TOR 5 /* || */
+#define TAND 6 /* && */
+#define TFOR 7
+#define TDO 8
+#define TCASE 9
+#define TIF 10
+#define TWHILE 11
+#define TUNTIL 12
+#define TELIF 13
+#define TPAT 14 /* pattern in case */
+#define TBRACE 15 /* {c-list} */
+#define TASYNC 16 /* c & */
+
+/*
+ * actions determining the environment of a process
+ */
+#define BIT(i) (1<<(i))
+#define FEXEC BIT(0) /* execute without forking */
+
+/*
+ * flags to control evaluation of words
+ */
+#define DOSUB 1 /* interpret $, `, and quotes */
+#define DOBLANK 2 /* perform blank interpretation */
+#define DOGLOB 4 /* interpret [?* */
+#define DOKEY 8 /* move words with `=' to 2nd arg. list */
+#define DOTRIM 16 /* trim resulting string */
+
+#define DOALL (DOSUB|DOBLANK|DOGLOB|DOKEY|DOTRIM)
+
+Extern char **dolv;
+Extern int dolc;
+Extern int exstat;
+Extern char gflg;
+Extern int talking; /* interactive (talking-type wireless) */
+Extern int execflg;
+Extern int multiline; /* \n changed to ; */
+Extern struct op *outtree; /* result from parser */
+
+Extern xint *failpt;
+Extern xint *errpt;
+
+struct brkcon {
+ jmp_buf brkpt;
+ struct brkcon *nextlev;
+} ;
+Extern struct brkcon *brklist;
+Extern int isbreak;
+
+/*
+ * redirection
+ */
+struct ioword {
+ short io_unit; /* unit affected */
+ short io_flag; /* action (below) */
+ char *io_name; /* file name */
+};
+#define IOREAD 1 /* < */
+#define IOHERE 2 /* << (here file) */
+#define IOWRITE 4 /* > */
+#define IOCAT 8 /* >> */
+#define IOXHERE 16 /* ${}, ` in << */
+#define IODUP 32 /* >&digit */
+#define IOCLOSE 64 /* >&- */
+
+#define IODEFAULT (-1) /* token for default IO unit */
+
+Extern struct wdblock *wdlist;
+Extern struct wdblock *iolist;
+
+/*
+ * parsing & execution environment
+ */
+extern struct env {
+ char *linep;
+ struct io *iobase;
+ struct io *iop;
+ xint *errpt;
+ int iofd;
+ struct env *oenv;
+} e;
+
+/*
+ * flags:
+ * -e: quit on error
+ * -k: look for name=value everywhere on command line
+ * -n: no execution
+ * -t: exit after reading and executing one command
+ * -v: echo as read
+ * -x: trace
+ * -u: unset variables net diagnostic
+ */
+extern char *flag;
+
+extern char *null; /* null value for variable */
+extern int intr; /* interrupt pending */
+
+Extern char *trap[_NSIG+1];
+Extern char ourtrap[_NSIG+1];
+Extern int trapset; /* trap pending */
+
+extern int heedint; /* heed interrupt signals */
+
+Extern int yynerrs; /* yacc */
+
+Extern char line[LINELIM];
+extern char *elinep;
+
+/*
+ * other functions
+ */
+#ifdef __STDC__
+int (*inbuilt(char *s ))(void);
+#else
+int (*inbuilt())();
+#endif
+
+#ifdef __FreeBSD__
+#define _PROTOTYPE(x,y) x ## y
+#endif
+
+_PROTOTYPE(char *rexecve , (char *c , char **v , char **envp ));
+_PROTOTYPE(char *space , (int n ));
+_PROTOTYPE(char *strsave , (char *s , int a ));
+_PROTOTYPE(char *evalstr , (char *cp , int f ));
+_PROTOTYPE(char *putn , (int n ));
+_PROTOTYPE(char *itoa , (unsigned u , int n ));
+_PROTOTYPE(char *unquote , (char *as ));
+_PROTOTYPE(struct var *lookup , (char *n ));
+_PROTOTYPE(int rlookup , (char *n ));
+_PROTOTYPE(struct wdblock *glob , (char *cp , struct wdblock *wb ));
+_PROTOTYPE(int subgetc , (int ec , int quoted ));
+_PROTOTYPE(char **makenv , (void));
+_PROTOTYPE(char **eval , (char **ap , int f ));
+_PROTOTYPE(int setstatus , (int s ));
+_PROTOTYPE(int waitfor , (int lastpid , int canintr ));
+
+_PROTOTYPE(void onintr , (int s )); /* SIGINT handler */
+
+_PROTOTYPE(int newenv , (int f ));
+_PROTOTYPE(void quitenv , (void));
+_PROTOTYPE(void err , (char *s ));
+_PROTOTYPE(int anys , (char *s1 , char *s2 ));
+_PROTOTYPE(int any , (int c , char *s ));
+_PROTOTYPE(void next , (int f ));
+_PROTOTYPE(void setdash , (void));
+_PROTOTYPE(void onecommand , (void));
+_PROTOTYPE(void runtrap , (int i ));
+_PROTOTYPE(void xfree , (char *s ));
+_PROTOTYPE(int letter , (int c ));
+_PROTOTYPE(int digit , (int c ));
+_PROTOTYPE(int letnum , (int c ));
+_PROTOTYPE(int gmatch , (char *s , char *p ));
+
+/*
+ * error handling
+ */
+_PROTOTYPE(void leave , (void)); /* abort shell (or fail in subshell) */
+_PROTOTYPE(void fail , (void)); /* fail but return to process next command */
+_PROTOTYPE(void warn , (char *s ));
+_PROTOTYPE(void sig , (int i )); /* default signal handler */
+
+/* -------- var.h -------- */
+
+struct var {
+ char *value;
+ char *name;
+ struct var *next;
+ char status;
+};
+#define COPYV 1 /* flag to setval, suggesting copy */
+#define RONLY 01 /* variable is read-only */
+#define EXPORT 02 /* variable is to be exported */
+#define GETCELL 04 /* name & value space was got with getcell */
+
+Extern struct var *vlist; /* dictionary */
+
+Extern struct var *homedir; /* home directory */
+Extern struct var *prompt; /* main prompt */
+Extern struct var *cprompt; /* continuation prompt */
+Extern struct var *path; /* search path for commands */
+Extern struct var *shell; /* shell to interpret command files */
+Extern struct var *ifs; /* field separators */
+
+_PROTOTYPE(int yyparse , (void));
+_PROTOTYPE(struct var *lookup , (char *n ));
+_PROTOTYPE(void setval , (struct var *vp , char *val ));
+_PROTOTYPE(void nameval , (struct var *vp , char *val , char *name ));
+_PROTOTYPE(void export , (struct var *vp ));
+_PROTOTYPE(void ronly , (struct var *vp ));
+_PROTOTYPE(int isassign , (char *s ));
+_PROTOTYPE(int checkname , (char *cp ));
+_PROTOTYPE(int assign , (char *s , int cf ));
+_PROTOTYPE(void putvlist , (int f , int out ));
+_PROTOTYPE(int eqname , (char *n1 , char *n2 ));
+
+_PROTOTYPE(int execute , (struct op *t , int *pin , int *pout , int act ));
+
+/* -------- io.h -------- */
+/* io buffer */
+struct iobuf {
+ unsigned id; /* buffer id */
+ char buf[512]; /* buffer */
+ char *bufp; /* pointer into buffer */
+ char *ebufp; /* pointer to end of buffer */
+};
+
+/* possible arguments to an IO function */
+struct ioarg {
+ char *aword;
+ char **awordlist;
+ int afile; /* file descriptor */
+ unsigned afid; /* buffer id */
+ long afpos; /* file position */
+ struct iobuf *afbuf; /* buffer for this file */
+};
+Extern struct ioarg ioargstack[NPUSH];
+#define AFID_NOBUF (~0)
+#define AFID_ID 0
+
+/* an input generator's state */
+struct io {
+ int (*iofn)(_VOID);
+ struct ioarg *argp;
+ int peekc;
+ char prev; /* previous character read by readc() */
+ char nlcount; /* for `'s */
+ char xchar; /* for `'s */
+ char task; /* reason for pushed IO */
+};
+Extern struct io iostack[NPUSH];
+#define XOTHER 0 /* none of the below */
+#define XDOLL 1 /* expanding ${} */
+#define XGRAVE 2 /* expanding `'s */
+#define XIO 3 /* file IO */
+
+/* in substitution */
+#define INSUB() (e.iop->task == XGRAVE || e.iop->task == XDOLL)
+
+/*
+ * input generators for IO structure
+ */
+_PROTOTYPE(int nlchar , (struct ioarg *ap ));
+_PROTOTYPE(int strchar , (struct ioarg *ap ));
+_PROTOTYPE(int qstrchar , (struct ioarg *ap ));
+_PROTOTYPE(int filechar , (struct ioarg *ap ));
+_PROTOTYPE(int herechar , (struct ioarg *ap ));
+_PROTOTYPE(int linechar , (struct ioarg *ap ));
+_PROTOTYPE(int gravechar , (struct ioarg *ap , struct io *iop ));
+_PROTOTYPE(int qgravechar , (struct ioarg *ap , struct io *iop ));
+_PROTOTYPE(int dolchar , (struct ioarg *ap ));
+_PROTOTYPE(int wdchar , (struct ioarg *ap ));
+_PROTOTYPE(void scraphere , (void));
+_PROTOTYPE(void freehere , (int area ));
+_PROTOTYPE(void gethere , (void));
+_PROTOTYPE(void markhere , (char *s , struct ioword *iop ));
+_PROTOTYPE(int herein , (char *hname , int xdoll ));
+_PROTOTYPE(int run , (struct ioarg *argp , int (*f)(_VOID)));
+
+/*
+ * IO functions
+ */
+_PROTOTYPE(int eofc , (void));
+_PROTOTYPE(int getc , (int ec ));
+_PROTOTYPE(int readc , (void));
+_PROTOTYPE(void unget , (int c ));
+_PROTOTYPE(void ioecho , (int c ));
+_PROTOTYPE(void prs , (char *s ));
+_PROTOTYPE(void putc , (int c ));
+_PROTOTYPE(void prn , (unsigned u ));
+_PROTOTYPE(void closef , (int i ));
+_PROTOTYPE(void closeall , (void));
+
+/*
+ * IO control
+ */
+_PROTOTYPE(void pushio , (struct ioarg *argp , int (*fn)(_VOID)));
+_PROTOTYPE(int remap , (int fd ));
+_PROTOTYPE(int openpipe , (int *pv ));
+_PROTOTYPE(void closepipe , (int *pv ));
+_PROTOTYPE(struct io *setbase , (struct io *ip ));
+
+extern struct ioarg temparg; /* temporary for PUSHIO */
+#define PUSHIO(what,arg,gen) ((temparg.what = (arg)),pushio(&temparg,(gen)))
+#define RUN(what,arg,gen) ((temparg.what = (arg)), run(&temparg,(gen)))
+
+/* -------- word.h -------- */
+#ifndef WORD_H
+#define WORD_H 1
+struct wdblock {
+ short w_bsize;
+ short w_nword;
+ /* bounds are arbitrary */
+ char *w_words[1];
+};
+
+_PROTOTYPE(struct wdblock *addword , (char *wd , struct wdblock *wb ));
+_PROTOTYPE(struct wdblock *newword , (int nw ));
+_PROTOTYPE(char **getwords , (struct wdblock *wb ));
+#endif
+
+/* -------- area.h -------- */
+
+/*
+ * storage allocation
+ */
+_PROTOTYPE(char *getcell , (unsigned nbytes ));
+_PROTOTYPE(void garbage , (void));
+_PROTOTYPE(void setarea , (char *cp , int a ));
+_PROTOTYPE(int getarea , (char *cp ));
+_PROTOTYPE(void freearea , (int a ));
+_PROTOTYPE(void freecell , (char *cp ));
+
+Extern int areanum; /* current allocation area */
+
+#define NEW(type) (type *)getcell(sizeof(type))
+#define DELETE(obj) freecell((char *)obj)
diff --git a/release/picobsd/tinyware/msh/sh1.c b/release/picobsd/tinyware/msh/sh1.c
new file mode 100644
index 000000000000..34b024df9c51
--- /dev/null
+++ b/release/picobsd/tinyware/msh/sh1.c
@@ -0,0 +1,953 @@
+#define Extern extern
+#include <sys/types.h>
+#include <signal.h>
+#define _NSIG NSIG
+#include <errno.h>
+#include <setjmp.h>
+#include "sh.h"
+/* -------- sh.c -------- */
+/*
+ * shell
+ */
+
+/* #include "sh.h" */
+
+int intr;
+int inparse;
+char flags['z'-'a'+1];
+char *flag = flags-'a';
+char *elinep = line+sizeof(line)-5;
+char *null = "";
+int heedint =1;
+struct env e ={line, iostack, iostack-1,
+ (xint *)NULL, FDBASE, (struct env *)NULL};
+
+extern char **environ; /* environment pointer */
+
+/*
+ * default shell, search rules
+ */
+char shellname[] = "/bin/sh";
+char search[] = ":/bin:/usr/bin";
+
+_PROTOTYPE(void (*qflag), (int)) = SIG_IGN;
+
+_PROTOTYPE(int main, (int argc, char **argv ));
+_PROTOTYPE(int newfile, (char *s ));
+_PROTOTYPE(static char *findeq, (char *cp ));
+_PROTOTYPE(static char *cclass, (char *p, int sub ));
+_PROTOTYPE(void initarea, (void));
+
+int main(argc, argv)
+int argc;
+register char **argv;
+{
+ register int f;
+ register char *s;
+ int cflag;
+ char *name, **ap;
+ int (*iof)();
+
+ initarea();
+ if ((ap = environ) != NULL) {
+ while (*ap)
+ assign(*ap++, !COPYV);
+ for (ap = environ; *ap;)
+ export(lookup(*ap++));
+ }
+ closeall();
+ areanum = 1;
+
+ shell = lookup("SHELL");
+ if (shell->value == null)
+ setval(shell, shellname);
+ export(shell);
+
+ homedir = lookup("HOME");
+ if (homedir->value == null)
+ setval(homedir, "/");
+ export(homedir);
+
+ setval(lookup("$"), itoa(getpid(), 5));
+
+ path = lookup("PATH");
+ if (path->value == null)
+ setval(path, search);
+ export(path);
+
+ ifs = lookup("IFS");
+ if (ifs->value == null)
+ setval(ifs, " \t\n");
+
+ prompt = lookup("PS1");
+ if (prompt->value == null)
+#ifndef UNIXSHELL
+ setval(prompt, "$ ");
+#else
+ setval(prompt, "% ");
+#endif
+
+ if (geteuid() == 0) {
+ setval(prompt, "# ");
+ prompt->status &= ~EXPORT;
+ }
+ cprompt = lookup("PS2");
+ if (cprompt->value == null)
+ setval(cprompt, "> ");
+
+ iof = filechar;
+ cflag = 0;
+ name = *argv++;
+ if (--argc >= 1) {
+ if(argv[0][0] == '-' && argv[0][1] != '\0') {
+ for (s = argv[0]+1; *s; s++)
+ switch (*s) {
+ case 'c':
+ prompt->status &= ~EXPORT;
+ cprompt->status &= ~EXPORT;
+ setval(prompt, "");
+ setval(cprompt, "");
+ cflag = 1;
+ if (--argc > 0)
+ PUSHIO(aword, *++argv, iof = nlchar);
+ break;
+
+ case 'q':
+ qflag = SIG_DFL;
+ break;
+
+ case 's':
+ /* standard input */
+ break;
+
+ case 't':
+ prompt->status &= ~EXPORT;
+ setval(prompt, "");
+ iof = linechar;
+ break;
+
+ case 'i':
+ talking++;
+ default:
+ if (*s>='a' && *s<='z')
+ flag[*s]++;
+ }
+ } else {
+ argv--;
+ argc++;
+ }
+ if (iof == filechar && --argc > 0) {
+ setval(prompt, "");
+ setval(cprompt, "");
+ prompt->status &= ~EXPORT;
+ cprompt->status &= ~EXPORT;
+ if (newfile(name = *++argv))
+ exit(1);
+ }
+ }
+ setdash();
+ if (e.iop < iostack) {
+ PUSHIO(afile, 0, iof);
+ if (isatty(0) && isatty(1) && !cflag)
+ talking++;
+ }
+ signal(SIGQUIT, qflag);
+ if (name && name[0] == '-') {
+ talking++;
+ if ((f = open(".profile", 0)) >= 0)
+ next(remap(f));
+ if ((f = open("/etc/profile", 0)) >= 0)
+ next(remap(f));
+ }
+ if (talking)
+ signal(SIGTERM, sig);
+ if (signal(SIGINT, SIG_IGN) != SIG_IGN)
+ signal(SIGINT, onintr);
+ dolv = argv;
+ dolc = argc;
+ dolv[0] = name;
+ if (dolc > 1)
+ for (ap = ++argv; --argc > 0;)
+ if (assign(*ap = *argv++, !COPYV))
+ dolc--; /* keyword */
+ else
+ ap++;
+ setval(lookup("#"), putn((--dolc < 0) ? (dolc = 0) : dolc));
+
+ for (;;) {
+ if (talking && e.iop <= iostack)
+ prs(prompt->value);
+ onecommand();
+ }
+}
+
+void
+setdash()
+{
+ register char *cp, c;
+ char m['z'-'a'+1];
+
+ cp = m;
+ for (c='a'; c<='z'; c++)
+ if (flag[c])
+ *cp++ = c;
+ *cp = 0;
+ setval(lookup("-"), m);
+}
+
+int
+newfile(s)
+register char *s;
+{
+ register f;
+
+ if (strcmp(s, "-") != 0) {
+ f = open(s, 0);
+ if (f < 0) {
+ prs(s);
+ err(": cannot open");
+ return(1);
+ }
+ } else
+ f = 0;
+ next(remap(f));
+ return(0);
+}
+
+void
+onecommand()
+{
+ register i;
+ jmp_buf m1;
+
+ while (e.oenv)
+ quitenv();
+ areanum = 1;
+ freehere(areanum);
+ freearea(areanum);
+ garbage();
+ wdlist = 0;
+ iolist = 0;
+ e.errpt = 0;
+ e.linep = line;
+ yynerrs = 0;
+ multiline = 0;
+ inparse = 1;
+ intr = 0;
+ execflg = 0;
+ setjmp(failpt = m1); /* Bruce Evans' fix */
+ if (setjmp(failpt = m1) || yyparse() || intr) {
+ while (e.oenv)
+ quitenv();
+ scraphere();
+ if (!talking && intr)
+ leave();
+ inparse = 0;
+ intr = 0;
+ return;
+ }
+ inparse = 0;
+ brklist = 0;
+ intr = 0;
+ execflg = 0;
+ if (!flag['n'])
+ execute(outtree, NOPIPE, NOPIPE, 0);
+ if (!talking && intr) {
+ execflg = 0;
+ leave();
+ }
+ if ((i = trapset) != 0) {
+ trapset = 0;
+ runtrap(i);
+ }
+}
+
+void
+fail()
+{
+ longjmp(failpt, 1);
+ /* NOTREACHED */
+}
+
+void
+leave()
+{
+ if (execflg)
+ fail();
+ scraphere();
+ freehere(1);
+ runtrap(0);
+ exit(exstat);
+ /* NOTREACHED */
+}
+
+void
+warn(s)
+register char *s;
+{
+ if(*s) {
+ prs(s);
+ exstat = -1;
+ }
+ prs("\n");
+ if (flag['e'])
+ leave();
+}
+
+void
+err(s)
+char *s;
+{
+ warn(s);
+ if (flag['n'])
+ return;
+ if (!talking)
+ leave();
+ if (e.errpt)
+ longjmp(e.errpt, 1);
+ closeall();
+ e.iop = e.iobase = iostack;
+}
+
+int
+newenv(f)
+int f;
+{
+ register struct env *ep;
+
+ if (f) {
+ quitenv();
+ return(1);
+ }
+ ep = (struct env *) space(sizeof(*ep));
+ if (ep == NULL) {
+ while (e.oenv)
+ quitenv();
+ fail();
+ }
+ *ep = e;
+ e.oenv = ep;
+ e.errpt = errpt;
+ return(0);
+}
+
+void
+quitenv()
+{
+ register struct env *ep;
+ register fd;
+
+ if ((ep = e.oenv) != NULL) {
+ fd = e.iofd;
+ e = *ep;
+ /* should close `'d files */
+ DELETE(ep);
+ while (--fd >= e.iofd)
+ close(fd);
+ }
+}
+
+/*
+ * Is any character from s1 in s2?
+ */
+int
+anys(s1, s2)
+register char *s1, *s2;
+{
+ while (*s1)
+ if (any(*s1++, s2))
+ return(1);
+ return(0);
+}
+
+/*
+ * Is character c in s?
+ */
+int
+any(c, s)
+register int c;
+register char *s;
+{
+ while (*s)
+ if (*s++ == c)
+ return(1);
+ return(0);
+}
+
+char *
+putn(n)
+register int n;
+{
+ return(itoa(n, -1));
+}
+
+char *
+itoa(u, n)
+register unsigned u;
+int n;
+{
+ register char *cp;
+ static char s[20];
+ int m;
+
+ m = 0;
+ if (n < 0 && (int) u < 0) {
+ m++;
+ u = -u;
+ }
+ cp = s+sizeof(s);
+ *--cp = 0;
+ do {
+ *--cp = u%10 + '0';
+ u /= 10;
+ } while (--n > 0 || u);
+ if (m)
+ *--cp = '-';
+ return(cp);
+}
+
+void
+next(f)
+int f;
+{
+ PUSHIO(afile, f, filechar);
+}
+
+void
+onintr(s)
+int s; /* ANSI C requires a parameter */
+{
+ signal(SIGINT, onintr);
+ intr = 1;
+ if (talking) {
+ if (inparse) {
+ prs("\n");
+ fail();
+ }
+ }
+ else if (heedint) {
+ execflg = 0;
+ leave();
+ }
+}
+
+int
+letter(c)
+register c;
+{
+ return((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_');
+}
+
+int
+digit(c)
+register c;
+{
+ return(c >= '0' && c <= '9');
+}
+
+int
+letnum(c)
+register c;
+{
+ return(letter(c) || digit(c));
+}
+
+char *
+space(n)
+int n;
+{
+ register char *cp;
+
+ if ((cp = getcell(n)) == 0)
+ err("out of string space");
+ return(cp);
+}
+
+char *
+strsave(s, a)
+register char *s;
+int a;
+{
+ register char *cp, *xp;
+
+ if ((cp = space(strlen(s)+1)) != NULL) {
+ setarea((char *)cp, a);
+ for (xp = cp; (*xp++ = *s++) != '\0';)
+ ;
+ return(cp);
+ }
+ return("");
+}
+
+void
+xfree(s)
+register char *s;
+{
+ DELETE(s);
+}
+
+/*
+ * trap handling
+ */
+void
+sig(i)
+register int i;
+{
+ trapset = i;
+ signal(i, sig);
+}
+
+void runtrap(i)
+int i;
+{
+ char *trapstr;
+
+ if ((trapstr = trap[i]) == NULL)
+ return;
+ if (i == 0)
+ trap[i] = 0;
+ RUN(aword, trapstr, nlchar);
+}
+
+/* -------- var.c -------- */
+/* #include "sh.h" */
+
+/*
+ * Find the given name in the dictionary
+ * and return its value. If the name was
+ * not previously there, enter it now and
+ * return a null value.
+ */
+struct var *
+lookup(n)
+register char *n;
+{
+ register struct var *vp;
+ register char *cp;
+ register int c;
+ static struct var dummy;
+
+ if (digit(*n)) {
+ dummy.name = n;
+ for (c = 0; digit(*n) && c < 1000; n++)
+ c = c*10 + *n-'0';
+ dummy.status = RONLY;
+ dummy.value = c <= dolc? dolv[c]: null;
+ return(&dummy);
+ }
+ for (vp = vlist; vp; vp = vp->next)
+ if (eqname(vp->name, n))
+ return(vp);
+ cp = findeq(n);
+ vp = (struct var *)space(sizeof(*vp));
+ if (vp == 0 || (vp->name = space((int)(cp-n)+2)) == 0) {
+ dummy.name = dummy.value = "";
+ return(&dummy);
+ }
+ for (cp = vp->name; (*cp = *n++) && *cp != '='; cp++)
+ ;
+ if (*cp == 0)
+ *cp = '=';
+ *++cp = 0;
+ setarea((char *)vp, 0);
+ setarea((char *)vp->name, 0);
+ vp->value = null;
+ vp->next = vlist;
+ vp->status = GETCELL;
+ vlist = vp;
+ return(vp);
+}
+
+/*
+ * give variable at `vp' the value `val'.
+ */
+void
+setval(vp, val)
+struct var *vp;
+char *val;
+{
+ nameval(vp, val, (char *)NULL);
+}
+
+/*
+ * if name is not NULL, it must be
+ * a prefix of the space `val',
+ * and end with `='.
+ * this is all so that exporting
+ * values is reasonably painless.
+ */
+void
+nameval(vp, val, name)
+register struct var *vp;
+char *val, *name;
+{
+ register char *cp, *xp;
+ char *nv;
+ int fl;
+
+ if (vp->status & RONLY) {
+ for (xp = vp->name; *xp && *xp != '=';)
+ putc(*xp++);
+ err(" is read-only");
+ return;
+ }
+ fl = 0;
+ if (name == NULL) {
+ xp = space(strlen(vp->name)+strlen(val)+2);
+ if (xp == 0)
+ return;
+ /* make string: name=value */
+ setarea((char *)xp, 0);
+ name = xp;
+ for (cp = vp->name; (*xp = *cp++) && *xp!='='; xp++)
+ ;
+ if (*xp++ == 0)
+ xp[-1] = '=';
+ nv = xp;
+ for (cp = val; (*xp++ = *cp++) != '\0';)
+ ;
+ val = nv;
+ fl = GETCELL;
+ }
+ if (vp->status & GETCELL)
+ xfree(vp->name); /* form new string `name=value' */
+ vp->name = name;
+ vp->value = val;
+ vp->status |= fl;
+}
+
+void
+export(vp)
+struct var *vp;
+{
+ vp->status |= EXPORT;
+}
+
+void
+ronly(vp)
+struct var *vp;
+{
+ if (letter(vp->name[0])) /* not an internal symbol ($# etc) */
+ vp->status |= RONLY;
+}
+
+int
+isassign(s)
+register char *s;
+{
+ if (!letter((int)*s))
+ return(0);
+ for (; *s != '='; s++)
+ if (*s == 0 || !letnum(*s))
+ return(0);
+ return(1);
+}
+
+int
+assign(s, cf)
+register char *s;
+int cf;
+{
+ register char *cp;
+ struct var *vp;
+
+ if (!letter(*s))
+ return(0);
+ for (cp = s; *cp != '='; cp++)
+ if (*cp == 0 || !letnum(*cp))
+ return(0);
+ vp = lookup(s);
+ nameval(vp, ++cp, cf == COPYV? (char *)NULL: s);
+ if (cf != COPYV)
+ vp->status &= ~GETCELL;
+ return(1);
+}
+
+int
+checkname(cp)
+register char *cp;
+{
+ if (!letter(*cp++))
+ return(0);
+ while (*cp)
+ if (!letnum(*cp++))
+ return(0);
+ return(1);
+}
+
+void
+putvlist(f, out)
+register int f, out;
+{
+ register struct var *vp;
+
+ for (vp = vlist; vp; vp = vp->next)
+ if (vp->status & f && letter(*vp->name)) {
+ if (vp->status & EXPORT)
+ write(out, "export ", 7);
+ if (vp->status & RONLY)
+ write(out, "readonly ", 9);
+ write(out, vp->name, (int)(findeq(vp->name) - vp->name));
+ write(out, "\n", 1);
+ }
+}
+
+int
+eqname(n1, n2)
+register char *n1, *n2;
+{
+ for (; *n1 != '=' && *n1 != 0; n1++)
+ if (*n2++ != *n1)
+ return(0);
+ return(*n2 == 0 || *n2 == '=');
+}
+
+static char *
+findeq(cp)
+register char *cp;
+{
+ while (*cp != '\0' && *cp != '=')
+ cp++;
+ return(cp);
+}
+
+/* -------- gmatch.c -------- */
+/*
+ * int gmatch(string, pattern)
+ * char *string, *pattern;
+ *
+ * Match a pattern as in sh(1).
+ */
+
+#define CMASK 0377
+#define QUOTE 0200
+#define QMASK (CMASK&~QUOTE)
+#define NOT '!' /* might use ^ */
+
+int
+gmatch(s, p)
+register char *s, *p;
+{
+ register int sc, pc;
+
+ if (s == NULL || p == NULL)
+ return(0);
+ while ((pc = *p++ & CMASK) != '\0') {
+ sc = *s++ & QMASK;
+ switch (pc) {
+ case '[':
+ if ((p = cclass(p, sc)) == NULL)
+ return(0);
+ break;
+
+ case '?':
+ if (sc == 0)
+ return(0);
+ break;
+
+ case '*':
+ s--;
+ do {
+ if (*p == '\0' || gmatch(s, p))
+ return(1);
+ } while (*s++ != '\0');
+ return(0);
+
+ default:
+ if (sc != (pc&~QUOTE))
+ return(0);
+ }
+ }
+ return(*s == 0);
+}
+
+static char *
+cclass(p, sub)
+register char *p;
+register int sub;
+{
+ register int c, d, not, found;
+
+ if ((not = *p == NOT) != 0)
+ p++;
+ found = not;
+ do {
+ if (*p == '\0')
+ return((char *)NULL);
+ c = *p & CMASK;
+ if (p[1] == '-' && p[2] != ']') {
+ d = p[2] & CMASK;
+ p++;
+ } else
+ d = c;
+ if (c == sub || (c <= sub && sub <= d))
+ found = !not;
+ } while (*++p != ']');
+ return(found? p+1: (char *)NULL);
+}
+
+/* -------- area.c -------- */
+#define REGSIZE sizeof(struct region)
+#define GROWBY 256
+#undef SHRINKBY 64
+#define FREE 32767
+#define BUSY 0
+#define ALIGN (sizeof(int)-1)
+
+/* #include "area.h" */
+
+struct region {
+ struct region *next;
+ int area;
+};
+
+/*
+ * All memory between (char *)areabot and (char *)(areatop+1) is
+ * exclusively administered by the area management routines.
+ * It is assumed that sbrk() and brk() manipulate the high end.
+ */
+static struct region *areabot; /* bottom of area */
+static struct region *areatop; /* top of area */
+static struct region *areanxt; /* starting point of scan */
+
+void
+initarea()
+{
+ while ((int)sbrk(0) & ALIGN)
+ sbrk(1);
+ areabot = (struct region *)sbrk(REGSIZE);
+ areabot->next = areabot;
+ areabot->area = BUSY;
+ areatop = areabot;
+ areanxt = areabot;
+}
+
+char *
+getcell(nbytes)
+unsigned nbytes;
+{
+ register int nregio;
+ register struct region *p, *q;
+ register i;
+
+ if (nbytes == 0)
+ abort(); /* silly and defeats the algorithm */
+ /*
+ * round upwards and add administration area
+ */
+ nregio = (nbytes+(REGSIZE-1))/REGSIZE + 1;
+ for (p = areanxt;;) {
+ if (p->area > areanum) {
+ /*
+ * merge free cells
+ */
+ while ((q = p->next)->area > areanum && q != areanxt)
+ p->next = q->next;
+ /*
+ * exit loop if cell big enough
+ */
+ if (q >= p + nregio)
+ goto found;
+ }
+ p = p->next;
+ if (p == areanxt)
+ break;
+ }
+ i = nregio >= GROWBY ? nregio : GROWBY;
+ p = (struct region *)sbrk(i * REGSIZE);
+ if (p == (struct region *)-1)
+ return((char *)NULL);
+ p--;
+ if (p != areatop)
+ abort(); /* allocated areas are contiguous */
+ q = p + i;
+ p->next = q;
+ p->area = FREE;
+ q->next = areabot;
+ q->area = BUSY;
+ areatop = q;
+found:
+ /*
+ * we found a FREE area big enough, pointed to by 'p', and up to 'q'
+ */
+ areanxt = p + nregio;
+ if (areanxt < q) {
+ /*
+ * split into requested area and rest
+ */
+ if (areanxt+1 > q)
+ abort(); /* insufficient space left for admin */
+ areanxt->next = q;
+ areanxt->area = FREE;
+ p->next = areanxt;
+ }
+ p->area = areanum;
+ return((char *)(p+1));
+}
+
+void
+freecell(cp)
+char *cp;
+{
+ register struct region *p;
+
+ if ((p = (struct region *)cp) != NULL) {
+ p--;
+ if (p < areanxt)
+ areanxt = p;
+ p->area = FREE;
+ }
+}
+
+void
+freearea(a)
+register int a;
+{
+ register struct region *p, *top;
+
+ top = areatop;
+ for (p = areabot; p != top; p = p->next)
+ if (p->area >= a)
+ p->area = FREE;
+}
+
+void
+setarea(cp,a)
+char *cp;
+int a;
+{
+ register struct region *p;
+
+ if ((p = (struct region *)cp) != NULL)
+ (p-1)->area = a;
+}
+
+int
+getarea(cp)
+char *cp;
+{
+ return ((struct region*)cp-1)->area;
+}
+
+void
+garbage()
+{
+ register struct region *p, *q, *top;
+
+ top = areatop;
+ for (p = areabot; p != top; p = p->next) {
+ if (p->area > areanum) {
+ while ((q = p->next)->area > areanum)
+ p->next = q->next;
+ areanxt = p;
+ }
+ }
+#ifdef SHRINKBY
+ if (areatop >= q + SHRINKBY && q->area > areanum) {
+ brk((char *)(q+1));
+ q->next = areabot;
+ q->area = BUSY;
+ areatop = q;
+ }
+#endif
+}
diff --git a/release/picobsd/tinyware/msh/sh2.c b/release/picobsd/tinyware/msh/sh2.c
new file mode 100644
index 000000000000..f7eaf017f5ec
--- /dev/null
+++ b/release/picobsd/tinyware/msh/sh2.c
@@ -0,0 +1,801 @@
+#define Extern extern
+#include <sys/types.h>
+#include <signal.h>
+#define _NSIG NSIG
+#include <errno.h>
+#include <setjmp.h>
+#include "sh.h"
+
+/* -------- csyn.c -------- */
+/*
+ * shell: syntax (C version)
+ */
+
+typedef union {
+ char *cp;
+ char **wp;
+ int i;
+ struct op *o;
+} YYSTYPE;
+#define WORD 256
+#define LOGAND 257
+#define LOGOR 258
+#define BREAK 259
+#define IF 260
+#define THEN 261
+#define ELSE 262
+#define ELIF 263
+#define FI 264
+#define CASE 265
+#define ESAC 266
+#define FOR 267
+#define WHILE 268
+#define UNTIL 269
+#define DO 270
+#define DONE 271
+#define IN 272
+#define YYERRCODE 300
+
+/* flags to yylex */
+#define CONTIN 01 /* skip new lines to complete command */
+
+/* #include "sh.h" */
+#define SYNTAXERR zzerr()
+static int startl;
+static int peeksym;
+static int nlseen;
+static int iounit = IODEFAULT;
+
+static YYSTYPE yylval;
+
+_PROTOTYPE(static struct op *pipeline, (int cf ));
+_PROTOTYPE(static struct op *andor, (void));
+_PROTOTYPE(static struct op *c_list, (void));
+_PROTOTYPE(static int synio, (int cf ));
+_PROTOTYPE(static void musthave, (int c, int cf ));
+_PROTOTYPE(static struct op *simple, (void));
+_PROTOTYPE(static struct op *nested, (int type, int mark ));
+_PROTOTYPE(static struct op *command, (int cf ));
+_PROTOTYPE(static struct op *dogroup, (int onlydone ));
+_PROTOTYPE(static struct op *thenpart, (void));
+_PROTOTYPE(static struct op *elsepart, (void));
+_PROTOTYPE(static struct op *caselist, (void));
+_PROTOTYPE(static struct op *casepart, (void));
+_PROTOTYPE(static char **pattern, (void));
+_PROTOTYPE(static char **wordlist, (void));
+_PROTOTYPE(static struct op *list, (struct op *t1, struct op *t2 ));
+_PROTOTYPE(static struct op *block, (int type, struct op *t1, struct op *t2, char **wp ));
+_PROTOTYPE(static struct op *newtp, (void));
+_PROTOTYPE(static struct op *namelist, (struct op *t ));
+_PROTOTYPE(static char **copyw, (void));
+_PROTOTYPE(static void word, (char *cp ));
+_PROTOTYPE(static struct ioword **copyio, (void));
+_PROTOTYPE(static struct ioword *io, (int u, int f, char *cp ));
+_PROTOTYPE(static void zzerr, (void));
+_PROTOTYPE(void yyerror, (char *s ));
+_PROTOTYPE(static int yylex, (int cf ));
+_PROTOTYPE(int collect, (int c, int c1 ));
+_PROTOTYPE(int dual, (int c ));
+_PROTOTYPE(static void diag, (int ec ));
+_PROTOTYPE(static char *tree, (unsigned size ));
+_PROTOTYPE(void printf, (char *s ));
+
+int
+yyparse()
+{
+ startl = 1;
+ peeksym = 0;
+ yynerrs = 0;
+ outtree = c_list();
+ musthave('\n', 0);
+ return(yynerrs!=0);
+}
+
+static struct op *
+pipeline(cf)
+int cf;
+{
+ register struct op *t, *p;
+ register int c;
+
+ t = command(cf);
+ if (t != NULL) {
+ while ((c = yylex(0)) == '|') {
+ if ((p = command(CONTIN)) == NULL)
+ SYNTAXERR;
+ if (t->type != TPAREN && t->type != TCOM) {
+ /* shell statement */
+ t = block(TPAREN, t, NOBLOCK, NOWORDS);
+ }
+ t = block(TPIPE, t, p, NOWORDS);
+ }
+ peeksym = c;
+ }
+ return(t);
+}
+
+static struct op *
+andor()
+{
+ register struct op *t, *p;
+ register int c;
+
+ t = pipeline(0);
+ if (t != NULL) {
+ while ((c = yylex(0)) == LOGAND || c == LOGOR) {
+ if ((p = pipeline(CONTIN)) == NULL)
+ SYNTAXERR;
+ t = block(c == LOGAND? TAND: TOR, t, p, NOWORDS);
+ }
+ peeksym = c;
+ }
+ return(t);
+}
+
+static struct op *
+c_list()
+{
+ register struct op *t, *p;
+ register int c;
+
+ t = andor();
+ if (t != NULL) {
+ if((peeksym = yylex(0)) == '&')
+ t = block(TASYNC, t, NOBLOCK, NOWORDS);
+ while ((c = yylex(0)) == ';' || c == '&' || (multiline && c == '\n')) {
+ if ((p = andor()) == NULL)
+ return(t);
+ if((peeksym = yylex(0)) == '&')
+ p = block(TASYNC, p, NOBLOCK, NOWORDS);
+ t = list(t, p);
+ }
+ peeksym = c;
+ }
+ return(t);
+}
+
+
+static int
+synio(cf)
+int cf;
+{
+ register struct ioword *iop;
+ register int i;
+ register int c;
+
+ if ((c = yylex(cf)) != '<' && c != '>') {
+ peeksym = c;
+ return(0);
+ }
+ i = yylval.i;
+ musthave(WORD, 0);
+ iop = io(iounit, i, yylval.cp);
+ iounit = IODEFAULT;
+ if (i & IOHERE)
+ markhere(yylval.cp, iop);
+ return(1);
+}
+
+static void
+musthave(c, cf)
+int c, cf;
+{
+ if ((peeksym = yylex(cf)) != c)
+ SYNTAXERR;
+ peeksym = 0;
+}
+
+static struct op *
+simple()
+{
+ register struct op *t;
+
+ t = NULL;
+ for (;;) {
+ switch (peeksym = yylex(0)) {
+ case '<':
+ case '>':
+ (void) synio(0);
+ break;
+
+ case WORD:
+ if (t == NULL) {
+ t = newtp();
+ t->type = TCOM;
+ }
+ peeksym = 0;
+ word(yylval.cp);
+ break;
+
+ default:
+ return(t);
+ }
+ }
+}
+
+static struct op *
+nested(type, mark)
+int type, mark;
+{
+ register struct op *t;
+
+ multiline++;
+ t = c_list();
+ musthave(mark, 0);
+ multiline--;
+ return(block(type, t, NOBLOCK, NOWORDS));
+}
+
+static struct op *
+command(cf)
+int cf;
+{
+ register struct op *t;
+ struct wdblock *iosave;
+ register int c;
+
+ iosave = iolist;
+ iolist = NULL;
+ if (multiline)
+ cf |= CONTIN;
+ while (synio(cf))
+ cf = 0;
+ switch (c = yylex(cf)) {
+ default:
+ peeksym = c;
+ if ((t = simple()) == NULL) {
+ if (iolist == NULL)
+ return((struct op *)NULL);
+ t = newtp();
+ t->type = TCOM;
+ }
+ break;
+
+ case '(':
+ t = nested(TPAREN, ')');
+ break;
+
+ case '{':
+ t = nested(TBRACE, '}');
+ break;
+
+ case FOR:
+ t = newtp();
+ t->type = TFOR;
+ musthave(WORD, 0);
+ startl = 1;
+ t->str = yylval.cp;
+ multiline++;
+ t->words = wordlist();
+ if ((c = yylex(0)) != '\n' && c != ';')
+ peeksym = c;
+ t->left = dogroup(0);
+ multiline--;
+ break;
+
+ case WHILE:
+ case UNTIL:
+ multiline++;
+ t = newtp();
+ t->type = c == WHILE? TWHILE: TUNTIL;
+ t->left = c_list();
+ t->right = dogroup(1);
+ t->words = NULL;
+ multiline--;
+ break;
+
+ case CASE:
+ t = newtp();
+ t->type = TCASE;
+ musthave(WORD, 0);
+ t->str = yylval.cp;
+ startl++;
+ multiline++;
+ musthave(IN, CONTIN);
+ startl++;
+ t->left = caselist();
+ musthave(ESAC, 0);
+ multiline--;
+ break;
+
+ case IF:
+ multiline++;
+ t = newtp();
+ t->type = TIF;
+ t->left = c_list();
+ t->right = thenpart();
+ musthave(FI, 0);
+ multiline--;
+ break;
+ }
+ while (synio(0))
+ ;
+ t = namelist(t);
+ iolist = iosave;
+ return(t);
+}
+
+static struct op *
+dogroup(onlydone)
+int onlydone;
+{
+ register int c;
+ register struct op *list;
+
+ c = yylex(CONTIN);
+ if (c == DONE && onlydone)
+ return((struct op *)NULL);
+ if (c != DO)
+ SYNTAXERR;
+ list = c_list();
+ musthave(DONE, 0);
+ return(list);
+}
+
+static struct op *
+thenpart()
+{
+ register int c;
+ register struct op *t;
+
+ if ((c = yylex(0)) != THEN) {
+ peeksym = c;
+ return((struct op *)NULL);
+ }
+ t = newtp();
+ t->type = 0;
+ t->left = c_list();
+ if (t->left == NULL)
+ SYNTAXERR;
+ t->right = elsepart();
+ return(t);
+}
+
+static struct op *
+elsepart()
+{
+ register int c;
+ register struct op *t;
+
+ switch (c = yylex(0)) {
+ case ELSE:
+ if ((t = c_list()) == NULL)
+ SYNTAXERR;
+ return(t);
+
+ case ELIF:
+ t = newtp();
+ t->type = TELIF;
+ t->left = c_list();
+ t->right = thenpart();
+ return(t);
+
+ default:
+ peeksym = c;
+ return((struct op *)NULL);
+ }
+}
+
+static struct op *
+caselist()
+{
+ register struct op *t;
+
+ t = NULL;
+ while ((peeksym = yylex(CONTIN)) != ESAC)
+ t = list(t, casepart());
+ return(t);
+}
+
+static struct op *
+casepart()
+{
+ register struct op *t;
+
+ t = newtp();
+ t->type = TPAT;
+ t->words = pattern();
+ musthave(')', 0);
+ t->left = c_list();
+ if ((peeksym = yylex(CONTIN)) != ESAC)
+ musthave(BREAK, CONTIN);
+ return(t);
+}
+
+static char **
+pattern()
+{
+ register int c, cf;
+
+ cf = CONTIN;
+ do {
+ musthave(WORD, cf);
+ word(yylval.cp);
+ cf = 0;
+ } while ((c = yylex(0)) == '|');
+ peeksym = c;
+ word(NOWORD);
+ return(copyw());
+}
+
+static char **
+wordlist()
+{
+ register int c;
+
+ if ((c = yylex(0)) != IN) {
+ peeksym = c;
+ return((char **)NULL);
+ }
+ startl = 0;
+ while ((c = yylex(0)) == WORD)
+ word(yylval.cp);
+ word(NOWORD);
+ peeksym = c;
+ return(copyw());
+}
+
+/*
+ * supporting functions
+ */
+static struct op *
+list(t1, t2)
+register struct op *t1, *t2;
+{
+ if (t1 == NULL)
+ return(t2);
+ if (t2 == NULL)
+ return(t1);
+ return(block(TLIST, t1, t2, NOWORDS));
+}
+
+static struct op *
+block(type, t1, t2, wp)
+int type;
+struct op *t1, *t2;
+char **wp;
+{
+ register struct op *t;
+
+ t = newtp();
+ t->type = type;
+ t->left = t1;
+ t->right = t2;
+ t->words = wp;
+ return(t);
+}
+
+struct res {
+ char *r_name;
+ int r_val;
+} restab[] = {
+ "for", FOR,
+ "case", CASE,
+ "esac", ESAC,
+ "while", WHILE,
+ "do", DO,
+ "done", DONE,
+ "if", IF,
+ "in", IN,
+ "then", THEN,
+ "else", ELSE,
+ "elif", ELIF,
+ "until", UNTIL,
+ "fi", FI,
+
+ ";;", BREAK,
+ "||", LOGOR,
+ "&&", LOGAND,
+ "{", '{',
+ "}", '}',
+
+ 0,
+};
+
+int
+rlookup(n)
+register char *n;
+{
+ register struct res *rp;
+
+ for (rp = restab; rp->r_name; rp++)
+ if (strcmp(rp->r_name, n) == 0)
+ return(rp->r_val);
+ return(0);
+}
+
+static struct op *
+newtp()
+{
+ register struct op *t;
+
+ t = (struct op *)tree(sizeof(*t));
+ t->type = 0;
+ t->words = NULL;
+ t->ioact = NULL;
+ t->left = NULL;
+ t->right = NULL;
+ t->str = NULL;
+ return(t);
+}
+
+static struct op *
+namelist(t)
+register struct op *t;
+{
+ if (iolist) {
+ iolist = addword((char *)NULL, iolist);
+ t->ioact = copyio();
+ } else
+ t->ioact = NULL;
+ if (t->type != TCOM) {
+ if (t->type != TPAREN && t->ioact != NULL) {
+ t = block(TPAREN, t, NOBLOCK, NOWORDS);
+ t->ioact = t->left->ioact;
+ t->left->ioact = NULL;
+ }
+ return(t);
+ }
+ word(NOWORD);
+ t->words = copyw();
+ return(t);
+}
+
+static char **
+copyw()
+{
+ register char **wd;
+
+ wd = getwords(wdlist);
+ wdlist = 0;
+ return(wd);
+}
+
+static void
+word(cp)
+char *cp;
+{
+ wdlist = addword(cp, wdlist);
+}
+
+static struct ioword **
+copyio()
+{
+ register struct ioword **iop;
+
+ iop = (struct ioword **) getwords(iolist);
+ iolist = 0;
+ return(iop);
+}
+
+static struct ioword *
+io(u, f, cp)
+int u;
+int f;
+char *cp;
+{
+ register struct ioword *iop;
+
+ iop = (struct ioword *) tree(sizeof(*iop));
+ iop->io_unit = u;
+ iop->io_flag = f;
+ iop->io_name = cp;
+ iolist = addword((char *)iop, iolist);
+ return(iop);
+}
+
+static void
+zzerr()
+{
+ yyerror("syntax error");
+}
+
+void
+yyerror(s)
+char *s;
+{
+ yynerrs++;
+ if (talking && e.iop <= iostack) {
+ multiline = 0;
+ while (eofc() == 0 && yylex(0) != '\n')
+ ;
+ }
+ err(s);
+ fail();
+}
+
+static int
+yylex(cf)
+int cf;
+{
+ register int c, c1;
+ int atstart;
+
+ if ((c = peeksym) > 0) {
+ peeksym = 0;
+ if (c == '\n')
+ startl = 1;
+ return(c);
+ }
+ nlseen = 0;
+ e.linep = line;
+ atstart = startl;
+ startl = 0;
+ yylval.i = 0;
+
+loop:
+ while ((c = getc(0)) == ' ' || c == '\t')
+ ;
+ switch (c) {
+ default:
+ if (any(c, "0123456789")) {
+ unget(c1 = getc(0));
+ if (c1 == '<' || c1 == '>') {
+ iounit = c - '0';
+ goto loop;
+ }
+ *e.linep++ = c;
+ c = c1;
+ }
+ break;
+
+ case '#':
+ while ((c = getc(0)) != 0 && c != '\n')
+ ;
+ unget(c);
+ goto loop;
+
+ case 0:
+ return(c);
+
+ case '$':
+ *e.linep++ = c;
+ if ((c = getc(0)) == '{') {
+ if ((c = collect(c, '}')) != '\0')
+ return(c);
+ goto pack;
+ }
+ break;
+
+ case '`':
+ case '\'':
+ case '"':
+ if ((c = collect(c, c)) != '\0')
+ return(c);
+ goto pack;
+
+ case '|':
+ case '&':
+ case ';':
+ if ((c1 = dual(c)) != '\0') {
+ startl = 1;
+ return(c1);
+ }
+ startl = 1;
+ return(c);
+ case '^':
+ startl = 1;
+ return('|');
+ case '>':
+ case '<':
+ diag(c);
+ return(c);
+
+ case '\n':
+ nlseen++;
+ gethere();
+ startl = 1;
+ if (multiline || cf & CONTIN) {
+ if (talking && e.iop <= iostack)
+ prs(cprompt->value);
+ if (cf & CONTIN)
+ goto loop;
+ }
+ return(c);
+
+ case '(':
+ case ')':
+ startl = 1;
+ return(c);
+ }
+
+ unget(c);
+
+pack:
+ while ((c = getc(0)) != 0 && !any(c, "`$ '\"\t;&<>()|^\n"))
+ if (e.linep >= elinep)
+ err("word too long");
+ else
+ *e.linep++ = c;
+ unget(c);
+ if(any(c, "\"'`$"))
+ goto loop;
+ *e.linep++ = '\0';
+ if (atstart && (c = rlookup(line))!=0) {
+ startl = 1;
+ return(c);
+ }
+ yylval.cp = strsave(line, areanum);
+ return(WORD);
+}
+
+int
+collect(c, c1)
+register c, c1;
+{
+ char s[2];
+
+ *e.linep++ = c;
+ while ((c = getc(c1)) != c1) {
+ if (c == 0) {
+ unget(c);
+ s[0] = c1;
+ s[1] = 0;
+ prs("no closing "); yyerror(s);
+ return(YYERRCODE);
+ }
+ if (talking && c == '\n' && e.iop <= iostack)
+ prs(cprompt->value);
+ *e.linep++ = c;
+ }
+ *e.linep++ = c;
+ return(0);
+}
+
+int
+dual(c)
+register c;
+{
+ char s[3];
+ register char *cp = s;
+
+ *cp++ = c;
+ *cp++ = getc(0);
+ *cp = 0;
+ if ((c = rlookup(s)) == 0)
+ unget(*--cp);
+ return(c);
+}
+
+static void
+diag(ec)
+register int ec;
+{
+ register int c;
+
+ c = getc(0);
+ if (c == '>' || c == '<') {
+ if (c != ec)
+ zzerr();
+ yylval.i = ec == '>'? IOWRITE|IOCAT: IOHERE;
+ c = getc(0);
+ } else
+ yylval.i = ec == '>'? IOWRITE: IOREAD;
+ if (c != '&' || yylval.i == IOHERE)
+ unget(c);
+ else
+ yylval.i |= IODUP;
+}
+
+static char *
+tree(size)
+unsigned size;
+{
+ register char *t;
+
+ if ((t = getcell(size)) == NULL) {
+ prs("command line too complicated\n");
+ fail();
+ /* NOTREACHED */
+ }
+ return(t);
+}
+
+/* VARARGS1 */
+/* ARGSUSED */
+void
+printf(s) /* yyparse calls it */
+char *s;
+{
+}
+
diff --git a/release/picobsd/tinyware/msh/sh3.c b/release/picobsd/tinyware/msh/sh3.c
new file mode 100644
index 000000000000..5959f2735424
--- /dev/null
+++ b/release/picobsd/tinyware/msh/sh3.c
@@ -0,0 +1,1143 @@
+#define Extern extern
+#include <sys/types.h>
+#include <signal.h>
+#define _NSIG NSIG
+#include <errno.h>
+#include <setjmp.h>
+#include <stddef.h>
+#include <time.h>
+#include <sys/times.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#undef NULL
+#include "sh.h"
+
+/* -------- exec.c -------- */
+/* #include "sh.h" */
+
+/*
+ * execute tree
+ */
+
+static char *signame[] = {
+ "Signal 0",
+ "Hangup",
+ (char *)NULL, /* interrupt */
+ "Quit",
+ "Illegal instruction",
+ "Trace/BPT trap",
+ "Abort",
+ "EMT trap",
+ "Floating exception",
+ "Killed",
+ "Bus error",
+ "Memory fault",
+ "Bad system call",
+ (char *)NULL, /* broken pipe */
+ "Alarm clock",
+ "Terminated",
+};
+#define NSIGNAL (sizeof(signame)/sizeof(signame[0]))
+
+
+_PROTOTYPE(static int forkexec, (struct op *t, int *pin, int *pout, int act, char **wp, int *pforked ));
+_PROTOTYPE(static int parent, (void));
+_PROTOTYPE(int iosetup, (struct ioword *iop, int pipein, int pipeout ));
+_PROTOTYPE(static void echo, (char **wp ));
+_PROTOTYPE(static struct op **find1case, (struct op *t, char *w ));
+_PROTOTYPE(static struct op *findcase, (struct op *t, char *w ));
+_PROTOTYPE(static void brkset, (struct brkcon *bc ));
+_PROTOTYPE(int dolabel, (void));
+_PROTOTYPE(int dochdir, (struct op *t ));
+_PROTOTYPE(int doshift, (struct op *t ));
+_PROTOTYPE(int dologin, (struct op *t ));
+_PROTOTYPE(int doumask, (struct op *t ));
+_PROTOTYPE(int doexec, (struct op *t ));
+_PROTOTYPE(int dodot, (struct op *t ));
+_PROTOTYPE(int dowait, (struct op *t ));
+_PROTOTYPE(int doread, (struct op *t ));
+_PROTOTYPE(int doeval, (struct op *t ));
+_PROTOTYPE(int dotrap, (struct op *t ));
+_PROTOTYPE(int getsig, (char *s ));
+_PROTOTYPE(void setsig, (int n, void (*f)()));
+_PROTOTYPE(int getn, (char *as ));
+_PROTOTYPE(int dobreak, (struct op *t ));
+_PROTOTYPE(int docontinue, (struct op *t ));
+_PROTOTYPE(static int brkcontin, (char *cp, int val ));
+_PROTOTYPE(int doexit, (struct op *t ));
+_PROTOTYPE(int doexport, (struct op *t ));
+_PROTOTYPE(int doreadonly, (struct op *t ));
+_PROTOTYPE(static void rdexp, (char **wp, void (*f)(), int key));
+_PROTOTYPE(static void badid, (char *s ));
+_PROTOTYPE(int doset, (struct op *t ));
+_PROTOTYPE(void varput, (char *s, int out ));
+_PROTOTYPE(int dotimes, (void));
+
+int
+execute(t, pin, pout, act)
+register struct op *t;
+int *pin, *pout;
+int act;
+{
+ register struct op *t1;
+ int i, pv[2], rv, child, a;
+ char *cp, **wp, **wp2;
+ struct var *vp;
+ struct brkcon bc;
+
+ if (t == NULL)
+ return(0);
+ rv = 0;
+ a = areanum++;
+ wp = (wp2 = t->words) != NULL
+ ? eval(wp2, t->type == TCOM ? DOALL : DOALL & ~DOKEY)
+ : NULL;
+
+ switch(t->type) {
+ case TPAREN:
+ case TCOM:
+ rv = forkexec(t, pin, pout, act, wp, &child);
+ if (child) {
+ exstat = rv;
+ leave();
+ }
+ break;
+
+ case TPIPE:
+ if ((rv = openpipe(pv)) < 0)
+ break;
+ pv[0] = remap(pv[0]);
+ pv[1] = remap(pv[1]);
+ (void) execute(t->left, pin, pv, 0);
+ rv = execute(t->right, pv, pout, 0);
+ break;
+
+ case TLIST:
+ (void) execute(t->left, pin, pout, 0);
+ rv = execute(t->right, pin, pout, 0);
+ break;
+
+ case TASYNC:
+ i = parent();
+ if (i != 0) {
+ if (i != -1) {
+ setval(lookup("!"), putn(i));
+ if (pin != NULL)
+ closepipe(pin);
+ if (talking) {
+ prs(putn(i));
+ prs("\n");
+ }
+ } else
+ rv = -1;
+ setstatus(rv);
+ } else {
+ signal(SIGINT, SIG_IGN);
+ signal(SIGQUIT, SIG_IGN);
+ if (talking)
+ signal(SIGTERM, SIG_DFL);
+ talking = 0;
+ if (pin == NULL) {
+ close(0);
+ open("/dev/null", 0);
+ }
+ exit(execute(t->left, pin, pout, FEXEC));
+ }
+ break;
+
+ case TOR:
+ case TAND:
+ rv = execute(t->left, pin, pout, 0);
+ if ((t1 = t->right)!=NULL && (rv == 0) == (t->type == TAND))
+ rv = execute(t1, pin, pout, 0);
+ break;
+
+ case TFOR:
+ if (wp == NULL) {
+ wp = dolv+1;
+ if ((i = dolc) < 0)
+ i = 0;
+ } else {
+ i = -1;
+ while (*wp++ != NULL)
+ ;
+ }
+ vp = lookup(t->str);
+ while (setjmp(bc.brkpt))
+ if (isbreak)
+ goto broken;
+ brkset(&bc);
+ for (t1 = t->left; i-- && *wp != NULL;) {
+ setval(vp, *wp++);
+ rv = execute(t1, pin, pout, 0);
+ }
+ brklist = brklist->nextlev;
+ break;
+
+ case TWHILE:
+ case TUNTIL:
+ while (setjmp(bc.brkpt))
+ if (isbreak)
+ goto broken;
+ brkset(&bc);
+ t1 = t->left;
+ while ((execute(t1, pin, pout, 0) == 0) == (t->type == TWHILE))
+ rv = execute(t->right, pin, pout, 0);
+ brklist = brklist->nextlev;
+ break;
+
+ case TIF:
+ case TELIF:
+ if (t->right != NULL) {
+ rv = !execute(t->left, pin, pout, 0) ?
+ execute(t->right->left, pin, pout, 0):
+ execute(t->right->right, pin, pout, 0);
+ }
+ break;
+
+ case TCASE:
+ if ((cp = evalstr(t->str, DOSUB|DOTRIM)) == 0)
+ cp = "";
+ if ((t1 = findcase(t->left, cp)) != NULL)
+ rv = execute(t1, pin, pout, 0);
+ break;
+
+ case TBRACE:
+/*
+ if (iopp = t->ioact)
+ while (*iopp)
+ if (iosetup(*iopp++, pin!=NULL, pout!=NULL)) {
+ rv = -1;
+ break;
+ }
+*/
+ if (rv >= 0 && (t1 = t->left))
+ rv = execute(t1, pin, pout, 0);
+ break;
+ }
+
+broken:
+ t->words = wp2;
+ isbreak = 0;
+ freehere(areanum);
+ freearea(areanum);
+ areanum = a;
+ if (talking && intr) {
+ closeall();
+ fail();
+ }
+ if ((i = trapset) != 0) {
+ trapset = 0;
+ runtrap(i);
+ }
+ return(rv);
+}
+
+static int
+forkexec(t, pin, pout, act, wp, pforked)
+register struct op *t;
+int *pin, *pout;
+int act;
+char **wp;
+int *pforked;
+{
+ int i, rv, (*shcom)();
+ register int f;
+ char *cp;
+ struct ioword **iopp;
+ int resetsig;
+ char **owp;
+
+ owp = wp;
+ resetsig = 0;
+ *pforked = 0;
+ shcom = NULL;
+ rv = -1; /* system-detected error */
+ if (t->type == TCOM) {
+ while ((cp = *wp++) != NULL)
+ ;
+ cp = *wp;
+
+ /* strip all initial assignments */
+ /* not correct wrt PATH=yyy command etc */
+ if (flag['x'])
+ echo (cp ? wp: owp);
+ if (cp == NULL && t->ioact == NULL) {
+ while ((cp = *owp++) != NULL && assign(cp, COPYV))
+ ;
+ return(setstatus(0));
+ }
+ else if (cp != NULL)
+ shcom = inbuilt(cp);
+ }
+ t->words = wp;
+ f = act;
+ if (shcom == NULL && (f & FEXEC) == 0) {
+ i = parent();
+ if (i != 0) {
+ if (i == -1)
+ return(rv);
+ if (pin != NULL)
+ closepipe(pin);
+ return(pout==NULL? setstatus(waitfor(i,0)): 0);
+ }
+ if (talking) {
+ signal(SIGINT, SIG_IGN);
+ signal(SIGQUIT, SIG_IGN);
+ resetsig = 1;
+ }
+ talking = 0;
+ intr = 0;
+ (*pforked)++;
+ brklist = 0;
+ execflg = 0;
+ }
+ if (owp != NULL)
+ while ((cp = *owp++) != NULL && assign(cp, COPYV))
+ if (shcom == NULL)
+ export(lookup(cp));
+#ifdef COMPIPE
+ if ((pin != NULL || pout != NULL) && shcom != NULL && shcom != doexec) {
+ err("piping to/from shell builtins not yet done");
+ return(-1);
+ }
+#endif
+ if (pin != NULL) {
+ dup2(pin[0], 0);
+ closepipe(pin);
+ }
+ if (pout != NULL) {
+ dup2(pout[1], 1);
+ closepipe(pout);
+ }
+ if ((iopp = t->ioact) != NULL) {
+ if (shcom != NULL && shcom != doexec) {
+ prs(cp);
+ err(": cannot redirect shell command");
+ return(-1);
+ }
+ while (*iopp)
+ if (iosetup(*iopp++, pin!=NULL, pout!=NULL))
+ return(rv);
+ }
+ if (shcom)
+ return(setstatus((*shcom)(t)));
+ /* should use FIOCEXCL */
+ for (i=FDBASE; i<NOFILE; i++)
+ close(i);
+ if (resetsig) {
+ signal(SIGINT, SIG_DFL);
+ signal(SIGQUIT, SIG_DFL);
+ }
+ if (t->type == TPAREN)
+ exit(execute(t->left, NOPIPE, NOPIPE, FEXEC));
+ if (wp[0] == NULL)
+ exit(0);
+ cp = rexecve(wp[0], wp, makenv());
+ prs(wp[0]); prs(": "); warn(cp);
+ if (!execflg)
+ trap[0] = NULL;
+ leave();
+ /* NOTREACHED */
+}
+
+/*
+ * common actions when creating a new child
+ */
+static int
+parent()
+{
+ register int i;
+
+ i = fork();
+ if (i != 0) {
+ if (i == -1)
+ warn("try again");
+ }
+ return(i);
+}
+
+/*
+ * 0< 1> are ignored as required
+ * within pipelines.
+ */
+int
+iosetup(iop, pipein, pipeout)
+register struct ioword *iop;
+int pipein, pipeout;
+{
+ register u;
+ char *cp, *msg;
+
+ if (iop->io_unit == IODEFAULT) /* take default */
+ iop->io_unit = iop->io_flag&(IOREAD|IOHERE)? 0: 1;
+ if (pipein && iop->io_unit == 0)
+ return(0);
+ if (pipeout && iop->io_unit == 1)
+ return(0);
+ msg = iop->io_flag&(IOREAD|IOHERE)? "open": "create";
+ if ((iop->io_flag & IOHERE) == 0) {
+ cp = iop->io_name;
+ if ((cp = evalstr(cp, DOSUB|DOTRIM)) == NULL)
+ return(1);
+ }
+ if (iop->io_flag & IODUP) {
+ if (cp[1] || (!digit(*cp) && *cp != '-')) {
+ prs(cp);
+ err(": illegal >& argument");
+ return(1);
+ }
+ if (*cp == '-')
+ iop->io_flag = IOCLOSE;
+ iop->io_flag &= ~(IOREAD|IOWRITE);
+ }
+ switch (iop->io_flag) {
+ case IOREAD:
+ u = open(cp, 0);
+ break;
+
+ case IOHERE:
+ case IOHERE|IOXHERE:
+ u = herein(iop->io_name, iop->io_flag&IOXHERE);
+ cp = "here file";
+ break;
+
+ case IOWRITE|IOCAT:
+ if ((u = open(cp, 1)) >= 0) {
+ lseek(u, (long)0, 2);
+ break;
+ }
+ case IOWRITE:
+ u = creat(cp, 0666);
+ break;
+
+ case IODUP:
+ u = dup2(*cp-'0', iop->io_unit);
+ break;
+
+ case IOCLOSE:
+ close(iop->io_unit);
+ return(0);
+ }
+ if (u < 0) {
+ prs(cp);
+ prs(": cannot ");
+ warn(msg);
+ return(1);
+ } else {
+ if (u != iop->io_unit) {
+ dup2(u, iop->io_unit);
+ close(u);
+ }
+ }
+ return(0);
+}
+
+static void
+echo(wp)
+register char **wp;
+{
+ register i;
+
+ prs("+");
+ for (i=0; wp[i]; i++) {
+ if (i)
+ prs(" ");
+ prs(wp[i]);
+ }
+ prs("\n");
+}
+
+static struct op **
+find1case(t, w)
+struct op *t;
+char *w;
+{
+ register struct op *t1;
+ struct op **tp;
+ register char **wp, *cp;
+
+ if (t == NULL)
+ return((struct op **)NULL);
+ if (t->type == TLIST) {
+ if ((tp = find1case(t->left, w)) != NULL)
+ return(tp);
+ t1 = t->right; /* TPAT */
+ } else
+ t1 = t;
+ for (wp = t1->words; *wp;)
+ if ((cp = evalstr(*wp++, DOSUB)) && gmatch(w, cp))
+ return(&t1->left);
+ return((struct op **)NULL);
+}
+
+static struct op *
+findcase(t, w)
+struct op *t;
+char *w;
+{
+ register struct op **tp;
+
+ return((tp = find1case(t, w)) != NULL? *tp: (struct op *)NULL);
+}
+
+/*
+ * Enter a new loop level (marked for break/continue).
+ */
+static void
+brkset(bc)
+struct brkcon *bc;
+{
+ bc->nextlev = brklist;
+ brklist = bc;
+}
+
+/*
+ * Wait for the last process created.
+ * Print a message for each process found
+ * that was killed by a signal.
+ * Ignore interrupt signals while waiting
+ * unless `canintr' is true.
+ */
+int
+waitfor(lastpid, canintr)
+register int lastpid;
+int canintr;
+{
+ register int pid, rv;
+ int s;
+ int oheedint = heedint;
+
+ heedint = 0;
+ rv = 0;
+ do {
+ pid = wait(&s);
+ if (pid == -1) {
+ if (errno != EINTR || canintr)
+ break;
+ } else {
+ if ((rv = WAITSIG(s)) != 0) {
+ if (rv < NSIGNAL) {
+ if (signame[rv] != NULL) {
+ if (pid != lastpid) {
+ prn(pid);
+ prs(": ");
+ }
+ prs(signame[rv]);
+ }
+ } else {
+ if (pid != lastpid) {
+ prn(pid);
+ prs(": ");
+ }
+ prs("Signal "); prn(rv); prs(" ");
+ }
+ if (WAITCORE(s))
+ prs(" - core dumped");
+ if (rv >= NSIGNAL || signame[rv])
+ prs("\n");
+ rv = -1;
+ } else
+ rv = WAITVAL(s);
+ }
+ } while (pid != lastpid);
+ heedint = oheedint;
+ if (intr)
+ if (talking) {
+ if (canintr)
+ intr = 0;
+ } else {
+ if (exstat == 0) exstat = rv;
+ onintr(0);
+ }
+ return(rv);
+}
+
+int
+setstatus(s)
+register int s;
+{
+ exstat = s;
+ setval(lookup("?"), putn(s));
+ return(s);
+}
+
+/*
+ * PATH-searching interface to execve.
+ * If getenv("PATH") were kept up-to-date,
+ * execvp might be used.
+ */
+char *
+rexecve(c, v, envp)
+char *c, **v, **envp;
+{
+ register int i;
+ register char *sp, *tp;
+ int eacces = 0, asis = 0;
+
+ sp = any('/', c)? "": path->value;
+ asis = *sp == '\0';
+ while (asis || *sp != '\0') {
+ asis = 0;
+ tp = e.linep;
+ for (; *sp != '\0'; tp++)
+ if ((*tp = *sp++) == ':') {
+ asis = *sp == '\0';
+ break;
+ }
+ if (tp != e.linep)
+ *tp++ = '/';
+ for (i = 0; (*tp++ = c[i++]) != '\0';)
+ ;
+ execve(e.linep, v, envp);
+ switch (errno) {
+ case ENOEXEC:
+ *v = e.linep;
+ tp = *--v;
+ *v = e.linep;
+ execve("/bin/sh", v, envp);
+ *v = tp;
+ return("no Shell");
+
+ case ENOMEM:
+ return("program too big");
+
+ case E2BIG:
+ return("argument list too long");
+
+ case EACCES:
+ eacces++;
+ break;
+ }
+ }
+ return(errno==ENOENT ? "not found" : "cannot execute");
+}
+
+/*
+ * Run the command produced by generator `f'
+ * applied to stream `arg'.
+ */
+int
+run(argp, f)
+struct ioarg *argp;
+int (*f)();
+{
+ struct op *otree;
+ struct wdblock *swdlist;
+ struct wdblock *siolist;
+ jmp_buf ev, rt;
+ xint *ofail;
+ int rv;
+
+ areanum++;
+ swdlist = wdlist;
+ siolist = iolist;
+ otree = outtree;
+ ofail = failpt;
+ rv = -1;
+ if (newenv(setjmp(errpt = ev)) == 0) {
+ wdlist = 0;
+ iolist = 0;
+ pushio(argp, f);
+ e.iobase = e.iop;
+ yynerrs = 0;
+ if (setjmp(failpt = rt) == 0 && yyparse() == 0)
+ rv = execute(outtree, NOPIPE, NOPIPE, 0);
+ quitenv();
+ }
+ wdlist = swdlist;
+ iolist = siolist;
+ failpt = ofail;
+ outtree = otree;
+ freearea(areanum--);
+ return(rv);
+}
+
+/* -------- do.c -------- */
+/* #include "sh.h" */
+
+/*
+ * built-in commands: doX
+ */
+
+int
+dolabel()
+{
+ return(0);
+}
+
+int
+dochdir(t)
+register struct op *t;
+{
+ register char *cp, *er;
+
+ if ((cp = t->words[1]) == NULL && (cp = homedir->value) == NULL)
+ er = ": no home directory";
+ else if(chdir(cp) < 0)
+ er = ": bad directory";
+ else
+ return(0);
+ prs(cp != NULL? cp: "cd");
+ err(er);
+ return(1);
+}
+
+int
+doshift(t)
+register struct op *t;
+{
+ register n;
+
+ n = t->words[1]? getn(t->words[1]): 1;
+ if(dolc < n) {
+ err("nothing to shift");
+ return(1);
+ }
+ dolv[n] = dolv[0];
+ dolv += n;
+ dolc -= n;
+ setval(lookup("#"), putn(dolc));
+ return(0);
+}
+
+/*
+ * execute login and newgrp directly
+ */
+int
+dologin(t)
+struct op *t;
+{
+ register char *cp;
+
+ if (talking) {
+ signal(SIGINT, SIG_DFL);
+ signal(SIGQUIT, SIG_DFL);
+ }
+ cp = rexecve(t->words[0], t->words, makenv());
+ prs(t->words[0]); prs(": "); err(cp);
+ return(1);
+}
+
+int
+doumask(t)
+register struct op *t;
+{
+ register int i, n;
+ register char *cp;
+
+ if ((cp = t->words[1]) == NULL) {
+ i = umask(0);
+ umask(i);
+ for (n=3*4; (n-=3) >= 0;)
+ putc('0'+((i>>n)&07));
+ putc('\n');
+ } else {
+ for (n=0; *cp>='0' && *cp<='9'; cp++)
+ n = n*8 + (*cp-'0');
+ umask(n);
+ }
+ return(0);
+}
+
+int
+doexec(t)
+register struct op *t;
+{
+ register i;
+ jmp_buf ex;
+ xint *ofail;
+
+ t->ioact = NULL;
+ for(i = 0; (t->words[i]=t->words[i+1]) != NULL; i++)
+ ;
+ if (i == 0)
+ return(1);
+ execflg = 1;
+ ofail = failpt;
+ if (setjmp(failpt = ex) == 0)
+ execute(t, NOPIPE, NOPIPE, FEXEC);
+ failpt = ofail;
+ execflg = 0;
+ return(1);
+}
+
+int
+dodot(t)
+struct op *t;
+{
+ register i;
+ register char *sp, *tp;
+ char *cp;
+
+ if ((cp = t->words[1]) == NULL)
+ return(0);
+ sp = any('/', cp)? ":": path->value;
+ while (*sp) {
+ tp = e.linep;
+ while (*sp && (*tp = *sp++) != ':')
+ tp++;
+ if (tp != e.linep)
+ *tp++ = '/';
+ for (i = 0; (*tp++ = cp[i++]) != '\0';)
+ ;
+ if ((i = open(e.linep, 0)) >= 0) {
+ exstat = 0;
+ next(remap(i));
+ return(exstat);
+ }
+ }
+ prs(cp);
+ err(": not found");
+ return(-1);
+}
+
+int
+dowait(t)
+struct op *t;
+{
+ register i;
+ register char *cp;
+
+ if ((cp = t->words[1]) != NULL) {
+ i = getn(cp);
+ if (i == 0)
+ return(0);
+ } else
+ i = -1;
+ setstatus(waitfor(i, 1));
+ return(0);
+}
+
+int
+doread(t)
+struct op *t;
+{
+ register char *cp, **wp;
+ register nb;
+ register int nl = 0;
+
+ if (t->words[1] == NULL) {
+ err("Usage: read name ...");
+ return(1);
+ }
+ for (wp = t->words+1; *wp; wp++) {
+ for (cp = e.linep; !nl && cp < elinep-1; cp++)
+ if ((nb = read(0, cp, sizeof(*cp))) != sizeof(*cp) ||
+ (nl = (*cp == '\n')) ||
+ (wp[1] && any(*cp, ifs->value)))
+ break;
+ *cp = 0;
+ if (nb <= 0)
+ break;
+ setval(lookup(*wp), e.linep);
+ }
+ return(nb <= 0);
+}
+
+int
+doeval(t)
+register struct op *t;
+{
+ return(RUN(awordlist, t->words+1, wdchar));
+}
+
+int
+dotrap(t)
+register struct op *t;
+{
+ register int n, i;
+ register int resetsig;
+
+ if (t->words[1] == NULL) {
+ for (i=0; i<=_NSIG; i++)
+ if (trap[i]) {
+ prn(i);
+ prs(": ");
+ prs(trap[i]);
+ prs("\n");
+ }
+ return(0);
+ }
+ resetsig = digit(*t->words[1]);
+ for (i = resetsig ? 1 : 2; t->words[i] != NULL; ++i) {
+ n = getsig(t->words[i]);
+ xfree(trap[n]);
+ trap[n] = 0;
+ if (!resetsig) {
+ if (*t->words[1] != '\0') {
+ trap[n] = strsave(t->words[1], 0);
+ setsig(n, sig);
+ } else
+ setsig(n, SIG_IGN);
+ } else {
+ if (talking)
+ if (n == SIGINT)
+ setsig(n, onintr);
+ else
+ setsig(n, n == SIGQUIT ? SIG_IGN
+ : SIG_DFL);
+ else
+ setsig(n, SIG_DFL);
+ }
+ }
+ return(0);
+}
+
+int
+getsig(s)
+char *s;
+{
+ register int n;
+
+ if ((n = getn(s)) < 0 || n > _NSIG) {
+ err("trap: bad signal number");
+ n = 0;
+ }
+ return(n);
+}
+
+void
+setsig(n, f)
+register n;
+_PROTOTYPE(void (*f), (int));
+{
+ if (n == 0)
+ return;
+ if (signal(n, SIG_IGN) != SIG_IGN || ourtrap[n]) {
+ ourtrap[n] = 1;
+ signal(n, f);
+ }
+}
+
+int
+getn(as)
+char *as;
+{
+ register char *s;
+ register n, m;
+
+ s = as;
+ m = 1;
+ if (*s == '-') {
+ m = -1;
+ s++;
+ }
+ for (n = 0; digit(*s); s++)
+ n = (n*10) + (*s-'0');
+ if (*s) {
+ prs(as);
+ err(": bad number");
+ }
+ return(n*m);
+}
+
+int
+dobreak(t)
+struct op *t;
+{
+ return(brkcontin(t->words[1], 1));
+}
+
+int
+docontinue(t)
+struct op *t;
+{
+ return(brkcontin(t->words[1], 0));
+}
+
+static int
+brkcontin(cp, val)
+register char *cp;
+int val;
+{
+ register struct brkcon *bc;
+ register nl;
+
+ nl = cp == NULL? 1: getn(cp);
+ if (nl <= 0)
+ nl = 999;
+ do {
+ if ((bc = brklist) == NULL)
+ break;
+ brklist = bc->nextlev;
+ } while (--nl);
+ if (nl) {
+ err("bad break/continue level");
+ return(1);
+ }
+ isbreak = val;
+ longjmp(bc->brkpt, 1);
+ /* NOTREACHED */
+}
+
+int
+doexit(t)
+struct op *t;
+{
+ register char *cp;
+
+ execflg = 0;
+ if ((cp = t->words[1]) != NULL)
+ setstatus(getn(cp));
+ leave();
+ /* NOTREACHED */
+}
+
+int
+doexport(t)
+struct op *t;
+{
+ rdexp(t->words+1, export, EXPORT);
+ return(0);
+}
+
+int
+doreadonly(t)
+struct op *t;
+{
+ rdexp(t->words+1, ronly, RONLY);
+ return(0);
+}
+
+static void
+rdexp(wp, f, key)
+register char **wp;
+void (*f)();
+int key;
+{
+ if (*wp != NULL) {
+ for (; *wp != NULL; wp++)
+ if (checkname(*wp))
+ (*f)(lookup(*wp));
+ else
+ badid(*wp);
+ } else
+ putvlist(key, 1);
+}
+
+static void
+badid(s)
+register char *s;
+{
+ prs(s);
+ err(": bad identifier");
+}
+
+int
+doset(t)
+register struct op *t;
+{
+ register struct var *vp;
+ register char *cp;
+ register n;
+
+ if ((cp = t->words[1]) == NULL) {
+ for (vp = vlist; vp; vp = vp->next)
+ varput(vp->name, 1);
+ return(0);
+ }
+ if (*cp == '-') {
+ /* bad: t->words++; */
+ for(n = 0; (t->words[n]=t->words[n+1]) != NULL; n++)
+ ;
+ if (*++cp == 0)
+ flag['x'] = flag['v'] = 0;
+ else
+ for (; *cp; cp++)
+ switch (*cp) {
+ case 'e':
+ if (!talking)
+ flag['e']++;
+ break;
+
+ default:
+ if (*cp>='a' && *cp<='z')
+ flag[*cp]++;
+ break;
+ }
+ setdash();
+ }
+ if (t->words[1]) {
+ t->words[0] = dolv[0];
+ for (n=1; t->words[n]; n++)
+ setarea((char *)t->words[n], 0);
+ dolc = n-1;
+ dolv = t->words;
+ setval(lookup("#"), putn(dolc));
+ setarea((char *)(dolv-1), 0);
+ }
+ return(0);
+}
+
+void
+varput(s, out)
+register char *s;
+int out;
+{
+ if (letnum(*s)) {
+ write(out, s, strlen(s));
+ write(out, "\n", 1);
+ }
+}
+
+
+#define SECS 60L
+#define MINS 3600L
+
+int
+dotimes()
+{
+ struct tms tbuf;
+
+ times(&tbuf);
+
+ prn((int)(tbuf.tms_cutime / MINS));
+ prs("m");
+ prn((int)((tbuf.tms_cutime % MINS) / SECS));
+ prs("s ");
+ prn((int)(tbuf.tms_cstime / MINS));
+ prs("m");
+ prn((int)((tbuf.tms_cstime % MINS) / SECS));
+ prs("s\n");
+ return(0);
+}
+
+struct builtin {
+ char *command;
+ int (*fn)();
+};
+static struct builtin builtin[] = {
+ ":", dolabel,
+ "cd", dochdir,
+ "shift", doshift,
+ "exec", doexec,
+ "wait", dowait,
+ "read", doread,
+ "eval", doeval,
+ "trap", dotrap,
+ "break", dobreak,
+ "continue", docontinue,
+ "exit", doexit,
+ "export", doexport,
+ "readonly", doreadonly,
+ "set", doset,
+ ".", dodot,
+ "umask", doumask,
+ "login", dologin,
+ "newgrp", dologin,
+ "times", dotimes,
+ 0,
+};
+
+int (*inbuilt(s))()
+register char *s;
+{
+ register struct builtin *bp;
+
+ for (bp = builtin; bp->command != NULL; bp++)
+ if (strcmp(bp->command, s) == 0)
+ return(bp->fn);
+ return((int(*)())NULL);
+}
+
diff --git a/release/picobsd/tinyware/msh/sh4.c b/release/picobsd/tinyware/msh/sh4.c
new file mode 100644
index 000000000000..ac2a5827aeea
--- /dev/null
+++ b/release/picobsd/tinyware/msh/sh4.c
@@ -0,0 +1,767 @@
+#define Extern extern
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <limits.h>
+#include <signal.h>
+#define _NSIG NSIG
+#include <errno.h>
+#include <setjmp.h>
+#include "sh.h"
+
+/* -------- eval.c -------- */
+/* #include "sh.h" */
+/* #include "word.h" */
+
+/*
+ * ${}
+ * `command`
+ * blank interpretation
+ * quoting
+ * glob
+ */
+
+_PROTOTYPE(static int expand, (char *cp, struct wdblock **wbp, int f ));
+_PROTOTYPE(static char *blank, (int f ));
+_PROTOTYPE(static int dollar, (int quoted ));
+_PROTOTYPE(static int grave, (int quoted ));
+_PROTOTYPE(void globname, (char *we, char *pp ));
+_PROTOTYPE(static char *generate, (char *start1, char *end1, char *middle, char *end ));
+_PROTOTYPE(static int anyspcl, (struct wdblock *wb ));
+_PROTOTYPE(static int xstrcmp, (char *p1, char *p2 ));
+_PROTOTYPE(void glob0, (char *a0, unsigned int a1, int a2, int (*a3)(char *, char *)));
+_PROTOTYPE(void glob1, (char *base, char *lim ));
+_PROTOTYPE(void glob2, (char *i, char *j ));
+_PROTOTYPE(void glob3, (char *i, char *j, char *k ));
+_PROTOTYPE(char *memcopy, (char *ato, char *from, int nb ));
+
+char **
+eval(ap, f)
+register char **ap;
+int f;
+{
+ struct wdblock *wb;
+ char **wp;
+ char **wf;
+ jmp_buf ev;
+
+ wp = NULL;
+ wb = NULL;
+ wf = NULL;
+ if (newenv(setjmp(errpt = ev)) == 0) {
+ while (*ap && isassign(*ap))
+ expand(*ap++, &wb, f & ~DOGLOB);
+ if (flag['k']) {
+ for (wf = ap; *wf; wf++) {
+ if (isassign(*wf))
+ expand(*wf, &wb, f & ~DOGLOB);
+ }
+ }
+ for (wb = addword((char *)0, wb); *ap; ap++) {
+ if (!flag['k'] || !isassign(*ap))
+ expand(*ap, &wb, f & ~DOKEY);
+ }
+ wb = addword((char *)0, wb);
+ wp = getwords(wb);
+ quitenv();
+ } else
+ gflg = 1;
+ return(gflg? (char **)NULL: wp);
+}
+
+/*
+ * Make the exported environment from the exported
+ * names in the dictionary. Keyword assignments
+ * will already have been done.
+ */
+char **
+makenv()
+
+{
+ register struct wdblock *wb;
+ register struct var *vp;
+
+ wb = NULL;
+ for (vp = vlist; vp; vp = vp->next)
+ if (vp->status & EXPORT)
+ wb = addword(vp->name, wb);
+ wb = addword((char *)0, wb);
+ return(getwords(wb));
+}
+
+char *
+evalstr(cp, f)
+register char *cp;
+int f;
+{
+ struct wdblock *wb;
+
+ wb = NULL;
+ if (expand(cp, &wb, f)) {
+ if (wb == NULL || wb->w_nword == 0 || (cp = wb->w_words[0]) == NULL)
+ cp = "";
+ DELETE(wb);
+ } else
+ cp = NULL;
+ return(cp);
+}
+
+static int
+expand(cp, wbp, f)
+register char *cp;
+register struct wdblock **wbp;
+int f;
+{
+ jmp_buf ev;
+
+ gflg = 0;
+ if (cp == NULL)
+ return(0);
+ if (!anys("$`'\"", cp) &&
+ !anys(ifs->value, cp) &&
+ ((f&DOGLOB)==0 || !anys("[*?", cp))) {
+ cp = strsave(cp, areanum);
+ if (f & DOTRIM)
+ unquote(cp);
+ *wbp = addword(cp, *wbp);
+ return(1);
+ }
+ if (newenv(setjmp(errpt = ev)) == 0) {
+ PUSHIO(aword, cp, strchar);
+ e.iobase = e.iop;
+ while ((cp = blank(f)) && gflg == 0) {
+ e.linep = cp;
+ cp = strsave(cp, areanum);
+ if ((f&DOGLOB) == 0) {
+ if (f & DOTRIM)
+ unquote(cp);
+ *wbp = addword(cp, *wbp);
+ } else
+ *wbp = glob(cp, *wbp);
+ }
+ quitenv();
+ } else
+ gflg = 1;
+ return(gflg == 0);
+}
+
+/*
+ * Blank interpretation and quoting
+ */
+static char *
+blank(f)
+int f;
+{
+ register c, c1;
+ register char *sp;
+ int scanequals, foundequals;
+
+ sp = e.linep;
+ scanequals = f & DOKEY;
+ foundequals = 0;
+
+loop:
+ switch (c = subgetc('"', foundequals)) {
+ case 0:
+ if (sp == e.linep)
+ return(0);
+ *e.linep++ = 0;
+ return(sp);
+
+ default:
+ if (f & DOBLANK && any(c, ifs->value))
+ goto loop;
+ break;
+
+ case '"':
+ case '\'':
+ scanequals = 0;
+ if (INSUB())
+ break;
+ for (c1 = c; (c = subgetc(c1, 1)) != c1;) {
+ if (c == 0)
+ break;
+ if (c == '\'' || !any(c, "$`\""))
+ c |= QUOTE;
+ *e.linep++ = c;
+ }
+ c = 0;
+ }
+ unget(c);
+ if (!letter(c))
+ scanequals = 0;
+ for (;;) {
+ c = subgetc('"', foundequals);
+ if (c == 0 ||
+ f & (DOBLANK && any(c, ifs->value)) ||
+ (!INSUB() && any(c, "\"'"))) {
+ scanequals = 0;
+ unget(c);
+ if (any(c, "\"'"))
+ goto loop;
+ break;
+ }
+ if (scanequals)
+ if (c == '=') {
+ foundequals = 1;
+ scanequals = 0;
+ }
+ else if (!letnum(c))
+ scanequals = 0;
+ *e.linep++ = c;
+ }
+ *e.linep++ = 0;
+ return(sp);
+}
+
+/*
+ * Get characters, substituting for ` and $
+ */
+int
+subgetc(ec, quoted)
+register char ec;
+int quoted;
+{
+ register char c;
+
+again:
+ c = getc(ec);
+ if (!INSUB() && ec != '\'') {
+ if (c == '`') {
+ if (grave(quoted) == 0)
+ return(0);
+ e.iop->task = XGRAVE;
+ goto again;
+ }
+ if (c == '$' && (c = dollar(quoted)) == 0) {
+ e.iop->task = XDOLL;
+ goto again;
+ }
+ }
+ return(c);
+}
+
+/*
+ * Prepare to generate the string returned by ${} substitution.
+ */
+static int
+dollar(quoted)
+int quoted;
+{
+ int otask;
+ struct io *oiop;
+ char *dolp;
+ register char *s, c, *cp;
+ struct var *vp;
+
+ c = readc();
+ s = e.linep;
+ if (c != '{') {
+ *e.linep++ = c;
+ if (letter(c)) {
+ while ((c = readc())!=0 && letnum(c))
+ if (e.linep < elinep)
+ *e.linep++ = c;
+ unget(c);
+ }
+ c = 0;
+ } else {
+ oiop = e.iop;
+ otask = e.iop->task;
+ e.iop->task = XOTHER;
+ while ((c = subgetc('"', 0))!=0 && c!='}' && c!='\n')
+ if (e.linep < elinep)
+ *e.linep++ = c;
+ if (oiop == e.iop)
+ e.iop->task = otask;
+ if (c != '}') {
+ err("unclosed ${");
+ gflg++;
+ return(c);
+ }
+ }
+ if (e.linep >= elinep) {
+ err("string in ${} too long");
+ gflg++;
+ e.linep -= 10;
+ }
+ *e.linep = 0;
+ if (*s)
+ for (cp = s+1; *cp; cp++)
+ if (any(*cp, "=-+?")) {
+ c = *cp;
+ *cp++ = 0;
+ break;
+ }
+ if (s[1] == 0 && (*s == '*' || *s == '@')) {
+ if (dolc > 1) {
+ /* currently this does not distinguish $* and $@ */
+ /* should check dollar */
+ e.linep = s;
+ PUSHIO(awordlist, dolv+1, dolchar);
+ return(0);
+ } else { /* trap the nasty ${=} */
+ s[0] = '1';
+ s[1] = 0;
+ }
+ }
+ vp = lookup(s);
+ if ((dolp = vp->value) == null) {
+ switch (c) {
+ case '=':
+ if (digit(*s)) {
+ err("cannot use ${...=...} with $n");
+ gflg++;
+ break;
+ }
+ setval(vp, cp);
+ dolp = vp->value;
+ break;
+
+ case '-':
+ dolp = strsave(cp, areanum);
+ break;
+
+ case '?':
+ if (*cp == 0) {
+ prs("missing value for ");
+ err(s);
+ } else
+ err(cp);
+ gflg++;
+ break;
+ }
+ } else if (c == '+')
+ dolp = strsave(cp, areanum);
+ if (flag['u'] && dolp == null) {
+ prs("unset variable: ");
+ err(s);
+ gflg++;
+ }
+ e.linep = s;
+ PUSHIO(aword, dolp, quoted ? qstrchar : strchar);
+ return(0);
+}
+
+/*
+ * Run the command in `...` and read its output.
+ */
+static int
+grave(quoted)
+int quoted;
+{
+ register char *cp;
+ register int i;
+ int pf[2];
+
+ for (cp = e.iop->argp->aword; *cp != '`'; cp++)
+ if (*cp == 0) {
+ err("no closing `");
+ return(0);
+ }
+ if (openpipe(pf) < 0)
+ return(0);
+ if ((i = fork()) == -1) {
+ closepipe(pf);
+ err("try again");
+ return(0);
+ }
+ if (i != 0) {
+ e.iop->argp->aword = ++cp;
+ close(pf[1]);
+ PUSHIO(afile, remap(pf[0]), quoted? qgravechar: gravechar);
+ return(1);
+ }
+ *cp = 0;
+ /* allow trapped signals */
+ for (i=0; i<=_NSIG; i++)
+ if (ourtrap[i] && signal(i, SIG_IGN) != SIG_IGN)
+ signal(i, SIG_DFL);
+ dup2(pf[1], 1);
+ closepipe(pf);
+ flag['e'] = 0;
+ flag['v'] = 0;
+ flag['n'] = 0;
+ cp = strsave(e.iop->argp->aword, 0);
+ areanum = 1;
+ freehere(areanum);
+ freearea(areanum); /* free old space */
+ e.oenv = NULL;
+ e.iop = (e.iobase = iostack) - 1;
+ unquote(cp);
+ talking = 0;
+ PUSHIO(aword, cp, nlchar);
+ onecommand();
+ exit(1);
+}
+
+char *
+unquote(as)
+register char *as;
+{
+ register char *s;
+
+ if ((s = as) != NULL)
+ while (*s)
+ *s++ &= ~QUOTE;
+ return(as);
+}
+
+/* -------- glob.c -------- */
+/* #include "sh.h" */
+
+/*
+ * glob
+ */
+
+#define scopy(x) strsave((x), areanum)
+#define BLKSIZ 512
+#define NDENT ((BLKSIZ+sizeof(struct dirent)-1)/sizeof(struct dirent))
+
+static struct wdblock *cl, *nl;
+static char spcl[] = "[?*";
+
+struct wdblock *
+glob(cp, wb)
+char *cp;
+struct wdblock *wb;
+{
+ register i;
+ register char *pp;
+
+ if (cp == 0)
+ return(wb);
+ i = 0;
+ for (pp = cp; *pp; pp++)
+ if (any(*pp, spcl))
+ i++;
+ else if (!any(*pp & ~QUOTE, spcl))
+ *pp &= ~QUOTE;
+ if (i != 0) {
+ for (cl = addword(scopy(cp), (struct wdblock *)0); anyspcl(cl); cl = nl) {
+ nl = newword(cl->w_nword*2);
+ for(i=0; i<cl->w_nword; i++) { /* for each argument */
+ for (pp = cl->w_words[i]; *pp; pp++)
+ if (any(*pp, spcl)) {
+ globname(cl->w_words[i], pp);
+ break;
+ }
+ if (*pp == '\0')
+ nl = addword(scopy(cl->w_words[i]), nl);
+ }
+ for(i=0; i<cl->w_nword; i++)
+ DELETE(cl->w_words[i]);
+ DELETE(cl);
+ }
+ for(i=0; i<cl->w_nword; i++)
+ unquote(cl->w_words[i]);
+ glob0((char *)cl->w_words, cl->w_nword, sizeof(char *), xstrcmp);
+ if (cl->w_nword) {
+ for (i=0; i<cl->w_nword; i++)
+ wb = addword(cl->w_words[i], wb);
+ DELETE(cl);
+ return(wb);
+ }
+ }
+ wb = addword(unquote(cp), wb);
+ return(wb);
+}
+
+void
+globname(we, pp)
+char *we;
+register char *pp;
+{
+ register char *np, *cp;
+ char *name, *gp, *dp;
+ int dn, j, n, k;
+ DIR *dirp;
+ struct dirent *de;
+ char dname[NAME_MAX+1];
+ struct stat dbuf;
+
+ for (np = we; np != pp; pp--)
+ if (pp[-1] == '/')
+ break;
+ for (dp = cp = space((int)(pp-np)+3); np < pp;)
+ *cp++ = *np++;
+ *cp++ = '.';
+ *cp = '\0';
+ for (gp = cp = space(strlen(pp)+1); *np && *np != '/';)
+ *cp++ = *np++;
+ *cp = '\0';
+ dirp = opendir(dp);
+ if (dirp == 0) {
+ DELETE(dp);
+ DELETE(gp);
+ return;
+ }
+ dname[NAME_MAX] = '\0';
+ while ((de=readdir(dirp))!=NULL) {
+ /* XXX Hmmm... What this could be? (abial) */
+ /*
+ if (ent[j].d_ino == 0)
+ continue;
+ */
+ strncpy(dname, de->d_name, NAME_MAX);
+ if (dname[0] == '.')
+ if (*gp != '.')
+ continue;
+ for(k=0; k<NAME_MAX; k++)
+ if (any(dname[k], spcl))
+ dname[k] |= QUOTE;
+ if (gmatch(dname, gp)) {
+ name = generate(we, pp, dname, np);
+ if (*np && !anys(np, spcl)) {
+ if (stat(name,&dbuf)) {
+ DELETE(name);
+ continue;
+ }
+ }
+ nl = addword(name, nl);
+ }
+ }
+ closedir(dirp);
+ DELETE(dp);
+ DELETE(gp);
+}
+
+/*
+ * generate a pathname as below.
+ * start..end1 / middle end
+ * the slashes come for free
+ */
+static char *
+generate(start1, end1, middle, end)
+char *start1;
+register char *end1;
+char *middle, *end;
+{
+ char *p;
+ register char *op, *xp;
+
+ p = op = space((int)(end1-start1)+strlen(middle)+strlen(end)+2);
+ for (xp = start1; xp != end1;)
+ *op++ = *xp++;
+ for (xp = middle; (*op++ = *xp++) != '\0';)
+ ;
+ op--;
+ for (xp = end; (*op++ = *xp++) != '\0';)
+ ;
+ return(p);
+}
+
+static int
+anyspcl(wb)
+register struct wdblock *wb;
+{
+ register i;
+ register char **wd;
+
+ wd = wb->w_words;
+ for (i=0; i<wb->w_nword; i++)
+ if (anys(spcl, *wd++))
+ return(1);
+ return(0);
+}
+
+static int
+xstrcmp(p1, p2)
+char *p1, *p2;
+{
+ return(strcmp(*(char **)p1, *(char **)p2));
+}
+
+/* -------- word.c -------- */
+/* #include "sh.h" */
+/* #include "word.h" */
+
+#define NSTART 16 /* default number of words to allow for initially */
+
+struct wdblock *
+newword(nw)
+register int nw;
+{
+ register struct wdblock *wb;
+
+ wb = (struct wdblock *) space(sizeof(*wb) + nw*sizeof(char *));
+ wb->w_bsize = nw;
+ wb->w_nword = 0;
+ return(wb);
+}
+
+struct wdblock *
+addword(wd, wb)
+char *wd;
+register struct wdblock *wb;
+{
+ register struct wdblock *wb2;
+ register nw;
+
+ if (wb == NULL)
+ wb = newword(NSTART);
+ if ((nw = wb->w_nword) >= wb->w_bsize) {
+ wb2 = newword(nw * 2);
+ memcopy((char *)wb2->w_words, (char *)wb->w_words, nw*sizeof(char *));
+ wb2->w_nword = nw;
+ DELETE(wb);
+ wb = wb2;
+ }
+ wb->w_words[wb->w_nword++] = wd;
+ return(wb);
+}
+
+char **
+getwords(wb)
+register struct wdblock *wb;
+{
+ register char **wd;
+ register nb;
+
+ if (wb == NULL)
+ return((char **)NULL);
+ if (wb->w_nword == 0) {
+ DELETE(wb);
+ return((char **)NULL);
+ }
+ wd = (char **) space(nb = sizeof(*wd) * wb->w_nword);
+ memcopy((char *)wd, (char *)wb->w_words, nb);
+ DELETE(wb); /* perhaps should done by caller */
+ return(wd);
+}
+
+_PROTOTYPE(int (*func), (char *, char *));
+int globv;
+
+void
+glob0(a0, a1, a2, a3)
+char *a0;
+unsigned a1;
+int a2;
+_PROTOTYPE(int (*a3), (char *, char *));
+{
+ func = a3;
+ globv = a2;
+ glob1(a0, a0 + a1 * a2);
+}
+
+void
+glob1(base, lim)
+char *base, *lim;
+{
+ register char *i, *j;
+ int v2;
+ char *lptr, *hptr;
+ int c;
+ unsigned n;
+
+
+ v2 = globv;
+
+top:
+ if ((n=(int)(lim-base)) <= v2)
+ return;
+ n = v2 * (n / (2*v2));
+ hptr = lptr = base+n;
+ i = base;
+ j = lim-v2;
+ for(;;) {
+ if (i < lptr) {
+ if ((c = (*func)(i, lptr)) == 0) {
+ glob2(i, lptr -= v2);
+ continue;
+ }
+ if (c < 0) {
+ i += v2;
+ continue;
+ }
+ }
+
+begin:
+ if (j > hptr) {
+ if ((c = (*func)(hptr, j)) == 0) {
+ glob2(hptr += v2, j);
+ goto begin;
+ }
+ if (c > 0) {
+ if (i == lptr) {
+ glob3(i, hptr += v2, j);
+ i = lptr += v2;
+ goto begin;
+ }
+ glob2(i, j);
+ j -= v2;
+ i += v2;
+ continue;
+ }
+ j -= v2;
+ goto begin;
+ }
+
+
+ if (i == lptr) {
+ if (lptr-base >= lim-hptr) {
+ glob1(hptr+v2, lim);
+ lim = lptr;
+ } else {
+ glob1(base, lptr);
+ base = hptr+v2;
+ }
+ goto top;
+ }
+
+
+ glob3(j, lptr -= v2, i);
+ j = hptr -= v2;
+ }
+}
+
+void
+glob2(i, j)
+char *i, *j;
+{
+ register char *index1, *index2, c;
+ int m;
+
+ m = globv;
+ index1 = i;
+ index2 = j;
+ do {
+ c = *index1;
+ *index1++ = *index2;
+ *index2++ = c;
+ } while(--m);
+}
+
+void
+glob3(i, j, k)
+char *i, *j, *k;
+{
+ register char *index1, *index2, *index3;
+ int c;
+ int m;
+
+ m = globv;
+ index1 = i;
+ index2 = j;
+ index3 = k;
+ do {
+ c = *index1;
+ *index1++ = *index3;
+ *index3++ = *index2;
+ *index2++ = c;
+ } while(--m);
+}
+
+char *
+memcopy(ato, from, nb)
+register char *ato, *from;
+register int nb;
+{
+ register char *to;
+
+ to = ato;
+ while (--nb >= 0)
+ *to++ = *from++;
+ return(ato);
+}
diff --git a/release/picobsd/tinyware/msh/sh5.c b/release/picobsd/tinyware/msh/sh5.c
new file mode 100644
index 000000000000..74feac9cebce
--- /dev/null
+++ b/release/picobsd/tinyware/msh/sh5.c
@@ -0,0 +1,675 @@
+#define Extern extern
+#include <sys/types.h>
+#include <signal.h>
+#define _NSIG NSIG
+#include <errno.h>
+#include <setjmp.h>
+#include "sh.h"
+
+/* -------- io.c -------- */
+/* #include "sh.h" */
+
+/*
+ * shell IO
+ */
+
+static struct iobuf sharedbuf = {AFID_NOBUF};
+static struct iobuf mainbuf = {AFID_NOBUF};
+static unsigned bufid = AFID_ID; /* buffer id counter */
+
+struct ioarg temparg = {0, 0, 0, AFID_NOBUF, 0};
+
+_PROTOTYPE(static void readhere, (char **name, char *s, int ec ));
+_PROTOTYPE(void pushio, (struct ioarg *argp, int (*fn)()));
+_PROTOTYPE(static int xxchar, (struct ioarg *ap ));
+_PROTOTYPE(void tempname, (char *tname ));
+
+int
+getc(ec)
+register int ec;
+{
+ register int c;
+
+ if(e.linep > elinep) {
+ while((c=readc()) != '\n' && c)
+ ;
+ err("input line too long");
+ gflg++;
+ return(c);
+ }
+ c = readc();
+ if (ec != '\'' && e.iop->task != XGRAVE) {
+ if(c == '\\') {
+ c = readc();
+ if (c == '\n' && ec != '\"')
+ return(getc(ec));
+ c |= QUOTE;
+ }
+ }
+ return(c);
+}
+
+void
+unget(c)
+int c;
+{
+ if (e.iop >= e.iobase)
+ e.iop->peekc = c;
+}
+
+int
+eofc()
+
+{
+ return e.iop < e.iobase || (e.iop->peekc == 0 && e.iop->prev == 0);
+}
+
+int
+readc()
+{
+ register c;
+
+ for (; e.iop >= e.iobase; e.iop--)
+ if ((c = e.iop->peekc) != '\0') {
+ e.iop->peekc = 0;
+ return(c);
+ }
+ else {
+ if (e.iop->prev != 0) {
+ if ((c = (*e.iop->iofn)(e.iop->argp, e.iop)) != '\0') {
+ if (c == -1) {
+ e.iop++;
+ continue;
+ }
+ if (e.iop == iostack)
+ ioecho(c);
+ return(e.iop->prev = c);
+ }
+ else if (e.iop->task == XIO && e.iop->prev != '\n') {
+ e.iop->prev = 0;
+ if (e.iop == iostack)
+ ioecho('\n');
+ return '\n';
+ }
+ }
+ if (e.iop->task == XIO) {
+ if (multiline)
+ return e.iop->prev = 0;
+ if (talking && e.iop == iostack+1)
+ prs(prompt->value);
+ }
+ }
+ if (e.iop >= iostack)
+ return(0);
+ leave();
+ /* NOTREACHED */
+}
+
+void
+ioecho(c)
+char c;
+{
+ if (flag['v'])
+ write(2, &c, sizeof c);
+}
+
+void
+pushio(argp, fn)
+struct ioarg *argp;
+int (*fn)();
+{
+ if (++e.iop >= &iostack[NPUSH]) {
+ e.iop--;
+ err("Shell input nested too deeply");
+ gflg++;
+ return;
+ }
+ e.iop->iofn = fn;
+
+ if (argp->afid != AFID_NOBUF)
+ e.iop->argp = argp;
+ else {
+ e.iop->argp = ioargstack + (e.iop - iostack);
+ *e.iop->argp = *argp;
+ e.iop->argp->afbuf = e.iop == &iostack[0] ? &mainbuf : &sharedbuf;
+ if (isatty(e.iop->argp->afile) == 0 &&
+ (e.iop == &iostack[0] ||
+ lseek(e.iop->argp->afile, 0L, 1) != -1)) {
+ if (++bufid == AFID_NOBUF)
+ bufid = AFID_ID;
+ e.iop->argp->afid = bufid;
+ }
+ }
+
+ e.iop->prev = ~'\n';
+ e.iop->peekc = 0;
+ e.iop->xchar = 0;
+ e.iop->nlcount = 0;
+ if (fn == filechar || fn == linechar)
+ e.iop->task = XIO;
+ else if (fn == gravechar || fn == qgravechar)
+ e.iop->task = XGRAVE;
+ else
+ e.iop->task = XOTHER;
+}
+
+struct io *
+setbase(ip)
+struct io *ip;
+{
+ register struct io *xp;
+
+ xp = e.iobase;
+ e.iobase = ip;
+ return(xp);
+}
+
+/*
+ * Input generating functions
+ */
+
+/*
+ * Produce the characters of a string, then a newline, then EOF.
+ */
+int
+nlchar(ap)
+register struct ioarg *ap;
+{
+ register int c;
+
+ if (ap->aword == NULL)
+ return(0);
+ if ((c = *ap->aword++) == 0) {
+ ap->aword = NULL;
+ return('\n');
+ }
+ return(c);
+}
+
+/*
+ * Given a list of words, produce the characters
+ * in them, with a space after each word.
+ */
+int
+wdchar(ap)
+register struct ioarg *ap;
+{
+ register char c;
+ register char **wl;
+
+ if ((wl = ap->awordlist) == NULL)
+ return(0);
+ if (*wl != NULL) {
+ if ((c = *(*wl)++) != 0)
+ return(c & 0177);
+ ap->awordlist++;
+ return(' ');
+ }
+ ap->awordlist = NULL;
+ return('\n');
+}
+
+/*
+ * Return the characters of a list of words,
+ * producing a space between them.
+ */
+int
+dolchar(ap)
+register struct ioarg *ap;
+{
+ register char *wp;
+
+ if ((wp = *ap->awordlist++) != NULL) {
+ PUSHIO(aword, wp, *ap->awordlist == NULL? strchar: xxchar);
+ return(-1);
+ }
+ return(0);
+}
+
+static int
+xxchar(ap)
+register struct ioarg *ap;
+{
+ register int c;
+
+ if (ap->aword == NULL)
+ return(0);
+ if ((c = *ap->aword++) == '\0') {
+ ap->aword = NULL;
+ return(' ');
+ }
+ return(c);
+}
+
+/*
+ * Produce the characters from a single word (string).
+ */
+int
+strchar(ap)
+register struct ioarg *ap;
+{
+ register int c;
+
+ if (ap->aword == NULL || (c = *ap->aword++) == 0)
+ return(0);
+ return(c);
+}
+
+/*
+ * Produce quoted characters from a single word (string).
+ */
+int
+qstrchar(ap)
+register struct ioarg *ap;
+{
+ register int c;
+
+ if (ap->aword == NULL || (c = *ap->aword++) == 0)
+ return(0);
+ return(c|QUOTE);
+}
+
+/*
+ * Return the characters from a file.
+ */
+int
+filechar(ap)
+register struct ioarg *ap;
+{
+ register int i;
+ char c;
+ struct iobuf *bp = ap->afbuf;
+
+ if (ap->afid != AFID_NOBUF) {
+ if ((i = ap->afid != bp->id) || bp->bufp == bp->ebufp) {
+ if (i)
+ lseek(ap->afile, ap->afpos, 0);
+ do {
+ i = read(ap->afile, bp->buf, sizeof(bp->buf));
+ } while (i < 0 && errno == EINTR);
+ if (i <= 0) {
+ closef(ap->afile);
+ return 0;
+ }
+ bp->id = ap->afid;
+ bp->ebufp = (bp->bufp = bp->buf) + i;
+ }
+ ap->afpos++;
+ return *bp->bufp++ & 0177;
+ }
+
+ do {
+ i = read(ap->afile, &c, sizeof(c));
+ } while (i < 0 && errno == EINTR);
+ return(i == sizeof(c)? c&0177: (closef(ap->afile), 0));
+}
+
+/*
+ * Return the characters from a here temp file.
+ */
+int
+herechar(ap)
+register struct ioarg *ap;
+{
+ char c;
+
+
+ if (read(ap->afile, &c, sizeof(c)) != sizeof(c)) {
+ close(ap->afile);
+ c = 0;
+ }
+ return (c);
+
+}
+
+/*
+ * Return the characters produced by a process (`...`).
+ * Quote them if required, and remove any trailing newline characters.
+ */
+int
+gravechar(ap, iop)
+struct ioarg *ap;
+struct io *iop;
+{
+ register int c;
+
+ if ((c = qgravechar(ap, iop)&~QUOTE) == '\n')
+ c = ' ';
+ return(c);
+}
+
+int
+qgravechar(ap, iop)
+register struct ioarg *ap;
+struct io *iop;
+{
+ register int c;
+
+ if (iop->xchar) {
+ if (iop->nlcount) {
+ iop->nlcount--;
+ return('\n'|QUOTE);
+ }
+ c = iop->xchar;
+ iop->xchar = 0;
+ } else if ((c = filechar(ap)) == '\n') {
+ iop->nlcount = 1;
+ while ((c = filechar(ap)) == '\n')
+ iop->nlcount++;
+ iop->xchar = c;
+ if (c == 0)
+ return(c);
+ iop->nlcount--;
+ c = '\n';
+ }
+ return(c!=0? c|QUOTE: 0);
+}
+
+/*
+ * Return a single command (usually the first line) from a file.
+ */
+int
+linechar(ap)
+register struct ioarg *ap;
+{
+ register int c;
+
+ if ((c = filechar(ap)) == '\n') {
+ if (!multiline) {
+ closef(ap->afile);
+ ap->afile = -1; /* illegal value */
+ }
+ }
+ return(c);
+}
+
+void
+prs(s)
+register char *s;
+{
+ if (*s)
+ write(2, s, strlen(s));
+}
+
+void
+putc(c)
+char c;
+{
+ write(2, &c, sizeof c);
+}
+
+void
+prn(u)
+unsigned u;
+{
+ prs(itoa(u, 0));
+}
+
+void
+closef(i)
+register int i;
+{
+ if (i > 2)
+ close(i);
+}
+
+void
+closeall()
+{
+ register u;
+
+ for (u=NUFILE; u<NOFILE;)
+ close(u++);
+}
+
+/*
+ * remap fd into Shell's fd space
+ */
+int
+remap(fd)
+register int fd;
+{
+ register int i;
+ int map[NOFILE];
+
+ if (fd < e.iofd) {
+ for (i=0; i<NOFILE; i++)
+ map[i] = 0;
+ do {
+ map[fd] = 1;
+ fd = dup(fd);
+ } while (fd >= 0 && fd < e.iofd);
+ for (i=0; i<NOFILE; i++)
+ if (map[i])
+ close(i);
+ if (fd < 0)
+ err("too many files open in shell");
+ }
+ return(fd);
+}
+
+int
+openpipe(pv)
+register int *pv;
+{
+ register int i;
+
+ if ((i = pipe(pv)) < 0)
+ err("can't create pipe - try again");
+ return(i);
+}
+
+void
+closepipe(pv)
+register int *pv;
+{
+ if (pv != NULL) {
+ close(*pv++);
+ close(*pv);
+ }
+}
+
+/* -------- here.c -------- */
+/* #include "sh.h" */
+
+/*
+ * here documents
+ */
+
+struct here {
+ char *h_tag;
+ int h_dosub;
+ struct ioword *h_iop;
+ struct here *h_next;
+};
+
+static struct here *inhere; /* list of hear docs while parsing */
+static struct here *acthere; /* list of active here documents */
+
+void
+markhere(s, iop)
+register char *s;
+struct ioword *iop;
+{
+ register struct here *h, *lh;
+
+ h = (struct here *) space(sizeof(struct here));
+ if (h == 0)
+ return;
+ h->h_tag = evalstr(s, DOSUB);
+ if (h->h_tag == 0)
+ return;
+ h->h_iop = iop;
+ iop->io_name = 0;
+ h->h_next = NULL;
+ if (inhere == 0)
+ inhere = h;
+ else
+ for (lh = inhere; lh!=NULL; lh = lh->h_next)
+ if (lh->h_next == 0) {
+ lh->h_next = h;
+ break;
+ }
+ iop->io_flag |= IOHERE|IOXHERE;
+ for (s = h->h_tag; *s; s++)
+ if (*s & QUOTE) {
+ iop->io_flag &= ~ IOXHERE;
+ *s &= ~ QUOTE;
+ }
+ h->h_dosub = iop->io_flag & IOXHERE;
+}
+
+void
+gethere()
+{
+ register struct here *h, *hp;
+
+ /* Scan here files first leaving inhere list in place */
+ for (hp = h = inhere; h != NULL; hp = h, h = h->h_next)
+ readhere(&h->h_iop->io_name, h->h_tag, h->h_dosub? 0: '\'');
+
+ /* Make inhere list active - keep list intact for scraphere */
+ if (hp != NULL) {
+ hp->h_next = acthere;
+ acthere = inhere;
+ inhere = NULL;
+ }
+}
+
+static void
+readhere(name, s, ec)
+char **name;
+register char *s;
+int ec;
+{
+ int tf;
+ char tname[30];
+ register c;
+ jmp_buf ev;
+ char line [LINELIM+1];
+ char *next;
+
+ tempname(tname);
+ *name = strsave(tname, areanum);
+ tf = creat(tname, 0600);
+ if (tf < 0)
+ return;
+ if (newenv(setjmp(errpt = ev)) != 0)
+ unlink(tname);
+ else {
+ pushio(e.iop->argp, e.iop->iofn);
+ e.iobase = e.iop;
+ for (;;) {
+ if (talking && e.iop <= iostack)
+ prs(cprompt->value);
+ next = line;
+ while ((c = getc(ec)) != '\n' && c) {
+ if (ec == '\'')
+ c &= ~ QUOTE;
+ if (next >= &line[LINELIM]) {
+ c = 0;
+ break;
+ }
+ *next++ = c;
+ }
+ *next = 0;
+ if (strcmp(s, line) == 0 || c == 0)
+ break;
+ *next++ = '\n';
+ write (tf, line, (int)(next-line));
+ }
+ if (c == 0) {
+ prs("here document `"); prs(s); err("' unclosed");
+ }
+ quitenv();
+ }
+ close(tf);
+}
+
+/*
+ * open here temp file.
+ * if unquoted here, expand here temp file into second temp file.
+ */
+int
+herein(hname, xdoll)
+char *hname;
+int xdoll;
+{
+ register hf, tf;
+
+ if (hname == 0)
+ return(-1);
+ hf = open(hname, 0);
+ if (hf < 0)
+ return (-1);
+ if (xdoll) {
+ char c;
+ char tname[30];
+ jmp_buf ev;
+
+ tempname(tname);
+ if ((tf = creat(tname, 0600)) < 0)
+ return (-1);
+ if (newenv(setjmp(errpt = ev)) == 0) {
+ PUSHIO(afile, hf, herechar);
+ setbase(e.iop);
+ while ((c = subgetc(0, 0)) != 0) {
+ c &= ~ QUOTE;
+ write(tf, &c, sizeof c);
+ }
+ quitenv();
+ } else
+ unlink(tname);
+ close(tf);
+ tf = open(tname, 0);
+ unlink(tname);
+ return (tf);
+ } else
+ return (hf);
+}
+
+void
+scraphere()
+{
+ register struct here *h;
+
+ for (h = inhere; h != NULL; h = h->h_next) {
+ if (h->h_iop && h->h_iop->io_name)
+ unlink(h->h_iop->io_name);
+ }
+ inhere = NULL;
+}
+
+/* unlink here temp files before a freearea(area) */
+void
+freehere(area)
+int area;
+{
+ register struct here *h, *hl;
+
+ hl = NULL;
+ for (h = acthere; h != NULL; h = h->h_next)
+ if (getarea((char *) h) >= area) {
+ if (h->h_iop->io_name != NULL)
+ unlink(h->h_iop->io_name);
+ if (hl == NULL)
+ acthere = h->h_next;
+ else
+ hl->h_next = h->h_next;
+ } else
+ hl = h;
+}
+
+void
+tempname(tname)
+char *tname;
+{
+ static int inc;
+ register char *cp, *lp;
+
+ for (cp = tname, lp = "/tmp/shtm"; (*cp = *lp++) != '\0'; cp++)
+ ;
+ lp = putn(getpid()*1000 + inc++);
+ for (; (*cp = *lp++) != '\0'; cp++)
+ ;
+}
diff --git a/release/picobsd/tinyware/msh/sh6.c b/release/picobsd/tinyware/msh/sh6.c
new file mode 100644
index 000000000000..bd3ba05aeab3
--- /dev/null
+++ b/release/picobsd/tinyware/msh/sh6.c
@@ -0,0 +1,9 @@
+#define Extern
+
+#include <sys/types.h>
+#include <signal.h>
+#define _NSIG NSIG
+#include <errno.h>
+#include <setjmp.h>
+#include "sh.h"
+
diff --git a/release/picobsd/tinyware/ns/Makefile b/release/picobsd/tinyware/ns/Makefile
new file mode 100644
index 000000000000..5fff143ef5f8
--- /dev/null
+++ b/release/picobsd/tinyware/ns/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+PROG=ns
+SRCS= ns.c
+CFLAGS+=-DBRIDGING
+NOMAN=yes
+
+.include <bsd.prog.mk>
+
+
diff --git a/release/picobsd/tinyware/ns/README b/release/picobsd/tinyware/ns/README
new file mode 100644
index 000000000000..830915c9e603
--- /dev/null
+++ b/release/picobsd/tinyware/ns/README
@@ -0,0 +1,43 @@
+Warsaw, 1998.07.20
+
+ Small replacement for netstat
+ -----------------------------
+
+This program implements some basic functionality subset of normal netstat -
+it can display the routing table and protocol statistics.
+
+Large part of the code dealing with retrieving the routing table via sysctl(3)
+was taken from code examples written by Richard Stevens to accompany his
+excellent book.
+
+Usage
+-----
+
+ ns [-rsi] [-p proto] [-w wait]
+
+where
+
+ -r print routing table (default)
+ -s print protocol statistics
+ -i print interface statistics
+ -p proto display only statistics related to this
+ protocol, where 'proto' is one of:
+ - ip
+ - tcp
+ - udp
+ - icmp
+ - bdg - bridging stats, if 'ns' was compiled with
+ bridging support (flag BRIDGING in Makefile)
+ -w wait continuous display, repeat every 'wait' seconds.
+
+Bugs
+----
+
+* 'ns' doesn't resolve IP adresses to names
+* well, real netstat provides _much_ more information... but this one needs
+ to be small, right? :-)
+
+Andrzej Bialecki
+<abial@freebsd.org>
+
+$FreeBSD$
diff --git a/release/picobsd/tinyware/ns/ns.c b/release/picobsd/tinyware/ns/ns.c
new file mode 100644
index 000000000000..0e2eeff7d4c3
--- /dev/null
+++ b/release/picobsd/tinyware/ns/ns.c
@@ -0,0 +1,767 @@
+/*-
+ * Copyright (c) 1998 Andrzej Bialecki
+ * 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$
+ */
+
+
+/*
+ * Small replacement for netstat. Uses only sysctl(3) to get the info.
+ */
+
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+#include <osreldate.h>
+#include <err.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/sysctl.h>
+#include <sys/socket.h>
+#include <net/if.h>
+#include <netinet/in_systm.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/icmp_var.h>
+#include <netinet/ip_var.h>
+#include <netinet/tcp.h>
+#include <netinet/tcp_timer.h>
+#include <netinet/tcp_var.h>
+#include <netinet/udp.h>
+#include <netinet/udp_var.h>
+#include <net/route.h>
+#include <net/if_dl.h>
+#include <sys/un.h>
+
+#ifdef BRIDGING
+#include <net/if_types.h> /* IFT_ETHER */
+#include <net/ethernet.h>
+#include <net/bridge.h>
+#endif
+
+char *progname;
+int iflag=0;
+int rflag=0;
+int sflag=0;
+int pflag=0;
+int wflag=0; /* repeat every wait seconds */
+
+extern char *optarg;
+extern int optind;
+
+void
+usage()
+{
+ fprintf(stderr,"\n%s [-nrsi] [-p proto] [-w wait]\n",progname);
+#ifdef BRIDGING
+ fprintf(stderr," proto: {ip|tcp|udp|icmp|bdg}\n\n");
+#else
+ fprintf(stderr," proto: {ip|tcp|udp|icmp}\n\n");
+#endif
+}
+
+int if_num;
+
+/*
+ * The following parts related to retrieving the routing table and
+ * interface information, were borrowed from R. Stevens' code examples
+ * accompanying his excellent book. Thanks!
+ */
+
+char *
+sock_ntop(const struct sockaddr *sa, size_t salen)
+{
+ char portstr[7];
+ static char str[128]; /* Unix domain is largest */
+
+ switch (sa->sa_family) {
+ case 255: {
+ u_long mask;
+ u_int index = 1 << 31;
+ u_short new_mask = 0;
+ int i;
+
+ i=0;
+ mask = ntohl(((struct sockaddr_in *)sa)->sin_addr.s_addr);
+
+ while(mask & index) {
+ new_mask++;
+ index >>= 1;
+ }
+ sprintf(str,"/%hu", new_mask);
+ return(str);
+ }
+ case AF_UNSPEC:
+ case AF_INET: {
+ struct sockaddr_in *sin = (struct sockaddr_in *) sa;
+
+ if (inet_ntop(AF_INET, &sin->sin_addr, str, sizeof(str)) == NULL)
+ return(NULL);
+ if (ntohs(sin->sin_port)!=0) {
+ snprintf(portstr, sizeof(portstr), ".%d", ntohs(sin->sin_port));
+ strcat(str, portstr);
+ }
+ if(strcmp(str,"0.0.0.0")==0) sprintf(str,"default");
+ return(str);
+ }
+ case AF_UNIX: {
+ struct sockaddr_un *unp = (struct sockaddr_un *) sa;
+
+ /* OK to have no pathname bound to the socket: happens on
+ every connect() unless client calls bind() first. */
+ if (unp->sun_path[0] == 0)
+ strcpy(str, "(no pathname bound)");
+ else
+ snprintf(str, sizeof(str), "%s", unp->sun_path);
+ return(str);
+ }
+ case AF_LINK: {
+ struct sockaddr_dl *sdl = (struct sockaddr_dl *) sa;
+
+ if (sdl->sdl_nlen > 0) {
+ bcopy(&sdl->sdl_data[0], str, sdl->sdl_nlen);
+ str[sdl->sdl_nlen]='\0';
+ } else
+ snprintf(str, sizeof(str), "link#%d", sdl->sdl_index);
+ return(str);
+ }
+ default:
+ snprintf(str, sizeof(str), "sock_ntop: unknown AF_xxx: %d, len %d",
+ sa->sa_family, salen);
+ return(str);
+ }
+ return (NULL);
+}
+
+char *
+Sock_ntop(const struct sockaddr *sa, size_t salen)
+{
+ char *ptr;
+
+ if ( (ptr = sock_ntop(sa, salen)) == NULL)
+ err(1,"sock_ntop error"); /* inet_ntop() sets errno */
+ return(ptr);
+}
+
+
+#define ROUNDUP(a,size) (((a) & ((size)-1))?(1+((a)|((size)-1))):(a))
+
+#define NEXT_SA(ap) ap=(struct sockaddr *) \
+ ((caddr_t)ap+(ap->sa_len?ROUNDUP(ap->sa_len,sizeof(u_long)):\
+ sizeof(u_long)))
+
+void
+get_rtaddrs(int addrs, struct sockaddr *sa, struct sockaddr **rti_info)
+{
+ int i;
+
+ for(i=0;i<RTAX_MAX;i++) {
+ if(addrs &(1<<i)) {
+ rti_info[i]=sa;
+ NEXT_SA(sa);
+ } else
+ rti_info[i]=NULL;
+ }
+}
+
+void
+get_flags(char *buf, int flags)
+{
+ if(flags & 0x1) {
+ strcat(buf,"U");
+ }
+ if(flags & 0x2) {
+ strcat(buf,"G");
+ }
+ if(flags & 0x4) {
+ strcat(buf,"H");
+ }
+ if(flags & 0x8) {
+ strcat(buf,"r");
+ }
+ if(flags & 0x10) {
+ strcat(buf,"d");
+ }
+ /*
+ if(flags & 0x20) {
+ strcat(buf,"mod,");
+ }
+ */
+ if(flags & 0x100) {
+ strcat(buf,"C");
+ }
+ if(flags & 0x400) {
+ strcat(buf,"L");
+ }
+ if(flags & 0x800) {
+ strcat(buf,"S");
+ }
+ if(flags & 0x10000) {
+ strcat(buf,"c");
+ }
+ if(flags & 0x20000) {
+ strcat(buf,"W");
+ }
+ /*
+ if(flags & 0x200000) {
+ strcat(buf,",LOC");
+ }
+ */
+ if(flags & 0x400000) {
+ strcat(buf,"b");
+ }
+ /*
+ if(flags & 0x800000) {
+ strcat(buf,",MCA");
+ }
+ */
+}
+
+int
+print_routing(char *proto)
+{
+ int mib[6],i=0,rt_len,if_len;
+ char *rt_buf,*if_buf,*next,*lim;
+ struct rt_msghdr *rtm;
+ struct if_msghdr *ifm,**ifm_table;
+ struct ifa_msghdr *ifam;
+ struct sockaddr *sa,*sa1,*rti_info[RTAX_MAX],**if_table;
+ struct rt_metrics rm;
+ char fbuf[50];
+
+ /* Get the routing table */
+ mib[0]=CTL_NET;
+ mib[1]=PF_ROUTE;
+ mib[2]=0;
+ mib[3]=0;
+ mib[4]=NET_RT_DUMP;
+ mib[5]=0;
+ /* Estimate the size of table */
+ if(sysctl(mib,6,NULL,&rt_len,NULL,0)==-1) {
+ perror("sysctl size");
+ exit(-1);
+ }
+ if((rt_buf=(char *)malloc(rt_len))==NULL) {
+ perror("malloc");
+ exit(-1);
+ }
+ /* Now get it. */
+ if(sysctl(mib,6,rt_buf,&rt_len,NULL,0)==-1) {
+ perror("sysctl get");
+ exit(-1);
+ }
+ /* Get the interfaces table */
+ mib[0]=CTL_NET;
+ mib[1]=PF_ROUTE;
+ mib[2]=0;
+ mib[3]=0;
+ mib[4]=NET_RT_IFLIST;
+ mib[5]=0;
+ /* Estimate the size of table */
+ if(sysctl(mib,6,NULL,&if_len,NULL,0)==-1) {
+ perror("sysctl size");
+ exit(-1);
+ }
+ if((if_buf=(char *)malloc(if_len))==NULL) {
+ perror("malloc");
+ exit(-1);
+ }
+ /* Now get it. */
+ if(sysctl(mib,6,if_buf,&if_len,NULL,0)==-1) {
+ perror("sysctl get");
+ exit(-1);
+ }
+ lim=if_buf+if_len;
+ i=0;
+ for(next=if_buf,i=0;next<lim;next+=ifm->ifm_msglen) {
+ ifm=(struct if_msghdr *)next;
+ i++;
+ }
+ if_num=i;
+ if_table=(struct sockaddr **)calloc(i,sizeof(struct sockaddr));
+ ifm_table=(struct if_msghdr **)calloc(i,sizeof(struct if_msghdr));
+ if (iflag) {
+ printf("\nInterface table:\n");
+ printf("----------------\n");
+ printf("Name Mtu Network Address "
+ "Ipkts Ierrs Opkts Oerrs Coll\n");
+ }
+ i=0;
+ for(next=if_buf;next<lim;next+=ifm->ifm_msglen) {
+
+ ifm=(struct if_msghdr *)next;
+ if_table[i]=(struct sockaddr *)(ifm+1);
+ ifm_table[i]=ifm;
+
+ sa = if_table[i];
+ if (iflag && sa->sa_family == AF_LINK) {
+ struct sockaddr_dl *sdl = (struct sockaddr_dl *) sa;
+
+ printf("%-4s %-5d <Link> ",
+ sock_ntop(if_table[i], if_table[i]->sa_len),
+ ifm->ifm_data.ifi_mtu);
+ if ( sdl->sdl_alen == 6) {
+ unsigned char *p = sdl->sdl_data + sdl->sdl_nlen ;
+ printf("%02x:%02x:%02x:%02x:%02x:%02x ",
+ p[0], p[1], p[2], p[3], p[4], p[5] );
+ } else
+ printf(" ");
+ printf("%9d%6d%9d%6d%6d\n",
+ ifm->ifm_data.ifi_ipackets,
+ ifm->ifm_data.ifi_ierrors,
+ ifm->ifm_data.ifi_opackets,
+ ifm->ifm_data.ifi_oerrors,
+ ifm->ifm_data.ifi_collisions
+ );
+ }
+ i++;
+ }
+ if (!rflag) {
+ free(rt_buf);
+ free(if_buf);
+ free(if_table);
+ free(ifm_table);
+ return(0);
+ }
+ /* Now dump the routing table */
+ printf("\nRouting table:\n");
+ printf("--------------\n");
+ printf("Destination Gateway Flags Netif Use\n");
+ lim=rt_buf+rt_len;
+ for(next=rt_buf;next<lim;next+=rtm->rtm_msglen) {
+ rtm=(struct rt_msghdr *)next;
+ sa=(struct sockaddr *)(rtm+1);
+ get_rtaddrs(rtm->rtm_addrs,sa,rti_info);
+ if(rtm->rtm_flags & RTF_WASCLONED) {
+ if((rtm->rtm_flags & RTF_LLINFO)==0)continue;
+ }
+ if((sa=rti_info[RTAX_DST])!=NULL) {
+ sprintf(fbuf,"%s",sock_ntop(sa,sa->sa_len));
+ if(((sa1=rti_info[RTAX_NETMASK])!=NULL) && sa1->sa_family==255) {
+ strcat(fbuf,sock_ntop(sa1,sa1->sa_len));
+ }
+ printf("%-19s",fbuf);
+ }
+ if((sa=rti_info[RTAX_GATEWAY])!=NULL) {
+ printf("%-19s",sock_ntop(sa,sa->sa_len));
+ }
+ memset(fbuf,0,sizeof(fbuf));
+ get_flags(fbuf,rtm->rtm_flags);
+ printf("%-10s",fbuf);
+ for(i=0;i<if_num;i++) {
+ ifm=ifm_table[i];
+ if((ifm->ifm_index==rtm->rtm_index) &&
+ (ifm->ifm_data.ifi_type>0)) {
+ sa=if_table[i];
+ break;
+ }
+ }
+ if(ifm->ifm_type==RTM_IFINFO) {
+ get_rtaddrs(ifm->ifm_addrs,sa,rti_info);
+ printf(" %s",Sock_ntop(sa,sa->sa_len));
+ } else if(ifm->ifm_type==RTM_NEWADDR) {
+ ifam=(struct ifa_msghdr *)ifm_table[rtm->rtm_index-1];
+ sa=(struct sockaddr *)(ifam+1);
+ get_rtaddrs(ifam->ifam_addrs,sa,rti_info);
+ printf(" %s",Sock_ntop(sa,sa->sa_len));
+ }
+ printf(" %u",rtm->rtm_use);
+ printf("\n");
+ }
+ free(rt_buf);
+ free(if_buf);
+ free(if_table);
+ free(ifm_table);
+ return(0);
+
+}
+
+print_ip_stats()
+{
+ int mib[4],len;
+ struct ipstat s;
+
+ mib[0]=CTL_NET;
+ mib[1]=PF_INET;
+ mib[2]=IPPROTO_IP;
+#ifndef IPCTL_STATS
+ printf("sorry, ip stats not available\n");
+ return -1 ;
+#else
+ mib[3]=IPCTL_STATS;
+ len=sizeof(struct ipstat);
+ if(sysctl(mib,4,&s,&len,NULL,0)<0) {
+ perror("sysctl");
+ return(-1);
+ }
+ printf("\nIP statistics:\n");
+ printf("--------------\n");
+ printf(" %10lu total packets received\n",s.ips_total);
+ printf("* Packets ok:\n");
+ printf(" %10lu fragments received\n",s.ips_fragments);
+ printf(" %10lu forwarded\n",s.ips_forward);
+#if __FreeBSD_version > 300001
+ printf(" %10lu fast forwarded\n",s.ips_fastforward);
+#endif
+ printf(" %10lu forwarded on same net (redirect)\n",s.ips_redirectsent);
+ printf(" %10lu delivered to upper level\n",s.ips_delivered);
+ printf(" %10lu total ip packets generated here\n",s.ips_localout);
+ printf(" %10lu total packets reassembled ok\n",s.ips_reassembled);
+ printf(" %10lu total datagrams successfully fragmented\n",s.ips_fragmented);
+ printf(" %10lu output fragments created\n",s.ips_ofragments);
+ printf(" %10lu total raw IP packets generated\n",s.ips_rawout);
+ printf("\n* Bad packets:\n");
+ printf(" %10lu bad checksum\n",s.ips_badsum);
+ printf(" %10lu too short\n",s.ips_tooshort);
+ printf(" %10lu not enough data (too small)\n",s.ips_toosmall);
+ printf(" %10lu more data than declared in header\n",s.ips_badhlen);
+ printf(" %10lu less data than declared in header\n",s.ips_badlen);
+ printf(" %10lu fragments dropped (dups, no mbuf)\n",s.ips_fragdropped);
+ printf(" %10lu fragments timed out in reassembly\n",s.ips_fragtimeout);
+ printf(" %10lu received for unreachable dest.\n",s.ips_cantforward);
+ printf(" %10lu unknown or unsupported protocol\n",s.ips_noproto);
+ printf(" %10lu lost due to no bufs etc.\n",s.ips_odropped);
+ printf(" %10lu couldn't fragment (DF set, etc.)\n",s.ips_cantfrag);
+ printf(" %10lu error in IP options processing\n",s.ips_badoptions);
+ printf(" %10lu dropped due to no route\n",s.ips_noroute);
+ printf(" %10lu bad IP version\n",s.ips_badvers);
+ printf(" %10lu too long (more than max IP size)\n",s.ips_toolong);
+#if __FreeBSD_version > 300001
+ printf(" %10lu multicast for unregistered groups\n",s.ips_notmember);
+#endif
+#endif
+}
+
+print_tcp_stats()
+{
+ int mib[4],len;
+ struct tcpstat s;
+
+ mib[0]=CTL_NET;
+ mib[1]=PF_INET;
+ mib[2]=IPPROTO_TCP;
+#ifndef TCPCTL_STATS
+ printf("sorry, tcp stats not available\n");
+ return -1 ;
+#else
+ mib[3]=TCPCTL_STATS;
+ len=sizeof(struct tcpstat);
+ if(sysctl(mib,4,&s,&len,NULL,0)<0) {
+ perror("sysctl");
+ return(-1);
+ }
+ printf("\nTCP statistics:\n");
+ printf("---------------\n");
+ printf("* Connections:\n");
+ printf(" %10lu initiated\n",s.tcps_connattempt);
+ printf(" %10lu accepted\n",s.tcps_accepts);
+ printf(" %10lu established\n",s.tcps_connects);
+ printf(" %10lu dropped\n",s.tcps_drops);
+ printf(" %10lu embryonic connections dropped\n",s.tcps_conndrops);
+ printf(" %10lu closed (includes dropped)\n",s.tcps_closed);
+ printf(" %10lu segments where we tried to get RTT\n",s.tcps_segstimed);
+ printf(" %10lu times RTT successfully updated\n",s.tcps_rttupdated);
+ printf(" %10lu delayed ACKs sent\n",s.tcps_delack);
+ printf(" %10lu dropped in rxmt timeout\n",s.tcps_timeoutdrop);
+ printf(" %10lu retrasmit timeouts\n",s.tcps_rexmttimeo);
+ printf(" %10lu persist timeouts\n",s.tcps_persisttimeo);
+ printf(" %10lu keepalive timeouts\n",s.tcps_keeptimeo);
+ printf(" %10lu keepalive probes sent\n",s.tcps_keepprobe);
+ printf(" %10lu dropped in keepalive\n",s.tcps_keepdrops);
+
+ printf("* Packets sent:\n");
+ printf(" %10lu total packets sent\n",s.tcps_sndtotal);
+ printf(" %10lu data packets sent\n",s.tcps_sndpack);
+ printf(" %10lu data bytes sent\n",s.tcps_sndbyte);
+ printf(" %10lu data packets retransmitted\n",s.tcps_sndrexmitpack);
+ printf(" %10lu data bytes retransmitted\n",s.tcps_sndrexmitbyte);
+ printf(" %10lu ACK-only packets sent\n",s.tcps_sndacks);
+ printf(" %10lu window probes sent\n",s.tcps_sndprobe);
+ printf(" %10lu URG-only packets sent\n",s.tcps_sndurg);
+ printf(" %10lu window update-only packets sent\n",s.tcps_sndwinup);
+ printf(" %10lu control (SYN,FIN,RST) packets sent\n",s.tcps_sndctrl);
+ printf("* Packets received:\n");
+ printf(" %10lu total packets received\n",s.tcps_rcvtotal);
+ printf(" %10lu packets in sequence\n",s.tcps_rcvpack);
+ printf(" %10lu bytes in sequence\n",s.tcps_rcvbyte);
+ printf(" %10lu packets with bad checksum\n",s.tcps_rcvbadsum);
+ printf(" %10lu packets with bad offset\n",s.tcps_rcvbadoff);
+ printf(" %10lu packets too short\n",s.tcps_rcvshort);
+ printf(" %10lu duplicate-only packets\n",s.tcps_rcvduppack);
+ printf(" %10lu duplicate-only bytes\n",s.tcps_rcvdupbyte);
+ printf(" %10lu packets with some duplicate data\n",s.tcps_rcvpartduppack);
+ printf(" %10lu duplicate bytes in partially dup. packets\n",s.tcps_rcvpartdupbyte);
+ printf(" %10lu out-of-order packets\n",s.tcps_rcvoopack);
+ printf(" %10lu out-of-order bytes\n",s.tcps_rcvoobyte);
+ printf(" %10lu packets with data after window\n",s.tcps_rcvpackafterwin);
+ printf(" %10lu bytes received after window\n",s.tcps_rcvbyteafterwin);
+ printf(" %10lu packets received after 'close'\n",s.tcps_rcvafterclose);
+ printf(" %10lu window probe packets\n",s.tcps_rcvwinprobe);
+ printf(" %10lu duplicate ACKs\n",s.tcps_rcvdupack);
+ printf(" %10lu ACKs for unsent data\n",s.tcps_rcvacktoomuch);
+ printf(" %10lu ACK packets\n",s.tcps_rcvackpack);
+ printf(" %10lu bytes ACKed by received ACKs\n",s.tcps_rcvackbyte);
+ printf(" %10lu window update packets\n",s.tcps_rcvwinupd);
+ printf(" %10lu segments dropped due to PAWS\n",s.tcps_pawsdrop);
+ printf(" %10lu times header predict ok for ACKs\n",s.tcps_predack);
+ printf(" %10lu times header predict ok for data packets\n",s.tcps_preddat);
+ printf(" %10lu PCB cache misses\n",s.tcps_pcbcachemiss);
+ printf(" %10lu times cached RTT in route updated\n",s.tcps_cachedrtt);
+ printf(" %10lu times cached RTTVAR updated\n",s.tcps_cachedrttvar);
+ printf(" %10lu times ssthresh updated\n",s.tcps_cachedssthresh);
+ printf(" %10lu times RTT initialized from route\n",s.tcps_usedrtt);
+ printf(" %10lu times RTTVAR initialized from route\n",s.tcps_usedrttvar);
+ printf(" %10lu times ssthresh initialized from route\n",s.tcps_usedssthresh);
+ printf(" %10lu timeout in persist state\n",s.tcps_persistdrop);
+ printf(" %10lu bogus SYN, e.g. premature ACK\n",s.tcps_badsyn);
+ printf(" %10lu resends due to MTU discovery\n",s.tcps_mturesent);
+ printf(" %10lu listen queue overflows\n",s.tcps_listendrop);
+#endif
+}
+
+print_udp_stats()
+{
+ int mib[4],len;
+ struct udpstat s;
+
+ mib[0]=CTL_NET;
+ mib[1]=PF_INET;
+ mib[2]=IPPROTO_UDP;
+ mib[3]=UDPCTL_STATS;
+ len=sizeof(struct udpstat);
+ if(sysctl(mib,4,&s,&len,NULL,0)<0) {
+ perror("sysctl");
+ return(-1);
+ }
+ printf("\nUDP statistics:\n");
+ printf("---------------\n");
+ printf("* Packets received:\n");
+ printf(" %10lu total input packets\n",s.udps_ipackets);
+ printf(" %10lu packets shorter than header (dropped)\n",s.udps_hdrops);
+ printf(" %10lu bad checksum\n",s.udps_badsum);
+ printf(" %10lu data length larger than packet\n",s.udps_badlen);
+ printf(" %10lu no socket on specified port\n",s.udps_noport);
+ printf(" %10lu of above, arrived as broadcast\n",s.udps_noportbcast);
+ printf(" %10lu not delivered, input socket full\n",s.udps_fullsock);
+ printf(" %10lu packets missing PCB cache\n",s.udpps_pcbcachemiss);
+ printf(" %10lu packets not for hashed PCBs\n",s.udpps_pcbhashmiss);
+ printf("* Packets sent:\n");
+ printf(" %10lu total output packets\n",s.udps_opackets);
+#if __FreeBSD_version > 300001
+ printf(" %10lu output packets on fast path\n",s.udps_fastout);
+#endif
+}
+
+char *icmp_names[]={
+ "echo reply",
+ "#1",
+ "#2",
+ "destination unreachable",
+ "source quench",
+ "routing redirect",
+ "#6",
+ "#7",
+ "echo",
+ "router advertisement",
+ "router solicitation",
+ "time exceeded",
+ "parameter problem",
+ "time stamp",
+ "time stamp reply",
+ "information request",
+ "information request reply",
+ "address mask request",
+ "address mask reply",
+};
+
+print_icmp_stats()
+{
+ int mib[4],len,i;
+ struct icmpstat s;
+
+ mib[0]=CTL_NET;
+ mib[1]=PF_INET;
+ mib[2]=IPPROTO_ICMP;
+ mib[3]=ICMPCTL_STATS;
+ len=sizeof(struct icmpstat);
+ if(sysctl(mib,4,&s,&len,NULL,0)<0) {
+ perror("sysctl");
+ return(-1);
+ }
+ printf("\nICMP statistics:\n");
+ printf("----------------\n");
+ printf("* Output histogram:\n");
+ for(i=0;i<(ICMP_MAXTYPE+1);i++) {
+ if(s.icps_outhist[i]>0)
+ printf("\t%10lu %s\n",
+ s.icps_outhist[i],icmp_names[i]);
+ }
+ printf("* Input histogram:\n");
+ for(i=0;i<(ICMP_MAXTYPE+1);i++) {
+ if(s.icps_inhist[i]>0)
+ printf("\t%10lu %s\n",
+ s.icps_inhist[i],icmp_names[i]);
+ }
+ printf("* Other stats:\n");
+ printf(" %10lu calls to icmp_error\n",s.icps_error);
+ printf(" %10lu no error 'cuz old ip too short\n",s.icps_oldshort);
+ printf(" %10lu no error 'cuz old was icmp\n",s.icps_oldicmp);
+
+ printf(" %10lu icmp code out of range\n",s.icps_badcode);
+ printf(" %10lu packets shorter than min length\n",s.icps_tooshort);
+ printf(" %10lu bad checksum\n",s.icps_checksum);
+ printf(" %10lu calculated bound mismatch\n",s.icps_badlen);
+ printf(" %10lu number of responses\n",s.icps_reflect);
+ printf(" %10lu broad/multi-cast echo requests dropped\n",s.icps_bmcastecho);
+ printf(" %10lu broad/multi-cast timestamp requests dropped\n",s.icps_bmcasttstamp);
+}
+
+int
+stats(char *proto)
+{
+ if (!sflag)
+ return 0 ;
+ if(pflag) {
+ if(proto==NULL) {
+ fprintf(stderr,"Option '-p' requires paramter.\n");
+ usage();
+ exit(-1);
+ }
+ if(strcmp(proto,"ip")==0) print_ip_stats();
+ if(strcmp(proto,"icmp")==0) print_icmp_stats();
+ if(strcmp(proto,"udp")==0) print_udp_stats();
+ if(strcmp(proto,"tcp")==0) print_tcp_stats();
+#ifdef BRIDGING
+ if(strcmp(proto,"bdg")==0) print_bdg_stats();
+#endif
+ return(0);
+ }
+ print_ip_stats();
+ print_icmp_stats();
+ print_udp_stats();
+ print_tcp_stats();
+#ifdef BRIDGING
+ print_bdg_stats();
+#endif
+ return(0);
+}
+
+int
+main(int argc, char *argv[])
+{
+ char c;
+ char *proto=NULL;
+
+ progname=argv[0];
+
+ while((c=getopt(argc,argv,"inrsp:w:"))!=-1) {
+ switch(c) {
+ case 'w':
+ wflag = atoi(optarg) ;
+ break;
+ case 'n' /* ignored, just for compatibility with std netstat */
+ break ;
+ case 'r':
+ rflag++;
+ break;
+ case 'i':
+ iflag++;
+ break;
+ case 's':
+ sflag++;
+ rflag=0;
+ break;
+ case 'p':
+ pflag++;
+ sflag++;
+ proto=optarg;
+ break;
+ case '?':
+ default:
+ usage();
+ exit(0);
+ break;
+ }
+ }
+ if (rflag == 0 && sflag == 0 && iflag == 0)
+ rflag = 1 ;
+ argc-=optind;
+ if(argc>0) {
+ usage();
+ exit(-1);
+ }
+ if (wflag)
+ printf("\033[H\033[J");
+again:
+ if (wflag) {
+ struct timeval t ;
+ gettimeofday ( &t, NULL);
+ printf("\033[H%s", ctime(& t.tv_sec));
+ }
+ print_routing(proto);
+ stats(proto);
+ if (wflag) {
+ sleep(wflag);
+ goto again ;
+ }
+ exit(0);
+}
+
+#ifdef BRIDGING
+int
+print_bdg_stats() /* print bridge statistics */
+{
+ int i, slen ;
+ struct bdg_stats s ;
+ int mib[4] ;
+
+ slen = sizeof(s);
+
+ mib[0] = CTL_NET ;
+ mib[1] = PF_LINK ;
+ mib[2] = IFT_ETHER ;
+ mib[3] = PF_BDG ;
+ if (sysctl(mib,4, &s,&slen,NULL,0)==-1) {
+ return 0 ; /* no bridging */
+ }
+ printf("-- Bridging statistics --\n") ;
+ printf(
+"Name In Out Forward Drop Bcast Mcast Local Unknown\n");
+ for (i = 0 ; i < 16 ; i++) {
+ if (s.s[i].name[0])
+ printf("%-6s %9d%9d%9d%9d%9d%9d%9d%9d\n",
+ s.s[i].name,
+ s.s[i].p_in[(int)BDG_IN],
+ s.s[i].p_in[(int)BDG_OUT],
+ s.s[i].p_in[(int)BDG_FORWARD],
+ s.s[i].p_in[(int)BDG_DROP],
+ s.s[i].p_in[(int)BDG_BCAST],
+ s.s[i].p_in[(int)BDG_MCAST],
+ s.s[i].p_in[(int)BDG_LOCAL],
+ s.s[i].p_in[(int)BDG_UNKNOWN] );
+ }
+}
+#endif
diff --git a/release/picobsd/tinyware/oinit/Makefile b/release/picobsd/tinyware/oinit/Makefile
new file mode 100644
index 000000000000..c655bb7bb7de
--- /dev/null
+++ b/release/picobsd/tinyware/oinit/Makefile
@@ -0,0 +1,22 @@
+# $FreeBSD$
+#
+PROG= oinit
+
+SH_PATH?= /bin/sh
+SH_NAME?= -sh
+SH_ARG?= /etc/rc
+
+CFLAGS= -DSH_PATH=\"${SH_PATH}\" -DSH_NAME=\"${SH_NAME}\" \
+ -DSH_ARG=\"${SH_ARG}\"
+
+
+#CFLAGS+= -DUSE_HISTORY
+#CFLAGS+= -DOINIT_RC=\"/etc/oinit.rc\"
+
+#LDADD= -lutil -ledit -ltermcap
+LDADD=-lutil
+NOMAN=yes
+
+.include <bsd.prog.mk>
+
+
diff --git a/release/picobsd/tinyware/oinit/README b/release/picobsd/tinyware/oinit/README
new file mode 100644
index 000000000000..e34c404f4a8d
--- /dev/null
+++ b/release/picobsd/tinyware/oinit/README
@@ -0,0 +1,123 @@
+Warsaw, 1998.07.07
+
+This README shortly describes the features of "oinit" - a very simplistic
+version of init(8) combined with a shell.
+
+Features
+--------
+
+* oinit is able to run system in multi- and single-user modes,
+* it can be started on system with DEVFS/SLICE (i.e. empty /dev),
+* provides minimalistic user interface, called "shell()",
+* it can run the system startup script (/etc/rc),
+* it can be compiled with -DOINIT_RC to use its own startup script
+ (*very* primitive, but doesn't require any real shell to run it!),
+* doesn't require the whole chain of init->getty->login->shell to be run,
+* it is extremely small, and is ideally suited for situations when
+ there is little memory.
+
+As an additional bonus you receive some obvious and some hidden bugs... :-))
+This code is at most alpha quality yet.
+
+
+How it works
+------------
+
+Unlike normal init(8), it forks itself on given number of vty's immediately
+providing shell() interface. Currently it doesn't require (and is unable to
+perform) any authentication, but this is easy to add if needed.
+
+Standard version of FreeBSD kernel looks for /sbin/init first, and then
+tries to execute it. If it fails, it tries to find:
+ /sbin/oinit
+ /sbin/init.bak
+ /stand/sysinstall
+
+So it is easy to make use of it even on standard system - just put it in
+/sbin/oinit and rename /sbin/init to something else, e.g. /sbin/init.bak.
+
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+!!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+Init (or oinit) plays crucial role in the system. If you plan to do any
+changes to your system's init, make sure you have a boot floppy with working
+version of statically compiled init(8) on it - you can very easily put your
+system in unusable state when fiddling with it.
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+Shell() interface
+-----------------
+
+It allows you to issue built-in and external commands. Built-in commands
+are listed below. For each command there is short help available, with
+example of usage.
+
+ cd change working directory
+ pwd print working directory
+ set set environment variable (no expansion)
+ unset unset environment variable
+ env print all environment variables
+ echo echo arguments on stdout
+ exit exit from shell (oinit will start a new one after some delay)
+ . source-in a file with commands
+ ? help
+
+Any other command is passed to execvp(3) as it is.
+
+EXCEPTION: if you end the command line with a '&', the command is started
+as daemon. This is NOT the same as in normal shell, where the '&' puts a
+process in background. Here the newly started process is totally dissociated
+from terminal.
+
+Prompt tells you:
+* your `pwd`
+* your PID
+* and that you are root ('#').
+
+WARNING: this pseudo-shell doesn't do any expansion whatsoever.
+
+To do list
+----------
+
+- oinit proper:
+ * fix signal handling and transitions,
+ * invent a one-file configuration database (combining as many files
+ from /etc as possible into one) able to properly handle inter-
+ dependencies in running various daemons,
+ * allow for interpreting of such database, and running various
+ programs ourselves (this would eventually allow to make /bin/sh
+ an option, not necessity),
+ * better hooks for incorporating other modules into oinit (see e.g.
+ the telnet() below),
+ * add optional authentication,
+
+- shell():
+ * more built-ins: perhaps 'kill' and 'ps',
+ * variable expansion,
+ * globbing,
+ * conditionals,
+ * history? (it depends on how much memory it needs).
+ * programmatic hooks for easy customisation of user interface (like
+ hierarchy of commands and contexts),
+ * ...
+
+- implement as a routine (like shell()) a small remote login daemon telnet(),
+ as a built-in module to oinit. It would implement the simplest options of
+ normal telnet, and would itself handle authentication, passing control to
+ shell() on success. The authentication routine would be the same as for
+ checking console access.
+
+And allow me for a moment of day-dreaming: I'd like to rewrite oinit one day
+to be a monolithic one-in-all application, non-forking but multithreaded... It
+would contain all the modules, such as shell(), telnet(), ifconfig() etc...
+started as threads, not separate processes.
+
+Credits
+-------
+
+The overall framework was taken from FreeBSD /sbin/init.
+
+Andrzej Bialecki
+<abial@freebsd.org>
+
+$FreeBSD$
diff --git a/release/picobsd/tinyware/oinit/oinit.c b/release/picobsd/tinyware/oinit/oinit.c
new file mode 100644
index 000000000000..87b244835907
--- /dev/null
+++ b/release/picobsd/tinyware/oinit/oinit.c
@@ -0,0 +1,947 @@
+/*-
+ * Copyright (c) 1998 Andrzej Bialecki
+ * 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$
+ */
+
+/*
+ * A primitive version of init(8) with simplistic user interface
+ */
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/mount.h>
+#include <sys/reboot.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/wait.h>
+#include <ctype.h>
+#include <err.h>
+
+#ifdef USE_HISTORY
+#error "Not yet. But it's quite simple to add - patches are welcome!"
+#endif
+
+#include <errno.h>
+#include <fcntl.h>
+#include <libutil.h>
+#include <paths.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string.h>
+#include <syslog.h>
+#include <unistd.h>
+#include <varargs.h>
+
+#define BUFSIZE 1024
+#define MAX_CONS 12
+
+#define NONE 0
+#define SINGLE 1
+#define MULTI 2
+#define DEATH 3
+
+#define FALSE 0
+#define TRUE 1
+
+char cwd[BUFSIZE];
+char vty[]="0123456789abcdef";
+char *progname;
+char *motd=NULL;
+int ncons=MAX_CONS;
+int Reboot=FALSE;
+int transition=MULTI;
+int prevtrans=SINGLE;
+jmp_buf machine;
+
+char *trans[]={ "NONE", "SINGLE", "MULTI", "DEATH" };
+
+extern char **environ;
+
+/* Struct for holding session state */
+struct sess {
+ char tty[16]; /* vty device path */
+ pid_t pid; /* pid of process running on it */
+ int (*func)(int argc, char **argv);
+ /* internal function to run on it (after forking) */
+} ttys[MAX_CONS];
+
+/* Struct for built-in command */
+struct command {
+ char *cmd; /* command name */
+ char *descr; /* command description */
+ char *usage; /* usage */
+ char *example; /* example of usage */
+ int (*func)(char *); /* callback function */
+};
+
+/* Prototypes */
+int cd __P((char *));
+int pwd __P((char *));
+int echo __P((char *));
+int xit __P((char *));
+int set __P((char *));
+int unset __P((char *));
+int env __P((char *));
+int help __P((char *));
+int sourcer __P((char *));
+void do_command __P((int shell, char *cmdline));
+void transition_handler __P((int));
+
+/* Table of built-in functions */
+struct command bltins[]={
+ {"cd","Change working directory","cd [dir]","cd /etc",cd},
+ {"pwd","Print current directory","pwd","pwd",pwd},
+ {"exit","Exit from shell()","exit","exit",xit},
+ {"set","Set environment variable","set [VAR=value]","set TERM=cons25",set},
+ {"unset","Unset environment variable","unset VAR","unset EDITOR",unset},
+ {"echo","Echo arguments on stdout","echo arg1 arg2 ...","echo Hello World!",echo},
+ {"env","Print all environment variables","env","env",env},
+ {".","Source-in a file with commands",". filename",". /etc/rc",sourcer},
+ {"?","Print this help :-)","? [command]","? set",help},
+ {NULL,NULL,NULL,NULL,NULL}
+};
+
+/*
+ * Built-in 'cd <path>' handler
+ */
+int
+cd(char *path)
+{
+ if(chdir(path)) return(-1);
+ getcwd(cwd,BUFSIZE);
+ return(0);
+}
+
+/*
+ * Built-in 'pwd' handler
+ */
+int
+pwd(char *dummy)
+{
+
+ if(getcwd(cwd,BUFSIZE)==NULL) return(-1);
+ printf("%s\n",cwd);
+ return(0);
+}
+
+/*
+ * Built-in 'exit' handler
+ */
+int
+xit(char *dummy)
+{
+ _exit(0);
+}
+
+/*
+ * Built-in 'echo' handler
+ */
+int
+echo(char *args)
+{
+ int i=0,j;
+ int len;
+ char c;
+ int s_quote=0,d_quote=0;
+ int sep=0,no_lf=0;
+
+ if(args==NULL) {
+ printf("\n");
+ return;
+ }
+ len=strlen(args);
+ if(len>=2) {
+ if(args[0]=='-' && args[1]=='n') {
+ no_lf++;
+ i=2;
+ while(i<len && (args[i]==' ' || args[i]=='\t')) i++;
+ }
+ }
+ while(i<len) {
+ c=args[i];
+ switch(c) {
+ case ' ':
+ case '\t':
+ if(s_quote||d_quote) {
+ putchar(c);
+ } else if(!sep) {
+ putchar(' ');
+ sep=1;
+ }
+ break;
+ case '\\':
+ i++;
+ c=args[i];
+ switch(c) {
+ case 'n':
+ putchar('\n');
+ break;
+ case 'b':
+ putchar('\b');
+ break;
+ case 't':
+ putchar('\t');
+ break;
+ case 'r':
+ putchar('\r');
+ break;
+ default:
+ putchar(c);
+ break;
+ }
+ break;
+ case '"':
+ if(!d_quote) {
+ d_quote=1;
+ for(j=i+1;j<len;j++) {
+ if(args[j]=='\\') {
+ j++;
+ continue;
+ }
+ if(args[j]=='"') {
+ d_quote=2;
+ break;
+ }
+ }
+ if(d_quote!=2) {
+ printf("\necho(): unmatched \"\n");
+ return;
+ }
+ } else d_quote=0;
+ break;
+ case '\'':
+ if(!s_quote) {
+ s_quote=1;
+ for(j=i+1;j<len;j++) {
+ if(args[j]=='\\') {
+ j++;
+ continue;
+ }
+ if(args[j]=='\'') {
+ s_quote=2;
+ break;
+ }
+ }
+ if(s_quote!=2) {
+ printf("\necho(): unmatched '\n");
+ return;
+ }
+ } else s_quote=0;
+ break;
+ case '`':
+ printf("echo(): backquote not implemented yet!\n");
+ break;
+ default:
+ sep=0;
+ putchar(c);
+ break;
+ }
+ i++;
+ }
+ if(!no_lf) putchar('\n');
+ fflush(stdout);
+}
+
+/*
+ * Built-in 'set VAR=value' handler
+ */
+int
+set(char *var)
+{
+ int res;
+
+ if(var==NULL) return(env(NULL));
+ res=putenv(var);
+ if(res) printf("set: %s\n",strerror(errno));
+ return(res);
+}
+
+/*
+ * Built-in 'env' handler
+ */
+int
+env(char *dummy)
+{
+ char **e;
+
+ e=environ;
+ while(*e!=NULL) {
+ printf("%s\n",*e++);
+ }
+ return(0);
+}
+
+/*
+ * Built-in 'unset VAR' handler
+ */
+int
+unset(char *var)
+{
+ if(var==NULL) {
+ printf("%s: parameter required.\n",progname);
+ return(-1);
+ }
+ return(unsetenv(var));
+}
+
+/*
+ * Built-in '?' handler
+ */
+int
+help(char *cmd)
+{
+ struct command *x;
+ int found=0;
+
+ if(cmd==NULL) {
+ printf("\nBuilt-in commands:\n");
+ printf("-------------------\n");
+ x=bltins;
+ while(x->cmd!=NULL) {
+ printf("%s\t%s\n",x->cmd,x->descr);
+ x++;
+ }
+ printf("\nEnter '? <cmd>' for details.\n\n");
+ return(0);
+ } else {
+ x=bltins;
+ while(x->cmd!=NULL) {
+ if(strcmp(x->cmd,cmd)==0) {
+ found++;
+ break;
+ }
+ x++;
+ }
+ if(found) {
+ printf("\n%s\t%s:\n",x->cmd,x->descr);
+ printf("\tUsage:\n\t\t%s\n",x->usage);
+ printf("\te.g:\n\t\t%s\n\n",x->example);
+ return(0);
+ } else {
+ printf("\n%s: no such command.\n\n",cmd);
+ return(-1);
+ }
+ }
+}
+
+/*
+ * Signal handler for shell()
+ */
+void
+shell_sig(int sig)
+{
+ switch(sig) {
+ case SIGINT:
+ case SIGQUIT:
+ case SIGTERM:
+ /* ignore ? */
+ break;
+ default:
+ break;
+ }
+}
+
+/*
+ * Built-in '.' handler (read-in and execute commands from file)
+ */
+int
+sourcer(char *fname)
+{
+ FILE *fd;
+ char buf[512],*tok,*arg,**av;
+ int ac,len,f,res,i;
+ pid_t pid;
+ char *sep=" \t";
+
+ fd=fopen(fname,"r");
+ if(fd==NULL) {
+ printf("Couldn't open file '%s'\n",fname);
+ return(-1);
+ }
+ while(!feof(fd)) {
+ memset(buf,0,512);
+ if(fgets(buf,512,fd)==NULL) continue;
+ if((*buf=='#') || (*buf=='\n')) continue;
+ len=strlen(buf);
+ buf[len-1]='\0';
+ if(strncmp(buf,"ncons",5)==0) {
+ tok=strtok(buf,sep);
+ tok=strtok(NULL,sep);
+ ncons=atoi(tok);
+ if((ncons<1)||(ncons>MAX_CONS)) {
+ syslog(LOG_EMERG,"%s: bad ncons value; defaulting to %d\n",fname,MAX_CONS);
+ ncons=MAX_CONS;
+ }
+ continue;
+ } else if(strncmp(buf,"motd",4)==0) {
+ tok=strtok(buf,sep);
+ motd=strdup(strtok(NULL,sep));
+ continue;
+ } else {
+ do_command(0,buf);
+ }
+ /* Next command, please. */
+ }
+ fclose(fd);
+ syslog(LOG_EMERG,"Done with %s",fname);
+}
+
+void
+do_command(int shell, char *cmdline)
+{
+ char *tok,*c,*sep=" \t";
+ char **av;
+ struct command *x;
+ int found,len;
+ int ac,i,f,res;
+ int bg=0;
+ pid_t pid;
+
+ len=strlen(cmdline);
+ if(cmdline[len-1]=='&') {
+ bg++;
+ cmdline[len-1]='\0';
+ len--;
+ } else bg=0;
+ tok=strtok(cmdline,sep);
+ x=bltins;
+ found=0;
+ while(x->cmd!=NULL) {
+ if(strcmp(x->cmd,tok)==0) {
+ found++;
+ break;
+ }
+ x++;
+ }
+ if(found) {
+ tok=cmdline+strlen(x->cmd)+1;
+ while(*tok && isblank(*tok) && (tok<(cmdline+len))) tok++;
+ if(*tok==NULL) tok=NULL;
+ x->func(tok);
+ return;
+ }
+ ac=0;
+ av=(char **)calloc(((len+1)/2+1),sizeof(char *));
+ av[ac++]=tok;
+ while((av[ac++]=strtok(NULL,sep))!=NULL)
+ continue;
+ switch((pid=fork())) {
+ case 0:
+ if(shell) {
+ signal(SIGINT,SIG_DFL);
+ signal(SIGQUIT,SIG_DFL);
+ signal(SIGTERM,SIG_DFL);
+ signal(SIGHUP,SIG_DFL);
+ } else {
+ close(0);
+ close(1);
+ close(2);
+ f=open(_PATH_CONSOLE,O_RDWR);
+ dup2(f,0);
+ dup2(f,1);
+ dup2(f,2);
+ if(f>2) close(f);
+ }
+ if(bg) {
+ if(daemon(0,0)) {
+ printf("do_command(%s): failed to run bg: %s\n",
+ av[0],strerror(errno));
+ _exit(100);
+ }
+ }
+ execvp(av[0],av);
+ /* Something went wrong... */
+ printf("do_command(%s): %s\n",av[0],strerror(errno));
+ _exit(100);
+ break;
+ case -1:
+ printf("do_command(): %s\n",strerror(errno));
+ break;
+ default:
+ while(waitpid(pid,&res,0)!=pid) continue;
+ if(WEXITSTATUS(res)) {
+ printf("do_command(%s): exit code=%d\n",
+ av[0],WEXITSTATUS(res));
+ }
+ break;
+ }
+ free(av);
+ return;
+}
+
+/*
+ * This is the user interface. This routine gets executed on each
+ * virtual console serviced by init.
+ *
+ * It works as normal shell does - for each external command it forks
+ * and execs, for each internal command just executes a function.
+ */
+
+int
+shell(int argc, char **argv)
+{
+ char buf[BUFSIZE];
+ char *prompt=" # ";
+ int fd;
+ int res;
+ pid_t mypid;
+
+ if(motd!=NULL) {
+ if((fd=open(motd,O_RDONLY))!=-1) {
+ do {
+ res=read(fd,buf,BUFSIZE);
+ res=write(1,buf,res);
+ } while(res>0);
+ close(fd);
+ }
+ }
+
+ printf("\n\n+=========================================================+\n");
+ printf("| Built-in shell() (enter '?' for short help on commands) |\n");
+ printf("+=========================================================+\n\n");
+ getcwd(cwd,BUFSIZE);
+ mypid=getpid();
+ signal(SIGINT,shell_sig);
+ signal(SIGQUIT,shell_sig);
+ signal(SIGTERM,shell_sig);
+ while(!feof(stdin)) {
+ memset(buf,0,BUFSIZE);
+ printf("(%d)%s%s",mypid,cwd,prompt);
+ fflush(stdout);
+ if(fgets(buf,BUFSIZE-1,stdin)==NULL) continue;
+ buf[strlen(buf)-1]='\0';
+ if(strlen(buf)==0) continue;
+ do_command(1,buf);
+ }
+ return(0);
+}
+
+/*
+ * Stub for executing some external program on a console. This is called
+ * from previously forked copy of our process, so that exec is ok.
+ */
+int
+external_cmd(int argc, char **argv)
+{
+ execvp(argv[0],argv);
+}
+
+/*
+ * Acquire vty and properly attach ourselves to it.
+ * Also, build basic environment for running user interface.
+ */
+
+int
+start_session(int vty, int argc, char **argv)
+{
+ int fd;
+ char *t;
+
+ close(0);
+ close(1);
+ close(2);
+ revoke(ttys[vty].tty);
+ fd=open(ttys[vty].tty,O_RDWR);
+ dup2(fd,0);
+ dup2(fd,1);
+ dup2(fd,2);
+ if(fd>2) close(fd);
+ login_tty(fd);
+ setpgid(0,getpid());
+ putenv("TERM=cons25");
+ putenv("HOME=/");
+ putenv("PATH=/stand:/bin:/usr/bin:/sbin:.");
+ signal(SIGHUP,SIG_DFL);
+ signal(SIGINT,SIG_DFL);
+ signal(SIGQUIT,SIG_DFL);
+ signal(SIGTERM,SIG_DFL);
+ chdir("/");
+ t=(char *)(rindex(ttys[vty].tty,'/')+1);
+ printf("\n\n\nStarting session on %s.\n",t);
+ ttys[vty].func(argc,argv);
+ _exit(0);
+}
+
+/*
+ * Execute system startup script /etc/rc
+ *
+ * (Of course if you don't like it - I don't - you can run anything you
+ * want here. Perhaps it would be useful just to read some config DB and
+ * do these things ourselves, avoiding forking lots of shells and scripts.)
+ */
+
+/* If OINIT_RC is defined, oinit will use it's own configuration file,
+ * /etc/oinit.rc. It's format is described below. Otherwise, it will use
+ * normal /etc/rc interpreted by Bourne shell.
+ */
+#ifndef OINIT_RC
+#ifndef SH_NAME
+#define SH_NAME "-sh"
+#endif
+#ifndef SH_PATH
+#define SH_PATH _PATH_BSHELL
+#endif
+#ifndef SH_ARG
+#define SH_ARG "/etc/rc"
+#endif
+void
+runcom()
+{
+ char *argv[3];
+ pid_t pid;
+ int st;
+ int fd;
+
+ if((pid=fork())==0) {
+ /* child */
+ close(0);
+ close(1);
+ close(2);
+ fd=open(_PATH_CONSOLE,O_RDWR);
+ dup2(fd,0);
+ dup2(fd,1);
+ dup2(fd,2);
+ if(fd>2) close(fd);
+ argv[0]=SH_NAME;
+ argv[1]=SH_ARG;
+ argv[2]=0;
+ execvp(SH_PATH,argv);
+ printf("runcom(): %s\n",strerror(errno));
+ _exit(1);
+ }
+ /* Wait for child to exit */
+ while(pid!=waitpid(pid,(int *)0,0)) continue;
+ return;
+}
+#else
+/* Alternative /etc/rc - default is /etc/oinit.rc. Its format is as follows:
+ * - each empty line or line beginning with a '#' is discarded
+ * - any other line must contain a keyword, or a (nonblocking) command to run.
+ *
+ * Thus far, the following keywords are defined:
+ * ncons <number> number of virtual consoles to open
+ * motd <pathname> full path to motd file
+ *
+ * Examples of commands to run:
+ *
+ * ifconfig lo0 inet 127.0.0.1 netmask 255.0.0.0
+ * ifconfig ed0 inet 148.81.168.10 netmask 255.255.255.0
+ * kbdcontrol -l /usr/share/syscons/my_map.kbd
+ */
+void
+runcom(char *fname)
+{
+ int fd;
+
+ close(0);
+ close(1);
+ close(2);
+ fd=open(_PATH_CONSOLE,O_RDWR);
+ dup2(fd,0);
+ dup2(fd,1);
+ dup2(fd,2);
+ if(fd>2) close(fd);
+ sourcer(fname);
+}
+#endif
+
+int
+run_multi()
+{
+ int i,j;
+ pid_t pid;
+ int found;
+
+ /* Run /etc/rc if not in single user */
+#ifndef OINIT_RC
+ if(prevtrans==SINGLE) runcom();
+#else
+ if(prevtrans==SINGLE) runcom(OINIT_RC);
+#endif
+ if(transition!=MULTI) return(-1);
+
+ syslog(LOG_EMERG,"*** Starting multi-user mode ***");
+
+ /* Fork shell interface for each console */
+ for(i=0;i<ncons;i++) {
+ if(ttys[i].pid==0) {
+ switch(pid=fork()) {
+ case 0:
+ start_session(i,0,NULL);
+ break;
+ case -1:
+ printf("%s: %s\n",progname,strerror(errno));
+ break;
+ default:
+ ttys[i].pid=pid;
+ break;
+ }
+ }
+ }
+ /* Initialize any other services we'll use - most probably this will
+ * be a 'telnet' service (some day...).
+ */
+ /* */
+
+ /* Emulate multi-user */
+ while(transition==MULTI) {
+ /* XXX Modify this to allow for checking for the input on
+ * XXX listening sockets, and forking a 'telnet' service.
+ */
+ /* */
+
+ /* Wait for any process to exit */
+ pid=waitpid(-1,(int *)0,0);
+ if(pid==-1) continue;
+ found=0;
+ j=-1;
+ /* search if it's one of our sessions */
+ for(i=0;i<ncons;i++) {
+ if(ttys[i].pid==pid) {
+ found++;
+ j=i;
+ ttys[j].pid=0;
+ break;
+ }
+ }
+ if(!found) {
+ /* Just collect the process's status */
+ continue;
+ } else {
+ /* restart shell() on a console, if it died */
+ if(transition!=MULTI) return(0);
+ switch(pid=fork()) {
+ case 0:
+ sleep(1);
+ start_session(j,0,NULL);
+ break;
+ case -1:
+ printf("%s: %s\n",progname,strerror(errno));
+ break;
+ default:
+ ttys[j].pid=pid;
+ break;
+ }
+ }
+ }
+}
+
+int clang;
+
+void
+kill_timer(int sig)
+{
+ clang=1;
+}
+
+kill_ttys()
+{
+}
+
+/*
+ * Start a shell on ttyv0 (i.e. the console).
+ */
+
+int
+run_single()
+{
+ int i;
+ pid_t pid,wpid;
+ static int sigs[2]={SIGTERM,SIGKILL};
+
+ syslog(LOG_EMERG,"*** Starting single-user mode ***");
+ /* Kill all existing sessions */
+ syslog(LOG_EMERG,"Killing all existing sessions...");
+ for(i=0;i<MAX_CONS;i++) {
+ kill(ttys[i].pid,SIGHUP);
+ ttys[i].pid=0;
+ }
+ for(i=0;i<2;i++) {
+ if(kill(-1,sigs[i])==-1 && errno==ESRCH) break;
+ clang=0;
+ alarm(10);
+ do {
+ pid=waitpid(-1,(int *)0,WUNTRACED);
+ if(errno==EINTR) continue;
+ else break;
+ } while (clang==0);
+ }
+ if(errno!=ECHILD) {
+ syslog(LOG_EMERG,"Some processes would not die; ps -axl advised");
+ }
+ /* Single-user */
+ switch(pid=fork()) {
+ case 0:
+ start_session(0,0,NULL);
+ break;
+ case -1:
+ printf("%s: %s\n",progname,strerror(errno));
+ printf("The system is seriously hosed. I'm dying...\n");
+ transition=DEATH;
+ return(-1);
+ break;
+ default:
+ do {
+ wpid=waitpid(pid,(int *)0,WUNTRACED);
+ } while(wpid!=pid && transition==SINGLE);
+ if(transition!=DEATH) {
+ prevtrans=transition;
+ transition=MULTI;
+ }
+ break;
+ }
+ return(0);
+}
+
+/*
+ * Transition handler - installed as signal handler.
+ */
+
+void
+transition_handler(int sig)
+{
+
+ switch(sig) {
+ case SIGHUP:
+ case SIGTERM:
+ prevtrans=transition;
+ transition=SINGLE;
+ syslog(LOG_EMERG,"*** Going from %s -> %s\n",trans[prevtrans],trans[transition]);
+ if(prevtrans!=transition) longjmp(machine,sig);
+ break;
+ case SIGINT:
+ case SIGQUIT:
+ prevtrans=transition;
+ transition=DEATH;
+ syslog(LOG_EMERG,"*** Going from %s -> %s\n",trans[prevtrans],trans[transition]);
+ if(prevtrans!=transition) longjmp(machine,sig);
+ break;
+ default:
+ syslog(LOG_EMERG,"pid=%d sig=%s (ignored)\n",getpid(),sys_siglist[sig]);
+ break;
+ }
+}
+
+/*
+ * Change system state appropriately to the signals
+ */
+
+int
+transition_machine()
+{
+ int i;
+
+ while(transition!=DEATH) {
+ switch(transition) {
+ case MULTI:
+ run_multi();
+ break;
+ case SINGLE:
+ run_single();
+ break;
+ }
+ }
+ syslog(LOG_EMERG,"Killing all existing sessions...");
+ /* Kill all sessions */
+ kill(-1,SIGKILL);
+ /* Be nice and wait for them */
+ while(waitpid(-1,(int *)0,WNOHANG|WUNTRACED)>0) continue;
+ unmount("/",0);
+ reboot(RB_AUTOBOOT);
+ /* NOTREACHED */
+}
+
+int
+main(int argc, char **argv)
+{
+ int devfs=0,c,i;
+
+ /* These are copied from real init(8) */
+ if(getuid()!=0)
+ errx(1,"%s",strerror(EPERM));
+ openlog("init",LOG_CONS|LOG_ODELAY,LOG_AUTH);
+ if(setsid()<0)
+ warn("initial setsid() failed");
+ if(setlogin("root")<0)
+ warn("setlogin() failed");
+
+ close(0);
+ close(1);
+ close(2);
+ chdir("/");
+
+ progname=rindex(argv[0],'/');
+ if(progname==NULL) {
+ progname=argv[0];
+ } else progname++;
+
+ transition=MULTI;
+
+ /* We must recognize the same options as real init does */
+ while((c=getopt(argc,argv,"dsf"))!=-1) {
+ switch(c) {
+ case 'd':
+ devfs=1;
+ break;
+ case 's':
+ transition=SINGLE;
+ break;
+ case 'f':
+ break;
+ default:
+ printf("%s: unrecognized flag '-%c'\n",progname,c);
+ break;
+ }
+ }
+ if(devfs)
+ mount("devfs",_PATH_DEV,MNT_NOEXEC|MNT_RDONLY,0);
+
+ /* Fill in the sess structures. */
+ /* XXX Really, should be filled based upon config file. */
+ for(i=0;i<MAX_CONS;i++) {
+ if(i==0) {
+ sprintf(ttys[i].tty,_PATH_CONSOLE);
+ } else {
+ sprintf(ttys[i].tty,"%sv%c",_PATH_TTY,vty[i]);
+ }
+ ttys[i].pid=0;
+ ttys[i].func=shell;
+ }
+
+ getcwd(cwd,BUFSIZE);
+
+ signal(SIGINT,transition_handler);
+ signal(SIGQUIT,transition_handler);
+ signal(SIGTERM,transition_handler);
+ signal(SIGHUP,transition_handler);
+ signal(SIGALRM,kill_timer);
+
+ setjmp(machine);
+ transition_machine(transition);
+ /* NOTREACHED */
+ exit(100);
+}
diff --git a/release/picobsd/tinyware/simple_httpd/Makefile b/release/picobsd/tinyware/simple_httpd/Makefile
new file mode 100644
index 000000000000..524040efb534
--- /dev/null
+++ b/release/picobsd/tinyware/simple_httpd/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+#
+PROG=simple_httpd
+SRCS= simple_httpd.c
+NOMAN=yes
+
+.include <bsd.prog.mk>
diff --git a/release/picobsd/tinyware/simple_httpd/README b/release/picobsd/tinyware/simple_httpd/README
new file mode 100644
index 000000000000..6961954615d4
--- /dev/null
+++ b/release/picobsd/tinyware/simple_httpd/README
@@ -0,0 +1,167 @@
+Simple_httpd - A small and free Web server
+
+"Simple_httpd is like /usr/bin/mail is to mail clients, no frills."
+
+This HTTP server can be used in any FreeBSD/PicoBSD application.
+
+It has been tested under FreeBSD 2.2.x, 3.x and 4.x. It might work
+on other OS systems, but it's for FreeBSD primarily.
+
+The main advantage to Simple_httpd is that it is very small.
+The 25K binary can satisfy most needs in a small or embedded
+appplication. If you want a full featured server see
+/usr/ports/www/apache* or http://www.apache.org
+
+Simple_httpd is released under a BSD style copyright that unlike
+GPL is embedded developer friendly.
+
+The server is designed to be run in one of two modes. The standard
+mode is a httpd server running in the background serving up a directory
+of html,gif,cgi whatever. Your traditional www server.
+
+The "fetch" mode supports file transfer over httpd. This
+is best thought of as mate for fetch(1). This feature can be
+usefull to transfer a file from one host to another.
+
+Simple_httpd has the ability to run CGI scripts. All CGI
+scripts must be located in ${DOCUMENT_ROOT}/cgi-bin. The
+server currently only sets 3 enviroment variables before calling
+the script.
+
+CGI Enviroment variables are below:
+
+SERVER_SOFTWARE = FreeBSD/PicoBSD
+REMOTE_HOST = client.canada_lower_taxes.com
+REMOTE_ADDR = 200.122.13.108
+
+In most target applications for this server the extra DNS traffic from
+the remote_addr lookup will likely be on the local lan anyway and not
+on the other side of the internet. You can turn it off yourself in
+the code if you want to speed the whole process up. Be sure to turn
+it off for the logfile also.
+
+How to use it?
+==============
+
+Compile with make, run as follows
+
+usage: simple_httpd [-vD]
+ [-d directory]
+ [-g grpid]
+ [-l logfile]
+ [-p port]
+or
+usage: simple_httpd [-p port] -f filename
+
+-v
+Run the server verbose. Show the program options that will be used for this
+process. Will only show information during startup, no messages will
+be displayed while serving requests. In other words you can still
+daemonize without fear of output on stdout.
+
+-D
+Do not daemonize. The server will not run in the background. It will
+stay attached to the tty. This is usefull for debugging. In this
+mode no log file is created. Logging info is to stdout.
+
+This option is automatically selected if fetch option is selected.
+
+-d directory
+The html document directory, if nothing is provided the default is
+/httphome if UID is root, otherwise document root is ${HOME}/public_html
+
+-l logfile
+Set the logfile to use. Log messages will be written to /var/log/jhttpd.log
+if you are root and ${HOME}/jhttpd.log otherwise. If you don't want a
+log file try "-l /dev/null"
+
+-p port
+Set the port httpd server will listen to. Default is port 80 if
+you are root and 1080 if you are not.
+
+-f filename
+This is the only option needed to use the "fetch" feature. The file
+specified will be the ONLY file served to ANY GET request from a browser
+or fetch(1).
+
+Example
+=======
+
+Standard Mode:
+--------------
+If you have the FreeBSD handbook installed on your machine and would
+like to serve it up over http for a quick look you could do this
+
+simple_httpd -d /usr/share/doc/handbook -l /usr/tmp/jlog.txt -p 1088 -v
+
+Any browser would be able to look at the handbook with
+http://whatever_host/handbook.html:1088
+
+I'm using 1088 as the port since I already have apache running on port 80
+and port 1080 on my host.
+
+Please note, the handbook is not installed by default in FreeBSD 3.x
+It must be installed from the ports collection first if you want to
+try this.
+
+Another simple example is to browse your local ports collection:
+
+cd /usr/ports
+make readmes #wait about 1 hour!
+simple_httpd -p 1080 -v -d /usr/ports
+
+Then point your browser at http://whatever_host/README.html
+
+Fetch Mode:
+--------------
+This is designed to be used in conjunction with fetch(3). It allows
+for easy transfer of files from one host to another without messy
+authentication or pathnames required with ftp. The file to be
+served up must be readable by the user running simple_httpd.
+This is not a magic way to avoid permissions and read files.
+
+The daemon will only serve up ONE file. The file specified will
+be returned for every GET request regardless of what the browser
+asks for. This allows for on the fly naming.
+
+sender# simple_httpd -f /usr/tmp/big_file.tgz
+receiver# fetch http://sender.com/Industrial_Secrets.tgz
+
+big_file.tgz was transferred from one machine to another and renamed
+Industrial_Secrets.tgz at the same time.
+
+Tunneling over other TCP ports. Choose something that firewall
+will probably pass. See /etc/services.
+
+sender# simple_httpd -p 53 -f /usr/tmp/big_file.tgz
+receiver# fetch http://sender.com:53/Industrial_Secrets.tgz
+
+To Do
+=====
+
+Simple authentication would be very usefull[understatment].
+/etc/passwd or PAM would be nice.
+
+I think a netmask option would be good. Most internet appliances
+probably want to restrict traffic to local ethernet anyway.
+ie: Allow anything from my class C.
+
+The server always has 1 zombie process hanging around when it
+runs as a daemon. Should fix so that it doesn't happen.
+
+Anything to make it faster!
+
+Man page
+
+If anyone has any improvements or ways to easily implement something
+please let me <wlloyd@slap.net> know. If you make some neat embedded
+device with PicoBSD I want to know too!
+
+Credits
+=======
+
+This program was originally contributed by Marc Nicholas <marc@netstor.com>
+
+Major rewrite by William Lloyd <wlloyd@slap.net>
+
+$FreeBSD$
diff --git a/release/picobsd/tinyware/simple_httpd/simple_httpd.c b/release/picobsd/tinyware/simple_httpd/simple_httpd.c
new file mode 100644
index 000000000000..71ee3396e9a5
--- /dev/null
+++ b/release/picobsd/tinyware/simple_httpd/simple_httpd.c
@@ -0,0 +1,480 @@
+/*-
+ * Simple_HTTPd v1.1 - a very small, barebones HTTP server
+ *
+ * Copyright (c) 1998-1999 Marc Nicholas <marc@netstor.com>
+ * All rights reserved.
+ *
+ * Major rewrite by William Lloyd <wlloyd@slap.net>
+ *
+ * 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$
+ */
+
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include <fcntl.h>
+#include <netdb.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+int http_port = 80;
+int daemonize = 1;
+int verbose = 0;
+int http_sock, con_sock;
+
+char fetch_mode[100];
+char homedir[100];
+char logfile[80];
+char *adate();
+
+struct hostent *hst;
+struct sockaddr_in source;
+
+/* HTTP basics */
+static char httpd_server_ident[] = "Server: FreeBSD/PicoBSD simple_httpd 1.1\r";
+
+static char http_200[] = "HTTP/1.0 200 OK\r";
+
+/* Two parts, HTTP Header and then HTML */
+static char *http_404[2] =
+ {"HTTP/1.0 404 Not found\r\n",
+"<HTML><HEAD><TITLE>Error</TITLE></HEAD><BODY><H1>Error 404</H1>\
+Not found - file doesn't exist or you do not have permission.\n</BODY></HTML>\r\n"
+};
+
+static char *http_405[2] =
+ {"HTTP/1.0 405 Method Not allowed\r\nAllow: GET,HEAD\r\n",
+"<HTML><HEAD><TITLE>Error</TITLE></HEAD><BODY><H1>Error 405</H1>\
+This server only supports GET and HEAD requests.\n</BODY></HTML>\r\n"
+};
+
+/*
+ * Only called on initial invocation
+ */
+void
+init_servconnection(void)
+{
+ struct sockaddr_in server;
+
+ /* Create a socket */
+ http_sock = socket(AF_INET, SOCK_STREAM, 0);
+ if (http_sock < 0) {
+ perror("socket");
+ exit(1);
+ }
+ server.sin_family = AF_INET;
+ server.sin_port = htons(http_port);
+ server.sin_addr.s_addr = INADDR_ANY;
+ if (bind(http_sock, (struct sockaddr *) & server, sizeof(server)) < 0) {
+ perror("bind socket");
+ exit(1);
+ }
+ if (verbose) printf("simple_httpd\n",http_port);
+}
+
+/*
+ * Wait here until we see an incoming http request
+ */
+wait_connection(void)
+{
+ int lg;
+
+ lg = sizeof(struct sockaddr_in);
+
+ con_sock = accept(http_sock, (struct sockaddr *) & source, &lg);
+ if (con_sock <= 0) {
+ perror("accept");
+ exit(1);
+ }
+}
+
+/*
+ * Print timestamp for HTTP HEAD and GET
+ */
+http_date()
+{
+ time_t tl;
+ char buff[50];
+
+ tl = time(NULL);
+ strftime(buff, 50, "Date: %a, %d %h %Y %H:%M:%S %Z\r\n", gmtime(&tl));
+ write(con_sock, buff, strlen(buff));
+ //return(buff);
+}
+
+/*
+ * Send data to the open socket
+ */
+http_output(char *html)
+{
+ write(con_sock, html, strlen(html));
+ write(con_sock, "\r\n", 2);
+}
+
+
+/*
+ * Create and write the log information to file
+ * Log file format is one line per entry
+ */
+log_line(char *req)
+{
+ char log_buff[256];
+ char msg[1024];
+ char env_host[80], env_addr[80];
+ long addr;
+ FILE *log;
+
+ strcpy(log_buff,inet_ntoa(source.sin_addr));
+ sprintf(env_addr, "REMOTE_ADDR=%s",log_buff);
+
+ addr=inet_addr(log_buff);
+
+ strcpy(msg,adate());
+ strcat(msg," ");
+ hst=gethostbyaddr((char*) &addr, 4, AF_INET);
+
+ /* If DNS hostname exists */
+ if (hst) {
+ strcat(msg,hst->h_name);
+ sprintf(env_host, "REMOTE_HOST=%s",hst->h_name);
+ }
+ strcat(msg," (");
+ strcat(msg,log_buff);
+ strcat(msg,") ");
+ strcat(msg,req);
+
+ if (daemonize) {
+ log=fopen(logfile,"a");
+ fprintf(log,"%s\n",msg);
+ fclose(log);
+ } else
+ printf("%s\n",msg);
+
+ /* This is for CGI scripts */
+ putenv(env_addr);
+ putenv(env_host);
+}
+
+/*
+ * We have a connection. Identify what type of request GET, HEAD, CGI, etc
+ * and do what needs to be done
+ */
+http_request()
+{
+ int fd, lg, ld, i;
+ int cmd = 0;
+ int http1 = 0;
+ char *p, *par;
+ char *filename, *c;
+ struct stat file_status;
+ char req[1024];
+ char msg[1024];
+ char buff[8192];
+
+ lg = read(con_sock, req, 1024);
+
+ if (p=strstr(req,"\n")) *p=0;
+ if (p=strstr(req,"\r")) *p=0;
+
+ log_line(req);
+
+ c = strtok(req, " ");
+
+ /* Error msg if request is nothing */
+ if (c == NULL) {
+ http_output(http_404[0]);
+ http_output(http_404[1]);
+ goto end_request;
+ }
+
+ if (strncmp(c, "GET", 3) == 0) cmd = 1;
+ if (strncmp(c, "HEAD", 4) == 0) cmd = 2;
+
+ /* Do error msg for any other type of request */
+ if (cmd == 0) {
+ http_output(http_405[0]);
+ http_output(http_405[1]);
+ goto end_request;
+ }
+
+ filename = strtok(NULL, " ");
+
+ c = strtok(NULL, " ");
+ if (fetch_mode[0] != NULL) strcpy(filename,fetch_mode);
+ if (filename == NULL ||
+ strlen(filename)==1) filename="/index.html";
+
+ while (filename[0]== '/') filename++;
+
+ /* CGI handling. Untested */
+ if (!strncmp(filename,"cgi-bin/",8))
+ {
+ par=0;
+ if (par=strstr(filename,"?"))
+ {
+ *par=0;
+ par++;
+ }
+ if (access(filename,X_OK)) goto conti;
+ stat (filename,&file_status);
+ if (setuid(file_status.st_uid)) return(0);
+ if (seteuid(file_status.st_uid)) return(0);
+ if (!fork())
+ {
+ close(1);
+ dup(con_sock);
+ //printf("HTTP/1.0 200 OK\nContent-type: text/html\n\n\n");
+ printf("HTTP/1.0 200 OK\r\n");
+ /* Plug in environment variable, others in log_line */
+ putenv("SERVER_SOFTWARE=FreeBSD/PicoBSD");
+
+ execlp (filename,filename,par,0);
+ }
+ wait(&i);
+ return(0);
+ }
+ conti:
+ if (filename == NULL) {
+ http_output(http_405[0]);
+ http_output(http_405[1]);
+ goto end_request;
+ }
+ /* End of CGI handling */
+
+ /* Reject any request with '..' in it, bad hacker */
+ c = filename;
+ while (*c != '\0')
+ if (c[0] == '.' && c[1] == '.') {
+ http_output(http_404[0]);
+ http_output(http_404[1]);
+ goto end_request;
+ } else
+ c++;
+
+ /* Open filename */
+ fd = open(filename, O_RDONLY);
+ if (fd < 0) {
+ http_output(http_404[0]);
+ http_output(http_404[1]);
+ goto end_request;
+ }
+
+ /* Get file status information */
+ if (fstat(fd, &file_status) < 0) {
+ http_output(http_404[0]);
+ http_output(http_404[1]);
+ goto end_request;
+ }
+
+ /* Is it a regular file? */
+ if (!S_ISREG(file_status.st_mode)) {
+ http_output(http_404[0]);
+ http_output(http_404[1]);
+ goto end_request;
+ }
+
+ /* Past this point we are serving either a GET or HEAD */
+ /* Print all the header info */
+ http_output(http_200);
+ http_output(httpd_server_ident);
+ http_date();
+
+ sprintf(buff, "Content-length: %d\r\n", file_status.st_size);
+
+ if (strstr(filename,".txt")) {
+ strcpy(buff,"Content-type: text/plain\r\n");
+ } else if (strstr(filename,".html") || strstr(filename,".htm")) {
+ strcpy(buff,"Content-type: text/html\r\n");
+ } else if (strstr(filename,".gif")) {
+ strcpy(buff,"Content-type: image/gif\r\n");
+ } else if (strstr(filename,".jpg")) {
+ strcpy(buff,"Content-type: image/jpeg\r\n");
+ } else {
+ /* Take a guess at content if we don't have something already */
+ strcpy(buff,"Content-type: ");
+ strcat(buff,strstr(filename,".")+1);
+ strcat(buff,"\r\n");
+ }
+ write(con_sock, buff, strlen(buff));
+
+ strftime(buff, 50, "Last-Modified: %a, %d %h %Y %H:%M:%S %Z\r\n\r\n", gmtime(&file_status.st_mtime));
+ write(con_sock, buff, strlen(buff));
+
+ /* Send data only if GET request */
+ if (cmd == 1) {
+ while (lg = read(fd, buff, 8192))
+ write(con_sock, buff, lg);
+ }
+
+end_request:
+ close(fd);
+ close(con_sock);
+
+}
+
+/*
+ * Simple httpd server for use in PicoBSD or other embedded application.
+ * Should satisfy simple httpd needs. For more demanding situations
+ * apache is probably a better (but much larger) choice.
+ */
+main(int argc, char *argv[])
+{
+ extern char *optarg;
+ extern int optind;
+ int bflag, ch, fd, ld;
+ int lg;
+ int httpd_group = 65534;
+ pid_t server_pid;
+
+ /* Default for html directory */
+ strcpy (homedir,getenv("HOME"));
+ if (!geteuid()) strcpy (homedir,"/httphome");
+ else strcat (homedir,"/httphome");
+
+ /* Defaults for log file */
+ if (geteuid()) {
+ strcpy(logfile,getenv("HOME"));
+ strcat(logfile,"/");
+ strcat(logfile,"jhttp.log");
+ } else
+ strcpy(logfile,"/var/log/jhttpd.log");
+
+ /* Parse command line arguments */
+ while ((ch = getopt(argc, argv, "d:f:g:l:p:vDh")) != -1)
+ switch (ch) {
+ case 'd':
+ strcpy(homedir,optarg);
+ break;
+ case 'f':
+ daemonize = 0;
+ verbose = 1;
+ strcpy(fetch_mode,optarg);
+ break;
+ case 'g':
+ httpd_group = atoi(optarg);
+ break;
+ case 'l':
+ strcpy(logfile,optarg);
+ break;
+ case 'p':
+ http_port = atoi(optarg);
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ case 'D':
+ daemonize = 0;
+ break;
+ case '?':
+ case 'h':
+ default:
+ printf("usage: simple_httpd [[-d directory][-g grpid][-l logfile][-p port][-vD]]\n");
+ exit(1);
+ /* NOTREACHED */
+ }
+
+ /* Not running as root and no port supplied, assume 1080 */
+ if ((http_port == 80) && geteuid()) {
+ http_port = 1080;
+ }
+
+ /* Do we really have rights in the html directory? */
+ if (fetch_mode[0] == NULL) {
+ if (chdir(homedir)) {
+ perror("chdir");
+ puts(homedir);
+ exit(1);
+ }
+ }
+
+ /* Create log file if it doesn't exit */
+ if ((access(logfile,W_OK)) && daemonize) {
+ ld = open (logfile,O_WRONLY);
+ chmod (logfile,00600);
+ close(ld);
+ }
+
+ init_servconnection();
+
+ if (verbose) {
+ printf("Server started with options \n");
+ printf("port: %d\n",http_port);
+ if (fetch_mode[0] == NULL) printf("html home: %s\n",homedir);
+ if (daemonize) printf("logfile: %s\n",logfile);
+ }
+
+ /* httpd is spawned */
+ if (daemonize) {
+ if (server_pid = fork()) {
+ wait3(0,WNOHANG,0);
+ if (verbose) printf("pid: %d\n",server_pid);
+ exit(0);
+ }
+ wait3(0,WNOHANG,0);
+ }
+
+ if (fetch_mode[0] == NULL) setpgrp(0,httpd_group);
+
+ /* How many connections do you want?
+ * Keep this lower than the available number of processes
+ */
+ if (listen(http_sock,15) < 0) exit(1);
+
+ label:
+ wait_connection();
+
+ if (fork()) {
+ wait3(0,WNOHANG,0);
+ close(con_sock);
+ goto label;
+ }
+
+ http_request();
+
+ wait3(0,WNOHANG,0);
+ exit(0);
+}
+
+
+char *adate()
+{
+ static char out[50];
+ long now;
+ struct tm *t;
+ time(&now);
+ t = localtime(&now);
+ sprintf(out, "%02d:%02d:%02d %02d/%02d/%02d",
+ t->tm_hour, t->tm_min, t->tm_sec,
+ t->tm_mday, t->tm_mon+1, t->tm_year );
+ return out;
+}
diff --git a/release/picobsd/tinyware/sps/Makefile b/release/picobsd/tinyware/sps/Makefile
new file mode 100644
index 000000000000..8997087da65e
--- /dev/null
+++ b/release/picobsd/tinyware/sps/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+#
+PROG=sps
+SRCS= sps.c
+NOMAN=yes
+
+.include <bsd.prog.mk>
+
+
diff --git a/release/picobsd/tinyware/sps/README b/release/picobsd/tinyware/sps/README
new file mode 100644
index 000000000000..2357113bf2ca
--- /dev/null
+++ b/release/picobsd/tinyware/sps/README
@@ -0,0 +1,11 @@
+This is a small 'ps' replacement, which uses information available via
+sysctl(3) interface (contrary to the 'aps', which requires you to mount
+procfs(5) to be able to get exactly the same info, so I think that 'sps'
+is superior solution).
+
+When I have some time, I'll add usual switches and other functions that normal
+'ps' has...
+
+<abial@freebsd.org>
+
+$FreeBSD$
diff --git a/release/picobsd/tinyware/sps/sps.c b/release/picobsd/tinyware/sps/sps.c
new file mode 100644
index 000000000000..af405b151a4d
--- /dev/null
+++ b/release/picobsd/tinyware/sps/sps.c
@@ -0,0 +1,122 @@
+/*-
+ * Copyright (c) 1998 Andrzej Bialecki
+ * 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$
+ */
+
+/*
+ * Small replacement for ps(1) - uses only sysctl(3) to retrieve info
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <sys/stat.h>
+#include <sys/user.h>
+
+char p_stat[] = "?iRSTZWM";
+
+int
+main(int argc, char *argv[])
+{
+ int mib[4], i, num, len, j, plen;
+ char buf[MAXPATHLEN], vty[5], pst[5], wmesg[10];
+ struct kinfo_proc *ki;
+ char *t;
+ int ma, mi;
+
+ mib[0] = CTL_KERN;
+ mib[1] = KERN_PROC;
+ mib[2] = KERN_PROC_ALL;
+ if (sysctl(mib, 3, NULL, &len, NULL, 0) != 0) {
+ perror("sysctl sizing");
+ exit(1);
+ }
+ t = (char *)malloc(len);
+ if (sysctl(mib, 3, t, &len, NULL, 0) != 0) {
+ perror("sysctl info");
+ exit(1);
+ }
+ mib[2] = KERN_PROC_ARGS;
+ num = len / KINFO_PROC_SIZE;
+ i = 0;
+ printf("USERNAME PID PPID PRI NICE TTY STAT WCHAN COMMAND\n");
+ while(i < num) {
+ ki = (struct kinfo_proc *)(t + (num - i - 1) * KINFO_PROC_SIZE);
+ mib[3] = ki->ki_pid;
+ plen = MAXPATHLEN;
+ if (sysctl(mib, 4, buf, &plen, NULL, 0) != 0) {
+ perror("sysctl cmd info");
+ exit(1);
+ }
+ if (plen == 0) {
+ sprintf(buf, "(%s)", ki->ki_comm);
+ } else {
+ for (j = 0; j < plen - 1; j++) {
+ if (buf[j] == '\0') buf[j] = ' ';
+ }
+ }
+ if (strcmp(ki->ki_wmesg, "") == 0) {
+ sprintf(wmesg, "-");
+ } else {
+ strcpy(wmesg, ki->ki_wmesg);
+ }
+ ma = major(ki->ki_tdev);
+ mi = minor(ki->ki_tdev);
+ switch(ma) {
+ case 255:
+ strcpy(vty, "??");
+ break;
+ case 12:
+ if(mi != 255) {
+ sprintf(vty, "v%d", mi);
+ break;
+ }
+ /* FALLTHROUGH */
+ case 0:
+ strcpy(vty, "con");
+ break;
+ case 5:
+ sprintf(vty, "p%d", mi);
+ break;
+ }
+ sprintf(pst, "%c", p_stat[ki->ki_stat]);
+ printf("%8s %5u %5u %3d %4d %3s %-4s %-7s %s\n",
+ ki->ki_login,
+ ki->ki_pid,
+ ki->ki_ppid,
+ ki->ki_priority - 22,
+ ki->ki_nice,
+ vty,
+ pst,
+ wmesg,
+ buf);
+ i++;
+ }
+ free((void *)t);
+ exit(0);
+}
diff --git a/release/picobsd/tinyware/view/Makefile b/release/picobsd/tinyware/view/Makefile
new file mode 100644
index 000000000000..1c0399d12787
--- /dev/null
+++ b/release/picobsd/tinyware/view/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+PROG=view
+SRCS=view.c
+CFLAGS+=-I/usr/local/include
+LDADD+=-L/usr/local/lib -lpng -lvgl -lz -lm
+NOMAN=yes
+
+.include <bsd.prog.mk>
diff --git a/release/picobsd/tinyware/view/README b/release/picobsd/tinyware/view/README
new file mode 100644
index 000000000000..df5f774a95f6
--- /dev/null
+++ b/release/picobsd/tinyware/view/README
@@ -0,0 +1,86 @@
+Warsaw, 1998.08.18
+
+ VIEW - small PNG viewer
+ -----------------------
+
+This program is intended to serve as a simple console viewer for PNG
+graphics. It also features some scripting abilities, which allow you to
+build simple presentation.
+
+In fact, using even this initial version I was able to build a nice
+presentation of PicoBSD abilities which I used in real-life situation (you
+can see for yourself one of the presentation's screens, fbsd.png).
+
+The audience was impressed :-), especially when I asked them politely what
+are requirements and cost to make that kind of presentation using M$
+products...
+
+Simple Viewing
+--------------
+
+Usage is as follows:
+
+ view [-g nnn.nnn] [-r x] filename.png
+
+where
+ -g nnn.nnn screen gamma (you can adjust how bright is the
+ picture)
+ -r x resolution:
+ 0 - 640x480x16
+ 1 - 640x200x256
+ 2 - 320x240x256
+
+Under right mouse button you can find a simple menu, which tells you also
+the hotkeys. You can shift, rotate and zoom the picture.
+
+Presentation
+------------
+
+Usage is as above, but the file you give as argument is a (unix) text file
+of the following format:
+
+ 1 VIEW SCRIPT
+ 2 5
+ 3 welcome.png
+ 4 /home/clipart/logo.png
+ 5 /home/present/title.png
+ 6 /home/present/outline.png
+ 7 /home/present/end.png
+
+(of course without the line numbering or the leading space!). The line number
+1 is magic, and must be present in order to recognize the file properly.
+
+The second line tells how many pictures consist the presentation. The
+following lines tell the file names containing the images themselves.
+
+See the example in file picobsd.vu.
+
+Command line arguments (gamma and resolution) are as above. You can also use
+the pop-up menu to adjust image parameters, as well as go forward or
+backward in the presentation.
+
+Bugs, caveats, missing features
+-------------------------------
+
+* there are some bugs in libvgl which require strange workarounds, and even
+ then it doesn't work quite right. See the source for the 'XXX' comments...
+
+* I didn't have time to add gamma adjustment to the pop-up menu. It's
+ simple, though, and I leave it as an exercise for the reader :-))
+
+* it would be great if someone would add GIF and jpeg support.
+
+* the error checking is probably weak. A bad PNG file or script file will
+ probably cause a coredump.
+
+* pop-up menu facilities need more abstraction to be usable in other cases.
+
+Anyway, as it is even now it's quite usable.
+
+Have fun!
+
+Andrzej Bialecki
+
+<abial@freebsd.org>
+
+$FreeBSD$
diff --git a/release/picobsd/tinyware/view/fbsd.png b/release/picobsd/tinyware/view/fbsd.png
new file mode 100644
index 000000000000..0c5d3ed7887a
--- /dev/null
+++ b/release/picobsd/tinyware/view/fbsd.png
Binary files differ
diff --git a/release/picobsd/tinyware/view/picobsd.vu b/release/picobsd/tinyware/view/picobsd.vu
new file mode 100644
index 000000000000..16a3630fa2d0
--- /dev/null
+++ b/release/picobsd/tinyware/view/picobsd.vu
@@ -0,0 +1,9 @@
+VIEW SCRIPT
+7
+/png/logo.png
+/png/1.png
+/png/2.png
+/png/p1.png
+/png/p2.png
+/png/p3.png
+/png/p4.png
diff --git a/release/picobsd/tinyware/view/view.c b/release/picobsd/tinyware/view/view.c
new file mode 100644
index 000000000000..1cdc0aaa2c83
--- /dev/null
+++ b/release/picobsd/tinyware/view/view.c
@@ -0,0 +1,619 @@
+/*-
+ * Copyright (c) 1998 Andrzej Bialecki
+ * 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$
+ */
+
+/*
+ * Small PNG viewer with scripting abilities
+ */
+
+#include <stdio.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <termios.h>
+#include <sys/types.h>
+#include <sys/fbio.h>
+#include <sys/consio.h>
+#include <sys/mouse.h>
+#include <vgl.h>
+#include <png.h>
+
+#define NUMBER 8
+
+extern char *optarg;
+extern int optind;
+
+/* Prototypes */
+int kbd_action __P((int x, int y, char hotkey));
+
+struct action {
+ int zoom;
+ int rotate;
+ int Xshift,Yshift;
+};
+
+struct menu_item {
+ char *descr;
+ char hotkey;
+ int (*func)(int x, int y, char hotkey);
+};
+
+struct menu_item std_menu[]= {
+ {"q Quit",'q',kbd_action},
+ {"n Next",'n',kbd_action},
+ {"p Previous",'p',kbd_action},
+ {"Z Zoom in",'Z',kbd_action},
+ {"z Zoom out",'z',kbd_action},
+ {"r Rotate",'r',kbd_action},
+ {"R Refresh",'R',kbd_action},
+ {"l Left",'l',kbd_action},
+ {"h Right",'h',kbd_action},
+ {"j Up",'j',kbd_action},
+ {"k Down",'k',kbd_action},
+ {NULL,0,NULL}
+};
+
+char *progname;
+VGLBitmap pic,bkg;
+struct action a;
+byte pal_red[256];
+byte pal_green[256];
+byte pal_blue[256];
+byte pal_colors;
+double screen_gamma;
+int max_screen_colors=15;
+int quit,changed;
+char **pres;
+int nimg=0;
+int auto_chg=0;
+int cur_img=0;
+char act;
+FILE *log;
+
+void
+usage()
+{
+ fprintf(stderr,"\nVGL graphics viewer, 1.0 (c) Andrzej Bialecki.\n");
+ fprintf(stderr,"\nUsage:\n");
+ fprintf(stderr,"\t%s [-r n] [-g n.n] filename\n",progname);
+ fprintf(stderr,"\nwhere:\n");
+ fprintf(stderr,"\t-r n\tchoose resolution:\n");
+ fprintf(stderr,"\t\t0 - 640x480x16 (default)\n");
+ fprintf(stderr,"\t\t1 - 640x200x256\n");
+ fprintf(stderr,"\t\t2 - 320x240x256\n");
+ fprintf(stderr,"\t-g n.n\tset screen gamma (1.3 by default)\n");
+ fprintf(stderr,"\n");
+}
+
+int
+pop_up(char *title,int x, int y)
+{
+ VGLBitmap sav,clr;
+ int x1,y1,width,height,i,j;
+ int last_pos,cur_pos,max_item;
+ char buttons;
+ char *t;
+
+ sav.Type=VGLDisplay->Type;
+ clr.Type=VGLDisplay->Type;
+ width=0;
+ height=0;
+ max_item=0;
+ i=0;
+ while(std_menu[i].descr!=NULL) {
+ height++;
+ max_item++;
+ if(strlen(std_menu[i].descr)>width) width=strlen(std_menu[i].descr);
+ i++;
+ }
+ width=width*8+2;
+ height=height*9+4+8;
+ sav.Xsize=width;
+ sav.Ysize=height;
+ clr.Xsize=width;
+ clr.Ysize=height;
+ sav.Bitmap=(byte *)calloc(width*height,1);
+ clr.Bitmap=(byte *)calloc(width*height,1);
+ if(x>(VGLDisplay->Xsize-width)) x1=VGLDisplay->Xsize-width;
+ else x1=x;
+ if(y>(VGLDisplay->Ysize-height)) y1=VGLDisplay->Ysize-height;
+ else y1=y;
+ VGLMouseMode(VGL_MOUSEHIDE);
+ VGLBitmapCopy(VGLDisplay,x1,y1,&sav,0,0,width,height);
+ VGLFilledBox(VGLDisplay,x1,y1,x1+width-1,y1+height-1,pal_colors-1);
+ VGLBitmapString(VGLDisplay,x1+1,y1+1,title,0,pal_colors-1,0,0);
+ VGLLine(VGLDisplay,x1,y1+9,x1+width,y1+9,0);
+ i=0;
+ while(std_menu[i].descr!=NULL) {
+ VGLBitmapString(VGLDisplay,x1+1,y1+11+i*9,std_menu[i].descr,0,pal_colors-1,0,0);
+ i++;
+ }
+ last_pos=-1;
+ VGLMouseMode(VGL_MOUSESHOW);
+ do {
+ pause();
+ VGLMouseStatus(&x,&y,&buttons);
+ cur_pos=(y-y1-11)/9;
+ if((cur_pos<0)||(cur_pos>max_item-1)) {
+ if(last_pos==-1) last_pos=0;
+ VGLBitmapString(VGLDisplay,x1+1,y1+11+last_pos*9,std_menu[last_pos].descr,0,pal_colors-1,0,0);
+ last_pos=-1;
+ } else if(last_pos!=cur_pos) {
+ if(last_pos==-1) last_pos=0;
+ VGLBitmapString(VGLDisplay,x1+1,y1+11+last_pos*9,std_menu[last_pos].descr,0,pal_colors-1,0,0);
+ VGLBitmapString(VGLDisplay,x1+1,y1+11+cur_pos*9,std_menu[cur_pos].descr,pal_colors/2+1,pal_colors-1,0,0);
+ last_pos=cur_pos;
+ }
+ } while (buttons & MOUSE_BUTTON3DOWN);
+ VGLMouseMode(VGL_MOUSEHIDE);
+ /* XXX Screws up totally when r==3. Libvgl bug! */
+ VGLBitmapCopy(&clr,0,0,VGLDisplay,x1,y1,width,height);
+ VGLBitmapCopy(&sav,0,0,VGLDisplay,x1,y1,width,height);
+ VGLMouseMode(VGL_MOUSESHOW);
+ free(sav.Bitmap);
+ free(clr.Bitmap);
+ changed++;
+ if((cur_pos>=0) && (cur_pos<max_item)) {
+ std_menu[cur_pos].func(x,y,std_menu[cur_pos].hotkey);
+ }
+ changed++;
+ return(0);
+}
+
+void
+display( VGLBitmap *pic,
+ byte *red,
+ byte *green,
+ byte *blue,
+ struct action *e)
+{
+ VGLBitmap target;
+ int x,y,i=0,j=0;
+
+ VGLMouseMode(VGL_MOUSEHIDE);
+ VGLRestorePalette();
+ /* XXX Broken in r!=2. Libvgl bug. */
+ //VGLClear(VGLDisplay,0);
+ VGLBitmapCopy(&bkg,0,0,VGLDisplay,0,0,bkg.Xsize,bkg.Ysize);
+
+ if(e!=NULL) {
+ if(e->zoom!=1 || e->rotate) {
+ target.Bitmap=(byte *)calloc(pic->Xsize*pic->Ysize*e->zoom*e->zoom,1);
+ if(e->rotate) {
+ target.Xsize=pic->Ysize*e->zoom;
+ target.Ysize=pic->Xsize*e->zoom;
+ } else {
+ target.Xsize=pic->Xsize*e->zoom;
+ target.Ysize=pic->Ysize*e->zoom;
+ }
+ target.Type=pic->Type;
+ for(x=0;x<pic->Xsize;x++) {
+ for(y=0;y<pic->Ysize;y++) {
+ for(i=0;i<e->zoom;i++) {
+ for(j=0;j<e->zoom;j++) {
+ if(e->rotate) {
+ VGLSetXY(&target,target.Xsize-(e->zoom*y+i),e->zoom*x+j,VGLGetXY(pic,x,y));
+ } else {
+ VGLSetXY(&target,e->zoom*x+i,e->zoom*y+j,VGLGetXY(pic,x,y));
+ }
+ }
+ }
+ }
+ }
+ } else {
+ target.Bitmap=(byte *)calloc(pic->Xsize*pic->Ysize,sizeof(byte));
+ target.Xsize=pic->Xsize;
+ target.Ysize=pic->Ysize;
+ target.Type=pic->Type;
+ VGLBitmapCopy(pic,0,0,&target,0,0,pic->Xsize,pic->Ysize);
+ }
+ } else {
+ target.Bitmap=(byte *)calloc(pic->Xsize*pic->Ysize,sizeof(byte));
+ target.Xsize=pic->Xsize;
+ target.Ysize=pic->Ysize;
+ target.Type=pic->Type;
+ VGLBitmapCopy(pic,0,0,&target,0,0,pic->Xsize,pic->Ysize);
+ }
+ VGLSetPalette(red, green, blue);
+ if(e!=NULL) {
+ VGLBitmapCopy(&target,0,0,VGLDisplay,e->Xshift,e->Yshift,target.Xsize,target.Ysize);
+ } else {
+ VGLBitmapCopy(&target,0,0,VGLDisplay,0,0,target.Xsize,target.Ysize);
+ }
+ VGLMouseMode(VGL_MOUSESHOW);
+ free(target.Bitmap);
+}
+
+int
+png_load(char *filename)
+{
+ int i,j,k;
+ FILE *fd;
+ u_char header[NUMBER];
+ png_structp png_ptr;
+ png_infop info_ptr,end_info;
+ png_uint_32 width,height;
+ int bit_depth,color_type,interlace_type;
+ int compression_type,filter_type;
+ int channels,rowbytes;
+ double gamma;
+ png_colorp palette;
+ int num_palette;
+ png_bytep *row_pointers;
+ char c;
+ int res=0;
+
+ fd=fopen(filename,"rb");
+
+ if(fd==NULL) {
+ VGLEnd();
+ perror("fopen");
+ exit(1);
+ }
+ fread(header,1,NUMBER,fd);
+ if(!png_check_sig(header,NUMBER)) {
+ fprintf(stderr,"Not a PNG file.\n");
+ return(-1);
+ }
+ png_ptr=png_create_read_struct(PNG_LIBPNG_VER_STRING,(void *)NULL,
+ NULL,NULL);
+ info_ptr=png_create_info_struct(png_ptr);
+ end_info=png_create_info_struct(png_ptr);
+ if(!png_ptr || !info_ptr || !end_info) {
+ VGLEnd();
+ fprintf(stderr,"failed to allocate needed structs!\n");
+ png_destroy_read_struct(&png_ptr,&info_ptr,&end_info);
+ return(-1);
+ }
+ png_set_sig_bytes(png_ptr,NUMBER);
+ png_init_io(png_ptr,fd);
+ png_read_info(png_ptr,info_ptr);
+ png_get_IHDR(png_ptr,info_ptr,&width,&height,&bit_depth,
+ &color_type,&interlace_type,&compression_type,&filter_type);
+ png_get_PLTE(png_ptr,info_ptr,&palette,&num_palette);
+ channels=png_get_channels(png_ptr,info_ptr);
+ rowbytes=png_get_rowbytes(png_ptr,info_ptr);
+ if(bit_depth==16)
+ png_set_strip_16(png_ptr);
+ if(color_type & PNG_COLOR_MASK_ALPHA)
+ png_set_strip_alpha(png_ptr);
+ if(png_get_gAMA(png_ptr,info_ptr,&gamma))
+ png_set_gamma(png_ptr,screen_gamma,gamma);
+ else
+ png_set_gamma(png_ptr,screen_gamma,0.45);
+ if(res==0) {
+ /* Dither */
+ if(color_type & PNG_COLOR_MASK_COLOR) {
+ if(png_get_valid(png_ptr,info_ptr,PNG_INFO_PLTE)) {
+ png_uint_16p histogram;
+ png_get_hIST(png_ptr,info_ptr,&histogram);
+ png_set_dither(png_ptr,palette,num_palette,max_screen_colors,histogram,0);
+ } else {
+ png_color std_color_cube[16]={
+ {0x00,0x00,0x00},
+ {0x02,0x02,0x02},
+ {0x04,0x04,0x04},
+ {0x06,0x06,0x06},
+ {0x08,0x08,0x08},
+ {0x0a,0x0a,0x0a},
+ {0x0c,0x0c,0x0c},
+ {0x0e,0x0e,0x0e},
+ {0x10,0x10,0x10},
+ {0x12,0x12,0x12},
+ {0x14,0x14,0x14},
+ {0x16,0x16,0x16},
+ {0x18,0x18,0x18},
+ {0x1a,0x1a,0x1a},
+ {0x1d,0x1d,0x1d},
+ {0xff,0xff,0xff},
+ };
+ png_set_dither(png_ptr,std_color_cube,max_screen_colors,max_screen_colors,NULL,0);
+ }
+ }
+ }
+ png_set_packing(png_ptr);
+ if(png_get_valid(png_ptr,info_ptr,PNG_INFO_sBIT)) {
+ png_color_8p sig_bit;
+
+ png_get_sBIT(png_ptr,info_ptr,&sig_bit);
+ png_set_shift(png_ptr,sig_bit);
+ }
+ png_read_update_info(png_ptr,info_ptr);
+ png_get_IHDR(png_ptr,info_ptr,&width,&height,&bit_depth,
+ &color_type,&interlace_type,&compression_type,&filter_type);
+ png_get_PLTE(png_ptr,info_ptr,&palette,&num_palette);
+ channels=png_get_channels(png_ptr,info_ptr);
+ rowbytes=png_get_rowbytes(png_ptr,info_ptr);
+ row_pointers=malloc(height*sizeof(png_bytep));
+ for(i=0;i<height;i++) {
+ row_pointers[i]=malloc(rowbytes);
+ }
+ png_read_image(png_ptr,row_pointers);
+ png_read_end(png_ptr,end_info);
+ png_destroy_read_struct(&png_ptr,&info_ptr,&end_info);
+ fclose(fd);
+ /* Set palette */
+ if(res) k=2;
+ else k=2;
+ for(i=0;i<256;i++) {
+ pal_red[i]=255;
+ pal_green[i]=255;
+ pal_blue[i]=255;
+ }
+ for(i=0;i<num_palette;i++) {
+ pal_red[i]=(palette+i)->red>>k;
+ pal_green[i]=(palette+i)->green>>k;
+ pal_blue[i]=(palette+i)->blue>>k;
+ }
+ pal_colors=num_palette;
+ if(pic.Bitmap!=NULL) free(pic.Bitmap);
+ pic.Bitmap=(byte *)calloc(rowbytes*height,sizeof(byte));
+ pic.Type=MEMBUF;
+ pic.Xsize=rowbytes;
+ pic.Ysize=height;
+ for(i=0;i<rowbytes;i++) {
+ for(j=0;j<height;j++) {
+ VGLSetXY(&pic,
+ i,j,row_pointers[j][i]);
+ }
+ }
+ a.zoom=1;
+ a.Xshift=(VGLDisplay->Xsize-pic.Xsize)/2;
+ a.Yshift=(VGLDisplay->Ysize-pic.Ysize)/2;
+ a.rotate=0;
+ return(0);
+}
+
+void
+kbd_handler(int sig)
+{
+ u_char buf[10];
+ int res;
+
+ res=read(0,&buf,10);
+ changed++;
+ act=buf[res-1];
+}
+
+int
+kbd_action(int x, int y, char key)
+{
+ changed=0;
+ if(key!='n') auto_chg=0;
+ switch(key) {
+ case 'q':
+ quit=1;
+ break;
+ case 'Z':
+ a.zoom++;
+ changed++;
+ break;
+ case 'z':
+ a.zoom--;
+ if(a.zoom<1) a.zoom=1;
+ changed++;
+ break;
+ case 'l':
+ a.Xshift+=VGLDisplay->Xsize/5;
+ changed++;
+ break;
+ case 'h':
+ a.Xshift-=VGLDisplay->Xsize/5;
+ changed++;
+ break;
+ case 'k':
+ a.Yshift+=VGLDisplay->Ysize/5;
+ changed++;
+ break;
+ case 'j':
+ a.Yshift-=VGLDisplay->Ysize/5;
+ changed++;
+ break;
+ case 'R':
+ changed++;
+ break;
+ case 'r':
+ if(a.rotate) a.rotate=0;
+ else a.rotate=1;
+ changed++;
+ break;
+ case '\n':
+ case 'n':
+ if(nimg>0) {
+ if(cur_img<nimg-1) {
+ cur_img++;
+ } else {
+ cur_img=0;
+ }
+ png_load(pres[cur_img]);
+ changed++;
+ }
+ break;
+ case 'p':
+ if(nimg>0) {
+ if(cur_img>0) {
+ cur_img--;
+ } else {
+ cur_img=nimg-1;
+ }
+ png_load(pres[cur_img]);
+ changed++;
+ }
+ break;
+ }
+ act=0;
+}
+
+int
+main(int argc, char *argv[])
+{
+ int i,j,k;
+ char c;
+ int res=0;
+ int x,y;
+ char buttons;
+ struct termios t_new,t_old;
+ FILE *fsc;
+
+ char buf[100];
+
+ progname=argv[0];
+ screen_gamma=1.5;
+#ifdef DEBUG
+ log=fopen("/png/view.log","w");
+#endif
+ while((c=getopt(argc,argv,"r:g:"))!=-1) {
+ switch(c) {
+ case 'r':
+ res=atoi(optarg);
+ if(res>0) max_screen_colors=256;
+ break;
+ case 'g':
+ screen_gamma=atof(optarg);
+ break;
+ case '?':
+ default:
+ usage();
+ exit(0);
+ }
+ }
+ switch(res) {
+ case 0:
+ VGLInit(SW_CG640x480);
+ break;
+ case 1:
+ VGLInit(SW_VGA_CG320);
+ break;
+ case 2:
+ VGLInit(SW_VGA_MODEX);
+ break;
+ default:
+ fprintf(stderr,"No such resolution!\n");
+ usage();
+ exit(-1);
+ }
+#ifdef DEBUG
+ fprintf(log,"VGL initialised\n");
+#endif
+ VGLSavePalette();
+ if(argc>optind) {
+ res=png_load(argv[optind]);
+ } else {
+ VGLEnd();
+ usage();
+ exit(0);
+ }
+ if(res) {
+ /* Hmm... Script? */
+ fsc=fopen(argv[optind],"r");
+#ifdef DEBUG
+ fprintf(log,"Trying script %s\n",argv[optind]);
+#endif
+ fgets(buf,99,fsc);
+ buf[strlen(buf)-1]='\0';
+ if(strncmp("VIEW SCRIPT",buf,11)!=NULL) {
+ VGLEnd();
+ usage();
+ }
+ if(strlen(buf)>12) {
+ auto_chg=atoi(buf+12);
+ }
+ fgets(buf,99,fsc);
+ buf[strlen(buf)-1]='\0';
+ nimg=atoi(buf);
+ if(nimg==0) {
+ VGLEnd();
+ usage();
+ }
+ pres=(char **)calloc(nimg,sizeof(char *));
+ for(i=0;i<nimg;i++) {
+ fgets(buf,99,fsc);
+ buf[strlen(buf)-1]='\0';
+ pres[i]=strdup(buf);
+ }
+ fclose(fsc);
+ cur_img=0;
+#ifdef DEBUG
+ fprintf(log,"Script with %d entries\n",nimg);
+#endif
+ png_load(pres[cur_img]);
+ }
+ VGLMouseInit(VGL_MOUSEHIDE);
+ /* Prepare the keyboard */
+ tcgetattr(0,&t_old);
+ memcpy(&t_new,&t_old,sizeof(struct termios));
+ cfmakeraw(&t_new);
+ tcsetattr(0,TCSAFLUSH,&t_new);
+ fcntl(0,F_SETFL,O_ASYNC);
+ /* XXX VGLClear doesn't work.. :-(( Prepare a blank background */
+ bkg.Bitmap=(byte *)calloc(VGLDisplay->Xsize*VGLDisplay->Ysize,1);
+ bkg.Xsize=VGLDisplay->Xsize;
+ bkg.Ysize=VGLDisplay->Ysize;
+ bkg.Type=VGLDisplay->Type;
+ signal(SIGIO,kbd_handler);
+ a.zoom=1;
+ a.Xshift=(VGLDisplay->Xsize-pic.Xsize)/2;
+ a.Yshift=(VGLDisplay->Ysize-pic.Ysize)/2;
+ a.rotate=0;
+ quit=0;
+ changed=0;
+ display(&pic,pal_red,pal_green,pal_blue,&a);
+ while(!quit) {
+ if(act) {
+#ifdef DEBUG
+ fprintf(log,"kbd_action(%c)\n",act);
+#endif
+ kbd_action(x,y,act);
+ }
+ if(quit) break;
+ if(changed) {
+#ifdef DEBUG
+ fprintf(log,"changed, redisplaying\n");
+#endif
+ display(&pic,pal_red,pal_green,pal_blue,&a);
+ changed=0;
+ }
+ if(auto_chg) {
+ sleep(auto_chg);
+ kbd_action(x,y,'n');
+ } else {
+ pause();
+ }
+ VGLMouseStatus(&x,&y,&buttons);
+ if(buttons & MOUSE_BUTTON3DOWN) {
+#ifdef DEBUG
+ fprintf(log,"pop_up called\n");
+#endif
+ pop_up("View",x,y);
+ }
+ }
+ VGLEnd();
+#ifdef DEBUG
+ fclose(log);
+#endif
+ exit(0);
+}
diff --git a/release/picobsd/tinyware/vm/Makefile b/release/picobsd/tinyware/vm/Makefile
new file mode 100644
index 000000000000..359aa3e9cfc4
--- /dev/null
+++ b/release/picobsd/tinyware/vm/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+PROG=vm
+#CFLAGS+=
+SRCS= vm.c
+NOMAN=yes
+
+.include <bsd.prog.mk>
+
+
diff --git a/release/picobsd/tinyware/vm/README b/release/picobsd/tinyware/vm/README
new file mode 100644
index 000000000000..c4a940c629e8
--- /dev/null
+++ b/release/picobsd/tinyware/vm/README
@@ -0,0 +1,10 @@
+1998.02.12
+
+This is a small replacement for vmstat(8) program. It allows you to measure
+current memory utilisation. The same info is available via sysctl(8) program,
+but unfortunately this particular variable doesn't have its handler, and
+consequently it is not displayed in stock version of sysctl(8).
+
+<abial@freebsd.org>
+
+$FreeBSD$
diff --git a/release/picobsd/tinyware/vm/vm.c b/release/picobsd/tinyware/vm/vm.c
new file mode 100644
index 000000000000..482a2be286b9
--- /dev/null
+++ b/release/picobsd/tinyware/vm/vm.c
@@ -0,0 +1,70 @@
+/*-
+ * Copyright (c) 1998 Andrzej Bialecki
+ * 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$
+ */
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/sysctl.h>
+#include <sys/vmmeter.h>
+#include <vm/vm_param.h>
+
+#define pgtok(a) ((a) * (u_int) pagesize >> 10)
+
+int
+main(int argc, char *argv[])
+{
+ int mib[2],i=0,len;
+ int pagesize, pagesize_len;
+ struct vmtotal v;
+
+ pagesize_len = sizeof(int);
+ sysctlbyname("vm.stats.vm.v_page_size",&pagesize,&pagesize_len,NULL,0);
+
+ len=sizeof(struct vmtotal);
+ mib[0]=CTL_VM;
+ mib[1]=VM_METER;
+ for(;;) {
+ sysctl(mib,2,&v,&len,NULL,0);
+ if(i==0) {
+ printf(" procs kB virt mem real mem shared vm shared real free\n");
+ printf(" r w l s tot act tot act tot act tot act\n");
+ }
+ printf("%2hu%2hu%2hu%2hu",v.t_rq-1,v.t_dw+v.t_pw,v.t_sl,v.t_sw);
+ printf("%7ld %7ld %7ld%7ld",
+ (long)pgtok(v.t_vm),(long)pgtok(v.t_avm),
+ (long)pgtok(v.t_rm),(long)pgtok(v.t_arm));
+ printf("%7ld%7ld%7ld%7ld%7ld\n",
+ (long)pgtok(v.t_vmshr),(long)pgtok(v.t_avmshr),
+ (long)pgtok(v.t_rmshr),(long)pgtok(v.t_armshr),
+ (long)pgtok(v.t_free));
+ sleep(5);
+ i++;
+ if(i>22) i=0;
+ }
+ exit(0);
+
+}
diff --git a/release/scripts/X11/build_x.sh b/release/scripts/X11/build_x.sh
new file mode 100755
index 000000000000..24b56fe95379
--- /dev/null
+++ b/release/scripts/X11/build_x.sh
@@ -0,0 +1,64 @@
+#!/bin/sh
+#
+# Builds X from the port and stores it under the specified directory.
+
+# usage information
+#
+usage() {
+ echo "$0 <output dir>"
+ echo
+ echo "Where <output dir> is the base directory to install X into. This"
+ echo "script also assumes that it can checkout XFree86 into "
+ echo `dirname $0`"/XFree86 and that it can get the distfiles from"
+ echo "/usr/ports/distfiles (or fetch them into that directory)."
+ echo
+ echo "Also, this should really be run as root."
+ exit 1
+}
+
+# check the command line
+if [ $# -ne 1 ]; then
+ usage
+fi
+
+# setup the output dir
+output_dir=$1
+case $output_dir in
+ /*)
+ ;;
+ *)
+ output_dir=`pwd`/${output_dir}
+ ;;
+esac
+if ! mkdir -p $1; then
+ echo "Could not create ${output_dir}!"
+ echo
+ usage
+fi
+
+# extract the directory this script lives in
+home_dir=`dirname $0`
+
+# check out the XFree86 and XFree86-contrib ports and set them up
+if ! ( cd $home_dir && \
+ cvs -R -d ${CVSROOT} co -P XFree86 XFree86-contrib ); then
+ echo "Could not checkout the XFree86 port!"
+ echo
+ usage
+fi
+
+# actually build X
+if ! ( cd $home_dir/XFree86 && \
+ make BUILD_XDIST=yes DISTDIR=/usr/ports/distfiles \
+ DESTDIR=${output_dir} NO_PKG_REGISTER=yes all install ); then
+ echo "Could not build XFree86!"
+ echo
+ usage
+fi
+if ! ( cd $home_dir/XFree86-contrib && \
+ make DISTDIR=/usr/ports/distfiles DESTDIR=${output_dir} \
+ NO_PKG_REGISTER=yes all install ); then
+ echo "Could not build XFree86-contrib!"
+ echo
+ usage
+fi
diff --git a/release/scripts/X11/generate_plists.sh b/release/scripts/X11/generate_plists.sh
new file mode 100755
index 000000000000..5ae7ecb17b4e
--- /dev/null
+++ b/release/scripts/X11/generate_plists.sh
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# This script generates the list of files stored in a set of tarballs. For
+# each argument, it uses tar to extract the list of contents and then outputs
+# the list to a file with the same base name and the extension "plist".
+
+# generate_plist <tar archive> <packing list>
+#
+# Takes the archive listed in the first argument and generates a corresponding
+# plist file to the name listed in the second argument.
+generate_plist() {
+ echo "Generating $2 from $1..."
+
+ tar_arguments='tf';
+
+ # handle gzip/bzip2/compress
+ case $1 in
+ *gz)
+ tar_arguments="${tar_arguments}z"
+ ;;
+ *bz)
+ tar_arguments="${tar_arguments}y"
+ ;;
+ *Z)
+ tar_arguments="${tar_arguments}Z"
+ ;;
+ esac
+
+ tar ${tar_arguments} $1 > $2
+}
+
+# output the usage
+#
+usage() {
+ echo "$0 <tarball_dir> <plist_dir>"
+ echo
+ echo "Where <tarball_dir> is a directory containing all the X tarballs"
+ echo "in their proper directory structure and <plist_dir> is a"
+ echo "directory to put all the packing lists under."
+ exit 1
+}
+
+# copy the directory structure of the tarball directory over into the
+# packing list directory
+#
+mirror_directories() {
+ echo "Creating packing list directory structure..."
+ find ${tarball_dir} -type d | \
+ sed -e "s:^${tarball_dir}:mkdir -p ${plist_dir}:" | \
+ sh -x || exit 1
+}
+
+# build all the package lists
+#
+build_plists() {
+ for archive in `find ${tarball_dir} ! -type d`; do
+ plist=`echo ${archive} | \
+ sed -e "s/^${tarball_dir}/${plist_dir}/"`.plist
+ generate_plist ${archive} ${plist}
+ done
+}
+
+# check for enough arguments
+if [ $# -ne 2 ]; then
+ usage
+fi
+
+# setup the variables
+tarball_dir=$1
+plist_dir=$2
+
+# do all the work
+if mirror_directories; then
+ build_plists
+fi
diff --git a/release/scripts/X11/generate_tarballs.sh b/release/scripts/X11/generate_tarballs.sh
new file mode 100755
index 000000000000..0df2d98a27bb
--- /dev/null
+++ b/release/scripts/X11/generate_tarballs.sh
@@ -0,0 +1,81 @@
+#!/bin/sh
+#
+# This script takes a directory containing the base install of X, a directory
+# containing the packing lists for the tarballs, and generates the distribution
+# tarballs in a 3rd destination directory.
+
+# generate_tarball <packing list> <tarball>
+#
+# Takes the packing list listed in the first argument and generates a
+# corresponding tarball relative to the source directory in a file with the
+# name listed in the second argument.
+generate_tarball() {
+ echo "Generating $2 from $1..."
+
+ tar_arguments='cnTfp';
+
+ # handle gzip/bzip2/compress
+ case $2 in
+ *gz)
+ tar_arguments="${tar_arguments}z"
+ ;;
+ *bz)
+ tar_arguments="${tar_arguments}y"
+ ;;
+ *Z)
+ tar_arguments="${tar_arguments}Z"
+ ;;
+ esac
+
+ cat $1 | (cd ${source_dir} ; tar ${tar_arguments} - - ) > $2
+}
+
+# output the usage
+#
+usage() {
+ echo "$0 <source_dir> <plist_dir> <tarball_dir>"
+ echo
+ echo "Where <source_dir> is a directory containing the built X binaries,"
+ echo "<plist_dir> is the directory containing all of the packing lists"
+ echo "(generated by generate_plists.sh), and <tarball_dir> is the"
+ echo "directory to put all the tarballs under."
+ exit 1
+}
+
+# copy the directory structure of the packing list directory over into the
+# tarball directory
+#
+mirror_directories() {
+ echo "Creating tarball directory structure..."
+ find ${plist_dir} -type d | \
+ sed -e "s:^${plist_dir}:mkdir -p ${tarball_dir}:" | \
+ sh -x || exit 1
+}
+
+# build all the tarballs
+#
+build_tarballs() {
+ for plist in `find ${plist_dir} ! -type d`; do
+ archive=`echo ${plist} | \
+ sed -e "s:^${plist_dir}:${tarball_dir}:" \
+ -e 's/\.plist$//'`
+ generate_tarball ${plist} ${archive}
+ done
+}
+
+# check for enough arguments
+if [ $# -ne 3 ]; then
+ usage
+fi
+
+# setup the variables
+source_dir=$1
+plist_dir=$2
+tarball_dir=$3
+
+# do all the work
+if mirror_directories; then
+ build_tarballs
+else
+ echo $0: mirroring directories failed
+fi
diff --git a/release/scripts/X11/package_x_dists.sh b/release/scripts/X11/package_x_dists.sh
new file mode 100755
index 000000000000..4c9c4a1d0f1c
--- /dev/null
+++ b/release/scripts/X11/package_x_dists.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+#
+# This script uses a few child scripts to build X and then package it up.
+# It assumes that all the needed child scripts are in the same directory that
+# it lives in. It takes three parameters, one is the directory containing the
+# packing lists for the tarballs, the second is the directory that we can use
+# for our scratch work, and the third is the directory to stick all the
+# tarballs in. We also expect CVSROOT to be set to a working CVS repo with
+# the ports tree in it, although we only need read-only access.
+
+# usage info
+#
+usage() {
+ echo "$0 <work dir> <tarball dir>"
+ echo
+ echo "Where <work dir> is the name of the scratch directory we can do"
+ echo " our work under. Note that we toast the scratch directory at the"
+ echo " beginning."
+ exit 1
+}
+
+# check our command line
+if [ $# -ne 2 ]; then
+ usage
+fi
+
+# setup our directory variables
+# note the generate_plists.sh script can be used to populate $plist_dir
+home_dir=`dirname $0`
+plist_dir=${home_dir}/plists/`uname -m`
+work_dir=$1
+tarball_dir=$2
+
+# setup the scratch directory
+[ -r ${work_dir} ] && rm -rf ${work_dir}
+if ! mkdir -p ${work_dir}; then
+ echo "Could not create ${work_dir}!"
+ echo
+ usage
+fi
+mkdir ${work_dir}/scripts
+cp $home_dir/* ${work_dir}/scripts/
+mkdir ${work_dir}/tmp
+
+# build X
+if ! ${work_dir}/scripts/build_x.sh ${work_dir}/tmp; then
+ exit 1
+fi
+
+# now package it up into tarballs
+if ! ${work_dir}/scripts/generate_tarballs.sh \
+ ${work_dir}/tmp/usr/X11R6 ${plist_dir} ${tarball_dir}; then
+ exit 1
+fi
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9480.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9480.tgz.plist
new file mode 100644
index 000000000000..8b87b0bb0062
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9480.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_NEC480
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9EGC.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9EGC.tgz.plist
new file mode 100644
index 000000000000..f6a3d7074893
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9EGC.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_EGC
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9GA9.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9GA9.tgz.plist
new file mode 100644
index 000000000000..3a65c75b811e
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9GA9.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_GA968
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9GAN.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9GAN.tgz.plist
new file mode 100644
index 000000000000..5649527d6abe
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9GAN.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_GANBWAP
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9LPW.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9LPW.tgz.plist
new file mode 100644
index 000000000000..1fbadfd304a9
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9LPW.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_PWLB
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9MGA.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9MGA.tgz.plist
new file mode 100644
index 000000000000..a5b835e5855b
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9MGA.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_MGA
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9NKV.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9NKV.tgz.plist
new file mode 100644
index 000000000000..459b09119747
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9NKV.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_NKVNEC
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9NS3.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9NS3.tgz.plist
new file mode 100644
index 000000000000..33e814e466ac
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9NS3.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_NECS3
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9SPW.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9SPW.tgz.plist
new file mode 100644
index 000000000000..60b73a1cdfb5
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9SPW.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_PWSKB
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9SVG.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9SVG.tgz.plist
new file mode 100644
index 000000000000..aae4896773a0
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9SVG.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_SVGA
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9TGU.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9TGU.tgz.plist
new file mode 100644
index 000000000000..0d282078d076
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9TGU.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_TGUI
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9WEP.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9WEP.tgz.plist
new file mode 100644
index 000000000000..04181bd7382e
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9WEP.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_WABEP
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9WS.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9WS.tgz.plist
new file mode 100644
index 000000000000..76f479ba6d07
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9WS.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_WABS
diff --git a/release/scripts/X11/plists/i386/PC98-Servers/X9WSN.tgz.plist b/release/scripts/X11/plists/i386/PC98-Servers/X9WSN.tgz.plist
new file mode 100644
index 000000000000..9d345cc8532b
--- /dev/null
+++ b/release/scripts/X11/plists/i386/PC98-Servers/X9WSN.tgz.plist
@@ -0,0 +1 @@
+bin/XF98_WSNA
diff --git a/release/scripts/X11/plists/i386/Servers/X3DL.tgz.plist b/release/scripts/X11/plists/i386/Servers/X3DL.tgz.plist
new file mode 100644
index 000000000000..95bc0594baf9
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/X3DL.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_3DLabs
diff --git a/release/scripts/X11/plists/i386/Servers/X8514.tgz.plist b/release/scripts/X11/plists/i386/Servers/X8514.tgz.plist
new file mode 100644
index 000000000000..66f089e22696
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/X8514.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_8514
diff --git a/release/scripts/X11/plists/i386/Servers/XAGX.tgz.plist b/release/scripts/X11/plists/i386/Servers/XAGX.tgz.plist
new file mode 100644
index 000000000000..6f41acb860f5
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/XAGX.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_AGX
diff --git a/release/scripts/X11/plists/i386/Servers/XI128.tgz.plist b/release/scripts/X11/plists/i386/Servers/XI128.tgz.plist
new file mode 100644
index 000000000000..2a8ba145b103
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/XI128.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_I128
diff --git a/release/scripts/X11/plists/i386/Servers/XMa32.tgz.plist b/release/scripts/X11/plists/i386/Servers/XMa32.tgz.plist
new file mode 100644
index 000000000000..12323fb0d324
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/XMa32.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_Mach32
diff --git a/release/scripts/X11/plists/i386/Servers/XMa64.tgz.plist b/release/scripts/X11/plists/i386/Servers/XMa64.tgz.plist
new file mode 100644
index 000000000000..7f75015338a7
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/XMa64.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_Mach64
diff --git a/release/scripts/X11/plists/i386/Servers/XMa8.tgz.plist b/release/scripts/X11/plists/i386/Servers/XMa8.tgz.plist
new file mode 100644
index 000000000000..6a6a6f443750
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/XMa8.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_Mach8
diff --git a/release/scripts/X11/plists/i386/Servers/XMono.tgz.plist b/release/scripts/X11/plists/i386/Servers/XMono.tgz.plist
new file mode 100644
index 000000000000..06ef98d26369
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/XMono.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_Mono
diff --git a/release/scripts/X11/plists/i386/Servers/XP9K.tgz.plist b/release/scripts/X11/plists/i386/Servers/XP9K.tgz.plist
new file mode 100644
index 000000000000..be9adab5856f
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/XP9K.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_P9000
diff --git a/release/scripts/X11/plists/i386/Servers/XS3.tgz.plist b/release/scripts/X11/plists/i386/Servers/XS3.tgz.plist
new file mode 100644
index 000000000000..2ff889fc6a13
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/XS3.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_S3
diff --git a/release/scripts/X11/plists/i386/Servers/XS3V.tgz.plist b/release/scripts/X11/plists/i386/Servers/XS3V.tgz.plist
new file mode 100644
index 000000000000..8a7161906f01
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/XS3V.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_S3V
diff --git a/release/scripts/X11/plists/i386/Servers/XSVGA.tgz.plist b/release/scripts/X11/plists/i386/Servers/XSVGA.tgz.plist
new file mode 100644
index 000000000000..bf3b71150cc7
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/XSVGA.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_SVGA
diff --git a/release/scripts/X11/plists/i386/Servers/XVG16.tgz.plist b/release/scripts/X11/plists/i386/Servers/XVG16.tgz.plist
new file mode 100644
index 000000000000..7d2e6163f603
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/XVG16.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_VGA16
diff --git a/release/scripts/X11/plists/i386/Servers/XW32.tgz.plist b/release/scripts/X11/plists/i386/Servers/XW32.tgz.plist
new file mode 100644
index 000000000000..4b46da8a1556
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Servers/XW32.tgz.plist
@@ -0,0 +1 @@
+bin/XF86_W32
diff --git a/release/scripts/X11/plists/i386/X9set.tgz.plist b/release/scripts/X11/plists/i386/X9set.tgz.plist
new file mode 100644
index 000000000000..fe5bb0d0b720
--- /dev/null
+++ b/release/scripts/X11/plists/i386/X9set.tgz.plist
@@ -0,0 +1,76 @@
+bin/XF98Setup
+bin/xmseconfig
+lib/X11/XF86Setup/
+lib/X11/XF86Setup/phase1.tcl
+lib/X11/XF86Setup/phase2.tcl
+lib/X11/XF86Setup/phase3.tcl
+lib/X11/XF86Setup/phase4.tcl
+lib/X11/XF86Setup/phase5.tcl
+lib/X11/XF86Setup/setuplib.tcl
+lib/X11/XF86Setup/srvflags.tcl
+lib/X11/XF86Setup/carddata.tcl
+lib/X11/XF86Setup/card.tcl
+lib/X11/XF86Setup/done.tcl
+lib/X11/XF86Setup/filelist98.tcl
+lib/X11/XF86Setup/keyboard.tcl
+lib/X11/XF86Setup/mseproto98.tcl
+lib/X11/XF86Setup/mondata.tcl
+lib/X11/XF86Setup/monitor.tcl
+lib/X11/XF86Setup/modeselect.tcl
+lib/X11/XF86Setup/mouse.tcl
+lib/X11/XF86Setup/LICENSE
+lib/X11/XF86Setup/tcllib/
+lib/X11/XF86Setup/tcllib/button.tcl
+lib/X11/XF86Setup/tcllib/combobox.tcl
+lib/X11/XF86Setup/tcllib/misc.tcl
+lib/X11/XF86Setup/tcllib/downarrow.xbm
+lib/X11/XF86Setup/tcllib/dialog.tcl
+lib/X11/XF86Setup/tcllib/entry.tcl
+lib/X11/XF86Setup/tcllib/focus.tcl
+lib/X11/XF86Setup/tcllib/init.tcl
+lib/X11/XF86Setup/tcllib/listbox.tcl
+lib/X11/XF86Setup/tcllib/menu.tcl
+lib/X11/XF86Setup/tcllib/optionMenu.tcl
+lib/X11/XF86Setup/tcllib/palette.tcl
+lib/X11/XF86Setup/tcllib/scale.tcl
+lib/X11/XF86Setup/tcllib/scrollbar.tcl
+lib/X11/XF86Setup/tcllib/tclIndex
+lib/X11/XF86Setup/tcllib/tearoff.tcl
+lib/X11/XF86Setup/tcllib/text.tcl
+lib/X11/XF86Setup/tcllib/tk.tcl
+lib/X11/XF86Setup/tcllib/tkerror.tcl
+lib/X11/XF86Setup/tcllib/uparrow.xbm
+lib/X11/XF86Setup/tcllib/license.terms
+lib/X11/XF86Setup/pics/
+lib/X11/XF86Setup/pics/vidcard.xbm
+lib/X11/XF86Setup/pics/vidcard.msk
+lib/X11/XF86Setup/pics/XFree86.xbm
+lib/X11/XF86Setup/pics/XFree86.msk
+lib/X11/XF86Setup/scripts/
+lib/X11/XF86Setup/scripts/mseconfig.tcl
+lib/X11/XF86Setup/texts/
+lib/X11/XF86Setup/texts/local_text.tcl
+lib/X11/XF86Setup/texts/generic/
+lib/X11/XF86Setup/texts/generic/messages.tcl
+lib/X11/XF86Setup/texts/generic/message_proc.tcl
+lib/X11/XF86Setup/texts/generic/help_card.tcl
+lib/X11/XF86Setup/texts/generic/help_done.tcl
+lib/X11/XF86Setup/texts/generic/help_keyboard.tcl
+lib/X11/XF86Setup/texts/generic/help_monitor.tcl
+lib/X11/XF86Setup/texts/generic/help_mouse.tcl
+lib/X11/XF86Setup/texts/generic/help_other.tcl
+lib/X11/XF86Setup/texts/generic/help_intro.tcl
+lib/X11/XF86Setup/texts/generic/help_modeselect.tcl
+lib/X11/XF86Setup/texts/ja/
+lib/X11/XF86Setup/texts/ja/messages.tcl
+lib/X11/XF86Setup/texts/ja/message_proc.tcl
+lib/X11/XF86Setup/texts/ja/help_card.tcl
+lib/X11/XF86Setup/texts/ja/help_done.tcl
+lib/X11/XF86Setup/texts/ja/help_keyboard.tcl
+lib/X11/XF86Setup/texts/ja/help_monitor.tcl
+lib/X11/XF86Setup/texts/ja/help_mouse.tcl
+lib/X11/XF86Setup/texts/ja/help_other.tcl
+lib/X11/XF86Setup/texts/ja/help_intro.tcl
+lib/X11/XF86Setup/texts/ja/help_modeselect.tcl
+man/man1/XF86Setup.1.gz
+man/man1/xmseconfig.1.gz
diff --git a/release/scripts/X11/plists/i386/Xbin.tgz.plist b/release/scripts/X11/plists/i386/Xbin.tgz.plist
new file mode 100644
index 000000000000..26c5a6e8338b
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xbin.tgz.plist
@@ -0,0 +1,175 @@
+bin/
+bin/imake
+bin/makedepend
+bin/lndir
+bin/xmkmf
+bin/mkdirhier
+bin/gccmakedep
+bin/mergelib
+bin/makeg
+bin/appres
+bin/bdftopcf
+bin/bitmap
+bin/bmtoa
+bin/atobm
+bin/beforelight
+bin/editres
+bin/fsinfo
+bin/fslsfonts
+bin/fstobdf
+bin/iceauth
+bin/mkfontdir
+bin/oclock
+bin/proxymngr
+bin/showrgb
+bin/rstartd
+bin/rstart
+bin/smproxy
+bin/twm
+bin/x11perf
+bin/x11perfcomp
+bin/Xmark
+bin/xauth
+bin/xclipboard
+bin/xcutsel
+bin/xclock
+bin/xcmsdb
+bin/xconsole
+bin/xdm
+bin/sessreg
+bin/xdpyinfo
+bin/dga
+bin/xfd
+bin/xfindproxy
+bin/xfwp
+bin/xhost
+bin/xieperf
+bin/xinit
+bin/startx
+bin/setxkbmap
+bin/xkbcomp
+bin/xkbevd
+bin/xkbprint
+bin/xkbvleds
+bin/xkbwatch
+bin/xkbbell
+bin/xkill
+bin/xlogo
+bin/xlsatoms
+bin/xlsclients
+bin/xlsfonts
+bin/xmag
+bin/xmh
+bin/xmodmap
+bin/xprop
+bin/xrdb
+bin/xrefresh
+bin/xrx
+bin/xset
+bin/xsetroot
+bin/xsm
+bin/xstdcmap
+bin/xsetmode
+bin/xsetpointer
+bin/xterm
+bin/resize
+bin/xvidtune
+bin/xwd
+bin/xwininfo
+bin/xwud
+bin/Xwrapper
+bin/reconfig
+bin/xf86config
+bin/kbd_mode
+bin/scanpci
+bin/joycal
+bin/SuperProbe
+bin/xf98config
+bin/lbxproxy
+bin/xon
+bin/ico
+bin/listres
+bin/showfont
+bin/viewres
+bin/xbiff
+bin/xcalc
+bin/xditview
+bin/xedit
+bin/xev
+bin/xeyes
+bin/xfontsel
+bin/xgc
+bin/xload
+bin/xman
+bin/xmessage
+lib/libICE.so.6
+lib/libICE.so
+lib/libPEX5.so.6
+lib/libPEX5.so
+lib/libSM.so.6
+lib/libSM.so
+lib/libX11.so.6
+lib/libX11.so
+lib/libXIE.so.6
+lib/libXIE.so
+lib/libXThrStub.so.6
+lib/libXThrStub.so
+lib/libXaw.so.6
+lib/libXaw.so
+lib/libXext.so.6
+lib/libXext.so
+lib/libXi.so.6
+lib/libXi.so
+lib/libXmu.so.6
+lib/libXmu.so
+lib/libXp.so.6
+lib/libXp.so
+lib/libXt.so.6
+lib/libXt.so
+lib/libXtst.so.6
+lib/libXtst.so
+lib/liboldX.so.6
+lib/liboldX.so
+lib/modules/
+lib/modules/xie.so
+lib/modules/pex5.so
+lib/modules/xf86Jstk.so
+lib/modules/xf86Wacom.so
+lib/modules/xf86Elo.so
+lib/modules/xf86Dyna.so
+lib/modules/xf86MuTouch.so
+lib/modules/xf86Summa.so
+lib/modules/xf86AceCad.so
+lib/modules/xf86Dial.so
+lib/modules/xf86Calcomp.so
+lib/X11/app-defaults/
+lib/X11/app-defaults/Bitmap
+lib/X11/app-defaults/Bitmap-color
+lib/X11/app-defaults/Beforelight
+lib/X11/app-defaults/Editres
+lib/X11/app-defaults/Editres-color
+lib/X11/app-defaults/Clock-color
+lib/X11/app-defaults/XClipboard
+lib/X11/app-defaults/XClock
+lib/X11/app-defaults/XConsole
+lib/X11/app-defaults/Chooser
+lib/X11/app-defaults/Xfd
+lib/X11/app-defaults/XLogo
+lib/X11/app-defaults/XLogo-color
+lib/X11/app-defaults/Xmag
+lib/X11/app-defaults/Xmh
+lib/X11/app-defaults/XSm
+lib/X11/app-defaults/XTerm
+lib/X11/app-defaults/XTerm-color
+lib/X11/app-defaults/Xvidtune
+lib/X11/app-defaults/Viewres
+lib/X11/app-defaults/XCalc
+lib/X11/app-defaults/XCalc-color
+lib/X11/app-defaults/Xditview
+lib/X11/app-defaults/Xditview-chrtr
+lib/X11/app-defaults/Xedit
+lib/X11/app-defaults/XFontSel
+lib/X11/app-defaults/Xgc
+lib/X11/app-defaults/XLoad
+lib/X11/app-defaults/Xman
+lib/X11/app-defaults/Xmessage
diff --git a/release/scripts/X11/plists/i386/Xcfg.tgz.plist b/release/scripts/X11/plists/i386/Xcfg.tgz.plist
new file mode 100644
index 000000000000..1a2d960ee64a
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xcfg.tgz.plist
@@ -0,0 +1,11 @@
+lib/X11/xdm/
+lib/X11/xdm/xdm-config
+lib/X11/xdm/Xresources
+lib/X11/xdm/Xservers
+lib/X11/xdm/Xaccess
+lib/X11/xdm/Xsession
+lib/X11/xdm/GiveConsole
+lib/X11/xdm/TakeConsole
+lib/X11/xdm/Xsetup_0
+lib/X11/xinit/xinitrc
+lib/X11/proxymngr/pmconfig
diff --git a/release/scripts/X11/plists/i386/Xdoc.tgz.plist b/release/scripts/X11/plists/i386/Xdoc.tgz.plist
new file mode 100644
index 000000000000..a7bdbdbb825f
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xdoc.tgz.plist
@@ -0,0 +1,63 @@
+lib/X11/doc/
+lib/X11/doc/COPYRIGHT
+lib/X11/doc/README
+lib/X11/doc/README.Config
+lib/X11/doc/BUILD
+lib/X11/doc/RELNOTES
+lib/X11/doc/README.Linux
+lib/X11/doc/README.ati
+lib/X11/doc/README.trident
+lib/X11/doc/README.tseng
+lib/X11/doc/README.WstDig
+lib/X11/doc/README.DECtga
+lib/X11/doc/README.apm
+lib/X11/doc/README.rendition
+lib/X11/doc/README.epson
+lib/X11/doc/README.chips
+lib/X11/doc/README.cirrus
+lib/X11/doc/README.Video7
+lib/X11/doc/README.P9000
+lib/X11/doc/README.agx
+lib/X11/doc/README.S3
+lib/X11/doc/README.S3V
+lib/X11/doc/README.SiS
+lib/X11/doc/README.W32
+lib/X11/doc/README.Oak
+lib/X11/doc/README.I128
+lib/X11/doc/README.Mach32
+lib/X11/doc/README.Mach64
+lib/X11/doc/README.ark
+lib/X11/doc/README.MGA
+lib/X11/doc/README.NVIDIA
+lib/X11/doc/README.mouse
+lib/X11/doc/README.neo
+lib/X11/doc/README.3DLabs
+lib/X11/doc/README.cyrix
+lib/X11/doc/README.i740
+lib/X11/doc/README.r128
+lib/X11/doc/VideoModes.doc
+lib/X11/doc/QuickStart.doc
+lib/X11/doc/README.clkprog
+lib/X11/doc/xinput
+lib/X11/doc/ServersOnly
+lib/X11/doc/README.DGA
+lib/X11/doc/AccelCards
+lib/X11/doc/Monitors
+lib/X11/doc/Devices
+lib/X11/doc/README.LinkKit
+lib/X11/doc/VGADriver.Doc
+lib/X11/doc/VideoBoard98
+lib/X11/doc/README.FreeBSD
+lib/X11/doc/README.NetBSD
+lib/X11/doc/README.OpenBSD
+lib/X11/doc/README.fbdev
+lib/X11/doc/README.DGux
+lib/X11/doc/README.LynxOS
+lib/X11/doc/README.SCO
+lib/X11/doc/README.isc
+lib/X11/doc/README.OS2
+lib/X11/doc/OS2.Notes
+lib/X11/doc/README.SOLX86
+lib/X11/doc/README.SVR4
+lib/X11/doc/README.i810
+lib/X11/doc/DocIndex
diff --git a/release/scripts/X11/plists/i386/Xf100.tgz.plist b/release/scripts/X11/plists/i386/Xf100.tgz.plist
new file mode 100644
index 000000000000..8b706fd1834c
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xf100.tgz.plist
@@ -0,0 +1,201 @@
+lib/X11/fonts/100dpi/
+lib/X11/fonts/100dpi/courB08.pcf.gz
+lib/X11/fonts/100dpi/courB10.pcf.gz
+lib/X11/fonts/100dpi/courB12.pcf.gz
+lib/X11/fonts/100dpi/courB14.pcf.gz
+lib/X11/fonts/100dpi/courB18.pcf.gz
+lib/X11/fonts/100dpi/courB24.pcf.gz
+lib/X11/fonts/100dpi/courBO08.pcf.gz
+lib/X11/fonts/100dpi/courBO10.pcf.gz
+lib/X11/fonts/100dpi/courBO12.pcf.gz
+lib/X11/fonts/100dpi/courBO14.pcf.gz
+lib/X11/fonts/100dpi/courBO18.pcf.gz
+lib/X11/fonts/100dpi/courBO24.pcf.gz
+lib/X11/fonts/100dpi/courO08.pcf.gz
+lib/X11/fonts/100dpi/courO10.pcf.gz
+lib/X11/fonts/100dpi/courO12.pcf.gz
+lib/X11/fonts/100dpi/courO14.pcf.gz
+lib/X11/fonts/100dpi/courO18.pcf.gz
+lib/X11/fonts/100dpi/courO24.pcf.gz
+lib/X11/fonts/100dpi/courR08.pcf.gz
+lib/X11/fonts/100dpi/courR10.pcf.gz
+lib/X11/fonts/100dpi/courR12.pcf.gz
+lib/X11/fonts/100dpi/courR14.pcf.gz
+lib/X11/fonts/100dpi/courR18.pcf.gz
+lib/X11/fonts/100dpi/courR24.pcf.gz
+lib/X11/fonts/100dpi/helvB08.pcf.gz
+lib/X11/fonts/100dpi/helvB10.pcf.gz
+lib/X11/fonts/100dpi/helvB12.pcf.gz
+lib/X11/fonts/100dpi/helvB14.pcf.gz
+lib/X11/fonts/100dpi/helvB18.pcf.gz
+lib/X11/fonts/100dpi/helvB24.pcf.gz
+lib/X11/fonts/100dpi/helvBO08.pcf.gz
+lib/X11/fonts/100dpi/helvBO10.pcf.gz
+lib/X11/fonts/100dpi/helvBO12.pcf.gz
+lib/X11/fonts/100dpi/helvBO14.pcf.gz
+lib/X11/fonts/100dpi/helvBO18.pcf.gz
+lib/X11/fonts/100dpi/helvBO24.pcf.gz
+lib/X11/fonts/100dpi/helvO08.pcf.gz
+lib/X11/fonts/100dpi/helvO10.pcf.gz
+lib/X11/fonts/100dpi/helvO12.pcf.gz
+lib/X11/fonts/100dpi/helvO14.pcf.gz
+lib/X11/fonts/100dpi/helvO18.pcf.gz
+lib/X11/fonts/100dpi/helvO24.pcf.gz
+lib/X11/fonts/100dpi/helvR08.pcf.gz
+lib/X11/fonts/100dpi/helvR10.pcf.gz
+lib/X11/fonts/100dpi/helvR12.pcf.gz
+lib/X11/fonts/100dpi/helvR14.pcf.gz
+lib/X11/fonts/100dpi/helvR18.pcf.gz
+lib/X11/fonts/100dpi/helvR24.pcf.gz
+lib/X11/fonts/100dpi/ncenB08.pcf.gz
+lib/X11/fonts/100dpi/ncenB10.pcf.gz
+lib/X11/fonts/100dpi/ncenB12.pcf.gz
+lib/X11/fonts/100dpi/ncenB14.pcf.gz
+lib/X11/fonts/100dpi/ncenB18.pcf.gz
+lib/X11/fonts/100dpi/ncenB24.pcf.gz
+lib/X11/fonts/100dpi/ncenBI08.pcf.gz
+lib/X11/fonts/100dpi/ncenBI10.pcf.gz
+lib/X11/fonts/100dpi/ncenBI12.pcf.gz
+lib/X11/fonts/100dpi/ncenBI14.pcf.gz
+lib/X11/fonts/100dpi/ncenBI18.pcf.gz
+lib/X11/fonts/100dpi/ncenBI24.pcf.gz
+lib/X11/fonts/100dpi/ncenI08.pcf.gz
+lib/X11/fonts/100dpi/ncenI10.pcf.gz
+lib/X11/fonts/100dpi/ncenI12.pcf.gz
+lib/X11/fonts/100dpi/ncenI14.pcf.gz
+lib/X11/fonts/100dpi/ncenI18.pcf.gz
+lib/X11/fonts/100dpi/ncenI24.pcf.gz
+lib/X11/fonts/100dpi/ncenR08.pcf.gz
+lib/X11/fonts/100dpi/ncenR10.pcf.gz
+lib/X11/fonts/100dpi/ncenR12.pcf.gz
+lib/X11/fonts/100dpi/ncenR14.pcf.gz
+lib/X11/fonts/100dpi/ncenR18.pcf.gz
+lib/X11/fonts/100dpi/ncenR24.pcf.gz
+lib/X11/fonts/100dpi/symb08.pcf.gz
+lib/X11/fonts/100dpi/symb10.pcf.gz
+lib/X11/fonts/100dpi/symb12.pcf.gz
+lib/X11/fonts/100dpi/symb14.pcf.gz
+lib/X11/fonts/100dpi/symb18.pcf.gz
+lib/X11/fonts/100dpi/symb24.pcf.gz
+lib/X11/fonts/100dpi/timB08.pcf.gz
+lib/X11/fonts/100dpi/timB10.pcf.gz
+lib/X11/fonts/100dpi/timB12.pcf.gz
+lib/X11/fonts/100dpi/timB14.pcf.gz
+lib/X11/fonts/100dpi/timB18.pcf.gz
+lib/X11/fonts/100dpi/timB24.pcf.gz
+lib/X11/fonts/100dpi/timBI08.pcf.gz
+lib/X11/fonts/100dpi/timBI10.pcf.gz
+lib/X11/fonts/100dpi/timBI12.pcf.gz
+lib/X11/fonts/100dpi/timBI14.pcf.gz
+lib/X11/fonts/100dpi/timBI18.pcf.gz
+lib/X11/fonts/100dpi/timBI24.pcf.gz
+lib/X11/fonts/100dpi/timI08.pcf.gz
+lib/X11/fonts/100dpi/timI10.pcf.gz
+lib/X11/fonts/100dpi/timI12.pcf.gz
+lib/X11/fonts/100dpi/timI14.pcf.gz
+lib/X11/fonts/100dpi/timI18.pcf.gz
+lib/X11/fonts/100dpi/timI24.pcf.gz
+lib/X11/fonts/100dpi/timR08.pcf.gz
+lib/X11/fonts/100dpi/timR10.pcf.gz
+lib/X11/fonts/100dpi/timR12.pcf.gz
+lib/X11/fonts/100dpi/timR14.pcf.gz
+lib/X11/fonts/100dpi/timR18.pcf.gz
+lib/X11/fonts/100dpi/timR24.pcf.gz
+lib/X11/fonts/100dpi/fonts.dir
+lib/X11/fonts/100dpi/charI08.pcf.gz
+lib/X11/fonts/100dpi/charI10.pcf.gz
+lib/X11/fonts/100dpi/charI12.pcf.gz
+lib/X11/fonts/100dpi/charI14.pcf.gz
+lib/X11/fonts/100dpi/charI18.pcf.gz
+lib/X11/fonts/100dpi/charI24.pcf.gz
+lib/X11/fonts/100dpi/charR08.pcf.gz
+lib/X11/fonts/100dpi/charR10.pcf.gz
+lib/X11/fonts/100dpi/charR12.pcf.gz
+lib/X11/fonts/100dpi/charR14.pcf.gz
+lib/X11/fonts/100dpi/charR18.pcf.gz
+lib/X11/fonts/100dpi/charR24.pcf.gz
+lib/X11/fonts/100dpi/tech14.pcf.gz
+lib/X11/fonts/100dpi/techB14.pcf.gz
+lib/X11/fonts/100dpi/term14.pcf.gz
+lib/X11/fonts/100dpi/termB14.pcf.gz
+lib/X11/fonts/100dpi/luBIS08.pcf.gz
+lib/X11/fonts/100dpi/luBIS10.pcf.gz
+lib/X11/fonts/100dpi/luBIS12.pcf.gz
+lib/X11/fonts/100dpi/luBIS14.pcf.gz
+lib/X11/fonts/100dpi/luBIS18.pcf.gz
+lib/X11/fonts/100dpi/luBIS24.pcf.gz
+lib/X11/fonts/100dpi/luBS08.pcf.gz
+lib/X11/fonts/100dpi/luBS10.pcf.gz
+lib/X11/fonts/100dpi/luBS12.pcf.gz
+lib/X11/fonts/100dpi/luBS14.pcf.gz
+lib/X11/fonts/100dpi/luBS18.pcf.gz
+lib/X11/fonts/100dpi/luBS24.pcf.gz
+lib/X11/fonts/100dpi/luIS08.pcf.gz
+lib/X11/fonts/100dpi/luIS10.pcf.gz
+lib/X11/fonts/100dpi/luIS12.pcf.gz
+lib/X11/fonts/100dpi/luIS14.pcf.gz
+lib/X11/fonts/100dpi/luIS18.pcf.gz
+lib/X11/fonts/100dpi/luIS24.pcf.gz
+lib/X11/fonts/100dpi/luRS08.pcf.gz
+lib/X11/fonts/100dpi/luRS10.pcf.gz
+lib/X11/fonts/100dpi/luRS12.pcf.gz
+lib/X11/fonts/100dpi/luRS14.pcf.gz
+lib/X11/fonts/100dpi/luRS18.pcf.gz
+lib/X11/fonts/100dpi/luRS24.pcf.gz
+lib/X11/fonts/100dpi/lubB08.pcf.gz
+lib/X11/fonts/100dpi/lubB10.pcf.gz
+lib/X11/fonts/100dpi/lubB12.pcf.gz
+lib/X11/fonts/100dpi/lubB14.pcf.gz
+lib/X11/fonts/100dpi/lubB18.pcf.gz
+lib/X11/fonts/100dpi/lubB24.pcf.gz
+lib/X11/fonts/100dpi/lubBI08.pcf.gz
+lib/X11/fonts/100dpi/lubBI10.pcf.gz
+lib/X11/fonts/100dpi/lubBI12.pcf.gz
+lib/X11/fonts/100dpi/lubBI14.pcf.gz
+lib/X11/fonts/100dpi/lubBI18.pcf.gz
+lib/X11/fonts/100dpi/lubBI24.pcf.gz
+lib/X11/fonts/100dpi/lubI08.pcf.gz
+lib/X11/fonts/100dpi/lubI10.pcf.gz
+lib/X11/fonts/100dpi/lubI12.pcf.gz
+lib/X11/fonts/100dpi/lubI14.pcf.gz
+lib/X11/fonts/100dpi/lubI18.pcf.gz
+lib/X11/fonts/100dpi/lubI24.pcf.gz
+lib/X11/fonts/100dpi/lubR08.pcf.gz
+lib/X11/fonts/100dpi/lubR10.pcf.gz
+lib/X11/fonts/100dpi/lubR12.pcf.gz
+lib/X11/fonts/100dpi/lubR14.pcf.gz
+lib/X11/fonts/100dpi/lubR18.pcf.gz
+lib/X11/fonts/100dpi/lubR24.pcf.gz
+lib/X11/fonts/100dpi/lutBS08.pcf.gz
+lib/X11/fonts/100dpi/lutBS10.pcf.gz
+lib/X11/fonts/100dpi/fonts.alias
+lib/X11/fonts/100dpi/lutBS12.pcf.gz
+lib/X11/fonts/100dpi/lutBS14.pcf.gz
+lib/X11/fonts/100dpi/lutBS18.pcf.gz
+lib/X11/fonts/100dpi/lutBS24.pcf.gz
+lib/X11/fonts/100dpi/lutRS08.pcf.gz
+lib/X11/fonts/100dpi/lutRS10.pcf.gz
+lib/X11/fonts/100dpi/lutRS12.pcf.gz
+lib/X11/fonts/100dpi/lutRS14.pcf.gz
+lib/X11/fonts/100dpi/lutRS18.pcf.gz
+lib/X11/fonts/100dpi/lutRS24.pcf.gz
+lib/X11/fonts/100dpi/luBIS19.pcf.gz
+lib/X11/fonts/100dpi/luBS19.pcf.gz
+lib/X11/fonts/100dpi/luIS19.pcf.gz
+lib/X11/fonts/100dpi/luRS19.pcf.gz
+lib/X11/fonts/100dpi/lubB19.pcf.gz
+lib/X11/fonts/100dpi/lubBI19.pcf.gz
+lib/X11/fonts/100dpi/lubI19.pcf.gz
+lib/X11/fonts/100dpi/lubR19.pcf.gz
+lib/X11/fonts/100dpi/lutBS19.pcf.gz
+lib/X11/fonts/100dpi/lutRS19.pcf.gz
+lib/X11/fonts/100dpi/UTI___14.pcf.gz
+lib/X11/fonts/100dpi/UTI___12.pcf.gz
+lib/X11/fonts/100dpi/UTI___24.pcf.gz
+lib/X11/fonts/100dpi/UTI___10.pcf.gz
+lib/X11/fonts/100dpi/UTI___18.pcf.gz
+lib/X11/fonts/100dpi/UTRG__14.pcf.gz
+lib/X11/fonts/100dpi/UTRG__12.pcf.gz
+lib/X11/fonts/100dpi/UTRG__24.pcf.gz
+lib/X11/fonts/100dpi/UTRG__10.pcf.gz
+lib/X11/fonts/100dpi/UTRG__18.pcf.gz
diff --git a/release/scripts/X11/plists/i386/Xfcyr.tgz.plist b/release/scripts/X11/plists/i386/Xfcyr.tgz.plist
new file mode 100644
index 000000000000..d562c6b6eb9b
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xfcyr.tgz.plist
@@ -0,0 +1,71 @@
+lib/X11/fonts/cyrillic/
+lib/X11/fonts/cyrillic/crox1c.pcf.gz
+lib/X11/fonts/cyrillic/crox1cb.pcf.gz
+lib/X11/fonts/cyrillic/crox1cbo.pcf.gz
+lib/X11/fonts/cyrillic/crox1co.pcf.gz
+lib/X11/fonts/cyrillic/crox1h.pcf.gz
+lib/X11/fonts/cyrillic/crox1hb.pcf.gz
+lib/X11/fonts/cyrillic/crox1hbo.pcf.gz
+lib/X11/fonts/cyrillic/crox1ho.pcf.gz
+lib/X11/fonts/cyrillic/crox1t.pcf.gz
+lib/X11/fonts/cyrillic/crox1tb.pcf.gz
+lib/X11/fonts/cyrillic/crox1tbo.pcf.gz
+lib/X11/fonts/cyrillic/crox1to.pcf.gz
+lib/X11/fonts/cyrillic/crox2c.pcf.gz
+lib/X11/fonts/cyrillic/crox2cb.pcf.gz
+lib/X11/fonts/cyrillic/crox2cbo.pcf.gz
+lib/X11/fonts/cyrillic/crox2co.pcf.gz
+lib/X11/fonts/cyrillic/crox2h.pcf.gz
+lib/X11/fonts/cyrillic/crox2hb.pcf.gz
+lib/X11/fonts/cyrillic/crox2hbo.pcf.gz
+lib/X11/fonts/cyrillic/crox2ho.pcf.gz
+lib/X11/fonts/cyrillic/crox2t.pcf.gz
+lib/X11/fonts/cyrillic/crox2tb.pcf.gz
+lib/X11/fonts/cyrillic/crox2tbo.pcf.gz
+lib/X11/fonts/cyrillic/crox2to.pcf.gz
+lib/X11/fonts/cyrillic/crox3c.pcf.gz
+lib/X11/fonts/cyrillic/crox3cb.pcf.gz
+lib/X11/fonts/cyrillic/crox3cbo.pcf.gz
+lib/X11/fonts/cyrillic/crox3co.pcf.gz
+lib/X11/fonts/cyrillic/crox3h.pcf.gz
+lib/X11/fonts/cyrillic/crox3hb.pcf.gz
+lib/X11/fonts/cyrillic/crox3hbo.pcf.gz
+lib/X11/fonts/cyrillic/crox3ho.pcf.gz
+lib/X11/fonts/cyrillic/crox3t.pcf.gz
+lib/X11/fonts/cyrillic/crox3tb.pcf.gz
+lib/X11/fonts/cyrillic/crox3tbo.pcf.gz
+lib/X11/fonts/cyrillic/crox3to.pcf.gz
+lib/X11/fonts/cyrillic/crox4h.pcf.gz
+lib/X11/fonts/cyrillic/crox4hb.pcf.gz
+lib/X11/fonts/cyrillic/crox4hbo.pcf.gz
+lib/X11/fonts/cyrillic/crox4ho.pcf.gz
+lib/X11/fonts/cyrillic/crox4t.pcf.gz
+lib/X11/fonts/cyrillic/crox4tb.pcf.gz
+lib/X11/fonts/cyrillic/crox4tbo.pcf.gz
+lib/X11/fonts/cyrillic/crox4to.pcf.gz
+lib/X11/fonts/cyrillic/crox5h.pcf.gz
+lib/X11/fonts/cyrillic/crox5hb.pcf.gz
+lib/X11/fonts/cyrillic/crox5hbo.pcf.gz
+lib/X11/fonts/cyrillic/crox5ho.pcf.gz
+lib/X11/fonts/cyrillic/crox5t.pcf.gz
+lib/X11/fonts/cyrillic/crox5tb.pcf.gz
+lib/X11/fonts/cyrillic/crox5tbo.pcf.gz
+lib/X11/fonts/cyrillic/crox5to.pcf.gz
+lib/X11/fonts/cyrillic/crox6h.pcf.gz
+lib/X11/fonts/cyrillic/crox6hb.pcf.gz
+lib/X11/fonts/cyrillic/crox6hbo.pcf.gz
+lib/X11/fonts/cyrillic/crox6ho.pcf.gz
+lib/X11/fonts/cyrillic/crox6t.pcf.gz
+lib/X11/fonts/cyrillic/crox6tb.pcf.gz
+lib/X11/fonts/cyrillic/crox6tbo.pcf.gz
+lib/X11/fonts/cyrillic/crox6to.pcf.gz
+lib/X11/fonts/cyrillic/koi10x16b.pcf.gz
+lib/X11/fonts/cyrillic/koi10x20.pcf.gz
+lib/X11/fonts/cyrillic/koi12x24.pcf.gz
+lib/X11/fonts/cyrillic/koi6x10.pcf.gz
+lib/X11/fonts/cyrillic/koi6x13.pcf.gz
+lib/X11/fonts/cyrillic/koi8x13.pcf.gz
+lib/X11/fonts/cyrillic/koi9x15.pcf.gz
+lib/X11/fonts/cyrillic/koinil2.pcf.gz
+lib/X11/fonts/cyrillic/fonts.dir
+lib/X11/fonts/cyrillic/fonts.alias
diff --git a/release/scripts/X11/plists/i386/Xfnon.tgz.plist b/release/scripts/X11/plists/i386/Xfnon.tgz.plist
new file mode 100644
index 000000000000..7da919b6ea13
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xfnon.tgz.plist
@@ -0,0 +1,11 @@
+lib/X11/fonts/misc/gb16fs.pcf.gz
+lib/X11/fonts/misc/gb16st.pcf.gz
+lib/X11/fonts/misc/gb24st.pcf.gz
+lib/X11/fonts/misc/hanglg16.pcf.gz
+lib/X11/fonts/misc/hanglm16.pcf.gz
+lib/X11/fonts/misc/hanglm24.pcf.gz
+lib/X11/fonts/misc/heb6x13.pcf.gz
+lib/X11/fonts/misc/heb8x13.pcf.gz
+lib/X11/fonts/misc/jiskan16.pcf.gz
+lib/X11/fonts/misc/jiskan24.pcf.gz
+lib/X11/fonts/misc/k14.pcf.gz
diff --git a/release/scripts/X11/plists/i386/Xfnts.tgz.plist b/release/scripts/X11/plists/i386/Xfnts.tgz.plist
new file mode 100644
index 000000000000..905dcda0b2a5
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xfnts.tgz.plist
@@ -0,0 +1,270 @@
+lib/X11/fonts/75dpi/
+lib/X11/fonts/75dpi/courB08.pcf.gz
+lib/X11/fonts/75dpi/courB10.pcf.gz
+lib/X11/fonts/75dpi/courB12.pcf.gz
+lib/X11/fonts/75dpi/courB14.pcf.gz
+lib/X11/fonts/75dpi/courB18.pcf.gz
+lib/X11/fonts/75dpi/courB24.pcf.gz
+lib/X11/fonts/75dpi/courBO08.pcf.gz
+lib/X11/fonts/75dpi/courBO10.pcf.gz
+lib/X11/fonts/75dpi/courBO12.pcf.gz
+lib/X11/fonts/75dpi/courBO14.pcf.gz
+lib/X11/fonts/75dpi/courBO18.pcf.gz
+lib/X11/fonts/75dpi/courBO24.pcf.gz
+lib/X11/fonts/75dpi/courO08.pcf.gz
+lib/X11/fonts/75dpi/courO10.pcf.gz
+lib/X11/fonts/75dpi/courO12.pcf.gz
+lib/X11/fonts/75dpi/courO14.pcf.gz
+lib/X11/fonts/75dpi/courO18.pcf.gz
+lib/X11/fonts/75dpi/courO24.pcf.gz
+lib/X11/fonts/75dpi/courR08.pcf.gz
+lib/X11/fonts/75dpi/courR10.pcf.gz
+lib/X11/fonts/75dpi/courR12.pcf.gz
+lib/X11/fonts/75dpi/courR14.pcf.gz
+lib/X11/fonts/75dpi/courR18.pcf.gz
+lib/X11/fonts/75dpi/courR24.pcf.gz
+lib/X11/fonts/75dpi/helvB08.pcf.gz
+lib/X11/fonts/75dpi/helvB10.pcf.gz
+lib/X11/fonts/75dpi/helvB12.pcf.gz
+lib/X11/fonts/75dpi/helvB14.pcf.gz
+lib/X11/fonts/75dpi/helvB18.pcf.gz
+lib/X11/fonts/75dpi/helvB24.pcf.gz
+lib/X11/fonts/75dpi/helvBO08.pcf.gz
+lib/X11/fonts/75dpi/helvBO10.pcf.gz
+lib/X11/fonts/75dpi/helvBO12.pcf.gz
+lib/X11/fonts/75dpi/helvBO14.pcf.gz
+lib/X11/fonts/75dpi/helvBO18.pcf.gz
+lib/X11/fonts/75dpi/helvBO24.pcf.gz
+lib/X11/fonts/75dpi/helvO08.pcf.gz
+lib/X11/fonts/75dpi/helvO10.pcf.gz
+lib/X11/fonts/75dpi/helvO12.pcf.gz
+lib/X11/fonts/75dpi/helvO14.pcf.gz
+lib/X11/fonts/75dpi/helvO18.pcf.gz
+lib/X11/fonts/75dpi/helvO24.pcf.gz
+lib/X11/fonts/75dpi/helvR08.pcf.gz
+lib/X11/fonts/75dpi/helvR10.pcf.gz
+lib/X11/fonts/75dpi/helvR12.pcf.gz
+lib/X11/fonts/75dpi/helvR14.pcf.gz
+lib/X11/fonts/75dpi/helvR18.pcf.gz
+lib/X11/fonts/75dpi/helvR24.pcf.gz
+lib/X11/fonts/75dpi/ncenB08.pcf.gz
+lib/X11/fonts/75dpi/ncenB10.pcf.gz
+lib/X11/fonts/75dpi/ncenB12.pcf.gz
+lib/X11/fonts/75dpi/ncenB14.pcf.gz
+lib/X11/fonts/75dpi/ncenB18.pcf.gz
+lib/X11/fonts/75dpi/ncenB24.pcf.gz
+lib/X11/fonts/75dpi/ncenBI08.pcf.gz
+lib/X11/fonts/75dpi/ncenBI10.pcf.gz
+lib/X11/fonts/75dpi/ncenBI12.pcf.gz
+lib/X11/fonts/75dpi/ncenBI14.pcf.gz
+lib/X11/fonts/75dpi/ncenBI18.pcf.gz
+lib/X11/fonts/75dpi/ncenBI24.pcf.gz
+lib/X11/fonts/75dpi/ncenI08.pcf.gz
+lib/X11/fonts/75dpi/ncenI10.pcf.gz
+lib/X11/fonts/75dpi/ncenI12.pcf.gz
+lib/X11/fonts/75dpi/ncenI14.pcf.gz
+lib/X11/fonts/75dpi/ncenI18.pcf.gz
+lib/X11/fonts/75dpi/ncenI24.pcf.gz
+lib/X11/fonts/75dpi/ncenR08.pcf.gz
+lib/X11/fonts/75dpi/ncenR10.pcf.gz
+lib/X11/fonts/75dpi/ncenR12.pcf.gz
+lib/X11/fonts/75dpi/ncenR14.pcf.gz
+lib/X11/fonts/75dpi/ncenR18.pcf.gz
+lib/X11/fonts/75dpi/ncenR24.pcf.gz
+lib/X11/fonts/75dpi/symb08.pcf.gz
+lib/X11/fonts/75dpi/symb10.pcf.gz
+lib/X11/fonts/75dpi/symb12.pcf.gz
+lib/X11/fonts/75dpi/symb14.pcf.gz
+lib/X11/fonts/75dpi/symb18.pcf.gz
+lib/X11/fonts/75dpi/symb24.pcf.gz
+lib/X11/fonts/75dpi/timB08.pcf.gz
+lib/X11/fonts/75dpi/timB10.pcf.gz
+lib/X11/fonts/75dpi/timB12.pcf.gz
+lib/X11/fonts/75dpi/timB14.pcf.gz
+lib/X11/fonts/75dpi/timB18.pcf.gz
+lib/X11/fonts/75dpi/timB24.pcf.gz
+lib/X11/fonts/75dpi/timBI08.pcf.gz
+lib/X11/fonts/75dpi/timBI10.pcf.gz
+lib/X11/fonts/75dpi/timBI12.pcf.gz
+lib/X11/fonts/75dpi/timBI14.pcf.gz
+lib/X11/fonts/75dpi/timBI18.pcf.gz
+lib/X11/fonts/75dpi/timBI24.pcf.gz
+lib/X11/fonts/75dpi/timI08.pcf.gz
+lib/X11/fonts/75dpi/timI10.pcf.gz
+lib/X11/fonts/75dpi/timI12.pcf.gz
+lib/X11/fonts/75dpi/timI14.pcf.gz
+lib/X11/fonts/75dpi/timI18.pcf.gz
+lib/X11/fonts/75dpi/timI24.pcf.gz
+lib/X11/fonts/75dpi/timR08.pcf.gz
+lib/X11/fonts/75dpi/timR10.pcf.gz
+lib/X11/fonts/75dpi/timR12.pcf.gz
+lib/X11/fonts/75dpi/timR14.pcf.gz
+lib/X11/fonts/75dpi/timR18.pcf.gz
+lib/X11/fonts/75dpi/timR24.pcf.gz
+lib/X11/fonts/75dpi/fonts.dir
+lib/X11/fonts/75dpi/charI08.pcf.gz
+lib/X11/fonts/75dpi/charI10.pcf.gz
+lib/X11/fonts/75dpi/charI12.pcf.gz
+lib/X11/fonts/75dpi/charI14.pcf.gz
+lib/X11/fonts/75dpi/charI18.pcf.gz
+lib/X11/fonts/75dpi/charI24.pcf.gz
+lib/X11/fonts/75dpi/charR08.pcf.gz
+lib/X11/fonts/75dpi/charR10.pcf.gz
+lib/X11/fonts/75dpi/charR12.pcf.gz
+lib/X11/fonts/75dpi/charR14.pcf.gz
+lib/X11/fonts/75dpi/charR18.pcf.gz
+lib/X11/fonts/75dpi/charR24.pcf.gz
+lib/X11/fonts/75dpi/tech14.pcf.gz
+lib/X11/fonts/75dpi/techB14.pcf.gz
+lib/X11/fonts/75dpi/term14.pcf.gz
+lib/X11/fonts/75dpi/termB14.pcf.gz
+lib/X11/fonts/75dpi/luBIS08.pcf.gz
+lib/X11/fonts/75dpi/luBIS10.pcf.gz
+lib/X11/fonts/75dpi/luBIS12.pcf.gz
+lib/X11/fonts/75dpi/luBIS14.pcf.gz
+lib/X11/fonts/75dpi/luBIS18.pcf.gz
+lib/X11/fonts/75dpi/luBIS24.pcf.gz
+lib/X11/fonts/75dpi/luBS08.pcf.gz
+lib/X11/fonts/75dpi/luBS10.pcf.gz
+lib/X11/fonts/75dpi/luBS12.pcf.gz
+lib/X11/fonts/75dpi/luBS14.pcf.gz
+lib/X11/fonts/75dpi/luBS18.pcf.gz
+lib/X11/fonts/75dpi/luBS24.pcf.gz
+lib/X11/fonts/75dpi/luIS08.pcf.gz
+lib/X11/fonts/75dpi/luIS10.pcf.gz
+lib/X11/fonts/75dpi/luIS12.pcf.gz
+lib/X11/fonts/75dpi/luIS14.pcf.gz
+lib/X11/fonts/75dpi/luIS18.pcf.gz
+lib/X11/fonts/75dpi/luIS24.pcf.gz
+lib/X11/fonts/75dpi/luRS08.pcf.gz
+lib/X11/fonts/75dpi/luRS10.pcf.gz
+lib/X11/fonts/75dpi/luRS12.pcf.gz
+lib/X11/fonts/75dpi/luRS14.pcf.gz
+lib/X11/fonts/75dpi/luRS18.pcf.gz
+lib/X11/fonts/75dpi/luRS24.pcf.gz
+lib/X11/fonts/75dpi/lubB08.pcf.gz
+lib/X11/fonts/75dpi/lubB10.pcf.gz
+lib/X11/fonts/75dpi/lubB12.pcf.gz
+lib/X11/fonts/75dpi/lubB14.pcf.gz
+lib/X11/fonts/75dpi/lubB18.pcf.gz
+lib/X11/fonts/75dpi/lubB24.pcf.gz
+lib/X11/fonts/75dpi/lubBI08.pcf.gz
+lib/X11/fonts/75dpi/lubBI10.pcf.gz
+lib/X11/fonts/75dpi/lubBI12.pcf.gz
+lib/X11/fonts/75dpi/lubBI14.pcf.gz
+lib/X11/fonts/75dpi/lubBI18.pcf.gz
+lib/X11/fonts/75dpi/lubBI24.pcf.gz
+lib/X11/fonts/75dpi/lubI08.pcf.gz
+lib/X11/fonts/75dpi/lubI10.pcf.gz
+lib/X11/fonts/75dpi/lubI12.pcf.gz
+lib/X11/fonts/75dpi/lubI14.pcf.gz
+lib/X11/fonts/75dpi/lubI18.pcf.gz
+lib/X11/fonts/75dpi/lubI24.pcf.gz
+lib/X11/fonts/75dpi/lubR08.pcf.gz
+lib/X11/fonts/75dpi/lubR10.pcf.gz
+lib/X11/fonts/75dpi/lubR12.pcf.gz
+lib/X11/fonts/75dpi/lubR14.pcf.gz
+lib/X11/fonts/75dpi/lubR18.pcf.gz
+lib/X11/fonts/75dpi/lubR24.pcf.gz
+lib/X11/fonts/75dpi/lutBS08.pcf.gz
+lib/X11/fonts/75dpi/lutBS10.pcf.gz
+lib/X11/fonts/75dpi/fonts.alias
+lib/X11/fonts/75dpi/lutBS12.pcf.gz
+lib/X11/fonts/75dpi/lutBS14.pcf.gz
+lib/X11/fonts/75dpi/lutBS18.pcf.gz
+lib/X11/fonts/75dpi/lutBS24.pcf.gz
+lib/X11/fonts/75dpi/lutRS08.pcf.gz
+lib/X11/fonts/75dpi/lutRS10.pcf.gz
+lib/X11/fonts/75dpi/lutRS12.pcf.gz
+lib/X11/fonts/75dpi/lutRS14.pcf.gz
+lib/X11/fonts/75dpi/lutRS18.pcf.gz
+lib/X11/fonts/75dpi/lutRS24.pcf.gz
+lib/X11/fonts/75dpi/luBIS19.pcf.gz
+lib/X11/fonts/75dpi/luBS19.pcf.gz
+lib/X11/fonts/75dpi/luIS19.pcf.gz
+lib/X11/fonts/75dpi/luRS19.pcf.gz
+lib/X11/fonts/75dpi/lubB19.pcf.gz
+lib/X11/fonts/75dpi/lubBI19.pcf.gz
+lib/X11/fonts/75dpi/lubI19.pcf.gz
+lib/X11/fonts/75dpi/lubR19.pcf.gz
+lib/X11/fonts/75dpi/lutBS19.pcf.gz
+lib/X11/fonts/75dpi/lutRS19.pcf.gz
+lib/X11/fonts/75dpi/UTI___14.pcf.gz
+lib/X11/fonts/75dpi/UTI___12.pcf.gz
+lib/X11/fonts/75dpi/UTI___24.pcf.gz
+lib/X11/fonts/75dpi/UTI___10.pcf.gz
+lib/X11/fonts/75dpi/UTI___18.pcf.gz
+lib/X11/fonts/75dpi/UTRG__14.pcf.gz
+lib/X11/fonts/75dpi/UTRG__12.pcf.gz
+lib/X11/fonts/75dpi/UTRG__24.pcf.gz
+lib/X11/fonts/75dpi/UTRG__10.pcf.gz
+lib/X11/fonts/75dpi/UTRG__18.pcf.gz
+lib/X11/fonts/misc/
+lib/X11/fonts/misc/5x7.pcf.gz
+lib/X11/fonts/misc/5x8.pcf.gz
+lib/X11/fonts/misc/6x9.pcf.gz
+lib/X11/fonts/misc/6x10.pcf.gz
+lib/X11/fonts/misc/6x12.pcf.gz
+lib/X11/fonts/misc/6x13.pcf.gz
+lib/X11/fonts/misc/6x13B.pcf.gz
+lib/X11/fonts/misc/7x13.pcf.gz
+lib/X11/fonts/misc/7x13B.pcf.gz
+lib/X11/fonts/misc/7x13euro.pcf.gz
+lib/X11/fonts/misc/7x13euroB.pcf.gz
+lib/X11/fonts/misc/8x13.pcf.gz
+lib/X11/fonts/misc/8x13B.pcf.gz
+lib/X11/fonts/misc/9x15.pcf.gz
+lib/X11/fonts/misc/9x15B.pcf.gz
+lib/X11/fonts/misc/10x20.pcf.gz
+lib/X11/fonts/misc/cursor.pcf.gz
+lib/X11/fonts/misc/deccurs.pcf.gz
+lib/X11/fonts/misc/decsess.pcf.gz
+lib/X11/fonts/misc/olcursor.pcf.gz
+lib/X11/fonts/misc/olgl10.pcf.gz
+lib/X11/fonts/misc/olgl12.pcf.gz
+lib/X11/fonts/misc/olgl14.pcf.gz
+lib/X11/fonts/misc/olgl19.pcf.gz
+lib/X11/fonts/misc/nil2.pcf.gz
+lib/X11/fonts/misc/clB6x10.pcf.gz
+lib/X11/fonts/misc/clB6x12.pcf.gz
+lib/X11/fonts/misc/clB8x10.pcf.gz
+lib/X11/fonts/misc/clB8x12.pcf.gz
+lib/X11/fonts/misc/clB8x13.pcf.gz
+lib/X11/fonts/misc/clB8x14.pcf.gz
+lib/X11/fonts/misc/clB8x16.pcf.gz
+lib/X11/fonts/misc/clB8x8.pcf.gz
+lib/X11/fonts/misc/clB9x15.pcf.gz
+lib/X11/fonts/misc/clI6x12.pcf.gz
+lib/X11/fonts/misc/clI8x8.pcf.gz
+lib/X11/fonts/misc/clR4x6.pcf.gz
+lib/X11/fonts/misc/clR5x10.pcf.gz
+lib/X11/fonts/misc/clR5x6.pcf.gz
+lib/X11/fonts/misc/clR5x8.pcf.gz
+lib/X11/fonts/misc/clR6x10.pcf.gz
+lib/X11/fonts/misc/clR6x12.pcf.gz
+lib/X11/fonts/misc/clR6x13.pcf.gz
+lib/X11/fonts/misc/clR6x6.pcf.gz
+lib/X11/fonts/misc/clR6x8.pcf.gz
+lib/X11/fonts/misc/clR7x10.pcf.gz
+lib/X11/fonts/misc/clR7x12.pcf.gz
+lib/X11/fonts/misc/clR7x14.pcf.gz
+lib/X11/fonts/misc/clR7x8.pcf.gz
+lib/X11/fonts/misc/clR8x10.pcf.gz
+lib/X11/fonts/misc/clR8x12.pcf.gz
+lib/X11/fonts/misc/clR8x13.pcf.gz
+lib/X11/fonts/misc/clR8x14.pcf.gz
+lib/X11/fonts/misc/clR8x16.pcf.gz
+lib/X11/fonts/misc/clR8x8.pcf.gz
+lib/X11/fonts/misc/clR9x15.pcf.gz
+lib/X11/fonts/misc/7x14.pcf.gz
+lib/X11/fonts/misc/7x14B.pcf.gz
+lib/X11/fonts/misc/7x14rk.pcf.gz
+lib/X11/fonts/misc/12x24.pcf.gz
+lib/X11/fonts/misc/12x24rk.pcf.gz
+lib/X11/fonts/misc/8x16.pcf.gz
+lib/X11/fonts/misc/8x16rk.pcf.gz
+lib/X11/fonts/misc/fonts.dir
+lib/X11/fonts/misc/fonts.alias
+lib/X11/fonts/PEX/
+lib/X11/fonts/PEX/Roman.phont
+lib/X11/fonts/PEX/Roman_M.phont
diff --git a/release/scripts/X11/plists/i386/Xfscl.tgz.plist b/release/scripts/X11/plists/i386/Xfscl.tgz.plist
new file mode 100644
index 000000000000..7e3d4c87a592
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xfscl.tgz.plist
@@ -0,0 +1,30 @@
+lib/X11/fonts/Speedo/
+lib/X11/fonts/Speedo/font0648.spd
+lib/X11/fonts/Speedo/font0649.spd
+lib/X11/fonts/Speedo/font0709.spd
+lib/X11/fonts/Speedo/font0710.spd
+lib/X11/fonts/Speedo/font0419.spd
+lib/X11/fonts/Speedo/font0582.spd
+lib/X11/fonts/Speedo/font0583.spd
+lib/X11/fonts/Speedo/font0611.spd
+lib/X11/fonts/Speedo/fonts.dir
+lib/X11/fonts/Speedo/fonts.scale
+lib/X11/fonts/Type1/
+lib/X11/fonts/Type1/UTRG____.pfa
+lib/X11/fonts/Type1/UTB_____.pfa
+lib/X11/fonts/Type1/UTBI____.pfa
+lib/X11/fonts/Type1/UTI_____.pfa
+lib/X11/fonts/Type1/cour.pfa
+lib/X11/fonts/Type1/courb.pfa
+lib/X11/fonts/Type1/courbi.pfa
+lib/X11/fonts/Type1/couri.pfa
+lib/X11/fonts/Type1/c0648bt_.pfb
+lib/X11/fonts/Type1/c0649bt_.pfb
+lib/X11/fonts/Type1/c0632bt_.pfb
+lib/X11/fonts/Type1/c0633bt_.pfb
+lib/X11/fonts/Type1/c0419bt_.pfb
+lib/X11/fonts/Type1/c0582bt_.pfb
+lib/X11/fonts/Type1/c0583bt_.pfb
+lib/X11/fonts/Type1/c0611bt_.pfb
+lib/X11/fonts/Type1/fonts.dir
+lib/X11/fonts/Type1/fonts.scale
diff --git a/release/scripts/X11/plists/i386/Xfsrv.tgz.plist b/release/scripts/X11/plists/i386/Xfsrv.tgz.plist
new file mode 100644
index 000000000000..6891c27ab9eb
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xfsrv.tgz.plist
@@ -0,0 +1,4 @@
+bin/xfs
+lib/X11/fs/
+lib/X11/fs/config
+man/man1/xfs.1.gz
diff --git a/release/scripts/X11/plists/i386/Xhtml.tgz.plist b/release/scripts/X11/plists/i386/Xhtml.tgz.plist
new file mode 100644
index 000000000000..8fa64baf3557
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xhtml.tgz.plist
@@ -0,0 +1,672 @@
+lib/X11/doc/html/
+lib/X11/doc/html/FreeBSD.html
+lib/X11/doc/html/FreeBSD1.html
+lib/X11/doc/html/FreeBSD2.html
+lib/X11/doc/html/FreeBSD3.html
+lib/X11/doc/html/FreeBSD4.html
+lib/X11/doc/html/FreeBSD5.html
+lib/X11/doc/html/FreeBSD6.html
+lib/X11/doc/html/FreeBSD7.html
+lib/X11/doc/html/FreeBSD8.html
+lib/X11/doc/html/FreeBSD_toc.html
+lib/X11/doc/html/NetBSD.html
+lib/X11/doc/html/NetBSD1.html
+lib/X11/doc/html/NetBSD10.html
+lib/X11/doc/html/NetBSD11.html
+lib/X11/doc/html/NetBSD12.html
+lib/X11/doc/html/NetBSD13.html
+lib/X11/doc/html/NetBSD14.html
+lib/X11/doc/html/NetBSD15.html
+lib/X11/doc/html/NetBSD16.html
+lib/X11/doc/html/NetBSD17.html
+lib/X11/doc/html/NetBSD18.html
+lib/X11/doc/html/NetBSD19.html
+lib/X11/doc/html/NetBSD2.html
+lib/X11/doc/html/NetBSD20.html
+lib/X11/doc/html/NetBSD21.html
+lib/X11/doc/html/NetBSD22.html
+lib/X11/doc/html/NetBSD3.html
+lib/X11/doc/html/NetBSD4.html
+lib/X11/doc/html/NetBSD5.html
+lib/X11/doc/html/NetBSD6.html
+lib/X11/doc/html/NetBSD7.html
+lib/X11/doc/html/NetBSD8.html
+lib/X11/doc/html/NetBSD9.html
+lib/X11/doc/html/NetBSD_toc.html
+lib/X11/doc/html/OpenBSD.html
+lib/X11/doc/html/OpenBSD1.html
+lib/X11/doc/html/OpenBSD10.html
+lib/X11/doc/html/OpenBSD11.html
+lib/X11/doc/html/OpenBSD12.html
+lib/X11/doc/html/OpenBSD13.html
+lib/X11/doc/html/OpenBSD14.html
+lib/X11/doc/html/OpenBSD15.html
+lib/X11/doc/html/OpenBSD16.html
+lib/X11/doc/html/OpenBSD17.html
+lib/X11/doc/html/OpenBSD18.html
+lib/X11/doc/html/OpenBSD19.html
+lib/X11/doc/html/OpenBSD2.html
+lib/X11/doc/html/OpenBSD20.html
+lib/X11/doc/html/OpenBSD3.html
+lib/X11/doc/html/OpenBSD4.html
+lib/X11/doc/html/OpenBSD5.html
+lib/X11/doc/html/OpenBSD6.html
+lib/X11/doc/html/OpenBSD7.html
+lib/X11/doc/html/OpenBSD8.html
+lib/X11/doc/html/OpenBSD9.html
+lib/X11/doc/html/OpenBSD_toc.html
+lib/X11/doc/html/Linux.html
+lib/X11/doc/html/Linux1.html
+lib/X11/doc/html/Linux2.html
+lib/X11/doc/html/Linux3.html
+lib/X11/doc/html/Linux4.html
+lib/X11/doc/html/Linux5.html
+lib/X11/doc/html/Linux_toc.html
+lib/X11/doc/html/fbdev.html
+lib/X11/doc/html/fbdev1.html
+lib/X11/doc/html/fbdev10.html
+lib/X11/doc/html/fbdev2.html
+lib/X11/doc/html/fbdev3.html
+lib/X11/doc/html/fbdev4.html
+lib/X11/doc/html/fbdev5.html
+lib/X11/doc/html/fbdev6.html
+lib/X11/doc/html/fbdev7.html
+lib/X11/doc/html/fbdev8.html
+lib/X11/doc/html/fbdev9.html
+lib/X11/doc/html/fbdev_toc.html
+lib/X11/doc/html/DGux.html
+lib/X11/doc/html/DGux1.html
+lib/X11/doc/html/DGux2.html
+lib/X11/doc/html/DGux3.html
+lib/X11/doc/html/DGux4.html
+lib/X11/doc/html/DGux5.html
+lib/X11/doc/html/DGux6.html
+lib/X11/doc/html/DGux7.html
+lib/X11/doc/html/DGux_toc.html
+lib/X11/doc/html/LynxOS.html
+lib/X11/doc/html/LynxOS1.html
+lib/X11/doc/html/LynxOS10.html
+lib/X11/doc/html/LynxOS11.html
+lib/X11/doc/html/LynxOS12.html
+lib/X11/doc/html/LynxOS13.html
+lib/X11/doc/html/LynxOS14.html
+lib/X11/doc/html/LynxOS15.html
+lib/X11/doc/html/LynxOS16.html
+lib/X11/doc/html/LynxOS17.html
+lib/X11/doc/html/LynxOS18.html
+lib/X11/doc/html/LynxOS19.html
+lib/X11/doc/html/LynxOS2.html
+lib/X11/doc/html/LynxOS20.html
+lib/X11/doc/html/LynxOS21.html
+lib/X11/doc/html/LynxOS22.html
+lib/X11/doc/html/LynxOS23.html
+lib/X11/doc/html/LynxOS24.html
+lib/X11/doc/html/LynxOS25.html
+lib/X11/doc/html/LynxOS26.html
+lib/X11/doc/html/LynxOS3.html
+lib/X11/doc/html/LynxOS4.html
+lib/X11/doc/html/LynxOS5.html
+lib/X11/doc/html/LynxOS6.html
+lib/X11/doc/html/LynxOS7.html
+lib/X11/doc/html/LynxOS8.html
+lib/X11/doc/html/LynxOS9.html
+lib/X11/doc/html/LynxOS_toc.html
+lib/X11/doc/html/SCO.html
+lib/X11/doc/html/SCO1.html
+lib/X11/doc/html/SCO10.html
+lib/X11/doc/html/SCO11.html
+lib/X11/doc/html/SCO2.html
+lib/X11/doc/html/SCO3.html
+lib/X11/doc/html/SCO4.html
+lib/X11/doc/html/SCO5.html
+lib/X11/doc/html/SCO6.html
+lib/X11/doc/html/SCO7.html
+lib/X11/doc/html/SCO8.html
+lib/X11/doc/html/SCO9.html
+lib/X11/doc/html/SCO_toc.html
+lib/X11/doc/html/isc.html
+lib/X11/doc/html/isc1.html
+lib/X11/doc/html/isc10.html
+lib/X11/doc/html/isc11.html
+lib/X11/doc/html/isc12.html
+lib/X11/doc/html/isc13.html
+lib/X11/doc/html/isc14.html
+lib/X11/doc/html/isc15.html
+lib/X11/doc/html/isc16.html
+lib/X11/doc/html/isc17.html
+lib/X11/doc/html/isc2.html
+lib/X11/doc/html/isc3.html
+lib/X11/doc/html/isc4.html
+lib/X11/doc/html/isc5.html
+lib/X11/doc/html/isc6.html
+lib/X11/doc/html/isc7.html
+lib/X11/doc/html/isc8.html
+lib/X11/doc/html/isc9.html
+lib/X11/doc/html/isc_toc.html
+lib/X11/doc/html/OS2.html
+lib/X11/doc/html/OS21.html
+lib/X11/doc/html/OS210.html
+lib/X11/doc/html/OS211.html
+lib/X11/doc/html/OS212.html
+lib/X11/doc/html/OS213.html
+lib/X11/doc/html/OS214.html
+lib/X11/doc/html/OS22.html
+lib/X11/doc/html/OS23.html
+lib/X11/doc/html/OS24.html
+lib/X11/doc/html/OS25.html
+lib/X11/doc/html/OS26.html
+lib/X11/doc/html/OS27.html
+lib/X11/doc/html/OS28.html
+lib/X11/doc/html/OS29.html
+lib/X11/doc/html/OS2Notes.html
+lib/X11/doc/html/OS2Notes1.html
+lib/X11/doc/html/OS2Notes2.html
+lib/X11/doc/html/OS2Notes3.html
+lib/X11/doc/html/OS2Notes_toc.html
+lib/X11/doc/html/OS2_toc.html
+lib/X11/doc/html/SOLX86.html
+lib/X11/doc/html/SOLX861.html
+lib/X11/doc/html/SOLX862.html
+lib/X11/doc/html/SOLX863.html
+lib/X11/doc/html/SOLX864.html
+lib/X11/doc/html/SOLX865.html
+lib/X11/doc/html/SOLX866.html
+lib/X11/doc/html/SOLX867.html
+lib/X11/doc/html/SOLX86_toc.html
+lib/X11/doc/html/SVR4.html
+lib/X11/doc/html/SVR41.html
+lib/X11/doc/html/SVR410.html
+lib/X11/doc/html/SVR411.html
+lib/X11/doc/html/SVR42.html
+lib/X11/doc/html/SVR43.html
+lib/X11/doc/html/SVR44.html
+lib/X11/doc/html/SVR45.html
+lib/X11/doc/html/SVR46.html
+lib/X11/doc/html/SVR47.html
+lib/X11/doc/html/SVR48.html
+lib/X11/doc/html/SVR49.html
+lib/X11/doc/html/SVR4_toc.html
+lib/X11/doc/html/DECtga.html
+lib/X11/doc/html/DECtga1.html
+lib/X11/doc/html/DECtga2.html
+lib/X11/doc/html/DECtga_toc.html
+lib/X11/doc/html/I128.html
+lib/X11/doc/html/I1281.html
+lib/X11/doc/html/I1282.html
+lib/X11/doc/html/I1283.html
+lib/X11/doc/html/I1284.html
+lib/X11/doc/html/I1285.html
+lib/X11/doc/html/I128_toc.html
+lib/X11/doc/html/Mach32.html
+lib/X11/doc/html/Mach321.html
+lib/X11/doc/html/Mach322.html
+lib/X11/doc/html/Mach323.html
+lib/X11/doc/html/Mach32_toc.html
+lib/X11/doc/html/Mach64.html
+lib/X11/doc/html/Mach641.html
+lib/X11/doc/html/Mach642.html
+lib/X11/doc/html/Mach643.html
+lib/X11/doc/html/Mach644.html
+lib/X11/doc/html/Mach645.html
+lib/X11/doc/html/Mach646.html
+lib/X11/doc/html/Mach64_toc.html
+lib/X11/doc/html/MGA.html
+lib/X11/doc/html/MGA1.html
+lib/X11/doc/html/MGA2.html
+lib/X11/doc/html/MGA3.html
+lib/X11/doc/html/MGA4.html
+lib/X11/doc/html/MGA5.html
+lib/X11/doc/html/MGA6.html
+lib/X11/doc/html/MGA_toc.html
+lib/X11/doc/html/NVIDIA.html
+lib/X11/doc/html/NVIDIA1.html
+lib/X11/doc/html/NVIDIA2.html
+lib/X11/doc/html/NVIDIA3.html
+lib/X11/doc/html/NVIDIA_toc.html
+lib/X11/doc/html/Oak.html
+lib/X11/doc/html/Oak1.html
+lib/X11/doc/html/Oak2.html
+lib/X11/doc/html/Oak3.html
+lib/X11/doc/html/Oak4.html
+lib/X11/doc/html/Oak_toc.html
+lib/X11/doc/html/P9000.html
+lib/X11/doc/html/P90001.html
+lib/X11/doc/html/P900010.html
+lib/X11/doc/html/P900011.html
+lib/X11/doc/html/P900012.html
+lib/X11/doc/html/P900013.html
+lib/X11/doc/html/P900014.html
+lib/X11/doc/html/P900015.html
+lib/X11/doc/html/P90002.html
+lib/X11/doc/html/P90003.html
+lib/X11/doc/html/P90004.html
+lib/X11/doc/html/P90005.html
+lib/X11/doc/html/P90006.html
+lib/X11/doc/html/P90007.html
+lib/X11/doc/html/P90008.html
+lib/X11/doc/html/P90009.html
+lib/X11/doc/html/P9000_toc.html
+lib/X11/doc/html/Video7.html
+lib/X11/doc/html/Video71.html
+lib/X11/doc/html/Video710.html
+lib/X11/doc/html/Video72.html
+lib/X11/doc/html/Video73.html
+lib/X11/doc/html/Video74.html
+lib/X11/doc/html/Video75.html
+lib/X11/doc/html/Video76.html
+lib/X11/doc/html/Video77.html
+lib/X11/doc/html/Video78.html
+lib/X11/doc/html/Video79.html
+lib/X11/doc/html/Video7_toc.html
+lib/X11/doc/html/S3.html
+lib/X11/doc/html/S31.html
+lib/X11/doc/html/S32.html
+lib/X11/doc/html/S33.html
+lib/X11/doc/html/S34.html
+lib/X11/doc/html/S35.html
+lib/X11/doc/html/S36.html
+lib/X11/doc/html/S37.html
+lib/X11/doc/html/S38.html
+lib/X11/doc/html/S39.html
+lib/X11/doc/html/S3V.html
+lib/X11/doc/html/S3V1.html
+lib/X11/doc/html/S3V10.html
+lib/X11/doc/html/S3V11.html
+lib/X11/doc/html/S3V12.html
+lib/X11/doc/html/S3V13.html
+lib/X11/doc/html/S3V14.html
+lib/X11/doc/html/S3V15.html
+lib/X11/doc/html/S3V2.html
+lib/X11/doc/html/S3V3.html
+lib/X11/doc/html/S3V4.html
+lib/X11/doc/html/S3V5.html
+lib/X11/doc/html/S3V6.html
+lib/X11/doc/html/S3V7.html
+lib/X11/doc/html/S3V8.html
+lib/X11/doc/html/S3V9.html
+lib/X11/doc/html/S3V_toc.html
+lib/X11/doc/html/S3_toc.html
+lib/X11/doc/html/SiS.html
+lib/X11/doc/html/SiS1.html
+lib/X11/doc/html/SiS2.html
+lib/X11/doc/html/SiS3.html
+lib/X11/doc/html/SiS4.html
+lib/X11/doc/html/SiS5.html
+lib/X11/doc/html/SiS_toc.html
+lib/X11/doc/html/W32.html
+lib/X11/doc/html/W321.html
+lib/X11/doc/html/W322.html
+lib/X11/doc/html/W323.html
+lib/X11/doc/html/W324.html
+lib/X11/doc/html/W325.html
+lib/X11/doc/html/W326.html
+lib/X11/doc/html/W32_toc.html
+lib/X11/doc/html/WstDig.html
+lib/X11/doc/html/WstDig1.html
+lib/X11/doc/html/WstDig2.html
+lib/X11/doc/html/WstDig3.html
+lib/X11/doc/html/WstDig4.html
+lib/X11/doc/html/WstDig5.html
+lib/X11/doc/html/WstDig_toc.html
+lib/X11/doc/html/apm.html
+lib/X11/doc/html/apm1.html
+lib/X11/doc/html/apm2.html
+lib/X11/doc/html/apm3.html
+lib/X11/doc/html/apm_toc.html
+lib/X11/doc/html/ark.html
+lib/X11/doc/html/ark1.html
+lib/X11/doc/html/ark2.html
+lib/X11/doc/html/ark3.html
+lib/X11/doc/html/ark4.html
+lib/X11/doc/html/ark5.html
+lib/X11/doc/html/ark6.html
+lib/X11/doc/html/ark_toc.html
+lib/X11/doc/html/agx.html
+lib/X11/doc/html/agx1.html
+lib/X11/doc/html/agx2.html
+lib/X11/doc/html/agx3.html
+lib/X11/doc/html/agx4.html
+lib/X11/doc/html/agx5.html
+lib/X11/doc/html/agx6.html
+lib/X11/doc/html/agx_toc.html
+lib/X11/doc/html/ati.html
+lib/X11/doc/html/ati1.html
+lib/X11/doc/html/ati10.html
+lib/X11/doc/html/ati11.html
+lib/X11/doc/html/ati12.html
+lib/X11/doc/html/ati13.html
+lib/X11/doc/html/ati14.html
+lib/X11/doc/html/ati15.html
+lib/X11/doc/html/ati16.html
+lib/X11/doc/html/ati17.html
+lib/X11/doc/html/ati18.html
+lib/X11/doc/html/ati2.html
+lib/X11/doc/html/ati3.html
+lib/X11/doc/html/ati4.html
+lib/X11/doc/html/ati5.html
+lib/X11/doc/html/ati6.html
+lib/X11/doc/html/ati7.html
+lib/X11/doc/html/ati8.html
+lib/X11/doc/html/ati9.html
+lib/X11/doc/html/ati_toc.html
+lib/X11/doc/html/chips.html
+lib/X11/doc/html/chips1.html
+lib/X11/doc/html/chips2.html
+lib/X11/doc/html/chips3.html
+lib/X11/doc/html/chips4.html
+lib/X11/doc/html/chips5.html
+lib/X11/doc/html/chips6.html
+lib/X11/doc/html/chips7.html
+lib/X11/doc/html/chips8.html
+lib/X11/doc/html/chips9.html
+lib/X11/doc/html/chips_toc.html
+lib/X11/doc/html/cirrus.html
+lib/X11/doc/html/cirrus1.html
+lib/X11/doc/html/cirrus2.html
+lib/X11/doc/html/cirrus3.html
+lib/X11/doc/html/cirrus4.html
+lib/X11/doc/html/cirrus5.html
+lib/X11/doc/html/cirrus6.html
+lib/X11/doc/html/cirrus7.html
+lib/X11/doc/html/cirrus8.html
+lib/X11/doc/html/cirrus9.html
+lib/X11/doc/html/cirrus_toc.html
+lib/X11/doc/html/cyrix.html
+lib/X11/doc/html/cyrix1.html
+lib/X11/doc/html/cyrix2.html
+lib/X11/doc/html/cyrix3.html
+lib/X11/doc/html/cyrix4.html
+lib/X11/doc/html/cyrix5.html
+lib/X11/doc/html/cyrix_toc.html
+lib/X11/doc/html/epson.html
+lib/X11/doc/html/epson1.html
+lib/X11/doc/html/epson2.html
+lib/X11/doc/html/epson3.html
+lib/X11/doc/html/epson4.html
+lib/X11/doc/html/epson5.html
+lib/X11/doc/html/epson6.html
+lib/X11/doc/html/epson_toc.html
+lib/X11/doc/html/mouse.html
+lib/X11/doc/html/mouse1.html
+lib/X11/doc/html/mouse10.html
+lib/X11/doc/html/mouse11.html
+lib/X11/doc/html/mouse12.html
+lib/X11/doc/html/mouse13.html
+lib/X11/doc/html/mouse14.html
+lib/X11/doc/html/mouse15.html
+lib/X11/doc/html/mouse16.html
+lib/X11/doc/html/mouse17.html
+lib/X11/doc/html/mouse18.html
+lib/X11/doc/html/mouse19.html
+lib/X11/doc/html/mouse2.html
+lib/X11/doc/html/mouse20.html
+lib/X11/doc/html/mouse21.html
+lib/X11/doc/html/mouse22.html
+lib/X11/doc/html/mouse23.html
+lib/X11/doc/html/mouse24.html
+lib/X11/doc/html/mouse25.html
+lib/X11/doc/html/mouse26.html
+lib/X11/doc/html/mouse27.html
+lib/X11/doc/html/mouse28.html
+lib/X11/doc/html/mouse29.html
+lib/X11/doc/html/mouse3.html
+lib/X11/doc/html/mouse30.html
+lib/X11/doc/html/mouse31.html
+lib/X11/doc/html/mouse32.html
+lib/X11/doc/html/mouse33.html
+lib/X11/doc/html/mouse4.html
+lib/X11/doc/html/mouse5.html
+lib/X11/doc/html/mouse6.html
+lib/X11/doc/html/mouse7.html
+lib/X11/doc/html/mouse8.html
+lib/X11/doc/html/mouse9.html
+lib/X11/doc/html/mouse_toc.html
+lib/X11/doc/html/neo.html
+lib/X11/doc/html/neo1.html
+lib/X11/doc/html/neo2.html
+lib/X11/doc/html/neo3.html
+lib/X11/doc/html/neo4.html
+lib/X11/doc/html/neo5.html
+lib/X11/doc/html/neo6.html
+lib/X11/doc/html/neo7.html
+lib/X11/doc/html/neo8.html
+lib/X11/doc/html/neo_toc.html
+lib/X11/doc/html/rendition.html
+lib/X11/doc/html/rendition1.html
+lib/X11/doc/html/rendition2.html
+lib/X11/doc/html/rendition3.html
+lib/X11/doc/html/rendition4.html
+lib/X11/doc/html/rendition5.html
+lib/X11/doc/html/rendition6.html
+lib/X11/doc/html/rendition7.html
+lib/X11/doc/html/rendition_toc.html
+lib/X11/doc/html/3DLabs.html
+lib/X11/doc/html/3DLabs1.html
+lib/X11/doc/html/3DLabs2.html
+lib/X11/doc/html/3DLabs3.html
+lib/X11/doc/html/3DLabs4.html
+lib/X11/doc/html/3DLabs5.html
+lib/X11/doc/html/3DLabs_toc.html
+lib/X11/doc/html/trident.html
+lib/X11/doc/html/trident1.html
+lib/X11/doc/html/trident2.html
+lib/X11/doc/html/trident3.html
+lib/X11/doc/html/trident_toc.html
+lib/X11/doc/html/tseng.html
+lib/X11/doc/html/tseng1.html
+lib/X11/doc/html/tseng10.html
+lib/X11/doc/html/tseng11.html
+lib/X11/doc/html/tseng12.html
+lib/X11/doc/html/tseng13.html
+lib/X11/doc/html/tseng14.html
+lib/X11/doc/html/tseng15.html
+lib/X11/doc/html/tseng16.html
+lib/X11/doc/html/tseng17.html
+lib/X11/doc/html/tseng18.html
+lib/X11/doc/html/tseng19.html
+lib/X11/doc/html/tseng2.html
+lib/X11/doc/html/tseng20.html
+lib/X11/doc/html/tseng21.html
+lib/X11/doc/html/tseng22.html
+lib/X11/doc/html/tseng23.html
+lib/X11/doc/html/tseng3.html
+lib/X11/doc/html/tseng4.html
+lib/X11/doc/html/tseng5.html
+lib/X11/doc/html/tseng6.html
+lib/X11/doc/html/tseng7.html
+lib/X11/doc/html/tseng8.html
+lib/X11/doc/html/tseng9.html
+lib/X11/doc/html/tseng_toc.html
+lib/X11/doc/html/i740.html
+lib/X11/doc/html/i7401.html
+lib/X11/doc/html/i7402.html
+lib/X11/doc/html/i7403.html
+lib/X11/doc/html/i7404.html
+lib/X11/doc/html/i7405.html
+lib/X11/doc/html/i7406.html
+lib/X11/doc/html/i7407.html
+lib/X11/doc/html/i7408.html
+lib/X11/doc/html/i740_toc.html
+lib/X11/doc/html/i810.html
+lib/X11/doc/html/i8101.html
+lib/X11/doc/html/i8102.html
+lib/X11/doc/html/i8103.html
+lib/X11/doc/html/i8104.html
+lib/X11/doc/html/i8105.html
+lib/X11/doc/html/i8106.html
+lib/X11/doc/html/i8107.html
+lib/X11/doc/html/i8108.html
+lib/X11/doc/html/i810_toc.html
+lib/X11/doc/html/r128.html
+lib/X11/doc/html/r1281.html
+lib/X11/doc/html/r1282.html
+lib/X11/doc/html/r1283.html
+lib/X11/doc/html/r1284.html
+lib/X11/doc/html/r1285.html
+lib/X11/doc/html/r1286.html
+lib/X11/doc/html/r1287.html
+lib/X11/doc/html/r1288.html
+lib/X11/doc/html/r128_toc.html
+lib/X11/doc/html/COPYRIGHT.html
+lib/X11/doc/html/COPYRIGHT1.html
+lib/X11/doc/html/COPYRIGHT2.html
+lib/X11/doc/html/COPYRIGHT3.html
+lib/X11/doc/html/COPYRIGHT4.html
+lib/X11/doc/html/COPYRIGHT5.html
+lib/X11/doc/html/COPYRIGHT6.html
+lib/X11/doc/html/COPYRIGHT7.html
+lib/X11/doc/html/COPYRIGHT_toc.html
+lib/X11/doc/html/RELNOTES.html
+lib/X11/doc/html/RELNOTES1.html
+lib/X11/doc/html/RELNOTES10.html
+lib/X11/doc/html/RELNOTES11.html
+lib/X11/doc/html/RELNOTES12.html
+lib/X11/doc/html/RELNOTES13.html
+lib/X11/doc/html/RELNOTES14.html
+lib/X11/doc/html/RELNOTES2.html
+lib/X11/doc/html/RELNOTES3.html
+lib/X11/doc/html/RELNOTES4.html
+lib/X11/doc/html/RELNOTES5.html
+lib/X11/doc/html/RELNOTES6.html
+lib/X11/doc/html/RELNOTES7.html
+lib/X11/doc/html/RELNOTES8.html
+lib/X11/doc/html/RELNOTES9.html
+lib/X11/doc/html/RELNOTES_toc.html
+lib/X11/doc/html/Config.html
+lib/X11/doc/html/Config1.html
+lib/X11/doc/html/Config2.html
+lib/X11/doc/html/Config3.html
+lib/X11/doc/html/Config4.html
+lib/X11/doc/html/Config5.html
+lib/X11/doc/html/Config6.html
+lib/X11/doc/html/Config7.html
+lib/X11/doc/html/Config_toc.html
+lib/X11/doc/html/BUILD.html
+lib/X11/doc/html/BUILD1.html
+lib/X11/doc/html/BUILD2.html
+lib/X11/doc/html/BUILD3.html
+lib/X11/doc/html/BUILD4.html
+lib/X11/doc/html/BUILD5.html
+lib/X11/doc/html/BUILD6.html
+lib/X11/doc/html/BUILD_toc.html
+lib/X11/doc/html/README.html
+lib/X11/doc/html/README1.html
+lib/X11/doc/html/README2.html
+lib/X11/doc/html/README3.html
+lib/X11/doc/html/README4.html
+lib/X11/doc/html/README5.html
+lib/X11/doc/html/README6.html
+lib/X11/doc/html/README7.html
+lib/X11/doc/html/README8.html
+lib/X11/doc/html/README_toc.html
+lib/X11/doc/html/QuickStart.html
+lib/X11/doc/html/QuickStart1.html
+lib/X11/doc/html/QuickStart10.html
+lib/X11/doc/html/QuickStart11.html
+lib/X11/doc/html/QuickStart12.html
+lib/X11/doc/html/QuickStart13.html
+lib/X11/doc/html/QuickStart14.html
+lib/X11/doc/html/QuickStart15.html
+lib/X11/doc/html/QuickStart16.html
+lib/X11/doc/html/QuickStart17.html
+lib/X11/doc/html/QuickStart18.html
+lib/X11/doc/html/QuickStart19.html
+lib/X11/doc/html/QuickStart2.html
+lib/X11/doc/html/QuickStart20.html
+lib/X11/doc/html/QuickStart21.html
+lib/X11/doc/html/QuickStart22.html
+lib/X11/doc/html/QuickStart23.html
+lib/X11/doc/html/QuickStart24.html
+lib/X11/doc/html/QuickStart25.html
+lib/X11/doc/html/QuickStart26.html
+lib/X11/doc/html/QuickStart27.html
+lib/X11/doc/html/QuickStart28.html
+lib/X11/doc/html/QuickStart29.html
+lib/X11/doc/html/QuickStart3.html
+lib/X11/doc/html/QuickStart30.html
+lib/X11/doc/html/QuickStart31.html
+lib/X11/doc/html/QuickStart32.html
+lib/X11/doc/html/QuickStart33.html
+lib/X11/doc/html/QuickStart34.html
+lib/X11/doc/html/QuickStart35.html
+lib/X11/doc/html/QuickStart4.html
+lib/X11/doc/html/QuickStart5.html
+lib/X11/doc/html/QuickStart6.html
+lib/X11/doc/html/QuickStart7.html
+lib/X11/doc/html/QuickStart8.html
+lib/X11/doc/html/QuickStart9.html
+lib/X11/doc/html/QuickStart_toc.html
+lib/X11/doc/html/DocIndex.html
+lib/X11/doc/html/DocIndex1.html
+lib/X11/doc/html/DocIndex_toc.html
+lib/X11/doc/html/LinkKit.html
+lib/X11/doc/html/LinkKit1.html
+lib/X11/doc/html/LinkKit_toc.html
+lib/X11/doc/html/clkprog.html
+lib/X11/doc/html/clkprog1.html
+lib/X11/doc/html/clkprog2.html
+lib/X11/doc/html/clkprog_toc.html
+lib/X11/doc/html/xinput.html
+lib/X11/doc/html/xinput1.html
+lib/X11/doc/html/xinput2.html
+lib/X11/doc/html/xinput3.html
+lib/X11/doc/html/xinput4.html
+lib/X11/doc/html/xinput5.html
+lib/X11/doc/html/xinput_toc.html
+lib/X11/doc/html/VideoModes.html
+lib/X11/doc/html/VideoModes1.html
+lib/X11/doc/html/VideoModes10.html
+lib/X11/doc/html/VideoModes11.html
+lib/X11/doc/html/VideoModes12.html
+lib/X11/doc/html/VideoModes13.html
+lib/X11/doc/html/VideoModes14.html
+lib/X11/doc/html/VideoModes15.html
+lib/X11/doc/html/VideoModes16.html
+lib/X11/doc/html/VideoModes17.html
+lib/X11/doc/html/VideoModes18.html
+lib/X11/doc/html/VideoModes19.html
+lib/X11/doc/html/VideoModes2.html
+lib/X11/doc/html/VideoModes20.html
+lib/X11/doc/html/VideoModes21.html
+lib/X11/doc/html/VideoModes22.html
+lib/X11/doc/html/VideoModes23.html
+lib/X11/doc/html/VideoModes24.html
+lib/X11/doc/html/VideoModes25.html
+lib/X11/doc/html/VideoModes26.html
+lib/X11/doc/html/VideoModes27.html
+lib/X11/doc/html/VideoModes3.html
+lib/X11/doc/html/VideoModes4.html
+lib/X11/doc/html/VideoModes5.html
+lib/X11/doc/html/VideoModes6.html
+lib/X11/doc/html/VideoModes7.html
+lib/X11/doc/html/VideoModes8.html
+lib/X11/doc/html/VideoModes9.html
+lib/X11/doc/html/VideoModes_toc.html
+lib/X11/doc/html/VGADriver.html
+lib/X11/doc/html/VGADriver1.html
+lib/X11/doc/html/VGADriver10.html
+lib/X11/doc/html/VGADriver11.html
+lib/X11/doc/html/VGADriver12.html
+lib/X11/doc/html/VGADriver13.html
+lib/X11/doc/html/VGADriver14.html
+lib/X11/doc/html/VGADriver15.html
+lib/X11/doc/html/VGADriver16.html
+lib/X11/doc/html/VGADriver17.html
+lib/X11/doc/html/VGADriver18.html
+lib/X11/doc/html/VGADriver19.html
+lib/X11/doc/html/VGADriver2.html
+lib/X11/doc/html/VGADriver20.html
+lib/X11/doc/html/VGADriver21.html
+lib/X11/doc/html/VGADriver22.html
+lib/X11/doc/html/VGADriver23.html
+lib/X11/doc/html/VGADriver24.html
+lib/X11/doc/html/VGADriver25.html
+lib/X11/doc/html/VGADriver26.html
+lib/X11/doc/html/VGADriver3.html
+lib/X11/doc/html/VGADriver4.html
+lib/X11/doc/html/VGADriver5.html
+lib/X11/doc/html/VGADriver6.html
+lib/X11/doc/html/VGADriver7.html
+lib/X11/doc/html/VGADriver8.html
+lib/X11/doc/html/VGADriver9.html
+lib/X11/doc/html/VGADriver_toc.html
diff --git a/release/scripts/X11/plists/i386/Xjdoc.tgz.plist b/release/scripts/X11/plists/i386/Xjdoc.tgz.plist
new file mode 100644
index 000000000000..20ac1a5d93f9
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xjdoc.tgz.plist
@@ -0,0 +1,49 @@
+lib/X11/doc/Japanese/
+lib/X11/doc/Japanese/AccelCards
+lib/X11/doc/Japanese/COPYRIGHT
+lib/X11/doc/Japanese/README
+lib/X11/doc/Japanese/README.Config
+lib/X11/doc/Japanese/BUILD
+lib/X11/doc/Japanese/INSTALL
+lib/X11/doc/Japanese/LinkKit
+lib/X11/doc/Japanese/RELNOTES
+lib/X11/doc/Japanese/README.Linux
+lib/X11/doc/Japanese/README.ati
+lib/X11/doc/Japanese/README.trident
+lib/X11/doc/Japanese/README.tseng
+lib/X11/doc/Japanese/README.WstDig
+lib/X11/doc/Japanese/README.DECtga
+lib/X11/doc/Japanese/README.apm
+lib/X11/doc/Japanese/README.rendition
+lib/X11/doc/Japanese/README.epson
+lib/X11/doc/Japanese/README.chips
+lib/X11/doc/Japanese/README.cirrus
+lib/X11/doc/Japanese/README.Video7
+lib/X11/doc/Japanese/README.P9000
+lib/X11/doc/Japanese/README.agx
+lib/X11/doc/Japanese/README.S3
+lib/X11/doc/Japanese/README.S3V
+lib/X11/doc/Japanese/README.SiS
+lib/X11/doc/Japanese/README.W32
+lib/X11/doc/Japanese/README.Oak
+lib/X11/doc/Japanese/README.I128
+lib/X11/doc/Japanese/README.Mach32
+lib/X11/doc/Japanese/README.Mach64
+lib/X11/doc/Japanese/README.ark
+lib/X11/doc/Japanese/README.MGA
+lib/X11/doc/Japanese/README.NVIDIA
+lib/X11/doc/Japanese/README.mouse
+lib/X11/doc/Japanese/README.neo
+lib/X11/doc/Japanese/README.3DLabs
+lib/X11/doc/Japanese/README.cyrix
+lib/X11/doc/Japanese/README.i740
+lib/X11/doc/Japanese/README.r128
+lib/X11/doc/Japanese/README.FreeBSD
+lib/X11/doc/Japanese/VideoModes.doc
+lib/X11/doc/Japanese/QuickStart.doc
+lib/X11/doc/Japanese/README.clkprog
+lib/X11/doc/Japanese/xinput
+lib/X11/doc/Japanese/VGADriver.doc
+lib/X11/doc/Japanese/modelines.txt
+lib/X11/doc/Japanese/README98.1st
+lib/X11/doc/Japanese/README98
diff --git a/release/scripts/X11/plists/i386/Xjset.tgz.plist b/release/scripts/X11/plists/i386/Xjset.tgz.plist
new file mode 100644
index 000000000000..009676e1febf
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xjset.tgz.plist
@@ -0,0 +1,76 @@
+bin/XF86Setup_jp
+bin/xmseconfig
+lib/X11/XF86Setup/
+lib/X11/XF86Setup/pics/
+lib/X11/XF86Setup/pics/vidcard.xbm
+lib/X11/XF86Setup/pics/vidcard.msk
+lib/X11/XF86Setup/pics/XFree86.xbm
+lib/X11/XF86Setup/pics/XFree86.msk
+lib/X11/XF86Setup/scripts/
+lib/X11/XF86Setup/scripts/mseconfig.tcl
+lib/X11/XF86Setup/tcllib/
+lib/X11/XF86Setup/tcllib/button.tcl
+lib/X11/XF86Setup/tcllib/combobox.tcl
+lib/X11/XF86Setup/tcllib/misc.tcl
+lib/X11/XF86Setup/tcllib/downarrow.xbm
+lib/X11/XF86Setup/tcllib/dialog.tcl
+lib/X11/XF86Setup/tcllib/entry.tcl
+lib/X11/XF86Setup/tcllib/focus.tcl
+lib/X11/XF86Setup/tcllib/init.tcl
+lib/X11/XF86Setup/tcllib/listbox.tcl
+lib/X11/XF86Setup/tcllib/menu.tcl
+lib/X11/XF86Setup/tcllib/optionMenu.tcl
+lib/X11/XF86Setup/tcllib/palette.tcl
+lib/X11/XF86Setup/tcllib/scale.tcl
+lib/X11/XF86Setup/tcllib/scrollbar.tcl
+lib/X11/XF86Setup/tcllib/tclIndex
+lib/X11/XF86Setup/tcllib/tearoff.tcl
+lib/X11/XF86Setup/tcllib/text.tcl
+lib/X11/XF86Setup/tcllib/tk.tcl
+lib/X11/XF86Setup/tcllib/tkerror.tcl
+lib/X11/XF86Setup/tcllib/uparrow.xbm
+lib/X11/XF86Setup/tcllib/license.terms
+lib/X11/XF86Setup/phase1.tcl
+lib/X11/XF86Setup/phase2.tcl
+lib/X11/XF86Setup/phase3.tcl
+lib/X11/XF86Setup/phase4.tcl
+lib/X11/XF86Setup/phase5.tcl
+lib/X11/XF86Setup/setuplib.tcl
+lib/X11/XF86Setup/srvflags.tcl
+lib/X11/XF86Setup/carddata.tcl
+lib/X11/XF86Setup/card.tcl
+lib/X11/XF86Setup/done.tcl
+lib/X11/XF86Setup/filelist.tcl
+lib/X11/XF86Setup/keyboard.tcl
+lib/X11/XF86Setup/mseproto.tcl
+lib/X11/XF86Setup/mondata.tcl
+lib/X11/XF86Setup/monitor.tcl
+lib/X11/XF86Setup/modeselect.tcl
+lib/X11/XF86Setup/mouse.tcl
+lib/X11/XF86Setup/LICENSE
+lib/X11/XF86Setup/texts/
+lib/X11/XF86Setup/texts/local_text.tcl
+lib/X11/XF86Setup/texts/generic/
+lib/X11/XF86Setup/texts/generic/messages.tcl
+lib/X11/XF86Setup/texts/generic/message_proc.tcl
+lib/X11/XF86Setup/texts/generic/help_card.tcl
+lib/X11/XF86Setup/texts/generic/help_done.tcl
+lib/X11/XF86Setup/texts/generic/help_keyboard.tcl
+lib/X11/XF86Setup/texts/generic/help_monitor.tcl
+lib/X11/XF86Setup/texts/generic/help_mouse.tcl
+lib/X11/XF86Setup/texts/generic/help_other.tcl
+lib/X11/XF86Setup/texts/generic/help_intro.tcl
+lib/X11/XF86Setup/texts/generic/help_modeselect.tcl
+lib/X11/XF86Setup/texts/ja/
+lib/X11/XF86Setup/texts/ja/messages.tcl
+lib/X11/XF86Setup/texts/ja/message_proc.tcl
+lib/X11/XF86Setup/texts/ja/help_card.tcl
+lib/X11/XF86Setup/texts/ja/help_done.tcl
+lib/X11/XF86Setup/texts/ja/help_keyboard.tcl
+lib/X11/XF86Setup/texts/ja/help_monitor.tcl
+lib/X11/XF86Setup/texts/ja/help_mouse.tcl
+lib/X11/XF86Setup/texts/ja/help_other.tcl
+lib/X11/XF86Setup/texts/ja/help_intro.tcl
+lib/X11/XF86Setup/texts/ja/help_modeselect.tcl
+man/man1/XF86Setup.1.gz
+man/man1/xmseconfig.1.gz
diff --git a/release/scripts/X11/plists/i386/Xlib.tgz.plist b/release/scripts/X11/plists/i386/Xlib.tgz.plist
new file mode 100644
index 000000000000..ec6d994c0258
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xlib.tgz.plist
@@ -0,0 +1,390 @@
+lib/X11/
+lib/X11/XErrorDB
+lib/X11/XKeysymDB
+lib/X11/locale/
+lib/X11/locale/locale.alias
+lib/X11/locale/locale.dir
+lib/X11/locale/compose.dir
+lib/X11/locale/C/
+lib/X11/locale/C/XLC_LOCALE
+lib/X11/locale/iso8859-1/
+lib/X11/locale/iso8859-1/XLC_LOCALE
+lib/X11/locale/iso8859-1/Compose
+lib/X11/locale/iso8859-2/
+lib/X11/locale/iso8859-2/XLC_LOCALE
+lib/X11/locale/iso8859-2/Compose
+lib/X11/locale/iso8859-3/
+lib/X11/locale/iso8859-3/XLC_LOCALE
+lib/X11/locale/iso8859-4/
+lib/X11/locale/iso8859-4/XLC_LOCALE
+lib/X11/locale/iso8859-4/Compose
+lib/X11/locale/iso8859-5/
+lib/X11/locale/iso8859-5/XLC_LOCALE
+lib/X11/locale/iso8859-6/
+lib/X11/locale/iso8859-6/XLC_LOCALE
+lib/X11/locale/iso8859-7/
+lib/X11/locale/iso8859-7/XLC_LOCALE
+lib/X11/locale/iso8859-8/
+lib/X11/locale/iso8859-8/XLC_LOCALE
+lib/X11/locale/iso8859-9/
+lib/X11/locale/iso8859-9/XLC_LOCALE
+lib/X11/locale/iso8859-10/
+lib/X11/locale/iso8859-10/XLC_LOCALE
+lib/X11/locale/iso8859-15/
+lib/X11/locale/iso8859-15/XLC_LOCALE
+lib/X11/locale/iso8859-15/Compose
+lib/X11/locale/ja/
+lib/X11/locale/ja/XLC_LOCALE
+lib/X11/locale/ja.JIS/
+lib/X11/locale/ja.JIS/XLC_LOCALE
+lib/X11/locale/ja.SJIS/
+lib/X11/locale/ja.SJIS/XLC_LOCALE
+lib/X11/locale/ko/
+lib/X11/locale/ko/XLC_LOCALE
+lib/X11/locale/koi8-r/
+lib/X11/locale/koi8-r/XLC_LOCALE
+lib/X11/locale/zh/
+lib/X11/locale/zh/XLC_LOCALE
+lib/X11/locale/zh_TW/
+lib/X11/locale/zh_TW/XLC_LOCALE
+lib/X11/locale/zh_TW.Big5/
+lib/X11/locale/zh_TW.Big5/XLC_LOCALE
+lib/X11/locale/th_TH.TACTIS/
+lib/X11/locale/th_TH.TACTIS/XLC_LOCALE
+lib/X11/locale/en_US.utf/
+lib/X11/locale/en_US.utf/XLC_LOCALE
+lib/X11/locale/tbl_data/
+lib/X11/locale/tbl_data/tab8859_1
+lib/X11/locale/tbl_data/tab8859_2
+lib/X11/locale/tbl_data/tab8859_3
+lib/X11/locale/tbl_data/tab8859_4
+lib/X11/locale/tbl_data/tab8859_5
+lib/X11/locale/tbl_data/tab8859_6
+lib/X11/locale/tbl_data/tab8859_7
+lib/X11/locale/tbl_data/tab8859_8
+lib/X11/locale/tbl_data/tab8859_9
+lib/X11/locale/tbl_data/tab8859_10
+lib/X11/locale/tbl_data/tab8859_15
+lib/X11/locale/tbl_data/jis0208
+lib/X11/locale/tbl_data/ksc5601
+lib/X11/locale/tbl_data/gb2312
+lib/X11/locale/tbl_data/jis0201
+lib/X11/locale/tbl_data/tabkoi8_r
+lib/X11/proxymngr/
+lib/X11/proxymngr/pmconfig
+lib/X11/rgb.txt
+lib/X11/rstart/
+lib/X11/rstart/rstartd.real
+lib/X11/rstart/config
+lib/X11/rstart/commands/
+lib/X11/rstart/commands/x11r6/
+lib/X11/rstart/commands/x11r6/LoadMonitor
+lib/X11/rstart/commands/x11r6/@List
+lib/X11/rstart/commands/x11r6/Terminal
+lib/X11/rstart/commands/@List
+lib/X11/rstart/commands/ListContexts
+lib/X11/rstart/commands/ListGenericCommands
+lib/X11/rstart/commands/x11
+lib/X11/rstart/commands/x
+lib/X11/rstart/contexts/
+lib/X11/rstart/contexts/@List
+lib/X11/rstart/contexts/default
+lib/X11/rstart/contexts/x11r6
+lib/X11/rstart/contexts/x11
+lib/X11/rstart/contexts/x
+lib/X11/twm/
+lib/X11/twm/system.twmrc
+lib/X11/x11perfcomp/
+lib/X11/x11perfcomp/fillblnk
+lib/X11/x11perfcomp/perfboth
+lib/X11/x11perfcomp/perfratio
+lib/X11/xdm/
+lib/X11/xdm/chooser
+lib/X11/xkb/
+lib/X11/xkb/compiled/
+lib/X11/xkb/compiled/README
+lib/X11/xkb/xkbcomp
+lib/X11/xkb/compat.dir
+lib/X11/xkb/compat/
+lib/X11/xkb/compat/accessx
+lib/X11/xkb/compat/basic
+lib/X11/xkb/compat/complete
+lib/X11/xkb/compat/default
+lib/X11/xkb/compat/group_led
+lib/X11/xkb/compat/iso9995
+lib/X11/xkb/compat/japan
+lib/X11/xkb/compat/keypad
+lib/X11/xkb/compat/misc
+lib/X11/xkb/compat/mousekeys
+lib/X11/xkb/compat/norepeat
+lib/X11/xkb/compat/pc
+lib/X11/xkb/compat/pc98
+lib/X11/xkb/compat/xtest
+lib/X11/xkb/geometry.dir
+lib/X11/xkb/geometry/
+lib/X11/xkb/geometry/amiga
+lib/X11/xkb/geometry/ataritt
+lib/X11/xkb/geometry/dell
+lib/X11/xkb/geometry/everex
+lib/X11/xkb/geometry/fujitsu
+lib/X11/xkb/geometry/keytronic
+lib/X11/xkb/geometry/kinesis
+lib/X11/xkb/geometry/macintosh
+lib/X11/xkb/geometry/microsoft
+lib/X11/xkb/geometry/nec
+lib/X11/xkb/geometry/northgate
+lib/X11/xkb/geometry/pc
+lib/X11/xkb/geometry/sony
+lib/X11/xkb/geometry/sun
+lib/X11/xkb/geometry/winbook
+lib/X11/xkb/geometry/digital/
+lib/X11/xkb/geometry/digital/lk
+lib/X11/xkb/geometry/digital/pc
+lib/X11/xkb/geometry/digital/unix
+lib/X11/xkb/geometry/sgi/
+lib/X11/xkb/geometry/sgi/indy
+lib/X11/xkb/geometry/sgi/indigo
+lib/X11/xkb/geometry/sgi/O2
+lib/X11/xkb/keycodes.dir
+lib/X11/xkb/keycodes/
+lib/X11/xkb/keycodes/amiga
+lib/X11/xkb/keycodes/ataritt
+lib/X11/xkb/keycodes/fujitsu
+lib/X11/xkb/keycodes/hp
+lib/X11/xkb/keycodes/ibm
+lib/X11/xkb/keycodes/macintosh
+lib/X11/xkb/keycodes/sony
+lib/X11/xkb/keycodes/sun
+lib/X11/xkb/keycodes/xfree86
+lib/X11/xkb/keycodes/xfree98
+lib/X11/xkb/keycodes/digital/
+lib/X11/xkb/keycodes/digital/lk
+lib/X11/xkb/keycodes/digital/pc
+lib/X11/xkb/keycodes/sgi/
+lib/X11/xkb/keycodes/sgi/indy
+lib/X11/xkb/keycodes/sgi/indigo
+lib/X11/xkb/keycodes/sgi/iris
+lib/X11/xkb/keymap.dir
+lib/X11/xkb/keymap/
+lib/X11/xkb/keymap/amiga
+lib/X11/xkb/keymap/ataritt
+lib/X11/xkb/keymap/macintosh
+lib/X11/xkb/keymap/sony
+lib/X11/xkb/keymap/xfree86
+lib/X11/xkb/keymap/xfree98
+lib/X11/xkb/keymap/digital/
+lib/X11/xkb/keymap/digital/us
+lib/X11/xkb/keymap/sgi/
+lib/X11/xkb/keymap/sgi/be
+lib/X11/xkb/keymap/sgi/bg
+lib/X11/xkb/keymap/sgi/ca
+lib/X11/xkb/keymap/sgi/cs
+lib/X11/xkb/keymap/sgi/de
+lib/X11/xkb/keymap/sgi/de_CH
+lib/X11/xkb/keymap/sgi/dk
+lib/X11/xkb/keymap/sgi/dvorak
+lib/X11/xkb/keymap/sgi/en_US
+lib/X11/xkb/keymap/sgi/es
+lib/X11/xkb/keymap/sgi/fi
+lib/X11/xkb/keymap/sgi/fr
+lib/X11/xkb/keymap/sgi/fr_CH
+lib/X11/xkb/keymap/sgi/gb
+lib/X11/xkb/keymap/sgi/hu
+lib/X11/xkb/keymap/sgi/it
+lib/X11/xkb/keymap/sgi/jp
+lib/X11/xkb/keymap/sgi/no
+lib/X11/xkb/keymap/sgi/pl
+lib/X11/xkb/keymap/sgi/pt
+lib/X11/xkb/keymap/sgi/ru
+lib/X11/xkb/keymap/sgi/se
+lib/X11/xkb/keymap/sgi/th
+lib/X11/xkb/keymap/sgi/us
+lib/X11/xkb/keymap/sun/
+lib/X11/xkb/keymap/sun/de
+lib/X11/xkb/keymap/sun/se
+lib/X11/xkb/keymap/sun/us
+lib/X11/xkb/semantics/
+lib/X11/xkb/semantics/basic
+lib/X11/xkb/semantics/complete
+lib/X11/xkb/semantics/default
+lib/X11/xkb/semantics/xtest
+lib/X11/xkb/symbols.dir
+lib/X11/xkb/symbols/
+lib/X11/xkb/symbols/amiga
+lib/X11/xkb/symbols/ataritt
+lib/X11/xkb/symbols/be
+lib/X11/xkb/symbols/bg
+lib/X11/xkb/symbols/br
+lib/X11/xkb/symbols/ca
+lib/X11/xkb/symbols/ca_enhanced
+lib/X11/xkb/symbols/cs
+lib/X11/xkb/symbols/ctrl
+lib/X11/xkb/symbols/de
+lib/X11/xkb/symbols/de_CH
+lib/X11/xkb/symbols/dk
+lib/X11/xkb/symbols/dvorak
+lib/X11/xkb/symbols/en_US
+lib/X11/xkb/symbols/es
+lib/X11/xkb/symbols/fi
+lib/X11/xkb/symbols/fr
+lib/X11/xkb/symbols/fr_CH
+lib/X11/xkb/symbols/gb
+lib/X11/xkb/symbols/group
+lib/X11/xkb/symbols/hu
+lib/X11/xkb/symbols/iso9995-3
+lib/X11/xkb/symbols/it
+lib/X11/xkb/symbols/jp
+lib/X11/xkb/symbols/keypad
+lib/X11/xkb/symbols/lock
+lib/X11/xkb/symbols/no
+lib/X11/xkb/symbols/pc104
+lib/X11/xkb/symbols/pl
+lib/X11/xkb/symbols/pt
+lib/X11/xkb/symbols/ralt
+lib/X11/xkb/symbols/ru
+lib/X11/xkb/symbols/se
+lib/X11/xkb/symbols/th
+lib/X11/xkb/symbols/us
+lib/X11/xkb/symbols/us_intl
+lib/X11/xkb/symbols/czsk
+lib/X11/xkb/symbols/is
+lib/X11/xkb/symbols/digital/
+lib/X11/xkb/symbols/digital/lk
+lib/X11/xkb/symbols/digital/pc
+lib/X11/xkb/symbols/digital/us
+lib/X11/xkb/symbols/digital/vt
+lib/X11/xkb/symbols/fujitsu/
+lib/X11/xkb/symbols/fujitsu/jp
+lib/X11/xkb/symbols/fujitsu/us
+lib/X11/xkb/symbols/macintosh/
+lib/X11/xkb/symbols/macintosh/us
+lib/X11/xkb/symbols/nec/
+lib/X11/xkb/symbols/nec/jp
+lib/X11/xkb/symbols/sgi/
+lib/X11/xkb/symbols/sgi/jp
+lib/X11/xkb/symbols/sony/
+lib/X11/xkb/symbols/sony/us
+lib/X11/xkb/symbols/sun/
+lib/X11/xkb/symbols/sun/se
+lib/X11/xkb/symbols/sun/us
+lib/X11/xkb/types.dir
+lib/X11/xkb/types/
+lib/X11/xkb/types/basic
+lib/X11/xkb/types/cancel
+lib/X11/xkb/types/nocancel
+lib/X11/xkb/types/complete
+lib/X11/xkb/types/default
+lib/X11/xkb/types/mousekeys
+lib/X11/xkb/types/iso9995
+lib/X11/xkb/types/pc
+lib/X11/xkb/rules/
+lib/X11/xkb/rules/sgi
+lib/X11/xkb/rules/xfree86
+lib/X11/xkb/rules/sgi.lst
+lib/X11/xkb/rules/xfree86.lst
+lib/X11/xkb/rules/xfree86-it.lst
+lib/X11/xsm/
+lib/X11/xsm/system.xsm
+lib/X11/xserver/
+lib/X11/xserver/SecurityPolicy
+lib/X11/XF86Config.eg
+lib/X11/Cards
+lib/X11/etc/
+lib/X11/etc/sun.termcap
+lib/X11/etc/sun.terminfo
+lib/X11/etc/xterm.termcap
+lib/X11/etc/xterm.terminfo
+lib/X11/etc/et4000clock.c
+lib/X11/etc/xmodmap.std
+lib/X11/etc/postinst.sh
+lib/X11/etc/preinst.sh
+lib/X11/XF86Config.98
+lib/X11/Cards98
+lib/X11/lbxproxy/
+lib/X11/lbxproxy/AtomControl
+lib/X11/xman.help
+include/X11/bitmaps/
+include/X11/bitmaps/1x1
+include/X11/bitmaps/2x2
+include/X11/bitmaps/black
+include/X11/bitmaps/boxes
+include/X11/bitmaps/calculator
+include/X11/bitmaps/cntr_ptr
+include/X11/bitmaps/cntr_ptrmsk
+include/X11/bitmaps/cross_weave
+include/X11/bitmaps/dimple1
+include/X11/bitmaps/dimple3
+include/X11/bitmaps/dot
+include/X11/bitmaps/dropbar7
+include/X11/bitmaps/dropbar8
+include/X11/bitmaps/escherknot
+include/X11/bitmaps/flagdown
+include/X11/bitmaps/flagup
+include/X11/bitmaps/flipped_gray
+include/X11/bitmaps/gray
+include/X11/bitmaps/gray1
+include/X11/bitmaps/gray3
+include/X11/bitmaps/grid2
+include/X11/bitmaps/grid4
+include/X11/bitmaps/grid8
+include/X11/bitmaps/grid16
+include/X11/bitmaps/hlines2
+include/X11/bitmaps/hlines3
+include/X11/bitmaps/icon
+include/X11/bitmaps/keyboard16
+include/X11/bitmaps/left_ptr
+include/X11/bitmaps/left_ptrmsk
+include/X11/bitmaps/letters
+include/X11/bitmaps/light_gray
+include/X11/bitmaps/mailempty
+include/X11/bitmaps/mailemptymsk
+include/X11/bitmaps/mailfull
+include/X11/bitmaps/mailfullmsk
+include/X11/bitmaps/mensetmanus
+include/X11/bitmaps/menu6
+include/X11/bitmaps/menu8
+include/X11/bitmaps/menu10
+include/X11/bitmaps/menu12
+include/X11/bitmaps/menu16
+include/X11/bitmaps/noletters
+include/X11/bitmaps/opendot
+include/X11/bitmaps/opendotMask
+include/X11/bitmaps/plaid
+include/X11/bitmaps/right_ptr
+include/X11/bitmaps/right_ptrmsk
+include/X11/bitmaps/root_weave
+include/X11/bitmaps/scales
+include/X11/bitmaps/sipb
+include/X11/bitmaps/star
+include/X11/bitmaps/starMask
+include/X11/bitmaps/stipple
+include/X11/bitmaps/target
+include/X11/bitmaps/vlines2
+include/X11/bitmaps/terminal
+include/X11/bitmaps/tie_fighter
+include/X11/bitmaps/vlines3
+include/X11/bitmaps/weird_size
+include/X11/bitmaps/wide_weave
+include/X11/bitmaps/wingdogs
+include/X11/bitmaps/woman
+include/X11/bitmaps/xfd_icon
+include/X11/bitmaps/xlogo11
+include/X11/bitmaps/xlogo16
+include/X11/bitmaps/xlogo32
+include/X11/bitmaps/xlogo64
+include/X11/bitmaps/xsnow
+include/X11/bitmaps/Dashes
+include/X11/bitmaps/Down
+include/X11/bitmaps/Excl
+include/X11/bitmaps/FlipHoriz
+include/X11/bitmaps/FlipVert
+include/X11/bitmaps/Fold
+include/X11/bitmaps/Left
+include/X11/bitmaps/Right
+include/X11/bitmaps/RotateLeft
+include/X11/bitmaps/RotateRight
+include/X11/bitmaps/Stipple
+include/X11/bitmaps/Term
+include/X11/bitmaps/Up
+include/X11/bitmaps/black6
+include/X11/bitmaps/box6
diff --git a/release/scripts/X11/plists/i386/Xlk98.tgz.plist b/release/scripts/X11/plists/i386/Xlk98.tgz.plist
new file mode 100644
index 000000000000..75200aa3fb97
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xlk98.tgz.plist
@@ -0,0 +1,618 @@
+lib/Server/
+lib/Server/include/
+lib/Server/include/X11/
+lib/Server/include/X11/X.h
+lib/Server/include/X11/Xalloca.h
+lib/Server/include/X11/Xfuncproto.h
+lib/Server/include/X11/Xfuncs.h
+lib/Server/include/X11/Xmd.h
+lib/Server/include/X11/Xos.h
+lib/Server/include/X11/Xosdefs.h
+lib/Server/include/X11/Xproto.h
+lib/Server/include/X11/Xprotostr.h
+lib/Server/include/X11/extensions/
+lib/Server/include/X11/extensions/saver.h
+lib/Server/include/X11/extensions/saverproto.h
+lib/Server/include/X11/extensions/scrnsaver.h
+lib/Server/include/X11/extensions/xf86vmode.h
+lib/Server/include/X11/extensions/xf86vmstr.h
+lib/Server/include/X11/extensions/xf86dga.h
+lib/Server/include/X11/extensions/xf86dgastr.h
+lib/Server/include/X11/extensions/xf86misc.h
+lib/Server/include/X11/extensions/xf86mscstr.h
+lib/Server/include/X11/extensions/lbxbuf.h
+lib/Server/include/X11/extensions/lbxbufstr.h
+lib/Server/include/X11/extensions/lbxdeltastr.h
+lib/Server/include/X11/extensions/lbximage.h
+lib/Server/include/X11/extensions/lbxopts.h
+lib/Server/include/X11/extensions/lbxstr.h
+lib/Server/include/X11/extensions/lbxzlib.h
+lib/Server/include/X11/extensions/dpms.h
+lib/Server/include/X11/extensions/dpmsstr.h
+lib/Server/include/fontstruct.h
+lib/Server/include/font.h
+lib/Server/include/fsmasks.h
+lib/Server/include/closure.h
+lib/Server/include/colormap.h
+lib/Server/include/colormapst.h
+lib/Server/include/cursor.h
+lib/Server/include/cursorstr.h
+lib/Server/include/dix.h
+lib/Server/include/dixfont.h
+lib/Server/include/dixfontstr.h
+lib/Server/include/dixstruct.h
+lib/Server/include/extension.h
+lib/Server/include/extnsionst.h
+lib/Server/include/gc.h
+lib/Server/include/gcstruct.h
+lib/Server/include/input.h
+lib/Server/include/inputstr.h
+lib/Server/include/misc.h
+lib/Server/include/miscstruct.h
+lib/Server/include/opaque.h
+lib/Server/include/os.h
+lib/Server/include/pixmap.h
+lib/Server/include/pixmapstr.h
+lib/Server/include/property.h
+lib/Server/include/resource.h
+lib/Server/include/region.h
+lib/Server/include/regionstr.h
+lib/Server/include/screenint.h
+lib/Server/include/scrnintstr.h
+lib/Server/include/servermd.h
+lib/Server/include/site.h
+lib/Server/include/validate.h
+lib/Server/include/window.h
+lib/Server/include/windowstr.h
+lib/Server/include/mi.h
+lib/Server/include/mibstore.h
+lib/Server/include/miline.h
+lib/Server/include/mipointer.h
+lib/Server/include/misprite.h
+lib/Server/include/mispritest.h
+lib/Server/include/mistruct.h
+lib/Server/include/fastblt.h
+lib/Server/include/mfb.h
+lib/Server/include/mergerop.h
+lib/Server/include/cfb.h
+lib/Server/include/cfb8bit.h
+lib/Server/include/cfbmap.h
+lib/Server/include/cfbmskbits.h
+lib/Server/include/xf86.h
+lib/Server/include/cfbrrop.h
+lib/Server/include/xf86Version.h
+lib/Server/include/assyntax.h
+lib/Server/include/xf86_OSlib.h
+lib/Server/include/xf86_OSproc.h
+lib/Server/include/xf86ExtInit.h
+lib/Server/include/xf86Priv.h
+lib/Server/include/xf86Procs.h
+lib/Server/include/xf86_Option.h
+lib/Server/include/xf86_Config.h
+lib/Server/include/xf86DCConf.h
+lib/Server/include/compiler.h
+lib/Server/include/cfb16.h
+lib/Server/include/cfb24.h
+lib/Server/include/cfb32.h
+lib/Server/include/xf86_HWlib.h
+lib/Server/include/xf86_PCI.h
+lib/Server/include/xf86cursor.h
+lib/Server/include/xf86expblt.h
+lib/Server/include/xf86local.h
+lib/Server/include/xf86scrin.h
+lib/Server/include/xf86xaa.h
+lib/Server/config/
+lib/Server/config/cf/
+lib/Server/config/cf/Imake.rules
+lib/Server/config/cf/Motif.rules
+lib/Server/config/cf/Win32.rules
+lib/Server/config/cf/X11.rules
+lib/Server/config/cf/bsdLib.rules
+lib/Server/config/cf/cde.rules
+lib/Server/config/cf/gnuLib.rules
+lib/Server/config/cf/hpLib.rules
+lib/Server/config/cf/ibmLib.rules
+lib/Server/config/cf/lnxLib.rules
+lib/Server/config/cf/lnxdoc.rules
+lib/Server/config/cf/necLib.rules
+lib/Server/config/cf/noop.rules
+lib/Server/config/cf/nto.rules
+lib/Server/config/cf/oldlib.rules
+lib/Server/config/cf/os2.rules
+lib/Server/config/cf/os2Lib.rules
+lib/Server/config/cf/osfLib.rules
+lib/Server/config/cf/scoLib.rules
+lib/Server/config/cf/sgiLib.rules
+lib/Server/config/cf/sunLib.rules
+lib/Server/config/cf/QNX.rules
+lib/Server/config/cf/sv3Lib.rules
+lib/Server/config/cf/sv4Lib.rules
+lib/Server/config/cf/xf86.rules
+lib/Server/config/cf/Imake.tmpl
+lib/Server/config/cf/Library.tmpl
+lib/Server/config/cf/Motif.tmpl
+lib/Server/config/cf/Server.tmpl
+lib/Server/config/cf/ServerLib.tmpl
+lib/Server/config/cf/Threads.tmpl
+lib/Server/config/cf/WinLib.tmpl
+lib/Server/config/cf/X11.tmpl
+lib/Server/config/cf/bsdLib.tmpl
+lib/Server/config/cf/cde.tmpl
+lib/Server/config/cf/hpLib.tmpl
+lib/Server/config/cf/gnuLib.tmpl
+lib/Server/config/cf/ibmLib.tmpl
+lib/Server/config/cf/lnxLib.tmpl
+lib/Server/config/cf/lnxdoc.tmpl
+lib/Server/config/cf/necLib.tmpl
+lib/Server/config/cf/os2Lib.tmpl
+lib/Server/config/cf/osfLib.tmpl
+lib/Server/config/cf/sgiLib.tmpl
+lib/Server/config/cf/sunLib.tmpl
+lib/Server/config/cf/sv3Lib.tmpl
+lib/Server/config/cf/sv4Lib.tmpl
+lib/Server/config/cf/xf86.tmpl
+lib/Server/config/cf/xf86site.def
+lib/Server/config/cf/site.def
+lib/Server/config/cf/Imake.cf
+lib/Server/config/cf/Amoeba.cf
+lib/Server/config/cf/DGUX.cf
+lib/Server/config/cf/FreeBSD.cf
+lib/Server/config/cf/Mips.cf
+lib/Server/config/cf/NetBSD.cf
+lib/Server/config/cf/OpenBSD.cf
+lib/Server/config/cf/Oki.cf
+lib/Server/config/cf/Win32.cf
+lib/Server/config/cf/apollo.cf
+lib/Server/config/cf/bsd.cf
+lib/Server/config/cf/bsdi.cf
+lib/Server/config/cf/convex.cf
+lib/Server/config/cf/cray.cf
+lib/Server/config/cf/fujitsu.cf
+lib/Server/config/cf/generic.cf
+lib/Server/config/cf/gnu.cf
+lib/Server/config/cf/hp.cf
+lib/Server/config/cf/ibm.cf
+lib/Server/config/cf/isc.cf
+lib/Server/config/cf/linux.cf
+lib/Server/config/cf/luna.cf
+lib/Server/config/cf/macII.cf
+lib/Server/config/cf/mach.cf
+lib/Server/config/cf/minix.cf
+lib/Server/config/cf/moto.cf
+lib/Server/config/cf/ncr.cf
+lib/Server/config/cf/nec.cf
+lib/Server/config/cf/nto.cf
+lib/Server/config/cf/os2.cf
+lib/Server/config/cf/osf1.cf
+lib/Server/config/cf/pegasus.cf
+lib/Server/config/cf/sco.cf
+lib/Server/config/cf/sco5.cf
+lib/Server/config/cf/sequent.cf
+lib/Server/config/cf/sgi.cf
+lib/Server/config/cf/sony.cf
+lib/Server/config/cf/sun.cf
+lib/Server/config/cf/svr3.cf
+lib/Server/config/cf/svr4.cf
+lib/Server/config/cf/ultrix.cf
+lib/Server/config/cf/usl.cf
+lib/Server/config/cf/lynx.cf
+lib/Server/config/cf/x386.cf
+lib/Server/config/cf/QNX.cf
+lib/Server/config/cf/xfree86.cf
+lib/Server/config/cf/host.def
+lib/Server/config/imake/
+lib/Server/config/imake/imake
+lib/Server/config/makedepend/
+lib/Server/config/makedepend/makedepend
+lib/Server/config/util/
+lib/Server/config/util/mkdirhier.sh
+lib/Server/config/util/gccmakedep
+lib/Server/lib/
+lib/Server/lib/libXau.a
+lib/Server/lib/libXdmcp.a
+lib/Server/lib/liblbxutil.a
+lib/Server/lib/libfont.a
+lib/Server/lib/libdix.a
+lib/Server/lib/libxpstubs.a
+lib/Server/lib/libos.a
+lib/Server/lib/libmi.a
+lib/Server/lib/libcbrt.a
+lib/Server/lib/libprinter.a
+lib/Server/lib/ddxInit.o
+lib/Server/lib/libpcl.a
+lib/Server/lib/libps.a
+lib/Server/lib/libext.a
+lib/Server/lib/libxkb.a
+lib/Server/lib/libxinput.a
+lib/Server/lib/libdixie.a
+lib/Server/lib/libmixie.a
+lib/Server/lib/libdidipex.a
+lib/Server/lib/libdiswapex.a
+lib/Server/lib/libdiobpex.a
+lib/Server/lib/libddpex1.a
+lib/Server/lib/libddpex2.a
+lib/Server/lib/xaa8.o
+lib/Server/lib/libddpex3.a
+lib/Server/lib/libddpex4.a
+lib/Server/lib/libddpexs.a
+lib/Server/lib/libospex.a
+lib/Server/lib/libServerGlx.a
+lib/Server/lib/liblbx.a
+lib/Server/lib/libdbe.a
+lib/Server/lib/librecord.a
+lib/Server/lib/libmfb.a
+lib/Server/lib/libcfb.a
+lib/Server/lib/libcfb16.a
+lib/Server/lib/libcfb24.a
+lib/Server/lib/libcfb32.a
+lib/Server/lib/libxaa.a
+lib/Server/lib/xaavga256.o
+lib/Server/lib/xaa16.o
+lib/Server/lib/xaa24.o
+lib/Server/lib/xaa32.o
+lib/Server/lib/libxf86cache.a
+lib/Server/lib/libxnest.a
+lib/Server/miinitext.c
+lib/Server/xf86_Option.c
+lib/Server/XF86_SVGA.c
+lib/Server/XF86_VGA16.c
+lib/Server/XF86_S3.c
+lib/Server/XF86_GLINT.c
+lib/Server/cvga16.sh
+lib/Server/cvga256.sh
+lib/Server/VGADriverDoc/
+lib/Server/VGADriverDoc/vgaHW.c
+lib/Server/VGADriverDoc/VGADriver.Doc
+lib/Server/VGADriverDoc/Imakefile.stub
+lib/Server/VGADriverDoc/stub_driver.c
+lib/Server/VGADriverDoc/stub_bank.s
+lib/Server/confS3.sh
+lib/Server/confS3V.sh
+lib/Server/LinkKit.tmpl
+lib/Server/Imakefile
+lib/Server/xf86site.def
+lib/Server/mkmf
+lib/Server/README
+lib/Server/lib98/
+lib/Server/lib98/libxf86_os.a
+lib/Server/lib98/libxf86.a
+lib/Server/lib98/xf86Init.o
+lib/Server/lib98/xf86Init_m.o
+lib/Server/lib98/libxf86_hwgen.a
+lib/Server/lib98/libxf86_hwnec.a
+lib/Server/lib98/libxf86_hwpwskb.a
+lib/Server/lib98/libxf86_hwpwlb.a
+lib/Server/lib98/libxf86_hwga968.a
+lib/Server/drivers98/
+lib/Server/drivers98/libvga16.a
+lib/Server/drivers98/vga16/
+lib/Server/drivers98/vga16/Imakefile
+lib/Server/drivers98/vga16/generic/
+lib/Server/drivers98/vga16/generic/Imakefile
+lib/Server/drivers98/vga16/generic/gen_driver.c
+lib/Server/drivers98/vga16misc.o
+lib/Server/drivers98/libganbwap.a
+lib/Server/drivers98/libnec480.a
+lib/Server/drivers98/libnkvnec.a
+lib/Server/drivers98/libtrident.a
+lib/Server/drivers98/libmga.a
+lib/Server/drivers98/libvga256.a
+lib/Server/drivers98/libwabep.a
+lib/Server/drivers98/libwabs.a
+lib/Server/drivers98/libwsna.a
+lib/Server/drivers98/vga.h
+lib/Server/drivers98/vga256.h
+lib/Server/drivers98/vgaBank.h
+lib/Server/drivers98/vgaFasm.h
+lib/Server/drivers98/vgaPCI.h
+lib/Server/drivers98/vga256/
+lib/Server/drivers98/vga256/Imakefile
+lib/Server/drivers98/vga256/ganbwap/
+lib/Server/drivers98/vga256/ganbwap/cir_driver.c
+lib/Server/drivers98/vga256/ganbwap/cir_driver.h
+lib/Server/drivers98/vga256/ganbwap/cir_bank.s
+lib/Server/drivers98/vga256/ganbwap/cir_fill.c
+lib/Server/drivers98/vga256/ganbwap/cir_im.c
+lib/Server/drivers98/vga256/ganbwap/cir_blt.c
+lib/Server/drivers98/vga256/ganbwap/cir_bltC.c
+lib/Server/drivers98/vga256/ganbwap/cir_imblt.s
+lib/Server/drivers98/vga256/ganbwap/cir_textblt.s
+lib/Server/drivers98/vga256/ganbwap/cir_span.s
+lib/Server/drivers98/vga256/ganbwap/cir_colexp.c
+lib/Server/drivers98/vga256/ganbwap/cirFillSt.c
+lib/Server/drivers98/vga256/ganbwap/cir_solid.c
+lib/Server/drivers98/vga256/ganbwap/cir_teblt8.c
+lib/Server/drivers98/vga256/ganbwap/cirFillRct.c
+lib/Server/drivers98/vga256/ganbwap/cir_cursor.c
+lib/Server/drivers98/vga256/ganbwap/cir_blitter.c
+lib/Server/drivers98/vga256/ganbwap/cir_blitLG.c
+lib/Server/drivers98/vga256/ganbwap/cir_fillLG.c
+lib/Server/drivers98/vga256/ganbwap/cir_alloc.c
+lib/Server/drivers98/vga256/ganbwap/cir_blt16.c
+lib/Server/drivers98/vga256/ganbwap/cir_line.c
+lib/Server/drivers98/vga256/ganbwap/cir_orect.c
+lib/Server/drivers98/vga256/ganbwap/cirBlitter.h
+lib/Server/drivers98/vga256/ganbwap/cir_span.h
+lib/Server/drivers98/vga256/ganbwap/cir_alloc.h
+lib/Server/drivers98/vga256/ganbwap/cirBlitMM.h
+lib/Server/drivers98/vga256/ganbwap/cir_blitLG.h
+lib/Server/drivers98/vga256/ganbwap/cir_inline.h
+lib/Server/drivers98/vga256/ganbwap/cirrus_acl.c
+lib/Server/drivers98/vga256/ganbwap/laguna_acl.c
+lib/Server/drivers98/vga256/ganbwap/Imakefile
+lib/Server/drivers98/vga256/ganbwap/linearline.c
+lib/Server/drivers98/vga256/ganbwap/linearline.h
+lib/Server/drivers98/vga256/ganbwap/cir_pc98.c
+lib/Server/drivers98/vga256/nec480/
+lib/Server/drivers98/vga256/nec480/nec480_dr.c
+lib/Server/drivers98/vga256/nec480/bank.s
+lib/Server/drivers98/vga256/nec480/Imakefile
+lib/Server/drivers98/vga256/nkvnec/
+lib/Server/drivers98/vga256/nkvnec/cir_driver.c
+lib/Server/drivers98/vga256/nkvnec/cir_driver.h
+lib/Server/drivers98/vga256/nkvnec/cir_bank.s
+lib/Server/drivers98/vga256/nkvnec/cir_fill.c
+lib/Server/drivers98/vga256/nkvnec/cir_im.c
+lib/Server/drivers98/vga256/nkvnec/cir_blt.c
+lib/Server/drivers98/vga256/nkvnec/cir_bltC.c
+lib/Server/drivers98/vga256/nkvnec/cir_imblt.s
+lib/Server/drivers98/vga256/nkvnec/cir_textblt.s
+lib/Server/drivers98/vga256/nkvnec/cir_span.s
+lib/Server/drivers98/vga256/nkvnec/cir_colexp.c
+lib/Server/drivers98/vga256/nkvnec/cirFillSt.c
+lib/Server/drivers98/vga256/nkvnec/cir_solid.c
+lib/Server/drivers98/vga256/nkvnec/cir_teblt8.c
+lib/Server/drivers98/vga256/nkvnec/cirFillRct.c
+lib/Server/drivers98/vga256/nkvnec/cir_cursor.c
+lib/Server/drivers98/vga256/nkvnec/cir_blitter.c
+lib/Server/drivers98/vga256/nkvnec/cir_blitLG.c
+lib/Server/drivers98/vga256/nkvnec/cir_fillLG.c
+lib/Server/drivers98/vga256/nkvnec/cir_alloc.c
+lib/Server/drivers98/vga256/nkvnec/cir_blt16.c
+lib/Server/drivers98/vga256/nkvnec/cir_line.c
+lib/Server/drivers98/vga256/nkvnec/cir_orect.c
+lib/Server/drivers98/vga256/nkvnec/cirBlitter.h
+lib/Server/drivers98/vga256/nkvnec/cir_span.h
+lib/Server/drivers98/vga256/nkvnec/cir_alloc.h
+lib/Server/drivers98/vga256/nkvnec/cirBlitMM.h
+lib/Server/drivers98/vga256/nkvnec/cir_blitLG.h
+lib/Server/drivers98/vga256/nkvnec/cir_inline.h
+lib/Server/drivers98/vga256/nkvnec/cirrus_acl.c
+lib/Server/drivers98/vga256/nkvnec/laguna_acl.c
+lib/Server/drivers98/vga256/nkvnec/Imakefile
+lib/Server/drivers98/vga256/nkvnec/linearline.c
+lib/Server/drivers98/vga256/nkvnec/linearline.h
+lib/Server/drivers98/vga256/nkvnec/cir_pc98.c
+lib/Server/drivers98/vga256/wabs/
+lib/Server/drivers98/vga256/wabs/cir_driver.c
+lib/Server/drivers98/vga256/wabs/cir_driver.h
+lib/Server/drivers98/vga256/wabs/cir_bank.s
+lib/Server/drivers98/vga256/wabs/cir_fill.c
+lib/Server/drivers98/vga256/wabs/cir_im.c
+lib/Server/drivers98/vga256/wabs/cir_blt.c
+lib/Server/drivers98/vga256/wabs/cir_bltC.c
+lib/Server/drivers98/vga256/wabs/cir_imblt.s
+lib/Server/drivers98/vga256/wabs/cir_textblt.s
+lib/Server/drivers98/vga256/wabs/cir_span.s
+lib/Server/drivers98/vga256/wabs/cir_colexp.c
+lib/Server/drivers98/vga256/wabs/cirFillSt.c
+lib/Server/drivers98/vga256/wabs/cir_solid.c
+lib/Server/drivers98/vga256/wabs/cir_teblt8.c
+lib/Server/drivers98/vga256/wabs/cirFillRct.c
+lib/Server/drivers98/vga256/wabs/cir_cursor.c
+lib/Server/drivers98/vga256/wabs/cir_blitter.c
+lib/Server/drivers98/vga256/wabs/cir_blitLG.c
+lib/Server/drivers98/vga256/wabs/cir_fillLG.c
+lib/Server/drivers98/vga256/wabs/cir_alloc.c
+lib/Server/drivers98/vga256/wabs/cir_blt16.c
+lib/Server/drivers98/vga256/wabs/cir_line.c
+lib/Server/drivers98/vga256/wabs/cir_orect.c
+lib/Server/drivers98/vga256/wabs/cirBlitter.h
+lib/Server/drivers98/vga256/wabs/cir_span.h
+lib/Server/drivers98/vga256/wabs/cir_alloc.h
+lib/Server/drivers98/vga256/wabs/cirBlitMM.h
+lib/Server/drivers98/vga256/wabs/cir_blitLG.h
+lib/Server/drivers98/vga256/wabs/cir_inline.h
+lib/Server/drivers98/vga256/wabs/cirrus_acl.c
+lib/Server/drivers98/vga256/wabs/laguna_acl.c
+lib/Server/drivers98/vga256/wabs/Imakefile
+lib/Server/drivers98/vga256/wabs/linearline.c
+lib/Server/drivers98/vga256/wabs/linearline.h
+lib/Server/drivers98/vga256/wabs/cir_pc98.c
+lib/Server/drivers98/vga256/wabep/
+lib/Server/drivers98/vga256/wabep/cir_driver.c
+lib/Server/drivers98/vga256/wabep/cir_driver.h
+lib/Server/drivers98/vga256/wabep/cir_bank.s
+lib/Server/drivers98/vga256/wabep/cir_fill.c
+lib/Server/drivers98/vga256/wabep/cir_im.c
+lib/Server/drivers98/vga256/wabep/cir_blt.c
+lib/Server/drivers98/vga256/wabep/cir_bltC.c
+lib/Server/drivers98/vga256/wabep/cir_imblt.s
+lib/Server/drivers98/vga256/wabep/cir_textblt.s
+lib/Server/drivers98/vga256/wabep/cir_span.s
+lib/Server/drivers98/vga256/wabep/cir_colexp.c
+lib/Server/drivers98/vga256/wabep/cirFillSt.c
+lib/Server/drivers98/vga256/wabep/cir_solid.c
+lib/Server/drivers98/vga256/wabep/cir_teblt8.c
+lib/Server/drivers98/vga256/wabep/cirFillRct.c
+lib/Server/drivers98/vga256/wabep/cir_cursor.c
+lib/Server/drivers98/vga256/wabep/cir_blitter.c
+lib/Server/drivers98/vga256/wabep/cir_blitLG.c
+lib/Server/drivers98/vga256/wabep/cir_fillLG.c
+lib/Server/drivers98/vga256/wabep/cir_alloc.c
+lib/Server/drivers98/vga256/wabep/cir_blt16.c
+lib/Server/drivers98/vga256/wabep/cir_line.c
+lib/Server/drivers98/vga256/wabep/cir_orect.c
+lib/Server/drivers98/vga256/wabep/cirBlitter.h
+lib/Server/drivers98/vga256/wabep/cir_span.h
+lib/Server/drivers98/vga256/wabep/cir_alloc.h
+lib/Server/drivers98/vga256/wabep/cirBlitMM.h
+lib/Server/drivers98/vga256/wabep/cir_blitLG.h
+lib/Server/drivers98/vga256/wabep/cir_inline.h
+lib/Server/drivers98/vga256/wabep/cirrus_acl.c
+lib/Server/drivers98/vga256/wabep/laguna_acl.c
+lib/Server/drivers98/vga256/wabep/Imakefile
+lib/Server/drivers98/vga256/wabep/linearline.c
+lib/Server/drivers98/vga256/wabep/linearline.h
+lib/Server/drivers98/vga256/wabep/cir_pc98.c
+lib/Server/drivers98/vga256/wsna/
+lib/Server/drivers98/vga256/wsna/cir_driver.c
+lib/Server/drivers98/vga256/wsna/cir_driver.h
+lib/Server/drivers98/vga256/wsna/cir_bank.s
+lib/Server/drivers98/vga256/wsna/cir_fill.c
+lib/Server/drivers98/vga256/wsna/cir_im.c
+lib/Server/drivers98/vga256/wsna/cir_blt.c
+lib/Server/drivers98/vga256/wsna/cir_bltC.c
+lib/Server/drivers98/vga256/wsna/cir_imblt.s
+lib/Server/drivers98/vga256/wsna/cir_textblt.s
+lib/Server/drivers98/vga256/wsna/cir_span.s
+lib/Server/drivers98/vga256/wsna/cir_colexp.c
+lib/Server/drivers98/vga256/wsna/cirFillSt.c
+lib/Server/drivers98/vga256/wsna/cir_solid.c
+lib/Server/drivers98/vga256/wsna/cir_teblt8.c
+lib/Server/drivers98/vga256/wsna/cirFillRct.c
+lib/Server/drivers98/vga256/wsna/cir_cursor.c
+lib/Server/drivers98/vga256/wsna/cir_blitter.c
+lib/Server/drivers98/vga256/wsna/cir_blitLG.c
+lib/Server/drivers98/vga256/wsna/cir_fillLG.c
+lib/Server/drivers98/vga256/wsna/cir_alloc.c
+lib/Server/drivers98/vga256/wsna/cir_blt16.c
+lib/Server/drivers98/vga256/wsna/cir_line.c
+lib/Server/drivers98/vga256/wsna/cir_orect.c
+lib/Server/drivers98/vga256/wsna/cirBlitter.h
+lib/Server/drivers98/vga256/wsna/cir_span.h
+lib/Server/drivers98/vga256/wsna/cir_alloc.h
+lib/Server/drivers98/vga256/wsna/cirBlitMM.h
+lib/Server/drivers98/vga256/wsna/cir_blitLG.h
+lib/Server/drivers98/vga256/wsna/cir_inline.h
+lib/Server/drivers98/vga256/wsna/cirrus_acl.c
+lib/Server/drivers98/vga256/wsna/laguna_acl.c
+lib/Server/drivers98/vga256/wsna/Imakefile
+lib/Server/drivers98/vga256/wsna/linearline.c
+lib/Server/drivers98/vga256/wsna/linearline.h
+lib/Server/drivers98/vga256/wsna/cir_pc98.c
+lib/Server/drivers98/vga256/trident/
+lib/Server/drivers98/vga256/trident/t89_driver.c
+lib/Server/drivers98/vga256/trident/t89_driver.h
+lib/Server/drivers98/vga256/trident/bank.s
+lib/Server/drivers98/vga256/trident/tgui_curs.c
+lib/Server/drivers98/vga256/trident/tgui_accel.c
+lib/Server/drivers98/vga256/trident/tgui_oldacl.c
+lib/Server/drivers98/vga256/trident/tgui_drv.h
+lib/Server/drivers98/vga256/trident/tgui_ger.h
+lib/Server/drivers98/vga256/trident/tgui_mmio.h
+lib/Server/drivers98/vga256/trident/Imakefile
+lib/Server/drivers98/vga256/trident/pc98_tgui.h
+lib/Server/drivers98/vga256/trident/pc98_tgui.c
+lib/Server/drivers98/vga256/mga/
+lib/Server/drivers98/vga256/mga/mga.h
+lib/Server/drivers98/vga256/mga/mga_bios.h
+lib/Server/drivers98/vga256/mga/mga_reg.h
+lib/Server/drivers98/vga256/mga/mga_driver.c
+lib/Server/drivers98/vga256/mga/mga_hwcurs.c
+lib/Server/drivers98/vga256/mga/mga_storm.c
+lib/Server/drivers98/vga256/mga/mga_map.h
+lib/Server/drivers98/vga256/mga/mga_macros.h
+lib/Server/drivers98/vga256/mga/mga_dac3026.c
+lib/Server/drivers98/vga256/mga/mga_dac1064.c
+lib/Server/drivers98/vga256/mga/mga_dacG200.c
+lib/Server/drivers98/vga256/mga/mga_xaarepl.c
+lib/Server/drivers98/vga256/mga/Imakefile
+lib/Server/drivers98/vga256/svga/
+lib/Server/drivers98/vga256/svga/cir_driver.c
+lib/Server/drivers98/vga256/svga/cir_driver.h
+lib/Server/drivers98/vga256/svga/cir_bank.s
+lib/Server/drivers98/vga256/svga/cir_fill.c
+lib/Server/drivers98/vga256/svga/cir_im.c
+lib/Server/drivers98/vga256/svga/cir_blt.c
+lib/Server/drivers98/vga256/svga/cir_bltC.c
+lib/Server/drivers98/vga256/svga/cir_imblt.s
+lib/Server/drivers98/vga256/svga/cir_textblt.s
+lib/Server/drivers98/vga256/svga/cir_span.s
+lib/Server/drivers98/vga256/svga/cir_colexp.c
+lib/Server/drivers98/vga256/svga/cirFillSt.c
+lib/Server/drivers98/vga256/svga/cir_solid.c
+lib/Server/drivers98/vga256/svga/cir_teblt8.c
+lib/Server/drivers98/vga256/svga/cirFillRct.c
+lib/Server/drivers98/vga256/svga/cir_cursor.c
+lib/Server/drivers98/vga256/svga/cir_blitter.c
+lib/Server/drivers98/vga256/svga/cir_blitLG.c
+lib/Server/drivers98/vga256/svga/cir_fillLG.c
+lib/Server/drivers98/vga256/svga/cir_alloc.c
+lib/Server/drivers98/vga256/svga/cir_blt16.c
+lib/Server/drivers98/vga256/svga/cir_line.c
+lib/Server/drivers98/vga256/svga/cir_orect.c
+lib/Server/drivers98/vga256/svga/cirBlitter.h
+lib/Server/drivers98/vga256/svga/cir_span.h
+lib/Server/drivers98/vga256/svga/cir_alloc.h
+lib/Server/drivers98/vga256/svga/cirBlitMM.h
+lib/Server/drivers98/vga256/svga/cir_blitLG.h
+lib/Server/drivers98/vga256/svga/cir_inline.h
+lib/Server/drivers98/vga256/svga/cirrus_acl.c
+lib/Server/drivers98/vga256/svga/laguna_acl.c
+lib/Server/drivers98/vga256/svga/Imakefile
+lib/Server/drivers98/vga256/svga/linearline.c
+lib/Server/drivers98/vga256/svga/linearline.h
+lib/Server/drivers98/vga256/svga/cir_pc98.c
+lib/Server/drivers98/libs3nec.a
+lib/Server/drivers98/s3.h
+lib/Server/drivers98/regs3.h
+lib/Server/drivers98/newmmio.h
+lib/Server/drivers98/libs3necnewmmio.a
+lib/Server/drivers98/libs3necmmio.a
+lib/Server/drivers98/s3nec/
+lib/Server/drivers98/s3nec/Imakefile
+lib/Server/drivers98/s3nec/newmmio/
+lib/Server/drivers98/s3nec/newmmio/Imakefile
+lib/Server/drivers98/s3nec/newmmio/newmmio.c
+lib/Server/drivers98/s3nec/mmio_928/
+lib/Server/drivers98/s3nec/mmio_928/Imakefile
+lib/Server/drivers98/s3nec/mmio_928/mmio_928.c
+lib/Server/drivers98/s3nec/s3_generic/
+lib/Server/drivers98/s3nec/s3_generic/s3_generic.c
+lib/Server/drivers98/s3nec/s3_generic/Imakefile
+lib/Server/drivers98/libs3pwskb.a
+lib/Server/drivers98/libs3pwskbnewmmio.a
+lib/Server/drivers98/libs3pwskbmmio.a
+lib/Server/drivers98/s3pwskb/
+lib/Server/drivers98/s3pwskb/Imakefile
+lib/Server/drivers98/s3pwskb/newmmio/
+lib/Server/drivers98/s3pwskb/newmmio/Imakefile
+lib/Server/drivers98/s3pwskb/newmmio/newmmio.c
+lib/Server/drivers98/s3pwskb/mmio_928/
+lib/Server/drivers98/s3pwskb/mmio_928/Imakefile
+lib/Server/drivers98/s3pwskb/mmio_928/mmio_928.c
+lib/Server/drivers98/s3pwskb/s3_generic/
+lib/Server/drivers98/s3pwskb/s3_generic/s3_generic.c
+lib/Server/drivers98/s3pwskb/s3_generic/Imakefile
+lib/Server/drivers98/libs3pwlb.a
+lib/Server/drivers98/libs3pwlbnewmmio.a
+lib/Server/drivers98/libs3pwlbmmio.a
+lib/Server/drivers98/s3pwlb/
+lib/Server/drivers98/s3pwlb/Imakefile
+lib/Server/drivers98/s3pwlb/newmmio/
+lib/Server/drivers98/s3pwlb/newmmio/Imakefile
+lib/Server/drivers98/s3pwlb/newmmio/newmmio.c
+lib/Server/drivers98/s3pwlb/mmio_928/
+lib/Server/drivers98/s3pwlb/mmio_928/Imakefile
+lib/Server/drivers98/s3pwlb/mmio_928/mmio_928.c
+lib/Server/drivers98/s3pwlb/s3_generic/
+lib/Server/drivers98/s3pwlb/s3_generic/s3_generic.c
+lib/Server/drivers98/s3pwlb/s3_generic/Imakefile
+lib/Server/drivers98/libs3ga968.a
+lib/Server/drivers98/libs3ga968newmmio.a
+lib/Server/drivers98/libs3ga968mmio.a
+lib/Server/drivers98/s3ga968/
+lib/Server/drivers98/s3ga968/Imakefile
+lib/Server/drivers98/s3ga968/newmmio/
+lib/Server/drivers98/s3ga968/newmmio/Imakefile
+lib/Server/drivers98/s3ga968/newmmio/newmmio.c
+lib/Server/drivers98/s3ga968/mmio_928/
+lib/Server/drivers98/s3ga968/mmio_928/Imakefile
+lib/Server/drivers98/s3ga968/mmio_928/mmio_928.c
+lib/Server/drivers98/s3ga968/s3_generic/
+lib/Server/drivers98/s3ga968/s3_generic/s3_generic.c
+lib/Server/drivers98/s3ga968/s3_generic/Imakefile
+lib/Server/cnec480.sh
+lib/Server/ctgui.sh
+lib/Server/cmga.sh
diff --git a/release/scripts/X11/plists/i386/Xlkit.tgz.plist b/release/scripts/X11/plists/i386/Xlkit.tgz.plist
new file mode 100644
index 000000000000..ee1b8eae894d
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xlkit.tgz.plist
@@ -0,0 +1,854 @@
+lib/Server/
+lib/Server/include/
+lib/Server/include/X11/
+lib/Server/include/X11/X.h
+lib/Server/include/X11/Xalloca.h
+lib/Server/include/X11/Xfuncproto.h
+lib/Server/include/X11/Xfuncs.h
+lib/Server/include/X11/Xmd.h
+lib/Server/include/X11/Xos.h
+lib/Server/include/X11/Xosdefs.h
+lib/Server/include/X11/Xproto.h
+lib/Server/include/X11/Xprotostr.h
+lib/Server/include/X11/extensions/
+lib/Server/include/X11/extensions/saver.h
+lib/Server/include/X11/extensions/saverproto.h
+lib/Server/include/X11/extensions/scrnsaver.h
+lib/Server/include/X11/extensions/xf86vmode.h
+lib/Server/include/X11/extensions/xf86vmstr.h
+lib/Server/include/X11/extensions/xf86dga.h
+lib/Server/include/X11/extensions/xf86dgastr.h
+lib/Server/include/X11/extensions/xf86misc.h
+lib/Server/include/X11/extensions/xf86mscstr.h
+lib/Server/include/X11/extensions/lbxbuf.h
+lib/Server/include/X11/extensions/lbxbufstr.h
+lib/Server/include/X11/extensions/lbxdeltastr.h
+lib/Server/include/X11/extensions/lbximage.h
+lib/Server/include/X11/extensions/lbxopts.h
+lib/Server/include/X11/extensions/lbxstr.h
+lib/Server/include/X11/extensions/lbxzlib.h
+lib/Server/include/X11/extensions/dpms.h
+lib/Server/include/X11/extensions/dpmsstr.h
+lib/Server/include/fontstruct.h
+lib/Server/include/font.h
+lib/Server/include/fsmasks.h
+lib/Server/include/closure.h
+lib/Server/include/colormap.h
+lib/Server/include/colormapst.h
+lib/Server/include/cursor.h
+lib/Server/include/cursorstr.h
+lib/Server/include/dix.h
+lib/Server/include/dixfont.h
+lib/Server/include/dixfontstr.h
+lib/Server/include/dixstruct.h
+lib/Server/include/extension.h
+lib/Server/include/extnsionst.h
+lib/Server/include/gc.h
+lib/Server/include/gcstruct.h
+lib/Server/include/input.h
+lib/Server/include/inputstr.h
+lib/Server/include/misc.h
+lib/Server/include/miscstruct.h
+lib/Server/include/opaque.h
+lib/Server/include/os.h
+lib/Server/include/pixmap.h
+lib/Server/include/pixmapstr.h
+lib/Server/include/property.h
+lib/Server/include/resource.h
+lib/Server/include/region.h
+lib/Server/include/regionstr.h
+lib/Server/include/screenint.h
+lib/Server/include/scrnintstr.h
+lib/Server/include/servermd.h
+lib/Server/include/site.h
+lib/Server/include/validate.h
+lib/Server/include/window.h
+lib/Server/include/windowstr.h
+lib/Server/include/mi.h
+lib/Server/include/mibstore.h
+lib/Server/include/miline.h
+lib/Server/include/mipointer.h
+lib/Server/include/misprite.h
+lib/Server/include/mispritest.h
+lib/Server/include/mistruct.h
+lib/Server/include/fastblt.h
+lib/Server/include/mfb.h
+lib/Server/include/mergerop.h
+lib/Server/include/cfb.h
+lib/Server/include/cfb8bit.h
+lib/Server/include/cfbmap.h
+lib/Server/include/cfbmskbits.h
+lib/Server/include/xf86.h
+lib/Server/include/cfbrrop.h
+lib/Server/include/xf86Version.h
+lib/Server/include/assyntax.h
+lib/Server/include/xf86_OSlib.h
+lib/Server/include/xf86_OSproc.h
+lib/Server/include/xf86ExtInit.h
+lib/Server/include/xf86Priv.h
+lib/Server/include/xf86Procs.h
+lib/Server/include/xf86_Option.h
+lib/Server/include/xf86_Config.h
+lib/Server/include/xf86DCConf.h
+lib/Server/include/compiler.h
+lib/Server/include/cfb16.h
+lib/Server/include/cfb24.h
+lib/Server/include/cfb32.h
+lib/Server/include/xf86_HWlib.h
+lib/Server/include/xf86_PCI.h
+lib/Server/include/xf86cursor.h
+lib/Server/include/xf86expblt.h
+lib/Server/include/xf86local.h
+lib/Server/include/xf86scrin.h
+lib/Server/include/xf86xaa.h
+lib/Server/config/
+lib/Server/config/cf/
+lib/Server/config/cf/Imake.rules
+lib/Server/config/cf/Motif.rules
+lib/Server/config/cf/Win32.rules
+lib/Server/config/cf/X11.rules
+lib/Server/config/cf/bsdLib.rules
+lib/Server/config/cf/cde.rules
+lib/Server/config/cf/gnuLib.rules
+lib/Server/config/cf/hpLib.rules
+lib/Server/config/cf/ibmLib.rules
+lib/Server/config/cf/lnxLib.rules
+lib/Server/config/cf/lnxdoc.rules
+lib/Server/config/cf/necLib.rules
+lib/Server/config/cf/noop.rules
+lib/Server/config/cf/nto.rules
+lib/Server/config/cf/oldlib.rules
+lib/Server/config/cf/os2.rules
+lib/Server/config/cf/os2Lib.rules
+lib/Server/config/cf/osfLib.rules
+lib/Server/config/cf/scoLib.rules
+lib/Server/config/cf/sgiLib.rules
+lib/Server/config/cf/sunLib.rules
+lib/Server/config/cf/QNX.rules
+lib/Server/config/cf/sv3Lib.rules
+lib/Server/config/cf/sv4Lib.rules
+lib/Server/config/cf/xf86.rules
+lib/Server/config/cf/Imake.tmpl
+lib/Server/config/cf/Library.tmpl
+lib/Server/config/cf/Motif.tmpl
+lib/Server/config/cf/Server.tmpl
+lib/Server/config/cf/ServerLib.tmpl
+lib/Server/config/cf/Threads.tmpl
+lib/Server/config/cf/WinLib.tmpl
+lib/Server/config/cf/X11.tmpl
+lib/Server/config/cf/bsdLib.tmpl
+lib/Server/config/cf/cde.tmpl
+lib/Server/config/cf/hpLib.tmpl
+lib/Server/config/cf/gnuLib.tmpl
+lib/Server/config/cf/ibmLib.tmpl
+lib/Server/config/cf/lnxLib.tmpl
+lib/Server/config/cf/lnxdoc.tmpl
+lib/Server/config/cf/necLib.tmpl
+lib/Server/config/cf/os2Lib.tmpl
+lib/Server/config/cf/osfLib.tmpl
+lib/Server/config/cf/sgiLib.tmpl
+lib/Server/config/cf/sunLib.tmpl
+lib/Server/config/cf/sv3Lib.tmpl
+lib/Server/config/cf/sv4Lib.tmpl
+lib/Server/config/cf/xf86.tmpl
+lib/Server/config/cf/xf86site.def
+lib/Server/config/cf/site.def
+lib/Server/config/cf/Imake.cf
+lib/Server/config/cf/Amoeba.cf
+lib/Server/config/cf/DGUX.cf
+lib/Server/config/cf/FreeBSD.cf
+lib/Server/config/cf/Mips.cf
+lib/Server/config/cf/NetBSD.cf
+lib/Server/config/cf/OpenBSD.cf
+lib/Server/config/cf/Oki.cf
+lib/Server/config/cf/Win32.cf
+lib/Server/config/cf/apollo.cf
+lib/Server/config/cf/bsd.cf
+lib/Server/config/cf/bsdi.cf
+lib/Server/config/cf/convex.cf
+lib/Server/config/cf/cray.cf
+lib/Server/config/cf/fujitsu.cf
+lib/Server/config/cf/generic.cf
+lib/Server/config/cf/gnu.cf
+lib/Server/config/cf/hp.cf
+lib/Server/config/cf/ibm.cf
+lib/Server/config/cf/isc.cf
+lib/Server/config/cf/linux.cf
+lib/Server/config/cf/luna.cf
+lib/Server/config/cf/macII.cf
+lib/Server/config/cf/mach.cf
+lib/Server/config/cf/minix.cf
+lib/Server/config/cf/moto.cf
+lib/Server/config/cf/ncr.cf
+lib/Server/config/cf/nec.cf
+lib/Server/config/cf/nto.cf
+lib/Server/config/cf/os2.cf
+lib/Server/config/cf/osf1.cf
+lib/Server/config/cf/pegasus.cf
+lib/Server/config/cf/sco.cf
+lib/Server/config/cf/sco5.cf
+lib/Server/config/cf/sequent.cf
+lib/Server/config/cf/sgi.cf
+lib/Server/config/cf/sony.cf
+lib/Server/config/cf/sun.cf
+lib/Server/config/cf/svr3.cf
+lib/Server/config/cf/svr4.cf
+lib/Server/config/cf/ultrix.cf
+lib/Server/config/cf/usl.cf
+lib/Server/config/cf/lynx.cf
+lib/Server/config/cf/x386.cf
+lib/Server/config/cf/QNX.cf
+lib/Server/config/cf/xfree86.cf
+lib/Server/config/cf/host.def
+lib/Server/config/imake/
+lib/Server/config/imake/imake
+lib/Server/config/makedepend/
+lib/Server/config/makedepend/makedepend
+lib/Server/config/util/
+lib/Server/config/util/mkdirhier.sh
+lib/Server/config/util/gccmakedep
+lib/Server/lib/
+lib/Server/lib/libXau.a
+lib/Server/lib/libXdmcp.a
+lib/Server/lib/liblbxutil.a
+lib/Server/lib/libfont.a
+lib/Server/lib/libdix.a
+lib/Server/lib/libxpstubs.a
+lib/Server/lib/libos.a
+lib/Server/lib/libmi.a
+lib/Server/lib/libcbrt.a
+lib/Server/lib/libprinter.a
+lib/Server/lib/ddxInit.o
+lib/Server/lib/libpcl.a
+lib/Server/lib/libps.a
+lib/Server/lib/libext.a
+lib/Server/lib/libxkb.a
+lib/Server/lib/libxinput.a
+lib/Server/lib/libdixie.a
+lib/Server/lib/libmixie.a
+lib/Server/lib/libdidipex.a
+lib/Server/lib/libdiswapex.a
+lib/Server/lib/libdiobpex.a
+lib/Server/lib/libddpex1.a
+lib/Server/lib/libddpex2.a
+lib/Server/lib/xaa8.o
+lib/Server/lib/libddpex3.a
+lib/Server/lib/libddpex4.a
+lib/Server/lib/libddpexs.a
+lib/Server/lib/libospex.a
+lib/Server/lib/libServerGlx.a
+lib/Server/lib/liblbx.a
+lib/Server/lib/libdbe.a
+lib/Server/lib/librecord.a
+lib/Server/lib/libmfb.a
+lib/Server/lib/libcfb.a
+lib/Server/lib/libcfb16.a
+lib/Server/lib/libcfb24.a
+lib/Server/lib/libcfb32.a
+lib/Server/lib/libxaa.a
+lib/Server/lib/xaavga256.o
+lib/Server/lib/xaa16.o
+lib/Server/lib/xaa24.o
+lib/Server/lib/xaa32.o
+lib/Server/lib/libxf86cache.a
+lib/Server/lib/libxnest.a
+lib/Server/miinitext.c
+lib/Server/lib86/
+lib/Server/lib86/libxf86_os.a
+lib/Server/lib86/libxf86.a
+lib/Server/lib86/xf86Init.o
+lib/Server/lib86/xf86Init_m.o
+lib/Server/lib86/libxf86_hw.a
+lib/Server/xf86_Option.c
+lib/Server/XF86_SVGA.c
+lib/Server/XF86_VGA16.c
+lib/Server/XF86_Mono.c
+lib/Server/XF86_S3.c
+lib/Server/XF86_8514.c
+lib/Server/XF86_Mach8.c
+lib/Server/XF86_Mach32.c
+lib/Server/XF86_Mach64.c
+lib/Server/XF86_P9000.c
+lib/Server/XF86_AGX.c
+lib/Server/XF86_W32.c
+lib/Server/XF86_I128.c
+lib/Server/XF86_GLINT.c
+lib/Server/XF86_TGA.c
+lib/Server/drivers/
+lib/Server/drivers/IBMRGB.h
+lib/Server/drivers/Ti302X.h
+lib/Server/drivers/libvga2.a
+lib/Server/drivers/vga2misc.o
+lib/Server/drivers/vga2/
+lib/Server/drivers/vga2/Imakefile
+lib/Server/drivers/vga2/et4000/
+lib/Server/drivers/vga2/et4000/Imakefile
+lib/Server/drivers/vga2/et3000/
+lib/Server/drivers/vga2/et3000/Imakefile
+lib/Server/drivers/vga2/pvga1/
+lib/Server/drivers/vga2/pvga1/Imakefile
+lib/Server/drivers/vga2/gvga/
+lib/Server/drivers/vga2/gvga/Imakefile
+lib/Server/drivers/vga2/ati/
+lib/Server/drivers/vga2/ati/Imakefile
+lib/Server/drivers/vga2/sis/
+lib/Server/drivers/vga2/sis/Imakefile
+lib/Server/drivers/vga2/tvga8900/
+lib/Server/drivers/vga2/tvga8900/Imakefile
+lib/Server/drivers/vga2/cirrus/
+lib/Server/drivers/vga2/cirrus/Imakefile
+lib/Server/drivers/vga2/ncr77c22/
+lib/Server/drivers/vga2/ncr77c22/Imakefile
+lib/Server/drivers/vga2/oak/
+lib/Server/drivers/vga2/oak/Imakefile
+lib/Server/drivers/vga2/cl64xx/
+lib/Server/drivers/vga2/cl64xx/Imakefile
+lib/Server/drivers/vga2/generic/
+lib/Server/drivers/vga2/generic/Imakefile
+lib/Server/drivers/vga2/generic/gen_driver.c
+lib/Server/drivers/libmono.a
+lib/Server/drivers/mono.h
+lib/Server/drivers/mono/
+lib/Server/drivers/mono/Imakefile
+lib/Server/drivers/mono/hgc1280/
+lib/Server/drivers/mono/hgc1280/Imakefile
+lib/Server/drivers/mono/hgc1280/hgc1280HW.h
+lib/Server/drivers/mono/hgc1280/hgc1280driv.c
+lib/Server/drivers/mono/hgc1280/HGC1280.info
+lib/Server/drivers/mono/sigma/
+lib/Server/drivers/mono/sigma/Imakefile
+lib/Server/drivers/mono/sigma/sigmaHW.h
+lib/Server/drivers/mono/sigma/sigmadriv.c
+lib/Server/drivers/mono/apollo/
+lib/Server/drivers/mono/apollo/Imakefile
+lib/Server/drivers/mono/apollo/apolloHW.h
+lib/Server/drivers/mono/apollo/apollodriv.c
+lib/Server/drivers/mono/apollo/apolloBlt.c
+lib/Server/drivers/mono/hercules/
+lib/Server/drivers/mono/hercules/Imakefile
+lib/Server/drivers/mono/hercules/hercules.c
+lib/Server/drivers/libvga16.a
+lib/Server/drivers/vga16/
+lib/Server/drivers/vga16/Imakefile
+lib/Server/drivers/vga16/et4000/
+lib/Server/drivers/vga16/et4000/Imakefile
+lib/Server/drivers/vga16/et3000/
+lib/Server/drivers/vga16/et3000/Imakefile
+lib/Server/drivers/vga16/ncr77c22/
+lib/Server/drivers/vga16/ncr77c22/Imakefile
+lib/Server/drivers/vga16/ati/
+lib/Server/drivers/vga16/ati/Imakefile
+lib/Server/drivers/vga16/sis/
+lib/Server/drivers/vga16/sis/Imakefile
+lib/Server/drivers/vga16/tvga8900/
+lib/Server/drivers/vga16/tvga8900/Imakefile
+lib/Server/drivers/vga16/oak/
+lib/Server/drivers/vga16/oak/Imakefile
+lib/Server/drivers/vga16/cl64xx/
+lib/Server/drivers/vga16/cl64xx/Imakefile
+lib/Server/drivers/vga16/generic/
+lib/Server/drivers/vga16/generic/Imakefile
+lib/Server/drivers/vga16misc.o
+lib/Server/drivers/libvga256.a
+lib/Server/drivers/vga.h
+lib/Server/drivers/vga256.h
+lib/Server/drivers/vgaBank.h
+lib/Server/drivers/vgaFasm.h
+lib/Server/drivers/vgaPCI.h
+lib/Server/drivers/vga256/
+lib/Server/drivers/vga256/Imakefile
+lib/Server/drivers/vga256/nv/
+lib/Server/drivers/vga256/nv/Imakefile
+lib/Server/drivers/vga256/nv/nv1accel.c
+lib/Server/drivers/vga256/nv/nv1cursor.c
+lib/Server/drivers/vga256/nv/nv1driver.c
+lib/Server/drivers/vga256/nv/nv1ref.h
+lib/Server/drivers/vga256/nv/nv1setup.c
+lib/Server/drivers/vga256/nv/nv_driver.c
+lib/Server/drivers/vga256/nv/nvreg.h
+lib/Server/drivers/vga256/nv/nvvga.h
+lib/Server/drivers/vga256/nv/riva_hw.c
+lib/Server/drivers/vga256/nv/riva_hw.h
+lib/Server/drivers/vga256/nv/riva_tbl.h
+lib/Server/drivers/vga256/nv/riva_xaa.c
+lib/Server/drivers/vga256/nv/nvcursor.h
+lib/Server/drivers/vga256/nv/nvuser.h
+lib/Server/drivers/vga256/nv/README.RIVA
+lib/Server/drivers/vga256/et4000/
+lib/Server/drivers/vga256/et4000/et4_driver.c
+lib/Server/drivers/vga256/et4000/et4_accel.c
+lib/Server/drivers/vga256/et4000/tseng_acl.c
+lib/Server/drivers/vga256/et4000/tseng_acl.h
+lib/Server/drivers/vga256/et4000/tseng_inline.h
+lib/Server/drivers/vga256/et4000/tseng_colexp.c
+lib/Server/drivers/vga256/et4000/tseng_colexp.h
+lib/Server/drivers/vga256/et4000/tseng_ramdac.c
+lib/Server/drivers/vga256/et4000/tseng_clock.c
+lib/Server/drivers/vga256/et4000/tseng_cursor.c
+lib/Server/drivers/vga256/et4000/tseng_cursor.h
+lib/Server/drivers/vga256/et4000/tseng.h
+lib/Server/drivers/vga256/et4000/bank.s
+lib/Server/drivers/vga256/et4000/tseng_dpms.c
+lib/Server/drivers/vga256/et4000/Imakefile
+lib/Server/drivers/vga256/et3000/
+lib/Server/drivers/vga256/et3000/et3_driver.c
+lib/Server/drivers/vga256/et3000/bank.s
+lib/Server/drivers/vga256/et3000/Imakefile
+lib/Server/drivers/vga256/pvga1/
+lib/Server/drivers/vga256/pvga1/paradise.h
+lib/Server/drivers/vga256/pvga1/pvg_driver.c
+lib/Server/drivers/vga256/pvga1/bank.s
+lib/Server/drivers/vga256/pvga1/pvgablt.c
+lib/Server/drivers/vga256/pvga1/pvgasolid.c
+lib/Server/drivers/vga256/pvga1/pvgaBitBlt.c
+lib/Server/drivers/vga256/pvga1/pvgapntwin.c
+lib/Server/drivers/vga256/pvga1/Imakefile
+lib/Server/drivers/vga256/gvga/
+lib/Server/drivers/vga256/gvga/gvg_driver.c
+lib/Server/drivers/vga256/gvga/bank.s
+lib/Server/drivers/vga256/gvga/Imakefile
+lib/Server/drivers/vga256/r128/
+lib/Server/drivers/vga256/r128/Imakefile
+lib/Server/drivers/vga256/r128/r128.h
+lib/Server/drivers/vga256/r128/r128_accel.c
+lib/Server/drivers/vga256/r128/r128_cursor.c
+lib/Server/drivers/vga256/r128/r128_driver.c
+lib/Server/drivers/vga256/r128/r128_reg.h
+lib/Server/drivers/vga256/ati/
+lib/Server/drivers/vga256/ati/Imakefile
+lib/Server/drivers/vga256/ati/ati.c
+lib/Server/drivers/vga256/ati/ati.h
+lib/Server/drivers/vga256/ati/atiadapter.c
+lib/Server/drivers/vga256/ati/atiadapter.h
+lib/Server/drivers/vga256/ati/atiadjust.c
+lib/Server/drivers/vga256/ati/atiadjust.h
+lib/Server/drivers/vga256/ati/atibank.c
+lib/Server/drivers/vga256/ati/atibank.h
+lib/Server/drivers/vga256/ati/atibanks.s
+lib/Server/drivers/vga256/ati/atibus.c
+lib/Server/drivers/vga256/ati/atibus.h
+lib/Server/drivers/vga256/ati/atichip.c
+lib/Server/drivers/vga256/ati/atichip.h
+lib/Server/drivers/vga256/ati/aticlock.c
+lib/Server/drivers/vga256/ati/aticlock.h
+lib/Server/drivers/vga256/ati/aticmap.c
+lib/Server/drivers/vga256/ati/aticmap.h
+lib/Server/drivers/vga256/ati/aticonsole.c
+lib/Server/drivers/vga256/ati/aticonsole.h
+lib/Server/drivers/vga256/ati/aticrtc.c
+lib/Server/drivers/vga256/ati/aticrtc.h
+lib/Server/drivers/vga256/ati/atidac.c
+lib/Server/drivers/vga256/ati/atidac.h
+lib/Server/drivers/vga256/ati/atidepth.h
+lib/Server/drivers/vga256/ati/atidsp.c
+lib/Server/drivers/vga256/ati/atidsp.h
+lib/Server/drivers/vga256/ati/atifbinit.c
+lib/Server/drivers/vga256/ati/atifbinit.h
+lib/Server/drivers/vga256/ati/atigetmode.c
+lib/Server/drivers/vga256/ati/atigetmode.h
+lib/Server/drivers/vga256/ati/atiident.c
+lib/Server/drivers/vga256/ati/atiident.h
+lib/Server/drivers/vga256/ati/atiio.c
+lib/Server/drivers/vga256/ati/atiio.h
+lib/Server/drivers/vga256/ati/atimach64.c
+lib/Server/drivers/vga256/ati/atimach64.h
+lib/Server/drivers/vga256/ati/atimono.h
+lib/Server/drivers/vga256/ati/atiprint.c
+lib/Server/drivers/vga256/ati/atiprint.h
+lib/Server/drivers/vga256/ati/atiprobe.c
+lib/Server/drivers/vga256/ati/atiprobe.h
+lib/Server/drivers/vga256/ati/atiproto.h
+lib/Server/drivers/vga256/ati/atiregs.h
+lib/Server/drivers/vga256/ati/atireset.c
+lib/Server/drivers/vga256/ati/atireset.h
+lib/Server/drivers/vga256/ati/atiscrinit.c
+lib/Server/drivers/vga256/ati/atiscrinit.h
+lib/Server/drivers/vga256/ati/atiutil.c
+lib/Server/drivers/vga256/ati/atiutil.h
+lib/Server/drivers/vga256/ati/ativalid.c
+lib/Server/drivers/vga256/ati/ativalid.h
+lib/Server/drivers/vga256/ati/ativersion.h
+lib/Server/drivers/vga256/ati/ativga.c
+lib/Server/drivers/vga256/ati/ativga.h
+lib/Server/drivers/vga256/ati/atividmem.c
+lib/Server/drivers/vga256/ati/atividmem.h
+lib/Server/drivers/vga256/ati/atiwonder.c
+lib/Server/drivers/vga256/ati/atiwonder.h
+lib/Server/drivers/vga256/sis/
+lib/Server/drivers/vga256/sis/sis86c201.c
+lib/Server/drivers/vga256/sis/sis_bank.s
+lib/Server/drivers/vga256/sis/sis_curs.c
+lib/Server/drivers/vga256/sis/Imakefile
+lib/Server/drivers/vga256/sis/sis_accel.c
+lib/Server/drivers/vga256/sis/sis_accel2.c
+lib/Server/drivers/vga256/sis/sis_blt16.c
+lib/Server/drivers/vga256/sis/sis_blitter.c
+lib/Server/drivers/vga256/sis/sis_BitBlt.c
+lib/Server/drivers/vga256/sis/sis_solid.c
+lib/Server/drivers/vga256/sis/sis_Blitter.h
+lib/Server/drivers/vga256/sis/sis_Blitter2.h
+lib/Server/drivers/vga256/sis/sis_driver.h
+lib/Server/drivers/vga256/sis/sis_pntwin.c
+lib/Server/drivers/vga256/sis/sis_FillRct.c
+lib/Server/drivers/vga256/sis/sis_FillSt.c
+lib/Server/drivers/vga256/sis/sis_colexp.c
+lib/Server/drivers/vga256/sis/sis_teblt8.c
+lib/Server/drivers/vga256/sis/sis_textblt.s
+lib/Server/drivers/vga256/tvga8900/
+lib/Server/drivers/vga256/tvga8900/t89_driver.c
+lib/Server/drivers/vga256/tvga8900/t89_driver.h
+lib/Server/drivers/vga256/tvga8900/bank.s
+lib/Server/drivers/vga256/tvga8900/tgui_curs.c
+lib/Server/drivers/vga256/tvga8900/tgui_drv.h
+lib/Server/drivers/vga256/tvga8900/tgui_ger.h
+lib/Server/drivers/vga256/tvga8900/tgui_mmio.h
+lib/Server/drivers/vga256/tvga8900/tgui_accel.c
+lib/Server/drivers/vga256/tvga8900/tgui_oldacl.c
+lib/Server/drivers/vga256/tvga8900/Imakefile
+lib/Server/drivers/vga256/cirrus/
+lib/Server/drivers/vga256/cirrus/cir_driver.c
+lib/Server/drivers/vga256/cirrus/cir_driver.h
+lib/Server/drivers/vga256/cirrus/cir_bank.s
+lib/Server/drivers/vga256/cirrus/cir_fill.c
+lib/Server/drivers/vga256/cirrus/cir_im.c
+lib/Server/drivers/vga256/cirrus/cir_blt.c
+lib/Server/drivers/vga256/cirrus/cir_bltC.c
+lib/Server/drivers/vga256/cirrus/cir_imblt.s
+lib/Server/drivers/vga256/cirrus/cir_textblt.s
+lib/Server/drivers/vga256/cirrus/cir_span.s
+lib/Server/drivers/vga256/cirrus/cir_colexp.c
+lib/Server/drivers/vga256/cirrus/cirFillSt.c
+lib/Server/drivers/vga256/cirrus/cir_solid.c
+lib/Server/drivers/vga256/cirrus/cir_teblt8.c
+lib/Server/drivers/vga256/cirrus/cirFillRct.c
+lib/Server/drivers/vga256/cirrus/cir_cursor.c
+lib/Server/drivers/vga256/cirrus/cir_blitter.c
+lib/Server/drivers/vga256/cirrus/cir_blitLG.c
+lib/Server/drivers/vga256/cirrus/cir_fillLG.c
+lib/Server/drivers/vga256/cirrus/cir_alloc.c
+lib/Server/drivers/vga256/cirrus/cir_blt16.c
+lib/Server/drivers/vga256/cirrus/cir_line.c
+lib/Server/drivers/vga256/cirrus/cir_orect.c
+lib/Server/drivers/vga256/cirrus/cirBlitter.h
+lib/Server/drivers/vga256/cirrus/cir_span.h
+lib/Server/drivers/vga256/cirrus/cir_alloc.h
+lib/Server/drivers/vga256/cirrus/cirBlitMM.h
+lib/Server/drivers/vga256/cirrus/cir_blitLG.h
+lib/Server/drivers/vga256/cirrus/cir_inline.h
+lib/Server/drivers/vga256/cirrus/cirrus_acl.c
+lib/Server/drivers/vga256/cirrus/laguna_acl.c
+lib/Server/drivers/vga256/cirrus/Imakefile
+lib/Server/drivers/vga256/cirrus/linearline.c
+lib/Server/drivers/vga256/cirrus/linearline.h
+lib/Server/drivers/vga256/ncr77c22/
+lib/Server/drivers/vga256/ncr77c22/ncr_driver.c
+lib/Server/drivers/vga256/ncr77c22/ncr_bank.s
+lib/Server/drivers/vga256/ncr77c22/Imakefile
+lib/Server/drivers/vga256/compaq/
+lib/Server/drivers/vga256/compaq/cpq_driver.c
+lib/Server/drivers/vga256/compaq/cpq_bank.s
+lib/Server/drivers/vga256/compaq/Imakefile
+lib/Server/drivers/vga256/mga/
+lib/Server/drivers/vga256/mga/mga.h
+lib/Server/drivers/vga256/mga/mga_bios.h
+lib/Server/drivers/vga256/mga/mga_reg.h
+lib/Server/drivers/vga256/mga/mga_driver.c
+lib/Server/drivers/vga256/mga/mga_hwcurs.c
+lib/Server/drivers/vga256/mga/mga_storm.c
+lib/Server/drivers/vga256/mga/mga_map.h
+lib/Server/drivers/vga256/mga/mga_macros.h
+lib/Server/drivers/vga256/mga/mga_dac3026.c
+lib/Server/drivers/vga256/mga/mga_dac1064.c
+lib/Server/drivers/vga256/mga/mga_dacG200.c
+lib/Server/drivers/vga256/mga/mga_xaarepl.c
+lib/Server/drivers/vga256/mga/Imakefile
+lib/Server/drivers/vga256/oak/
+lib/Server/drivers/vga256/oak/oak_driver.c
+lib/Server/drivers/vga256/oak/oak_driver.h
+lib/Server/drivers/vga256/oak/oak_bank.s
+lib/Server/drivers/vga256/oak/oti87_fill.c
+lib/Server/drivers/vga256/oak/oti87_sol.c
+lib/Server/drivers/vga256/oak/oti87_bltC.c
+lib/Server/drivers/vga256/oak/oak_colexp.s
+lib/Server/drivers/vga256/oak/Imakefile
+lib/Server/drivers/vga256/al2101/
+lib/Server/drivers/vga256/al2101/al_driver.c
+lib/Server/drivers/vga256/al2101/al_bank.s
+lib/Server/drivers/vga256/al2101/Imakefile
+lib/Server/drivers/vga256/ali/
+lib/Server/drivers/vga256/ali/ali_driver.c
+lib/Server/drivers/vga256/ali/ali_bank.s
+lib/Server/drivers/vga256/ali/Imakefile
+lib/Server/drivers/vga256/cl64xx/
+lib/Server/drivers/vga256/cl64xx/cl_driver.c
+lib/Server/drivers/vga256/cl64xx/cl_bank.s
+lib/Server/drivers/vga256/cl64xx/Imakefile
+lib/Server/drivers/vga256/video7/
+lib/Server/drivers/vga256/video7/v7_driver.c
+lib/Server/drivers/vga256/video7/v7_bank.s
+lib/Server/drivers/vga256/video7/Imakefile
+lib/Server/drivers/vga256/ark/
+lib/Server/drivers/vga256/ark/ark_driver.c
+lib/Server/drivers/vga256/ark/ark_driver.h
+lib/Server/drivers/vga256/ark/ark_bank.s
+lib/Server/drivers/vga256/ark/ark_cop.h
+lib/Server/drivers/vga256/ark/ark_cursor.c
+lib/Server/drivers/vga256/ark/ark_cursor.h
+lib/Server/drivers/vga256/ark/ark_bitblt.c
+lib/Server/drivers/vga256/ark/ark_blt16.c
+lib/Server/drivers/vga256/ark/ark_accel.c
+lib/Server/drivers/vga256/ark/Imakefile
+lib/Server/drivers/vga256/mx/
+lib/Server/drivers/vga256/mx/mx_driver.c
+lib/Server/drivers/vga256/mx/mx_bank.s
+lib/Server/drivers/vga256/mx/Imakefile
+lib/Server/drivers/vga256/realtek/
+lib/Server/drivers/vga256/realtek/rt_driver.c
+lib/Server/drivers/vga256/realtek/rt_bank.s
+lib/Server/drivers/vga256/realtek/Imakefile
+lib/Server/drivers/vga256/s3v/
+lib/Server/drivers/vga256/s3v/s3v_driver.c
+lib/Server/drivers/vga256/s3v/s3v_accel.c
+lib/Server/drivers/vga256/s3v/s3v_misc.c
+lib/Server/drivers/vga256/s3v/s3v_cursor.c
+lib/Server/drivers/vga256/s3v/regs3v.h
+lib/Server/drivers/vga256/s3v/newmmio.h
+lib/Server/drivers/vga256/s3v/s3v_driver.h
+lib/Server/drivers/vga256/s3v/s3v_rop.h
+lib/Server/drivers/vga256/s3v/Imakefile
+lib/Server/drivers/vga256/apm/
+lib/Server/drivers/vga256/apm/apm_driver.c
+lib/Server/drivers/vga256/apm/apm_accel.c
+lib/Server/drivers/vga256/apm/apm_bank.s
+lib/Server/drivers/vga256/apm/apm_cursor.c
+lib/Server/drivers/vga256/apm/apm.h
+lib/Server/drivers/vga256/apm/Imakefile
+lib/Server/drivers/vga256/s3_svga/
+lib/Server/drivers/vga256/s3_svga/newmmio.h
+lib/Server/drivers/vga256/s3_svga/s3.h
+lib/Server/drivers/vga256/s3_svga/s3Bt485.h
+lib/Server/drivers/vga256/s3_svga/s3ELSA.h
+lib/Server/drivers/vga256/s3_svga/s3reg.h
+lib/Server/drivers/vga256/s3_svga/IBMRGBCurs.c
+lib/Server/drivers/vga256/s3_svga/Ti3026Curs.c
+lib/Server/drivers/vga256/s3_svga/s3BtCursor.c
+lib/Server/drivers/vga256/s3_svga/s3ELSA.c
+lib/Server/drivers/vga256/s3_svga/s3TiCursor.c
+lib/Server/drivers/vga256/s3_svga/s3accel.c
+lib/Server/drivers/vga256/s3_svga/s3cursor.c
+lib/Server/drivers/vga256/s3_svga/s3driver.c
+lib/Server/drivers/vga256/s3_svga/s3fbinit.c
+lib/Server/drivers/vga256/s3_svga/s3init.c
+lib/Server/drivers/vga256/s3_svga/s3misc.c
+lib/Server/drivers/vga256/s3_svga/s3probe.c
+lib/Server/drivers/vga256/s3_svga/s3ramdacs.c
+lib/Server/drivers/vga256/s3_svga/s3save.c
+lib/Server/drivers/vga256/s3_svga/s3bank.s
+lib/Server/drivers/vga256/s3_svga/Imakefile
+lib/Server/drivers/vga256/s3sav/
+lib/Server/drivers/vga256/s3sav/Imakefile
+lib/Server/drivers/vga256/s3sav/lrmi.c
+lib/Server/drivers/vga256/s3sav/lrmi.h
+lib/Server/drivers/vga256/s3sav/newmmio.h
+lib/Server/drivers/vga256/s3sav/regs3sav.h
+lib/Server/drivers/vga256/s3sav/s3bitblt.c
+lib/Server/drivers/vga256/s3sav/s3bitmap.c
+lib/Server/drivers/vga256/s3sav/s3sav_accel.c
+lib/Server/drivers/vga256/s3sav/s3sav_cursor.c
+lib/Server/drivers/vga256/s3sav/s3sav_driver.c
+lib/Server/drivers/vga256/s3sav/s3sav_driver.h
+lib/Server/drivers/vga256/s3sav/s3sav_misc.c
+lib/Server/drivers/vga256/s3sav/s3sav_rop.h
+lib/Server/drivers/vga256/s3sav/s3sav_vbe.c
+lib/Server/drivers/vga256/s3sav/vbe.h
+lib/Server/drivers/vga256/neo/
+lib/Server/drivers/vga256/neo/neo.h
+lib/Server/drivers/vga256/neo/neo_macros.h
+lib/Server/drivers/vga256/neo/neo_reg.h
+lib/Server/drivers/vga256/neo/neo_driver.c
+lib/Server/drivers/vga256/neo/neo_cursor.c
+lib/Server/drivers/vga256/neo/neo_bank.s
+lib/Server/drivers/vga256/neo/neo_2070.c
+lib/Server/drivers/vga256/neo/neo_2090.c
+lib/Server/drivers/vga256/neo/neo_2097.c
+lib/Server/drivers/vga256/neo/neo_2200.c
+lib/Server/drivers/vga256/neo/Imakefile
+lib/Server/drivers/vga256/chips/
+lib/Server/drivers/vga256/chips/ct_driver.c
+lib/Server/drivers/vga256/chips/ct_bank.s
+lib/Server/drivers/vga256/chips/ct_BitBlt.c
+lib/Server/drivers/vga256/chips/ct_FillRct.c
+lib/Server/drivers/vga256/chips/ct_cursor.c
+lib/Server/drivers/vga256/chips/ct_blt16.c
+lib/Server/drivers/vga256/chips/ct_blitter.c
+lib/Server/drivers/vga256/chips/ct_line.c
+lib/Server/drivers/vga256/chips/ct_lline.c
+lib/Server/drivers/vga256/chips/ct_solid.c
+lib/Server/drivers/vga256/chips/ct_FillSt.c
+lib/Server/drivers/vga256/chips/ct_alloc.c
+lib/Server/drivers/vga256/chips/ct_pci.c
+lib/Server/drivers/vga256/chips/Imakefile
+lib/Server/drivers/vga256/chips/ct_BltHiQV.h
+lib/Server/drivers/vga256/chips/ct_BlitMM.h
+lib/Server/drivers/vga256/chips/ct_Blitter.h
+lib/Server/drivers/vga256/chips/ct_driver.h
+lib/Server/drivers/vga256/chips/ct_lline.h
+lib/Server/drivers/vga256/chips/ct_teblt8.c
+lib/Server/drivers/vga256/chips/ct_textblt.s
+lib/Server/drivers/vga256/chips/ct_colexp.c
+lib/Server/drivers/vga256/chips/ct_accel.c
+lib/Server/drivers/vga256/cyrix/
+lib/Server/drivers/vga256/cyrix/cyrix.h
+lib/Server/drivers/vga256/cyrix/cyrix_accel.c
+lib/Server/drivers/vga256/cyrix/cyrix_cmap.c
+lib/Server/drivers/vga256/cyrix/cyrix_cursor.c
+lib/Server/drivers/vga256/cyrix/cyrix_driver.c
+lib/Server/drivers/vga256/cyrix/cyrix_bank.s
+lib/Server/drivers/vga256/cyrix/cyrix_asm.s
+lib/Server/drivers/vga256/cyrix/gxrender.c
+lib/Server/drivers/vga256/cyrix/Imakefile
+lib/Server/drivers/vga256/rendition/
+lib/Server/drivers/vga256/rendition/Imakefile
+lib/Server/drivers/vga256/rendition/cscode.h
+lib/Server/drivers/vga256/rendition/hwcursor.c
+lib/Server/drivers/vga256/rendition/hwcursor.h
+lib/Server/drivers/vga256/rendition/rendition_driver.c
+lib/Server/drivers/vga256/rendition/v1kregs.h
+lib/Server/drivers/vga256/rendition/v1krisc.c
+lib/Server/drivers/vga256/rendition/v1krisc.h
+lib/Server/drivers/vga256/rendition/v2kregs.h
+lib/Server/drivers/vga256/rendition/vboard.c
+lib/Server/drivers/vga256/rendition/vboard.h
+lib/Server/drivers/vga256/rendition/vgafont-std.data
+lib/Server/drivers/vga256/rendition/vgafont-vrx.data
+lib/Server/drivers/vga256/rendition/vgapalette.data
+lib/Server/drivers/vga256/rendition/vloaduc.c
+lib/Server/drivers/vga256/rendition/vloaduc.h
+lib/Server/drivers/vga256/rendition/vmodes.c
+lib/Server/drivers/vga256/rendition/vmodes.h
+lib/Server/drivers/vga256/rendition/vos.h
+lib/Server/drivers/vga256/rendition/vramdac.c
+lib/Server/drivers/vga256/rendition/vramdac.h
+lib/Server/drivers/vga256/rendition/vtest.c
+lib/Server/drivers/vga256/rendition/vtypes.h
+lib/Server/drivers/vga256/rendition/vvga.c
+lib/Server/drivers/vga256/rendition/vvga.h
+lib/Server/drivers/vga256/p9x00/
+lib/Server/drivers/vga256/p9x00/p9x00Driver.c
+lib/Server/drivers/vga256/p9x00/p9x00Driver.h
+lib/Server/drivers/vga256/p9x00/p9x00Access.c
+lib/Server/drivers/vga256/p9x00/p9x00Access.h
+lib/Server/drivers/vga256/p9x00/p9x00Probe.c
+lib/Server/drivers/vga256/p9x00/p9x00Probe.h
+lib/Server/drivers/vga256/p9x00/p9x00Regs.h
+lib/Server/drivers/vga256/p9x00/p9x00VGA.c
+lib/Server/drivers/vga256/p9x00/p9x00VGA.h
+lib/Server/drivers/vga256/p9x00/p9x00VGARegs.h
+lib/Server/drivers/vga256/p9x00/p9x00ICD2061A.c
+lib/Server/drivers/vga256/p9x00/p9x00ICD2061A.h
+lib/Server/drivers/vga256/p9x00/p9x00Includes.h
+lib/Server/drivers/vga256/p9x00/p9x00DAC.c
+lib/Server/drivers/vga256/p9x00/p9x00DAC.h
+lib/Server/drivers/vga256/p9x00/p9x00XAA.c
+lib/Server/drivers/vga256/p9x00/p9x00XAA.h
+lib/Server/drivers/vga256/p9x00/Imakefile
+lib/Server/drivers/vga256/spc8110/
+lib/Server/drivers/vga256/spc8110/spc_driver.c
+lib/Server/drivers/vga256/spc8110/spc_driver.h
+lib/Server/drivers/vga256/spc8110/spc_accel.c
+lib/Server/drivers/vga256/spc8110/spc_cursor.c
+lib/Server/drivers/vga256/spc8110/spc_bank.s
+lib/Server/drivers/vga256/spc8110/Imakefile
+lib/Server/drivers/vga256/i740/
+lib/Server/drivers/vga256/i740/Imakefile
+lib/Server/drivers/vga256/i740/i740.h
+lib/Server/drivers/vga256/i740/i740_accel.c
+lib/Server/drivers/vga256/i740/i740_cmap.c
+lib/Server/drivers/vga256/i740/i740_cursor.c
+lib/Server/drivers/vga256/i740/i740_driver.c
+lib/Server/drivers/vga256/i740/i740_macros.h
+lib/Server/drivers/vga256/i740/i740_reg.h
+lib/Server/drivers/vga256/i810/
+lib/Server/drivers/vga256/i810/Imakefile
+lib/Server/drivers/vga256/i810/i810.h
+lib/Server/drivers/vga256/i810/i810_accel.c
+lib/Server/drivers/vga256/i810/i810_cmap.c
+lib/Server/drivers/vga256/i810/i810_cursor.c
+lib/Server/drivers/vga256/i810/i810_driver.c
+lib/Server/drivers/vga256/i810/i810_reg.h
+lib/Server/drivers/vga256/tdfx/
+lib/Server/drivers/vga256/tdfx/vb.h
+lib/Server/drivers/vga256/tdfx/vbdefs.h
+lib/Server/drivers/vga256/tdfx/vb_driver.c
+lib/Server/drivers/vga256/tdfx/vb_hwcurs.c
+lib/Server/drivers/vga256/tdfx/vb_vgahw.c
+lib/Server/drivers/vga256/tdfx/vb_accel.c
+lib/Server/drivers/vga256/tdfx/Imakefile
+lib/Server/drivers/vga256/smi/
+lib/Server/drivers/vga256/smi/smi_driver.c
+lib/Server/drivers/vga256/smi/smi_accel.c
+lib/Server/drivers/vga256/smi/smi_misc.c
+lib/Server/drivers/vga256/smi/smi_cursor.c
+lib/Server/drivers/vga256/smi/regsmi.h
+lib/Server/drivers/vga256/smi/mmio.h
+lib/Server/drivers/vga256/smi/smi_driver.h
+lib/Server/drivers/vga256/smi/smi_rop.h
+lib/Server/drivers/vga256/smi/Imakefile
+lib/Server/drivers/vga256/generic/
+lib/Server/drivers/vga256/generic/gen_driver.c
+lib/Server/drivers/vga256/generic/Imakefile
+lib/Server/drivers/libs3.a
+lib/Server/drivers/newmmio.h
+lib/Server/drivers/regs3.h
+lib/Server/drivers/s3.h
+lib/Server/drivers/libs3newmmio.a
+lib/Server/drivers/libs3mmio.a
+lib/Server/drivers/s3/
+lib/Server/drivers/s3/Imakefile
+lib/Server/drivers/s3/newmmio/
+lib/Server/drivers/s3/newmmio/Imakefile
+lib/Server/drivers/s3/newmmio/newmmio.c
+lib/Server/drivers/s3/mmio_928/
+lib/Server/drivers/s3/mmio_928/Imakefile
+lib/Server/drivers/s3/mmio_928/mmio_928.c
+lib/Server/drivers/s3/s3_generic/
+lib/Server/drivers/s3/s3_generic/s3_generic.c
+lib/Server/drivers/s3/s3_generic/Imakefile
+lib/Server/drivers/libs3v.a
+lib/Server/drivers/s3v.h
+lib/Server/drivers/regs3v.h
+lib/Server/drivers/s3_virge/
+lib/Server/drivers/s3_virge/Imakefile
+lib/Server/drivers/s3_virge/s3_virge/
+lib/Server/drivers/s3_virge/s3_virge/s3_virge.c
+lib/Server/drivers/s3_virge/s3_virge/Imakefile
+lib/Server/drivers/lib8514.a
+lib/Server/drivers/libmach8.a
+lib/Server/drivers/libmach32.a
+lib/Server/drivers/libmach64.a
+lib/Server/drivers/libp9000.a
+lib/Server/drivers/libagx.a
+lib/Server/drivers/libw32cfb.a
+lib/Server/drivers/libw32asm.a
+lib/Server/drivers/libw32.a
+lib/Server/drivers/libi128.a
+lib/Server/drivers/libglint.a
+lib/Server/confvga2.sh
+lib/Server/confmono.sh
+lib/Server/cvga16.sh
+lib/Server/cvga256.sh
+lib/Server/VGADriverDoc/
+lib/Server/VGADriverDoc/vgaHW.c
+lib/Server/VGADriverDoc/VGADriver.Doc
+lib/Server/VGADriverDoc/Imakefile.stub
+lib/Server/VGADriverDoc/stub_driver.c
+lib/Server/VGADriverDoc/stub_bank.s
+lib/Server/confS3.sh
+lib/Server/confS3V.sh
+lib/Server/confw32.sh
+lib/Server/LinkKit.tmpl
+lib/Server/Imakefile
+lib/Server/xf86site.def
+lib/Server/mkmf
+lib/Server/README
+lib/Server/cmga.sh
diff --git a/release/scripts/X11/plists/i386/Xman.tgz.plist b/release/scripts/X11/plists/i386/Xman.tgz.plist
new file mode 100644
index 000000000000..79c1114ea052
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xman.tgz.plist
@@ -0,0 +1,1090 @@
+man/
+man/man1/
+man/man1/imake.1.gz
+man/man1/lndir.1.gz
+man/man1/makedepend.1.gz
+man/man1/xmkmf.1.gz
+man/man1/makestrs.1.gz
+man/man1/makeg.1.gz
+man/man1/bmtoa.1.gz
+man/man1/mkdirhier.1.gz
+man/man1/appres.1.gz
+man/man1/bdftopcf.1.gz
+man/man1/bitmap.1.gz
+man/man1/atobm.1.gz
+man/man1/proxymngr.1.gz
+man/man1/beforelight.1.gz
+man/man1/editres.1.gz
+man/man1/fsinfo.1.gz
+man/man1/fslsfonts.1.gz
+man/man1/fstobdf.1.gz
+man/man1/iceauth.1.gz
+man/man1/mkfontdir.1.gz
+man/man1/oclock.1.gz
+man/man1/showrgb.1.gz
+man/man1/rstart.1.gz
+man/man1/rstartd.1.gz
+man/man1/smproxy.1.gz
+man/man1/twm.1.gz
+man/man1/x11perf.1.gz
+man/man1/xauth.1.gz
+man/man1/x11perfcomp.1.gz
+man/man1/xcutsel.1.gz
+man/man1/xclipboard.1.gz
+man/man1/xclock.1.gz
+man/man1/xcmsdb.1.gz
+man/man1/xconsole.1.gz
+man/man1/xdm.1.gz
+man/man1/sessreg.1.gz
+man/man1/xdpyinfo.1.gz
+man/man1/dga.1.gz
+man/man1/xfd.1.gz
+man/man1/xfwp.1.gz
+man/man1/xfindproxy.1.gz
+man/man1/xhost.1.gz
+man/man1/xieperf.1.gz
+man/man1/xinit.1.gz
+man/man1/startx.1.gz
+man/man1/setxkbmap.1.gz
+man/man1/xkbcomp.1.gz
+man/man1/xkbevd.1.gz
+man/man1/xkbprint.1.gz
+man/man1/xkill.1.gz
+man/man1/xlogo.1.gz
+man/man1/xlsatoms.1.gz
+man/man1/xlsfonts.1.gz
+man/man1/xlsclients.1.gz
+man/man1/xmag.1.gz
+man/man1/xmh.1.gz
+man/man1/xmodmap.1.gz
+man/man1/xprop.1.gz
+man/man1/xrdb.1.gz
+man/man1/xrefresh.1.gz
+man/man1/xrx.1.gz
+man/man1/xset.1.gz
+man/man1/xsetroot.1.gz
+man/man1/xsm.1.gz
+man/man1/xstdcmap.1.gz
+man/man1/xsetmode.1.gz
+man/man1/xterm.1.gz
+man/man1/xsetpointer.1.gz
+man/man1/resize.1.gz
+man/man1/xvidtune.1.gz
+man/man1/xwd.1.gz
+man/man1/xwininfo.1.gz
+man/man1/xwud.1.gz
+man/man1/Xserver.1.gz
+man/man1/XFree86.1.gz
+man/man1/XF86_Mono.1.gz
+man/man1/XF86_SVGA.1.gz
+man/man1/XF86_VGA16.1.gz
+man/man1/XF86_S3.1.gz
+man/man1/XF86_Accel.1.gz
+man/man1/XF86_Mach32.1.gz
+man/man1/XF86_Mach64.1.gz
+man/man1/XF86_P9000.1.gz
+man/man1/XF86_Mach8.1.gz
+man/man1/XF86_8514.1.gz
+man/man1/XF86_AGX.1.gz
+man/man1/XF86_W32.1.gz
+man/man1/XF86_I128.1.gz
+man/man1/reconfig.1.gz
+man/man1/xf86config.1.gz
+man/man1/kbd_mode.1.gz
+man/man1/Xvfb.1.gz
+man/man1/SuperProbe.1.gz
+man/man1/xf98config.1.gz
+man/man1/Xnest.1.gz
+man/man1/lbxproxy.1.gz
+man/man1/xon.1.gz
+man/man1/ico.1.gz
+man/man1/listres.1.gz
+man/man1/showfont.1.gz
+man/man1/viewres.1.gz
+man/man1/xbiff.1.gz
+man/man1/xcalc.1.gz
+man/man1/xditview.1.gz
+man/man1/xedit.1.gz
+man/man1/xev.1.gz
+man/man1/xeyes.1.gz
+man/man1/xfontsel.1.gz
+man/man1/xgc.1.gz
+man/man1/xload.1.gz
+man/man1/xman.1.gz
+man/man1/xmessage.1.gz
+man/man5/
+man/man5/XF86Config.5.gz
+man/man3/
+man/man3/XF86DGA.3.gz
+man/man3/XF86Misc.3.gz
+man/man3/XF86MiscQueryExtension.3.gz
+man/man3/XF86VidMode.3.gz
+man/man3/XF86DGAQueryExtension.3.gz
+man/man3/XF86DGAQueryVersion.3.gz
+man/man3/XF86DGAQueryDirectVideo.3.gz
+man/man3/XF86DGAGetVideo.3.gz
+man/man3/XF86DGADirectVideo.3.gz
+man/man3/XF86DGASetVidPage.3.gz
+man/man3/XF86DGASetViewPort.3.gz
+man/man3/XF86DGAViewPortChanged.3.gz
+man/man3/XF86DGAInstallColormap.3.gz
+man/man3/XF86DGAForkApp.3.gz
+man/man3/XF86MiscQueryVersion.3.gz
+man/man3/XF86MiscGetSaver.3.gz
+man/man3/XF86MiscSetSaver.3.gz
+man/man3/XF86MiscGetMouseSettings.3.gz
+man/man3/XF86MiscSetMouseSettings.3.gz
+man/man3/XF86MiscGetKbdSettings.3.gz
+man/man3/XF86MiscSetKbdSettings.3.gz
+man/man3/XF86VidModeQueryExtension.3.gz
+man/man3/XF86VidModeQueryVersion.3.gz
+man/man3/XF86VidModeGetModeLine.3.gz
+man/man3/XF86VidModeGetAllModeLines.3.gz
+man/man3/XF86VidModeModModeLine.3.gz
+man/man3/XF86VidModeSwitchMode.3.gz
+man/man3/XF86VidModeLockModeSwitch.3.gz
+man/man3/X.3.gz
+man/man3/XF86VidModeGetMonitor.3.gz
+man/man3/BlackPixel.3.gz
+man/man3/XConsortium.3.gz
+man/man3/XStandards.3.gz
+man/man3/Xsecurity.3.gz
+man/man3/AllPlanes.3.gz
+man/man3/WhitePixel.3.gz
+man/man3/ConnectionNumber.3.gz
+man/man3/DefaultColormap.3.gz
+man/man3/DefaultDepth.3.gz
+man/man3/XListDepths.3.gz
+man/man3/DefaultGC.3.gz
+man/man3/DefaultRootWindow.3.gz
+man/man3/DefaultScreenOfDisplay.3.gz
+man/man3/DefaultScreen.3.gz
+man/man3/DefaultVisual.3.gz
+man/man3/DisplayCells.3.gz
+man/man3/DisplayPlanes.3.gz
+man/man3/DisplayString.3.gz
+man/man3/XMaxRequestSize.3.gz
+man/man3/XExtendedMaxRequestSize.3.gz
+man/man3/LastKnownRequestProcessed.3.gz
+man/man3/NextRequest.3.gz
+man/man3/ProtocolVersion.3.gz
+man/man3/ProtocolRevision.3.gz
+man/man3/QLength.3.gz
+man/man3/RootWindow.3.gz
+man/man3/ScreenCount.3.gz
+man/man3/ScreenOfDisplay.3.gz
+man/man3/ServerVendor.3.gz
+man/man3/VendorRelease.3.gz
+man/man3/WhitePixelOfScreen.3.gz
+man/man3/BlackPixelOfScreen.3.gz
+man/man3/CellsOfScreen.3.gz
+man/man3/BitmapPad.3.gz
+man/man3/DefaultColormapOfScreen.3.gz
+man/man3/DefaultDepthOfScreen.3.gz
+man/man3/DefaultGCOfScreen.3.gz
+man/man3/DefaultVisualOfScreen.3.gz
+man/man3/DoesBackingStore.3.gz
+man/man3/DoesSaveUnders.3.gz
+man/man3/DisplayOfScreen.3.gz
+man/man3/XScreenNumberOfScreen.3.gz
+man/man3/EventMaskOfScreen.3.gz
+man/man3/HeightOfScreen.3.gz
+man/man3/HeightMMOfScreen.3.gz
+man/man3/MaxCmapsOfScreen.3.gz
+man/man3/MinCmapsOfScreen.3.gz
+man/man3/PlanesOfScreen.3.gz
+man/man3/RootWindowOfScreen.3.gz
+man/man3/BitmapUnit.3.gz
+man/man3/WidthOfScreen.3.gz
+man/man3/WidthMMOfScreen.3.gz
+man/man3/DisplayOfCCC.3.gz
+man/man3/VisualOfCCC.3.gz
+man/man3/ScreenNumberOfCCC.3.gz
+man/man3/ScreenWhitePointOfCCC.3.gz
+man/man3/ClientWhitePointOfCCC.3.gz
+man/man3/BitmapBitOrder.3.gz
+man/man3/ImageByteOrder.3.gz
+man/man3/DisplayHeight.3.gz
+man/man3/DisplayHeightMM.3.gz
+man/man3/DisplayWidth.3.gz
+man/man3/DisplayWidthMM.3.gz
+man/man3/XListPixmapFormats.3.gz
+man/man3/XPixmapFormatValues.3.gz
+man/man3/IsPFKey.3.gz
+man/man3/IsCursorKey.3.gz
+man/man3/IsFunctionKey.3.gz
+man/man3/IsKeypadKey.3.gz
+man/man3/IsMiscFunctionKey.3.gz
+man/man3/IsModiferKey.3.gz
+man/man3/IsPrivateKeypadKey.3.gz
+man/man3/XSetClassHint.3.gz
+man/man3/XAllocClassHint.3.gz
+man/man3/XGetClassHint.3.gz
+man/man3/XClassHint.3.gz
+man/man3/XSetIconSizes.3.gz
+man/man3/XAllocIconSize.3.gz
+man/man3/XGetIconSizes.3.gz
+man/man3/XIconSize.3.gz
+man/man3/XSetRGBColormaps.3.gz
+man/man3/XAllocStandardColormap.3.gz
+man/man3/XGetRGBColormaps.3.gz
+man/man3/XStandardColormap.3.gz
+man/man3/XSizeHints.3.gz
+man/man3/XAllocSizeHints.3.gz
+man/man3/XSetWMNormalHints.3.gz
+man/man3/XGetWMNormalHints.3.gz
+man/man3/XSetWMSizeHints.3.gz
+man/man3/XGetWMSizeHints.3.gz
+man/man3/XWMHints.3.gz
+man/man3/XAllocWMHints.3.gz
+man/man3/XSetWMHints.3.gz
+man/man3/XGetWMHints.3.gz
+man/man3/XEvent.3.gz
+man/man3/XAddHost.3.gz
+man/man3/XAddHosts.3.gz
+man/man3/XListHosts.3.gz
+man/man3/XRemoveHost.3.gz
+man/man3/XRemoveHosts.3.gz
+man/man3/XSetAccessControl.3.gz
+man/man3/XEnableAccessControl.3.gz
+man/man3/XDisableAccessControl.3.gz
+man/man3/XHostAddress.3.gz
+man/man3/XAnyEvent.3.gz
+man/man3/XAllocColor.3.gz
+man/man3/XAllocNamedColor.3.gz
+man/man3/XAllocColorCells.3.gz
+man/man3/XAllocColorPlanes.3.gz
+man/man3/XFreeColors.3.gz
+man/man3/XAllowEvents.3.gz
+man/man3/XKeyEvent.3.gz
+man/man3/XButtonEvent.3.gz
+man/man3/XMotionEvent.3.gz
+man/man3/XGetKeyboardControl.3.gz
+man/man3/XChangeKeyboardControl.3.gz
+man/man3/XAutoRepeatOn.3.gz
+man/man3/XAutoRepeatOff.3.gz
+man/man3/XBell.3.gz
+man/man3/XQueryKeymap.3.gz
+man/man3/XKeyboardControl.3.gz
+man/man3/XGetKeyboardMapping.3.gz
+man/man3/XChangeKeyboardMapping.3.gz
+man/man3/XDisplayKeycodes.3.gz
+man/man3/XSetModifierMapping.3.gz
+man/man3/XGetModifierMapping.3.gz
+man/man3/XNewModifiermap.3.gz
+man/man3/XInsertModifiermapEntry.3.gz
+man/man3/XDeleteModifiermapEntry.3.gz
+man/man3/XFreeModifierMap.3.gz
+man/man3/XModifierKeymap.3.gz
+man/man3/XGetPointerControl.3.gz
+man/man3/XClientMessageEvent.3.gz
+man/man3/XAddToSaveSet.3.gz
+man/man3/XChangePointerControl.3.gz
+man/man3/XChangeSaveSet.3.gz
+man/man3/XRemoveFromSaveSet.3.gz
+man/man3/XSetWindowBackground.3.gz
+man/man3/XChangeWindowAttributes.3.gz
+man/man3/XSetWindowBackgroundPixmap.3.gz
+man/man3/XSetWindowBorder.3.gz
+man/man3/XSetWindowBorderPixmap.3.gz
+man/man3/XSetWindowColormap.3.gz
+man/man3/XClearWindow.3.gz
+man/man3/XCreateWindowEvent.3.gz
+man/man3/XCirculateEvent.3.gz
+man/man3/XClearArea.3.gz
+man/man3/XCirculateRequestEvent.3.gz
+man/man3/XMoveWindow.3.gz
+man/man3/XNoOp.3.gz
+man/man3/XColormapEvent.3.gz
+man/man3/XConfigureEvent.3.gz
+man/man3/XConfigureWindow.3.gz
+man/man3/XConfigureRequestEvent.3.gz
+man/man3/XResizeWindow.3.gz
+man/man3/XMoveResizeWindow.3.gz
+man/man3/XSetWindowBorderWidth.3.gz
+man/man3/XWindowChanges.3.gz
+man/man3/XColor.3.gz
+man/man3/XCopyArea.3.gz
+man/man3/XCopyPlane.3.gz
+man/man3/XFreeColormap.3.gz
+man/man3/XCreateColormap.3.gz
+man/man3/XCopyColormapAndFree.3.gz
+man/man3/XCreateFontCursor.3.gz
+man/man3/XCreatePixmapCursor.3.gz
+man/man3/XFreeFontSet.3.gz
+man/man3/XCreateGlyphCursor.3.gz
+man/man3/XCreateFontSet.3.gz
+man/man3/XArc.3.gz
+man/man3/XCreateGC.3.gz
+man/man3/XCopyGC.3.gz
+man/man3/XChangeGC.3.gz
+man/man3/XGetGCValues.3.gz
+man/man3/XFreeGC.3.gz
+man/man3/XGContextFromGC.3.gz
+man/man3/XGCValues.3.gz
+man/man3/XCreateIC.3.gz
+man/man3/XDestroyIC.3.gz
+man/man3/XIMOfIC.3.gz
+man/man3/XGetPixel.3.gz
+man/man3/XInitImage.3.gz
+man/man3/XCreateImage.3.gz
+man/man3/XPutPixel.3.gz
+man/man3/XSubImage.3.gz
+man/man3/XAddPixel.3.gz
+man/man3/XDestroyImage.3.gz
+man/man3/XCreateOC.3.gz
+man/man3/XDestroyOC.3.gz
+man/man3/XSetOCValues.3.gz
+man/man3/XGetOCValues.3.gz
+man/man3/XOMOfOC.3.gz
+man/man3/XSetRegion.3.gz
+man/man3/XCreatePixmap.3.gz
+man/man3/XFreePixmap.3.gz
+man/man3/XCreateRegion.3.gz
+man/man3/XDestroyRegion.3.gz
+man/man3/XDrawArc.3.gz
+man/man3/XCreateWindow.3.gz
+man/man3/XCreateSimpleWindow.3.gz
+man/man3/XSetWindowAttributes.3.gz
+man/man3/XDefineCursor.3.gz
+man/man3/XCrossingEvent.3.gz
+man/man3/XUndefineCursor.3.gz
+man/man3/XDestroyWindowEvent.3.gz
+man/man3/XDrawArcs.3.gz
+man/man3/XDestroyWindow.3.gz
+man/man3/XDestroySubwindows.3.gz
+man/man3/XDrawLines.3.gz
+man/man3/XDrawImageString.3.gz
+man/man3/XDrawImageString16.3.gz
+man/man3/XDrawLine.3.gz
+man/man3/XDrawSegments.3.gz
+man/man3/XSegment.3.gz
+man/man3/XPoint.3.gz
+man/man3/XDrawPoint.3.gz
+man/man3/XDrawPoints.3.gz
+man/man3/XRectangle.3.gz
+man/man3/XDrawRectangle.3.gz
+man/man3/XDrawRectangles.3.gz
+man/man3/XDrawString.3.gz
+man/man3/XDrawString16.3.gz
+man/man3/XDrawText.3.gz
+man/man3/XDrawText16.3.gz
+man/man3/XTextItem.3.gz
+man/man3/XTextItem16.3.gz
+man/man3/XFillArc.3.gz
+man/man3/XEmptyRegion.3.gz
+man/man3/XEqualRegion.3.gz
+man/man3/XPointInRegion.3.gz
+man/man3/XRectInRegion.3.gz
+man/man3/XErrorEvent.3.gz
+man/man3/XrmEnumerateDatabase.3.gz
+man/man3/XExtentsOfFontSet.3.gz
+man/man3/XExposeEvent.3.gz
+man/man3/XFilterEvent.3.gz
+man/man3/XFocusChangeEvent.3.gz
+man/man3/XFillPolygon.3.gz
+man/man3/XFontSetExtents.3.gz
+man/man3/XFillRectangle.3.gz
+man/man3/XFillRectangles.3.gz
+man/man3/XFillArcs.3.gz
+man/man3/XSync.3.gz
+man/man3/XFlush.3.gz
+man/man3/XEventsQueued.3.gz
+man/man3/XPending.3.gz
+man/man3/XFree.3.gz
+man/man3/XFontsOfFontSet.3.gz
+man/man3/XBaseFontNameListOfFontSet.3.gz
+man/man3/XLocaleOfFontSet.3.gz
+man/man3/XContextDependentDrawing.3.gz
+man/man3/XContextualDrawing.3.gz
+man/man3/XDirectionalDependentDrawing.3.gz
+man/man3/XNoExposeEvent.3.gz
+man/man3/XGraphicsExposeEvent.3.gz
+man/man3/XrmPutFileDatabase.3.gz
+man/man3/XGravityEvent.3.gz
+man/man3/XrmGetFileDatabase.3.gz
+man/man3/XrmGetStringDatabase.3.gz
+man/man3/XrmLocaleOfDatabase.3.gz
+man/man3/XrmGetDatabase.3.gz
+man/man3/XrmSetDatabase.3.gz
+man/man3/XrmDestroyDatabase.3.gz
+man/man3/XVisualInfo.3.gz
+man/man3/XrmGetResource.3.gz
+man/man3/XrmQGetResource.3.gz
+man/man3/XrmQGetSearchList.3.gz
+man/man3/XrmQGetSearchResource.3.gz
+man/man3/XGetVisualInfo.3.gz
+man/man3/XMatchVisualInfo.3.gz
+man/man3/XVisualIDFromVisual.3.gz
+man/man3/XGetGeometry.3.gz
+man/man3/XGetWindowAttributes.3.gz
+man/man3/XWindowAttributes.3.gz
+man/man3/XListProperties.3.gz
+man/man3/XGetWindowProperty.3.gz
+man/man3/XChangeProperty.3.gz
+man/man3/XRotateWindowProperties.3.gz
+man/man3/XDeleteProperty.3.gz
+man/man3/XUngrabKey.3.gz
+man/man3/XGrabButton.3.gz
+man/man3/XUngrabButton.3.gz
+man/man3/XGrabKey.3.gz
+man/man3/XGrabKeyboard.3.gz
+man/man3/XUngrabKeyboard.3.gz
+man/man3/XGrabPointer.3.gz
+man/man3/XUngrabPointer.3.gz
+man/man3/XChangeActivePointerGrab.3.gz
+man/man3/XGrabServer.3.gz
+man/man3/XUngrabServer.3.gz
+man/man3/XCheckIfEvent.3.gz
+man/man3/XIconifyWindow.3.gz
+man/man3/XWithdrawWindow.3.gz
+man/man3/XReconfigureWMWindow.3.gz
+man/man3/XIfEvent.3.gz
+man/man3/XPeekIfEvent.3.gz
+man/man3/XrmValue.3.gz
+man/man3/XrmInitialize.3.gz
+man/man3/XrmParseCommand.3.gz
+man/man3/XrmOptionKind.3.gz
+man/man3/XrmOptionDescRec.3.gz
+man/man3/XInstallColormap.3.gz
+man/man3/XUninstallColormap.3.gz
+man/man3/XListInstalledColormaps.3.gz
+man/man3/XRemoveConnectionWatch.3.gz
+man/man3/XAddConnectionWatch.3.gz
+man/man3/XProcessInternalConnection.3.gz
+man/man3/XInternalConnectionNumbers.3.gz
+man/man3/XUnionRegion.3.gz
+man/man3/XIntersectRegion.3.gz
+man/man3/XUnionRectWithRegion.3.gz
+man/man3/XSubtractRegion.3.gz
+man/man3/XXorRegion.3.gz
+man/man3/XOffsetRegion.3.gz
+man/man3/XShrinkRegion.3.gz
+man/man3/XInternAtom.3.gz
+man/man3/XInternAtoms.3.gz
+man/man3/XGetAtomName.3.gz
+man/man3/XGetAtomNames.3.gz
+man/man3/XKeymapEvent.3.gz
+man/man3/XListFonts.3.gz
+man/man3/XFreeFontNames.3.gz
+man/man3/XListFontsWithInfo.3.gz
+man/man3/XFreeFontInfo.3.gz
+man/man3/XLoadFont.3.gz
+man/man3/XQueryFont.3.gz
+man/man3/XLoadQueryFont.3.gz
+man/man3/XFreeFont.3.gz
+man/man3/XGetFontProperty.3.gz
+man/man3/XUnloadFont.3.gz
+man/man3/XCharStruct.3.gz
+man/man3/XFontProp.3.gz
+man/man3/XChar2b.3.gz
+man/man3/XFontStruct.3.gz
+man/man3/XLookupKeysym.3.gz
+man/man3/XRefreshKeyboardMapping.3.gz
+man/man3/XLookupString.3.gz
+man/man3/XRebindKeySym.3.gz
+man/man3/XrmCombineFileDatabase.3.gz
+man/man3/XrmMergeDatabases.3.gz
+man/man3/XrmCombineDatabase.3.gz
+man/man3/XMapEvent.3.gz
+man/man3/XMappingEvent.3.gz
+man/man3/XMapRaised.3.gz
+man/man3/XMapRequestEvent.3.gz
+man/man3/XMapWindow.3.gz
+man/man3/XMapSubwindows.3.gz
+man/man3/XPeekEvent.3.gz
+man/man3/XNextEvent.3.gz
+man/man3/XWindowEvent.3.gz
+man/man3/XCheckWindowEvent.3.gz
+man/man3/XMaskEvent.3.gz
+man/man3/XCheckMaskEvent.3.gz
+man/man3/XCheckTypedEvent.3.gz
+man/man3/XCheckTypedWindowEvent.3.gz
+man/man3/XCloseIM.3.gz
+man/man3/XOpenDisplay.3.gz
+man/man3/XCloseDisplay.3.gz
+man/man3/XOpenIM.3.gz
+man/man3/XSetIMValues.3.gz
+man/man3/XGetIMValues.3.gz
+man/man3/XDisplayOfIM.3.gz
+man/man3/XLocaleOfIM.3.gz
+man/man3/XRegisterIMInstantiateCallback.3.gz
+man/man3/XUnregisterIMInstantiateCallback.3.gz
+man/man3/XOpenOM.3.gz
+man/man3/XCloseOM.3.gz
+man/man3/XSetOMValues.3.gz
+man/man3/XGetOMValues.3.gz
+man/man3/XDisplayOfOM.3.gz
+man/man3/XLocaleOfOM.3.gz
+man/man3/XWMGeometry.3.gz
+man/man3/XPropertyEvent.3.gz
+man/man3/XParseGeometry.3.gz
+man/man3/XClipBox.3.gz
+man/man3/XGetImage.3.gz
+man/man3/XPolygonRegion.3.gz
+man/man3/XPutBackEvent.3.gz
+man/man3/XPutImage.3.gz
+man/man3/XGetSubImage.3.gz
+man/man3/XQueryBestTile.3.gz
+man/man3/XrmPutResource.3.gz
+man/man3/XrmQPutResource.3.gz
+man/man3/XrmPutStringResource.3.gz
+man/man3/XrmQPutStringResource.3.gz
+man/man3/XrmPutLineResource.3.gz
+man/man3/XQueryBestSize.3.gz
+man/man3/XQueryBestStipple.3.gz
+man/man3/XQueryColor.3.gz
+man/man3/XQueryColors.3.gz
+man/man3/XLookupColor.3.gz
+man/man3/XParseColor.3.gz
+man/man3/XQueryPointer.3.gz
+man/man3/XCreateBitmapFromData.3.gz
+man/man3/XQueryTree.3.gz
+man/man3/XRaiseWindow.3.gz
+man/man3/XReparentEvent.3.gz
+man/man3/XScreenResourceString.3.gz
+man/man3/XResourceManagerString.3.gz
+man/man3/XLowerWindow.3.gz
+man/man3/XResizeRequestEvent.3.gz
+man/man3/XCirculateSubwindows.3.gz
+man/man3/XCirculateSubwindowsUp.3.gz
+man/man3/XCirculateSubwindowsDown.3.gz
+man/man3/XRestackWindows.3.gz
+man/man3/XReadBitmapFile.3.gz
+man/man3/XReadBitmapFileData.3.gz
+man/man3/XWriteBitmapFile.3.gz
+man/man3/XCreatePixmapFromBitmapData.3.gz
+man/man3/XFreeCursor.3.gz
+man/man3/XRecolorCursor.3.gz
+man/man3/XQueryBestCursor.3.gz
+man/man3/XFindContext.3.gz
+man/man3/XReparentWindow.3.gz
+man/man3/XSaveContext.3.gz
+man/man3/XSelectionClearEvent.3.gz
+man/man3/XDeleteContext.3.gz
+man/man3/XUniqueContext.3.gz
+man/man3/XUnsetICFocus.3.gz
+man/man3/XSelectionEvent.3.gz
+man/man3/XSetICFocus.3.gz
+man/man3/XDisplayName.3.gz
+man/man3/XSetICValues.3.gz
+man/man3/XGetICValues.3.gz
+man/man3/XSelectInput.3.gz
+man/man3/XTextPropertyToStringList.3.gz
+man/man3/XStringListToTextProperty.3.gz
+man/man3/XFreeStringList.3.gz
+man/man3/XTextProperty.3.gz
+man/man3/XSetArcMode.3.gz
+man/man3/XSelectionRequestEvent.3.gz
+man/man3/XSetSubwindowMode.3.gz
+man/man3/XSetGraphicsExposure.3.gz
+man/man3/XSetClipMask.3.gz
+man/man3/XSetClipOrigin.3.gz
+man/man3/XSetClipRectangles.3.gz
+man/man3/XKillClient.3.gz
+man/man3/XSetCloseDownMode.3.gz
+man/man3/XSetCommand.3.gz
+man/man3/XGetCommand.3.gz
+man/man3/XGetErrorText.3.gz
+man/man3/XSetErrorHandler.3.gz
+man/man3/XSetIOErrorHandler.3.gz
+man/man3/XGetErrorDatabaseText.3.gz
+man/man3/XTimeCoord.3.gz
+man/man3/XSendEvent.3.gz
+man/man3/XDisplayMotionBufferSize.3.gz
+man/man3/XGetMotionEvents.3.gz
+man/man3/XSetDashes.3.gz
+man/man3/XSetFillStyle.3.gz
+man/man3/XSetFillRule.3.gz
+man/man3/XSetFont.3.gz
+man/man3/XSetFontPath.3.gz
+man/man3/XGetFontPath.3.gz
+man/man3/XFreeFontPath.3.gz
+man/man3/XGetInputFocus.3.gz
+man/man3/XSetInputFocus.3.gz
+man/man3/XGetPointerMapping.3.gz
+man/man3/XSetLineAttributes.3.gz
+man/man3/XSetPointerMapping.3.gz
+man/man3/XSetFunction.3.gz
+man/man3/XSetScreenSaver.3.gz
+man/man3/XForceScreenSaver.3.gz
+man/man3/XActivateScreenSaver.3.gz
+man/man3/XResetScreenSaver.3.gz
+man/man3/XGetScreenSaver.3.gz
+man/man3/XGetSelectionOwner.3.gz
+man/man3/XSetSelectionOwner.3.gz
+man/man3/XConvertSelection.3.gz
+man/man3/XSetState.3.gz
+man/man3/XSetPlanemask.3.gz
+man/man3/XSetForeground.3.gz
+man/man3/XSetBackground.3.gz
+man/man3/XSetTransientForHint.3.gz
+man/man3/XGetTransientForHint.3.gz
+man/man3/XSetStipple.3.gz
+man/man3/XSetTextProperty.3.gz
+man/man3/XGetTextProperty.3.gz
+man/man3/XSetTile.3.gz
+man/man3/XSetTSOrigin.3.gz
+man/man3/XGetWMIconName.3.gz
+man/man3/XSetWMClientMachine.3.gz
+man/man3/XGetWMClientMachine.3.gz
+man/man3/XSetWMColormapWindows.3.gz
+man/man3/XGetWMColormapWindows.3.gz
+man/man3/XSetWMIconName.3.gz
+man/man3/XSetIconName.3.gz
+man/man3/XGetIconName.3.gz
+man/man3/XGetWMName.3.gz
+man/man3/XSetWMName.3.gz
+man/man3/XStoreName.3.gz
+man/man3/XFetchName.3.gz
+man/man3/XStoreBuffer.3.gz
+man/man3/XSetWMProperties.3.gz
+man/man3/XmbSetWMProperties.3.gz
+man/man3/XSetWMProtocols.3.gz
+man/man3/XGetWMProtocols.3.gz
+man/man3/XStoreBytes.3.gz
+man/man3/XFetchBytes.3.gz
+man/man3/XFetchBuffer.3.gz
+man/man3/XRotateBuffers.3.gz
+man/man3/XStoreColors.3.gz
+man/man3/XStoreColor.3.gz
+man/man3/XStoreNamedColor.3.gz
+man/man3/XKeysymToKeycode.3.gz
+man/man3/XStringToKeysym.3.gz
+man/man3/XKeysymToString.3.gz
+man/man3/XKeycodeToKeysym.3.gz
+man/man3/XConvertCase.3.gz
+man/man3/XDefaultString.3.gz
+man/man3/XSupportsLocale.3.gz
+man/man3/XSetLocaleModifiers.3.gz
+man/man3/XSynchronize.3.gz
+man/man3/XSetAfterFunction.3.gz
+man/man3/XwcFreeStringList.3.gz
+man/man3/XmbTextListToTextProperty.3.gz
+man/man3/XwcTextListToTextProperty.3.gz
+man/man3/XmbTextPropertyToTextList.3.gz
+man/man3/XwcTextPropertyToTextList.3.gz
+man/man3/XTextExtents.3.gz
+man/man3/XTextExtents16.3.gz
+man/man3/XQueryTextExtents.3.gz
+man/man3/XQueryTextExtents16.3.gz
+man/man3/XVaCreateNestedList.3.gz
+man/man3/XTextWidth.3.gz
+man/man3/XTextWidth16.3.gz
+man/man3/XInitThreads.3.gz
+man/man3/XLockDisplay.3.gz
+man/man3/XUnlockDisplay.3.gz
+man/man3/XrmStringToQuark.3.gz
+man/man3/XTranslateCoordinates.3.gz
+man/man3/XrmUniqueQuark.3.gz
+man/man3/XrmPermStringToQuark.3.gz
+man/man3/XrmQuarkToString.3.gz
+man/man3/XrmStringToQuarkList.3.gz
+man/man3/XrmStringToBindingQuarkList.3.gz
+man/man3/XUnmapEvent.3.gz
+man/man3/XUnmapWindow.3.gz
+man/man3/XUnmapSubwindows.3.gz
+man/man3/XcmsSetCCCOfColormap.3.gz
+man/man3/XVisibilityNotifyEvent.3.gz
+man/man3/XWarpPointer.3.gz
+man/man3/XcmsCCCOfColormap.3.gz
+man/man3/XcmsRGB.3.gz
+man/man3/XcmsAllocColor.3.gz
+man/man3/XcmsAllocNamedColor.3.gz
+man/man3/XcmsConvertColors.3.gz
+man/man3/XcmsColor.3.gz
+man/man3/XcmsRGBi.3.gz
+man/man3/XcmsCIEXYZ.3.gz
+man/man3/XcmsCIEuvY.3.gz
+man/man3/XcmsCIExyY.3.gz
+man/man3/XcmsCIELab.3.gz
+man/man3/XcmsCIELuv.3.gz
+man/man3/XcmsTekHVC.3.gz
+man/man3/XcmsPad.3.gz
+man/man3/XcmsFreeCCC.3.gz
+man/man3/XcmsCreateCCC.3.gz
+man/man3/XwcResetIC.3.gz
+man/man3/XcmsQueryBlue.3.gz
+man/man3/XcmsDefaultCCC.3.gz
+man/man3/XcmsQueryBlack.3.gz
+man/man3/XcmsCIELabQueryMaxC.3.gz
+man/man3/XcmsCIELabQueryMaxL.3.gz
+man/man3/XcmsCIELabQueryMaxLC.3.gz
+man/man3/XcmsCIELabQueryMinL.3.gz
+man/man3/XcmsCIELuvQueryMaxC.3.gz
+man/man3/XcmsCIELuvQueryMaxL.3.gz
+man/man3/XcmsCIELuvQueryMaxLC.3.gz
+man/man3/XcmsCIELuvQueryMinL.3.gz
+man/man3/XcmsQueryGreen.3.gz
+man/man3/XcmsQueryRed.3.gz
+man/man3/XcmsQueryWhite.3.gz
+man/man3/XmbDrawString.3.gz
+man/man3/XcmsQueryColor.3.gz
+man/man3/XcmsQueryColors.3.gz
+man/man3/XcmsLookupColor.3.gz
+man/man3/XcmsStoreColor.3.gz
+man/man3/XcmsStoreColors.3.gz
+man/man3/XcmsSetWhitePoint.3.gz
+man/man3/XcmsSetWhiteAdjustProc.3.gz
+man/man3/XwcDrawImageString.3.gz
+man/man3/XcmsTekHVCQueryMaxC.3.gz
+man/man3/XcmsTekHVCQueryMaxV.3.gz
+man/man3/XcmsTekHVCQueryMaxVC.3.gz
+man/man3/XcmsTekHVCQueryMaxVSamples.3.gz
+man/man3/XcmsTekHVCQueryMinV.3.gz
+man/man3/XmbDrawImageString.3.gz
+man/man3/XwcDrawString.3.gz
+man/man3/XmbDrawText.3.gz
+man/man3/XwcDrawText.3.gz
+man/man3/XmbResetIC.3.gz
+man/man3/XmbLookupString.3.gz
+man/man3/XwcLookupString.3.gz
+man/man3/XwcTextExtents.3.gz
+man/man3/XmbTextEscapement.3.gz
+man/man3/XwcTextEscapement.3.gz
+man/man3/XmbTextExtents.3.gz
+man/man3/XtAddCallbacks.3.gz
+man/man3/XmbTextPerCharExtents.3.gz
+man/man3/XwcTextPerCharExtents.3.gz
+man/man3/XtAddCallback.3.gz
+man/man3/XtRemoveCallback.3.gz
+man/man3/XtRemoveCallbacks.3.gz
+man/man3/XtRemoveAllCallbacks.3.gz
+man/man3/XtAddRawEventHandler.3.gz
+man/man3/XtAddEventHandler.3.gz
+man/man3/XtRemoveEventHandler.3.gz
+man/man3/XtRemoveRawEventHandler.3.gz
+man/man3/XtInsertEventHandler.3.gz
+man/man3/XtInsertRawEventHandler.3.gz
+man/man3/XtRemoveGrab.3.gz
+man/man3/XtAddExposureToRegion.3.gz
+man/man3/XtAddGrab.3.gz
+man/man3/XtAddConverter.3.gz
+man/man3/XtAppAddActions.3.gz
+man/man3/XtAddActions.3.gz
+man/man3/XtAppAddConverter.3.gz
+man/man3/XtAppAddInput.3.gz
+man/man3/XtRemoveInput.3.gz
+man/man3/XtAppAddTimeOut.3.gz
+man/man3/XtRemoveTimeOut.3.gz
+man/man3/XtAppAddTimeout.3.gz
+man/man3/XtAppWarning.3.gz
+man/man3/XtAppAddWorkProc.3.gz
+man/man3/XtRemoveWorkProc.3.gz
+man/man3/XtAppCreateShell.3.gz
+man/man3/XtVaAppCreateShell.3.gz
+man/man3/XtAppError.3.gz
+man/man3/XtAppSetErrorHandler.3.gz
+man/man3/XtAppSetWarningHandler.3.gz
+man/man3/XtAppErrorMsg.3.gz
+man/man3/XtAppSetErrorMsgHandler.3.gz
+man/man3/XtAppSetWarningMsgHandler.3.gz
+man/man3/XtAppWarningMsg.3.gz
+man/man3/XtAppGetErrorDatabase.3.gz
+man/man3/XtAppGetErrorDatabaseText.3.gz
+man/man3/XtAppPending.3.gz
+man/man3/XtAppGetSelectionTimeout.3.gz
+man/man3/XtAppSetSelectionTimeout.3.gz
+man/man3/XtAppNextEvent.3.gz
+man/man3/XtAppPeekEvent.3.gz
+man/man3/XtAppProcessEvent.3.gz
+man/man3/XtDispatchEvent.3.gz
+man/man3/XtAppMainLoop.3.gz
+man/man3/XtPending.3.gz
+man/man3/XtNextEvent.3.gz
+man/man3/XtPeekEvent.3.gz
+man/man3/XtProcessEvent.3.gz
+man/man3/XtMainLoop.3.gz
+man/man3/XtHasCallbacks.3.gz
+man/man3/XtBuildEventMask.3.gz
+man/man3/XtCallAcceptFocus.3.gz
+man/man3/XtCallCallbacks.3.gz
+man/man3/XtCallCallbackList.3.gz
+man/man3/XtFree.3.gz
+man/man3/XtClass.3.gz
+man/man3/XtSuperclass.3.gz
+man/man3/XtIsSubclass.3.gz
+man/man3/XtCheckSubclass.3.gz
+man/man3/XtIsObject.3.gz
+man/man3/XtIsRectObj.3.gz
+man/man3/XtIsWidget.3.gz
+man/man3/XtIsComposite.3.gz
+man/man3/XtIsConstraint.3.gz
+man/man3/XtIsShell.3.gz
+man/man3/XtIsOverrideShell.3.gz
+man/man3/XtIsWMShell.3.gz
+man/man3/XtIsVendorShell.3.gz
+man/man3/XtIsTransientShell.3.gz
+man/man3/XtIsTopLevelShell.3.gz
+man/man3/XtIsApplicationShell.3.gz
+man/man3/XtMoveWidget.3.gz
+man/man3/XtConfigureWidget.3.gz
+man/man3/XtResizeWidget.3.gz
+man/man3/XtConvert.3.gz
+man/man3/XtDirectConvert.3.gz
+man/man3/XtConvertAndStore.3.gz
+man/man3/XtCallConverter.3.gz
+man/man3/XtToolkitInitialize.3.gz
+man/man3/XtVaCreateWidget.3.gz
+man/man3/XtCreateApplicationContext.3.gz
+man/man3/XtDestroyApplicationContext.3.gz
+man/man3/XtWidgetToApplicationContext.3.gz
+man/man3/XtCreateWidget.3.gz
+man/man3/XtCreatePopupShell.3.gz
+man/man3/XtVaCreatePopupShell.3.gz
+man/man3/XtCreateManagedWidget.3.gz
+man/man3/XtVaCreateManagedWidget.3.gz
+man/man3/XtDestroyWidget.3.gz
+man/man3/XtDisplay.3.gz
+man/man3/XtCreateWindow.3.gz
+man/man3/XtDisplayOfObject.3.gz
+man/man3/XtScreen.3.gz
+man/man3/XtScreenOfObject.3.gz
+man/man3/XtWindow.3.gz
+man/man3/XtWindowOfObject.3.gz
+man/man3/XtOpenDisplay.3.gz
+man/man3/XtDisplayInitialize.3.gz
+man/man3/XtCloseDisplay.3.gz
+man/man3/XtDatabase.3.gz
+man/man3/XtScreenDatabase.3.gz
+man/man3/XtGetGC.3.gz
+man/man3/XtReleaseGC.3.gz
+man/man3/XtMalloc.3.gz
+man/man3/XtGetResourceList.3.gz
+man/man3/XtGetConstraintResourceList.3.gz
+man/man3/XtGetSubresources.3.gz
+man/man3/XtGetSelectionValue.3.gz
+man/man3/XtGetSelectionValues.3.gz
+man/man3/XtVaGetSubresources.3.gz
+man/man3/XtMakeResizeRequest.3.gz
+man/man3/XtGetApplicationResources.3.gz
+man/man3/XtVaGetApplicationResources.3.gz
+man/man3/XtMakeGeometryRequest.3.gz
+man/man3/XtCalloc.3.gz
+man/man3/XtRealloc.3.gz
+man/man3/XtNew.3.gz
+man/man3/XtNewString.3.gz
+man/man3/XtManageChild.3.gz
+man/man3/XtManageChildren.3.gz
+man/man3/XtUnmanageChildren.3.gz
+man/man3/XtUnmanageChild.3.gz
+man/man3/XtIsManaged.3.gz
+man/man3/XtChangeManagedSet.3.gz
+man/man3/XtOffsetOf.3.gz
+man/man3/XtMapWidget.3.gz
+man/man3/XtSetMappedWhenManaged.3.gz
+man/man3/XtUnmapWidget.3.gz
+man/man3/XtOffset.3.gz
+man/man3/XtNameToWidget.3.gz
+man/man3/XtWindowToWidget.3.gz
+man/man3/XtNumber.3.gz
+man/man3/XtDisownSelection.3.gz
+man/man3/XtOwnSelection.3.gz
+man/man3/XtOwnSelectionIncremental.3.gz
+man/man3/XtInstallAccelerators.3.gz
+man/man3/XtParseAcceleratorTable.3.gz
+man/man3/XtInstallAllAccelerators.3.gz
+man/man3/XtAugmentTranslations.3.gz
+man/man3/XtParseTranslationTable.3.gz
+man/man3/XtOverrideTranslations.3.gz
+man/man3/XtUninstallTranslations.3.gz
+man/man3/XtPopdown.3.gz
+man/man3/XtCallbackPopdown.3.gz
+man/man3/MenuPopdown.3.gz
+man/man3/XtPopup.3.gz
+man/man3/XtPopupSpringLoaded.3.gz
+man/man3/XtCallbackNone.3.gz
+man/man3/XtCallbackNonexclusive.3.gz
+man/man3/XtCallbackExclusive.3.gz
+man/man3/MenuPopup.3.gz
+man/man3/XtIsRealized.3.gz
+man/man3/XtQueryGeometry.3.gz
+man/man3/XtRealizeWidget.3.gz
+man/man3/XtUnrealizeWidget.3.gz
+man/man3/XtSetArg.3.gz
+man/man3/XtMergeArgLists.3.gz
+man/man3/XtTranslateKeycode.3.gz
+man/man3/XtSetKeyboardFocus.3.gz
+man/man3/XtSetKeyTranslator.3.gz
+man/man3/XtRegisterCaseConverter.3.gz
+man/man3/XtConvertCase.3.gz
+man/man3/XtIsSensitive.3.gz
+man/man3/XtSetSensitive.3.gz
+man/man3/XtVaSetValues.3.gz
+man/man3/XtSetValues.3.gz
+man/man3/XtSetSubvalues.3.gz
+man/man3/XtGetValues.3.gz
+man/man3/XtVaGetValues.3.gz
+man/man3/XtGetSubvalues.3.gz
+man/man3/XtKeysymToKeycodeList.3.gz
+man/man3/XtStringConversionWarning.3.gz
+man/man3/XtTranslateCoords.3.gz
+man/man3/XtDisplayStringConversionWarning.3.gz
+man/man3/XtGetKeysymTable.3.gz
+man/man3/XtSetTypeConverter.3.gz
+man/man3/XtAppSetTypeConverter.3.gz
+man/man3/XtRemoveActionHook.3.gz
+man/man3/XtAppAddActionHook.3.gz
+man/man3/XtGetMultiClickTime.3.gz
+man/man3/XtGetActionList.3.gz
+man/man3/XtCallActionProc.3.gz
+man/man3/XtRegisterGrabAction.3.gz
+man/man3/XtSetMultiClickTime.3.gz
+man/man3/XtNoticeSignal.3.gz
+man/man3/XtGetActionKeysym.3.gz
+man/man3/XtSetEventDispatcher.3.gz
+man/man3/XtInsertEventTypeHandler.3.gz
+man/man3/XtRemoveEventTypeHandler.3.gz
+man/man3/XtRegisterExtensionSelector.3.gz
+man/man3/XtDispatchEventToWidget.3.gz
+man/man3/XtAppAddSignal.3.gz
+man/man3/XtGetKeyboardFocusWidget.3.gz
+man/man3/XtLastEventProcessed.3.gz
+man/man3/XtLastTimestampProcessed.3.gz
+man/man3/XtRemoveSignal.3.gz
+man/man3/XtAddInput.3.gz
+man/man3/XtAddTimeOut.3.gz
+man/man3/XtAddTimeout.3.gz
+man/man3/XtParent.3.gz
+man/man3/XtAppAddBlockHook.3.gz
+man/man3/XtRemoveBlockHook.3.gz
+man/man3/XtName.3.gz
+man/man3/XtAppSetFallbackResources.3.gz
+man/man3/XtGetClassExtension.3.gz
+man/man3/XtVaCreateArgsList.3.gz
+man/man3/XtVaAppInitialize.3.gz
+man/man3/XtCreateApplicationShell.3.gz
+man/man3/XtSetLanguageProc.3.gz
+man/man3/XtAppInitialize.3.gz
+man/man3/XtInitialize.3.gz
+man/man3/XtSessionReturnToken.3.gz
+man/man3/XtInitializeWidgetClass.3.gz
+man/man3/XtDisplayToApplicationContext.3.gz
+man/man3/XtSessionGetToken.3.gz
+man/man3/XtWarning.3.gz
+man/man3/XtErrorMsg.3.gz
+man/man3/XtSetErrorMsgHandler.3.gz
+man/man3/XtSetWarningMsgHandler.3.gz
+man/man3/XtWarningMsg.3.gz
+man/man3/XtError.3.gz
+man/man3/XtSetErrorHandler.3.gz
+man/man3/XtSetWarningHandler.3.gz
+man/man3/XtUngrabKey.3.gz
+man/man3/XtGetErrorDatabase.3.gz
+man/man3/XtGetErrorDatabaseText.3.gz
+man/man3/XtAllocateGC.3.gz
+man/man3/XtFindFile.3.gz
+man/man3/XtAppReleaseCacheRefs.3.gz
+man/man3/XtResolvePathname.3.gz
+man/man3/XtSetWMColormapWindows.3.gz
+man/man3/XtGetSelectionTimeout.3.gz
+man/man3/XtGetSelectionValueIncremental.3.gz
+man/man3/XtGetSelectionValuesIncremental.3.gz
+man/man3/XtSetSelectionTimeout.3.gz
+man/man3/XtGetSelectionRequest.3.gz
+man/man3/XtSendSelectionRequest.3.gz
+man/man3/XtSetSelectionParameters.3.gz
+man/man3/XtGetSelectionParameters.3.gz
+man/man3/XtCreateSelectionRequest.3.gz
+man/man3/XtCancelSelectionRequest.3.gz
+man/man3/XtReservePropertyAtom.3.gz
+man/man3/XtReleasePropertyAtom.3.gz
+man/man3/XtGrabKey.3.gz
+man/man3/XtGrabKeyboard.3.gz
+man/man3/XtUngrabKeyboard.3.gz
+man/man3/XtGrabButton.3.gz
+man/man3/XtUngrabButton.3.gz
+man/man3/XtGrabPointer.3.gz
+man/man3/XtUngrabPointer.3.gz
+man/man3/XtUnregisterDrawable.3.gz
+man/man3/XtGetApplicationNameAndClass.3.gz
+man/man3/XtRegisterDrawable.3.gz
+man/man3/XtAppUnlock.3.gz
+man/man3/XtHooksOfDisplay.3.gz
+man/man3/XtGetDisplays.3.gz
+man/man3/XtAppSetExitFlag.3.gz
+man/man3/XtToolkitThreadInitialize.3.gz
+man/man3/XtAppGetExitFlag.3.gz
+man/man3/XtAppLock.3.gz
+man/man3/XtProcessLock.3.gz
+man/man3/XtProcessUnlock.3.gz
+man/man3/XShapeOffsetShape.3.gz
+man/man3/XtOpenApplication.3.gz
+man/man3/XtVaOpenApplication.3.gz
+man/man3/XShapeQueryVersion.3.gz
+man/man3/XShapeQueryExtension.3.gz
+man/man3/XShapeCombineRegion.3.gz
+man/man3/XShapeCombineRectangles.3.gz
+man/man3/XShapeCombineMask.3.gz
+man/man3/XShapeCombineShape.3.gz
+man/man3/XShapeQueryExtents.3.gz
+man/man3/XShapeSelectInput.3.gz
+man/man3/XShapeInputSelected.3.gz
+man/man3/XShapeGetRectangles.3.gz
+man/man3/XmbufGetVersion.3.gz
+man/man3/XmbufQueryExtension.3.gz
+man/man3/XmbufCreateBuffers.3.gz
+man/man3/XmbufDestroyBuffers.3.gz
+man/man3/XmbufDisplayBuffers.3.gz
+man/man3/XmbufGetWindowAttributes.3.gz
+man/man3/XmbufChangeWindowAttributes.3.gz
+man/man3/XmbufGetBufferAttributes.3.gz
+man/man3/XmbufChangeBufferAttributes.3.gz
+man/man3/XmbufGetScreenInfo.3.gz
+man/man3/DBE.3.gz
+man/man3/XmbufCreateStereoWindow.3.gz
+man/man3/XdbeBeginIdiom.3.gz
+man/man3/XdbeAllocateBackBufferName.3.gz
+man/man3/XdbeEndIdiom.3.gz
+man/man3/XdbeFreeVisualInfo.3.gz
+man/man3/XdbeDeallocateBackBufferName.3.gz
+man/man3/XdbeQueryExtension.3.gz
+man/man3/XdbeSwapBuffers.3.gz
+man/man3/XdbeGetVisualInfo.3.gz
+man/man3/XdbeGetBackBufferAttributes.3.gz
+man/man3/XDeviceTimeCoord.3.gz
+man/man3/XAllowDeviceEvents.3.gz
+man/man3/XGetDeviceControl.3.gz
+man/man3/XChangeDeviceControl.3.gz
+man/man3/XGetFeedbackControl.3.gz
+man/man3/XChangeFeedbackControl.3.gz
+man/man3/XGetDeviceKeyMapping.3.gz
+man/man3/XChangeDeviceKeyMapping.3.gz
+man/man3/XChangeKeyboardDevice.3.gz
+man/man3/XGetDeviceModifierMapping.3.gz
+man/man3/XSetDeviceModifierMapping.3.gz
+man/man3/XGetDeviceDontPropagateList.3.gz
+man/man3/XChangeDeviceDontPropagateList.3.gz
+man/man3/XChangePointerDevice.3.gz
+man/man3/XDeviceBell.3.gz
+man/man3/XUngrabDeviceButton.3.gz
+man/man3/XGetDeviceMotionEvents.3.gz
+man/man3/Xau.3.gz
+man/man3/XGetExtensionVersion.3.gz
+man/man3/XGrabDeviceButton.3.gz
+man/man3/XGrabDevice.3.gz
+man/man3/XGrabDeviceKey.3.gz
+man/man3/XUngrabDeviceKey.3.gz
+man/man3/XUngrabDevice.3.gz
+man/man3/XOpenDevice.3.gz
+man/man3/XListInputDevices.3.gz
+man/man3/XFreeDeviceList.3.gz
+man/man3/XCloseDevice.3.gz
+man/man3/XQueryDeviceState.3.gz
+man/man3/XGetDeviceButtonMapping.3.gz
+man/man3/XSendExtensionEvent.3.gz
+man/man3/XauFileName.3.gz
+man/man3/XSetDeviceButtonMapping.3.gz
+man/man3/XSetDeviceFocus.3.gz
+man/man3/XGetDeviceFocus.3.gz
+man/man3/XSetDeviceMode.3.gz
+man/man3/XSelectExtensionEvent.3.gz
+man/man3/XGetSelectedExtensionEvents.3.gz
+man/man3/XSetDeviceValuators.3.gz
+man/man3/XauReadAuth.3.gz
+man/man3/XauLockAuth.3.gz
+man/man3/XauUnlockAuth.3.gz
+man/man3/XauWriteAuth.3.gz
+man/man3/XauDisposeAuth.3.gz
+man/man3/XauGetAuthByAddr.3.gz
+man/man3/XauGetBestAuthByAddr.3.gz
diff --git a/release/scripts/X11/plists/i386/Xnest.tgz.plist b/release/scripts/X11/plists/i386/Xnest.tgz.plist
new file mode 100644
index 000000000000..eff754d76af6
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xnest.tgz.plist
@@ -0,0 +1 @@
+bin/Xnest
diff --git a/release/scripts/X11/plists/i386/Xprog.tgz.plist b/release/scripts/X11/plists/i386/Xprog.tgz.plist
new file mode 100644
index 000000000000..62d3d4d5f1ea
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xprog.tgz.plist
@@ -0,0 +1,349 @@
+lib/
+lib/libXau.a
+lib/libXdmcp.a
+lib/libX11.a
+lib/liboldX.a
+lib/libICE.a
+lib/libSM.a
+lib/libXext.a
+lib/libXt.a
+lib/libXss.a
+lib/libXxf86misc.a
+lib/libXxf86vm.a
+lib/libXxf86dga.a
+lib/libXmu.a
+lib/libXaw.a
+lib/libXIE.a
+lib/libXi.a
+lib/libXtst.a
+lib/libFS.a
+lib/libPEX5.a
+lib/libxkbfile.a
+lib/libxkbui.a
+lib/libXp.a
+lib/libXdpms.a
+include/
+include/X11/
+include/X11/DECkeysym.h
+include/X11/HPkeysym.h
+include/X11/Sunkeysym.h
+include/X11/X.h
+include/X11/XWDFile.h
+include/X11/Xalloca.h
+include/X11/Xatom.h
+include/X11/Xfuncproto.h
+include/X11/Xfuncs.h
+include/X11/Xmd.h
+include/X11/Xos.h
+include/X11/Xos_r.h
+include/X11/Xosdefs.h
+include/X11/Xpoll.h
+include/X11/Xproto.h
+include/X11/Xprotostr.h
+include/X11/Xthreads.h
+include/X11/ap_keysym.h
+include/X11/keysym.h
+include/X11/keysymdef.h
+include/X11/extensions/
+include/X11/extensions/Xext.h
+include/X11/extensions/multibuf.h
+include/X11/extensions/shape.h
+include/X11/extensions/XShm.h
+include/X11/extensions/MITMisc.h
+include/X11/extensions/XI.h
+include/X11/extensions/XInput.h
+include/X11/extensions/XIproto.h
+include/X11/extensions/XTest.h
+include/X11/extensions/xtestext1.h
+include/X11/extensions/XIE.h
+include/X11/extensions/XIEproto.h
+include/X11/extensions/XIEprotost.h
+include/X11/extensions/sync.h
+include/X11/extensions/XKB.h
+include/X11/extensions/XKBgeom.h
+include/X11/extensions/XKBproto.h
+include/X11/extensions/XKBstr.h
+include/X11/extensions/XKBsrv.h
+include/X11/extensions/Xdbe.h
+include/X11/extensions/Xdbeproto.h
+include/X11/extensions/Xag.h
+include/X11/extensions/Xagstr.h
+include/X11/extensions/Xagsrv.h
+include/X11/extensions/record.h
+include/X11/extensions/recordstr.h
+include/X11/extensions/lbxbuf.h
+include/X11/extensions/lbxbufstr.h
+include/X11/extensions/lbxdeltastr.h
+include/X11/extensions/lbximage.h
+include/X11/extensions/lbxopts.h
+include/X11/extensions/lbxstr.h
+include/X11/extensions/lbxzlib.h
+include/X11/extensions/security.h
+include/X11/extensions/securstr.h
+include/X11/extensions/Print.h
+include/X11/extensions/Printstr.h
+include/X11/extensions/saver.h
+include/X11/extensions/saverproto.h
+include/X11/extensions/scrnsaver.h
+include/X11/extensions/xf86vmode.h
+include/X11/extensions/xf86vmstr.h
+include/X11/extensions/xf86dga.h
+include/X11/extensions/xf86dgastr.h
+include/X11/extensions/xf86misc.h
+include/X11/extensions/xf86mscstr.h
+include/X11/extensions/dpms.h
+include/X11/extensions/dpmsstr.h
+include/X11/extensions/XIElib.h
+include/X11/extensions/XKBfile.h
+include/X11/extensions/XKM.h
+include/X11/extensions/XKMformat.h
+include/X11/extensions/XKBrules.h
+include/X11/extensions/XKBconfig.h
+include/X11/extensions/XKBbells.h
+include/X11/extensions/XKBui.h
+include/X11/fonts/
+include/X11/fonts/FS.h
+include/X11/fonts/FSproto.h
+include/X11/fonts/fsmasks.h
+include/X11/fonts/FSlib.h
+include/X11/Xauth.h
+include/X11/Xdmcp.h
+include/X11/Xlib.h
+include/X11/ICE/
+include/X11/ICE/ICE.h
+include/X11/ICE/ICEconn.h
+include/X11/ICE/ICEproto.h
+include/X11/ICE/ICElib.h
+include/X11/ICE/ICEmsg.h
+include/X11/ICE/ICEutil.h
+include/X11/Xresource.h
+include/X11/Xutil.h
+include/X11/cursorfont.h
+include/X11/Xlibint.h
+include/X11/Xcms.h
+include/X11/Xlocale.h
+include/X11/XKBlib.h
+include/X11/X10.h
+include/X11/SM/
+include/X11/SM/SM.h
+include/X11/SM/SMproto.h
+include/X11/SM/SMlib.h
+include/X11/Composite.h
+include/X11/CompositeP.h
+include/X11/Constraint.h
+include/X11/ConstrainP.h
+include/X11/Core.h
+include/X11/CoreP.h
+include/X11/Intrinsic.h
+include/X11/IntrinsicP.h
+include/X11/Object.h
+include/X11/ObjectP.h
+include/X11/RectObj.h
+include/X11/RectObjP.h
+include/X11/Shell.h
+include/X11/ShellP.h
+include/X11/StringDefs.h
+include/X11/Vendor.h
+include/X11/VendorP.h
+include/X11/Xmu/
+include/X11/Xmu/Xmu.h
+include/X11/Xmu/Atoms.h
+include/X11/Xmu/CharSet.h
+include/X11/Xmu/CloseHook.h
+include/X11/Xmu/Converters.h
+include/X11/Xmu/CurUtil.h
+include/X11/Xmu/CvtCache.h
+include/X11/Xmu/DisplayQue.h
+include/X11/Xmu/Drawing.h
+include/X11/Xmu/Editres.h
+include/X11/Xmu/EditresP.h
+include/X11/Xmu/Error.h
+include/X11/Xmu/ExtAgent.h
+include/X11/Xmu/Initer.h
+include/X11/Xmu/Misc.h
+include/X11/Xmu/StdSel.h
+include/X11/Xmu/StdCmap.h
+include/X11/Xmu/SysUtil.h
+include/X11/Xmu/WidgetNode.h
+include/X11/Xmu/WinUtil.h
+include/X11/Xmu/Xct.h
+include/X11/Xaw/
+include/X11/Xaw/AllWidgets.h
+include/X11/Xaw/AsciiSink.h
+include/X11/Xaw/AsciiSinkP.h
+include/X11/Xaw/AsciiSrc.h
+include/X11/Xaw/AsciiSrcP.h
+include/X11/Xaw/AsciiText.h
+include/X11/Xaw/AsciiTextP.h
+include/X11/Xaw/Box.h
+include/X11/Xaw/BoxP.h
+include/X11/Xaw/Cardinals.h
+include/X11/Xaw/Command.h
+include/X11/Xaw/CommandP.h
+include/X11/Xaw/Dialog.h
+include/X11/Xaw/DialogP.h
+include/X11/Xaw/Form.h
+include/X11/Xaw/FormP.h
+include/X11/Xaw/Grip.h
+include/X11/Xaw/GripP.h
+include/X11/Xaw/Label.h
+include/X11/Xaw/LabelP.h
+include/X11/Xaw/List.h
+include/X11/Xaw/ListP.h
+include/X11/Xaw/MenuButton.h
+include/X11/Xaw/MenuButtoP.h
+include/X11/Xaw/MultiSrc.h
+include/X11/Xaw/MultiSrcP.h
+include/X11/Xaw/MultiSink.h
+include/X11/Xaw/MultiSinkP.h
+include/X11/Xaw/Paned.h
+include/X11/Xaw/PanedP.h
+include/X11/Xaw/Panner.h
+include/X11/Xaw/PannerP.h
+include/X11/Xaw/Porthole.h
+include/X11/Xaw/PortholeP.h
+include/X11/Xaw/Repeater.h
+include/X11/Xaw/RepeaterP.h
+include/X11/Xaw/Reports.h
+include/X11/Xaw/Scrollbar.h
+include/X11/Xaw/ScrollbarP.h
+include/X11/Xaw/Simple.h
+include/X11/Xaw/SimpleP.h
+include/X11/Xaw/SimpleMenu.h
+include/X11/Xaw/SimpleMenP.h
+include/X11/Xaw/Sme.h
+include/X11/Xaw/SmeP.h
+include/X11/Xaw/SmeBSB.h
+include/X11/Xaw/SmeBSBP.h
+include/X11/Xaw/SmeLine.h
+include/X11/Xaw/SmeLineP.h
+include/X11/Xaw/StripChart.h
+include/X11/Xaw/StripCharP.h
+include/X11/Xaw/Template.c
+include/X11/Xaw/Template.h
+include/X11/Xaw/TemplateP.h
+include/X11/Xaw/Text.h
+include/X11/Xaw/TextP.h
+include/X11/Xaw/TextSink.h
+include/X11/Xaw/TextSinkP.h
+include/X11/Xaw/TextSrc.h
+include/X11/Xaw/TextSrcP.h
+include/X11/Xaw/Toggle.h
+include/X11/Xaw/ToggleP.h
+include/X11/Xaw/Tree.h
+include/X11/Xaw/TreeP.h
+include/X11/Xaw/VendorEP.h
+include/X11/Xaw/Viewport.h
+include/X11/Xaw/ViewportP.h
+include/X11/Xaw/XawImP.h
+include/X11/Xaw/XawInit.h
+include/X11/PEX5/
+include/X11/PEX5/PEXlib.h
+include/X11/PEX5/PEXlibint.h
+include/X11/PEX5/PEX.h
+include/X11/PEX5/PEXproto.h
+include/X11/PEX5/PEXprotost.h
+include/X11/PM/
+include/X11/PM/PM.h
+include/X11/PM/PMproto.h
+include/bitmaps/
+include/bitmaps/ldblarrow
+include/bitmaps/rdblarrow
+lib/X11/config/
+lib/X11/config/Imake.rules
+lib/X11/config/Motif.rules
+lib/X11/config/Win32.rules
+lib/X11/config/X11.rules
+lib/X11/config/bsdLib.rules
+lib/X11/config/cde.rules
+lib/X11/config/gnuLib.rules
+lib/X11/config/hpLib.rules
+lib/X11/config/ibmLib.rules
+lib/X11/config/lnxLib.rules
+lib/X11/config/lnxdoc.rules
+lib/X11/config/necLib.rules
+lib/X11/config/noop.rules
+lib/X11/config/nto.rules
+lib/X11/config/oldlib.rules
+lib/X11/config/os2.rules
+lib/X11/config/os2Lib.rules
+lib/X11/config/osfLib.rules
+lib/X11/config/scoLib.rules
+lib/X11/config/sgiLib.rules
+lib/X11/config/sunLib.rules
+lib/X11/config/QNX.rules
+lib/X11/config/sv3Lib.rules
+lib/X11/config/sv4Lib.rules
+lib/X11/config/xf86.rules
+lib/X11/config/Imake.tmpl
+lib/X11/config/Library.tmpl
+lib/X11/config/Motif.tmpl
+lib/X11/config/Server.tmpl
+lib/X11/config/ServerLib.tmpl
+lib/X11/config/Threads.tmpl
+lib/X11/config/WinLib.tmpl
+lib/X11/config/X11.tmpl
+lib/X11/config/bsdLib.tmpl
+lib/X11/config/cde.tmpl
+lib/X11/config/hpLib.tmpl
+lib/X11/config/gnuLib.tmpl
+lib/X11/config/ibmLib.tmpl
+lib/X11/config/lnxLib.tmpl
+lib/X11/config/lnxdoc.tmpl
+lib/X11/config/necLib.tmpl
+lib/X11/config/os2Lib.tmpl
+lib/X11/config/osfLib.tmpl
+lib/X11/config/sgiLib.tmpl
+lib/X11/config/sunLib.tmpl
+lib/X11/config/sv3Lib.tmpl
+lib/X11/config/sv4Lib.tmpl
+lib/X11/config/xf86.tmpl
+lib/X11/config/xf86site.def
+lib/X11/config/site.def
+lib/X11/config/Imake.cf
+lib/X11/config/Amoeba.cf
+lib/X11/config/DGUX.cf
+lib/X11/config/FreeBSD.cf
+lib/X11/config/Mips.cf
+lib/X11/config/NetBSD.cf
+lib/X11/config/OpenBSD.cf
+lib/X11/config/Oki.cf
+lib/X11/config/Win32.cf
+lib/X11/config/apollo.cf
+lib/X11/config/bsd.cf
+lib/X11/config/bsdi.cf
+lib/X11/config/convex.cf
+lib/X11/config/cray.cf
+lib/X11/config/fujitsu.cf
+lib/X11/config/generic.cf
+lib/X11/config/gnu.cf
+lib/X11/config/hp.cf
+lib/X11/config/ibm.cf
+lib/X11/config/isc.cf
+lib/X11/config/linux.cf
+lib/X11/config/luna.cf
+lib/X11/config/macII.cf
+lib/X11/config/mach.cf
+lib/X11/config/minix.cf
+lib/X11/config/moto.cf
+lib/X11/config/ncr.cf
+lib/X11/config/nec.cf
+lib/X11/config/nto.cf
+lib/X11/config/os2.cf
+lib/X11/config/osf1.cf
+lib/X11/config/pegasus.cf
+lib/X11/config/sco.cf
+lib/X11/config/sco5.cf
+lib/X11/config/sequent.cf
+lib/X11/config/sgi.cf
+lib/X11/config/sony.cf
+lib/X11/config/sun.cf
+lib/X11/config/svr3.cf
+lib/X11/config/svr4.cf
+lib/X11/config/ultrix.cf
+lib/X11/config/usl.cf
+lib/X11/config/lynx.cf
+lib/X11/config/x386.cf
+lib/X11/config/QNX.cf
+lib/X11/config/xfree86.cf
+lib/X11/config/host.def
diff --git a/release/scripts/X11/plists/i386/Xprt.tgz.plist b/release/scripts/X11/plists/i386/Xprt.tgz.plist
new file mode 100644
index 000000000000..0646e79271d4
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xprt.tgz.plist
@@ -0,0 +1 @@
+bin/Xprt
diff --git a/release/scripts/X11/plists/i386/Xps.tgz.plist b/release/scripts/X11/plists/i386/Xps.tgz.plist
new file mode 100644
index 000000000000..bf55d1333dd1
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xps.tgz.plist
@@ -0,0 +1,57 @@
+lib/X11/doc/PostScript/
+lib/X11/doc/PostScript/FreeBSD.ps
+lib/X11/doc/PostScript/NetBSD.ps
+lib/X11/doc/PostScript/OpenBSD.ps
+lib/X11/doc/PostScript/Linux.ps
+lib/X11/doc/PostScript/fbdev.ps
+lib/X11/doc/PostScript/DGux.ps
+lib/X11/doc/PostScript/LynxOS.ps
+lib/X11/doc/PostScript/SCO.ps
+lib/X11/doc/PostScript/isc.ps
+lib/X11/doc/PostScript/OS2.ps
+lib/X11/doc/PostScript/OS2Notes.ps
+lib/X11/doc/PostScript/SOLX86.ps
+lib/X11/doc/PostScript/SVR4.ps
+lib/X11/doc/PostScript/DECtga.ps
+lib/X11/doc/PostScript/I128.ps
+lib/X11/doc/PostScript/Mach32.ps
+lib/X11/doc/PostScript/Mach64.ps
+lib/X11/doc/PostScript/MGA.ps
+lib/X11/doc/PostScript/NVIDIA.ps
+lib/X11/doc/PostScript/Oak.ps
+lib/X11/doc/PostScript/P9000.ps
+lib/X11/doc/PostScript/Video7.ps
+lib/X11/doc/PostScript/S3.ps
+lib/X11/doc/PostScript/S3V.ps
+lib/X11/doc/PostScript/SiS.ps
+lib/X11/doc/PostScript/W32.ps
+lib/X11/doc/PostScript/WstDig.ps
+lib/X11/doc/PostScript/apm.ps
+lib/X11/doc/PostScript/ark.ps
+lib/X11/doc/PostScript/agx.ps
+lib/X11/doc/PostScript/ati.ps
+lib/X11/doc/PostScript/chips.ps
+lib/X11/doc/PostScript/cirrus.ps
+lib/X11/doc/PostScript/cyrix.ps
+lib/X11/doc/PostScript/epson.ps
+lib/X11/doc/PostScript/mouse.ps
+lib/X11/doc/PostScript/neo.ps
+lib/X11/doc/PostScript/rendition.ps
+lib/X11/doc/PostScript/3DLabs.ps
+lib/X11/doc/PostScript/trident.ps
+lib/X11/doc/PostScript/tseng.ps
+lib/X11/doc/PostScript/i740.ps
+lib/X11/doc/PostScript/i810.ps
+lib/X11/doc/PostScript/r128.ps
+lib/X11/doc/PostScript/COPYRIGHT.ps
+lib/X11/doc/PostScript/RELNOTES.ps
+lib/X11/doc/PostScript/Config.ps
+lib/X11/doc/PostScript/BUILD.ps
+lib/X11/doc/PostScript/README.ps
+lib/X11/doc/PostScript/QuickStart.ps
+lib/X11/doc/PostScript/DocIndex.ps
+lib/X11/doc/PostScript/LinkKit.ps
+lib/X11/doc/PostScript/clkprog.ps
+lib/X11/doc/PostScript/xinput.ps
+lib/X11/doc/PostScript/VideoModes.ps
+lib/X11/doc/PostScript/VGADriver.ps
diff --git a/release/scripts/X11/plists/i386/Xset.tgz.plist b/release/scripts/X11/plists/i386/Xset.tgz.plist
new file mode 100644
index 000000000000..ec4fd7e2d142
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xset.tgz.plist
@@ -0,0 +1,76 @@
+bin/XF86Setup
+bin/xmseconfig
+lib/X11/XF86Setup/
+lib/X11/XF86Setup/phase1.tcl
+lib/X11/XF86Setup/phase2.tcl
+lib/X11/XF86Setup/phase3.tcl
+lib/X11/XF86Setup/phase4.tcl
+lib/X11/XF86Setup/phase5.tcl
+lib/X11/XF86Setup/setuplib.tcl
+lib/X11/XF86Setup/srvflags.tcl
+lib/X11/XF86Setup/carddata.tcl
+lib/X11/XF86Setup/card.tcl
+lib/X11/XF86Setup/done.tcl
+lib/X11/XF86Setup/filelist.tcl
+lib/X11/XF86Setup/keyboard.tcl
+lib/X11/XF86Setup/mseproto.tcl
+lib/X11/XF86Setup/mondata.tcl
+lib/X11/XF86Setup/monitor.tcl
+lib/X11/XF86Setup/modeselect.tcl
+lib/X11/XF86Setup/mouse.tcl
+lib/X11/XF86Setup/LICENSE
+lib/X11/XF86Setup/tcllib/
+lib/X11/XF86Setup/tcllib/button.tcl
+lib/X11/XF86Setup/tcllib/combobox.tcl
+lib/X11/XF86Setup/tcllib/misc.tcl
+lib/X11/XF86Setup/tcllib/downarrow.xbm
+lib/X11/XF86Setup/tcllib/dialog.tcl
+lib/X11/XF86Setup/tcllib/entry.tcl
+lib/X11/XF86Setup/tcllib/focus.tcl
+lib/X11/XF86Setup/tcllib/init.tcl
+lib/X11/XF86Setup/tcllib/listbox.tcl
+lib/X11/XF86Setup/tcllib/menu.tcl
+lib/X11/XF86Setup/tcllib/optionMenu.tcl
+lib/X11/XF86Setup/tcllib/palette.tcl
+lib/X11/XF86Setup/tcllib/scale.tcl
+lib/X11/XF86Setup/tcllib/scrollbar.tcl
+lib/X11/XF86Setup/tcllib/tclIndex
+lib/X11/XF86Setup/tcllib/tearoff.tcl
+lib/X11/XF86Setup/tcllib/text.tcl
+lib/X11/XF86Setup/tcllib/tk.tcl
+lib/X11/XF86Setup/tcllib/tkerror.tcl
+lib/X11/XF86Setup/tcllib/uparrow.xbm
+lib/X11/XF86Setup/tcllib/license.terms
+lib/X11/XF86Setup/pics/
+lib/X11/XF86Setup/pics/vidcard.xbm
+lib/X11/XF86Setup/pics/vidcard.msk
+lib/X11/XF86Setup/pics/XFree86.xbm
+lib/X11/XF86Setup/pics/XFree86.msk
+lib/X11/XF86Setup/scripts/
+lib/X11/XF86Setup/scripts/mseconfig.tcl
+lib/X11/XF86Setup/texts/
+lib/X11/XF86Setup/texts/local_text.tcl
+lib/X11/XF86Setup/texts/generic/
+lib/X11/XF86Setup/texts/generic/messages.tcl
+lib/X11/XF86Setup/texts/generic/message_proc.tcl
+lib/X11/XF86Setup/texts/generic/help_card.tcl
+lib/X11/XF86Setup/texts/generic/help_done.tcl
+lib/X11/XF86Setup/texts/generic/help_keyboard.tcl
+lib/X11/XF86Setup/texts/generic/help_monitor.tcl
+lib/X11/XF86Setup/texts/generic/help_mouse.tcl
+lib/X11/XF86Setup/texts/generic/help_other.tcl
+lib/X11/XF86Setup/texts/generic/help_intro.tcl
+lib/X11/XF86Setup/texts/generic/help_modeselect.tcl
+lib/X11/XF86Setup/texts/ja/
+lib/X11/XF86Setup/texts/ja/messages.tcl
+lib/X11/XF86Setup/texts/ja/message_proc.tcl
+lib/X11/XF86Setup/texts/ja/help_card.tcl
+lib/X11/XF86Setup/texts/ja/help_done.tcl
+lib/X11/XF86Setup/texts/ja/help_keyboard.tcl
+lib/X11/XF86Setup/texts/ja/help_monitor.tcl
+lib/X11/XF86Setup/texts/ja/help_mouse.tcl
+lib/X11/XF86Setup/texts/ja/help_other.tcl
+lib/X11/XF86Setup/texts/ja/help_intro.tcl
+lib/X11/XF86Setup/texts/ja/help_modeselect.tcl
+man/man1/XF86Setup.1.gz
+man/man1/xmseconfig.1.gz
diff --git a/release/scripts/X11/plists/i386/Xvfb.tgz.plist b/release/scripts/X11/plists/i386/Xvfb.tgz.plist
new file mode 100644
index 000000000000..e2d161bbca7f
--- /dev/null
+++ b/release/scripts/X11/plists/i386/Xvfb.tgz.plist
@@ -0,0 +1 @@
+bin/Xvfb
diff --git a/release/scripts/base-install.sh b/release/scripts/base-install.sh
new file mode 100755
index 000000000000..6b32b033a842
--- /dev/null
+++ b/release/scripts/base-install.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+
+echo "You are about to extract the base distribution into ${DESTDIR:-/} - are you SURE"
+echo -n "you want to do this over your installed system (y/n)? "
+read ans
+if [ "$ans" = "y" ]; then
+ cat bin.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+fi
diff --git a/release/scripts/bin-install.sh b/release/scripts/bin-install.sh
new file mode 100755
index 000000000000..6b32b033a842
--- /dev/null
+++ b/release/scripts/bin-install.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+
+echo "You are about to extract the base distribution into ${DESTDIR:-/} - are you SURE"
+echo -n "you want to do this over your installed system (y/n)? "
+read ans
+if [ "$ans" = "y" ]; then
+ cat bin.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+fi
diff --git a/release/scripts/catpages-install.sh b/release/scripts/catpages-install.sh
new file mode 100755
index 000000000000..e2806d4192f3
--- /dev/null
+++ b/release/scripts/catpages-install.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+cat catpages.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+exit 0
diff --git a/release/scripts/catpages-make.sh b/release/scripts/catpages-make.sh
new file mode 100755
index 000000000000..f09cd3d39f03
--- /dev/null
+++ b/release/scripts/catpages-make.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Create the catpages dist - must follow manpages dist script, for obvious
+# reasons.
+if [ -d ${RD}/trees/manpages/usr/share/man ]; then
+ su -m man -c 'catman ${RD}/trees/manpages/usr/share/man' > /dev/null 2>&1;
+ ( cd ${RD}/trees/manpages/usr/share/man;
+ find cat* whatis | cpio -dumpl ${RD}/trees/catpages/usr/share/man ) &&
+ rm -rf ${RD}/trees/manpages/usr/share/man/cat*;
+fi
diff --git a/release/scripts/commerce-install.sh b/release/scripts/commerce-install.sh
new file mode 100755
index 000000000000..37912e3ae740
--- /dev/null
+++ b/release/scripts/commerce-install.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+echo "Extracting commerce tarball into ${DESTDIR}/usr/local"
+tar --unlink -xpzf commerce.tgz -C ${DESTDIR}/usr/local
+exit 0
diff --git a/release/scripts/compat1x-install.sh b/release/scripts/compat1x-install.sh
new file mode 100755
index 000000000000..18dbcabbec31
--- /dev/null
+++ b/release/scripts/compat1x-install.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+cat compat1x.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+exit 0
diff --git a/release/scripts/compat20-install.sh b/release/scripts/compat20-install.sh
new file mode 100755
index 000000000000..ba85baa2a620
--- /dev/null
+++ b/release/scripts/compat20-install.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+cat compat20.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+exit 0
diff --git a/release/scripts/compat21-install.sh b/release/scripts/compat21-install.sh
new file mode 100755
index 000000000000..8fcd15df0460
--- /dev/null
+++ b/release/scripts/compat21-install.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+cat compat21.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+exit 0
diff --git a/release/scripts/compat22-install.sh b/release/scripts/compat22-install.sh
new file mode 100755
index 000000000000..c0d09d214d21
--- /dev/null
+++ b/release/scripts/compat22-install.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+cat compat22.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+exit 0
diff --git a/release/scripts/compat3x-install.sh b/release/scripts/compat3x-install.sh
new file mode 100755
index 000000000000..9d79d0109ff9
--- /dev/null
+++ b/release/scripts/compat3x-install.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+cat compat3x.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+exit 0
diff --git a/release/scripts/crypto-install.sh b/release/scripts/crypto-install.sh
new file mode 100755
index 000000000000..d915431c8d18
--- /dev/null
+++ b/release/scripts/crypto-install.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+_DEST=${DESTDIR:-/}
+echo "You are about to extract the CRYPTO distribution into ${_DEST} - are you SURE"
+echo "you want to do this over your installed system? If not, hit ^C now,"
+echo -n "otherwise hit return to continue. "
+read junk
+cat crypto.?? | tar --unlink -xpzf - -C ${_DEST}
+cat krb4.?? | tar --unlink -xpzf - -C ${_DEST}
+cat krb5.?? | tar --unlink -xpzf - -C ${_DEST}
+echo -n "Do you want to install the CRYPTO sources (y/n)? "
+read ans
+if [ "$ans" = "y" ]; then
+ cat scrypto.?? | tar --unlink -xpzf - -C ${_DEST}/usr/src
+ cat ssecure.?? | tar --unlink -xpzf - -C ${_DEST}/usr/src
+ cat skrb4.?? | tar --unlink -xpzf - -C ${_DEST}/usr/src
+ cat skrb5.?? | tar --unlink -xpzf - -C ${_DEST}/usr/src
+fi
+exit 0
diff --git a/release/scripts/dict-install.sh b/release/scripts/dict-install.sh
new file mode 100755
index 000000000000..eeb6c9930b78
--- /dev/null
+++ b/release/scripts/dict-install.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+cat dict.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+exit 0
diff --git a/release/scripts/dict-make.sh b/release/scripts/dict-make.sh
new file mode 100755
index 000000000000..d519342f9bcc
--- /dev/null
+++ b/release/scripts/dict-make.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+# Move the dict stuff out to its own dist
+if [ -d ${RD}/trees/bin/usr/share/dict ]; then
+ tar -cf - -C ${RD}/trees/bin/usr/share/dict . |
+ tar -xpf - -C ${RD}/trees/dict/usr/share/dict &&
+ rm -rf ${RD}/trees/bin/usr/share/dict;
+fi
+
+for i in airport birthtoken flowers inter.phone na.phone zipcodes; do
+ if [ -f ${RD}/trees/bin/usr/share/misc/$i ]; then
+ mv ${RD}/trees/bin/usr/share/misc/$i \
+ ${RD}/trees/dict/usr/share/misc;
+ fi;
+done
diff --git a/release/scripts/doFS.sh b/release/scripts/doFS.sh
new file mode 100644
index 000000000000..dd7213a9e896
--- /dev/null
+++ b/release/scripts/doFS.sh
@@ -0,0 +1,73 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+set -e
+
+export BLOCKSIZE=512
+
+if [ "$1" = "-s" ]; then
+ do_size="yes"; shift
+else
+ do_size=""
+fi
+
+FSIMG=$1; shift
+RD=$1 ; shift
+MNT=$1 ; shift
+FSSIZE=$1 ; shift
+FSPROTO=$1 ; shift
+FSINODE=$1 ; shift
+FSLABEL=$1 ; shift
+
+deadlock=20
+
+while true
+do
+ rm -f ${FSIMG}
+
+ if [ "x${MDDEVICE}" != "x" ] ; then
+ umount /dev/${MDDEVICE} 2>/dev/null || true
+ umount ${MNT} 2>/dev/null || true
+ mdconfig -d -u ${MDDEVICE} 2>/dev/null || true
+ fi
+
+ dd of=${FSIMG} if=/dev/zero count=${FSSIZE} bs=1k 2>/dev/null
+ # this suppresses the `invalid primary partition table: no magic'
+ awk 'BEGIN {printf "%c%c", 85, 170}' |\
+ dd of=${FSIMG} obs=1 seek=510 conv=notrunc 2>/dev/null
+
+ MDDEVICE=`mdconfig -a -t vnode -f ${FSIMG}`
+ if [ ! -c /dev/${MDDEVICE} ] ; then
+ if [ -f /dev/MAKEDEV ] ; then
+ ( cd /dev && sh MAKEDEV ${MDDEVICE} )
+ else
+ echo "No /dev/$MDDEVICE and no MAKEDEV" 1>&2
+ exit 1
+ fi
+ fi
+ disklabel -Brw /dev/${MDDEVICE} ${FSLABEL}
+ newfs -i ${FSINODE} -T ${FSLABEL} -o space -m 0 /dev/${MDDEVICE}c
+
+ mount /dev/${MDDEVICE}c ${MNT}
+
+ if [ -d ${FSPROTO} ]; then
+ (set -e && cd ${FSPROTO} && find . -print | cpio -dump ${MNT})
+ else
+ cp -p ${FSPROTO} ${MNT}
+ fi
+
+ df -ki ${MNT}
+
+ set `df -ki ${MNT} | tail -1`
+
+ umount ${MNT}
+ mdconfig -d -u ${MDDEVICE} 2>/dev/null || true
+
+ echo "*** Filesystem is ${FSSIZE} K, $4 left"
+ echo "*** ${FSINODE} bytes/inode, $7 left"
+ if [ "${do_size}" ]; then
+ echo ${FSSIZE} > ${FSIMG}.size
+ fi
+ break;
+done
diff --git a/release/scripts/doc-install.sh b/release/scripts/doc-install.sh
new file mode 100755
index 000000000000..aae982f67c0a
--- /dev/null
+++ b/release/scripts/doc-install.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+echo "You are about to extract the doc distribution into ${DESTDIR:-/} - are you SURE"
+echo -n "you want to do this over your installed system (y/n)? "
+read ans
+if [ "$ans" = "y" ]; then
+ cat doc.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+fi
diff --git a/release/scripts/doc-make.sh b/release/scripts/doc-make.sh
new file mode 100755
index 000000000000..a2f43b6159b8
--- /dev/null
+++ b/release/scripts/doc-make.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Create the doc dist.
+if [ -d ${RD}/trees/bin/usr/share/doc ]; then
+ ( cd ${RD}/trees/bin/usr/share/doc;
+ find . | cpio -dumpl ${RD}/trees/doc/usr/share/doc ) &&
+ rm -rf ${RD}/trees/bin/usr/share/doc
+fi
diff --git a/release/scripts/dokern.sh b/release/scripts/dokern.sh
new file mode 100755
index 000000000000..47296bdc7aae
--- /dev/null
+++ b/release/scripts/dokern.sh
@@ -0,0 +1,161 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+if [ $# -lt 1 ]; then
+ FDSIZE=NORMAL
+else
+ FDSIZE=$1
+fi
+
+ARCH="`uname -m`"
+
+# First check for the standard x86 PC class.
+if [ "${ARCH}" = "i386" ]; then
+
+if [ "${FDSIZE}" = "SMALL" ]; then
+
+sed -e '/ pci$/d' \
+ -e '/ adv/d' \
+ -e '/ ahc/d' \
+ -e '/ amd/d' \
+ -e '/ isp/d' \
+ -e '/ ncr/d' \
+ -e '/ sym/d' \
+ -e '/ de/d' \
+ -e '/ fxp/d' \
+ -e '/ tx/d' \
+ -e '/ vx/d' \
+ -e '/ wx/d' \
+ -e '/ dc/d' \
+ -e '/ pcn/d' \
+ -e '/ rl/d' \
+ -e '/ sf/d' \
+ -e '/ sis/d' \
+ -e '/ ste/d' \
+ -e '/ tl/d' \
+ -e '/ vr/d' \
+ -e '/ wb/d' \
+ -e '/ xl/d' \
+ -e '/pty/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSVMSG/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ulpt/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+
+else
+
+sed -e '/pty/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSVMSG/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/ncr/d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/wds/d' \
+ -e '/lpt/d' \
+ -e '/ppi/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ulpt/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+
+fi
+
+echo "options NETGRAPH"
+echo "options NETGRAPH_ETHER"
+echo "options NETGRAPH_PPPOE"
+echo "options NETGRAPH_SOCKET"
+
+# Otherwise maybe it's an alpha, and it has big binaries.
+elif [ "${ARCH}" = "alpha" ]; then
+
+sed -e '/pty/d' \
+ -e '/DEC_3000_300/d' \
+ -e '/DEC_3000_500/d' \
+ -e '/pass/d' \
+ -e '/ apm/d' \
+ -e '/pmtimer/d' \
+ -e '/ sl /d' \
+ -e '/ppp/d' \
+ -e '/gif/d' \
+ -e '/faith/d' \
+ -e '/gzip/d' \
+ -e '/random/d' \
+ -e '/NOBLOCKRANDOM/d' \
+ -e '/splash/d' \
+ -e '/PROCFS/d' \
+ -e '/KTRACE/d' \
+ -e '/SYSV/d' \
+ -e '/P1003_1B/d' \
+ -e '/_KPOSIX_PRIORITY_SCHEDULING/d' \
+ -e '/SOFTUPDATES/d' \
+ -e '/MFS/d' \
+ -e '/NFS_ROOT/d' \
+ -e '/MSDOSFS/d' \
+ -e '/ncr/d' \
+ -e '/ le /d' \
+ -e '/pcm/d' \
+ -e '/atapist/d' \
+ -e '/lpt/d' \
+ -e '/ppi/d' \
+ -e '/vpo/d' \
+ -e '/uhci/d' \
+ -e '/ohci/d' \
+ -e '/usb/d' \
+ -e '/ugen/d' \
+ -e '/uhid/d' \
+ -e '/ukbd/d' \
+ -e '/ulpt/d' \
+ -e '/umass/d' \
+ -e '/ums/d' \
+ -e '/urio/d' \
+ -e '/uscanner/d' \
+ -e '/aue/d' \
+ -e '/cue/d' \
+ -e '/kue/d' \
+ -e '/maxusers/d' \
+ -e 's/ident.*GENERIC/ident BOOTMFS/g'
+fi
+
+# reset maxusers to something lower
+echo "maxusers 5"
+
+echo "options NFS_NOSERVER"
+echo "options SCSI_NO_OP_STRINGS"
+echo "options SCSI_NO_SENSE_STRINGS"
diff --git a/release/scripts/driver-copy2.pl b/release/scripts/driver-copy2.pl
new file mode 100644
index 000000000000..541e3e093f32
--- /dev/null
+++ b/release/scripts/driver-copy2.pl
@@ -0,0 +1,78 @@
+#!/usr/bin/perl
+#
+# 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$
+#
+
+if ($#ARGV != 2) {
+ print STDERR "Usage: driver-copy.pl config_file src_ko_dir dst_ko_dir\n";
+ exit 1;
+}
+
+$config = $ARGV[0];
+$srcdir = $ARGV[1];
+$dstdir = $ARGV[2];
+
+open CONFIG, "< $config" or die "Cannot open $config.\n";
+while (<CONFIG>) {
+ s/#.*$//;
+ if (/^(\w+)\s+(\w+)\s+(\d+)\s+(\w+)\s+\"(.*)\"\s*$/) {
+ $flp{$2} = $3;
+ $dsc{$2} = $5;
+ }
+}
+close CONFIG;
+
+-d $srcdir or die "Cannot find $srcdir directory.\n";
+-d $dstdir or die "Cannot find $dstdir directory.\n";
+
+undef $/;
+
+foreach $f (sort keys %flp) {
+ if ($flp{$f} == 1) {
+ print STDERR "$f: There's nothing to do with driver on first floppy.\n";
+ }
+ elsif ($flp{$f} == 2) {
+ $srcfile = $srcdir . '/' . $f . '.ko';
+ $dstfile = $dstdir . '/' . $f . '.ko';
+ $dscfile = $dstdir . '/' . $f . '.dsc';
+ print STDERR "Copying $f.ko to $dstdir\n";
+ open SRC, "< $srcfile" or die "Cannot open $srcfile\n";
+ $file = <SRC>;
+ close SRC;
+ open DST, "> $dstfile" or die "Cannot open $dstfile\n";
+ print DST $file;
+ close DST;
+ open DSC, "> $dscfile" or die "Cannot open $dscfile\n";
+ print DSC $dsc{$f};
+ close DSC;
+ }
+ elsif ($flp{$f} == 3) {
+ # third driver floppy (currently not implemnted yet...)
+ print STDERR "3rd driver floppy support has not implemented yet\n";
+ exit 1;
+ }
+}
diff --git a/release/scripts/driver-remove.pl b/release/scripts/driver-remove.pl
new file mode 100644
index 000000000000..2ff5a8886d65
--- /dev/null
+++ b/release/scripts/driver-remove.pl
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+#
+# 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$
+#
+
+if ($#ARGV != 1) {
+ print STDERR "Usage: driver-remove.pl config_file BOOTMFS\n";
+ exit 1;
+}
+
+$config = $ARGV[0];
+$bootmfs = $ARGV[1];
+
+open CONFIG, "< $config" or die "Cannot open $config.\n";
+while (<CONFIG>) {
+ s/#.*$//;
+ if (/^(\w+)\s+(\w+)\s+(\d+)\s+(\w+)\s+\"(.*)\"\s*$/) {
+ $drivers{$1} = 1;
+ }
+}
+close CONFIG;
+
+open BOOTMFS, "< $bootmfs" or die "Cannot open $bootmfs.\n";
+while (<BOOTMFS>) {
+ next if (/^device\s+(\w+)/ && $drivers{$1});
+ push @bootmfs, $_;
+}
+close BOOTMFS;
+
+open BOOTMFS, "> $bootmfs" or die "Cannot open $bootmfs.\n";
+foreach (@bootmfs) {
+ print BOOTMFS;
+}
+close BOOTMFS;
diff --git a/release/scripts/games-install.sh b/release/scripts/games-install.sh
new file mode 100755
index 000000000000..6602d1c0bbf4
--- /dev/null
+++ b/release/scripts/games-install.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+cat games.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+exit 0
diff --git a/release/scripts/games-make.sh b/release/scripts/games-make.sh
new file mode 100755
index 000000000000..06716d5923f6
--- /dev/null
+++ b/release/scripts/games-make.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+# Move all the games out to their own dist
+if [ -d ${RD}/trees/bin/usr/games ]; then
+ tar -cf - -C ${RD}/trees/bin/usr/games . |
+ tar -xpf - -C ${RD}/trees/games/usr/games &&
+ rm -rf ${RD}/trees/bin/usr/games;
+fi
+
+if [ -d ${RD}/trees/bin/usr/share/games ]; then
+ tar -cf - -C ${RD}/trees/bin/usr/share/games . |
+ tar -xpf - -C ${RD}/trees/games/usr/share/games &&
+ rm -rf ${RD}/trees/bin/usr/share/games;
+fi
+
+if [ -d ${RD}/trees/bin/var/games ]; then
+ tar -cf - -C ${RD}/trees/bin/var/games . |
+ tar -xpf - -C ${RD}/trees/games/var/games &&
+ rm -rf ${RD}/trees/bin/var/games;
+fi
+
+if [ -d ${RD}/trees/manpages/usr/share/man/man6 ]; then
+ mkdir -p ${RD}/trees/games/usr/share/man/man6
+ tar -cf - -C ${RD}/trees/manpages/usr/share/man/man6 . |
+ tar -xpf - -C ${RD}/trees/games/usr/share/man/man6 &&
+ rm -rf ${RD}/trees/manpages/usr/share/man/man6
+fi
+
+if [ -d ${RD}/trees/catpages/usr/share/man/cat6 ]; then
+ mkdir -p ${RD}/trees/games/usr/share/man/cat6
+ tar -cf - -C ${RD}/trees/catpages/usr/share/man/cat6 . |
+ tar -xpf - -C ${RD}/trees/games/usr/share/man/cat6 &&
+ rm -rf ${RD}/trees/catpages/usr/share/man/cat6
+fi
diff --git a/release/scripts/info-install.sh b/release/scripts/info-install.sh
new file mode 100755
index 000000000000..2ae15dfdd4e2
--- /dev/null
+++ b/release/scripts/info-install.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+cat info.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+exit 0
diff --git a/release/scripts/info-make.sh b/release/scripts/info-make.sh
new file mode 100755
index 000000000000..2db364676c55
--- /dev/null
+++ b/release/scripts/info-make.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+# Move the info files out to their own dist
+if [ -d ${RD}/trees/bin/usr/share/info ]; then
+ tar -cf - -C ${RD}/trees/bin/usr/share/info . |
+ tar -xpf - -C ${RD}/trees/info/usr/share/info &&
+ rm -rf ${RD}/trees/bin/usr/share/info;
+fi
diff --git a/release/scripts/info.sh b/release/scripts/info.sh
new file mode 100644
index 000000000000..b1c8c5356ccf
--- /dev/null
+++ b/release/scripts/info.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+# $ANA: info.sh,v 1.3 1996/06/04 16:25:30 wollman Exp $
+ls $1.[a-z][a-z] | wc | awk '{ print "Pieces = ",$1 }'
+for FILE in $1.[a-z][a-z]; do
+ PIECE=`echo $FILE | cut -d . -f 2`
+ echo -n "cksum.$PIECE = "
+ cksum $FILE | awk ' { print $1,$2 } '
+done
diff --git a/release/scripts/manpages-install.sh b/release/scripts/manpages-install.sh
new file mode 100755
index 000000000000..d4293151ea89
--- /dev/null
+++ b/release/scripts/manpages-install.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+cat manpages.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+exit 0
diff --git a/release/scripts/manpages-make.sh b/release/scripts/manpages-make.sh
new file mode 100755
index 000000000000..5f73f71b86a4
--- /dev/null
+++ b/release/scripts/manpages-make.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Move all the manpages out to their own dist, using the bin dist as a
+# starting point.
+if [ -d ${RD}/trees/bin/usr/share/man ]; then
+ ( cd ${RD}/trees/bin/usr/share/man;
+ find . | cpio -dumpl ${RD}/trees/manpages/usr/share/man > /dev/null 2>&1) &&
+ rm -rf ${RD}/trees/bin/usr/share/man;
+fi
diff --git a/release/scripts/ports-install.sh b/release/scripts/ports-install.sh
new file mode 100755
index 000000000000..810bab0ee251
--- /dev/null
+++ b/release/scripts/ports-install.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+echo "Extracting ports tarball into ${DESTDIR}/usr"
+cat ports.tgz | tar --unlink -xpzf - -C ${DESTDIR}/usr
+exit 0
diff --git a/release/scripts/print-cdrom-packages.sh b/release/scripts/print-cdrom-packages.sh
new file mode 100755
index 000000000000..aa04add37878
--- /dev/null
+++ b/release/scripts/print-cdrom-packages.sh
@@ -0,0 +1,142 @@
+#!/bin/sh
+#
+# Author: Jordan Hubbard
+# Date: Mon Jul 10 01:18:20 2000
+# Version: $FreeBSD$
+#
+# MAINTAINER: jkh
+#
+# This script prints out the list of "minimum required packages" for
+# a given CDROM number, that numer currently referring to the 4 CD
+# "official set" published by BSDi. If there is no minimum package
+# set for the given CDROM, or none is known, the script will exit
+# with a error code of 1. At some point, this script should be extended
+# to at least cope with other official CD distributions, like non-US ones.
+#
+# usage: print-cdrom-packages.sh cdrom-number
+#
+# example: ./print-cdrom-packages.sh 1
+# will print the minimal package set for the first cdrom (what's generally
+# referred to as the installation boot CD).
+#
+# This information is codified in script form so that some definitive
+# reference for the package set info exists rather than having it
+# be left up to everybody's best guess. It's currently hard-coded directly
+# into the script but may, at some point, switch to a more sophisticated
+# data-extraction technique from the ports collection. For now, add your
+# packages to the appropriate CDROM_SET_<n> variable as /usr/ports/<your-entry>
+# so that the package name and dependency list for each can be at least be
+# obtained in an automated fashion.
+
+# usage: extract-names cd#
+extract-names()
+{
+ _FOO=`eval echo \\${CDROM_SET_$1}`
+ if [ "${_FOO}" ]; then
+ TMPNAME="/tmp/_extract_names$$"
+ rm -f ${TMPNAME}
+ for i in ${_FOO}; do
+ ( cd /usr/ports/$i && make package-name package-depends ) >> ${TMPNAME};
+ done
+ if [ -s "${TMPNAME}" ]; then
+ sort ${TMPNAME} | uniq
+ fi
+ else
+ exit 1
+ fi
+}
+
+
+## Start of set for CDROM #1
+# This is the set required by sysinstall.
+CDROM_SET_1=""
+if [ "X`uname -m`" = "Xalpha" ]; then
+CDROM_SET_1="${CDROM_SET_1} emulators/osf1_base"
+else
+CDROM_SET_1="${CDROM_SET_1} emulators/linux_base"
+fi
+CDROM_SET_1="${CDROM_SET_1} x11/XFree86-4"
+CDROM_SET_1="${CDROM_SET_1} x11/XFree86-4-clients"
+CDROM_SET_1="${CDROM_SET_1} x11/XFree86-4-documents"
+CDROM_SET_1="${CDROM_SET_1} x11/XFree86-4-libraries"
+CDROM_SET_1="${CDROM_SET_1} x11/XFree86-4-manuals"
+CDROM_SET_1="${CDROM_SET_1} x11-fonts/XFree86-4-font100dpi"
+CDROM_SET_1="${CDROM_SET_1} x11-fonts/XFree86-4-font75dpi"
+CDROM_SET_1="${CDROM_SET_1} x11-fonts/XFree86-4-fontCyrillic"
+CDROM_SET_1="${CDROM_SET_1} x11-fonts/XFree86-4-fontDefaultBitmaps"
+CDROM_SET_1="${CDROM_SET_1} x11-fonts/XFree86-4-fontEncodings"
+CDROM_SET_1="${CDROM_SET_1} x11-fonts/XFree86-4-fontLatin2"
+CDROM_SET_1="${CDROM_SET_1} x11-fonts/XFree86-4-fontScalable"
+CDROM_SET_1="${CDROM_SET_1} x11-servers/XFree86-4-FontServer"
+CDROM_SET_1="${CDROM_SET_1} x11-servers/XFree86-4-NestServer"
+CDROM_SET_1="${CDROM_SET_1} x11-servers/XFree86-4-PrintServer"
+CDROM_SET_1="${CDROM_SET_1} x11-servers/XFree86-4-Server"
+CDROM_SET_1="${CDROM_SET_1} x11-servers/XFree86-4-VirtualFramebufferServer"
+CDROM_SET_1="${CDROM_SET_1} x11/kde2"
+CDROM_SET_1="${CDROM_SET_1} x11/gnome"
+CDROM_SET_1="${CDROM_SET_1} x11-wm/afterstep"
+CDROM_SET_1="${CDROM_SET_1} x11-wm/enlightenment"
+CDROM_SET_1="${CDROM_SET_1} x11-wm/fvwm2"
+CDROM_SET_1="${CDROM_SET_1} net/pcnfsd"
+
+# This is the set of "people really want these" packages. Please add to
+# this list.
+CDROM_SET_1="${CDROM_SET_1} net/cvsup-bin"
+if [ "X`uname -m`" = "Xi386" ]; then
+CDROM_SET_1="${CDROM_SET_1} shells/ksh93"
+fi
+CDROM_SET_1="${CDROM_SET_1} shells/bash2"
+CDROM_SET_1="${CDROM_SET_1} shells/pdksh"
+CDROM_SET_1="${CDROM_SET_1} shells/zsh"
+CDROM_SET_1="${CDROM_SET_1} editors/vim5"
+CDROM_SET_1="${CDROM_SET_1} editors/emacs20"
+CDROM_SET_1="${CDROM_SET_1} www/netscape-wrapper"
+CDROM_SET_1="${CDROM_SET_1} www/netscape-remote"
+CDROM_SET_1="${CDROM_SET_1} www/netscape47-communicator"
+CDROM_SET_1="${CDROM_SET_1} www/lynx"
+CDROM_SET_1="${CDROM_SET_1} print/acroread"
+CDROM_SET_1="${CDROM_SET_1} print/xpdf"
+CDROM_SET_1="${CDROM_SET_1} print/gv"
+CDROM_SET_1="${CDROM_SET_1} print/ghostview"
+CDROM_SET_1="${CDROM_SET_1} print/a2ps-letter"
+CDROM_SET_1="${CDROM_SET_1} print/apsfilter"
+CDROM_SET_1="${CDROM_SET_1} print/ghostscript6-nox11"
+CDROM_SET_1="${CDROM_SET_1} print/psutils-letter"
+CDROM_SET_1="${CDROM_SET_1} graphics/xv"
+CDROM_SET_1="${CDROM_SET_1} mail/fetchmail"
+CDROM_SET_1="${CDROM_SET_1} mail/mutt"
+CDROM_SET_1="${CDROM_SET_1} mail/pine"
+CDROM_SET_1="${CDROM_SET_1} mail/xfmail"
+CDROM_SET_1="${CDROM_SET_1} news/tin"
+CDROM_SET_1="${CDROM_SET_1} news/slrn"
+CDROM_SET_1="${CDROM_SET_1} ftp/ncftp"
+CDROM_SET_1="${CDROM_SET_1} irc/xchat"
+CDROM_SET_1="${CDROM_SET_1} emulators/mtools"
+CDROM_SET_1="${CDROM_SET_1} misc/screen"
+CDROM_SET_1="${CDROM_SET_1} x11/rxvt"
+CDROM_SET_1="${CDROM_SET_1} astro/xearth"
+
+# VERY common build dependancies
+CDROM_SET_1="${CDROM_SET_1} devel/gmake"
+CDROM_SET_1="${CDROM_SET_1} archivers/bzip2"
+CDROM_SET_1="${CDROM_SET_1} archivers/unzip"
+CDROM_SET_1="${CDROM_SET_1} graphics/png"
+
+## End of set for CDROM #1
+
+## Start of set for CDROM #2
+## End of set for CDROM #2
+
+## Start of set for CDROM #3
+## End of set for CDROM #3
+
+## Start of set for CDROM #4
+## End of set for CDROM #4
+
+# Start of actual script.
+if [ $# -lt 1 ]; then
+ echo "usage: $0 cdrom-number"
+ exit 2
+fi
+extract-names $1
+exit 0
diff --git a/release/scripts/proflibs-install.sh b/release/scripts/proflibs-install.sh
new file mode 100755
index 000000000000..fa67ec78c626
--- /dev/null
+++ b/release/scripts/proflibs-install.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+cat proflibs.?? | tar --unlink -xpzf - -C ${DESTDIR:-/}
+cd ${DESTDIR:-/}usr/lib
+if [ -f libdescrypt_p.a ]
+then
+ ln -f -s libdescrypt_p.a libcrypt_p.a
+fi
+exit 0
diff --git a/release/scripts/proflibs-make.sh b/release/scripts/proflibs-make.sh
new file mode 100755
index 000000000000..7a60eb31e183
--- /dev/null
+++ b/release/scripts/proflibs-make.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Move the profiled libraries out to their own dist
+for i in ${RD}/trees/bin/usr/lib/*_p.a; do
+ if [ -f $i ]; then
+ mv $i ${RD}/trees/proflibs/usr/lib;
+ fi;
+done
diff --git a/release/scripts/src-install.sh b/release/scripts/src-install.sh
new file mode 100755
index 000000000000..91e83f4f0eeb
--- /dev/null
+++ b/release/scripts/src-install.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+if [ $# -lt 1 ]; then
+ echo "You must specify which components of src to extract"
+ echo "possible subcomponents are:"
+ echo
+ echo "base bin contrib etc games gnu include lib libexec"
+ echo "release sbin share sys tools ubin usbin"
+ echo
+ echo "You may also specify all to extract all subcomponents."
+ exit 1
+fi
+
+if [ "$1" = "all" ]; then
+ dists="base bin contrib etc games gnu include lib libexec release sbin share sys tools ubin usbin"
+else
+ dists="$*"
+fi
+
+echo "Extracting sources into ${DESTDIR}/usr/src..."
+for i in $dists; do
+ echo " Extracting source component: $i"
+ cat s${i}.?? | tar --unlink -xpzf - -C ${DESTDIR}/usr/src
+done
+echo "Done extracting sources."
+exit 0
diff --git a/release/scripts/tar.sh b/release/scripts/tar.sh
new file mode 100644
index 000000000000..9783e029bd03
--- /dev/null
+++ b/release/scripts/tar.sh
@@ -0,0 +1,120 @@
+#!/bin/sh -p
+#
+# Simple replacement for tar(1), using cpio(1).
+#
+# Copyright (c) 1996 Joerg Wunsch
+# 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 DEVELOPERS ``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 DEVELOPERS 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.
+#
+
+#
+# For use on the fixit floppy. External programs required:
+# cpio(1), find(1), test(1)
+#
+
+#
+# $FreeBSD$
+#
+
+archive=${TAPE:-/dev/rsa0}
+blocksize="20"
+device=""
+mode="none"
+verbose=""
+
+usage()
+{
+ echo "usage: tar -{c|t|x} [-v] [-b blocksize] [-f archive] [files...]" 1>&2
+ exit 64 # EX_USAGE
+}
+
+#
+# Prepend a hyphen to the first arg if necessary, so the traditional form
+# ``tar xvf /dev/foobar'' will work, too. More kludgy legacy forms are not
+# supported however.
+#
+
+if [ $# -lt 1 ] ; then
+ usage
+fi
+
+case "$1" in
+ -*) break
+ ;;
+ *) tmp="$1"
+ shift
+ set -- -$tmp "$@"
+ ;;
+esac
+
+while getopts "ctxvb:f:" option
+do
+ case $option in
+ [ctx])
+ if [ $mode = "none" ] ; then
+ mode=$option
+ else
+ usage
+ fi
+ ;;
+ v)
+ verbose="-v"
+ ;;
+ b)
+ blocksize="${OPTARG}"
+ ;;
+ f)
+ archive="${OPTARG## }"
+ ;;
+ *)
+ usage
+ ;;
+ esac
+done
+
+shift $(($OPTIND - 1))
+
+if [ "X${archive}" != "X-" ] ; then
+ device="-F ${archive}"
+# else: use stdin or stdout, which is the default for cpio
+fi
+
+case $mode in
+ none)
+ usage
+ ;;
+ t)
+ exec cpio -it $verbose $device --block-size="$blocksize" "$@"
+ ;;
+ x)
+ exec cpio -idmu $verbose $device --block-size="$blocksize" "$@"
+ ;;
+ c)
+ if [ $# -eq 0 ] ; then
+ # use current dir -- slightly bogus
+ set -- "."
+ fi
+ find "$@" -print |\
+ cpio -o -H ustar $verbose $device --block-size="$blocksize"
+ exit $?
+ ;;
+esac
diff --git a/release/scripts/xperimnt-install.sh b/release/scripts/xperimnt-install.sh
new file mode 100755
index 000000000000..2c55654ea280
--- /dev/null
+++ b/release/scripts/xperimnt-install.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+if [ "`id -u`" != "0" ]; then
+ echo "Sorry, this must be done as root."
+ exit 1
+fi
+echo "Extracting xperimnt tarball into ${DESTDIR}/usr/local"
+tar --unlink -xpzf xperimnt.tgz -C ${DESTDIR}/usr/local
+exit 0
diff --git a/release/texts/ABOUT.TXT b/release/texts/ABOUT.TXT
new file mode 100644
index 000000000000..70053d0cd1e3
--- /dev/null
+++ b/release/texts/ABOUT.TXT
@@ -0,0 +1,215 @@
+o About FreeBSD:
+
+What is FreeBSD? FreeBSD is an operating system based on 4.4 BSD Lite
+for Intel, AMD, Cyrix or NexGen "x86" based PC hardware and Compaq
+(formerly DEC) Alpha computers. It works with a very wide variety of PC
+peripherals and configurations and can be used for everything from
+software development to Internet Service Provision.
+
+This release of FreeBSD contains everything you need to run such a
+system, including full source code for everything. With the source
+distribution installed you can literally recompile the entire system
+from scratch with one command, making it ideal for students,
+researchers or folks who simply want to see how it all works.
+
+A large collection of 3rd party ported software (the "ports
+collection") is also provided to make it easier for you to obtain and
+install all your favorite traditional UNIX utilities for FreeBSD.
+Over 4500 ports, from editors to programming languages to graphical
+applications, make FreeBSD a powerful and comprehensive operating
+environment that extends far beyond what's provided by many commercial
+versions of UNIX.
+
+For more documentation on this system it is recommended that you
+purchase The Complete FreeBSD, available from local bookstores
+and from the FreeBSD Mall (http://www.freebsdmall.com), as well
+as the 4.4BSD Document Set from O'Reilly Associates and the USENIX
+Association, ISBN 1-56592-082-1. We have no connection with O'Reilly,
+we're just satisfied customers!
+
+If you're new to FreeBSD then you should also read EVERYTHING listed
+in the Documentation menu on the boot floppy. It may seem like a lot
+to read, but you should at least acquaint yourself with the types of
+information available should you later get stuck. Once the system is
+installed, you can also revisit this menu and use a WEB browser to
+read the installed FAQ (Frequently Asked Questions) and Handbook HTML
+documentation sets for FreeBSD. You can also use the browser to visit
+other WEB sites on the net (such as http://www.freebsd.org) if you
+have an Internet connection.
+
+NOTE: If you read no other documentation before installing a given
+version of FreeBSD, you should at least by all means *READ THE ERRATA*
+for that release so that you don't stumble over problems which have
+already been found and fixed. The ERRATA.TXT file accompanying your
+release (it should be right next to this file) is obviously already
+out of date by definition, but other copies are kept updated on the
+net and should be consulted as the "current errata" for your release
+(this is also what your ERRATA.TXT file says, by the way). These
+other copies of the errata are located at:
+
+ 1. http://www.freebsd.org/releases/
+
+ 2. ftp://ftp.freebsd.org/pub/FreeBSD/releases/<your-release>/ERRATA.TXT
+ (and any sites which keep up-to-date mirrors of this location).
+
+
+DISCLAIMER: While FreeBSD does its best to safeguard against
+accidental loss of data, it's still more than possible to WIPE OUT
+YOUR ENTIRE DISK with this installation! Please do not proceed to the
+final FreeBSD installation menu unless you've adequately backed up any
+important data first! We really mean it!
+
+
+o E-mail addresses and tech support info:
+
+For general questions, please send email to :
+
+ freebsd-questions@FreeBSD.org
+
+Please also have patience if your questions are not answered right
+away - this mailing list is staffed purely by volunteers and they also
+have real life schedules to contend with. Questions which are asked
+intelligently (e.g. not "My system doesn't work! What's wrong!?")
+also stand a far greater chance of being answered. If your question
+does not contain enough information to allow the responder to generate
+a meaningful answer, they generally won't.
+
+Bug reports submitted with the send-pr command are also logged and
+tracked in our bugs database, and you'll be kept informed of any
+changes in status during the life of the bug (or feature request).
+
+Technical comments on this release should be sent (in English!) to:
+
+ freebsd-hackers@FreeBSD.org
+
+Bug reports should be sent using the `send-pr' command or the Web page
+at http://www.freebsd.org/send-pr.html. If you cannot use either of
+these two methods, you may also send mail to:
+
+ freebsd-bugs@FreeBSD.org
+
+
+PLEASE ALSO BE SURE TO INDICATE WHICH VERSION OF FREEBSD YOU'RE
+RUNNING IN ANY BUG REPORTS OR QUESTIONS!
+
+Sorry for the caps, but you'd be amazed at how many times people
+forget this and there are many different release versions of FreeBSD
+out there now. It's imperative that we know what you're running so
+that we tell if you're suffering from a bug which has already been
+fixed.
+
+
+o WWW Resources:
+
+Our WEB site, http://www.freebsd.org, is also a very good source for
+updated information and provides a number of advanced documentation
+searching facilities. If you wish to use Netscape as your browser,
+several versions may be found in the ports collection under
+/usr/ports/www if you've installed the ports collection on your
+machine (always a good idea).
+
+Several other non-commercial browsers are also available in
+/usr/ports/www and may be compiled and installed in the same fashion.
+Many are also available as pre-compiled packages - see the Packages
+entry in the Configuration menu for more details.
+
+The Handbook and FAQ are also available as on-line documents in
+/usr/share/doc and can be read using the ``file:/usr/share/doc''
+syntax in any HTML capable browser.
+
+
+o Distributions:
+
+A typical FreeBSD distribution directory looks like this:
+
+ABOUT.TXT bin compat3x games proflibs
+HARDWARE.TXT compat1x info src tools
+INSTALL.TXT compat20 dict manpages packages
+README.TXT compat21 des doc
+RELNOTES.TXT compat22 floppies ports
+XF86336
+
+If you want to do a CDROM, FTP or NFS installation from this
+distribution directory, all you need to do is make a pair of 1.44MB
+floppies from the floppies/kern.flp and floppies/mfsroot.flp image
+files (see floppies/README.TXT for instructions on how to do this),
+boot it and follow the instructions.
+
+If you're trying to do some other type of installation, or are just
+curious about how the distribution is organized in general, what
+follows is a more thorough description of each item in more detail:
+
+The *.TXT files obviously contain documentation (ABOUT.TXT being what
+you're reading now).
+
+The XF86336 directory contains the XFree86 project's 3.3.6 release and
+consists of a series of gzip'd tar files which contain each component
+of the XFree86 distribution.
+
+The bin, dict, des, doc, games, info, manpages, proflibs, and src
+directories contain the primary distribution components of FreeBSD
+itself and are split into smaller files for easy packing onto floppies
+(should that be necessary).
+
+The compat1x, compat20, compat21, compat22, and compat3x directories
+contain distributions for compatibility with older releases and are
+distributed as single gzip'd tar files - they can be installed during
+release time or later by running their `install.sh' scripts.
+
+A typical distribution (we'll use the info distribution as an example)
+looks like this:
+
+CHECKSUM.MD5 info.ab info.ad info.inf install.sh
+info.aa info.ac info.ae info.mtree
+
+The CHECKSUM.MD5 file contains MD5 signatures for each file, should
+data corruption be suspected, and is purely for reference - it is not
+used by the actual installation and does not need to be copied with
+the rest of the distribution files. The info.a* files are split,
+gzip'd tar files, the contents of which can be viewed by doing:
+
+ cat info.a* | tar tvzf -
+
+During installation, they are automatically concatenated and extracted
+by the installation procedure.
+
+The info.inf file is also necessary since it is read by the installation
+program in order to figure out how many pieces to look for when fetching and
+concatenating the distribution. When putting distributions onto floppies,
+the .inf file MUST occupy the first floppy of each distribution set!
+
+The info.mtree file is another non-essential file which is provided
+for user reference. It contains the MD5 signatures of the *unpacked*
+distribution files and can be later used with the mtree(1) program
+to verify the installation permissions and checksums against any possible
+modifications to the file. When used with the bin distribution, this can
+be an excellent way of detecting trojan horse attacks on your system.
+
+Finally, the install.sh file is for use by those who want to install the
+distribution after installation time. To install the info distribution from
+CDROM after a system was installed, for example, you'd do:
+
+ cd /cdrom/info
+ sh install.sh
+
+And that's all there is to it! Each distribution contains its own
+install.sh file for this.
+
+
+The floppies subdirectory contains the floppy installation images and
+the floppies/README.TXT file should be read for further information
+on them.
+
+The packages and ports directories contain the FreeBSD packages and
+ports collections. Packages may be installed from the packages directory
+by running the sysinstall utility with the argument ``configPackages''
+or by feeding the individual filenames to the pkg_add(1) command.
+
+The ports collection may be installed like any other distribution
+and requires about 50MB unpacked. More information on the ports collection
+may be obtained from http://www.freebsd.org/ports or locally from
+file:/usr/share/doc/handbook if you've installed the doc distribution.
+
+Last of all, the tools directory contains various DOS tools for
+discovering disk geometries, installing boot managers and the like.
+It is purely optional and provided only for user convenience.
diff --git a/release/texts/ERRATA.TXT b/release/texts/ERRATA.TXT
new file mode 100644
index 000000000000..72f00966c357
--- /dev/null
+++ b/release/texts/ERRATA.TXT
@@ -0,0 +1,30 @@
+If you read no other documentation before installing this
+version of FreeBSD, you should at least by all means *READ
+THE ERRATA* for this release so that you don't stumble over
+problems which have already been found and fixed. This ERRATA.TXT
+file is obviously already out of date by definition, but other
+copies are kept updated on the net and should be consulted as
+the "current errata" for your release. These other copies of
+the errata are located at:
+
+ 1. http://www.freebsd.org/releases/
+
+ 2. ftp://ftp.freebsd.org/pub/FreeBSD/releases/<your-release>/ERRATA.TXT
+ (and any sites which keep up-to-date mirrors of this location).
+
+Any changes to this file are also automatically emailed to:
+
+ freebsd-current@freebsd.org
+
+For all CERT security advisories, see:
+
+ ftp://ftp.freebsd.org/pub/FreeBSD/CERT/
+
+For the latest security incident information.
+
+---- Security Advisories:
+
+Current active security advisories: None
+
+---- System Update Information:
+
diff --git a/release/texts/FLOPPIES.TXT b/release/texts/FLOPPIES.TXT
new file mode 100644
index 000000000000..4a60e5cc2a4a
--- /dev/null
+++ b/release/texts/FLOPPIES.TXT
@@ -0,0 +1,57 @@
+For a normal CDROM or network installation, all you need to copy onto
+actual floppies from this directory are the kern.flp and mfsroot.flp
+images (for 1.44MB floppies).
+
+Get two blank, freshly formatted floppies and image copy kern.flp
+onto one and mfsroot.flp onto the other. These images are NOT DOS
+files! You cannot simply copy them to a DOS or UFS floppy as
+regular files, you need to "image" copy them to the floppy with
+fdimage.exe under DOS (see the tools/ directory on your CDROM or
+FreeBSD FTP mirror) or the `dd' command in UNIX.
+
+For example:
+
+To create the kern floppy image from DOS, you'd do something like
+this:
+
+C> fdimage kern.flp a:
+
+Assuming that you'd copied fdimage.exe and kern.flp into a directory
+somewhere. You would do the same for mfsroot.flp, of course.
+
+If you're creating the boot floppy from a UNIX machine, you may find
+that one of the following:
+
+ dd if=floppies/kern.flp of=/dev/fd0
+ dd if=floppies/kern.flp of=/dev/rfd0
+ dd if=floppies/kern.flp of=/dev/floppy
+
+work well, depending on your hardware and operating system environment
+(different versions of UNIX have totally different names for the
+floppy drive - neat, huh? :-).
+
+If you're on an ALPHA machine which can network-boot its floppy images
+or you have a 2.88MB or LS-120 floppy capable of taking a 2.88MB image
+on an x86 machine, you may still wish to use the older (but now
+twice as large) boot.flp image which we also provide. That contains
+the contents of kern.flp and mfsroot.flp on a single floppy,
+essentially. This file should also be used as the boot file for those
+mastering "El Torito" bootable CD images. See the mkisofs(1) command
+for more information.
+
+Going to two installation boot floppies is a step we definitely
+would have rather avoided but we simply no longer could due to
+general code bloat and FreeBSD's many new device drivers in GENERIC.
+
+One positive side-effect of this new organizational scheme, however,
+is that it also allows one to easily make one's own kern or MFS
+floppies should a need to customize some aspect of the installation
+process or use a custom kernel for an otherwise unsupported piece of
+hardware arise. As long as the kernel is compiled with
+``options MFS'' and ``options MFS_ROOT'', it will properly look for
+and boot an mfsroot.flp image in memory when run (see how the
+/boot/loader.rc file in kern.flp does its thing). The mfsroot.flp
+image is also just a gzip'd filesystem image which is used as root,
+something which can be made rather easily using mdconfig(8).
+If none of that makes any sense to you then don't worry about it -
+just use the kern.flp and mfsroot.flp images as described above.
diff --git a/release/texts/HARDWARE.TXT b/release/texts/HARDWARE.TXT
new file mode 100644
index 000000000000..b9faa8522ae8
--- /dev/null
+++ b/release/texts/HARDWARE.TXT
@@ -0,0 +1,1029 @@
+Table of Contents
+-----------------
+0. Document Conventions
+1. Default Configuration (GENERIC kernel)
+2. Using UserConfig to change FreeBSD kernel settings
+3. LINT - other possible configurations
+4. Supported Hardware
+
+See TROUBLE.TXT for Q&A on known hardware problems.
+
+=========================================================================
+
+0. Document Conventions
+-- --------------------
+
+We have `underlined' text which represents user input with `-' symbols
+throughout this document to differentiate it from the machine output.
+
+1. Default (GENERIC) Configuration
+-- -------------------------------
+
+The following table contains a list of all of the devices that are
+present in the GENERIC kernel. This is the essential part of the
+operating system that is placed in your root partition during the
+installation process. A compressed version of the GENERIC kernel is
+also used on the installation floppy diskette and DOS boot image.
+
+The table describes the various parameters used by the driver to
+communicate with the hardware in your system. There are four
+parameters in the table, though not all are used by each and every
+device:
+
+ Port The starting I/O port used by the device, shown in hexadecimal.
+
+ IOMem The lowest (or starting) memory address used by the device,
+ also shown in hexadecimal.
+
+ IRQ The interrupt the device uses to alert the driver to an event,
+ given in decimal.
+
+ DRQ The DMA (direct memory access) channel the device uses to move
+ data to and from main memory, also given in decimal.
+
+If an entry in the table has `n/a' for a value then it means that the
+parameter in question does not apply to that device. A value of `dyn'
+means that the correct value should be determined automatically by the
+kernel when the system boots and that you don't need to worry about
+it.
+
+If an entry is marked with an *, it means that support is currently
+not available for it but should be back as soon as someone converts
+the driver to work within the new 4.0 framework.
+
+FreeBSD GENERIC kernel:
+
+ Port IRQ DRQ IOMem Description
+ ---- --- --- ----- ---------------------------------
+fdc0 3f0 6 2 n/a Floppy disk controller
+ata0 170 14 n/a n/a ATA/ATAPI controller
+ata1 170 15 n/a n/a ATA/ATAPI controller
+atadisk0 n/a n/a n/a n/a ATA disk drives
+atapicd0 n/a n/a n/a n/a ATAPI CDROM drives
+atapifd0 n/a n/a n/a n/a ATAPI floppy drives
+atapist0 n/a n/a n/a n/a ATAPI tape drives
+
+adv0 n/a n/a n/a n/a AdvanSys Narrow SCSI controllers
+adw0 n/a n/a n/a n/a AdvanSys Wide SCSI controllers
+amd0 n/a n/a n/a n/a AMD 53C974 (Tekram DC390(T))
+ncr0 n/a n/a n/a n/a NCR PCI SCSI controller
+bt0 330 dyn dyn dyn Buslogic SCSI controller
+aha0 330 dyn 5 dyn Adaptec 154x/1535 SCSI controller
+ahb0 dyn dyn dyn dyn Adaptec 174x SCSI controller
+ahc0 dyn dyn dyn dyn Adaptec 274x/284x/294x SCSI controller
+aic0 340 11 dyn dyn Adaptec 152x/AIC-6360/AIC-6260 SCSI
+ controller
+isp0 dyn dyn dyn dyn QLogic 10X0, 1240 Ultra SCSI, 1080/1280
+ Ultra2 SCSI, 12160 Ultra3 SCSI, 2X00
+ Fibre Channel SCSI controller
+dpt0 dyn dyn n/a n/a DPT RAID SCSI controllers
+amr0 dyn dyn n/a n/a AMI MegaRAID controllers
+mlx0 dyn dyn n/a dyn Mylex DAC960 RAID controllers
+twe0 dyn dyn n/a n/a 3ware Escalade RAID controllers
+asr0 dyn dyn dyn dyn DPT SmartRaid V, VI, and
+ Adaptec SCSI RAID
+mly0 dyn dyn dyn dyn Mylex AcceleRAID/eXtremeRAID
+aac dyn dyn dyn dyn Adaptec FSA family PCI SCSI RAID
+ncv dyn dyn n/a n/a NCR 53C500 based PC-Card SCSI
+nsp dyn dyn n/a dyn Workbit Ninja SCSI-3 based PC-Card SCSI
+stg dyn dyn n/a n/a TMC 18C30/50 based ISA/PC-Card SCSI
+
+wt0 300 5 1 dyn Wangtek and Archive QIC-02/QIC-36
+
+psm0 60 12 n/a n/a PS/2 Mouse
+
+mcd0 300 10 n/a n/a Mitsumi CD-ROM
+matcd0 230 n/a n/a n/a Matsushita/Panasonic CD-ROM
+scd0 230 n/a n/a n/a Sony CD-ROM
+
+sio0 3f8 4 n/a n/a Serial Port 0 (COM1)
+sio1 2f8 3 n/a n/a Serial Port 1 (COM2)
+
+ppc0 dyn 7 n/a n/a Printer ports
+
+dc0 n/a n/a n/a n/a DEC/Intel 21143 cards and workalikes
+de0 n/a n/a n/a n/a DEC DC21x40 PCI based cards
+ (including 21140 100bT cards)
+ed0 280 10 dyn d8000 WD & SMC 80xx; Novell NE1000 &
+ NE2000; 3Com 3C503; HP PC Lan+
+ep0 300 10 dyn dyn 3Com 3C509, 3C529, 3C556, 3C562D,
+ 3C563D, 3C572, 3C574X, 3C579, 3C589
+ex0 dyn dyn dyn n/a Intel EtherExpress Pro/10 cards
+fe0 300 dyn n/a n/a Allied-Telesyn AT1700, RE2000 and
+ Fujitsu FMV-180 series cards.
+fxp0 dyn dyn n/a dyn Intel EtherExpress Pro/100B and
+ Intel PRO/100+ Management Adapter
+ie0 300 10 dyn d0000 AT&T StarLAN 10 and EN100;
+ 3Com 3C507; NI5210;
+ Intel EtherExpress (8/16,16[TP]) cards
+le0 300 5 dyn d0000 Digital Equipment EtherWorks
+ 2 and EtherWorks 3
+lnc0 280 10 n/a dyn Lance/PCnet cards
+ (Isolan, Novell NE2100, NE32-VL,
+ some PCnet-PCI cards)
+pcn0 dyn dyn n/a dyn AMD PCnet/FAST, PCnet/FAST+,
+ PCnet/FAST III, PCnet/PRO, PCnet/Home,
+ and HomePNA cards
+rl0 dyn dyn n/a dyn RealTek 8129/8139 fast ethernet
+sf0 dyn dyn n/a dyn Adaptec AIC-6915 fast ethernet
+sis0 dyn dyn n/a dyn SiS 900/SiS 7016 fast ethernet
+sn0 0x300 10 n/a n/a SMC 91xx ethernet
+ste0 dyn dyn n/a dyn Sundance ST201 fast ethernet
+tl0 dyn dyn n/a dyn TI TNET100 'ThunderLAN' cards.
+tx0 dyn dyn n/a dyn SMC 9432 'Epic' fast ethernet
+wb0 dyn dyn n/a dyn Winbond W89C840F PCI based cards.
+vr0 dyn dyn n/a dyn VIA VT3043/VT86C100A PCI based cards.
+vx0 dyn dyn n/a dyn 3Com 3c59x ((Fast) Etherlink III)
+xe0 dyn dyn n/a dyn Xircom CreditCard adapters(16bit)
+xl0 dyn dyn n/a dyn 3Com 3c900, 3c905, 3c905B, 3c905C,
+ 3c980, 3cSOHO100 ((Fast) Etherlink XL)
+cs0 0x300 dyn n/a n/a Crystal Semiconductor CS89x0-based
+ cards.
+--- End of table ---
+
+
+If the hardware in your computer is not set to the same settings as
+those shown in the table and the item in conflict is not marked 'dyn',
+you will have to either reconfigure your hardware or use UserConfig
+to reconfigure the kernel to match the way your hardware is currently set
+(see the next section).
+
+If the settings do not match, the kernel may be unable to locate
+or reliably access the devices in your system.
+
+
+2. Using UserConfig to change FreeBSD kernel settings
+-- --------------------------------------------------
+
+The FreeBSD kernel on the install floppy contains drivers for every
+piece of hardware that could conceivably be used to install the rest
+of the system with. Unfortunately, PC hardware being what it is, some
+of these devices can be difficult to detect accurately, and for some,
+the process of detecting another can cause irreversible confusion.
+
+To make this process easier, FreeBSD provides UserConfig. With this
+tool the user can configure and disable device drivers before
+the kernel is loaded, avoiding potential conflicts, and eliminating
+the need to reconfigure hardware to suit the default driver settings.
+
+Once FreeBSD is installed, it will remember the changes made using
+UserConfig, so that they only need be made once.
+
+It is important to disable drivers that are not relevant to a system
+in order to minimize the possibility of interference, which can cause
+problems that are difficult to track down.
+
+UserConfig features a command line interface for users with serial
+consoles or a need to type commands, and a full screen 'visual'
+interface, which provides point-and-shoot configuration functionality.
+
+Here is a sample UserConfig screen shot in 'visual' mode:
+
+---Active Drivers---------------------------10 Conflicts------Dev---IRQ--Port--
+ Storage : (Collapsed)
+ Network :
+ NE1000,NE2000,3C503,WD/SMC80xx Ethernet adapters CONF ed0 5 0x280
+ NE1000,NE2000,3C503,WD/SMC80xx Ethernet adapters CONF ed1 5 0x300
+ Communications : (Collapsed)
+ Input : (Collapsed)
+ Multimedia :
+---Inactive Drivers-------------------------------------------Dev--------------
+ Storage :
+ Network : (Collapsed)
+ Communications :
+ Input :
+ Multimedia :
+
+
+---Parameters-for-device-ed0---------------------------------------------------
+ Port address : 0x280 Memory address : 0xd8000
+ IRQ number : 5 Memory size : 0x2000
+ Flags : 0x0000
+-------------------------------------------------------------------------------
+ IO Port address (Hexadecimal, 0x1-0x2000)
+ [TAB] Change fields [Q] Save device parameters
+
+
+ The screen is divided into four sections :
+
+ - Active Drivers. Listed here are the device drivers that are currently
+ enabled, and their basic parameters.
+ - Inactive Drivers. These drivers are present, but are disabled.
+ - Parameter edit field. This area is used for editing driver parameters.
+ - Help area. Keystroke help is displayed here.
+
+One of the Active and Inactive lists is always in use, and the current
+entry in the list will be shown with a highlight bar. If there are
+more entries in a list than can be shown, it will scroll. The bar can
+be moved up and down using the cursor keys, and moved between lists
+with the TAB key.
+
+Drivers in the Active list may be marked "CONF". This indicates that
+one or more of their parameters conflicts with another device, and
+indicates a potential for problems. The total number of conflicts is
+displayed at the top of the screen.
+
+As a general rule, conflicts should be avoided, either by disabling
+conflicting devices that are not present in the system, or by altering
+their configuration so that they match the installed hardware.
+
+In the list areas, drivers are grouped by their basic function.
+Groups can be 'Collapsed' to simplify the display (this is the default
+state for all groups). If a group is collapsed, it will be shown with
+'(Collapsed)' in the list, as above. To Expand a Collapsed group,
+position the highlight bar over the group heading and press Enter. To
+Collapse it again, repeat the process.
+
+When a device driver in the Active list is highlighted, its full
+parameters are displayed in the Parameter edit area. Note that not
+all drivers use all possible parameters, and some hardware supported
+by drivers may not use all the parameters the driver supports.
+
+To disable a driver, go to the Active list, Expand the group it is in,
+highlight the driver and press Del. The driver will move to its group
+in the Inactive list. (If the group is collapsed or off the screen,
+you may not see the driver in its new location.)
+
+To enable a driver, go to the Inactive list, Expand the group it is
+in, highlight the driver and press Enter. The highlight will move to
+the Active list, and the driver you have just enabled will be
+highlighted, ready to be configured.
+
+To configure a driver, go to the Active list, Expand the group it is
+in, highlight the driver and press Enter. The cursor will move to the
+Parameter edit area, and the device's parameters may be edited.
+
+While editing parameters, the TAB and cursor keys can be used to move
+between fields. Most numeric values (except IRQ) are entered in
+hexadecimal, as indicated by the '0x' at the beginning of the field.
+The allowable values for a given field are show in the Key Help area
+when the field is active.
+
+To finish configuring a driver, press 'Q'.
+
+Note that PCI, Microchannel and EISA devices can be probed reliably,
+therefore they are not shown in the table above nor can their settings
+be changed using UserConfig.
+
+
+3. LINT - other possible configurations
+-- ------------------------------------
+
+The following drivers are not in the GENERIC kernel but remain
+available to those who do not mind compiling a custom kernel (see
+section 6 of FreeBSD.FAQ). The LINT configuration file
+(/sys/i386/conf/LINT) also contains prototype entries for just about
+every device supported by FreeBSD and is a good general reference.
+
+The device names and a short description of each are listed below. The port
+numbers, etc, are not meaningful here since you will need to compile a
+custom kernel to gain access to these devices anyway and can thus
+adjust the addresses to match the hardware in your computer in the process.
+The LINT file contains prototype entries for all of the below which you
+can easily cut-and-paste into your own file (or simply copy LINT and edit
+it to taste):
+
+ata: Alternate high-performance driver for IDE controllers
+ctx: Cortex-I frame grabber
+cx: Cronyx/Sigma multiport sync/async
+cy: Cyclades high-speed serial driver
+el: 3Com 3C501
+fea: DEC DEFEA EISA FDDI adapter
+fpa: DEC DEFPA PCI FDDI adapter
+gp: National Instruments AT-GPIB and AT-GPIB/TNT board
+gsc: Genius GS-4500 hand scanner
+gus: Gravis Ultrasound - Ultrasound, Ultrasound 16, Ultrasound MAX
+gusxvi: Gravis Ultrasound 16-bit PCM
+hea: Efficient ENI-155p ATM PCI adapter
+hfa: FORE PCA-200E ATM PCI adapter
+ifpi: isdn4bsd AVM Fritz!card PCI driver
+ifpnp: isdn4bsd AVM Fritz!card PnP driver
+ihfc: isdn4bsd Cologne Chip HFC ISA driver
+isic: isdn4bsd Siemens/Infineon ISDN chipset driver (ISAC+HSCX/IPAC)
+iwic: isdn4bsd Winbond W6692 PCI ISDN chip driver
+joy: Joystick
+labpc: National Instrument's Lab-PC and Lab-PC+
+meteor: Matrox Meteor frame-grabber card
+bktr: Brooktree Bt848 / Bt 878 based frame-grabber cards.
+mpu: Roland MPU-401 stand-alone card
+mse: Microsoft, Logitech, ATI bus mouse ports
+mss: Microsoft Sound System
+opl: Yamaha OPL-2 and OPL-3 FM - SB, SB Pro, SB 16, ProAudioSpectrum
+pas: ProAudioSpectrum PCM and MIDI
+pca: PCM audio ("/dev/audio") through your PC speaker
+pcm: PCM audio on most modern PCI/ISA audio codecs
+psm: PS/2 mouse port
+rc: RISCom/8 multiport card
+sb: SoundBlaster PCM - SoundBlaster, SB Pro, SB16, ProAudioSpectrum
+sbmidi: SoundBlaster 16 MIDI interface
+sbxvi: SoundBlaster 16
+si: Specialix SI/XIO/SX (old and enhanced ISA, PCI, EISA) serial
+sym: Alternate high-performance driver for NCR/LSI Logic SCSI controllers
+spigot: Creative Labs Video Spigot video-acquisition board
+uart: Stand-alone 6850 UART for MIDI
+wds: Western Digital WD7000 IDE
+
+--- end of list ---
+
+
+4. Supported Hardware
+-- ------------------
+
+FreeBSD currently runs on a wide variety of ISA, VLB, EISA,
+Microchannel and PCI bus based PC's, ranging from 386sx to Pentium
+class machines (though the 386sx is not recommended). Support for
+generic IDE or ESDI drive configurations, various SCSI controller,
+network and serial cards is also provided.
+
+What follows is a list of all peripherals currently known to work with
+FreeBSD. Other configurations may also work, we have simply not as yet
+received confirmation of this.
+
+
+4.1. Disk Controllers
+---- ----------------
+
+IDE
+ATA controllers:
+ Acerlabs Aladdin
+ AMD 756
+ CMD 646
+ CMD 648 ATA66
+ CMD 649 ATA100
+ Cypress 82C693
+ Cyrex 5530
+ HighPoint HPT366
+ HighPoint HPT370
+ Intel PIIX
+ Intel PIIX3
+ Intel PIIX4
+ Intel ICH
+ Intel ICH2
+ Promise ATA100 OEM chip (pdc20265)
+ Promise Fasttrak-33
+ Promise Fasttrak-66
+ Promise Fasttrak-100
+ Promise Ultra-33
+ Promise Ultra-66
+ Promise Ultra-100
+ ServerWorks ROSB4 ATA33
+ SiS 5591
+ VIA 82C586
+ VIA 82C686
+
+WD1003 (any generic MFM/RLL - obsolete)
+WD1007 (any generic ESDI - obsolete)
+* Note: now that the wd driver has been replaced by the ata driver framework,
+which does not have bad144 support, the true MFM/RLL/ESDI drives/adapters
+have become obsolete.
+
+Adaptec 1535 ISA SCSI controllers
+Adaptec 154x series ISA SCSI controllers
+Adaptec 174x series EISA SCSI controller in standard and enhanced mode.
+Adaptec 274X/284X/2920C/294x/2950/19160/29160/3940/3950/39160
+ Narrow/Wide/Twin series EISA/VLB/PCI SCSI controllers.
+Adaptec AIC7850, AIC7860, AIC7880, AIC789x, on-board SCSI controllers.
+Adaptec 1510 series ISA SCSI controllers (not for bootable devices)
+Adaptec 152x series ISA SCSI controllers
+Adaptec AIC-6260 and AIC-6360 based boards, which includes the AHA-152x
+and SoundBlaster SCSI cards.
+
+Adaptec 2100S, 2400A, 3200S, and 3400S SCSI RAID controllers.
+
+Adaptec FSA family RAID controllers:
+ Adaptec AAC-2622
+ Adaptec AAC-364
+ Adaptec AAC-3642
+ Dell PERC 2/QC
+ Dell PERC 2/Si
+ Dell PERC 3/Di
+ Dell PERC 3/QC
+ Dell PERC 3/Si
+ HP NetRAID-4M
+
+AdvanSys SCSI controllers (all models).
+
+BusLogic MultiMaster controllers:
+
+[ Please note that BusLogic/Mylex "Flashpoint" adapters are NOT yet supported ]
+
+BusLogic MultiMaster "W" Series Host Adapters:
+ BT-948, BT-958, BT-958D
+BusLogic MultiMaster "C" Series Host Adapters:
+ BT-946C, BT-956C, BT-956CD, BT-445C, BT-747C, BT-757C, BT-757CD, BT-545C,
+ BT-540CF
+BusLogic MultiMaster "S" Series Host Adapters:
+ BT-445S, BT-747S, BT-747D, BT-757S, BT-757D, BT-545S, BT-542D, BT-742A,
+ BT-542B
+BusLogic MultiMaster "A" Series Host Adapters:
+ BT-742A, BT-542B
+
+AMI FastDisk controllers that are true BusLogic MultiMaster clones are also
+supported.
+
+DPT SmartCACHE Plus, SmartCACHE III, SmartRAID III, SmartCACHE IV and
+SmartRAID IV SCSI/RAID controllers.
+
+DPT SmartRAID V and VI SCSI RAID controllers:
+ PM1554, PM2554, PM2654, PM2865, PM2754, PM3755, PM3757
+
+AMI MegaRAID Express and Enterprise family RAID controllers:
+ MegaRAID Series 418
+ MegaRAID Enterprise 1200 (Series 428)
+ MegaRAID Enterprise 1300 (Series 434)
+ MegaRAID Enterprise 1400 (Series 438)
+ MegaRAID Enterprise 1500 (Series 467)
+ MegaRAID Enterprise 1600 (Series 471)
+ MegaRAID Elite 1500 (Series 467)
+ MegaRAID Elite 1600 (Series 493)
+ MegaRAID Express 100 (Series 466WS)
+ MegaRAID Express 200 (Series 466)
+ MegaRAID Express 300 (Series 490)
+ MegaRAID Express 500 (Series 475)
+ Dell PERC
+ Dell PERC 2/SC
+ Dell PERC 2/DC
+ HP NetRAID-1si
+ HP NetRAID-3si
+ HP Embedded NetRAID
+Booting from these controllers is supported.
+
+Mylex DAC960 and DAC1100 RAID controllers with 2.x, 3.x, 4.x and 5.x
+firmware:
+ DAC960P
+ DAC960PD
+ DAC960PDU
+ DAC960PL
+ DAC960PJ
+ DAC960PG
+ AcceleRAID 150
+ AcceleRAID 250
+ eXtremeRAID 1100
+This list includes controllers sold by Digital/Compaq in Alpha systems
+in the StorageWorks family, eg. KZPSC, KZPAC. EISA adaptes are not
+supported.
+
+Mylex PCI to SCSI RAID controllers with 6.x firmware:
+ AcceleRAID 160
+ AcceleRAID 170
+ AcceleRAID 352
+ eXtremeRAID 2000
+ eXtremeRAID 3000
+Compatible Mylex controllers not listed should work, but have not been
+verified.
+
+3ware Escalade ATA RAID controllers. All members of the 5000 and
+6000 series are supported.
+
+Qlogic Controllers:
+ Qlogic 1020, 1040 SCSI and Ultra SCSI Host Adaptes
+ Qlogic 1240 dual Ultra SCSI controllers
+ Qlogic 1080 Ultra2 LVD and 1280 Dual Ultra2 LVD Controllers
+ Qlogic 12160 Ultra3 LVD Controllers
+ Qlogic 2100 and Qlogic 2200 Fibre Channel SCSI Controllers
+
+LSI/SymBios (formerly NCR) 53C810, 53C810a, 53C815, 53C825, 53C825a,
+53C860, 53C875, 53C875a, 53C876, 53C885, 53C895, 53C895a, 53C896,
+53C1010-33, 53C1010-66, 53C1000, 53C1000R PCI SCSI controllers,
+either embedded on mainboard, or on add-on boards:
+ ASUS SC-200, SC-896
+ Data Technology DTC3130 (all variants)
+ DawiControl DC2976UW
+ Diamond FirePort (all)
+ NCR cards (all)
+ Symbios cards (all)
+ Tekram DC390W, 390U, 390F, 390U2B, 390U2W, 390U3D and 390U3W
+ Tyan S1365
+
+NCR 53C500 based PC-Card SCSI host adapters:
+ IO DATA PCSC-DV
+ KME KXLC002(TAXAN ICD-400PN, etc.), KXLC004
+ Macnica Miracle SCSI-II mPS110
+ Media Intelligent MSC-110, MSC-200
+ NEC PC-9801N-J03R
+ New Media Corporation BASICS SCSI
+ Qlogic Fast SCSI
+ RATOC REX-9530, REX-5572 (as SCSI only)
+
+TMC 18C30, 18C50 based ISA/PC-Card SCSI host adapters:
+ Future Domain SCSI2GO
+ IBM SCSI PCMCIA Card
+ ICM PSC-2401 SCSI
+ Melco IFC-SC
+ RATOC REX-5536, REX-5536AM, REX-5536M, REX-9836A
+
+DTC 3290 EISA SCSI controller in 1542 emulation mode.
+
+Tekram DC390 and DC390T controllers (maybe other cards based on the
+AMD 53c974 as well).
+
+Workbit Ninja SCSI-3 based PC-Card SCSI host adapters:
+ Alpha-Data AD-PCS201
+ IO DATA CBSC16
+
+With all supported SCSI controllers, full support is provided for
+SCSI-I & SCSI-II peripherals, including hard disks, optical disks,
+tape drives (including DAT and 8mm Exabyte), medium changers, processor
+target devices and CDROM drives. WORM devices that support CDROM commands
+are supported for read-only access by the CDROM driver. WORM/CD-R/CD-RW
+writing support is provided by cdrecord, which is in the ports tree.
+
+The following CD-ROM type systems are supported at this time:
+(cd) SCSI interface (also includes SoundBlaster SCSI)
+(matcd) Matsushita/Panasonic (Creative SoundBlaster) proprietary
+ interface (562/563 models)
+(scd) Sony proprietary interface (all models)
+(acd) ATAPI IDE interface
+
+Unmaintained drivers, they might or might not work for your hardware:
+
+(mcd) Mitsumi proprietary CD-ROM interface (all models)
+
+4.2. Network cards
+---- -------------
+
+Adaptec Duralink PCI fast ethernet adapters based on the Adaptec
+AIC-6915 fast ethernet controller chip, including the following:
+ ANA-62011 64-bit single port 10/100baseTX adapter
+ ANA-62022 64-bit dual port 10/100baseTX adapter
+ ANA-62044 64-bit quad port 10/100baseTX adapter
+ ANA-69011 32-bit single port 10/100baseTX adapter
+ ANA-62020 64-bit single port 100baseFX adapter
+
+Allied-Telesyn AT1700 and RE2000 cards
+
+Alteon Networks PCI gigabit ethernet NICs based on the Tigon 1 and Tigon 2
+chipsets, including the following:
+ 3Com 3c985-SX (Tigon 1 and 2)
+ Alteon AceNIC (Tigon 1 and 2)
+ Alteon AceNIC 1000baseT (Tigon 2)
+ DEC/Compaq EtherWORKS 1000
+ Farallon PN9000SX
+ NEC Gigabit Ethernet
+ Netgear GA620 (Tigon 2)
+ Netgear GA620T (Tigon 2, 1000baseT)
+ Silicon Graphics Gigabit Ethernet
+
+AMD PCnet/PCI (79c970 & 53c974 or 79c974)
+AMD PCnet/FAST, PCnet/FAST+, PCnet/FAST III, PCnet/PRO, HomePCI, and HomePNA.
+
+SMC Elite 16 WD8013 ethernet interface, and most other WD8003E,
+WD8003EBT, WD8003W, WD8013W, WD8003S, WD8003SBT and WD8013EBT
+based clones. SMC Elite Ultra is also supported.
+
+RealTek 8129/8139 fast ethernet NICs including the following:
+ Accton "Cheetah" EN1207D (MPX 5030/5038; RealTek 8139 clone)
+ Allied Telesyn AT2550
+ Allied Telesyn AT2500TX
+ Genius GF100TXR (RTL8139)
+ KTX-9130TX 10/100 Fast Ethernet
+ NDC Communications NE100TX-E
+ Netronix Inc. EA-1210 NetEther 10/100
+ OvisLink LEF-8129TX
+ OvisLink LEF-8139TX
+ SMC EZ Card 10/100 PCI 1211-TX
+
+Lite-On 82c168/82c169 PNIC fast ethernet NICs including the following:
+ Kingston KNE110TX
+ LinkSys EtherFast LNE100TX
+ Matrox FastNIC 10/100
+ NetGear FA310-TX Rev. D1
+
+Macronix 98713, 98713A, 98715, 98715A and 98725 fast ethernet NICs
+ Accton EN1217 (98715A)
+ Adico AE310TX (98715A)
+ CNet Pro120A (98713 or 98713A)
+ CNet Pro120B (98715)
+ NDC Communications SFA100A (98713A)
+ SVEC PN102TX (98713)
+
+Macronix/Lite-On PNIC II LC82C115 fast ethernet NICs including the following:
+ LinkSys EtherFast LNE100TX Version 2
+
+Winbond W89C840F fast ethernet NICs including the following:
+ Trendware TE100-PCIE
+
+VIA Technologies VT3043 "Rhine I" and VT86C100A "Rhine II" fast ethernet
+NICs including the following:
+ AOpen/Acer ALN-320
+ D-Link DFE-530TX
+ Hawking Technologies PN102TX
+
+Silicon Integrated Systems SiS 900 and SiS 7016 PCI fast ethernet NICs
+
+National Semiconductor DP83815 fast ethernet NICs including the following:
+ NetGear FA311-TX
+ NetGear FA312-TX
+
+Sundance Technologies ST201 PCI fast ethernet NICs including
+the following:
+ D-Link DFE-550TX
+
+SysKonnect SK-984x PCI gigabit ethernet cards including the following:
+ SK-9841 1000baseLX single mode fiber, single port
+ SK-9842 1000baseSX multimode fiber, single port
+ SK-9843 1000baseLX single mode fiber, dual port
+ SK-9844 1000baseSX multimode fiber, dual port
+ SK-9821 1000baseT copper, single port
+ SK-9822 1000baseT copper, dual port
+
+Texas Instruments ThunderLAN PCI NICs, including the following:
+ Compaq Netelligent 10, 10/100, 10/100 Proliant, 10/100 Dual-Port
+ Compaq Netelligent 10/100 TX Embedded UTP, 10 T PCI UTP/Coax, 10/100 TX UTP
+ Compaq NetFlex 3P, 3P Integrated, 3P w/ BNC
+ Olicom OC-2135/2138, OC-2325, OC-2326 10/100 TX UTP
+ Racore 8165 10/100baseTX
+ Racore 8148 10baseT/100baseTX/100baseFX multi-personality
+
+ADMtek Inc. AL981-based PCI fast ethernet NICs
+
+ADMtek Inc. AN985-based PCI fast ethernet NICs including the following:
+ LinkSys EtherFast LNE100TX v4.0/4.1
+
+ADMtek Inc. AN986-based USB ethernet NICs including the following:
+ Billionton USB100
+ D-Link DSB-650TX
+ LinkSys USB100TX
+ Melco Inc. LUA-TX
+ SMC 2202USB
+
+CATC USB-EL1210A-based USB ethernet NICs including the following:
+ Belkin F5U011
+ Belkin F5U111
+ CATC Netmate
+ CATC Netmate II
+
+Kawasaki LSI KL5KUSB101B-based USB ethernet NICs including
+the following:
+ 3Com 3c19250
+ ADS Technologies USB-10BT
+ ATen UC10T
+ Corega USB-T
+ D-Link DSB-650
+ Entrega NET-USB-E45
+ LinkSys USB10T
+ Netgear EA101
+ Peracom USB Ethernet Adapter
+ SMC 2102USB
+ SMC 2104USB
+
+ASIX Electronics AX88140A PCI NICs, including the following:
+ Alfa Inc. GFC2204
+ CNet Pro110B
+
+DEC EtherWORKS III NICs (DE203, DE204, and DE205)
+DEC EtherWORKS II NICs (DE200, DE201, DE202, and DE422)
+DEC DC21040, DC21041, or DC21140 based NICs (SMC Etherpower 8432T, DE245, etc)
+DEC FDDI (DEFPA/DEFEA) NICs
+
+Davicom DM9100 and DM9102 PCI fast ethernet NICs, including the
+following:
+ Jaton Corporation XPressNet
+
+Efficient ENI-155p ATM PCI
+
+FORE PCA-200E ATM PCI
+
+Fujitsu MB86960A/MB86965A, including the following:
+ CONTEC C-NET(PC)C Ethernet
+ Eiger Labs EPX-10BT
+ Fujitsu FMV-J182, FMV-J182A, MBH10302, MBH10303 Ethernet PCMCIA
+ Fujitsu Towa LA501 Ethernet
+ HITACHI HT-4840-11
+ NextCom J Link NC5310
+ RATOC REX-5588, REX-9822, REX-4886, REX-R280
+ TDK LAK-CD021, LAK-CD021A, LAK-CD021BX
+
+HP PC Lan+ cards (model numbers: 27247B and 27252A).
+
+Intel EtherExpress (not recommended due to driver instability)
+Intel EtherExpress Pro/10
+Intel EtherExpress Pro/100B PCI Fast Ethernet
+Intel PRO/100+ Management Adapter
+Intel Gigabit Ethernet (PRO/1000)
+
+Isolan AT 4141-0 (16 bit)
+Isolink 4110 (8 bit)
+
+Novell NE1000, NE2000, and NE2100 ethernet interface.
+PCI network cards emulating the NE2000: RealTek 8029, NetVin 5000,
+Winbond W89C940, Surecom NE-34, VIA VT86C926, etc.
+
+3Com 3C501 cards
+
+3Com 3C503 Etherlink II
+
+3Com 3C507 Etherlink 16/TP
+
+3Com 3C509, 3C529, 3C556, 3C562D, 3C563D, 3C572, 3C574X, 3C579,
+3C589/589B/589C/589D/589E/XE589ET/574TX/574B (PC-card/PCMCIA),
+3C590/592/595/900/905/905B/905C PCI,
+3C556-556B MiniPCI,
+3C575TX/575B/XFE575BT/575C/656/656B/656C Cardbus,
+and EISA (Fast) Etherlink III / (Fast) Etherlink XL
+
+3Com 3c980/3c980B/3c980C Fast Etherlink XL server adapter
+
+3Com 3cSOHO100-TX OfficeConnect adapter
+
+3Com 3c450-TX HomeConnect adapter
+
+NE2000 compatible PC-Card (PCMCIA) Ethernet/FastEthernet cards,
+including the following:
+ AR-P500 Ethernet card
+ Accton EN2212/EN2216/UE2216(OEM)
+ Allied Telesis CentreCOM LA100-PCM_V2
+ AmbiCom 10BaseT card
+ BayNetworks NETGEAR FA410TXC Fast Ethernet
+ CNet BC40 adapter
+ COREGA Ether PCC-T/EtherII PCC-T/FEther PCC-TXF/PCC-TXD
+ Compex Net-A adapter
+ CyQ've ELA-010
+ D-Link DE-650/660
+ Danpex EN-6200P2
+ ELECOM Laneed LD-CDL/TX
+ IO DATA PCLA/TE, PCET/TX, PCET/TX-R
+ IBM Creditcard Ethernet I/II
+ IC-CARD Ethernet/IC-CARD+ Ethernet
+ Linksys EC2T/PCMPC100,EtherFast 10/100 PC Card (PCMPC100 V2)
+ Melco LPC-T/LPC2-T/LPC2-CLT/LPC2-TX/LPC3-TX/LPC3-CLX
+ NDC Ethernet Instant-Link
+ National Semiconductor InfoMover NE4100
+ Network Everywhere Ethernet 10BaseT PC Card
+ Planex FNW-3600-T
+ Socket LP-E
+ Surecom EtherPerfect EP-427
+ TDK LAK-CD031,Grey Cell GCS2000 Ethernet Card
+ Telecom Device SuperSocket RE450T
+
+Megahertz X-Jack Ethernet PC-Card CC-10BT
+
+Xircom X3201 (Cardbus) based Ethernet cards,
+including the following:
+ IBM EtherJet Cardbus Adapter
+ Intel PRO/100 Mobile Cardbus (versions that uses the X3201 chipset)
+ Xircom Cardbus Realport
+ Xircom Cardbus Ethernet 10/100
+ Xircom Cardbus Ethernet II 10/100
+
+Xircom CreditCard adapters(16bit) and workalikes
+ Accton EN2226/Fast EtherCard (16-bit verison)
+ Compaq Netelligent 10/100 PC Card
+ Intel EtherExpress PRO/100 Mobile Adapter (16-bit verison)
+ Xircom 10/100 Network PC Card adapter.
+ Xircom Realport card + modem(Ethernet part)
+ Xircom CreditCard Ethernet 10/100
+ Xircom CreditCard 10Base-T "CreditCard Ethernet Adaptor IIps" (PS-CE2-10)
+ Xircom CreditCard Ethernet 10/100 + modem (Ethernet part)
+
+National Semiconductor DP8393X (SONIC) Ethernet cards
+ NEC PC-9801-83, -84, -103, and -104
+ NEC PC-9801N-25 and -J02R
+
+
+4.3. USB
+---- ---
+
+A range of USB peripherals are supported. Owing to the generic nature
+of most USB devices, with some exceptions any device of a given class
+will be supported even if not explicitly listed here.
+
+USB keyboards.
+
+USB mice.
+
+USB printers and USB to parallel printer conversion cables.
+
+USB hubs.
+
+USB ethernet controllers.
+
+
+USB Host Controllers:
+ ALi Aladdin-V.
+ AMD-756.
+ CMD Tech 670 & 673.
+ Intel 82371SB (PIIX3).
+ Intel 82371AB and EB chipsets (PIIX4).
+ NEC uPD 9210.
+ OPTi 82C861 (FireLink).
+ SiS 5571.
+ VIA 83C572 USB.
+ and any other UHCI or OHCI compliant motherboard chipset (no exceptions
+ known).
+
+
+PCI plug-in USB host controllers:
+ ADS Electronics PCI plug-in card (2 ports).
+ Entrega PCI plug-in card (4 ports).
+
+
+Specific devices reported to be working (see above for USB ethernet devices
+supported):
+
+Floppy drives/Hard disks/CDROMs/Zip drives/etc:
+ Iomega USB Zip 100Mb (primitive support still).
+ Matshita CF-VFDU03 floppy drive.
+ Microtech USB-SCSI-HD 50 USB to SCSI cable.
+ Panasonic floppy drive.
+ Y-E Data floppy drive (720/1.44/2.88Mb).
+
+Hubs:
+ Andromeda hub.
+ MacAlly self powered hub (4 ports).
+ NEC hub.
+
+Keyboards:
+ Apple iMac keyboard.
+ BTC BTC7935 keyboard with PS/2 mouse port.
+ Cherry G81-3504 keyboard.
+ Logitech M2452 keyboard.
+ MacAlly iKey keyboard.
+ Microsoft keyboard.
+
+Mice:
+ Agiler Mouse 29UO.
+ Apple iMac Mouse.
+ Belkin Mouse.
+ Chic mouse.
+ Cypress mouse.
+ Genius Niche mouse.
+ Kensington Mouse-in-a-Box.
+ Logitech wheel mouse (3 buttons).
+ Logitech PS/2 / USB mouse (3 buttons).
+ MacAlly mouse (3 buttons).
+ Microsoft IntelliMouse (3 buttons).
+ Trust Ami Mouse (3 buttons).
+
+Printer Adapters:
+ ATen parallel printer adapter.
+ Belkin F5U002 parallel printer adapter.
+ Entrega USB-to-parallel printer adapter.
+
+Modems:
+ 3Com 5605
+ Metricom Ricochet GS USB wireless modem
+
+Scanners (through SANE):
+ Perfection 636U
+ HP ScanJet 4100C, 5200C, 6300C
+
+Miscalleneous:
+ ActiveWire I/O Board.
+
+4.4. ISDN (European DSS1 [Q.921/Q.931] protocol)
+---- -------------------------------------------
+
+Asuscom ISDNlink 128K PnP
+
+AVM A1
+AVM Fritz!Card classic
+AVM Fritz!Card PCI
+
+Creatix ISDN-S0/8
+Creatix ISDN-S0/16
+Creatix ISDN-S0 PnP
+
+Dr.Neuhaus Niccy 1008
+Dr.Neuhaus Niccy 1016
+Dr.Neuhaus Niccy GO@ (ISA PnP)
+
+ELSA QuickStep 1000pro ISA
+ELSA MicroLink ISDN/PCI (same as ELSA QuickStep 1000pro PCI)
+ELSA PCC-16
+
+Sagem Cybermod (ISA PnP)
+
+Sedlbauer Win Speed
+
+Siemens I-Surf 2.0
+
+Teles S0/8
+Teles S0/16
+Teles S0/16.3 (the "c" Versions - like 16.3c - are unsupported !)
+Teles S0/16.3 PnP
+
+
+4.5. Misc
+---- ----
+
+AST 4 port serial card using shared IRQ.
+
+ARNET 8 port serial card using shared IRQ.
+ARNET (now Digiboard) Sync 570/i high-speed serial.
+
+Boca BB1004 4-Port serial card (Modems NOT supported)
+Boca IOAT66 6-Port serial card (Modems supported)
+Boca BB1008 8-Port serial card (Modems NOT supported)
+Boca BB2016 16-Port serial card (Modems supported)
+
+Comtrol Rocketport card.
+
+Cyclades Cyclom-y Serial Board.
+
+STB 4 port card using shared IRQ.
+
+SDL Communications Riscom/8 Serial Board.
+SDL Communications RISCom/N2 and N2pci high-speed sync serial boards.
+
+Specialix SI/XIO/SX multiport serial cards, with both the older
+SIHOST2.x and the new "enhanced" (transputer based, aka JET) host cards.
+ISA, EISA and PCI are supported.
+
+Stallion multiport serial boards: EasyIO, EasyConnection 8/32 & 8/64,
+ONboard 4/16 and Brumby.
+
+HP4020, HP6020, Philips CDD2000/CDD2660 and Plasmon CD-R drives.
+
+Bus mice
+
+PS/2 mice
+
+Standard PC Joystick
+
+X-10 power controllers
+
+GPIB and Transputer drivers.
+
+Genius and Mustek hand scanners.
+
+Lucent Technologies WaveLAN/IEEE 802.11 PCMCIA and ISA standard speed
+(2Mbps) and turbo speed (6Mbps) wireless network adapters and workalikes
+3COM 3crwe737A AirConnect Wireless LAN PC Card
+Cabletron RoamAbout 802.11 DS
+Compaq WL100
+Corega KK Wireless LAN PCC-11, PCCA-11
+Laneed Wireless card
+ELECOM Air@Hawk/LD-WL11/PCC
+Farallon Skyline 11Mbps Wireless
+ICOM SL-1100
+IO Data WN-B11/PCM
+Melco Airconnect WLI-PCM-L11
+NCR WaveLAN/IEEE 802.11
+NEC Wireless Card CMZ-RT-WP, PC-WL/11C, PK-WL001
+PLANEX GeoWave/GW-NS110
+TDK LAK-CD011WL
+Note: the ISA versions of these adapters are actually PCMCIA cards
+combined with an ISA to PCMCIA bridge card, so both kinds of devices
+work with the same driver.
+
+Aironet 4500/4800 series 802.11 wireless adapters. The PCMCIA,
+PCI and ISA adapters are all supported.
+Cisco Systems Aironet 340 Series (includes 340, 341, and 342 models)
+11Mbps 802.11 wireless NIC
+
+Webgear Aviator 2.4GHz wireless adapters
+
+Toshiba Mobile HDD MEHDD20A (Type II)
+
+Panasonic Flash ATA BN-040ABP3
+
+Hewlett Packard M820e (CD-writer)
+
+FAX-Modem/PC-Card
+Melco IGM-PCM56K/IGM-PCM56KH
+Nokia Card Phone 2.0 (gsm900/dcs1800 HSCSD terminal)
+
+PHS Data Commuincation Card/PC-Card
+NTT DoCoMo P-in Comp@ct
+Panasonic KX-PH405
+SII MC-P200
+
+
+4.6. Microchannel
+---- ------------
+
+Experimental support for Microchannel systems is new in FreeBSD 4.0
+
+Drivers with support for Microchannel peripherals are:
+
+aha: Adaptec AHA-1640 SCSI controller
+bt: Buslogic BT-640A and Storage Dimensions SDC3211 SCSI controllers
+ep: 3Com 3C529 network adapter
+
+
+4.7. Multimedia
+---- ----------
+
+Soundcards supported by newpcm:
+
+Advance Asound 100, 110 and Logic ALS120
+Crystal Semiconductor CS461x/462x/428x
+ENSONIQ AudioPCI ES1370/1371
+ESS ES1868, ES1869, ES1879 and ES1888
+ESS Maestro-1, Maestro-2, and Maestro-2E
+ESS Maestro-3/Allegro
+ForteMedia fm801
+Gravis UltraSound MAX/PnP
+MSS/WSS Compatible DSPs
+NeoMagic 256AV/ZX
+OPTi 931/82C931
+SoundBlaster, Soundblaster Pro, Soundblaster AWE-32, Soundblaster AWE-64
+Trident 4DWave DX/NX
+VIA Technologies VT82C686A
+Yamaha DS1 and DS1e
+
+Matrox Meteor Video frame grabber
+Creative Labs Video Spigot frame grabber
+Cortex1 frame grabber
+Various Frame grabbers based on Brooktree Bt848 and Bt878 chip.
diff --git a/release/texts/LAYOUT.TXT b/release/texts/LAYOUT.TXT
new file mode 100644
index 000000000000..c97298e6bdd3
--- /dev/null
+++ b/release/texts/LAYOUT.TXT
@@ -0,0 +1,101 @@
+===================
+Distribution format
+===================
+
+A typical FreeBSD distribution directory looks something like this:
+
+ABOUT.TXT bin compat3x games proflibs
+HARDWARE.TXT compat1x info src tools
+INSTALL.TXT compat20 dict manpages packages
+README.TXT compat21 crypto doc
+RELNOTES.TXT compat22 floppies ports
+XF86336
+
+If you want to do a CDROM, FTP or NFS installation from this
+distribution directory, all you need to do is make the 1.44MB boot
+floppies from the floppies directory (see floppies/README.TXT for
+instructions on how to do this), boot them and follow the instructions.
+The rest of the data needed during the installation will be obtained
+automatically based on your selections. If you've never installed
+FreeBSD before, you also want to read the INSTALL.TXT file for
+instructions.
+
+If you're trying to do some other type of installation or are merely
+curious about how a distribution is organized, what follows is a more
+thorough description of each item in more detail:
+
+1. The *.TXT files obviously contain documentation (this file is
+ LAYOUT.TXT) and should be read before starting an installation.
+
+2. The XF86336 directory contains the XFree86 project's 3.3.6 release and
+ consists of a series of gzip'd tar files which contain each component
+ of the XFree86 distribution.
+
+3. The bin, dict, crypto, doc, games, info, manpages, proflibs, and src
+ directories contain the primary distribution components of FreeBSD
+ itself and are split into smaller files for easy packing onto floppies
+ (should that be necessary).
+
+4. The compat1x, compat20, compat21, compat22, and compat3x directories
+ contain distributions for compatibility with older releases and are
+ distributed as single gzip'd tar files - they can be installed during
+ release time or later by running their `install.sh' scripts.
+
+5. The floppies subdirectory also contains the floppy installation images
+ and the floppies/README.TXT file should be read for further
+ information on using them.
+
+6. The packages and ports directories contain the FreeBSD packages and
+ ports collections. Packages may be installed from the packages
+ directory by running the command: ``sysinstall configPackages''
+ or by feeding individual filenames in packages/ to the pkg_add(1)
+ command.
+
+ The ports collection may be installed like any other distribution
+ and requires about 100MB unpacked. More information on the ports
+ collection may be obtained from http://www.freebsd.org/ports or
+ locally from ``file:/usr/share/doc/handbook'' if you've installed
+ the doc distribution.
+
+7. Last of all, the tools directory contains various DOS tools for
+ discovering disk geometries, installing boot managers and the like.
+ It is purely optional and provided only for user convenience.
+
+A typical distribution (we'll use the info distribution as an example)
+looks like this internally:
+
+CHECKSUM.MD5 info.ab info.ad info.inf install.sh
+info.aa info.ac info.ae info.mtree
+
+The CHECKSUM.MD5 file contains MD5 signatures for each file, should
+data corruption be suspected, and is purely for reference. It is not
+used by the actual installation and does not need to be copied with
+the rest of the distribution files. The info.a* files are split,
+gzip'd tar files, the contents of which can be viewed by doing:
+
+ cat info.a* | tar tvzf -
+
+During installation, they are automatically concatenated and extracted
+by the installation procedure.
+
+The info.inf file is also necessary since it is read by the installation
+program in order to figure out how many pieces to look for when fetching and
+concatenating the distribution. When putting distributions onto floppies,
+the .inf file MUST occupy the first floppy of each distribution set!
+
+The info.mtree file is another non-essential file which is provided
+for user reference. It contains the MD5 signatures of the *unpacked*
+distribution files and can be later used with the mtree(1) program
+to verify the installation permissions and checksums against any possible
+modifications to the file. When used with the bin distribution, this can
+be an excellent way of detecting trojan horse attacks on your system.
+
+Finally, the install.sh file is for use by those who want to install the
+distribution after installation time. To install the info distribution from
+CDROM after a system was installed, for example, you'd do:
+
+ cd /cdrom/info
+ sh install.sh
+
+And that's all there is to it! Each distribution contains its own
+install.sh file for this.
diff --git a/release/texts/README.TXT b/release/texts/README.TXT
new file mode 100644
index 000000000000..7f4fefc6e5a9
--- /dev/null
+++ b/release/texts/README.TXT
@@ -0,0 +1,105 @@
+ -----------------------------------------
+ FreeBSD 5.0 --- SNAPSHOT Version , ,
+ ----------------------------------------- /( )`
+ \ \___ / |
+This is a binary snapshot of 5.0-current, the /- _ `-/ '
+(HEAD) branch which is currently moving towards (/\/ \ \ /\
+the release of 5.0. / / | ` \
+ O O ) / |
+ `-^--'`< '
+ (_.) _ ) /
+ `.___/` /
+ `-----' /
+Feedback or offers to help with anything <----. __ / __ \
+you see in this release are most welcome <----|====O)))==) \) /====
+and should be sent to one of the approp- <----' `--' `.__,' \
+riate mailing lists - please see the | |
+ABOUT.TXT file for more information. \ / /\
+ ______( (_ / \______/
+ ,' ,-----' |
+ `--{__________)
+
+TARGET AUDIENCE:
+----------------
+This release is aimed primarily at early-adopters and the various
+other folks who want to get involved with the ongoing development
+of FreeBSD and are willing to deal with a few bumps in the road.
+We do our best to ensure that each snapshot works as advertised,
+but tracking -current is a process which frequently has its off
+days.
+
+If you're both technically proficient and know exactly what you're
+getting into here (e.g. you've been following -current) then this
+snapshot is probably for you. If you're more interested in doing
+business with FreeBSD than in playing with the cutting edge of
+technology, however, then 3.x or 4.x is almost certainly your best
+bet.
+
+
+Most information here is also available from the Documentation menu
+during installation.
+
+ ERRATA.TXT Read this file! It will tell you where to look for the
+ latest information on problems which have been found and
+ fixed since this release was created (and may bite you).
+
+ README.TXT This file
+
+ ABOUT.TXT All about FreeBSD, including contact information
+
+ RELNOTES.TXT Release Notes - what's new & different in this release
+
+ LAYOUT.TXT Information about the layout of the release directory.
+ If you are installing from floppies, it is especially
+ important that you read this section!
+
+ HARDWARE.TXT Information about the configuration of the GENERIC kernel
+ and supported hardware. New installers should read this
+ file.
+
+ INSTALL.TXT Installation instructions - new installers should read this.
+
+ UPGRADE.TXT Upgrading an existing FreeBSD installation
+
+ TROUBLE.TXT General troubleshooting information
+
+
+o It is, again, very important to check the ERRATA.TXT file for any
+ late-breaking issues with this release. If you don't read the ERRATA,
+ you will probably fall right into the same problems that have already
+ been reported (and fixed as noted in the ERRATA).
+
+
+If you're a developer/hobbiest and not interested in QA'd releases
+so much as simply keeping up to date on the latest FreeBSD technology,
+you can also install one of our "snapshot" releases.
+
+For the most up-to-date software along the RELENG_3 branch
+(also known as 3.5-stable), please install your snapshots from:
+
+ ftp://releng3.freebsd.org/pub/FreeBSD/
+
+For the most up-to-date software along the RELENG_4 branch
+(also known as 4.0-stable), now proceeding towards the release
+of FreeBSD 4.1, please install your snapshots from:
+
+ ftp://releng4.freebsd.org/pub/FreeBSD/
+
+For the latest 5.0-current (HEAD branch) snapshot releases,
+please install from:
+
+ ftp://current.freebsd.org/pub/FreeBSD
+
+If you plan to run either -Stable or -Current you MUST be
+subscribed to the appropriate mailing list, either
+freebsd-stable or freebsd-current. For information on
+subscribing to either list (or both), send an e-mail to
+majordomo@freebsd.org with the following in the body, not
+the subject, of the letter as appropriate:
+
+subscribe freebsd-stable
+subscribe freebsd-current
+end
+
+We hope you enjoy using FreeBSD as much as we enjoyed
+creating it!
diff --git a/release/texts/TROUBLE.TXT b/release/texts/TROUBLE.TXT
new file mode 100644
index 000000000000..312c6c33741f
--- /dev/null
+++ b/release/texts/TROUBLE.TXT
@@ -0,0 +1,383 @@
+===============
+Troubleshooting
+===============
+
+ Table of Contents:
+
+ Repairing an Existing FreeBSD Installation
+
+ Common Installation Problems, Q&A
+
+ Common Hardware Problems, Q&A
+
+Repairing an Existing FreeBSD Installation
+------------------------------------------
+
+FreeBSD releases 2.2.1 and later feature a "Fixit" option in the top
+menu of the boot floppy. To use it, you will also need either a
+fixit.flp image floppy, generated in the same fashion as the boot
+floppy, or the 2nd CDROM from Walnut Creek CDROM's FreeBSD
+distribution.
+
+To invoke fixit, simply boot the kern.flp floppy, choose the "Fixit"
+item and insert the fixit floppy or CDROM when asked. You will then
+be placed into a shell with a wide variety of commands available (in
+the /stand and /mnt2/stand directories) for checking, repairing and
+examining file systems and their contents. Some UNIX administration
+experience *is* required to use the fixit option!
+
+Common Installation Problems, Q&A
+---------------------------------
+
+Q: I go to boot from the hard disk for the first time after installing
+ FreeBSD, the kernel loads and probes my hardware, but stops with
+ messages like:
+
+ changing root device to wd1s1a
+ panic: cannot mount root
+
+ What is wrong? What can I do?
+
+Q: What is this 'bios_drive:interface(unit,partition)kernel_name' thing
+ that is displayed with the boot help?
+
+A: There is a longstanding problem in the case where the boot disk is
+ not the first disk in the system. The BIOS uses a different numbering
+ scheme to FreeBSD, and working out which numbers correspond to which
+ is difficult to get right.
+
+ In the case where the boot disk is not the first disk in the system,
+ FreeBSD can need some help finding it. There are two common situations
+ here, and in both of these cases, you need to tell FreeBSD where the
+ root filesystem is. You do this by specifying the BIOS disk number,
+ the disk type and the FreeBSD disk number for that type.
+
+ The first situation is where you have two IDE disks, each configured as
+ the master on their respective IDE busses, and wish to boot FreeBSD from
+ the second disk. The BIOS sees these as disk 0 and disk 1, while
+ FreeBSD sees them as wd0 and wd2.
+
+ FreeBSD is on BIOS disk 1, of type 'wd' and the FreeBSD disk number
+ is 2, so you would say:
+
+ 1:wd(2,a)kernel
+
+ Note that if you have a slave on the primary bus, the above is not
+ necessary (and is effectively wrong).
+
+ The second situation involves booting from a SCSI disk when you have
+ one or more IDE disks in the system. In this case, the FreeBSD disk
+ number is lower than the BIOS disk number. If you have two IDE disks
+ as well as the SCSI disk, the SCSI disk is BIOS disk 2, type 'da' and
+ FreeBSD disk number 0, so you would say:
+
+ 2:da(0,a)kernel
+
+ To tell FreeBSD that you want to boot from BIOS disk 2, which is
+ the first SCSI disk in the system. If you only had one IDE disk,
+ you would use '1:' instead.
+
+ Once you have determined the correct values to use, you can put the
+ command exactly as you would have typed it in the /boot.config file
+ using a standard text editor.
+ Unless instructed otherwise, FreeBSD will use the contents of this
+ file as the default response to the 'boot:' prompt.
+
+Q: I go to boot from the hard disk for the first time after installing
+ FreeBSD, but the Boot Manager prompt just prints `F?' at the boot menu
+ each time but the boot won't go any further.
+
+A: The hard disk geometry was set incorrectly in the Partition editor when
+ you installed FreeBSD. Go back into the partition editor and specify
+ the actual geometry of your hard disk. You must reinstall FreeBSD
+ again from the beginning with the correct geometry.
+
+ If you are failing entirely in figuring out the correct geometry for
+ your machine, here's a tip: Install a small DOS partition at the
+ beginning of the disk and install FreeBSD after that. The install
+ program will see the DOS partition and try to infer the correct
+ geometry from it, which usually works.
+
+ The following tip is no longer recommended, but is left here
+ for reference:
+
+ If you are setting up a truly dedicated FreeBSD server or work-
+ station where you don't care for (future) compatibility with DOS,
+ Linux or another operating system, you've also got the option to use
+ the entire disk (`A' in the partition editor), selecting the
+ non-standard option where FreeBSD occupies the entire disk from
+ the very first to the very last sector. This will leave all geometry
+ considerations aside, but is somewhat limiting unless you're never
+ going to run anything other than FreeBSD on a disk.
+
+
+Known Hardware Problems, Q & A
+------------------------------
+
+Q: mcd0 keeps thinking that it has found a device and this stops my Intel
+ EtherExpress card from working.
+
+A: Use the UserConfig utility (see HARDWARE.TXT) and disable the probing of
+ the mcd0 and mcd1 devices. Generally speaking, you should only leave
+ the devices that you will be using enabled in your kernel.
+
+
+Q: FreeBSD claims to support the 3Com PCMCIA card, but my card isn't
+ recognized when it's plugged into my laptop.
+
+A: There are a couple of possible problems. First of all, FreeBSD does
+ not support multi-function cards, so if you have a combo
+ ethernet/modem card (such as the 3C562), it won't work. The
+ default driver for the 3C589 card was written just like all of the
+ other drivers in FreeBSD, and depend on the card's own configuration
+ data stored in NVRAM to work. You must correctly configure FreeBSD's
+ driver to match the IRQ, port, and IOMEM stored in NVRAM.
+ Unfortunately, the only program capable of reading them is the
+ 3COM supplied DOS program. This program must be run on a absolutely
+ clean system (no other drivers must be running), and the program will
+ whine about CARD-Services not being found, but it will continue.
+ This is necessary to read the NVRAM values. You want to know the
+ IRQ, port, and IOMEM values (the latter is called the CIS tuple by
+ 3COM). The first two can be set in the program, the third is
+ un-settable, and can only be read. Once you have these values, set
+ them in UserConfig and your card will be recognized.
+
+
+Q: FreeBSD finds my PCMCIA network card, but no packets appear to
+ be sent even though it claims to be working.
+
+A: Many PCMCIA cards have the ability to use either the 10-Base2 (BNC)
+ or 10-BaseT connectors for connecting to the network. The driver is
+ unable to 'auto-select' the correct connector, so you must tell it
+ which connector to use. In order to switch between the two
+ connectors, the link flags must be set. Depending on the model of
+ the card, '-link0 link1' or 'link0 -link1' will choose the correct
+ network connector. You can set these in sysinstall by using the
+ 'Extra options to ifconfig:' field in the network setup screen.
+
+
+Q: The system finds my ed network card, but I keep getting device
+ timeout errors.
+
+A: Your card is probably on a different IRQ from what is specified in the
+ kernel configuration. The ed driver does not use the `soft' configuration
+ by default (values entered using EZSETUP in DOS), but it will use the
+ software configuration if you specify `?' in the IRQ field of your kernel
+ config file.
+
+ Either move the jumper on the card to a hard configuration setting
+ (altering the kernel settings if necessary), or specify the IRQ as
+ `-1' in UserConfig or `?' in your kernel config file. This will
+ tell the kernel to use the soft configuration.
+
+ Another possibility is that your card is at IRQ 9, which is shared
+ by IRQ 2 and frequently a cause of problems (especially when you
+ have a VGA card using IRQ 2! :). You should not use IRQ 2 or 9 if at
+ all possible.
+
+
+Q: I have a Matsushita/Panasonic drive but it isn't recognized by the
+ system.
+
+A: Make certain that the I/O port that the matcd driver is set to is
+ correct for the host interface card you have. (Some SoundBlaster DOS
+ drivers report a hardware I/O port address for the CD-ROM interface
+ that is 0x10 lower than it really is.)
+
+ If you are unable to determine the settings for the card by examining
+ the board or documentation, you can use UserConfig to change the 'port'
+ address (I/O port) to -1 and start the system. This setting causes the
+ driver to look at a number of I/O ports that various manufacturers
+ use for their Matsushita/Panasonic/Creative CD-ROM interfaces.
+ Once the driver locates the address, you should run UserConfig again
+ and specify the correct address. Leaving the 'port' parameter set to -1
+ increases the amount of time that it takes the system to boot, and
+ this could interfere with other devices.
+
+ The double-speed Matsushita CR-562 and CR-563 are the only drives
+ that are supported.
+
+
+Q: I booted the install floppy on my IBM ThinkPad (tm) laptop, and the
+ keyboard is all messed up.
+
+A: Older IBM laptops use a non-standard keyboard controller, so you must
+ tell the keyboard driver (atkbd0) to go into a special mode which works
+ on the ThinkPads. Change the atkbd0 'Flags' to 0x4 in UserConfig and
+ it should work fine. (Look in the Input Menu for 'Keyboard'.)
+
+
+Q: When I try to boot the install floppy, I see the following message
+ and nothing seems to be happening. I cannot enter anything from
+ the keyboard either.
+
+ Keyboard: no
+
+A: Due to lack of space, full support for old XT/AT (84-key) keyboards
+ is no longer available in the bootblocks. Some notebook computers may
+ also have this type of keyboard. If you are still using this kind of
+ hardware, you will see the above message appears when you boot from
+ the CD-ROM or an install floppy.
+
+ As soon as you see this message, hit the space bar, and you will see
+ the prompt:
+
+ >> FreeBSD/i386 BOOT
+ Default: x:xx(x,x)/boot/loader
+ boot:
+
+ Then enter `-Dh', and things should proceed normally.
+
+
+Q: I have a Matsushita/Panasonic CR-522, a Matsushita/Panasonic CR-523 or
+ a TEAC CD55a drive, but it is not recognized even when the correct I/O
+ port is set.
+
+A: These CD-ROM drives are currently not supported by FreeBSD. The command
+ sets for these drives are not compatible with the double-speed CR-562
+ and CR-563 drives.
+
+ The single-speed CR-522 and CR-523 drives can be identified by their
+ use of a CD-caddy.
+
+
+Q: I'm trying to install from a tape drive but all I get is something like:
+ sa0(aha0:1:0) NOT READY csi 40,0,0,0
+ on the screen. Help!
+
+A: There's a limitation in the current sysinstall that the tape MUST
+ be in the drive while sysinstall is started or it won't be detected.
+ Try again with the tape in the drive the whole time.
+
+
+Q: I've installed FreeBSD onto my system, but it hangs when booting from
+ the hard drive with the message: ``Changing root to /dev/da0a''.
+
+A: This problem may occur in a system with a 3com 3c509 Ethernet adaptor.
+ The ep0 device driver appears to be sensitive to probes for other
+ devices that also use address 0x300. Boot your FreeBSD system by power
+ cycling the machine (turn off and on). At the ``Boot:'' prompt specify
+ the ``-c''. This will invoke UserConfig (see Section 1. above). Use
+ the ``disable'' command to disable the device probes for all devices
+ at address 0x300 except the ep0 driver. On exit, your machine should
+ successfully boot FreeBSD.
+
+
+Q: My system can not find my Intel EtherExpress 16 card.
+
+A: You must set your Intel EtherExpress 16 card to be memory mapped at
+ address 0xD0000, and set the amount of mapped memory to 32K using
+ the Intel supplied softset.exe program.
+
+
+Q: When installing on an EISA HP Netserver, my on-board AIC-7xxx
+ SCSI controller isn't detected.
+
+A: This is a known problem, and will hopefully be fixed in the future.
+ In order to get your system installed at all, boot with the -c
+ option into UserConfig, but _don't_ use the pretty visual mode but
+ the plain old CLI mode. Type
+
+ eisa 12
+ quit
+
+ there at the prompt. (Instead of `quit', you might also type
+ `visual', and continue the rest of the configuration session in
+ visual mode.) While it's recommended to compile a custom kernel,
+ dset(8) now also understands to save this value.
+
+ Refer to the FAQ topic 3.16 for an explanation of the problem, and
+ for how to continue. Remember that you can find the FAQ on your
+ local system in /usr/share/doc/FAQ, provided you have installed the
+ `doc' distribution.
+
+
+Q: I have a Panasonic AL-N1 or Rios Chandler Pentium machine and I find
+ that the system hangs before ever getting into the installation
+ now.
+
+A: Your machine doesn't like the new i586_copyout and i586_copyin code
+ for some reason. To disable this, boot the installation boot floppy
+ and when it comes to the very first menu (the choice to drop into
+ kernel UserConfig mode or not) choose the command-line interface
+ ("expert mode") version and type the following at it:
+
+ flags npx0 1
+
+ Then proceed normally to boot. This will be saved into your kernel,
+ so you only need to do it once.
+
+
+Q: I have this CMD640 IDE controller that is said to be broken.
+
+A: Yes, it is. FreeBSD does not support this controller except through
+ the legacy 'wdc' driver.
+
+
+Q: On a Compaq Aero notebook, I get the message "No floppy devices found!
+ Please check ..." when trying to install from floppy.
+
+A: With Compaq being always a little different from other systems, they
+ do not announce their floppy drive in the CMOS RAM of an Aero notebook.
+ Therefore, the floppy disk driver assumes there is no drive configured.
+ Go to the UserConfig screen, and set the Flags value of the fdc0 device
+ to 0x1. This pretends the existence of the first floppy drive (as a
+ 1.44 MB drive) to the driver without asking the CMOS at all.
+
+
+Q: When I go to boot my Intel AL440LX ("Atlanta") -based system from the
+ hard disk the first time, it stops with a "Read Error" message.
+
+A: There appears to be a bug in the BIOS on at least some of these boards,
+ this bug results in the FreeBSD bootloader thinking that it is booting
+ from a floppy disk.
+ This is only a problem if you are not using the BootEasy boot manager.
+ Slice the disk in 'compatible' mode and install BootEasy during the
+ FreeBSD installation to avoid the bug, or upgrade the BIOS (see Intel's
+ website for details).
+
+Q: When installing on an Dell Poweredge XE, Dell proprietary RAID controller
+ DSA (Dell SCSI Array) isn't recognized.
+
+A: Configure DSA to use AHA-1540 emulation using EISA configuration utility.
+ After that FreeBSD detects DSA as Adaptec AHA-1540 SCSI controller, with
+ irq 11 and port 340. Under emulation mode system will use DSA RAID disks,
+ but you cannot use DSA specific features such as watching RAID health.
+
+
+Q: My Ethernet adapter is detected as an AMD PCnet-FAST (or similar) but
+ it doesn't work. (Eg. onboard Ethernet on IBM Netfinity 5xxx or 7xxx)
+
+A: The 'lnc' driver is currently faulty, and will often not work correctly
+ with the PCnet-FAST and PCnet-FAST+. You need to install a different
+ Ethernet adapter.
+
+
+Q: I have an IBM EtherJet PCI card, it is detected by the 'fxp' driver
+ correctly, but the lights on the card don't come on and it doesn't
+ connect to the network.
+
+A: We don't understand why this happens. Neither do IBM (we asked them).
+ The card is a standard Intel EtherExpress Pro/100 with an IBM label
+ on it, and these cards normally work just fine. You may see these
+ symptoms only in some IBM Netfinity servers. The only solution is to
+ install a different Ethernet adapter.
+
+
+Q: When I configure the network during installation on an IBM Netfinity
+ 3500, the system freezes.
+
+A: There is a problem with the onboard Ethernet in the Netfinity 3500
+ which we have not been able to identify at this time. It may be
+ related to the SMP features of the system being misconfigured. You
+ will have to install another Ethernet adapter and avoid attempting
+ to configure the onboard adapter at any time.
+
+Q: When I install onto a drive managed by a Mylex PCI RAID controller,
+ the system fails to boot (eg. with a "read error" message).
+
+A: There is a bug in the Mylex driver which results in it ignoring
+ the '8GB' geometry mode setting in the BIOS. Use the 2GB mode
+ instead.
+
+[ Please send hardware tips for this Q&A section to jkh@freebsd.org ]
diff --git a/release/texts/UPGRADE.TXT b/release/texts/UPGRADE.TXT
new file mode 100644
index 000000000000..5c8f445f9208
--- /dev/null
+++ b/release/texts/UPGRADE.TXT
@@ -0,0 +1,179 @@
++===================== Upgrading FreeBSD ==========================+
+| |
+| 0.0 Preface |
+| 0.1 DISCLAIMER |
+| 0.2 IMPORTANT NOTES |
+| |
+| 1.0 Introduction |
+| 1.1 Upgrade Overview |
+| |
+| 2.0 Procedure |
+| 2.1 Backup |
+| 2.2 Mount Filesystems |
+| 2.3 Select Distributions |
+| 2.4 After Installation |
+| |
+| 3.0 Alternative Upgrade Techniques |
+| |
++=====================================================================+
+
+0.1 DISCLAIMER
+--- ----------
+
+While the FreeBSD upgrade procedure does its best to safeguard against
+accidental loss of data, it is still more than possible to WIPE OUT YOUR
+ENTIRE DISK with this installation! Please do not accept the final
+confirmation request unless you have adequately backed up any important
+data files.
+
+0.2 IMPORTANT NOTES
+--- ---------------
+
+These notes assume that you are using the version of sysinstall supplied
+with the version of FreeBSD to which you intend to upgrade. Using a
+mismatched version of sysinstall is almost guaranteed to cause problems
+and has been known to leave systems in an unusable state. The most
+commonly made mistake in this regard is the use of an old copy of
+/stand/sysinstall from an existing installation to upgrade to a newer
+version of FreeBSD. This is NOT recommended. You should instead boot
+from the installation media to do an upgrade.
+
+Furthermore, if you are upgrading from FreeBSD 2.2.5 or earlier, see
+section 2.4 for important details regarding changes to the /etc/fstab
+file required during the upgrade procedure.
+
+1.0 Introduction
+--- ------------
+
+The upgrade procedure replaces distributions selected by the user
+with those corresponding to the new FreeBSD release. It preserves
+standard system configuration data, as well as user data, installed
+packages and other software.
+
+Administrators contemplating an upgrade are encouraged to study this
+document in its entirety before commencing an upgrade. Failure to do so
+may result in a failed upgrade or loss of data.
+
+1.1 Upgrade Overview
+--- ----------------
+Upgrading of a distribution is performed by extracting the new version of
+the component over the top of the previous version. Files belonging to
+the old distribution are not deleted.
+
+System configuration is preserved by retaining and restoring the
+previous version of the following files:
+
+ Xaccel.ini, adduser.conf, aliases, aliases.db, amd.map, crontab,
+ csh.cshrc, csh.login, csh.logout, daily, disktab, dm.conf, exports,
+ fbtab, fstab, ftpusers, gettytab, gnats, group, hosts, hosts.equiv,
+ hosts.lpd, inetd.conf, kerberosIV, localtime, login.access,
+ mail.rc, make.conf, manpath.config, master.passwd, mib.txt, modems,
+ monthly, motd, namedb, networks, nsswitch.conf, passwd, phones,
+ ppp, printcap, profile, protocols, pwd.db, rc, rc.firewall,
+ rc.i386, rc.local, rc.network, rc.conf, remote, resolv.conf, rmt,
+ security, sendmail.cf, services, shells, skeykeys, spwd.db,
+ supfile, syslog.conf, termcap, ttys, uucp, weekly
+
+The versions of these files which correspond to the new version are
+moved to /etc/upgrade/. The system administrator may peruse these new
+versions and merge components as desired. Note that many of these files
+are interdependent, and the best merge procedure is to copy all
+site-specific data from the current files into the new.
+
+During the upgrade procedure, the administrator is prompted for a
+location into which all files from /etc/ are saved. In the event that
+local modifications have been made to other files, they may be
+subsequently retrieved from this location.
+
+2.0 Procedure
+--- ---------
+
+This section details the upgrade procedure. Particular attention is
+given to items which substantially differ from a normal installation.
+
+2.1 Backup
+--- ------
+
+User data and system configuration should be backed up before
+upgrading. While the upgrade procedure does its best to prevent
+accidental mistakes, it is possible to partially or completely destroy
+data and configuration information.
+
+2.2 Mount Filesystems
+--- -----------------
+
+The disklabel editor is entered with the nominated disk's filesystem
+devices listed. Prior to commencing the upgrade, the administrator
+should make a note of the device names and corresponding mountpoints.
+These mountpoints should be entered here. DO NOT set the 'newfs flag'
+for any filesystems, as this will cause data loss.
+
+2.3 Select Distributions
+--- --------------------
+
+When selecting distributions, there are no constraints on which must be
+selected. As a general rule, the 'bin' distribution should be selected
+for an update, and the 'man' distribution if manpages are already
+installed. Other distributions may be selected beyond those originally
+installed if the administrator wishes to add additional functionality.
+
+2.4 After Installation
+--- ------------------
+
+Once the installation procedure has completed, the administrator is
+prompted to examine the new configuration files. At this point, checks
+should be made to ensure that the system configuration is valid. In
+particular, the /etc/rc.conf and /etc/fstab files should be checked.
+
+Read the following, but DO NOT update /etc/fstab as described below
+until the new system has booted correctly. The upgrade procedure
+replaces the previous FreeBSD kernel with a GENERIC kernel, and a custom
+kernel may need to be generated to suit the local system configuration.
+
+IMPORTANT NOTE:
+==============
+FreeBSD 2.2.6 introduced a change in the naming of the device from
+which the root filesystem is mounted. This change affects all systems,
+however user intervention is only required for systems undergoing an
+upgrade installation from a version prior to FreeBSD 2.2.6.
+
+Previously, the root filesystem was always mounted from the
+compatibility slice, while other partitions on the same disk were
+mounted from their true slice. This might, for example, have resulted
+in an /etc/fstab file like:
+
+# Device Mountpoint FStype Options Dump Pass#
+/dev/wd0s2b none swap sw 0 0
+/dev/wd0a / ufs rw 1 1
+/dev/wd0s2f /local0 ufs rw 1 1
+/dev/wd0s2e /usr ufs rw 1 1
+
+For FreeBSD 2.2.6 and later, this format changes so that the device for
+'/' is consistent with others. Also, the driver for the ATA-drives has
+changed from wd(4) to ad(4), so the new file could look something like:
+
+# Device Mountpoint FStype Options Dump Pass#
+/dev/ad0s2b none swap sw 0 0
+/dev/ad0s2a / ufs rw 1 1
+/dev/ad0s2f /local0 ufs rw 1 1
+/dev/ad0s2e /usr ufs rw 1 1
+
+
+If /etc/fstab is not updated manually in this case, the system will
+issue a warning message whenever / is mounted (normally at startup)
+indicating the change that must be made. In addition, trouble may be
+experienced if the root filesystem is not correctly unmounted, whereby
+the root filesystem will not be marked clean at the next reboot.
+
+This change should be made as soon as the upgraded system has been
+successfully rebooted.
+
+3.0 Alternative Upgrade Techniques
+--- ------------------------------
+
+Those interested in an upgrade method that allows more flexibility and
+sophistication should take a look at the "The Cutting Edge" chapter in the
+Handbook (http://www.FreeBSD.org/docs/en/books/handbook/cutting-edge.html)
+which describes how to upgrade FreeBSD from the source code. This method
+requires reliable network connectivity, extra disk space and spare time,
+but has advantages for networks and other more complex installations.
diff --git a/release/texts/alpha/HARDWARE.TXT b/release/texts/alpha/HARDWARE.TXT
new file mode 100644
index 000000000000..2253a29934ef
--- /dev/null
+++ b/release/texts/alpha/HARDWARE.TXT
@@ -0,0 +1,1898 @@
+ FreeBSD/alpha Hardware Information
+ ==================================
+
+This file is maintained by Wilko Bulte <wilko@freebsd.org>
+
+Additions, corrections and constructive criticism are invited. In
+particular information on system quirks is more than welcome.
+
+
+Overview
+--------
+
+This document tries to provide a starting point for those who want to start
+running FreeBSD on an Alpha-based machine. It is aimed at providing
+background information on the various hardware designs. It is not a
+replacement for the systems manuals.
+
+The information is structured as follows:
+
+- general hardware requirements to run FreeBSD on Alpha.
+- system specific information for each of the systems/boards supported
+ by FreeBSD/alpha.
+- information on expansion boards for FreeBSD/alpha, including things
+ that differ from what is in the generic supported hardware list.
+
+Note: you will see references to DEC, Digital Equipment Corporation and
+Compaq used more or less interchangeably. Now that Compaq has acquired Digital
+Equipment it would be more correct to refer to Compaq-only.
+
+
+In general, what do you need to run FreeBSD/alpha?
+--------------------------------------------------
+
+Obviously you will need an Alpha machine that FreeBSD/alpha knows about.
+Alpha machines are NOT like PCs. There are considerable differences
+between the various chip sets and mainboard designs. This means that a kernel
+needs to know the intimate details of a particular machine before it can run
+on it. Throwing some odd GENERIC kernel at unknown hardware is almost
+guaranteed to fail miserably.
+
+For a machine even to be considered for FreeBSD use please make sure it has
+the SRM console firmware installed. Or at least make sure that SRM console
+firmware is available for this particular machine type. If FreeBSD does not
+currently support your machine type, there is a good chance that this will
+change at some point in time, assuming SRM is available.
+
+Machines with the ARC or AlphaBIOS console firmware were intended for
+WindowsNT. Some of them have SRM firmware available in the system ROMs
+which you only have to select (via an ARC or AlphaBIOS menu). In other cases
+you will have to re-flash the ROMs with SRM code. Check on
+http://ftp.digital.com/pub/DEC/Alpha/firmware to see what is available
+for your particular system. In any case: no SRM -> no FreeBSD (or NetBSD,
+OpenBSD, Tru64 Unix or OpenVMS for that matter). With the demise of
+WindowsNT/alpha a lot of former NT boxes are sold on the second hand
+market. They have little or no trade-in value when they are NT-only from the
+console perspective. So, be suspicious if the price appears too good.
+
+Known non-SRM machines are:
+ Digital XL series
+ Digital XLT series
+ Samsung PC164UX
+ Samsung 164B
+
+To complicate things a bit further: Digital used to have so called
+'white-box' Alpha machines destined as NT-only and 'blue-box' Alpha machines
+destined for OpenVMS and Digital Unix. These names are based on the color
+of the cabinets, 'FrostWhite' and 'TopGunBlue' respectively.
+Although you could put the SRM console on the whitebox, OpenVMS and Digital
+Unix will refuse to boot on them. FreeBSD in post-4.0R will run on both the
+white and the blue-box variants. Before someone asks: the white ones had a
+rather different (read: cheaper) price tag.
+
+As part of the SRM you will get the so called OSF/1 PAL code (OSF/1 being the
+initial name of Digital's Unix offering on Alpha). The PAL code can be thought
+of as a software abstraction layer between the hardware and the operating
+system. It uses normal CPU instruction plus a handful of privileged
+instructions specific for PAL use. PAL is not microcode by the way.
+The ARC firmware contains a different PAL code, geared towards WinNT and in
+no way suitable for use by FreeBSD (or more generic: Unix or OpenVMS).
+Before someone asks: Linux/alpha brings its own PAL code, allowing it to
+boot on ARC & AlphaBIOS. There are various reasons why this is not a
+very good idea in the eyes of the *BSD folks. I don't want to go into
+details here.
+
+There is another pitfall ahead: you will need a disk adapter that the SRM
+console recognizes in order to be able to boot from your disk. What is
+acceptable to SRM as a boot adapter is unfortunately system and SRM version
+dependent. For older PCI based machines this means you will need either
+a NCR/Symbios 53C810 based adapter, or a Qlogic 1020/1040 based adapter.
+Some machines come with a SCSI chip embedded on the mainboard. Newer machine
+designs and SRM versions will be able to work with later SCSI chips/adapters.
+Check out the machine specific info below. Please note that the rest
+of this discussion only refers to Symbios chips, this is meant to include
+the older chips that still have NCR stamped on them. Symbios bought the NCR
+designs.
+
+The problem might bite those who have machines that started their lives as
+WinNT boxes. The ARC or AlphaBIOS knows about *other* adapter types that it
+can boot from than the SRM. For example you can boot from an Adaptec 2940UW
+with ARC but (generally) not with SRM. Some newer machine types have introduced
+Adaptec boot support. Please consult the machine specific section for details.
+
+Some adapters that cannot be booted from work fine for data-only disks.
+The differences between SRM and ARC could also get you pre-packaged
+IDE CDROMs and hard drives in some (former NT) systems.
+SRM versions exist (depends on the machine type) that can boot
+from IDE disks and CDROMs. Check the machine specific section for details.
+
+FreeBSD/alpha 4.0 and later can be booted from the distribution CDROM.
+Earlier versions needed booting from a 2-floppy set.
+
+If you don't have/want a local disk drive you can boot via the Ethernet.
+This assumes a Ethernet adapter/chip that is recognized by the SRM.
+Generally speaking this boils down to either a 21040 or 21142 or 21143
+based Ethernet interface. Older machines / SRM versions may not recognize
+the 21142 / 21143 Fast Ethernet chips, you are limited to using 10Mbit
+Ethernet for net booting those machines. Non-DEC cards based on said chips will
+generally (but are not guaranteed to) work. Note that Intel took over the
+21x4x chips when it bought Digital Semiconductor. So you might see an Intel
+logo on them these days. Recent machine designs have SRM support for
+Intel 8255x Ethernet chips.
+
+Alpha machines can be run with SRM on a graphics console or on
+a serial console. ARC can be run on a serial consoles if need be. VT100
+emulation with 8 bit controls should at least allow you to switch from
+ARC to SRM mode without having to install a graphics card first.
+
+If you want to run your Alpha without a monitor/graphics card
+just don't connect a keyboard/mouse to the machine. Instead hook
+up a serial terminal[emulator] to serial port #1. The SRM will
+talk 9600N81 to you. This can be really practical for debugging purposes.
+Beware: some/most (?) SRMs will also present you with a console prompt at
+serial port #2. The booting kernel, however, will display the boot messages
+on serial port #1 and will also put the console there. This can be extremely
+confusing.
+
+Most PCI based Alphas can use ordinary PC-type VGA cards. The SRM contains
+enough smarts to make that work. It does not, however, mean that each and
+every PCI VGA card out on the street will work in an Alpha machine. Things
+like S3 Trio64, Mach64, and Matrox Millennium generally work. Old ET4000
+based ISA cards have also worked for me. But ask around first before buying.
+Please note that TGA cards are not supported as FreeBSD console display cards.
+
+Most PCI devices from the PC-world will also work in FreeBSD/alpha PCI-based
+machines. Check the /sys/alpha/conf/GENERIC file for the latest word on
+this. Be careful to check the appropriate machine type's discussion
+in case you want to use PCI cards that have PCI bridge chips on them.
+In some cases you might encounter problems with PCI cards not handling
+PCI parity correctly. This can lead to panics. PCI parity checking can be
+disabled using the following SRM command: SET PCI_PARITY OFF. This is not
+a FreeBSD problem, all operating systems running on Alpha hardware will
+need this workaround.
+
+If your system (also) contains EISA expansion slots you will need to run
+the EISA Configuration Utility (ECU) after you have installed EISA cards
+or have upgraded your console firmware.
+
+Parallel ports that can be found on most Alpha machines are supported.
+
+For Alpha CPUs you will find multiple generations. The original Alpha
+design is the 21064. It was produced in a chip process called MOS4,
+chips made in this process are nicknamed EV4. Newer CPUs are 21164, 21264
+etc. You will see designations like EV4S, EV45, EV5, EV56, EV6, EV67.
+The EVs with double digit numbers are slightly improved versions. For example
+EV45 has an improved FPU and 16 kByte on-chip separate I & D caches compared
+to the EV4 on which it is based. Rule of thumb: the higher the digit
+immediately following 'EV' the more desirable (read: faster / more modern).
+
+For memory you want at least 32 Mbytes. I have had FreeBSD/alpha run on a
+16 Mbyte system but you will not like that. Kernel build times halved when
+going to 32 Mbytes. Note that the SRM steals 2Mbyte from the total system
+memory (and keeps it). For more serious use >= 64Mbyte is recommended.
+
+While on the subject of memory: pay close attention to the type of memory
+your machine uses. There are very different memory configurations and
+requirements for the various machines.
+
+Final word: I expect the above to sound a bit daunting to the first-time
+Alpha user. Don't be daunted too much. And do feel free to ask questions.
+
+
+System specific information
+---------------------------
+
+Below is an overview of the hardware that FreeBSD/alpha runs on.
+This list will definitely grow, a look in /sys/alpha/conf/GENERIC
+can be enlightening. Alpha machines are often best known by their project
+code name. When known these are listed below in ().
+
+*
+* AXPpci33 ("NoName")
+*
+The NoName is a baby-AT mainboard based on the 21066 LCA (Low Cost Alpha)
+processor. It was originally designed for OEM-use. The LCA chip includes
+almost all of the logic to drive a PCI bus and the memory subsystem.
+All of this makes for a low-priced design.
+
+Due to the limited memory interface the system is not particularly
+fast in case of cache misses. As long as you stay inside the on-chip cache
+the CPU is comparable to a 21064 (first generation Alpha). These boards
+should be very cheap to obtain these days (even here in the Netherlands
+they were sold new for US$ 25).
+
+Features:
+- 21066 Alpha CPU at 166 MHz or 21066A CPU at 233MHz
+ (21068 CPUs are also possible, but are even slower. Never seen/used one)
+- memory bus: 64 bits
+- on-board Bcache / L2 cache: 0, 256k or 1 Mbyte (uses DIL chips)
+- PS/2 mouse & keyboard port OR 5pin DIN keyboard (2 mainboard models)
+- memory: PS/2 style 72 pin 36 bit Fast Page Mode SIMMs,
+ 70ns or better,
+ installed in pairs of 2,
+ 4 SIMM sockets
+ uses ECC
+- 512kB Flash ROM for the console code.
+- 2x 16550A serial ports, 1x parallel port, floppy interface
+- 1x embedded IDE interface
+- expansion: 3 32 bit PCI slots (1 shared with ISA)
+ 5 ISA slots (1 shared with PCI)
+- embedded Fast SCSI using a Symbios 53C810 chip
+
+SRM:
+NoNames can either have SRM *or* ARC console firmware in their Flash ROM.
+The Flash ROM is not big enough to hold both ARC and SRM at the same time
+and allow software selection of alternate console code. But you need
+SRM-only anyway.
+
+Cache:
+Cache for the NoNames are 15 or 20 ns DIL chips. For a 256 kByte cache you
+want to check your junked 486 mainboard. Chips for a 1 Mbyte cache are a rarer
+breed unfortunately. Getting at least a 256kByte cache is recommended
+performance wise. Cache-less they are really slow.
+
+Power:
+The NoName mainboard has a PC/AT-standard power connector. It also has
+a power connector for 3.3 Volts. No need to rush out to get
+a new power supply. The 3.3 Volts is only needed in case you run 3.3 Volts
+PCI expansion boards.
+
+IDE:
+The IDE interface is supported by FreeBSD and requires a line in the
+kernel configuration file as follows:
+
+ device ata0 at isa? port IO_WD1 irq 14
+
+The SRM console unfortunately cannot boot from IDE disks.
+
+Memory:
+Make sure you use true 36 bit SIMMs, and only FPM (Fast Page Mode). EDO RAM
+or SIMMs with fake parity *will not work* (the board uses the 4 extra bits
+for ECC!). 33 bit FPM SIMMs will for the same reason not work either.
+
+Keyboard/mouse:
+Given the choice, get the PS/2-variant mainboard. Apart from giving you a
+mouse port as bonus it is directly supported by Tru64 Unix in case you ever
+want/need to run it. The "DIN-plug"-variant should work OK for FreeBSD.
+
+The OEM manual is recommended reading.
+See ftp://ftp.digital.com/pub/DEC/axppci/design_guide.ps
+
+The kernel configuration file for a NoName kernel must contain:
+ options DEC_AXPPCI_33
+ cpu EV4
+
+
+*
+* Universal Desktop Box (UDB or "Multia")
+*
+
+Note: Multia can be either Intel or Alpha CPU based. We assume Alpha based
+ ones here for obvious reasons.
+
+Multia is a small desktop box intended as a sort of personal workstation.
+They come in a considerable number of variations, check closely what you
+get.
+
+Features:
+- 21066 Alpha CPU at 166 MHz or 21066A CPU at 233MHz
+- memory bus: 64 bits
+- on-board Bcache / L2 cache: COAST-like 256 kByte cache module
+ 233MHz models have 512kByte of cache
+ 166MHz models have soldered-on 256kB caches
+- PS/2 mouse & keyboard port
+- memory: PS/2 style 72 pin 36 bit Fast Page Mode SIMMs,
+ 70ns or better,
+ installed in pairs of 2,
+ 4 SIMM sockets
+ uses ECC
+- 2x 16550A serial ports, 1x parallel port, floppy interface
+- Intel 82378ZB PCI to ISA bridge
+- 1x embedded 21040 based 10Mbit Ethernet, AUI or 10base2 connector
+- expansion: 1 32 bit PCI slot, 2 PCMCIA slots
+- on-board Crystal CS4231 or AD1848 sound chip
+- embedded Fast SCSI using a Symbios 53C810 chip on the PCI riser card
+
+SRM/ARC:
+Multia has enough Flash ROM to store both SRM and ARC code at the same time
+and allow software selection of one of them.
+
+Expansion:
+Multia has only one 32 bit PCI slot for expansion, and it is only
+suitable for a small form factor PCI card too. In sacrificing the PCI slot
+space you can mount a 3.5" hard disk drive. Mounting stuff may have come
+with your Multia. Adding a 3.5" disk is not a recommended upgrade due to
+the limited power rating of the power supply and the extremely marginal
+cooling of the system box. Don't!
+
+Multia also has 2 PCMCIA expansion slots. These are currently unsupported.
+
+CPU:
+The CPU might or might not be socketed, check before considering CPU upgrade
+hacks. The low-end Multias have a soldered-in CPU.
+
+Graphics:
+It comes with a TGA based graphics on-board. Which is not suitable for
+console use with FreeBSD. Which means you will have to run it using a
+serial console. Note that the boot of the installation disk will appear
+to work fine using the TGA console, but then switches to using the
+serial port. This is even mentioned during by installer (but never read
+by the human doing the install..). Your keyboard appears dead from that point
+on.
+
+Serial:
+Multia has 2 serial ports but routes both of them to the outside world
+on a single 25 pin sub-D connector. The Multia FAQ explains how to
+build your own Y-cable to allow both ports to be used.
+
+Floppy:
+Although the Multia SRM supports booting from floppy this is problematic.
+Typical errors look like "*** Soft Error - Error #10 - FDC: Data overrun or
+underrun". This is not a FreeBSD problem, it is a SRM problem. The best
+available workaround to install FreeBSD is to boot from a SCSI CDROM.
+
+Sound:
+Works fine using pcm driver and a line in the kernel configuration file as
+follows for the Crystal CS4231 chip:
+
+ device pcm0 at isa? port 0x530 irq 9 drq 3 flags 0x15
+
+I have not yet been successful in getting my Multia with the AD1848 to
+play any sound.
+
+While verifying playback I was reminded of the lack of CPU power of the 166MHz
+CPU: MP3 only plays acceptable using 22kHz down-sampling.
+
+Hot:
+Multias are somewhat notorious for dying of heat strokes. The very compact
+box does not really allow cooling air access very well. Please use the
+Multia on its vertical stand, don't put it horizontally ('pizza style').
+Replacing the fan with something which pushes around more air is
+recommended. Beware of PCI cards with high power consumption.
+If your system has died you might want to check on the Multia-Heat-Death
+pages at the NetBSD web-site http://www.netbsd.org
+
+IDE:
+The Intel 82378ZB PCI to ISA bridge enables the use of an IDE disk. This
+requires a line in the kernel configuration file as follows:
+
+ device ata0 at isa? port IO_WD1 irq 14
+
+The IDE connector pin spacing is thought for 2.5" laptop disks. A 3.5"
+IDE disk would not fit in the case anyway. At least not without sacrificing
+your only PCI slot.
+
+The SRM console does not know how to boot from IDE disks unfortunately.
+
+SCSI:
+In case you want to change the internal hard drive: the internal flat cable
+running from the PCI riser board to the 2.5" (!!) hard drive has a finer pitch
+than the standard SCSI flat cables. Otherwise it would not fit on the 2.5"
+drives. There are also riser cards that have a standard-pitch SCSI cable
+attached to it, which will fit an ordinary SCSI disk.
+
+Again, I recommend against trying to cram a replacement hard disk inside. Use
+the external SCSI connector and put your disk in an external enclosure.
+Multias run hot enough as-is. In most cases you will have the external high
+density 50pin SCSI connector but some Multia models came without disk and
+may lack the connector. Something to check before buying one.
+
+The kernel configuration file for a Multia kernel must contain:
+ options DEC_AXPPCI_33
+ cpu EV4
+
+More info:
+Recommended reading on Multia can be found at
+ http://www.netbsd.org/Ports/alpha/multiafaq.html
+ http://www.brouhaha.com/~eric/computers/udb.html
+
+*
+* Personal Workstation ("Miata")
+*
+
+The Miata is a small tower machine intended to be put under a desk. There
+are multiple Miata variants. The original Miata is the MX5 model. Because
+it suffers from a number of hardware design flaws a redesign was performed,
+yielding the MiataGL. Unfortunately the boxes are quite indistinguishable.
+An easy check is to see if the back of the machine sports two
+USB connectors. If yes, it is a MiataGL.
+
+System designations look like "Personal Workstation 433a". Personal
+Workstation, being a bit of a mouthful, is often abbreviated to PWS.
+This means it has a 433 MHz CPU, and started life as a WinNT workstation
+(the trailing 'a'). Systems designated from day 1 to run Tru64
+Unix or OpenVMS will sport '433au'. WinNT-Miatas are likely
+to come pre-configured with an IDE CDROM drive. So, in general systems
+are named like PWS[433,500,600]a[u].
+
+There was also a Miata model with a special CPU cooling system by Kryotech.
+That one has a different enclosure.
+
+Features:
+
+- 21164A EV56 Alpha CPU, at 433, 500 or 600MHz
+- 21174 Core Logic ("Pyxis") chip set
+- on-board Bcache / L3 cache: 0, 2 or 4 Mbytes (uses a cache module)
+- memory bus: 128 bits wide, ECC protected
+- memory: Miata uses unbuffered SDRAMs,
+ installed in pairs of 2,
+ 6 DIMM sockets
+ 1.5 Gbytes max
+- on-board Fast Ethernet based on:
+ - MX5 uses a 21142 or 21143 Ethernet chip dependent on the version of the
+ PCI riser card
+ - MiataGL has a 21143 chip
+ - the bulkhead can be 10/100 UTP, or 10 UTP/BNC
+- 2x on-board [E]IDE based on:
+ - MX5: CMD646
+ - MiataGL: Cypress 82C693
+- 1x Ultra-Wide SCSI Qlogic 1040 [MiataGL only]
+- expansion: 2 64-bit PCI slots
+ 3 32-bit PCI slots (behind a DEC PCI-PCI bridge chip)
+ 3 ISA slots (physically shared with the 32 bit PCI slots, via
+ an Intel 82378IB PCI to ISA bridge chip)
+- 2x 16550A serial port
+- 1x parallel port
+- PS/2 keyboard & mouse port
+- USB interface [MiataGL only]
+- embedded sound based on an ESS1888 chip
+
+CPU mainboard and PCI 'riser' board:
+The Miata logic is divided into two printed circuit boards.
+The lower board in the bottom of the machine has the PCI
+and ISA slots and things like the sound chip etc. The top board
+has the CPU, the Pyxis chip, memory etc. Note that MX5 and the MiataGL use
+a different PCI riser board. This means that you cannot just upgrade to
+a MiataGL CPU board (with the newer Pyxis chip) but that you will also need
+a different riser board. Apparently an MX5 riser with a MiataGL CPU board
+will work but it is definitely not a supported or tested configuration.
+Everything else (cabinet, wiring etc etc) is identical for MX5 and MiataGL.
+
+DMA bug:
+MX5 has problems with DMA via the 2 64-bit PCI slots when this DMA
+crosses a page boundary. The 32 bit slots don't have this problem because the
+PCI-PCI bridge chip does not allow the offending transfers. The SRM code
+knows about the problem and refuses to start the system if there is a PCI
+card in one of the 64bit slots that it does not know about. Cards that are
+'known good' to the SRM are allowed to be used in the 64bit slots.
+
+If you want to fool the SRM you can type "set pci_device_override" at
+the SRM prompt. Just don't complain if your data mysteriously gets mangled.
+
+The complete command is:
+
+ set pci_device_override <vendor_id><device_id>
+ e.g. set pci_device_override 88c15333
+
+A more radical approach is to use:
+
+ set pci_device_override -1
+
+This disables PCI ID checking altogether, so that you can stick in any
+random PCI card without its ID getting checked. For this to work you need
+a sufficiently new SRM in your Miata. Again: do this on your own
+risk.
+
+The kernel reports it when it sees a buggy Pyxis chip:
+Sep 16 18:39:43 miata /kernel: cia0: Pyxis, pass 1
+Sep 16 18:39:43 miata /kernel: cia0: extended capabilities: 1<BWEN>
+Sep 16 18:39:43 miata /kernel: cia0: WARNING: Pyxis pass 1 DMA bug; no
+bets...
+
+A MiataGL probes as:
+Jan 3 12:22:32 miata /kernel: cia0: Pyxis, pass 1
+Jan 3 12:22:32 miata /kernel: cia0: extended capabilities: 1<BWEN>
+Jan 3 12:22:32 miata /kernel: pcib0: <2117x PCI host bus adapter> on cia0
+
+MiataGL does not have the DMA problems of the MX5. PCI cards that make
+the MX5 SRM choke when installed in the 64bit slots are accepted without
+problems by the MiataGL SRM.
+
+The latest mainboard revisions of MX5 contain a hardware workaround for the
+bug. The SRM does not know about the ECO and will complain about unknown cards
+as before. So does the FreeBSD kernel by the way.
+
+EIDE:
+The Miata SRM can boot from IDE CDROM drives. Hard disk boot is known to work
+for both MiataGL and MX5 disks, so you can root FreeBSD from an IDE disk. Speeds
+on MX5 are around 14 Mbytes/sec assuming a suitable drive. The CMD646 chip will
+support up to WDMA2 mode as the silicon is too buggy for use with UDMA.
+
+PCI-PCI bridge:
+The MiataGL has a faster PCI-PCI bridge chip on the PCI riser card than
+some of the MX5 riser card versions. Some of the MX5 risers have the *same*
+chip as the MiataGL. All in all there is a lot of variation.
+
+Not all VGA cards will work behind the PCI-PCI bridge. This manifests itself
+as no video at all. Workaround is to put the VGA card 'before' the bridge,
+in one of the 64 bit PCI slots.
+
+Sound:
+Both MX5 and MiataGL have an on-board sound chip, an ESS1888. It emulates
+a SoundBlaster and can be enabled by putting
+
+ device pcm0
+ device sbc0
+
+in your kernel configuration file.
+
+Cache:
+in case your Miata has the optional cache board installed make sure
+it is firmly seated. A slightly loose cache has been observed to cause
+weird crashes (not surprising obviously, but maybe not so obvious when
+troubleshooting). The cache module is identical between MX5 and MiataGL.
+
+Installing a 2Mb cache module achieves, apart from a 10-15% speed increase
+(based on buildworld elapsed time), a *decrease* for PCI DMA read bandwidth
+from 64bit PCI cards. A benchmark on a 64-bit Myrinet card resulted in
+a decrease from 149 Mbytes/sec to 115 Mbytes/sec. Something to keep in
+mind when doing really high speed things with 64 bit PCI adapters.
+
+Keyboard:
+If you experience SRM errors like "ERROR: scancode 0xa3 not supported
+on PCXAL" after halting FreeBSD you should update your SRM firmware
+to V7.2-1 or later. This SRM version is first available on the Firmware
+Update CD V5.7, or on http://www.compaq.com The problem is fixed on both
+Miata MX5 and Miata GL.
+
+USB:
+Supported by FreeBSD 4.1 and later.
+
+Power:
+Disconnect the power cord before dismantling the machine, the soft-power
+switch keeps part of the logic powered even when the machine is switched
+off.
+
+The kernel configuration file for a Miata kernel must contain:
+ options DEC_ST550
+ cpu EV5
+
+*
+* DEC3000 family (the "Bird" machines)
+*
+
+The DEC3000 series were among the first Alpha machines ever produced. They
+are based on an I/O bus called the Turbo Channel (TC) bus. These
+machines are built like tanks (watch your back).
+
+DEC3000 can be subdivided in DEC3000/500-class and DEC3000/300-class.
+The DEC3000/500-class is the early high-end workstation/server Alpha family.
+Servers use serial consoles, workstations have graphics tubes.
+DEC3000/300-class is the lower-cost workstation class.
+
+DEC3000/500-class are quite fast (considering their age) thanks to the
+good memory design. DEC3000/300 is crippled compared to DEC3000/500 because
+of its much narrower memory bus.
+
+They are called 'Birds' because their internal DEC code names were bird
+names:
+
+ DEC3000/400 Sandpiper 133MHz CPU, desktop
+ DEC3000/500 Flamingo 150MHz CPU, floor standing
+ DEC3000/500X Hot Pink 200MHz CPU, floor standing
+ DEC3000/600 Sandpiper+ 175MHz CPU, desktop
+ DEC3000/700, Sandpiper45 225MHz CPU, floor standing
+ DEC3000/800, Flamingo Ultra 200MHz CPU, floor standing
+ DEC3000/900, Flamingo45 275MHz CPU, floor standing
+
+ DEC3000/300 Pelican 150MHz CPU, desktop, 2 TC slots
+ DEC3000/300X Pelican+ 175MHz CPU, desktop, 2 TC slots
+ DEC3000/300LX Pelican+ 125MHz CPU, desktop, 2 TC slots
+ DEC3000/300L 100MHz CPU, desktop, no TC slots
+
+
+Features:
+- 21064 CPU (100 to 200 MHz)
+ 21064A CPU (225 to 275 MHz)
+- memory bus: 256 bit, with ECC [DEC3000/500-class]
+ 64 bit, with ECC [DEC3000/300-class]
+- memory: - proprietary 100pin SIMMs
+ installed in sets of 8 [DEC3000/500-class]
+ - PS/2 style 72pin 36 bit FPM SIMMs, 70ns or better
+ used in pairs of 2 [DEC3000/300-class]
+- Bcache / L2 cache: varying sizes, 512 kB to 2 Mbyte
+- built-in 10Mbit Ethernet based on a Lance 7990 chip, AUI and UTP
+- one or two SCSI buses based on a NCR53C94 or a NCR53CF94-2 chip
+- 2 serial ports based on Zilog 8530 (one usable as a serial console)
+- embedded ISDN interface
+- on-board 8 bit sound
+- 8 bit graphics on-board [some models] or via a TC card [some other models]
+
+SCSI:
+Currently DEC3000 machines can only be used diskless on FreeBSD/alpha. The
+reason for this is that the SCSI drivers needed for the TC SCSI adapters
+were not brought into CAM that the recent FreeBSD versions use. TC option
+cards for single (PMAZ-A) or dual fast SCSI (PMAZC-AA) are also available.
+And currently have no drivers on FreeBSD either.
+
+DEC3000/300 has 5Mbytes/sec SCSI on-board. This bus is used for both internal
+and external devices. DEC3000/500 has 2 SCSI buses. One is for internal
+devices only, the other one is for external devices only.
+
+Floppy devices found in the DEC3000s are attached to the SCSI bus (via a
+bridge card). This makes it possible to boot from them using the same device
+names as ordinary SCSI hard-disks (>>> BOOT DKA300 for example).
+
+Expansion:
+The 3000/300 series has a half-speed TurboChannel compared to the other
+3000 machines. Some TC expansion cards have troubles with the half-speed
+bus. Caveat emptor.
+
+ISDN interface:
+ISDN does not work on FreeBSD.
+
+Memory:
+DEC3000/300-class uses standard 36 bit, 72 pin Fast Page Mode SIMMs.
+EDO SIMMs, 32 or 33 bit SIMMs all will not work in Pelicans.
+For 32Mbyte SIMMs to work on the DEC3000/300-class the presence detect
+bits/pins of the SIMM must correspond to what the machine expects. If they
+don't, the SIMM is 'seen' as a 8 Mbyte SIMM. 8 Mbyte and 32 Mbyte SIMMs can
+be mixed, as long as the pairs themselves are identical.
+
+When you find yourself in need of fixing 32Mbyte SIMMs that lack correct
+presence bits the following info might be of use:
+
+There are four presence detection bits on PS/2 SIMMs. Two of
+the bits indicate the access time. The other two indicate the memory size.
+
+At one end of the SIMM there are two rows of four solder pads. One
+row is connected to Vss (GND) and the other is connected to pins
+67 (PRD1), 68 (PRD2), 69 (PRD3), 70 (PRD4).
+
+If you bridge a pair of pads with a small resistor or a drop of
+solder you ground that particular bit.
+
+ PRD1 PRD2 mem. size
+ -----------------------------
+ GND GND 4 or 64 Mbyte
+ Open GND 2 or 32 Mbyte
+ GND Open 1 or 16 Mbyte
+ Open Open 8 Mbyte
+
+ PRD3 PRD4 access time
+ ------------------------------
+ GND GND 50 or 100 nsec
+ Open GND 80 nsec
+ GND Open 70 nsec
+ Open Open 60 nsec
+
+DEC3000/500-class can use 2, 4, 8, 16 and 32 Mbyte 100pin SIMMs.
+Note that the maximum memory size varies from system to system,
+desktop machines have sacrificed box size for less memory SIMM sockets.
+Given enough sockets and enough SIMMs you can get to 512 Mbytes maximum.
+This is one of the main differences between floor standing and desktop
+machines, the latter have far less SIMM sockets.
+
+Sound:
+The sound hardware is not supported on any of the Birds.
+
+Graphics:
+The is no X-Windows version available for the TC machines.
+DEC3000/300 needs a serial console. DEC3000/500-class might
+work with a graphical console. I ran mine with a serial console so I cannot
+verify this.
+
+Birds can be obtained from surplus sales etc. As they are not PCI
+based they are no longer actively maintained. TC expansion boards can
+be difficult to obtain these days and support for them is not too good
+unless you write/debug the code yourself. Programming information for TC
+boards is hard to find. Birds are recommended only if a. you can get them
+cheap and b. if you prepared to work on the code to support them better.
+
+For the DEC3000/[4-9]00 series machines the kernel config file must
+contain:
+ options DEC_3000_500
+ cpu EV4
+
+For the DEC3000/300 ("Pelican") machines the kernel config file must
+contain:
+ options DEC_3000_300
+ cpu EV4
+
+*
+*Evaluation Board 64plus ("EB64+"), Aspen Alpine
+*
+
+In its attempts to popularize the Alpha CPU DEC produced a number of so
+called Evaluation Boards. The EB64+ family boards have the following feature
+set:
+
+- 21064 or 21064A CPU, 150 to 275MHz
+- memory bus: 128 bit
+- memory: PS/2 style 72 pin 33 bit Fast Page Mode SIMMs,
+ 70ns or better,
+ installed in sets of 4
+ 8 SIMM sockets
+ uses parity
+- Bcache / L2 cache: 512 kByte, 1 Mbyte or 2 Mbytes
+- 21072 ("APECS") chip set
+- Intel 82378ZB PCI to ISA bridge chip ('Saturn')
+- dual 16550A serial ports
+- Symbios 53C810 Fast-SCSI
+- embedded 10 Mbit Ethernet
+- 2 PCI slots
+- 3 ISA slots
+
+Aspen Alpine:
+Aspen Alpine is slightly different, but is close enough to the EB64+ to
+run an EB64+ SRM EPROM (mine did..). The Aspen Alpine does not have
+an embedded Ethernet, has 3 instead of 2 PCI slots. It comes with 2 Mbytes
+of cache already soldered onto the mainboard. It has jumpers to select
+the use of 60, 70 or 80ns SIMM speeds.
+
+Memory:
+36 bits SIMMs work fine, 3 bits simply remain unused.
+
+SRM:
+The SRM console code is housed in an UV-erasable EPROM. No easy flash SRM
+upgrades for the EB64+ The latest SRM version available for EB64+ is quite
+ancient anyway.
+
+SCSI:
+The EB64+ SRM can boot both 53C810 and Qlogic1040 SCSI adapters. Pitfall for
+the Qlogic is that the firmware that is down-loaded by the SRM onto the
+Qlogic chip is very old. There are no updates for the EB64+ SRM available.
+So you are stuck with old Qlogic bits too. I have had quite some problems
+when I wanted to use Ultra-SCSI drives on the Alpine with Qlogic. The
+FreeBSD/alpha kernel can be compiled to include a much newer Qlogic firmware
+revision. This is not the default because it adds hundreds of kBytes worth
+of bloat to the kernel. In FreeBSD 4.1 and later the isp firmware is contained
+in a kernel loadable module. All of this might mean that you need to use a
+non-Qlogic adapter to boot from.
+
+For the EB64+ class machines the kernel config file must contain:
+ options DEC_EB64PLUS
+ cpu EV4
+
+*
+* Evaluation Board 164 ("EB164, PC164, PC164LX, PC164SX") family
+*
+
+EB164 is a newer design evaluation board, based on the 21164A CPU. This
+design has been used to 'spin off' multiple variations, some of which are
+used by OEM manufacturers/assembly shops. Samsung did its own PC164LX
+which has only 32 bit PCI, whereas the Digital variant has 64 bit PCI.
+
+Features:
+- 21164A, multiple speed variants [EB164, PC164, PC164LX]
+ 21164PC [only on PC164SX]
+- 21174 (Alcor) chip set
+- Bcache / L3 cache: EB164 uses special cache-SIMMs
+- memory bus: 128 bit / 256 bit
+- memory: PS/2 style SIMMs in sets of 4 or 8,
+ 36 bit, Fast Page Mode, uses ECC, [EB164 and PC164]
+ SDRAM DIMMs in sets of 2, uses ECC [PC164SX and PC164LX]
+- dual 16550A serial ports
+- PS/2 style keyboard & mouse
+- floppy controller
+- parallel port
+- 32 bits PCI
+- 64 bits PCI [some models]
+- ISA slots via an Intel 82378ZB PCI to ISA bridge chip
+
+Memory:
+Using 8 SIMMs for a 256bit wide memory can yield interesting speedups over
+a 4 SIMM/128bit wide memory. Obviously all 8 SIMMs must be of the same type
+to make this work. The system must be explicitly setup to use the
+8 SIMM memory arrangement. You must have 8 SIMMs, 4 SIMMs distributed
+over 2 banks does not work.
+
+SCSI:
+The SRM can boot from Qlogic 10xx boards or the Symbios 53C810[A].
+
+Newer Symbios 810 revisions like the Symbios 810AE are not recognized by
+the SRM on PC164. PC164 SRM does not appear to recognize a Symbios 53C895
+based host adapter (tested with a Tekram DC-390U2W). On the other hand
+some no-name Symbios 53C985 board has been reported to work.
+
+Cards like the Tekram DC-390F (Symbios875 based) have been confirmed to
+work fine on the PC164. Unfortunately this seems to be dependent on the
+actual version of the chip/board.
+
+Symbios 53C825[a] will also work as boot adapter. Diamond FirePort, although
+based on Symbios chips, is not bootable by the PC164SX SRM.
+PC164SX is reported to boot fine with Symbios825, Symbios875 and Symbios876
+based cards. In addition, Adaptec 2940U and 2940UW are reported to work for
+booting (verified on SRM V5.7-1). Adaptec 2930U2 and 2940U2[W] do not work.
+
+In summary: this family of machines is 'blessed' with a challenging
+compatibility as far as SCSI adapters go.
+
+SRM quirks:
+PC164 the SRM sometimes seems to loose its variable settings.
+"For PC164, current superstition says that, to avoid losing settings,
+you want to first downgrade to SRM 4.x and then upgrade to a 5.x"
+One sample error that was observed was: "ERROR: ISA table corrupt!".
+A sequence of a downgrade to SRM4.9, an 'isacfg -init' and an 'init'
+made the problem go away. Some PC164 owners report they have never seen
+the problem.
+
+On PC164SX the AlphaBIOS allows you a selection to select 'SRM' to
+be used as console on the next power up. This selection does not appear to
+have any effect. In other words, you will get to the AlphaBIOS regardless
+of what you select. The fix is to reflash the console ROM with the SRM
+code for PC164SX. This will overwrite the AlphaBIOS and will get you the
+SRM console you desire. The SRM code can be found on the Compaq Web site.
+
+IDE:
+PC164 can boot from IDE disks assuming your SRM version is recent enough.
+
+Power:
+EB164 needs a power supply that supplies 3.3 Volts. PC164 does not implement
+the PS_ON signal that ATX power supplies need to switch on. A simple switch
+pulling this signal to ground fixes this problem.
+
+For the EB164 class machines the kernel config file must contain:
+ options DEC_EB164
+ cpu EV5
+
+
+*
+* AlphaStation 200 ("Mustang") and 400 ("Avanti") series
+*
+
+The Digital AlphaStation 200 and 400 series systems are early PCI based
+workstations for the lower end. The 200 and 250 series is a desktop box, the
+400 series is a desk-side mini-tower.
+
+Features:
+- 21064 or 21064A CPU at speeds of 166 to 333 MHz
+- DECchip 21071-AA (core logic chip-set) consisting of:
+ Cache/memory controller (one 21071-CA chip)
+ PCI interface (one 21071-DA chip)
+ Data path (two 21071-BA chips)
+- Bcache / L2 cache: 512 Kbytes (200 and 400 series)
+ 2048KBytes (250 series)
+- memory bus: 64 bit
+- memory: 8 to 384 MBytes of RAM,
+ 70 ns or better Fast Page DRAM,
+ in three pairs (200 and 400 series)
+ in two quads, so banks of four. (250 series)
+ uses parity
+- PS/2 keyboard and mouse port
+- two 16550 serial ports
+- parallel port
+- floppy disk interface
+- 32 bit PCI expansion slots (3 for 400 series, 2 for 200 & 250 series)
+- ISA expansion slots (4 for 400 series, 2 for 200 & 250 series)
+ (some ISA/PCI slots are physically shared)
+- embedded 21040-based Ethernet (200 & 250 series)
+- embedded Symbios 53c810 Fast SCSI-2 chip
+- Intel 82378IB ("Saturn") PCI-ISA bridge chip
+- graphics is embedded TGA or PCI VGA (model dependent)
+- 16 bit sound (on 200 & 250 series)
+
+Memory:
+the system uses parity memory SIMMs, but it does not need 36 bit wide SIMMs.
+33 bit wide SIMMs are sufficient, 36 bit SIMMs are acceptable too. EDO or 32
+bit SIMMs will not work. 4, 8, 16, 32 and 64 Mbyte SIMMs are supported.
+
+Sound:
+The AS200 & AS250 sound hardware is reported to work OK assuming you have
+the following line in your kernel config file:
+
+ device pcm0 at isa? port 0x530 irq 9 drq 0 flags 0x10011
+
+SCSI:
+AlphaStation 200 & 250 series has an automatic SCSI terminator. This means that
+as soon as you plug a cable onto the external SCSI connector the internal
+terminator of the system is disabled. It also means that you should not
+leave unterminated cables plugged into the machine.
+
+AlphaStation 400 series have an SRM variable that controls termination. In
+case you have external SCSI devices connected you must set this SRM
+variable using: "set control_scsi_term external". If only internal SCSI devices
+are present use: "set control_scsi_term internal"
+
+For the AlphaStation-[24][05]00 machines the kernel config file must contain:
+ options DEC_2100_A50
+ cpu EV4
+
+
+*
+* AlphaStation 500 and 600 ("Alcor" & "Maverick" for EV5, "Bret" for EV56)
+*
+AS500 and 600 were the high-end EV5 / PCI based workstations. EV6 based
+machines have in the meantime taken their place as front runners. AS500 is
+a desktop in a dark blue case (TopGun blue), AS600 is a sturdy desk-side box.
+AS600 has a nice LCD panel to observe the early stages of SRM startup.
+
+Features:
+- 21164 EV5 CPU at 266, 300, 333, 366, 400, 433, 466, or 500 MHz (AS500)
+ at 266, 300 or 333 MHz (AS600)
+- 21171 or 21172 (Alcor) core logic chip-set
+- cache: 2 or 4 Mb L3 / Bcache (AS600 at 266 MHz)
+ 4 Mb L3 / Bcache (AS600 at 300 MHz)
+ 2 or 8 Mb L3 / Bcache (8 Mb on 500 MHz version only)
+ 2 to 16 Mb L3 / Bcache (AS600; 3 cache-SIMM slots)
+- memory bus: 256 bits, uses ECC
+- memory: AS500: industry standard 8 byte wide DIMMs
+ 8 DIMM slots
+ installed in sets of 4,
+ maximum memory is 1 Gb (512 Mb max on 333 MHz CPUs)
+ uses ECC
+ AS600: industry standard 36 bit Fast Page Mode SIMMs
+ 32 SIMM slots,
+ installed in sets of 8,
+ maximum memory is 1 Gb
+ uses ECC
+- Qlogic 1020 based wide SCSI bus (1 bus/chip for AS500, 2 for AS600)
+- 21040 based 10 Mbit Ethernet adapter with both Thinwire and UTP connectors
+- expansion: AS500: 3 32-bit PCI slots
+ 1 64-bit PCI slot
+ AS600: 2 32-bit PCI slot
+ 3 64-bit PCI slots
+ 1 PCI/EISA physically shared slot
+ 3 EISA slots
+ 1 PCI and 1 EISA slot are occupied by default
+- 21050 PCI-to-PCI bridge chip
+- Intel 82375EB PCI-EISA bridge (AS600 only)
+- 2 16550A serial ports
+- 1 parallel port
+- 16 bit audio Windows Sound System,
+ in dedicated slot (AS500)
+ in EISA slot (AS600, this is an ISA card)
+- PS/2 keyboard and mouse port
+
+SCSI:
+Early machines had Fast SCSI interfaces, later ones are Ultra SCSI capable.
+AS500 shares its single SCSI bus with internal and external devices. For a
+Fast SCSI bus you are limited to 1.8 meters bus length external to the box.
++++ This is what some DEC docs suggest. Did they ever go Ultra?
+
+AS600 has one Qlogic chip dedicated to the internal devices whereas the
+other one is dedicated to external SCSI devices.
+
+Memory:
+In AS500 DIMMs are installed in sets of 4, in 'physically interleaved'
+layout. So, a bank of 4 DIMMs is *not* 4 adjacent DIMMs!
+
+In AS600 the memory SIMMs are placed onto two memory daughter cards. SIMMs
+are installed in sets of 8. Both memory daughter cards must be populated
+identical.
+
+PCI:
+AS600 has a peculiarity for its PCI slots. AS600 (or rather the PCI
+expansion card containing the SCSI adapters) does not allow I/O port
+mapping, therefore all devices behind it must use memory mapping.
+If you have problems getting the SCSI adapters to work, add the following
+option to /boot/loader.rc:
+
+ set isp_mem_map=0xff
+
+This may need to be typed at the boot loader prompt before booting the
+installation kernel.
+
+For the AlphaStation-[56]00 machines the kernel config file must contain:
+ options DEC_KN20AA
+ cpu EV5
+
+*
+* AlphaServer 1000 ("Mikasa"), 1000A ("Noritake") and 800
+*
+The AlphaServer 1000 and 800 range of machines is aimed as departmental servers.
+They come in quite some variations in packaging and mainboard/cpu. Generally
+speaking there are 21064 (EV4) CPU based machines and 21164 (EV5) based
+ones. The CPU is on a daughter card, and the type of CPU (EV4 or EV5) must
+match the mainboard in use. AlphaServer 800 is a much smaller mini tower
+case, it lacks the StorageWorks SCSI hot-plug chassis. The main difference
+between AS1000 and AS1000A is that AS1000A has 7 PCI slots whereas AS1000
+only has 3 PCI slots and has EISA slots instead. AS800 with an EV5/400 MHz
+CPU was later re-branded as a DIGITAL Server 3300[R], AS800 with an EV5/500 MHz
+CPU was later re-branded as a DIGITAL Server 3305[R].
+
+Features:
+- 21064 EV4[5] CPU at 200, 233 or 266 MHz
+ 21164 EV5[6] CPU at 300, 333 or 400 MHz (or 500 MHz for AS800 only)
+- cache:
+- memory bus: 128 bit with ECC
+- memory:
+ AS1000[A]-systems:
+ Use 72pin 36 bit Fast Page Mode SIMMs, 70ns or better
+ 16 or 20 SIMM slots
+ max memory is 1 Gb
+ uses ECC
+ AS800:
+ Uses SDRAM DIMMs.
+- embedded VGA (on some mainboard models)
+- expansion:
+ 3 PCI, 2 EISA, 1 64-bit PCI/EISA combo (AS800)
+ 7 PCI, 2 EISA (AS1000A)
+ 2 PCI, 1 EISA/PCI, 7 EISA (AS1000)
+- embedded SCSI based on Symbios 810 [AS1000] or Qlogic 1020 [AS1000A]
+
+Box:
+AS1000 based machines come in multiple boxes. Floor standing, rack-mount,
+with or without StorageWorks SCSI chassis etc. The electronics are the
+same.
+
+Memory:
+ AS1000-systems:
+ All EV4 based machines use standard PS/2 style 36 bit 72pin SIMMs in sets
+ of 5. The fifth SIMM is used for ECC.
+ All EV5 based machines use standard PS/2 style 36 bit 72pin SIMMs in sets
+ of 4. The ECC is done based on the 4 extra bits per SIMM (4 bits out of 36).
+ The EV5 mainboards have 16 SIMM slots, the EV4 mainboards have 20 slots.
+
+ AS800:
+ Uses DIMMs in sets of 4. DIMM installation must start in slots marked
+ bank 0. A bank is four physically adjacent slots. The biggest size DIMMs
+ must be installed in bank 0 in case 2 banks of different DIMM sizes are
+ used. Max memory size is 2Gb.
+
+Console:
+The AS1000/800 are somewhat stubborn when it comes to serial
+consoles. They need >>> SET CONSOLE SERIAL before they go for
+a serial console. Pulling the keyboard from the machine is not sufficient,
+like it is on most other Alpha models. Going back to a graphical console
+needs >>> SET CONSOLE GRAPHICS at the serial console.
+
+SCSI:
+For AS800 you want to check if your Ultra-Wide SCSI is indeed in Ultra mode.
+This can be done using the EEROMCFG.EXE utility that is on the Firmware
+Upgrade CDROM.
+
+For the AlphaServer1000/1000A/800 machines the kernel config file must contain:
+ options DEC_1000A
+ cpu EV4 # depends on the CPU model installed
+ cpu EV5 # depends on the CPU model installed
+
+*
+* DS10/VS10/XP900 ("Webbrick") / XP1000 ("Monet") / DS10L ("Slate")
+*
+Webbrick and Monet are high performance workstations/servers based on the
+EV6 CPU and the Tsunami chipset. Tsunami is also used in much higher-end
+systems and as such has plenty of performance to offer. DS10, VS10 and XP900
+are different names for essentially the same system. The difference are the
+software and options that are supported. DS10L is a DS10 based machine in a 1U
+high rackmount enclosure. DS10L is intended for ISPs and for HPTC clusters
+(e.g. Beowulf).
+
+Monet has, by 1999 standards, *stunning* (the words of a satisfied
+user) memory and I/O system bandwidth.
+
+** Webbrick / Slate
+
+Features:
+- 21264 EV6 CPU at 466 MHz
+- L2 / Bcache: 2MB, ECC protected
+- memory bus: 128 bit via crossbar, 1.3GB/sec to memory
+- memory: industry standard 200 pin 83 MHz buffered ECC SDRAM DIMMs
+ 4 DIMM slots (2 for DS10L)
+ installed in pairs of 2
+ max memory is 2 Gb (1Gb for DS10L)
+- 21271 Core Logic chipset ("Tsunami")
+- 2 on-board 21143 Fast Ethernet controllers
+- AcerLabs M5237 (Aladdin-V) USB controller
+- AcerLabs M1533 PCI-ISA bridge
+- AcerLabs Aladdin ATA-33 controller
+- embedded dual EIDE
+- expansion: 3 64-bit PCI slots
+ 1 32-bit PCI slots
+ DS10L has a single 64bit PCI slot
+- 2x 16550A serial ports
+- 1x parallel port
+- 2x USB
+- PS/2 keyboard & mouse port
+
+Power:
+The system has a smart power controller. This means that parts of the system
+remain powered when it is switched off (like an ATX-style PC power supply).
+Before servicing the machine remove the power cord.
+
+Case:
+Webbrick is shipped in a desktop-style case similar to the older 21164
+"Maverick" workstations but which offers much better access to
+components. If you intend to build a farm you can rackmount them in a 19"
+rack, they are 3U high. Slate is 1U high but has only one PCI slot.
+
+Memory:
+DS10 has 4 DIMM slots. DIMMs are installed as pairs. Please note that
+DIMM pairs are not installed in adjacent DIMM sockets but rather physically
+interleaved. DIMM sizes of 32, 64, 128, 256 and 512 Mbytes are supported.
+
+When 2 pairs of identical-sized DIMMs are installed DS10 will use memory
+interleaving for higher performance. DS10L, which has only 2 DIMM slots cannot
+do interleaving.
+
+EIDE:
+The base model comes with a FUJITSU 9.5GB ATA disk as its boot device.
+FreeBSD/alpha works just fine using EIDE disks on Webbrick. DS10 has 2 IDE
+interfaces on the mainboard.
+
+Expansion:
+On the PCI bus 32 and 64 bit cards are supported, in 3.3V and 5V variants.
+
+USB:
+Is supported in FreeBSD 4.1 and later.
+
+The kernel config file must contain:
+ options DEC_ST6600
+ cpu EV5
+
+Contrary to expectation there is no 'cpu EV6' defined for inclusion in the
+kernel config file. The 'cpu EV5' is mandatory to keep config(8) happy.
+
+** Monet
+
+Features:
+- 21264 EV6 at 500 MHz
+ 21264 EV67 at 500 or 667 MHz (XP1000G, codenamed Brisbane)
+ CPU is mounted on a daughter-card which is field-upgradable
+- L2 / Bcache: 4MB, ECC protected
+- memory bus: 256 bit
+- memory: 128 or 256 Mbytes 100 MHz (PC100) 168 pin JEDEC standard,
+ registered ECC SDRAM DIMMs
+- 21271 Core Logic chip-set ("Tsunami")
+- 1 on-board 21143 Ethernet controller
+- Cypress 82C693 USB controller
+- Cypress 82C693 PCI-ISA bridge
+- Cypress 82C693 controller
+- expansion: 2 independent PCI buses, driven by high-speed I/O
+ channels called 'hoses':
+ hose 0: (the upper 3 slots)
+ 2 64-bit PCI slots
+ 1 32-bit PCI slot
+ hose 1: (the bottom 2 slots)
+ 2 32-bit PCI slots (behind a 21154 PCI-PCI bridge)
+ 2 of the 64-bit PCI slots are for full-length cards
+ all of the 32-bit PCI slots are for short cards
+ 1 of the 32-bit PCI slots is physically shared with an ISA slot
+ all PCI slots run at 33MHz
+- 1x Ultra-Wide SCSI port based on a Qlogic 1040 chip
+- 2x 16550A serial port
+- 1x parallel port
+- PS/2 keyboard & mouse port
+- embedded 16-bit ESS ES1888 sound chip
+- 2x USB
+- graphics options: ELSA Gloria Synergy or DEC/Compaq PowerStorm 3D
+ accelerator cards
+
+Case:
+Monet is housed in a mini-tower like enclosure quite similar to the Miata
+box.
+
+SCSI:
+The on-board Qlogic UW-SCSI chip supports up to 4 internal devices. There is
+no external connector for the on-board SCSI.
+
+Memory:
+For 500 MHz CPUs 83 MHz DIMMs will do. Compaq specifies PC100 DIMMs for
+all CPU speeds. DIMMs are installed in sets of 4, starting with the
+DIMM slots marked '0'. Memory capacity is max 4 Gb.
+DIMMs are installed 'physically interleaved', note the markings of the
+slots. Memory bandwidth of Monet is twice that of Webbrick. The DIMMs live
+on the CPU daughter-card. Note that the system uses ECC RAM so you need DIMMs
+with 72 bits (not the PC-class 64 bit DIMMs)
+
+EIDE:
+Is usable / bootable for system disk so FreeBSD can be rooted on an EIDE
+disk. Although the Cypress chip has potential for 2 EIDE channels Monet uses
+only one of them.
+
+USB:
+If you experience problems trying to use the USB interface please check if
+the SRM variable "usb_enable" is set to "on". You can change this by
+performing: "set usb_enable on" at the SRM >>> prompt.
+
+Expansion caveats:
+- Don't try to use Symbios-chip based SCSI adapters in the PCI slots
+connected to hose 1. There is a not-yet-found FreeBSD bug that prevents this
+from working correctly.
+- Not all VGA cards will work behind the PCI-PCI bridge (so in slots 4 & 5).
+Only cards that implement VGA-legacy addressing correctly will work. Workaround
+is to put the VGA card 'before' the bridge.
+
+Sound:
+The sound chip is not currently supported with FreeBSD. There is work in
+progress in this area.
+
+The kernel config file must contain:
+ options DEC_ST6600
+ cpu EV5
+
+Contrary to expectation there is no 'cpu EV6' defined for inclusion in the
+kernel config file. The 'cpu EV5' is mandatory to keep config(8) happy.
+
+** DS20/DS20E ("Goldrush"):
+
+Features:
+- 21264 EV6 CPU at 500 or 670 MHz
+- dual CPU capable machine
+- L2 / Bcache: 4 Mbytes per CPU
+- memory bus: dual 256 bit wide with crossbar switch
+- memory: SDRAM DIMMs
+ installed in sets of 4
+ uses ECC
+ 16 DIMM slots
+ max. 4Gb
+- 21271 Core Logic chip-set ("Tsunami")
+- embedded Adaptec ? Wide Ultra SCSI
+- expansion: 2 independent PCI buses, driven by high-speed I/O
+ channels called 'hoses'
+ 6 64-bit PCI slots (3 per hose)
+ 1 ISA slot
+
+Console:
+DS20 needs >>> SET CONSOLE SERIAL before it goes for a serial console.
+Pulling the keyboard from the machine is not sufficient. Going back to a
+graphical console needs >>> SET CONSOLE GRAPHICS at the serial console.
+Confusing is the fact that you will get SRM console output on the graphics
+console with the console set to serial, but when FreeBSD boots it honors
+the CONSOLE variable setting and all the boot messages as well as the
+login prompt will go to the serial port.
+
+Case:
+DS20 is housed in a fat cube-like enclosure. The enclosure also
+contains a StorageWorks SCSI hot-swap shelf for a maximum of 7 3.5" SCSI
+devices. DS20E is a sleeker case, without the StorageWorks shelf.
+
+Embedded SCSI:
+The embedded Adaptec SCSI chip on DS20 is disabled and is therefore
+not usable under FreeBSD.
+
+CPU:
+DS20 can have 2 CPUs installed. FreeBSD/alpha is not currently SMP-capable
+and will only use the primary CPU.
+
+Memory:
+If you are using banks of DIMMs of different sizes the biggest DIMMs should
+be installed in the DIMM slots marked '0' on the mainboard. The DIMM slots
+should be filled 'in order' so after bank 0 install in bank 1 and so on.
+
+Expansion:
+Don't try to use Symbios-chip based SCSI adapters in the PCI slots
+connected to hose 1. There is a not-yet-found FreeBSD bug that prevents this
+from working correctly. DS20 ships by default with a Symbios on hose 1 so you
+have to move this card before you can install/boot FreeBSD on it.
+
+The kernel config file must contain:
+ options DEC_ST6600
+ cpu EV5
+
+Contrary to expectation there is no 'cpu EV6' defined for inclusion in the
+kernel config file. The 'cpu EV5' is mandatory to keep config(8) happy.
+
+** AlphaPC 264DP / UP2000
+
+Features:
+- 21264 EV6 CPU at 670 MHz
+- dual CPU capable
+- L2 / Bcache: 4 Mbytes per CPU
+- memory bus: 256 bit
+- memory: SDRAM DIMMs
+ installed in sets of 4
+ uses ECC
+ 16 DIMM slots
+ max. 4Gb
+- 21272 Core Logic chip-set ("Tsunami")
+- embedded Adaptec AIC7890/91 Wide Ultra SCSI
+- 2x embedded IDE based on Cypress 82C693 chips
+- embedded USB via Cypress 82C693
+- expansion: 2 independent PCI buses driven by high-speed I/O
+ channels called 'hoses'
+ 6 64-bit PCI slots (3 per hose)
+ 1 ISA slot
+
+Memory:
+A maximum of 2Gb memory is supported by FreeBSD.
+
+CPU:
+DP264 can have 2 CPUs installed. FreeBSD/alpha is not currently SMP-capable
+and will only use the primary CPU.
+
+Embedded SCSI:
+The on-board Adaptec is not bootable but works with FreeBSD 4.0 and later
+as a datadisk-only SCSI bus.
+
+Embedded IDE:
+Busmaster DMA is supported on the first IDE interface only.
+
+The kernel config file must contain:
+ options DEC_ST6600
+ cpu EV5
+
+Contrary to expectation there is no 'cpu EV6' defined for inclusion in the
+kernel config file. The 'cpu EV5' is mandatory to keep config(8) happy.
+
+*
+* AlphaServer 2000 ("DemiSable"), 2100 ("Sable"), 2100A ("Lynx")
+*
+
+The AlphaServer 2[01]00 machines are aimed as departmental servers.
+This is medium iron, not a hobbyist system. These are multi-CPU machines,
+up to 2 CPUs (AS2000) or 4 CPUs (2100[A]) can be installed.
+Both floor-standing and 19" rackmount boxes exist. Rackmount variations have
+different numbers of I/O expansion slots, different max number of CPUs and
+different maximum memory size. Some of the boxes come with an integral
+StorageWorks shelf to house hot-swap SCSI disks. There was an upgrade program
+available to convert your Sable machine into a Lynx by swapping the
+I/O backplane (the C-bus backplane remains). CPU upgrades were available
+as well.
+
+Features:
+- 21064 EV4[5] CPU[s] at 200, 233, 275 MHz
+- 21164 EV5[6] CPU[s]s at 250, 300, 375, 400 MHz
+- cache: varies in size with the CPU model; 1, 4 or 8Mbyte per CPU
+- embedded floppy controller driving a 2.88 Mbytes drive
+- embedded 10Mbit 21040 Ethernet [AS2100 only]
+- 2 serial ports
+- 1 parallel port
+- PS/2 style keyboard & mouse port
+
+NOTE: Lynx support is currently flagged as experimental due to lack of
+ testing / test hardware.
+
+CPU:
+The CPUs spec-ed as 200 MHz are in reality running at 190 MHz. Maximum
+number of CPUs is 4. All CPUs must be of the same type/speed.
+
+Currently FreeBSD only uses one CPU in a multiprocessor machine.
+
+Memory:
+The machines use dedicated memory boards. These boards live on a 128 bit
+C-bus shared with the CPU boards. DemiSable supports up to 1Gb, Sable up
+to 2Gb. One of the memory bus slots can either hold a CPU or a memory card.
+A 4 CPU machine can have a maximum of 2 memory boards.
+
+Some memory board modules house SIMMs. These are called SIMM carriers.
+There are also memory modules that have soldered-on memory chips
+instead of SIMMs. These are called 'flat memory modules'.
+
+SIMM boards are used in sets of eight 72-pin 36 bit FPM memory of 70ns
+or faster. SIMM types supported are 1Mb x36 bit (4 Mbyte) and 4Mb x36
+bit (16 Mbyte). Each memory board can house 4 banks of SIMMs. SIMM
+sizes can not be mixed on a single memory board. The first memory
+module must be filled with SIMMs before starting to fill the next
+memory module. Note that the spacing between the slots is not that
+big, so make sure your SIMMs fit physically (before buying them..)
+
+Console:
+Both Lynx and Sable are somewhat stubborn when it comes to serial
+consoles. They need >>> SET CONSOLE SERIAL before they go for
+a serial console. Pulling the keyboard from the machine is not sufficient,
+like it is on most other Alpha models. Going back to a graphical console
+needs >>> SET CONSOLE GRAPHICS at the serial console. On Lynx keep the
+VGA card in one of the primary PCI slots.
+
+The machines are equipped with a small OCP (Operator Control Panel) LCD
+screen. On this screen the self-test messages are displayed during system
+initialization. You can put your own little text there by using the SRM:
+>>> SET OCP_TEXT "FreeBSD"
+
+The SRM >>> SHOW FRU command produces an overview of your configuration
+with module serial numbers, hardware revisions and error log counts.
+
+Embedded SCSI:
+Both Sable, DemiSable and Lynx have Symbios 810 based Fast SCSI on-board.
+Check if it is set to Fast SCSI speed by >>> SHOW PKA0_FAST. If set to
+1 it is negotiating for Fast speeds. >>> SET PKA0_FAST 1 enables Fast
+speeds.
+
+Internal disk storage:
+AS2100[A] come equipped with a StorageWorks 7 slot SCSI cage. A second cage
+can be added inside the cabinet. AS2000 has a single 7 slot SCSI cage,
+which cannot be expanded with an additional one. Note that the slot
+locations in these cages map differently to SCSI IDs compared to the
+standard StorageWorks shelves. Slot IDs from top to bottom
+are 0, 4, 1, 5, 2, 6, 3 when using a single bus configuration. The cage
+can also be set to provide two independent SCSI buses. This is used for
+embedded RAID controllers like the KZPSC (Mylex DAC960). Slot ID assignments
+for split bus are, from top to bottom: 0A, 0B, 1A, 1B, 2A, 2B, 3A, 3B.
+Where A and B signify a SCSI bus. In a single bus configuration the
+terminator module on the back of the SCSI cage is on the TOP. The jumper
+module is on the BOTTOM. For split bus operation these two modules are
+reversed. The terminator can be distinguished from the jumper by noting the
+chips on the terminator. The jumper does not have any active components on
+it.
+
+Expansion:
+DemiSable has 7 EISA slots and 3 PCI slots. Sable has 8 EISA and 3 PCI
+slots. Lynx, being newer, has 8 PCI and 3 EISA slots. The Lynx PCI slots
+are grouped in sets of 4. The 4 PCI slots closest to the CPU/memory
+slots are the primary slots, so logically before the PCI bridge chip.
+Note that contrary to expectation the primary PCI slots are the highest
+numbered ones (PCI4 - PCI7).
+
+Make sure you run the EISA Configuration Utility (from floppy) when
+adding/change expansion cards in EISA slots or after upgrading your
+console firmware. This is done by inserting the ECU floppy and typing
+RUNECU at the SRM >>> prompt.
+
+ NOTE: EISA slots are currently unsupported, but the Compaq Qvision
+ EISA VGA adapter is treated as an ISA device. It therefore
+ works OK as a console.
+
+A special Extended I/O module for use on the C-bus was planned-for.
+Whether they ever saw daylight is unknown. In any case FreeBSD has never
+been verified with an ExtIO module.
+
+Power:
+The machines can be equipped with redundant power supplies. Note that
+the enclosure is equipped with interlock switches that switch off power
+when the enclosure is opened. The system's cooling fans are speed
+controlled. When the machine has more than 2 CPUs and more than 1 memory
+board dual power supplies are mandatory.
+
+The kernel config file must contain:
+ options DEC_2100_A500
+ cpu EV4
+ cpu EV5
+
+*
+* AlphaServer 4100 ("Rawhide")
+*
+
+The AlphaServer 4100 machine is aimed as an enterprise server.
+Expect a 30" high pedestal cabinet or alternatively the same system box in a
+19" rack. This is medium iron, not a hobbyist system.
+These are multi-CPU machines, up to 4 CPUs can be in a single
+machine. Basic disk storage is housed in one or two StorageWorks shelves
+at the bottom of the pedestal. The Rawhides intended for the NT market are
+designated DIGITAL Server 7300 (5/400 CPU), DIGITAL Server 7305 (5/533 CPU).
+A trailing R on the part-number means a rackmount variant.
+
+Features:
+- 21164 EV5 CPUs at 266, 300 MHz
+ 21164A EV56 CPUs at 400, 466, 533, 600 and 666 Mhz
+- cache: 4 Mbytes per CPU (EV5 300 MHz was also available cache-less)
+ 8 Mbytes (EV5 600Mhz only)
+- memory bus: 128 bit with ECC
+- embedded floppy controller
+- 2 serial ports
+- 1 parallel port
+- PS/2 style keyboard & mouse port
+
+CPU:
+Rawhide is a multiprocessor machine. Currently FreeBSD only uses one CPU.
+
+Memory:
+Rawhide uses a maximum of 8 RAM modules. These modules are used in pairs
+and supply 72 bits to the bus (this includes ECC bits). Memory can be EDO
+RAM or synchronous DRAM. A fully populated Rawhide has 4 pairs of memory
+modules. Given the choice use SDRAM for best performance. The highest
+capacity memory board must be in memory slot 0. A mix of memory board sizes
+is allowed. A mix of EDO and SDRAM is also reported as working (assuming you
+don't try to mix EDO and SDRAM in one module pair).
+
+Embedded SCSI:
+Rawhide has an embedded Symbios 810 Fast SCSI bus.
+
+Expansion:
+Rawhides are available with a 8 64-bit PCI / 3 EISA slot expansion backplanes
+(called 'Saddle' modules). There are 2 separate PCI buses, PCI0 and PCI1.
+PCI0 has 1 dedicated PCI slot and (shared) 3 PCI/EISA slots. PCI0 also has a
+PCI/EISA bridge that drives things like the serial and parallel ports,
+keyboard/mouse etc. PCI1 has 4 PCI slots and an Symbios 810 SCSI chip. VGA
+console cards must be installed in a slot connected to PCI0.
+
+The current implementation has problems in handling PCI bridges. There is
+currently a limited fix in place which allows for single level, single device
+PCI bridges. The fix allows for the Digital supplied Qlogic SCSI card which
+sits behind a 21054 PCI bridge chip.
+
+ NOTE: EISA slots are currently unsupported, but the Compaq Qvision
+ EISA VGA adapter is treated as an ISA device. It therefore
+ works OK as a console.
+
+Power:
+The system employs an I2C based power controller system. If you want to be
+sure all power is removed from the system pull the mains cables from the
+system.
+
+The kernel config file must contain:
+ options DEC_KN300
+ cpu EV5
+
+*
+* AlphaServer 1200 ("Tincup") and AlphaStation 1200 ("DaVinci")
+*
+
+The AlphaServer 1200 machine is the successor to the AlphaServer 1000A.
+It uses the same enclosure the 1000A uses, but the logic is based on the
+AlphaServer 4000 design. These are multi-CPU machines, up to 2 CPUs can
+be in a single machine. Basic disk storage is housed in a StorageWorks shelves
+The AS1200 intended for the NT market are designated DIGITAL Server 5300
+(5/400 CPU) and DIGITAL Server 5305 (5/533 CPU).
+
+Features:
+- 21164A EV56 CPUs at 400 or 533 Mhz
+- cache: 4 Mbytes per CPU
+- memory bus: 128 bit with ECC
+ DIMM memory on two memory daughter boards
+- embedded floppy controller
+- 2 serial ports
+- 1 parallel port
+- PS/2 style keyboard & mouse port
+
+CPU:
+AS1200 is a multiprocessor-capable machine. Currently FreeBSD only uses one CPU.
+
+Memory:
+AS1200 uses 2 memory daughter cards. On each of these cards are 8 DIMM slots.
+DIMMs must be installed in pairs. The maximum memory size is 4 Gbytes.
+Slots must be filled in order and slot 0 must contain the largest size
+DIMM if different sized DIMMs are used. AS1200 employs fixed starting
+addresses for DIMMs, each DIMM pair starts at a 512 Mbyte boundary.
+This means that if DIMMs smaller than 256 Mbyte are used the system's
+physical memory map will contain 'holes'. Supported DIMM sizes are 64 Mbytes
+and 256 Mbytes. The DIMMs are 72 bit SDRAM based, as the system employs ECC.
+
+Embedded SCSI:
+AS1200 has an embedded Symbios 810 Fast SCSI bus.
+
+Expansion:
+AS1200 has 5 64-bit PCI slots, one 1 32-bit PCI slot and one EISA slot
+(which is physically shared with one of the 64-bit PCI slots).
+There are 2 separate PCI buses, PCI0 and PCI1. PCI0 has the 32-bit PCI
+slot and the 2 top-most 64-bit PCI slots. PCI0 also has an Intel 82375EB
+PCI/EISA bridge that drives things like the serial and parallel ports,
+keyboard/mouse etc. PCI1 has 4 64-bit PCI slots and an Symbios 810 SCSI chip.
+VGA console cards must be installed in a slot connected to PCI0.
+
+Power:
+The system employs an I2C based power controller system. If you want to be
+sure all power is removed from the system pull the mains cables from the
+system. Tincup uses dual power supplies in load-sharing mode and not
+as a redundancy pair.
+
+The kernel config file must contain:
+ options DEC_KN300
+ cpu EV5
+
+*
+* AlphaServer 8200 and 8400 ("TurboLaser")
+*
+The AlphaServer 8200 and 8400 machines are aimed as enterprise servers.
+Expect a tall 19" cabinet (8200) or fat (8400) 19" rack. This is big iron,
+not a hobbyist system. These are multi-CPU machines, up to 12 CPUs can be in
+a single machine. The TurboLaser System Bus (TLSB) allows 9 nodes on the
+AS8400 and 5 nodes on the AS8200. TLSB is 256 bit data, 40 bit address
+allowing 2.1 Gbytes/sec. Nodes on the TLSB can be CPUs, memory or I/O. A
+maximum of 3 I/O ports are supported on a TLSB. Basic disk storage is housed
+in a StorageWorks shelf.
+
+Features:
+- 21164 EV5 CPUs at up to 467 MHz
+ 21264 EV67 CPUs at up to 625 MHz
+ one or two CPUs per CPU module
+- cache: 4Mbytes per CPU
+- memory bus: 256 bit with ECC
+- memory:
+ uses big memory modules that plug into the TLSB, which in turn
+ hold special SIMM modules.
+ memory modules come in varying sizes, up to 2 Gbytes a piece.
+ uses ECC (8 bites per 64 bits of data)
+ 7 modules max for AS8400, 3 modules max for AS8200
+ maximum memory is 14 Gbytes
+- expansion:
+ 3 system 'I/O ports' that allow up to 12 I/O channels
+ each I/O channel can connect to XMI, Futurebus+ or PCI boxes
+
+Memory:
+FreeBSD supports (and has been tested with) up to 2 Gbytes of memory on
+TurboLaser.
+
+CPU:
+TurboLaser is very much a multiprocessor machine. Currently FreeBSD only
+uses one CPU.
+
+Expansion:
+Only PCI expansion is supported on FreeBSD. XMI or Futurebus+ (which
+are AS8400 only) are both unsupported.
+
+The I/O port modules are designated KFTIA or KFTHA. The I/O port modules
+supply so called 'hoses' that connect to up to 4 (KFTHA) PCI buses or 1
+PCI bus (KFTIA). KFTIA has embedded dual 10baseT Ethernet, single FDDI,
+3 SCSI Fast Wide Differential SCSI buses and a single Fast Wide Single Ended
+SCSI bus. The FWSE SCSI is intended for the systems CDROM.
+
+KFTHA can drive via each of its 4 hoses a DWLPA or DWLPB box. The DWLPx
+house a 12 slots 32 bit PCI backplane. Physically the 12 slots are 3 4-slot
+buses but to the software it appears as a single 12 slots PCI bus. A fully
+expanded AS8x00 can have 3 (I/O ports) times 4 (hoses) times 12 (PCI
+slots/DWLPx) = 144 PCI slots. The maximum bandwidth per KFTHA is 500
+Mbytes/second. DWLPA can also house 8 EISA cards, 2 slots are PCI-only, 2
+slots are EISA only. Of the 12 slots 2 are always occupied by an I/O and
+connector module.
+
+For best performance distribute high bandwidth (FibreChannel, Gigabit Ethernet)
+over multiple hoses and/or multiple KFTHA/KFTIA.
+
+Currently PCI expansion cards containing PCI bridges are not usable. Don't
+use them at this time.
+
+Embedded SCSI:
+The single ended SCSI bus on the KFTIA will turn up as the fourth (!)
+SCSI bus. The 3 differential SCSI buses of the KFTIA precede it.
+
+Console:
+AS8x00 are generally run with serial consoles. Some newer machines might
+have a graphical console of some sorts but FreeBSD has only been tested on
+a serial console.
+
+For serial console usage either change /etc/ttys to have:
+
+ console "/usr/libexec/getty std.9600" unknown on secure
+
+as the console entry, or add
+
+ zs0 "/usr/libexec/getty std.9600" unknown on secure
+
+and make the zs node:
+
+ mknod /dev/zs0 c 135 0
+
+For the AlphaServer 8x00 machines the kernel config file must
+contain:
+ options DEC_KN8AE # Alpha 8200/8400 (Turbolaser)
+ cpu EV5
+
+*
+* Alpha Processor Inc. UP1100
+*
+
+The UP1000 is an ATX mainboard based on the 21264a CPU which itself lives in
+a Slot B module. It is normally housed in a ATX [mini]tower enclosure.
+
+Features:
+- 21264a Alpha CPU at 600 or 700 MHz in a Slot B module (includes cooling fans)
+- memory bus: 128 bits to the L2 cache, 64 bits from Slot B to the AMD-751
+- on-board Bcache / L2 cache: 2Mb (600Mhz) or 4Mb (700Mhz) cache
+- AMD AMD-751 ('Irongate') system controller chip
+- Acer Labs M1543C PCI-ISA bridge controller / super-IO chip
+- PS/2 mouse & keyboard port
+- memory: 168-pin PC100 unbuffered SDRAM DIMMS
+ 3 DIMM slots
+ DIMM sizes supported are 64, 128 or 256 Mb in size
+- 2x 16550A serial port
+- 1x ECP/EPP parallel port
+- floppy interface
+- 2x embedded Ultra DMA33 IDE interface
+- 2x USB port
+- expansion: 4 32 bit PCI slots
+ 2 ISA slots
+ 1 AGP slot
+
+Slot B:
+Slot B is a box-like enclosure that houses a daughter-board for the CPU and
+cache. It has 2 small fans for cooling. Loud ones too..
+
+Memory:
+The machine needs ECC capable DIMMs, so 72 bit ones. This does not appear to
+be documented in the UP1000 docs. The system accesses the serial EEPROM on
+the DIMMs via the SM bus. Note that if only a single DIMM is used it must be
+installed in slot *2*. This is a bit counter-intuitive.
+
+Power
+The UP1000 needs a 400Watt ATX power supply according to the manufacturer.
+This might be a bit overly conservative/pessimistic judging from the power
+consumption of the board & cpu. But as always you will have to take your
+expansion cards and peripherals into account. The M1543C chip contains power
+management functionality & temperature monitoring (via I2C / SM bus).
+
+Console
+Chances are that your UP1000 comes by default with AlphaBios only. The SRM
+console firmware is available from the Alpha Processor Inc. website. It is
+currently available in a beta version which was successfully used during the
+port of FreeBSD to the UP1000.
+
+EIDE:
+The embedded Ultra DMA EIDE ports are bootable by the SRM console.
+
+SCSI:
+UP1000 SRM can boot off an Adaptec 294x adapter. Under high I/O load conditions
+machine lockups have been observed using the Adaptec 294x. A Symbios 875
+based card works just fine, using either the ncr or sym driver. The sym driver
+is the newest and most actively maintained one. Most likely other cards
+based on the Symbios chips that the sym driver supports will work as well.
+
+USB:
+Is disabled by the SRM console and has not (yet) been tested with FreeBSD.
+
+For the UP1000 the kernel config file must contain:
+ cpu EV5
+ options API_UP1000 # UP1000, UP1100 (Nautilus)
+
+*
+* Alpha Processor Inc. UP1100
+*
+
+The UP1100 is an ATX mainboard based on the 21264a CPU running at 600 MHz.
+It is normally housed in a ATX [mini]tower enclosure.
+
+Features:
+- 21264a Alpha CPU at 600 MHz
+- memory bus: 100MHz 64-bit
+- on-board Bcache / L2 cache: 2Mb
+- AMD AMD-751 ('Irongate') system controller chip
+- Acer Labs M1535D PCI-ISA bridge controller / super-IO chip
+- PS/2 mouse & keyboard port
+- memory: 168-pin PC100 unbuffered SDRAM DIMMS
+ 3 DIMM slots
+ DIMM sizes supported are 64, 128 or 256 Mb in size
+- 2x 16550A serial port
+- 1x ECP/EPP parallel port
+- floppy interface
+- 2x embedded Ultra DMA33 IDE interface
+- 2x USB port
+- expansion: 3 32 bit PCI slots
+ 1 AGP2x slot
+
+Console:
+SRM console code comes standard with the UP1100. The SRM lives in 2Mbytes of
+flash ROM.
+
+Memory:
+The machine needs ECC capable DIMMs, so 72 bit ones. This does not appear to
+be documented in the UP1000 docs. The system accesses the serial EEPROM on
+the DIMMs via the SM bus. Note that if only a single DIMM is used it must be
+installed in slot *2*. This is a bit counter-intuitive.
+
+Power
+The UP1000 needs a 400Watt ATX power supply according to the manufacturer.
+This might be a bit overly conservative/pessimistic judging from the power
+consumption of the board & cpu. But as always you will have to take your
+expansion cards and peripherals into account. The M1535D chip contains power
+management functionality & temperature monitoring (via I2C / SM bus using
+a LM75 thermal sensor).
+
+Network:
+The UP1100 has an on-board 21143 10/100Mbit Ethernet interface.
+
+Sound:
+The UP1100 is equipped with a SoundBlaster compatible audio interface.
+Whether this works with FreeBSD is as of yet unknown.
+
+EIDE:
+The embedded Ultra DMA EIDE ports are bootable by the SRM console.
+
+USB:
+The UP1100 has 3 USB ports, 2 going external and one connected to the
+AGP port.
+
+For the UP1100 the kernel config file must contain:
+ cpu EV5
+ options API_UP1000 # UP1000, UP1100 (Nautilus)
+
+*
+* Alpha Processor Inc. CS20
+*
+
+The CS20 is a 19", 1U high rackmount server based on the 21264[ab] CPU. It can
+have a maximum of 2 CPUs.
+
+Features:
+- 21264a Alpha CPU at 667 MHz or 21264b 833 MHz (max. 2 CPUs)
+- memory bus: 100MHz 256-bit wide
+- 21271 Core Logic chipset ("Tsunami")
+- Acer Labs M1533 PCI-ISA bridge controller / super-IO chip
+- PS/2 mouse & keyboard port
+- memory: 168-pin PC100 PLL buffered/registered SDRAM DIMMS
+ 8 DIMM slots
+ uses ECC memory
+ min 256 Mbytes / max 2 Gbytes of memory
+- 2x 16550A serial port
+- 1x ECP/EPP parallel port
+- ALI M1543C Ultra DMA66 IDE interface
+- embedded dual Intel 82559 10/100Mbit Ethernet
+- embedded Symbios 53C1000 Ultra160 SCSI controller
+- expansion: 2 64 bit PCI slots (2/3 length)
+
+CPU:
+The CS20 can have 2 CPUs installed. FreeBSD/alpha is not currently SMP-capable
+and will only use the primary CPU.
+
+Console:
+SRM console code comes standard with the CS20. The SRM lives in 2Mbytes of
+flash ROM.
+
+Memory:
+The CS20 needs ECC capable DIMMs. Note that it uses *buffered* DIMMs.
+
+Monitoring:
+The CS20 has an I2C based internal monitoring system for things like
+temperature, fans, voltages etc. The I2C also supports 'wake on LAN'.
+
+Expansion:
+Each PCI slot is connected to it's own independent PCI bus on the Tsunami.
+
+EIDE:
+The embedded Ultra DMA EIDE ports are bootable by the SRM console.
+
+Disks:
+The CS20 has an embedded slim-line IDE CD drive. There is a front-accessible
+bay for a 1" high 3.5" SCSI hard-disk drive with SCA connector.
+
+Note that there is no floppy disk drive (or a connector to add one).
+
+The kernel config file must contain:
+ options DEC_ST6600
+ cpu EV5
+
+Contrary to expectation there is no 'cpu EV6' defined for inclusion in the
+kernel config file. The 'cpu EV5' is mandatory to keep config(8) happy.
+
+Supported hardware overview
+---------------------------
+
+Word of caution: the installed base for FreeBSD/alpha is not nearly as large
+as for FreeBSD/Intel. This means that the enormous variation of PCI/ISA
+expansion cards out there has much less chance of having been tested on
+alpha than on Intel. This is not to imply they are doomed to fail, just that
+the chance of running into something never tested before is much greater.
+GENERIC contains things that are known to work on Alpha only.
+
+- Expansion buses: PCI and ISA are fully supported. Turbo Channel is not
+in GENERIC and has limited support (see the relevant machine model info).
+The MCA bus is not supported. The EISA bus is not supported for use with
+EISA expansion cards as the EISA support code is lacking. ISA cards in EISA
+slots are reported to work. The Compaq Qvision EISA VGA card is driven in
+ISA mode and works OK as a console.
+
+- Floppy drives: 1.44 Mbyte and 1.2 Mbyte floppy drives are supported.
+2.88Mbyte drives sometimes found in Alpha machines are supported up to
+1.44Mbyte.
+
+- ATA / ATAPI (IDE): are supported via the ata driver framework. As most
+people run their Alphas with SCSI disks it is not as well tested as SCSI. Be
+aware of boot-ability restrictions for IDE disks. See the machine specific
+information.
+
+- SCSI: full support via the CAM layer for Adaptec 2940x (AIC7xxx
+chip-based), Qlogic family and Symbios. Be aware of the machine-specific
+boot-ability issues for the various adapter types.
+
+- FibreChannel: the Qlogic QL2x00 FibreChannel host adapters are fully
+supported.
+
+- Ethernet: if you want to boot your Alpha over the Ethernet you will
+obviously need an Ethernet card that the SRM console recognizes. This
+generally means you need a board with an 21x4x Ethernet chip as that is
+what Digital used. These chips are driven by the FreeBSD 'de' (older driver)
+or 'dc' (newer driver). Some new SRM versions are known to recognize the
+Intel 8255x Ethernet chips as driven by the FreeBSD 'fxp' driver. But beware:
+the 'fxp' driver is reported not to work correctly with FreeBSD/alpha (although
+it works excellently on FreeBSD/x86).
+
+- FDDI: DEC DEFPA PCI FDDI network adapters are supported on alpha.
+
+- graphics console/keyboard/mouse: in general the SRM console emulates
+a VGA-compatibility mode on PCI VGA cards. This is, however, not guaranteed
+to work by Compaq/DEC for each and every card type out there. When the SRM
+thinks the VGA is acceptable FreeBSD will be able to use it. The console driver
+works just like on a FreeBSD/intel machine. The TGA video graphics which
+is embedded on for example Multia does *not* work with FreeBSD. TGA based
+PCI cards are also *not* supported. Please note that VESA modes are not
+supported on Alpha, so that leaves you with 80x25 consoles
+
+- serial ports: the 'PC standard' serial ports found on most Alphas are
+supported. For TurboChannel machines the serial ports are also supported.
+
+- ISDN (i4b): is not supported on FreeBSD/alpha
+
+Acknowledgments
+----------------
+
+In compiling this file I used multiple information sources, but
+http://www.netbsd.org proved to be an invaluable source of information.
+If it wasn't for NetBSD/alpha there probably would not be a FreeBSD/alpha
+in the first place.
+
+People who kindly helped me create this document:
+
+- Nick Maniscalco <nmanisca@vt.edu>
+- Andrew Gallatin <gallatin@cs.duke.edu>
+- Christian Weisgerber <naddy@mips.rhein-neckar.de>
+- David O'Brien <obrien@NUXI.com>
+- Wim Lemmers, ex-Compaq
+- Matthew Jacob <mjacob@feral.com>
+- Eric Schnoebelen <eric@cirr.com>
+- Chuck Robey <chuckr@picnic.mat.net>
+- Mike Smith <msmith@FreeBSD.ORG>
+- Peter Jeremy <peter.jeremy@alcatel.com.au>
+- Dolf de Waal <l.j.de.waal@kader.hobby.nl>
+- Wouter Brackman, Compaq
+- Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
+- Peter van Dijk <petervd@vuurwerk.nl>
+- Lodewijk van den Berg, Compaq
diff --git a/release/texts/alpha/INSTALL.TXT b/release/texts/alpha/INSTALL.TXT
new file mode 100644
index 000000000000..f2cf13341f62
--- /dev/null
+++ b/release/texts/alpha/INSTALL.TXT
@@ -0,0 +1,443 @@
++===================== Installing FreeBSD ==========================+
+| |
+| Table of Contents: |
+| |
+| 0.0 Quick Start: |
+| 0.1 Installing FreeBSD from CDROM or the Internet. |
+| |
+| 1.0 Detail on various installation types: |
+| 1.1 Installing from a network CDROM |
+| 1.2 Installing from Floppies |
+| 1.3 Installing from QIC/SCSI tape |
+| 1.4 Installing over a network using NFS or FTP |
+| 1.4.1 NFS Installation tips |
+| 1.4.2 FTP Installation tips |
+| |
++=====================================================================+
+
+Author: Jordan K. Hubbard
+Last updated: Fri Mar 16 14:47:31 PST 2001
+
+0.0 Quick Start
+--- -----------
+
+This manual documents the process of making a new installation of
+FreeBSD on your machine. If you are upgrading from a previous
+release of FreeBSD, please see the file UPGRADE.TXT for important
+information on upgrading. If you are not familiar with configuring
+hardware for FreeBSD, you should also read the HARDWARE.TXT file -
+it contains important information which may save you a lot of grief.
+
+If you're new to FreeBSD then you should also read EVERYTHING listed
+in the Documentation menu on the boot floppy. It may seem like a lot
+to read, but the time you spend now reading the documents will be made
+up many times over because you were adequately prepared. Also, you will
+know the types of information available should you get stuck later.
+Once the system is installed, you can also revisit this menu and use a
+WEB browser to read the installed FAQ (Frequently Asked Questions) and
+Handbook HTML documentation sets for FreeBSD. You can also use the
+browser to visit other WEB sites on the net (like http://www.freebsd.org)
+if you have an Internet connection. See ABOUT.TXT for more information
+on the resources available to you.
+
+The best laid plans sometimes go awry, so if you run into trouble take a
+look at TROUBLE.TXT which contains valuable troubleshooting information.
+
+DISCLAIMER: While FreeBSD does its best to safeguard against
+accidental loss of data, it's still more than possible to WIPE OUT
+YOUR ENTIRE DISK with this installation! Please do not proceed to the
+final FreeBSD installation menu unless you've adequately backed up any
+important data first! We really mean it!
+
+FreeBSD/alpha supports the alpha platforms described in HARDWARE.TXT
+
+You will need a dedicated disk for FreeBSD/alpha. It is not possible
+to share a disk with another operating system at this time. This disk
+will need to be attached to a SCSI controller which is supported by
+the SRM firmware or an IDE disk assuming the SRM in your machine
+supports booting from IDE disks.
+
+Your root filesystem MUST be the first partition (partition a) on the
+disk to be bootable.
+
+You will need the SRM console firmware for your platform. In some
+cases, it is possible to switch between AlphaBIOS (or ARC) firmware
+and SRM. In others it will be necessary to download new firmware from
+the vendor's Website.
+
+0.1 Installing FreeBSD from CDROM or the Internet
+--- ---------------------------------------------
+
+The easiest type of installation is from CD. If you have a supported
+CDROM drive and a FreeBSD installation CD from Walnut Creek CDROM, you
+can boot FreeBSD directly from the CDROM. Insert the CDROM into the
+drive and type the following command to start the installation:
+
+ >>>boot dka0 (or whatever device your CDROM drive is)
+
+Alternatively you can boot the installation from floppy disk. You
+should start the installation by building a set of FreeBSD boot floppy
+from the files floppies/kern.flp and floppies/mfsroot.flp using the
+instructions found in floppies/README.TXT. From the SRM console prompt
+(>>>), just insert the kern.flp floppy and type the following command
+to start the installation:
+
+ >>>boot dva0
+
+Insert the mfsroot.flp floppy when prompted and you will end up at the
+first screen of the install program.
+
+If you don't have a CDROM and would like to simply install over the
+net using PPP, slip or a dedicated connection, simply fetch the
+<FreeBSD-release>/floppies/kern.flp and mfsroot.flp files from:
+
+ ftp://ftp.freebsd.org/pub/FreeBSD
+
+or one of its many mirrors (http://www.freebsd.org/handbook/mirrors.html)
+and follow step 3 above. You should also read the floppies/README.TXT
+file as it contains important information for downloaders.
+
+Once you have a boot floppy made, please go to section 1.4 of this
+document for additional tips on installing via FTP or NFS.
+
+
+1.0 Detail on various installation types
+--- ------------------------------------
+
+Once you've gotten yourself to the initial installation screen
+somehow, you should be able to follow the various menu prompts and go
+from there. If you've never used the FreeBSD installation before, you
+are also encouraged to read some of the documentation in the the
+Documentation submenu as well as the general "Usage" instructions on
+the first menu.
+
+ REMEMBER: If you get stuck at a screen, hit F1 for the online
+ documentation for that section.
+
+If you've never installed FreeBSD before, or even if you have, the
+"Standard" installation mode is the most recommended since it makes sure
+that you'll visit all the various important checklist items along the
+way. If you're much more comfortable with the FreeBSD installation
+process and know _exactly_ what you want to do, use the Express or
+Custom installation options. If you're upgrading an existing system,
+use the Upgrade option.
+
+The FreeBSD installer supports the direct use of floppy, DOS, tape,
+CDROM, FTP, NFS and UFS partitions as installation media, further tips
+on installing from each type of media listed below.
+
+Once the install procedure has finished, you will be able to start
+FreeBSD/alpha by typing something like this to the SRM prompt:
+
+ >>>boot dkc0
+
+This instructs the firmware to boot the specified disk. To find the
+SRM names of disks in your machine, use the show device command:
+
+ >>>show device
+ dka0.0.0.4.0 DKA0 TOSHIBA CD-ROM XM-57 3476
+ dkc0.0.0.1009.0 DKC0 RZ1BB-BS 0658
+ dkc100.1.0.1009.0 DKC100 SEAGATE ST34501W 0015
+ dva0.0.0.0.1 DVA0
+ ewa0.0.0.3.0 EWA0 00-00-F8-75-6D-01
+ pkc0.7.0.1009.0 PKC0 SCSI Bus ID 7 5.27
+ pqa0.0.0.4.0 PQA0 PCI EIDE
+ pqb0.0.1.4.0 PQB0 PCI EIDE
+
+
+This example is from a Digital Personal Workstation 433au and shows
+three disks attached to the machine. The first is a CDROM called dka0
+and the other two are disks and are called dkc0 and dkc100
+repectively.
+
+You can specify which kernel file to load and what boot options to use
+with the -file and -flags options to boot, e.g.:
+
+ >>>boot -file kernel.old -flags s
+
+To make FreeBSD/alpha boot automatically, use these commands:
+
+ >>>set boot_osflags a
+ >>>set bootdef_dev dkc0
+ >>>set auto_action BOOT
+
+
+1.1 Installing from a network CDROM
+--- -------------------------------
+
+If you simply wish to install from a local CDROM drive then see the
+Quick Start section. If you don't have a CDROM drive on your system
+and wish to use a FreeBSD distribution CD in the CDROM drive of
+another system to which you have network connectivity, there are
+several ways of going about it:
+
+1. If you would be able to FTP install FreeBSD directly from the CDROM
+ drive in some FreeBSD machine, it's quite easy: You simply add the
+ following line to the password file (using the vipw command):
+
+ ftp:*:99:99::0:0:FTP:/cdrom:/sbin/nologin
+
+And anyone else on your network will now be able to choose a Media type
+of FTP and type in: ``ftp://<machine with CDROM drive>'' after picking
+"Other" in the ftp sites menu.
+
+2. If you would rather use NFS to export the CDROM directly to the
+ machine(s) you'll be installing from, you need to first add an
+ entry to the /etc/exports file (on the machine with the CDROM drive)
+ which looks something like this:
+
+ /cdrom -ro ziggy.foo.com
+
+ To allow the machine "ziggy.foo.com" to mount the CDROM directly
+ via NFS during installation. The machine with the CDROM must also
+ be configured as an NFS server, of course, and if you're not sure how
+ to do that then an NFS installation is probably not the best choice
+ for you unless you're willing to read up on rc.conf(5) and configure
+ things appropriately. Assuming that this part goes smoothly, you
+ should be able to enter: <cdrom-host>:/cdrom as the path for an NFS
+ installation when the target machine is installed.
+
+
+1.2 Installing from Floppies
+--- ------------------------
+
+If you must install from floppy disks, either due to unsupported
+hardware or just because you enjoy doing things the hard way, you must
+first prepare some floppies for the install.
+
+First, make a set of boot floppies as described in floppies/README.TXT.
+
+Second, read the file LAYOUT.TXT and pay special attention to the
+"Distribution format" section since it describes which files you're
+going to need to put onto floppy and which you can safely skip.
+
+Next you will need, at minimum, as many 1.44MB floppies as it takes to
+hold all files in the bin (binary distribution) directory. If you're
+preparing these floppies under DOS, then THESE floppies *must* be
+formatted using the MS-DOS FORMAT command. If you're using Windows,
+use the Windows File Manager format command.
+
+Don't trust Factory Preformatted floppies! Format them again
+yourself, just to make sure. Many problems reported by our users in
+the past have resulted from the use of improperly formatted media,
+which is why I'm taking such special care to mention it here!
+
+If you're creating the floppies from another FreeBSD machine, a format
+is still not a bad idea though you don't need to put a DOS filesystem
+on each floppy. You can use the `disklabel' and `newfs' commands to
+put a UFS filesystem on a floppy, as the following sequence of
+commands illustrates:
+
+ fdformat -f 1440 fd0.1440
+ disklabel -w -r fd0.1440 floppy3
+ newfs -t 2 -u 18 -l 1 -i 65536 /dev/fd0
+
+After you've formatted the floppies for DOS or UFS, you'll need to
+copy the files onto them. The distribution files are split into
+chunks conveniently sized so that 5 of them will fit on a conventional
+1.44MB floppy. Go through all your floppies, packing as many files as
+will fit on each one, until you've got all the distributions you want
+packed up in this fashion. Each distribution should go into its own
+subdirectory on the floppy, e.g.: a:\bin\bin.inf, a:\bin\bin.aa,
+a:\bin\bin.ab, ...
+
+IMPORTANT NOTE: The bin.inf file also needs to go on the first floppy
+of the bin set since it is read by the installation program in order
+to figure out how many additional pieces to look for when fetching and
+concatenating the distribution. When putting distributions onto
+floppies, the <distname>.inf file MUST occupy the first floppy of each
+distribution set!
+
+Once you come to the Media screen of the install, select "Floppy" and
+you'll be prompted for the rest.
+
+
+1.3 Installing from QIC/SCSI Tape
+--- -----------------------------
+
+When installing from tape, the installation program expects the files
+to be simply tar'ed onto it, so after fetching all of the files for
+the distributions you're interested in, simply tar them onto the tape
+with a command something like this:
+
+ cd /where/you/have/your/dists
+ tar cvf /dev/rwt0 (or /dev/rsa0) dist1 .. dist2
+
+When you go to do the installation, you should also make sure that you
+leave enough room in some temporary directory (which you'll be allowed
+to choose) to accommodate the FULL contents of the tape you've
+created. Due to the non-random access nature of tapes, this method of
+installation requires quite a bit of temporary storage! You should
+expect to require as much temporary storage as you have stuff written
+on tape.
+
+SPECIAL NOTE: When going to do the installation, the tape must be in
+the drive *before* booting from the boot floppy. The installation
+"probe" may otherwise fail to find it.
+
+Now create a boot floppy as described in section 0.1 and proceed with
+the installation.
+
+
+1.4 Installing over a network using FTP or NFS
+--- ------------------------------------------
+
+After making a boot floppy as described in the first section, you can
+load the rest of the installation over a network using one of 3 types
+of connections:
+
+ Serial port: SLIP / PPP
+ Parallel port: PLIP (using ``laplink'' style cable)
+ Ethernet: A standard Ethernet controller (including
+ certain PCCARD devices).
+
+Serial Port
+-----------
+
+SLIP support is rather primitive, and is limited primarily to
+hard-wired links, such as a serial cable running between two
+computers. The link must be hard-wired because the SLIP installation
+doesn't currently offer a dialing capability. If you need to dial out
+with a modem or otherwise dialog with the link before connecting to
+it, then I recommend that the PPP utility be used instead.
+
+If you're using PPP, make sure that you have your Internet Service
+Provider's IP address and DNS information handy as you'll need to know
+it fairly early in the installation process. You may also need to
+know your own IP address, though PPP supports dynamic address
+negotiation and may be able to pick up this information directly from
+your ISP if they support it.
+
+You will also need to know how to use the various "AT commands" for
+dialing out with your particular brand of modem as the PPP dialer
+provides only a very simple terminal emulator.
+
+
+Parallel Port
+-------------
+
+If a hard-wired connection to another FreeBSD or Linux machine is
+available, you might also consider installing over a "laplink"
+style parallel port cable. The data rate over the parallel port
+is much higher than what is typically possible over a serial line
+(up to 50k/sec), thus resulting in a quicker installation. It's not
+typically necessary to use "real" IP addresses when using a
+point-to-point parallel cable in this way and you can generally just
+use RFC 1918 style addresses for the ends of the link (e.g. 10.0.0.1,
+10.0.0.2, etc).
+
+IMPORTANT NOTE: If you use a Linux machine rather than a FreeBSD
+machine as your PLIP peer, you will also have to specify "link0" in
+the TCP/IP setup screen's ``extra options for ifconfig'' field.
+
+
+Ethernet
+--------
+
+FreeBSD supports most common Ethernet cards, a table of supported
+cards (and their required settings) being provided as part of the
+FreeBSD Hardware Guide (see the Documentation menu on the boot floppy
+or the top level directory of the CDROM).
+
+You will also need to know your IP address on the network, the
+"netmask" value for your address class and the name of your machine.
+Your system administrator can tell you which values are appropriate to
+your particular network setup. If you will be referring to other
+hosts by name rather than IP address, you'll also need a name server
+and possibly the address of a gateway (if you're using PPP, it's your
+provider's IP address) to use in talking to it.
+
+If you do not know the answers to these questions then you should
+really probably talk to your system administrator _first_ before
+trying this type of installation! Using a randomly chosen IP address
+or netmask on a live network will almost certainly get you shot at
+dawn.
+
+Once you have a network connection of some sort working, the
+installation can continue over NFS or FTP.
+
+
+1.4.1 NFS installation tips
+----- ---------------------
+
+ NFS installation is fairly straight-forward: Simply copy the
+ FreeBSD distribution files you want onto a server somewhere
+ and then point the NFS media selection at it.
+
+ If this server supports only "privileged port" access (as is
+ generally the default for Sun and Linux workstations), you
+ will need to set this option in the Options menu before
+ installation can proceed.
+
+ If you have a poor quality Ethernet card which suffers from very
+ slow transfer rates, you may also wish to toggle the appropriate
+ Options flag.
+
+ In order for NFS installation to work, the server must also support
+ "subdir mounts", e.g. if your FreeBSD 2.2 distribution directory
+ lives on: ziggy:/usr/archive/stuff/FreeBSD
+ Then ziggy will have to allow the direct mounting of
+ /usr/archive/stuff/FreeBSD, not just /usr or /usr/archive/stuff.
+
+ In FreeBSD's /etc/exports file this is controlled by the
+ ``-alldirs'' option. Other NFS servers may have different
+ conventions. If you are getting `Permission Denied' messages
+ from the server then it's likely that you don't have this
+ properly enabled!
+
+
+1.4.2 FTP Installation tips
+----- ---------------------
+
+ FTP installation may be done from any mirror site containing a
+ reasonably up-to-date version of FreeBSD. A full menu of
+ reasonable choices for almost any location in the world is
+ provided in the FTP site menu during installation.
+
+ If you are installing from some other FTP site not listed in
+ this menu, or you are having troubles getting your name server
+ configured properly, you can also specify your own URL by
+ selecting the ``URL'' choice in that menu. A URL can
+ contain a hostname or an IP address, so the following would
+ work in the absence of a name server:
+
+ ftp://192.216.191.11/pub/FreeBSD
+
+ There are three FTP installation modes you can use:
+
+ o FTP:
+
+ This method uses the standard "Active" mode for file
+ transfers which allows the server to initiate a connection
+ to the client. This will not work through most firewalls
+ but will often work best with older FTP servers that do
+ not support passive mode. If your connection hangs with
+ passive mode, try this one!
+
+ o FTP Passive:
+
+ This sets the FTP "Passive" mode which prevents the
+ server from opening connections to the client. This
+ option is best for users to pass through firewalls that
+ do not allow incoming connections on random port
+ addresses.
+
+ o FTP via an HTTP proxy:
+
+ This option instructs FreeBSD to use HTTP to connect to a
+ proxy for all FTP operations. The proxy will translate
+ the requests and send them to the FTP server. This
+ allows the user to pass through firewalls that do not
+ allow FTP at all, but offer an HTTP proxy. You must
+ specify the hostname of the proxy in addition to the FTP
+ server.
+
+ In the rare case that you have an FTP proxy that does not go
+ through HTTP, you can specify the URL as something like :
+
+ ftp://foo.bar.com:1234/pub/FreeBSD
+
+ Where "1234" is the port number of the proxy ftp server.
+
+
+---- End of Installation Guide ---
diff --git a/release/texts/alpha/RELNOTES.TXT b/release/texts/alpha/RELNOTES.TXT
new file mode 100644
index 000000000000..f1f9bb1fb6a9
--- /dev/null
+++ b/release/texts/alpha/RELNOTES.TXT
@@ -0,0 +1,1499 @@
+ RELEASE NOTES
+ FreeBSD Release 5.0-SNAP
+ (alpha Architecture)
+
+This is a 5.0-CURRENT release SNAPshot of FreeBSD, an active
+development branch which will produce its first release in early
+March 2001. Those features which have also been back-ported to
+the 4.x-stable branch (the next release for which will be 4.3)
+are marked [MERGED].
+
+Any installation failures or crashes should be reported by using the
+send-pr command (those preferring a Web-based interface can also see
+http://www.FreeBSD.org/send-pr.html).
+
+For information about FreeBSD and the layout of the 5.0-RELEASE
+directory (especially if you're installing from floppies!), see
+ABOUT.TXT. For installation instructions, see the INSTALL.TXT and
+HARDWARE.TXT files.
+
+For the latest of these 5.0-current snapshots, you should always see:
+
+ ftp://current.FreeBSD.org/pub/FreeBSD
+
+If you wish to get the latest post-4.x-RELEASE technology.
+
+Table of contents:
+------------------
+1. What's new since the 4.0/5.0 branch
+ 1.1 KERNEL CHANGES
+ 1.2 SECURITY FIXES
+ 1.3 USERLAND CHANGES
+
+2. Supported Configurations
+ 2.1 Disk Controllers
+ 2.2 Ethernet cards
+ 2.3 FDDI
+ 2.4 ATM
+ 2.5 Misc
+
+3. Obtaining FreeBSD
+ 3.1 FTP/Mail
+ 3.2 CDROM
+
+4. Upgrading from previous releases of FreeBSD
+
+5. Reporting problems, making suggestions, submitting code
+
+6. Acknowledgments
+
+
+1. What's new since the 4.0/5.0 branch
+--------------------------------------
+All changes described here are unique to the 5.0 branch unless
+specifically marked as [MERGED] features.
+
+
+1.1. KERNEL CHANGES
+-------------------
+
+A new event notification facility called kqueue was added to the
+FreeBSD kernel. This is a new interface which is able to replace
+poll/select, offering improved performance, as well as the ability
+to report many different types of events. Support for monitoring
+changes in sockets, pipes, fifos, and files are present, as well as
+for signals and processes. [MERGED]
+
+Support for named extended attributes was added to the FreeBSD kernel.
+This allows the kernel, and appropriately privileged userland processes,
+to tag files and directories with attribute data. Extended attributes
+were added to support the TrustedBSD Project, in particular ACLs,
+capability data, and mandatory access control labels.
+
+POSIX.1b Shared Memory Objects are now supported. The implementation
+uses regular files, but automatically enables the MAP_NOSYNC flag
+when they are mmap(2)ed. [MERGED]
+
+Added support for PCI Ethernet adapters based on the National Semiconductor
+DP83815 chipset, including the NetGear FA312-TX.
+
+Due to a licensing change, softupdates have been integrated into the
+main portion of the kernel source tree. As a consequence, softupdates
+are now available with the GENERIC kernel. [MERGED]
+
+ipfilter has been updated to 3.4.16. [MERGED]
+
+The tap driver, a virtual Ethernet device driver for bridged
+configurations, has been added. [MERGED]
+
+accept_filters, a kernel feature to reduce overheads when accepting
+and reading new connections on listening sockets, has been added.
+[MERGED]
+
+The ata(4) driver now has support for ATA100 controllers. In
+addition, it now supports the ServerWorks ROSB4 ATA33 chipset, the CMD
+648 ATA66 and CMD 649 ATA100 chipsets, and the Cyrix 5530. [MERGED]
+
+The ata(4) driver now has support for tagged queuing, which is
+enabled by the ATA_ENABLE_TAGS option. [MERGED]
+
+The ata(4) driver now has support for ATA "pseudo" RAID controllers as
+the Promise Fasttrak and HighPoint HPT370 controllers. [MERGED]
+
+AlphaServer 1200 ("Tincup") has been tested and works OK. Currently it does
+not want to boot from CD or floppy but a transplanted disk that was
+installed on another Alpha works well. [MERGED]
+
+The ti(4) driver now supports the Alteon AceNIC 1000baseT Gigabit
+Ethernet and Netgear GA620T 1000baseT Gigabit cards. [MERGED]
+
+SMP support has been largely reworked, incorporating code from BSD/OS
+5.0. One of the main features of SMPng ("SMP Next Generation") is to
+allow more processes to run in kernel, without the need for spin locks
+that can dramatically reduce the efficiency of multiple processors.
+Interrupt handlers now have contexts associated with them that allow
+them to be blocked, which reduces the need to lock out interrupts.
+
+The kernel and modules have been moved to the directory /boot/kernel,
+so they can be easily manipulated together. The boot loader has been
+updated to make this change as seamless as possible.
+
+A filesystem snapshot capability has been added to FFS. Details can
+be found in /usr/src/sys/ufs/ffs/README.snapshot.
+
+Softupdates for FFS have received some bug fixes and enhancements.
+
+A bug in FFS that could cause superblock corruption on very large
+filesystems has been corrected. [MERGED]
+
+The ng_mppc(4) and ng_bridge(4) node types have been added to the
+netgraph subsystem. The ng_ether(4) node is now dynamically loadable.
+Miscellaneous bug fixes and enhancements have also been made. [MERGED]
+
+The pcn(4) driver, which supports the AMD PCnet/FAST, PCnet/FAST+,
+PCnet/FAST III, PCnet/PRO, PCnet/Home, and HomePNA adapters, has been added.
+Although these cards are already supported by the lnc(4) driver, the pcn
+driver runs these chips in 32-bit mode and uses the RX alignment feature to
+achieve zero-copy receive. This driver is also machine-independent,
+so it will work on both the i386 and alpha platforms. The lnc driver
+is still needed to support non-PCI cards. [MERGED]
+
+The ed(4) driver is now also supported on the Alpha.
+
+A bug in the ed(4) driver that could cause panics with very short
+packets and BPF or bridging active has been fixed.
+
+The pcm(4) driver now supports the ESS Solo 1, Maestro-1, Maestro-2,
+and Maestro-2e; Forte Media fm801, ESS Maestro-2e, and VIA
+Technologies VT82C686A sound card/chipsets, and has received some
+other updates. [MERGED] A driver for the ESS Maestro-3/Allegro has
+been added, however due to the amount of GPL firmware included, it
+will only be built as a module. [MERGED] Separate drivers for the
+SoundBlaster 8 and Soundblaster 16 now replace an older, unified
+driver. [MERGED] A driver for the CMedia CMI8338/CMI8738 sound chips
+has been added. A driver for the CS4281 sound chip has been
+added. [MERGED]
+
+Replace the PQ_*CACHE options with a single PQ_CACHESIZE option to be
+set to the cache size in kilobytes. The old options are still
+supported for backwards compatibility. [MERGED]
+
+The ahc(4) driver has been updated. Among various improvements are
+improved compatibility with chips in "RAID Port" mode and systems with
+AAA and ARO cards installed, as well as performance improvements.
+Some bugs were also fixed, including a rare hang on Ultra2/U160
+controllers. [MERGED]
+
+ACPI support has been merged in from the FreeBSD-ACPI project.
+
+devfs(5), which allows entries in the /dev directory to be built
+automatically and supports more flexible attachment of devices, has
+been largely reworked. devfs(5) is configured into the GENERIC
+kernel.
+
+Write combining for crashdumps has been implemented. This feature
+is useful when write caching is disabled on both SCSI and IDE disks,
+where large memory dumps could take up to an hour to complete. [MERGED]
+
+The bktr(4) driver has been updated to 2.15. New tuner types have
+been added, and improvements to the KLD module and to memory
+allocation have been made. [MERGED]
+
+The bktr(4) driver has been updated to 2.17. This fixes bugs in devfs
+when unloading and reloading, and syncs with some NetBSD
+changes. [MERGED]
+
+The bktr(4) driver has been updated to 2.18. This adds support for
+new Hauppauge Model 44xxx WinTV Cards (the ones with no audio mux).
+
+Extremely large swap areas (>67 GB) no longer panic the system.
+
+The Inode Filesystem (IFS) has been added; more information can be
+found in /usr/src/sys/ufs/ifs/README.
+
+The cd(4) driver now has support for write operations. This allows
+writing to DVD-RAM, PD and similar drives that probe as CD devices.
+Note that change affects only random-access writeable devices, not
+sequential-only writeable devices such as CD-R drives, which are
+supported by cdrecord. [MERGED]
+
+The ISO-9660 filesystem now has a hook that supports a loadable
+character conversion routine. The sysutils/cd9660_unicode port
+contains a set of common conversions. [MERGED]
+
+Support for threads under Linux emulation has been added.
+
+The an(4) driver for Cisco Aironet cards now supports Wired Equivalent
+Privacy (WEP) encryption, settable via ancontrol(8). [MERGED]
+
+A new netgraph node type ng_one2many(4) for multiplexing and
+demultiplexing packets over multiple links has been added. [MERGED]
+
+The DEC3000-series support has been removed from the mfsroot floppy image
+so that it fits on a 1.44Mbyte floppy again. As DEC3000 is currently
+only usable diskless this should not cause any problems.
+
+For the same reason SLIP has been removed from the mfsroot image as well.
+
+Support for AlphaServer 2100A ('Lynx') has been added.
+
+netgraph(4) has received some updates.
+
+sbufs, null-terminated string data structures, and their associated
+support routines, have been added to the kernel. Details are in
+sbuf(9).
+
+The vinum(4) volume manager has received some bug fixes and enhancements.
+
+ICMP ECHO and TSTAMP replies are now rate limited. TCP RSTs generated
+due to packets sent to open and unopen ports are now limited by
+separate counters. Each rate limiting queue now has its own
+description.
+
+ICMP UNREACH_FILTER_PROHIB messages can now RST TCP connections in the
+SYN_SENT state if the correct sequence numbers are sent back, as
+controlled by the net.inet.tcp.icmp_may_rst sysctl. [MERGED]
+
+TCP has received some bug fixes for its delayed ACK behavior. [MERGED]
+
+TCP now supports the NewReno modification to the TCP Fast Recovery
+algorithm. This behavior can be controlled via the
+net.inet.tcp.newreno sysctl variable. [MERGED]
+
+TCP now uses a more aggressive timeout for initial SYN segments; this
+allows initial connection attempts to be dropped much faster. [MERGED]
+
+A new sysctl net.inet.ip.check_interface, which is on by default,
+causes IP to verify that an incoming packet arrives on an interface
+that has an address matching the packet's destination address. [MERGED]
+
+PECOFF (WIN32 Execution file format) support has been added.
+
+kernfs(5) is obsolete and has been retired.
+
+md(4), the memory disk device, has had the functionality of vn(4)
+incorporated into it. md(4) devices can now be configured by
+mdconfig(8).
+
+The ray(4) driver, which supports the Webgear Aviator wireless network
+cards, has been committed. The operation of ray(4) interfaces can be
+modified by raycontrol(8). [MERGED]
+
+FDDI networking using Digital Equipment DEFPA PCI FDDI adapters is now
+supported.
+
+A new API has been added for sound cards with hardware volume
+control.
+
+A new sysctl 'net.link.ether.inet.log_arp_wrong_iface' to controls the
+suppression of logging when ARP replies arrive on the wrong
+interface. [MERGED]
+
+A bug in the NFS client that caused bogus access times with
+O_EXCL|O_CREAT opens was fixed. [MERGED]
+
+The bug that made certain CDROM drives fail to attach when connected
+to a SCSI card driven by 'isp' has been fixed. [MERGED]
+
+Condition variables have now been implemented in the FreeBSD kernel.
+See condvar(9) for more details.
+
+The "make buildkernel" target now gets the name of the
+configuration(s) to build from the KERNCONF variable, not KERNEL. It
+is no longer required, in some cases, for a "buildworld" to precede a
+"buildkernel". (The buildworld is still required when upgrading across
+major releases, across binutil upgrades and when config changes
+version.)
+
+The API UP1100 mainboard has been verified to work OK.
+
+bridge(4) and dummynet(4) have received some enhancements and bug fixes.
+
+The API CS20 1U high server has been verified to work OK.
+
+ipfw(8) has a new feature ("me") that allows for packet matching on
+interfaces with dynamically-changing IP addresses. [MERGED]
+
+The isp(4) driver has been updated. [MERGED]
+
+The ida disk driver now has crashdump support. [MERGED]
+
+The random(4) device has been rewritten to use the Yarrow algorithm.
+It harvests entropy from a variety of interrupt sources, including the
+console devices, Ethernet and point-to-point network interfaces, and
+mass-storage devices. Entropy from the random(4) device is now
+periodically saved to files in /var/db/entropy.
+
+Kernel code has been added that allows older generation Alpha CPUs
+(EV4 and EV5) to emulate instructions of the newer Alpha CPU
+generations. This enables the use of binary-only programs like Adobe
+Acrobat 4 on EV4 and EV5.
+
+The fxp(4) driver now requires a "device miibus" entry in the kernel
+configuration file.
+
+A new NFS hash function (based on the Fowler/Noll/Vo hash algorithm)
+has been implemented to improve NFS performance by increasing the
+efficiency of the nfsnode hash tables. [MERGED]
+
+The syscons(4) driver now supports keyboard-controlled pasting, by
+default bound to Shift-Insert.
+
+
+1.2. SECURITY FIXES
+-------------------
+
+sysinstall(8) now allows the user to select one of three "security
+profiles" at install-time. These profiles enable different levels of
+system security by enabling or disabling various system services in
+rc.conf(5) on new installs. [MERGED]
+
+A bug in which malformed ELF executable images can hang the system has
+been fixed (see security advisory FreeBSD-SA-00:41). [MERGED]
+
+A security hole in Linux emulation was fixed (see security advisory
+FreeBSD-SA-00:42). [MERGED]
+
+rlogind(8), rshd(8), and fingerd(8) are now disabled by default in
+/etc/inetd.conf. This only affects new installations. [MERGED]
+
+String-handling library calls in many programs were fixed to reduce
+the possibility of buffer overflow-related exploits. [MERGED]
+
+TCP now uses stronger randomness in choosing its initial sequence
+numbers (see security advisory FreeBSD-SA-00:52). [MERGED]
+
+Several buffer overflows in tcpdump(1) were corrected (see security
+advisory FreeBSD-SA-00:61). [MERGED]
+
+A security hole in top(1) was corrected (see security advisory
+FreeBSD-SA-00:62). [MERGED]
+
+A potential security hole caused by an off-by-one-error in
+gethostbyname(3) has been fixed (see security advisory
+FreeBSD-SA-00:63). [MERGED]
+
+A potential buffer overflow in the ncurses(3X) library, which could
+cause arbitrary code to be run from within systat(1), has been corrected
+(see security advisory FreeBSD-SA-00:68). [MERGED]
+
+A vulnerability in telnetd(8) that could cause it to consume large
+amounts of server resources has been fixed (see security advisory
+FreeBSD-SA-00:69). [MERGED]
+
+The "nat deny_incoming" command in ppp(8) now works correctly (see
+security advisory FreeBSD-SA-00:70). [MERGED]
+
+A vulnerability in csh(1)/tcsh(1) temporary files that could allow
+overwriting of arbitrary user-writable files has been closed (see
+security advisory FreeBSD-SA-00:76). [MERGED]
+
+The ssh(1) binary is no longer SUID root by default.
+
+Some fixes were applied to the Kerberos IV implementation related to
+environment variables, a possible buffer overrun, and overwriting
+ticket files. [MERGED]
+
+telnet(1) now does a better job of sanitizing its environment. [MERGED]
+
+Several vulnerabilities in procfs(4) were fixed (see security advisory
+FreeBSD-SA-00:77). [MERGED]
+
+A bug in OpenSSH in which a server was unable to disable ssh-agent or
+X11 forwarding was fixed (see security advisory FreeBSD-SA-01:01).
+[MERGED]
+
+A bug in ipfw(8) and ipfw6(8) in which inbound TCP segments could
+incorrectly be treated as being part of an "established" connection
+has been fixed (see security advisory FreeBSD-SA-01:08). [MERGED]
+
+A bug in crontab(8) that could allow users to read any file on the
+system in valid crontab(5) syntax has been fixed (see security
+advisory FreeBSD-SA-01:09). [MERGED]
+
+A vulnerability in inetd(8) that could allow read-access to the
+initial 16 bytes of wheel-accessible files has been fixed (see
+security advisory FreeBSD-SA-01:11). [MERGED]
+
+A bug in periodic(8) that used insecure temporary files has been
+corrected (see security advisory FreeBSD-SA-01:12). [MERGED]
+
+A bug in sort(1) in which an attacker might be able to cause it to
+abort processing has been fixed (see security advisory
+FreeBSD-SA-01:13). [MERGED]
+
+To fix a remotely-exploitable buffer overflow, BIND has been updated
+to 8.2.3 (see security advisory FreeBSD-SA-01:18). [MERGED]
+
+OpenSSH now has code to prevent (instead of just mitigating through
+connection limits) an attack that can lead to guessing the server key
+(not host key) by regenerating the server key when an RSA failure is
+detected (see security advisory FreeBSD-SA-01:24). [MERGED]
+
+A number of programs have had output formatting strings corrected so
+as to reduce the risk of vulnerabilities. [MERGED]
+
+A number of programs that use temporary files now do so more
+securely. [MERGED]
+
+A bug in ICMP that could cause an attacker to disrupt TCP and UDP
+"sessions" has been corrected. [MERGED]
+
+A bug in timed(8), which caused it to crash if send certain malformed
+packets, has been corrected (see security advisory
+FreeBSD-SA-01:28). [MERGED]
+
+A bug in rwhod(8), which caused it to crash if send certain malformed
+packets, has been corrected (see security advisory
+FreeBSD-SA-01:29). [MERGED]
+
+To prevent some forms of DOS attacks, glob(3) allows specification of
+a limit on the number of pathname matches it will return. ftpd(8) now
+uses this feature. [MERGED]
+
+
+1.3. USERLAND CHANGES
+---------------------
+
+cdcontrol(1) now supports a "cdid" command, which calculates and
+displays the CD serial number, using the same algorithm used by the CDDB
+database. [MERGED]
+
+mtree(8) now includes support for a file listing pathnames to be excluded
+when creating and verifying prototypes. This makes it easier to use
+mtree as a part of an intrusion-detection system. [MERGED]
+
+OpenSSL has been upgraded to 0.9.6. [MERGED]
+
+OpenSSL now has support for machine-dependent ASM optimizations,
+activated by the new MACHINE_CPU Makefile variable. [MERGED]
+
+The OPIE one-time-password suite has been updated to 2.32. [MERGED]
+
+OpenSSH has been upgraded to 2.1.0, which provides support for the
+SSH2 protocol, including DSA keys. Therefore, OpenSSH users in the US
+no longer need to rely on the restrictively-licensed RSAREF toolkit
+which is required to handle RSA keys. OpenSSH 2.1 interoperates well
+with other SSH2 clients and servers, including the ssh2 port. See
+http://www.openssh.com for more details. [MERGED]
+
+OpenSSH can now authenticate using OPIE passwords in SSH1 mode.
+Support is not yet available in SSH2 mode. [MERGED]
+
+OpenSSH has been upgraded to 2.2.0. ssh-add(1) and ssh-agent(1) can now
+handle DSA keys. An sftp server interoperable with ssh.com clients
+and others has been added. scp(1) can now handle files >2GB.
+Interoperability with other ssh2 clients/servers has been improved. A
+new feature to limit the number of outstanding unauthenticated ssh
+connections in sshd has been added. [MERGED]
+
+OpenSSH has been upgraded to 2.3.0. This version adds support for the
+Rijndael encryption algorithm. [MERGED]
+
+PAM support for OpenSSH has been added.
+
+A long-standing bug in SSH, which sometimes resulted in a dropped
+session when an X11-forwarded client was closed, was fixed.
+
+Kerberos compatability has been added to OpenSSH. [MERGED]
+
+OpenSSH has been modified to be more resistant to traffic analysis by
+requiring that "non-echoed" characters are still echoed back in a null
+packet, as well as by padding passwords sent so as not to hint at
+password lengths. [MERGED]
+
+Support for USB devices was added to the GENERIC kernel and to the
+installation programs to support USB devices out of the box. Note that
+SRM does not support USB devices at the moment, so you must still use
+an AT keyboard if you are not using a serial console. [MERGED]
+
+The csh(1) shell has been replaced by tcsh(1), although it can still
+be run as csh(1). tcsh has been updated to version 6.10. [MERGED]
+
+The more(1) command has been replaced by less(1), although it can still
+be run as more(1). [MERGED]
+
+ls(1) can produce colorized listings with the -G flag (and appropriate
+terminal support). [MERGED]
+
+sendmail upgraded from version 8.9.3 to version 8.11.3. Important changes
+include: new default file locations (see
+/usr/src/contrib/sendmail/cf/README); newaliases is limited to root and
+trusted users; STARTTLS encryption; and the MSA port (587) is turned on by
+default. See /usr/src/contrib/sendmail/RELEASE_NOTES for more
+information. [MERGED]
+
+mail.local(8) is no longer installed as a set-user-id binary. If you are
+using a /etc/mail/sendmail.cf from the default sendmail.cf included with
+FreeBSD any time after 3.1.0, you are fine. If you are using a
+hand-configured sendmail.cf and mail.local for delivery, check to make sure
+the F=S flag is set on the Mlocal line. Those with .mc files who need to
+add the flag can do so by adding the following line to their your .mc file
+and regenerating the sendmail.cf file:
+ MODIFY_MAILER_FLAGS(`LOCAL', `+S')dnl
+Note that FEATURE(`local_lmtp') already does this. [MERGED]
+
+The default /etc/mail/sendmail.cf disables the SMTP EXPN and VRFY
+commands. [MERGED]
+
+vacation(1) has been updated to use the version included with
+sendmail. [MERGED]
+
+The sendmail(8) configuration building tools are installed in
+/usr/share/sendmail/cf/. [MERGED]
+
+New make.conf options: SENDMAIL_MC and SENDMAIL_ADDITIONAL_MC. See
+/etc/defaults/make.conf for more information. [MERGED]
+
+The Makefile in /etc/mail now supports: the new SENDMAIL_MC make.conf
+option; the ability to build .cf files from .mc files; generalized map
+rebuilding; rebuilding the aliases file; and the ability to stop, start,
+and restart sendmail. [MERGED]
+
+sysinstall(8) now properly preserves /etc/mail during a binary
+upgrade. [MERGED]
+
+awk has been upgraded from gawk-3.0.4 to gawk-3.0.6. This fixes a number
+of non-critical bugs and includes a few performance tweaks. [MERGED]
+
+routed(8) has been updated to version 2.22. [MERGED]
+
+The truncate(1) utility, which truncates or extends the length
+of files, has been added. [MERGED]
+
+syslogd(8) can take a -n option to disable DNS queries for every
+request. [MERGED]
+
+kenv(1), a command to dump the kernel environment, has been added.
+[MERGED]
+
+The behavior of periodic(8) is now controlled by /etc/defaults/periodic.conf
+and /etc/periodic.conf. [MERGED]
+
+logger(1) can now send messages directly to a remote syslog. [MERGED]
+
+which(1) is now a C program, rather than a Perl script.
+
+killall(1) is now a C program, rather than a Perl script. As a
+result, killall's -m option now uses the regular expression syntax of
+regex(3), rather than that of perl(1). [MERGED]
+
+killall(1) now allows non-root users to kill SUID root processes that
+they started.
+
+finger(1) now has the ability to support fingering aliases, via the
+finger.conf(5) file. [MERGED]
+
+finger(1) now has support for a .pubkey file.
+
+nsswitch support has been merged from NetBSD. By creating an
+nsswitch.conf(5) file, FreeBSD can be configured so that various
+databases such as passwd(5) and group(5) can be looked up using flat
+files, NIS, or Hesiod. The old hosts.conf(5) file is no longer used.
+
+sshd X11Forwarding is now turned on by default on server (any risk is
+to the client, where it is already disabled by default).
+
+RSA Security has waived all patent rights to the RSA algorithm (two
+weeks before the patent was due to expire). As a result, the native
+OpenSSL implementation of the RSA algorithm is now activated by
+default, and the rsaref port and librsaUSA are no longer
+required for USA residents. [MERGED]
+
+sshd is now enabled by default on new installs. [MERGED]
+
+perl has been updated to version 5.6.0.
+
+Binutils have been upgraded to 2.10.1. [MERGED]
+
+libreadline has been upgraded to 4.1. [MERGED]
+
+The ifconfig(8) command can set the link-layer address of an interface.
+[MERGED]
+
+setproctitle(3) has been moved from libutil to libc. [MERGED]
+
+chio(1) now has the ability to specify elements by volume tag instead
+of by their physical location as well as the ability to return an
+element to its previous location. [MERGED]
+
+sed(1) now takes a -E option for extended regular expression
+support. [MERGED]
+
+ln(1) now takes an -i option to request user confirmation before
+overwriting an existing file. [MERGED]
+
+Version numbers of installed packages have a new (backward-compatible)
+syntax, which supports the "PORTREVISION" and "PORTEPOCH" variables in
+ports collection makefiles. These changes help keep track of changes
+in the ports collection entries such as security patches or
+FreeBSD-specific updates, which aren't reflected in the original,
+third-party software distributions. pkg_version(1) can now compare
+these new-style version numbers. [MERGED]
+
+cvs(1) has been updated to 1.11. [MERGED]
+
+tcpdump(1) has received some updates and bug fixes. [MERGED]
+
+User-land ppp(8) has received a number of updates and bug fixes. [MERGED]
+
+To improve performance and disk utilization, the "ports skeletons" in
+the FreeBSD Ports Collection have been restructured. Installed ports
+and packages should not be affected. [MERGED]
+
+make(1) has gained the :C/// (regexp substitution), :L (lowercase),
+and :U (uppercase) variable modifiers. These were added to reduce the
+differences between the FreeBSD and OpenBSD/NetBSD make programs. [MERGED]
+
+Bugs in make(1), among which include broken null suffix behavior, bad
+assumptions about current directory permissions, and potential buffer
+overflows, have been fixed. [MERGED]
+
+fsck wrappers have been imported; this feature provides infrastructure
+for fsck(8) to work on different types of filesystems (analogous to
+mount(8) and mount_*(8)).
+
+ncurses has been updated to ncurses-5.1-20001009. [MERGED]
+
+gperf has been updated to 2.7.2. [MERGED]
+
+style.perl.7, a style guide for Perl code in the FreeBSD base system,
+has been added.
+
+The ISC library from the BIND distribution is now built as
+libisc. [MERGED]
+
+The "in use" percentage metric displayed by netstat(1) now really
+reflects the percentage of network mbufs used. [MERGED]
+
+mergemaster(8) has gained some new features, has been cleaned up
+somewhat, and is now more cross-platform friendly.
+
+mergemaster(8) now sources an /etc/mergemaster.rc file and also
+prompts the user to run recommended commands (such as "newaliases") as
+needed. [MERGED]
+
+The compiler chain now uses the FSF-supplied C/C++ runtime
+initialization code. This change brings about better compatibility
+with code generated from the various egcs and gcc ports, as well as
+the stock public FSF source. [MERGED]
+
+The threads library has gained some signal handling changes, bug
+fixes, and performance enhancements (including zero system call thread
+switching). gdb(1) thread support has been updated to match these
+changes. [MERGED]
+
+chflags(1) has moved from /usr/bin to /bin.
+
+Use of the CSMG_* macros no longer require inclusion of <sys/param.h>.
+
+IP Filter is now supported by the rc.conf(5) boot-time configuration
+and initialization. [MERGED]
+
+The lastlogin(1) utility, which prints the last login time of each
+user, has been imported from NetBSD. [MERGED]
+
+newfs(1) now implements write combining, which can make creation of
+new filesystems up to seven times faster. [MERGED]
+
+A number of buffer overflows in config(8) have been fixed. [MERGED]
+
+pwd(1) can now double as realpath(1), a program to resolve pathnames
+to their underlying physical paths. [MERGED]
+
+file(1) has been contribify-ed, and imported as version 3.33. [MERGED]
+
+stty(1) now has support for an "erase2" control character, so that
+both "delete" and "backspace" can be used to erase characters. [MERGED]
+
+The ibcs2(8), linux(8), osf1(8), and svr4(8) scripts, whose sole
+purpose was to load emulation kernel modules, have been removed. The
+kernel module system will automatically load them as needed to fulfill
+dependencies.
+
+top(1) will now use the full width of its tty.
+
+groff(1) and its related utilities have been updated to FSF version
+1.16.1. [MERGED]
+
+A number of cleanups and enhancements have been applied to the PCI
+subsystem. /usr/share/misc/pci_vendors now contains a vendor/device
+database, which can be used by pciconf(8).
+
+indent(1) has gained some new formatting options. [MERGED]
+
+sysinstall now uses some more intuitive defaults thanks to some new
+dialog support functions. [MERGED]
+
+The default root partition in sysinstall is now 100MB on the i386 and
+110MB on the alpha.
+
+gcc has been updated to 2.95.3.
+
+Shortly after the receipt of a SIGINFO signal (normally control-T from
+the controlling tty), fsck_ffs will now output a line indicating the
+current phase number and progress information relevant to the current
+phase. [MERGED]
+
+fsck_ffs now supports background filesystem checks to mounted FFS
+filesystems with the -B option (softupdates must be enabled on these
+filesystems).
+
+Catching up with most other network utilities in the base system,
+lpr(1), lpd(8), syslogd(8), and logger(1) are now all IPv6-capable.
+[MERGED]
+
+rm(1) -v now displays the entire pathname of a file being
+removed. [MERGED]
+
+lpr(1), lpq(1), and lpd(8) have received a few minor
+enhancements. [MERGED]
+
+pkg_update(1), a utility to update installed packages and update their
+dependencies, has been added. [MERGED]
+
+pkg_info(1) now supports globbing against names of installed packages.
+The -G option disables this behavior, and the -x option causes regular
+expression matching instead of shell globbing. [MERGED]
+
+If the first argument fo ancontrol(8) or wicontrol(8) doesn't start
+with a "-", it is assumed to be an interface.
+
+rdist(1) has been retired.
+
+Kerberos IV has been updated to 1.0.5. [MERGED]
+
+Heimdal has been updated to 0.3e. [MERGED]
+
+ppp(8) has gained the tcpmssfixup option, which adjusts outgoing TCP
+SYN packets so that the maximum receive segment size is no larger than
+allowed by the interface MTU.
+
+libcrypt and libdescrypt have been unified to provide a configurable
+password authentication hash library. Both the md5 and des hash methods
+are provided unless the des hash is specifically compiled out.
+
+passwd(1) and pw(8) now select the passwd hash algorithm at run time. See
+the "passwd_format" attribute in /etc/login.conf.
+
+In preparation for meeting SUSv2/POSIX <sys/select.h> requirements,
+'struct selinfo' and related functions have been moved to
+<sys/selinfo.h>.
+
+gcc now uses a unified libgcc rather than a separate one for threaded
+and non-threaded programs. /usr/lib/libgcc_r.a can be removed. [MERGED]
+
+syslogd(8) now supports a "LOG_CONSOLE" facility (disabled by
+default), which can be used to log /dev/console output. [MERGED]
+
+rpcgen now uses /usr/bin/cpp (as on NetBSD), not /usr/libexec/cpp.
+
+Boot-time syscons configuration was moved to a machine-independent
+rc.syscons. [MERGED]
+
+burncd(8) now supports a -m option for multisession mode (the default
+behavior now is to close disks as single-session). A -l option to
+take a list of image files from a filename was also added; '-' can be
+used as a filename for stdin. [MERGED]
+
+dmesg(8) now has a -a option to show the entire message buffer,
+including syslog records and /dev/console output. [MERGED]
+
+In /etc/ssh/sshd_config, the ConnectionsPerPeriod parameter has been
+deprecated in favor of MaxStartups. [MERGED]
+
+cdcontrol(1) now uses the CDROM environment variable to pick a default
+device. [MERGED]
+
+sysctl(8) now supports a -N option to print out variable names only.
+
+All packages and ports now contain an "origin" directive, which makes
+it easier for programs like pkg_version(1) to determine the directory
+from which a package was built. [MERGED]
+
+sysinstall(8) now lives in /usr/sbin, which simplifies the installation
+process. The sysinstall(8) manpage is also installed in a more
+consistent fashion now.
+
+config(8) is now better about converting various warnings that should
+have been errors into actual fatal errors with an exit code. This
+ensures that that 'make buildkernel' doesn't quietly ignore them and
+build a bogus kernel without a human to read the errors. [MERGED]
+
+pkg_create(1) and pkg_add(1) can now work with packages that have
+been compressed using bzip2(1). pkg_add(1) will use the
+PACKAGEROOT environment variable to determine a mirror site for new
+packages. [MERGED]
+
+pkg_info(1) can now accept a -g flag for verifying an installed
+package against its recorded checksums (to see if it's been modified
+post-installation). Naturally, this mechanism is only as secure as
+the contents of /var/db/pkg if it's to be used for auditing
+purposes. [MERGED]
+
+libc is now thread-safe by default; libc_r contains only thread functions.
+
+find(1) now takes the -empty flag, which returns true if a file or
+directory is empty. [MERGED]
+
+find(1) now takes the -iname and -ipath primaries for case-insensitive
+matches, and the -regexp and -iregexp primaries for regular-expression
+matches. The -E flag now enables extended regular
+expressions. [MERGED]
+
+tftpd(8) now takes the -c and -C options, which allow the server to
+chroot(2) based on the IP address of the connecting client. tftp(1)
+and tftpd(8) can now transfer files larger than 65535 blocks. [MERGED]
+
+vidcontrol(1) now accepts a -g parameter to select custom text
+geometry in the VESA_800x600 raster text mode. [MERGED]
+
+ldconfig(8) now checks directory ownerships and permissions for
+greater security; these checks can be disabled with the -i
+flag. [MERGED]
+
+The rfork_thread(3) library call has been added as a helper function
+to rfork(2). Using this function should avoid the need to implement
+complex stack swap code. [MERGED]
+
+Significant additions have been made to internationalization support;
+FreeBSD now has complete locale support for the LC_MONETARY,
+LC_NUMERIC, and LC_MESSAGES categories. A number of applications have
+been updated to take advantage of this support.
+
+A compat4x distribution has been added for compatibility with FreeBSD
+4-STABLE.
+
+The compat3x distribution has been updated to include libraries
+present in FreeBSD 3.5.1-RELEASE. [MERGED]
+
+savecore(8) now supports a -k option to prevent clearing a crash dump
+after saving it. It also attempts to avoid writing large stretches of
+zeros to crash dump files to save space and time. [MERGED]
+
+When requested to delete multiple packages, pkg_delete(1) will now
+attempt to remove them in dependency order rather than the order
+specified on the command line. [MERGED]
+
+pkg_delete(1) now can perform glob/regexp matching of package names.
+In addition, it supports the -a option for removing all packages and
+the -i option for rm(1)-style interactive confirmation. [MERGED]
+
+tar(1) now supports the TAR_RSH variable, principally to enable the
+use of ssh(1) as a transport. [MERGED]
+
+disklabel(8) now supports partition sizes expressed in kilobytes,
+megabytes, or gigabytes, in addition to sectors. [MERGED]
+
+The pseudo-random number generator implemented by rand(3) has been
+improved to provide less biased results.
+
+login(1) now exports environment variables set by PAM
+modules. [MERGED]
+
+wall(1) now supports a -g flag to write a message to all users of a
+given group.
+
+The new CPUTYPE make.conf variable controls the compilation of
+processor-specific optimizations in various pieces of code such as
+OpenSSL. [MERGED]
+
+The default value for the CVS_RSH variable (used by cvs(1)) is now
+ssh, rather than rsh. [MERGED]
+
+bc has been updated from 1.04 to 1.06. [MERGED]
+
+ipfstat(8) now supports the -t option to turn on a top(1)-like
+display. [MERGED]
+
+The dreaded 'going nowhere without my init' bug that manifested itself
+while installing on hardware that had labeled disks connected (e.g.
+with Tru64 on it) has been fixed. [MERGED]
+
+pkg_sign(1) and pkg_check(1) have been added to digitally sign and
+verify the signatures on binary package files. [MERGED]
+
+/usr/src/share/examples/BSD_daemon/ now contains a scalable Beastie
+graphic. [MERGED]
+
+dump(8) now supports inheritance of the "nodump" flag down a
+hierarchy. [MERGED]
+
+The ISC DHCP client has been updated to 2.0pl5. [MERGED]
+
+split(1) now has the ability to split a file longer than 2GB. [MERGED]
+
+units(1) has received some updates and bugfixes. [MERGED]
+
+netstat(1) now keeps track of input and output packets on a
+per-address basis for each interface. [MERGED]
+
+As part of an ongoing process, many manual pages were improved, both
+in terms of their formatting markup and in their content. [MERGED]
+
+pkg_create(1) now records dependencies in dependency order rather than
+in the order specified on the command line. This improves the
+functioning of "pkg_add -r". [MERGED]
+
+"lprm -" now works for remote printer queues. [MERGED]
+
+ftpd(8) now supports a -r flag for read-only mode and a -E flag to
+disable EPSV. It also has some fixes to reduce information leakage
+and the ability to specify compile-time port ranges. [MERGED]
+
+ping(8) now supports a -m option to set the TTL of outgoing packets.
+
+A version of Transport Independent RPC (TI-RPC) has been imported.
+
+rpcbind(8) has replaced portmap(8).
+
+NFS now works over IPv6.
+
+lockd has been imported from NetBSD.
+
+rc(8) now has an framework for handling dependencies between
+rc.conf(5) variables. [MERGED]
+
+
+2. Supported Configurations
+---------------------------
+
+For an extensive overview of supported Alpha machines/mainboards please refer
+to the HARDWARE.TXT file.
+
+2.1. Disk Controllers
+---------------------
+IDE
+ATA
+
+Adaptec 1535 ISA SCSI controllers
+Adaptec 154x series ISA SCSI controllers
+Adaptec AIC7850, AIC7860, AIC7880, AIC789x, on-board SCSI controllers.
+
+AdvanSys SCSI controllers (all models).
+
+BusLogic MultiMaster controllers:
+
+[ Please note that BusLogic/Mylex "Flashpoint" adapters are NOT yet supported ]
+
+BusLogic MultiMaster "W" Series Host Adapters:
+ BT-948, BT-958, BT-958D
+BusLogic MultiMaster "C" Series Host Adapters:
+ BT-946C, BT-956C, BT-956CD, BT-445C, BT-747C, BT-757C, BT-757CD, BT-545C,
+ BT-540CF
+BusLogic MultiMaster "S" Series Host Adapters:
+ BT-445S, BT-747S, BT-747D, BT-757S, BT-757D, BT-545S, BT-542D, BT-742A,
+ BT-542B
+BusLogic MultiMaster "A" Series Host Adapters:
+ BT-742A, BT-542B
+
+AMI FastDisk controllers that are true BusLogic MultiMaster clones are also
+supported.
+
+DPT SmartCACHE Plus, SmartCACHE III, SmartRAID III, SmartCACHE IV and
+SmartRAID IV SCSI/RAID controllers are supported. The DPT SmartRAID/CACHE V
+is not yet supported.
+
+AMI MegaRAID Express and Enterprise family RAID controllers:
+ MegaRAID Series 418
+ MegaRAID Enterprise 1200 (Series 428)
+ MegaRAID Enterprise 1300 (Series 434)
+ MegaRAID Enterprise 1400 (Series 438)
+ MegaRAID Enterprise 1500 (Series 467)
+ MegaRAID Enterprise 1600 (Series 471)
+ MegaRAID Elite 1500 (Series 467)
+ MegaRAID Elite 1600 (Series 493)
+ MegaRAID Express 100 (Series 466WS)
+ MegaRAID Express 200 (Series 466)
+ MegaRAID Express 300 (Series 490)
+ MegaRAID Express 500 (Series 475)
+ Dell PERC
+ Dell PERC 2/SC
+ Dell PERC 2/DC
+ HP NetRAID-1si
+ HP NetRAID-3si
+ HP Embedded NetRAID
+Booting from these controllers is supported, but not possible due to
+SRM limitations.
+
+Mylex DAC960 and DAC1100 RAID controllers with 2.x, 3.x, 4.x and 5.x
+firmware:
+ DAC960P
+ DAC960PD
+ DAC960PDU
+ DAC960PL
+ DAC960PJ
+ DAC960PG
+ AcceleRAID 150
+ AcceleRAID 250
+ eXtremeRAID 1100
+This list includes controllers sold by Digital/Compaq in Alpha systems
+in the StorageWorks family, eg. KZPSC, KZPAC. Booting from these
+controllers is supported when recognised by SRM (typically Digital/
+Compaq models only, and only in systems where they are supported).
+EISA adapters are not supported.
+
+SymBios (formerly NCR) 53C810, 53C810a, 53C815, 53C820, 53C825a,
+53C860, 53C875, 53C875j, 53C885, 53C895 and 53C896 PCI SCSI controllers:
+ ASUS SC-200
+ Data Technology DTC3130 (all variants)
+ Diamond FirePort (all)
+ NCR cards (all)
+ Symbios cards (all)
+ Tekram DC390W, 390U and 390F
+ Tyan S1365
+
+QLogic 1020, 1040, 1040B, 1080 and 1240 SCSI Host Adapters.
+QLogic 2100 Fibre Channel Adapters (private loop only).
+
+With all supported SCSI controllers, full support is provided for
+SCSI-I & SCSI-II peripherals, including hard disks, optical disks,
+tape drives (including DAT and 8mm Exabyte), medium changers, processor
+target devices and CDROM drives. WORM devices that support CDROM commands
+are supported for read-only access by the CDROM driver. WORM/CD-R/CD-RW
+writing support is provided by cdrecord, which is in the ports tree.
+
+The following CD-ROM type systems are supported at this time:
+(cd) SCSI interface
+(acd) ATAPI IDE interface
+
+2.2. Ethernet cards
+-------------------
+
+Adaptec Duralink PCI Fast Ethernet adapters based on the Adaptec
+AIC-6915 Fast Ethernet controller chip, including the following:
+ ANA-62011 64-bit single port 10/100baseTX adapter
+ ANA-62022 64-bit dual port 10/100baseTX adapter
+ ANA-62044 64-bit quad port 10/100baseTX adapter
+ ANA-69011 32-bit single port 10/100baseTX adapter
+ ANA-62020 64-bit single port 100baseFX adapter
+
+Allied-Telesis AT1700 and RE2000 cards
+
+Alteon Networks PCI Gigabit Ethernet NICs based on the Tigon 1 and Tigon 2
+chipsets, including the following:
+ Alteon AceNIC (Tigon 1 and 2)
+ 3Com 3c985-SX (Tigon 1 and 2)
+ Netgear GA620 (Tigon 2)
+ Silicon Graphics Gigabit Ethernet
+ DEC/Compaq EtherWORKS 1000
+ NEC Gigabit Ethernet
+
+AMD PCnet/PCI (79c970 & 53c974 or 79c974)
+AMD PCnet/FAST, PCnet/FAST+, PCnet/FAST III, PCnet/PRO,
+PCnet/Home, and HomePNA.
+
+SMC Elite 16 WD8013 Ethernet interface, and most other WD8003E,
+WD8003EBT, WD8003W, WD8013W, WD8003S, WD8003SBT and WD8013EBT
+based clones. SMC Elite Ultra. SMC Etherpower II.
+
+RealTek 8129/8139 Fast Ethernet NICs including the following:
+ Allied Telesyn AT2550
+ Allied Telesyn AT2500TX
+ Genius GF100TXR (RTL8139)
+ NDC Communications NE100TX-E
+ OvisLink LEF-8129TX
+ OvisLink LEF-8139TX
+ Netronix Inc. EA-1210 NetEther 10/100
+ KTX-9130TX 10/100 Fast Ethernet
+ Accton "Cheetah" EN1207D (MPX 5030/5038; RealTek 8139 clone)
+ SMC EZ Card 10/100 PCI 1211-TX
+
+Lite-On 82c168/82c169 PNIC Fast Ethernet NICs including the following:
+ LinkSys EtherFast LNE100TX
+ NetGear FA310-TX Rev. D1
+ Matrox FastNIC 10/100
+ Kingston KNE110TX
+
+Macronix 98713, 98713A, 98715, 98715A and 98725 Fast Ethernet NICs
+ NDC Communications SFA100A (98713A)
+ CNet Pro120A (98713 or 98713A)
+ CNet Pro120B (98715)
+ SVEC PN102TX (98713)
+
+Macronix/Lite-On PNIC II LC82C115 Fast Ethernet NICs including the following:
+ LinkSys EtherFast LNE100TX Version 2
+
+Winbond W89C840F Fast Ethernet NICs including the following:
+ Trendware TE100-PCIE
+
+VIA Technologies VT3043 "Rhine I" and VT86C100A "Rhine II" Fast Ethernet
+NICs including the following:
+ Hawking Technologies PN102TX
+ D-Link DFE-530TX
+ AOpen/Acer ALN-320
+
+Silicon Integrated Systems SiS 900 and SiS 7016 PCI Fast Ethernet NICs
+
+National Semiconductor DP83815 Fast Ethernet NICs including the following:
+ NetGear FA312-TX
+
+Sundance Technologies ST201 PCI Fast Ethernet NICs including
+the following:
+ D-Link DFE-550TX
+
+SysKonnect SK-984x PCI Gigabit Ethernet cards including the following:
+ SK-9841 1000baseLX single mode fiber, single port
+ SK-9842 1000baseSX multimode fiber, single port
+ SK-9843 1000baseLX single mode fiber, dual port
+ SK-9844 1000baseSX multimode fiber, dual port
+
+Texas Instruments ThunderLAN PCI NICs, including the following:
+ Compaq Netelligent 10, 10/100, 10/100 Proliant, 10/100 Dual-Port
+ Compaq Netelligent 10/100 TX Embedded UTP, 10 T PCI UTP/Coax, 10/100 TX UTP
+ Compaq NetFlex 3P, 3P Integrated, 3P w/ BNC
+ Olicom OC-2135/2138, OC-2325, OC-2326 10/100 TX UTP
+ Racore 8165 10/100baseTX
+ Racore 8148 10baseT/100baseTX/100baseFX multi-personality
+
+ADMtek Inc. AL981-based PCI Fast Ethernet NICs
+ADMtek Inc. AN985-based PCI Fast Ethernet NICs
+ADMtek Inc. AN986-based USB Ethernet NICs including the following:
+ LinkSys USB100TX
+ Billionton USB100
+ Melco Inc. LUA-TX
+ D-Link DSB-650TX
+ SMC 2202USB
+
+CATC USB-EL1210A-based USB Ethernet NICs including the following:
+ CATC Netmate
+ CATC Netmate II
+ Belkin F5U111
+
+Kawasaki LSI KU5KUSB101B-based USB Ethernet NICs including
+the following:
+ LinkSys USB10T
+ Entrega NET-USB-E45
+ Peracom USB Ethernet Adapter
+ 3Com 3c19250
+ ADS Technologies USB-10BT
+ ATen UC10T
+ Netgear EA101
+ D-Link DSB-650
+ SMC 2102USB
+ SMC 2104USB
+ Corega USB-T
+
+ASIX Electronics AX88140A PCI NICs, including the following:
+ Alfa Inc. GFC2204
+ CNet Pro110B
+
+DEC EtherWORKS III NICs (DE203, DE204, and DE205)
+DEC EtherWORKS II NICs (DE200, DE201, DE202, and DE422)
+DEC DC21040, DC21041, or DC21140 based NICs (SMC Etherpower 8432T, DE245, etc)
+
+Davicom DM9100 and DM9102 PCI Fast Ethernet NICs, including the
+following:
+ Jaton Corporation XpressNet
+
+Fujitsu MB86960A/MB86965A
+
+HP PC Lan+ cards (model numbers: 27247B and 27252A).
+
+Intel EtherExpress 16
+Intel EtherExpress Pro/10
+Intel EtherExpress Pro/100B PCI Fast Ethernet
+
+Isolan AT 4141-0 (16 bit)
+Isolink 4110 (8 bit)
+
+Novell NE1000, NE2000, and NE2100 Ethernet interface.
+
+PCI network cards emulating the NE2000: RealTek 8029, NetVin 5000,
+Winbond W89C940, Surecom NE-34, VIA VT86C926.
+
+3Com 3C501 cards
+
+3Com 3C503 Etherlink II
+
+3Com 3c505 Etherlink/+
+
+3Com 3C507 Etherlink 16/TP
+
+3Com 3C509, 3C579, 3C590/592/595/900/905/905B/905C PCI
+(Fast) Etherlink III / (Fast) Etherlink XL
+
+3Com 3c980/3c980B Fast Etherlink XL server adapter
+
+3Com 3cSOHO100-TX OfficeConnect adapter
+
+Toshiba Ethernet cards
+
+Crystal Semiconductor CS89x0-based NICs, including:
+ IBM Etherjet ISA
+
+Note that NO token ring cards are supported at this time as we're
+still waiting for someone to donate a driver for one of them. Any
+takers?
+
+
+2.3. FDDI
+---------
+
+Digital Equipment DEFPA PCI adapters are supported.,
+
+
+2.4. ATM
+--------
+
+ o ATM Host Interfaces
+ - FORE Systems, Inc. PCA-200E ATM PCI Adapters
+ - Efficient Networks, Inc. ENI-155p ATM PCI Adapters
+
+ o ATM Signaling Protocols
+ - The ATM Forum UNI 3.1 signaling protocol
+ - The ATM Forum UNI 3.0 signaling protocol
+ - The ATM Forum ILMI address registration
+ - FORE Systems' proprietary SPANS signaling protocol
+ - Permanent Virtual Channels (PVCs)
+
+ o IETF "Classical IP and ARP over ATM" model
+ - RFC 1483, "Multiprotocol Encapsulation over ATM Adaptation Layer 5"
+ - RFC 1577, "Classical IP and ARP over ATM"
+ - RFC 1626, "Default IP MTU for use over ATM AAL5"
+ - RFC 1755, "ATM Signaling Support for IP over ATM"
+ - RFC 2225, "Classical IP and ARP over ATM"
+ - RFC 2334, "Server Cache Synchronization Protocol (SCSP)"
+ - Internet Draft draft-ietf-ion-scsp-atmarp-00.txt,
+ "A Distributed ATMARP Service Using SCSP"
+
+ o ATM Sockets interface
+
+
+2.5. Misc
+---------
+
+AST 4 port serial card using shared IRQ.
+
+ARNET 8 port serial card using shared IRQ.
+ARNET (now Digiboard) Sync 570/i high-speed serial.
+
+Boca BB1004 4-Port serial card (Modems NOT supported)
+Boca IOAT66 6-Port serial card (Modems supported)
+Boca BB1008 8-Port serial card (Modems NOT supported)
+Boca BB2016 16-Port serial card (Modems supported)
+
+Comtrol Rocketport card.
+
+Cyclades Cyclom-y Serial Board.
+
+STB 4 port card using shared IRQ.
+
+SDL Communications Riscom/8 Serial Board.
+SDL Communications RISCom/N2 and N2pci high-speed sync serial boards.
+
+Stallion multiport serial boards: EasyIO, EasyConnection 8/32 & 8/64,
+ONboard 4/16 and Brumby.
+
+Specialix SI/XIO/SX ISA, PCI serial expansion cards/modules.
+
+Advance Asound 100, 110 and Logic ALS120
+Crystal Semiconductor CS461x/462x/428x
+ENSONIQ AudioPCI ES1370/1371
+ESS ES1868, ES1869, ES1879 and ES1888
+ESS Maestro-1, Maestro-2, and Maestro-2E
+ForteMedia fm801
+Gravis UltraSound MAX/PnP
+MSS/WSS Compatible DSPs
+NeoMagic 256AV/ZX
+OPTi 931/82C931
+SoundBlaster, Soundblaster Pro, Soundblaster AWE-32, Soundblaster AWE-64
+Trident 4DWave DX/NX
+VIA Technologies VT82C686A
+Yamaha DS1 and DS1e
+(newpcm driver)
+
+Connectix QuickCam
+Matrox Meteor Video frame grabber
+Creative Labs Video Spigot frame grabber
+Cortex1 frame grabber
+Hauppauge Wincast/TV boards (PCI)
+STB TV PCI
+Intel Smart Video Recorder III
+Various Frame grabbers based on Brooktree Bt848 / Bt878 chip.
+
+HP4020, HP6020, Philips CDD2000/CDD2660 and Plasmon CD-R drives.
+
+PS/2 mice
+
+Standard PC Joystick
+
+X-10 power controllers
+
+GPIB and Transputer drivers.
+
+Genius and Mustek hand scanners.
+
+Xilinx XC6200 based reconfigurable hardware cards compatible with
+the HOT1 from Virtual Computers (www.vcc.com)
+
+Support for Dave Mills experimental Loran-C receiver.
+
+Lucent Technologies WaveLAN/IEEE 802.11 ISA standard speed
+(2Mbps) and turbo speed (6Mbps) wireless network adapters and workalikes
+(NCR WaveLAN/IEEE 802.11, Cabletron RoamAbout 802.11 DS). Note: the
+ISA versions of these adapters are actually PCMCIA cards combined with
+an ISA to PCMCIA bridge card, so both kinds of devices work with
+the same driver.
+
+Aironet 4500/4800 series 802.11 wireless adapters. The PCI and ISA
+models are supported for the Alpha architecture.
+
+3. Obtaining FreeBSD
+--------------------
+
+You may obtain FreeBSD in a variety of ways:
+
+3.1. FTP/Mail
+-------------
+
+You can ftp FreeBSD and any or all of its optional packages from
+`ftp.FreeBSD.org' - the official FreeBSD release site.
+
+For other locations that mirror the FreeBSD software see the file
+MIRROR.SITES. Please ftp the distribution from the site closest (in
+networking terms) to you. Additional mirror sites are always welcome!
+Contact freebsd-admin@FreeBSD.org for more details if you'd like to
+become an official mirror site.
+
+If you do not have access to the Internet and electronic mail is your
+only recourse, then you may still fetch the files by sending mail to
+`ftpmail@ftpmail.vix.com' - putting the keyword "help" in your message
+to get more information on how to fetch files using this mechanism.
+Please do note, however, that this will end up sending many *tens of
+megabytes* through the mail and should only be employed as an absolute
+LAST resort!
+
+
+3.2. CDROM
+----------
+
+FreeBSD 4.x-RELEASE and 3.x-RELEASE CDs may be ordered on CDROM from:
+
+ BSDi / Walnut Creek CDROM
+ 4041 Pike Lane, Suite D
+ Concord CA 94520
+ USA
+ +1-800-786-9907, +1-925-674-0783, +1-925-674-0821 (FAX)
+
+Or via the Internet from orders@cdrom.com or http://www.cdrom.com.
+Their current catalog can be obtained via ftp from:
+
+ ftp://ftp.cdrom.com/cdrom/catalog
+
+Cost per -RELEASE CD is $39.95 or $24.95 with a FreeBSD subscription.
+FreeBSD SNAPshot CDs, when available, are $39.95 or $14.95 with a
+FreeBSD-SNAP subscription (-RELEASE and -SNAP subscriptions are entirely
+separate). With a subscription, you will automatically receive updates as
+they are released. Your credit card will be billed when each disk is
+shipped and you may cancel your subscription at any time without further
+obligation.
+
+Shipping (per order not per disc) is $5 in the US, Canada or Mexico
+and $9.00 overseas. They accept Visa, Mastercard, Discover, American
+Express or checks in U.S. Dollars and ship COD within the United
+States. California residents please add 8.25% sales tax.
+
+Should you be dissatisfied for any reason, the CD comes with an
+unconditional return policy.
+
+
+4. Upgrading from previous releases of FreeBSD
+----------------------------------------------
+
+If you're upgrading from a previous release of FreeBSD, most likely
+it's 3.0 and there may be some issues affecting you, depending
+of course on your chosen method of upgrading. There are two popular
+ways of upgrading FreeBSD distributions:
+
+ o Using sources, via /usr/src
+ o Using sysinstall's (binary) upgrade option.
+
+Please read the UPGRADE.TXT file for more information, preferably
+before beginning an upgrade.
+
+
+5. Reporting problems, making suggestions, submitting code.
+-----------------------------------------------------------
+Your suggestions, bug reports and contributions of code are always
+valued - please do not hesitate to report any problems you may find
+(preferably with a fix attached, if you can!).
+
+The preferred method to submit bug reports from a machine with
+Internet mail connectivity is to use the send-pr command or use the CGI
+script at http://www.FreeBSD.org/send-pr.html. Bug reports
+will be dutifully filed by our faithful bugfiler program and you can
+be sure that we'll do our best to respond to all reported bugs as soon
+as possible. Bugs filed in this way are also visible on our WEB site
+in the support section and are therefore valuable both as bug reports
+and as "signposts" for other users concerning potential problems to
+watch out for.
+
+If, for some reason, you are unable to use the send-pr command to
+submit a bug report, you can try to send it to:
+
+ freebsd-bugs@FreeBSD.org
+
+Note that send-pr itself is a shell script that should be easy to move
+even onto a totally different system. We much prefer if you could use
+this interface, since it make it easier to keep track of the problem
+reports. However, before submitting, please try to make sure whether
+the problem might have already been fixed since.
+
+
+Otherwise, for any questions or tech support issues, please send mail to:
+
+ freebsd-questions@FreeBSD.org
+
+
+If you're tracking the -current development efforts, you should
+definitely join the -current mailing list, in order to keep abreast
+of recent developments and changes that may affect the way you
+use and maintain the system:
+
+ freebsd-current@FreeBSD.org
+
+
+Additionally, being a volunteer effort, we are always happy to have
+extra hands willing to help - there are already far more desired
+enhancements than we'll ever be able to manage by ourselves! To
+contact us on technical matters, or with offers of help, please send
+mail to:
+
+ freebsd-hackers@FreeBSD.org
+
+
+Please note that these mailing lists can experience *significant*
+amounts of traffic and if you have slow or expensive mail access and
+are only interested in keeping up with significant FreeBSD events, you
+may find it preferable to subscribe instead to:
+
+ freebsd-announce@FreeBSD.org
+
+
+All of the mailing lists can be freely joined by anyone wishing
+to do so. Send mail to MajorDomo@FreeBSD.org and include the keyword
+`help' on a line by itself somewhere in the body of the message. This
+will give you more information on joining the various lists, accessing
+archives, etc. There are a number of mailing lists targeted at
+special interest groups not mentioned here, so send mail to majordomo
+and ask about them!
+
+
+6. Acknowledgments
+------------------
+
+FreeBSD represents the cumulative work of many hundreds, if not
+thousands, of individuals from around the world who have worked very
+hard to bring you this release. For a complete list of FreeBSD
+project staffers, please see:
+
+ http://www.FreeBSD.org/handbook/staff.html
+
+or, if you've loaded the doc distribution:
+
+ file:/usr/share/doc/handbook/staff.html
+
+
+Special mention to:
+
+ The donors listed at http://www.FreeBSD.org/handbook/donors.html
+
+ Justin M. Seger <jseger@FreeBSD.org> for almost single-handedly
+ converting the ports collection to ELF.
+
+ Doug Rabson <dfr@FreeBSD.org> and John Birrell <jb@FreeBSD.org>
+ for making FreeBSD/alpha happen and to the NetBSD project for
+ substantial indirect aid.
+
+ Peter Wemm <peter@FreeBSD.org> for the new kernel module system
+ (with substantial aid from Doug Rabson).
+
+ And to the many thousands of FreeBSD users and testers all over the
+ world, without whom this release simply would not have been possible.
+
+We sincerely hope you enjoy this release of FreeBSD!
+
+ The FreeBSD Project
+
+$FreeBSD$
diff --git a/release/texts/i386/INSTALL.TXT b/release/texts/i386/INSTALL.TXT
new file mode 100644
index 000000000000..050969e40a63
--- /dev/null
+++ b/release/texts/i386/INSTALL.TXT
@@ -0,0 +1,541 @@
++===================== Installing FreeBSD ==========================+
+| |
+| Table of Contents: |
+| |
+| 0.0 Quick Start: |
+| 0.1 Installing FreeBSD from CDROM or the Internet. |
+| |
+| 1.0 Detail on various installation types: |
+| 1.1 Installing from a network CDROM |
+| 1.2 Installing from Floppies |
+| 1.3 Installing from a DOS partition |
+| 1.4 Installing from QIC/SCSI tape |
+| 1.5 Installing over a network using NFS or FTP |
+| 1.5.1 NFS Installation tips |
+| 1.5.2 FTP Installation tips |
+| 1.6 Tips for Serial Console Users |
+| |
+| 2.0 DOS User's Q&A section. |
+| 2.1 How do I make space for FreeBSD? |
+| 2.2 Can I use compressed DOS filesystems from FreeBSD? |
+| 2.3 Can I use DOS extended partitions? |
+| 2.4 Can I run DOS executables under FreeBSD? |
+| |
++=====================================================================+
+
+Author: Jordan K. Hubbard
+Last updated: Fri Mar 16 14:47:31 PST 2001
+
+0.0 Quick Start
+--- -----------
+
+This manual documents the process of making a new installation of
+FreeBSD on your machine. If you are upgrading from a previous
+release of FreeBSD, please see the file UPGRADE.TXT for important
+information on upgrading. If you are not familiar with configuring
+PC hardware for FreeBSD, you should also read the HARDWARE.TXT file -
+it contains important information which may save you a lot of grief.
+
+If you're new to FreeBSD then you should also read EVERYTHING listed
+in the Documentation menu of the installer. It may seem like a lot
+to read, but the time you spend now reading the documents will be made
+up many times over because you were adequately prepared. Also, you will
+know the types of information available should you get stuck later.
+Once the system is installed, you can also revisit this menu and use a
+WEB browser to read the installed FAQ (Frequently Asked Questions) and
+Handbook HTML documentation sets for FreeBSD. You can also use the
+browser to visit other WEB sites on the net (like http://www.freebsd.org)
+if you have an Internet connection. See ABOUT.TXT for more information
+on the resources available to you.
+
+The best laid plans sometimes go awry, so if you run into trouble take a
+look at TROUBLE.TXT which contains valuable troubleshooting information.
+You should also read ERRATA.TXT before installing and follow the pointers
+there carefully since this will stop you from falling over any problems
+which have reported in the interim for your particular release.
+
+DISCLAIMER: While FreeBSD does its best to safeguard against
+accidental loss of data, it's still more than possible to WIPE OUT
+YOUR ENTIRE DISK with this installation if you make a mistake! Please
+do not proceed to the final FreeBSD installation menu unless you've
+adequately backed up any important data first! We really mean it!
+
+FreeBSD requires a 386 or better processor to run (sorry, there is no
+support for '286 processors) and at least 5 megs of RAM to install
+and 4 megs of RAM to run. You will need at least 100MB of free hard
+drive space for the most minimal installation. See below for ways of
+shrinking existing DOS partitions in order to install FreeBSD.
+
+
+0.1 Installing FreeBSD from CDROM or the Internet
+--- ---------------------------------------------
+
+The easiest type of installation is from CD. If you have a supported
+CDROM drive and a FreeBSD installation CD from Walnut Creek CDROM,
+there are 2 ways of starting the installation from it:
+
+ 1. If your system supports bootable CDROM media (usually an option
+ which can be selectively enabled in the controller's setup menu
+ or in the PC BIOS for some systems) and you have it enabled,
+ FreeBSD supports the "El Torrito" bootable CD standard. Simply
+ put the installation CD in your CDROM drive and boot the system
+ to begin installation.
+
+ 2. Build a set of FreeBSD boot floppies from the floppies/
+ directory in every FreeBSD distribution. Either simply use the
+ ``makeflp.bat'' script from DOS or read floppies/README.TXT
+ for more information on creating the bootable floppies under
+ different operating systems. Then you simply boot from the
+ first floppy and you should soon be in the FreeBSD installation.
+
+If you don't have a CDROM and would like to simply install over the
+net using PPP, slip or a dedicated connection, simply fetch the
+<FreeBSD-release>/floppies/boot.flp file from:
+
+ ftp://ftp.freebsd.org/pub/FreeBSD
+
+or one of its many mirrors (http://www.freebsd.org/handbook/mirrors.html)
+and follow step 3 above. You should also read the floppies/README.TXT
+file as it contains important information for downloaders.
+
+Once you have your boot floppies made, please go to section 1.5 of this
+document for additional tips on installing via FTP or NFS.
+
+
+1.0 Detail on various installation types
+--- ------------------------------------
+
+Once you've gotten yourself to the initial installation screen somehow,
+you should be able to follow the various menu prompts and go from there.
+If you've never used the FreeBSD installation before, you are also
+encouraged to read some of the documentation in the the Documentation
+submenu as well as the general "Usage" instructions on the first menu.
+
+ NOTE: If you get stuck at a screen, hit the F1 key for online
+ documentation relevant to that specific section.
+
+If you've never installed FreeBSD before, or even if you have, the
+"Standard" installation mode is the most recommended since it makes sure
+that you'll visit all the various important checklist items along the
+way. If you're much more comfortable with the FreeBSD installation
+process and know _exactly_ what you want to do, use the Express or
+Custom installation options. If you're upgrading an existing system,
+use the Upgrade option.
+
+The FreeBSD installer supports the direct use of floppy, DOS, tape,
+CDROM, FTP, NFS and UFS partitions as installation media, further tips
+on installing from each type of media listed below.
+
+
+1.1 Installing from a network CDROM
+--- -------------------------------
+
+If you simply wish to install from a local CDROM drive then see the
+Quick Start section. If you don't have a CDROM drive on your system
+and wish to use a FreeBSD distribution CD in the CDROM drive of
+another system to which you have network connectivity, there are also
+several ways of going about it:
+
+1. If you would be able to FTP install FreeBSD directly from the CDROM
+ drive in some FreeBSD machine, it's quite easy: You simply add the
+ following line to the password file (using the vipw command):
+
+ ftp:*:99:99::0:0:FTP:/cdrom:/sbin/nologin
+
+ And anyone else on your network will now be able to choose a Media
+ type of FTP and type in: ``ftp://<machine with CDROM drive>'' after
+ picking "URL" in the ftp sites menu.
+
+2. If you would rather use NFS to export the CDROM directly to the
+ machine(s) you'll be installing from, you need to first add an
+ entry to the /etc/exports file (on the machine with the CDROM drive)
+ which looks something like this:
+
+ /cdrom -ro ziggy.foo.com
+
+ To allow the machine "ziggy.foo.com" to mount the CDROM directly
+ via NFS during installation. The machine with the CDROM must also
+ be configured as an NFS server, of course, and if you're not sure how
+ to do that then an NFS installation is probably not the best choice
+ for you unless you're willing to read up on rc.conf(5) and configure
+ things appropriately. Assuming that this part goes smoothly, you
+ should be able to enter: cdrom-host:/cdrom as the path for an NFS
+ installation when the target machine is installed, e.g. wiggy:/cdrom
+
+
+1.2 Installing from Floppies
+--- ------------------------
+
+If you must install from floppy disks, either due to unsupported
+hardware or just because you enjoy doing things the hard way, you must
+first prepare some floppies for the install.
+
+First, make your boot floppies as described in floppies/README.TXT
+
+Second, read the file LAYOUT.TXT and pay special attention to the
+"Distribution format" section since it describes which files you're
+going to need to put onto floppy and which you can safely skip.
+
+Next you will need, at minimum, as many 1.44MB floppies as it takes to
+hold all files in the bin (binary distribution) directory. If you're
+preparing these floppies under DOS, then THESE floppies *must* be
+formatted using the MS-DOS FORMAT command. If you're using Windows,
+use the Windows File Manager format command.
+
+Don't trust Factory Preformatted floppies! Format them again
+yourself, just to make sure. Many problems reported by our users in
+the past have resulted from the use of improperly formatted media,
+which is why I'm taking such special care to mention it here!
+
+If you're creating the floppies from another FreeBSD machine, a format
+is still not a bad idea though you don't need to put a DOS filesystem
+on each floppy. You can use the `disklabel' and `newfs' commands to
+put a UFS filesystem on a floppy, as the following sequence of
+commands illustrates:
+
+ fdformat -f 1440 fd0.1440
+ disklabel -w -r fd0.1440 floppy3
+ newfs -t 2 -u 18 -l 1 -i 65536 /dev/fd0
+
+After you've formatted the floppies for DOS or UFS, you'll need to
+copy the files onto them. The distribution files are split into
+chunks conveniently sized so that 5 of them will fit on a conventional
+1.44MB floppy. Go through all your floppies, packing as many files as
+will fit on each one, until you've got all the distributions you want
+packed up in this fashion. Each distribution should go into its own
+subdirectory on the floppy, e.g.: a:\bin\bin.inf, a:\bin\bin.aa,
+a:\bin\bin.ab, ...
+
+IMPORTANT NOTE: The bin.inf file also needs to go on the first floppy
+of the bin set since it is read by the installation program in order
+to figure out how many additional pieces to look for when fetching and
+concatenating the distribution. When putting distributions onto
+floppies, the <distname>.inf file MUST occupy the first floppy of each
+distribution set! This is also covered in ABOUT.TXT
+
+Once you come to the Media screen of the install, select "Floppy" and
+you'll be prompted for the rest.
+
+
+1.3 Installing from a DOS partition
+--- -------------------------------
+
+To prepare for installation from an MS-DOS partition you should simply
+copy the files from the distribution into a directory called
+"FREEBSD" on the Primary DOS partition ("Drive C:"). For example, to do
+a minimal installation of FreeBSD from DOS using files copied from the
+CDROM, you might do something like this:
+
+ C:\> MD C:\FREEBSD
+ C:\> XCOPY /S E:\BIN C:\FREEBSD\BIN
+
+Assuming that `E:' was where your CD was mounted.
+
+For as many `DISTS' as you wish to install from DOS (and you have free
+space for), install each one in a directory under `C:\FREEBSD' - the
+BIN dist is only the minimal requirement.
+
+Once you've copied the directories, you can simply launch the installation
+from floppies as normal and select "DOS" as your media type when the time
+comes.
+
+
+1.4 Installing from QIC/SCSI Tape
+--- -----------------------------
+
+When installing from tape, the installation program expects the files
+to be simply tar'ed onto it, so after fetching all of the files for
+the distributions you're interested in, simply tar them onto the tape
+with a command something like this:
+
+ cd /where/you/have/your/dists
+ tar cvf /dev/rwt0 (or /dev/rsa0) dist1 .. dist2
+
+When you go to do the installation, you should also make sure that you
+leave enough room in some temporary directory (which you'll be allowed
+to choose) to accommodate the FULL contents of the tape you've
+created. Due to the non-random access nature of tapes, this method of
+installation requires quite a bit of temporary storage! You should
+expect to require as much temporary storage as you have stuff written
+on tape.
+
+SPECIAL NOTE: When going to do the installation, the tape must be in
+the drive *before* booting from the boot floppies. The installation
+"probe" may otherwise fail to find it.
+
+Now create a boot floppy as described in section 0.1 and proceed with
+the installation.
+
+
+1.5 Installing over a network using FTP or NFS
+--- ------------------------------------------
+
+After making the boot floppies as described in the first section, you can
+load the rest of the installation over a network using one of 3 types
+of connections:
+
+ Serial port: SLIP / PPP
+ Parallel port: PLIP (using ``laplink'' style cable)
+ Ethernet: A standard Ethernet controller (including
+ certain PCCARD devices).
+
+Serial Port
+-----------
+
+SLIP support is rather primitive, and is limited primarily to
+hard-wired links, such as a serial cable running between two
+computers. The link must be hard-wired because the SLIP installation
+doesn't currently offer a dialing capability. If you need to dial out
+with a modem or otherwise dialog with the link before connecting to
+it, then I recommend that the PPP utility be used instead.
+
+If you're using PPP, make sure that you have your Internet Service
+Provider's IP address and DNS information handy as you'll need to know
+it fairly early in the installation process. You may also need to
+know your own IP address, though PPP supports dynamic address
+negotiation and may be able to pick up this information directly from
+your ISP if they support it.
+
+You will also need to know how to use the various "AT commands" for
+dialing out with your particular brand of modem as the PPP dialer
+provides only a very simple terminal emulator.
+
+
+Parallel Port
+-------------
+
+If a hard-wired connection to another FreeBSD or Linux machine is
+available, you might also consider installing over a "laplink" style
+parallel port cable. The data rate over the parallel port is much
+higher than what is typically possible over a serial line (up to
+50k/sec), thus resulting in a quicker installation. It's not
+typically necessary to use "real" IP addresses when using a
+point-to-point parallel cable in this way and you can generally just
+use RFC 1918 style addresses for the ends of the link (e.g. 10.0.0.1,
+10.0.0.2, etc).
+
+IMPORTANT NOTE: If you use a Linux machine rather than a FreeBSD
+machine as your PLIP peer, you will also have to specify "link0" in
+the TCP/IP setup screen's ``extra options for ifconfig'' field in
+order to be compatible with Linux's slightly different PLIP protocol.
+
+
+Ethernet
+--------
+
+FreeBSD supports most common PC Ethernet cards, a table of supported
+cards (and their required settings) being provided as part of the
+FreeBSD Hardware Guide (see the Documentation menu on the boot floppy
+or the top level directory of the CDROM). If you are using one of the
+supported PCMCIA Ethernet cards, also be sure that it's plugged in
+_before_ the laptop is powered on! FreeBSD does not, unfortunately,
+currently support "hot insertion" of PCMCIA cards during installation.
+
+You will also need to know your IP address on the network, the
+"netmask" value for your address class and the name of your machine.
+Your system administrator can tell you which values are appropriate to
+your particular network setup. If you will be referring to other
+hosts by name rather than IP address, you'll also need a name server
+and possibly the address of a gateway (if you're using PPP, it's your
+provider's IP address) to use in talking to it. If you want to install
+by FTP via an HTTP proxy (see below), you will also need the proxy's
+address.
+
+If you do not know the answers to these questions then you should
+really probably talk to your system administrator _first_ before
+trying this type of installation! Using a randomly chosen IP address
+or netmask on a live network will almost certainly get you shot at
+dawn.
+
+Once you have a network connection of some sort working, the
+installation can continue over NFS or FTP.
+
+
+1.5.1 NFS installation tips
+----- ---------------------
+
+ NFS installation is fairly straight-forward: Simply copy the
+ FreeBSD distribution files you want onto a server somewhere
+ and then point the NFS media selection at it.
+
+ If this server supports only "privileged port" access (as is
+ generally the default for Sun and Linux workstations), you
+ will need to set this option in the Options menu before
+ installation can proceed.
+
+ If you have a poor quality Ethernet card which suffers from very
+ slow transfer rates, you may also wish to toggle the appropriate
+ Options flag.
+
+ In order for NFS installation to work, the server must also support
+ "subdir mounts", e.g. if your FreeBSD distribution directory lives
+ on: wiggy:/usr/archive/stuff/FreeBSD
+ Then wiggy will have to allow the direct mounting of
+ /usr/archive/stuff/FreeBSD, not just /usr or /usr/archive/stuff.
+
+ In FreeBSD's /etc/exports file this is controlled by the
+ ``-alldirs'' option. Other NFS servers may have different
+ conventions. If you are getting `Permission Denied' messages
+ from the server then it's likely that you don't have this
+ properly enabled!
+
+
+1.5.2 FTP Installation tips
+----- ---------------------
+
+ FTP installation may be done from any mirror site containing a
+ reasonably up-to-date version of FreeBSD. A full menu of
+ reasonable choices for almost any location in the world is
+ provided in the FTP site menu during installation.
+
+ If you are installing from some other FTP site not listed in
+ this menu, or you are having troubles getting your name server
+ configured properly, you can also specify your own URL by
+ selecting the ``URL'' choice in that menu. A URL can
+ contain a hostname or an IP address, so the following would
+ work in the absence of a name server:
+
+ ftp://192.216.191.11/pub/FreeBSD
+
+ There are three FTP installation modes you can use:
+
+ o FTP:
+
+ This method uses the standard "Active" mode for file
+ transfers which allows the server to initiate a connection
+ to the client. This will not work through most firewalls
+ but will often work best with older FTP servers that do
+ not support passive mode. If your connection hangs with
+ passive mode, try this one!
+
+ o FTP Passive:
+
+ This sets the FTP "Passive" mode which prevents the
+ server from opening connections to the client. This
+ option is best for users to pass through firewalls that
+ do not allow incoming connections on random port
+ addresses.
+
+ o FTP via an HTTP proxy:
+
+ This option instructs FreeBSD to use HTTP to connect to a
+ proxy for all FTP operations. The proxy will translate
+ the requests and send them to the FTP server. This
+ allows the user to pass through firewalls that do not
+ allow FTP at all, but offer an HTTP proxy. You must
+ specify the hostname of the proxy in addition to the FTP
+ server.
+
+ In the rare case that you have an FTP proxy that does not go
+ through HTTP, you can specify the URL as something like :
+
+ ftp://foo.bar.com:1234/pub/FreeBSD
+
+ Where "1234" is the port number of the proxy ftp server.
+
+
+1.6 Tips for Serial Console Users
+--- -----------------------------
+
+If you'd like to install FreeBSD on a machine using just a serial
+port (e.g. you don't have or wish to use a VGA card), please follow
+these steps.
+
+ 1. Connect some sort of ANSI (vt100) compatible terminal or terminal
+ emulation program to the COM1 port of the PC you are installing
+ FreeBSD onto.
+
+ 2. Unplug the keyboard (yes, that's correct!) and then try to boot
+ from floppy or the installation CDROM, depending on the type of
+ installation media you have, with the keyboard unplugged.
+
+ 3. If you don't get any output on your serial console, plug
+ the keyboard in again and wait for some beeps. If you are
+ booting from the CDROM, proceed to Step 5 as soon as you hear
+ the beep.
+
+ 4. For a floppy boot, the first beep means to remove the
+ kern.flp floppy and insert the mfsroot.flp floppy, after
+ which you should press enter and wait for another beep.
+
+ 5. Hit the space bar, then enter
+
+ boot -h
+
+ and you should now definitely be seeing everything on the
+ serial port. If that still doesn't work, check your serial
+ cabling as well as the settings on your terminal emulation
+ program or actual terminal device. It should be set for
+ 9600 baud, 8 bits, no parity.
+
+
+2.0 DOS user's Question and Answer section
+--- --------------------------------------
+
+2.1 Help! I have no space! Do I need to delete everything first?
+--- --------------------------------------------------------------
+
+If your machine is already running DOS and has little or no free space
+available for FreeBSD's installation, all is not lost! You may find
+the "FIPS" utility, provided in the tools/ subdirectory on the FreeBSD
+CDROM or on the various FreeBSD ftp sites, to be quite useful.
+
+FIPS allows you to split an existing DOS partition into two pieces,
+preserving the original partition and allowing you to install onto the
+second free piece. You first "defrag" your DOS partition, using the
+DOS 6.xx "DEFRAG" utility or the Norton Disk tools, then run FIPS. It
+will prompt you for the rest of the information it needs. Afterwards,
+you can reboot and install FreeBSD on the new partition. Also note
+that FIPS will create the second partition as a "clone" of the first,
+so you'll actually see that you now have two DOS Primary partitions
+where you formerly had one. Don't be alarmed! You can simply delete
+the extra DOS Primary partition (making sure it's the right one by
+examining its size! :)
+
+NOTE: FIPS does NOT currently work with FAT32 or VFAT style partitions
+as used by newer versions of Windows 95. To split up such a partition,
+you will need a commercial product such as Partition Magic 3.0. Sorry,
+but this is just the breaks if you've got a Windows partition hogging
+your whole disk and you don't want to reinstall from scratch.
+
+2.2 Can I use compressed DOS filesystems from FreeBSD?
+--- --------------------------------------------------
+
+No. If you are using a utility such as Stacker(tm) or
+DoubleSpace(tm), FreeBSD will only be able to use whatever portion of
+the filesystem you leave uncompressed. The rest of the filesystem
+will show up as one large file (the stacked/dblspaced file!). DO NOT
+REMOVE THAT FILE as you will probably regret it greatly!
+
+It is probably better to create another uncompressed DOS extended
+partition and use this for communications between DOS and FreeBSD if
+such is your desire.
+
+
+2.3 Can I mount my DOS extended partitions?
+--- ---------------------------------------
+
+Yes. DOS extended partitions are mapped in at the end of the other
+``slices'' in FreeBSD, e.g. your D: drive might be /dev/da0s5, your E:
+drive /dev/da0s6, and so on. This example assumes, of course, that
+your extended partition is on SCSI drive 0. For IDE drives, substitute
+``ad'' for ``da'' appropriately. You otherwise mount extended
+partitions exactly like you would mount any other DOS drive, e.g.:
+
+mount -t msdos /dev/da0s5 /dos_d
+
+
+2.4 Can I run DOS binaries under FreeBSD?
+--- -------------------------------------
+
+Ongoing work with BSDI's doscmd utility is bringing this much closer to
+being a reality in FreeBSD 3.0, though it still has some rough edges.
+If you're interested in working on this, please send mail to
+emulation@FreeBSD.org and indicate that you're interested in joining
+this ongoing effort!
+
+There is also a neat utility called "pcemu" in the ports collection
+which emulates an 8088 and enough BIOS services to run DOS text mode
+applications. It requires the X Window System (XFree86) to operate.
+
+---- End of Installation Guide ---
diff --git a/release/texts/i386/RELNOTES.TXT b/release/texts/i386/RELNOTES.TXT
new file mode 100644
index 000000000000..1c7f1a37fa8e
--- /dev/null
+++ b/release/texts/i386/RELNOTES.TXT
@@ -0,0 +1,1801 @@
+ RELEASE NOTES
+ FreeBSD Release 5.0-SNAP
+ (i386 Architecture)
+
+This is a 5.0-CURRENT release SNAPshot of FreeBSD, an active
+development branch which will produce its first release in early
+March 2001. Those features which have also been back-ported to
+the 4.x-stable branch (the next release for which will be 4.3)
+are marked [MERGED].
+
+Any installation failures or crashes should be reported by using the
+send-pr command (those preferring a Web-based interface can also see
+http://www.FreeBSD.org/send-pr.html).
+
+For information about FreeBSD and the layout of the 5.0-RELEASE
+directory (especially if you're installing from floppies!), see
+ABOUT.TXT. For installation instructions, see the INSTALL.TXT and
+HARDWARE.TXT files.
+
+For the latest of these 5.0-current snapshots, you should always see:
+
+ ftp://current.FreeBSD.org/pub/FreeBSD
+
+If you wish to get the latest post-4.x-RELEASE technology.
+
+Table of contents:
+------------------
+1. What's new since the 4.0/5.0 branch
+ 1.1 KERNEL CHANGES
+ 1.2 SECURITY FIXES
+ 1.3 USERLAND CHANGES
+
+2. Supported Configurations
+ 2.1 Disk Controllers
+ 2.2 Ethernet cards
+ 2.3 FDDI
+ 2.4 ATM
+ 2.5 Misc
+
+3. Obtaining FreeBSD
+ 3.1 FTP/Mail
+ 3.2 CDROM
+
+4. Upgrading from previous releases of FreeBSD
+
+5. Reporting problems, making suggestions, submitting code
+
+6. Acknowledgments
+
+
+1. What's new since the 4.0/5.0 branch
+--------------------------------------
+All changes described here are unique to the 5.0 branch unless
+specifically marked as [MERGED] features.
+
+
+1.1. KERNEL CHANGES
+-------------------
+
+A new event notification facility called kqueue was added to the
+FreeBSD kernel. This is a new interface which is able to replace
+poll/select, offering improved performance, as well as the ability
+to report many different types of events. Support for monitoring
+changes in sockets, pipes, fifos, and files are present, as well as
+for signals and processes. [MERGED]
+
+Support for named extended attributes was added to the FreeBSD kernel.
+This allows the kernel, and appropriately privileged userland processes,
+to tag files and directories with attribute data. Extended attributes
+were added to support the TrustedBSD Project, in particular ACLs,
+capability data, and mandatory access control labels.
+
+Support for Intel's Wired for Management 2.0 (PXE) was added to
+the FreeBSD boot loader. Due to API differences, the older PXE
+versions are not supported. This allow network booting using DHCP. [MERGED]
+
+POSIX.1b Shared Memory Objects are now supported. The implementation
+uses regular files, but automatically enables the MAP_NOSYNC flag
+when they are mmap(2)ed. [MERGED]
+
+Added support for PCI Ethernet adapters based on the National Semiconductor
+DP83815 chipset, including the NetGear FA312-TX.
+
+Due to a licensing change, softupdates have been integrated into the
+main portion of the kernel source tree. As a consequence, softupdates
+are now available with the GENERIC kernel. [MERGED]
+
+A driver for AGP hardware has been added. [MERGED]
+
+ipfilter has been updated to 3.4.16. [MERGED]
+
+Various fixes and improvements to the IPv6 code have been merged in
+from the KAME project, including significantly-improved IPSEC
+functionality. [MERGED]
+
+twe 3ware ATA RAID driver added. [MERGED]
+
+The tap driver, a virtual Ethernet device driver for bridged
+configurations, has been added. [MERGED]
+
+accept_filters, a kernel feature to reduce overheads when accepting
+and reading new connections on listening sockets, has been added.
+[MERGED]
+
+The ata(4) driver now has support for ATA100 controllers. In
+addition, it now supports the ServerWorks ROSB4 ATA33 chipset, the CMD
+648 ATA66 and CMD 649 ATA100 chipsets, and the Cyrix 5530. [MERGED]
+
+The ata(4) driver now has support for tagged queuing, which is
+enabled by the ATA_ENABLE_TAGS option. [MERGED]
+
+The ata(4) driver now has support for ATA "pseudo" RAID controllers as
+the Promise Fasttrak and HighPoint HPT370 controllers. [MERGED]
+
+The ti(4) driver now supports the Alteon AceNIC 1000baseT Gigabit
+Ethernet and Netgear GA620T 1000baseT Gigabit cards. [MERGED]
+
+The mly(4) driver, for Mylex PCI to SCSI AccelRAID and eXtremeRAID
+controllers with firmware 6.x and later, has been added. [MERGED]
+
+The asr(4) driver, which provides support for the Adaptec SCSI RAID
+controller family, as well as the DPT SmartRAID V and VI families, has
+been added. [MERGED]
+
+SMP support has been largely reworked, incorporating code from BSD/OS
+5.0. One of the main features of SMPng ("SMP Next Generation") is to
+allow more processes to run in kernel, without the need for spin locks
+that can dramatically reduce the efficiency of multiple processors.
+Interrupt handlers now have contexts associated with them that allow
+them to be blocked, which reduces the need to lock out interrupts.
+
+The xl(4) driver now supports the 3Com 3C556 and 3C556B MiniPCI
+adapters used on some laptops. [MERGED]
+
+The kernel and modules have been moved to the directory /boot/kernel,
+so they can be easily manipulated together. The boot loader has been
+updated to make this change as seamless as possible.
+
+A filesystem snapshot capability has been added to FFS. Details can
+be found in /usr/src/sys/ufs/ffs/README.snapshot.
+
+Softupdates for FFS have received some bug fixes and enhancements.
+
+A bug in FFS that could cause superblock corruption on very large
+filesystems has been corrected. [MERGED]
+
+Support for the Adaptec FSA family of PCI-SCSI RAID controllers has
+been added, in the form of the aac(4) driver. [MERGED]
+
+The ng_mppc(4) and ng_bridge(4) node types have been added to the
+netgraph subsystem. The ng_ether(4) node is now dynamically loadable.
+Miscellaneous bug fixes and enhancements have also been made. [MERGED]
+
+The pcn(4) driver, which supports the AMD PCnet/FAST, PCnet/FAST+,
+PCnet/FAST III, PCnet/PRO, PCnet/Home, and HomePNA adapters, has been added.
+Although these cards are already supported by the lnc(4) driver, the pcn
+driver runs these chips in 32-bit mode and uses the RX alignment feature to
+achieve zero-copy receive. This driver is also machine-independent,
+so it will work on both the i386 and alpha platforms. The lnc driver
+is still needed to support non-PCI cards. [MERGED]
+
+A bug in the ed(4) driver that could cause panics with very short
+packets and BPF or bridging active has been fixed. [MERGED]
+
+The i386 boot loader now has support for a "nullconsole" console type,
+for use on systems with neither a video console nor a serial
+port. [MERGED]
+
+The pcm(4) driver now supports the ESS Solo 1, Maestro-1, Maestro-2,
+and Maestro-2e; Forte Media fm801, ESS Maestro-2e, and VIA
+Technologies VT82C686A sound card/chipsets, and has received some
+other updates. [MERGED] A driver for the ESS Maestro-3/Allegro has
+been added, however due to the amount of GPL firmware included, it
+will only be built as a module. [MERGED] Separate drivers for the
+SoundBlaster 8 and Soundblaster 16 now replace an older, unified
+driver. [MERGED] A driver for the CMedia CMI8338/CMI8738 sound chips
+has been added. A driver for the CS4281 sound chip has been
+added. [MERGED]
+
+Replace the PQ_*CACHE options with a single PQ_CACHESIZE option to be
+set to the cache size in kilobytes. The old options are still
+supported for backwards compatibility. [MERGED]
+
+The NCPU, NAPIC, NBUS, and NIN kernel configuration options,
+for configuring SMP kernels, have been removed. NCPU is now set to a
+maximum of 16, and the other, aforementioned options are now dynamic.
+[MERGED]
+
+The ahc(4) driver has been updated. Among various improvements are
+improved compatibility with chips in "RAID Port" mode and systems with
+AAA and ARO cards installed, as well as performance improvements.
+Some bugs were also fixed, including a rare hang on Ultra2/U160
+controllers. [MERGED]
+
+ACPI support has been merged in from the FreeBSD-ACPI project.
+
+isdn4bsd has been updated to version 0.96.00
+
+The ihfc(4) driver for supporting Cologne Chip Designs HFC devices
+under isdn4bsd has been added.
+
+The itjc(4) driver for supporting NETjet-S / Teles PCI-TJ under
+isdn4bsd has been added.
+
+Experimental support for the Eicon.Diehl DIVA 2.0 and 2.02 ISA PnP
+ISDN cards has been added to the isic(4) isdn4bsd driver.
+
+Support for Fujitsu MB86960A/MB86965A based Ethernet PC-Cards is back.
+[MERGED]
+
+devfs(5), which allows entries in the /dev directory to be built
+automatically and supports more flexible attachment of devices, has
+been largely reworked. devfs(5) is configured into the GENERIC
+kernel.
+
+Preliminary Cardbus support under NEWCARD has been added. This supports
+TI113X, TI12XX, TI125X, Ricoh 5C46/5C47, Topic 95/97/100 and
+Cirrus Logic PD683X bridges. 16-bit PC Card support under this is not yet
+functional.
+
+Write combining for crashdumps has been implemented. This feature
+is useful when write caching is disabled on both SCSI and IDE disks,
+where large memory dumps could take up to an hour to complete. [MERGED]
+
+The bktr(4) driver has been updated to 2.15. New tuner types have
+been added, and improvements to the KLD module and to memory
+allocation have been made. [MERGED]
+
+The bktr(4) driver has been updated to 2.17. This fixes bugs in devfs
+when unloading and reloading, and syncs with some NetBSD
+changes. [MERGED]
+
+The bktr(4) driver has been updated to 2.18. This adds support for
+new Hauppauge Model 44xxx WinTV Cards (the ones with no audio mux).
+
+Extremely large swap areas (>67 GB) no longer panic the system.
+
+The snc(4) driver for the National Semiconductor DP8393X (SONIC)
+Ethernet controller. Currently, this driver is only used on the PC-98
+architecture. [MERGED]
+
+The ich(4) driver for the Intel 82801AA (ICH) SMBus controller and
+compatibles has been added. [MERGED]
+
+The Inode Filesystem (IFS) has been added; more information can be
+found in /usr/src/sys/ufs/ifs/README.
+
+The uscanner(4) driver for basic USB scanner support using SANE. See
+the SANE home page for supported scanners. HP ScanJet 4100C, 5200C
+and 6300C are known to be working.
+
+The umodem(4) driver for USB modems. Supported so far is only the
+3Com 5605 and Metricom Ricochet GS wireless USB modems.
+
+The ncv, nsp, and stg drivers have been ported from NetBSD/pc98.
+They supports NCR 53C50 / Workbit Ninja SCSI-3 / TMC 18C30, 18C50
+based PC-Card/ISA SCSI controllers. [MERGED]
+
+The cd(4) driver now has support for write operations. This allows
+writing to DVD-RAM, PD and similar drives that probe as CD devices.
+Note that change affects only random-access writeable devices, not
+sequential-only writeable devices such as CD-R drives, which are
+supported by cdrecord. [MERGED]
+
+The ISO-9660 filesystem now has a hook that supports a loadable
+character conversion routine. The sysutils/cd9660_unicode port
+contains a set of common conversions. [MERGED]
+
+The an(4) driver for Cisco Aironet cards now supports Wired Equivalent
+Privacy (WEP) encryption, settable via ancontrol(8). [MERGED]
+
+The pcm(4) audio driver is now compiled into the GENERIC kernel by
+default.
+
+The pccard driver and pccardc(8) now support multiple "beep types"
+upon card insertion and removal. [MERGED]
+
+The spic(4) driver, which provides access to the jog dial device on
+some Sony laptops, has been added.
+
+A new netgraph node type ng_one2many(4) for multiplexing and
+demultiplexing packets over multiple links has been added. [MERGED]
+
+A number of cleanups and enhancements have been applied to the PCI
+subsystem. /usr/share/misc/pci_vendors now contains a vendor/device
+database, which can be used by pciconf(8).
+
+netgraph(4) has received some updates.
+
+sbufs, null-terminated string data structures, and their associated
+support routines, have been added to the kernel. Details are in
+sbuf(9).
+
+The el(4) driver can now be loaded as a module.
+
+The vinum(4) volume manager has received some bug fixes and enhancements.
+
+ICMP ECHO and TSTAMP replies are now rate limited. TCP RSTs generated
+due to packets sent to open and unopen ports are now limited by
+separate counters. Each rate limiting queue now has its own
+description.
+
+ICMP UNREACH_FILTER_PROHIB messages can now RST TCP connections in the
+SYN_SENT state if the correct sequence numbers are sent back, as
+controlled by the net.inet.tcp.icmp_may_rst sysctl. [MERGED]
+
+TCP has received some bug fixes for its delayed ACK behavior. [MERGED]
+
+TCP now supports the NewReno modification to the TCP Fast Recovery
+algorithm. This behavior can be controlled via the
+net.inet.tcp.newreno sysctl variable. [MERGED]
+
+TCP now uses a more aggressive timeout for initial SYN segments; this
+allows initial connection attempts to be dropped much faster. [MERGED]
+
+A new sysctl net.inet.ip.check_interface, which is on by default,
+causes IP to verify that an incoming packet arrives on an interface
+that has an address matching the packet's destination address. [MERGED]
+
+PECOFF (WIN32 Execution file format) support has been added.
+
+kernfs(5) is obsolete and has been retired.
+
+md(4), the memory disk device, has had the functionality of vn(4)
+incorporated into it. md(4) devices can now be configured by
+mdconfig(8).
+
+The ray(4) driver, which supports the Webgear Aviator wireless network
+cards, has been committed. The operation of ray(4) interfaces can be
+modified by raycontrol(8). [MERGED]
+
+Linksys Fast Ethernet PCCARD cards supported by the ed(4) driver now
+require the addition of flag 0x80000 to their config line in
+pccard.conf(5). This flag is not optional. These Linksys cards will
+not be recognized without it. [MERGED]
+
+A new API has been added for sound cards with hardware volume
+control.
+
+The VESA S3 linear framebuffer driver has been added.
+
+A new sysctl 'net.link.ether.inet.log_arp_wrong_iface' to controls the
+suppression of logging when ARP replies arrive on the wrong
+interface. [MERGED]
+
+A bug in the NFS client that caused bogus access times with
+O_EXCL|O_CREAT opens was fixed. [MERGED]
+
+Support for the 80386 processor has been removed from the GENERIC
+kernel, as this code seriously pessimizes performance on other ia32
+processors.
+
+The I386_CPU kernel option to support the 80386 processor is now mutually
+exclusive with support for other ia32 processors; this should slightly
+improve performance on the 80386 due to the elimination of runtime
+processor type checks.
+
+Custom kernels that will run on the 80386 can still be built by changing
+the cpu options in the kernel configuration file to only include I386_CPU.
+
+Condition variables have now been implemented in the FreeBSD kernel.
+See condvar(9) for more details.
+
+The "make buildkernel" target now gets the name of the
+configuration(s) to build from the KERNCONF variable, not KERNEL. It
+is no longer required, in some cases, for a "buildworld" to precede a
+"buildkernel". (The buildworld is still required when upgrading across
+major releases, across binutil upgrades and when config changes
+version.)
+
+bridge(4) and dummynet(4) have received some enhancements and bug fixes.
+
+ipfw(8) has a new feature ("me") that allows for packet matching on
+interfaces with dynamically-changing IP addresses. [MERGED]
+
+The isp(4) driver has been updated. [MERGED]
+
+The ida disk driver now has crashdump support. [MERGED]
+
+The random(4) device has been rewritten to use the Yarrow algorithm.
+It harvests entropy from a variety of interrupt sources, including the
+console devices, Ethernet and point-to-point network interfaces, and
+mass-storage devices. Entropy from the random(4) device is now
+periodically saved to files in /var/db/entropy.
+
+The fxp(4) driver now requires a "device miibus" entry in the kernel
+configuration file.
+
+A new NFS hash function (based on the Fowler/Noll/Vo hash algorithm)
+has been implemented to improve NFS performance by increasing the
+efficiency of the nfsnode hash tables. [MERGED]
+
+The syscons(4) driver now supports keyboard-controlled pasting, by
+default bound to Shift-Insert.
+
+
+1.2. SECURITY FIXES
+-------------------
+
+sysinstall(8) now allows the user to select one of three "security
+profiles" at install-time. These profiles enable different levels of
+system security by enabling or disabling various system services in
+rc.conf(5) on new installs. [MERGED]
+
+A bug in which malformed ELF executable images can hang the system has
+been fixed (see security advisory FreeBSD-SA-00:41). [MERGED]
+
+A security hole in Linux emulation was fixed (see security advisory
+FreeBSD-SA-00:42). [MERGED]
+
+rlogind(8), rshd(8), and fingerd(8) are now disabled by default in
+/etc/inetd.conf. This only affects new installations. [MERGED]
+
+String-handling library calls in many programs were fixed to reduce the
+possibility of buffer overflow-related exploits. [MERGED]
+
+TCP now uses stronger randomness in choosing its initial sequence
+numbers (see security advisory FreeBSD-SA-00:52). [MERGED]
+
+Several buffer overflows in tcpdump(1) were corrected (see security
+advisory FreeBSD-SA-00:61). [MERGED]
+
+A security hole in top(1) was corrected (see security advisory
+FreeBSD-SA-00:62). [MERGED]
+
+A potential security hole caused by an off-by-one-error in
+gethostbyname(3) has been fixed (see security advisory
+FreeBSD-SA-00:63). [MERGED]
+
+A potential buffer overflow in the ncurses(3X) library, which could
+cause arbitrary code to be run from within systat(1), has been corrected
+(see security advisory FreeBSD-SA-00:68). [MERGED]
+
+A vulnerability in telnetd(8) that could cause it to consume large
+amounts of server resources has been fixed (see security advisory
+FreeBSD-SA-00:69). [MERGED]
+
+The "nat deny_incoming" command in ppp(8) now works correctly (see
+security advisory FreeBSD-SA-00:70). [MERGED]
+
+A vulnerability in csh(1)/tcsh(1) temporary files that could allow
+overwriting of arbitrary user-writable files has been closed (see
+security advisory FreeBSD-SA-00:76). [MERGED]
+
+The ssh(1) binary is no longer SUID root by default.
+
+Some fixes were applied to the Kerberos IV implementation related to
+environment variables, a possible buffer overrun, and overwriting
+ticket files. [MERGED]
+
+telnet(1) now does a better job of sanitizing its environment. [MERGED]
+
+Several vulnerabilities in procfs(4) were fixed (see security advisory
+FreeBSD-SA-00:77). [MERGED]
+
+A bug in OpenSSH in which a server was unable to disable ssh-agent or
+X11 forwarding was fixed (see security advisory FreeBSD-SA-01:01).
+[MERGED]
+
+A bug in ipfw(8) and ipfw6(8) in which inbound TCP segments could
+incorrectly be treated as being part of an "established" connection
+has been fixed (see security advisory FreeBSD-SA-01:08). [MERGED]
+
+A bug in crontab(8) that could allow users to read any file on the
+system in valid crontab(5) syntax has been fixed (see security
+advisory FreeBSD-SA-01:09). [MERGED]
+
+A vulnerability in inetd(8) that could allow read-access to the
+initial 16 bytes of wheel-accessible files has been fixed (see
+security advisory FreeBSD-SA-01:11). [MERGED]
+
+A bug in periodic(8) that used insecure temporary files has been
+corrected (see security advisory FreeBSD-SA-01:12). [MERGED]
+
+A bug in sort(1) in which an attacker might be able to cause it to
+abort processing has been fixed (see security advisory
+FreeBSD-SA-01:13). [MERGED]
+
+To fix a remotely-exploitable buffer overflow, BIND has been updated
+to 8.2.3 (see security advisory FreeBSD-SA-01:18). [MERGED]
+
+OpenSSH now has code to prevent (instead of just mitigating through
+connection limits) an attack that can lead to guessing the server key
+(not host key) by regenerating the server key when an RSA failure is
+detected (see security advisory FreeBSD-SA-01:24). [MERGED]
+
+A number of programs have had output formatting strings corrected so
+as to reduce the risk of vulnerabilities. [MERGED]
+
+A number of programs that use temporary files now do so more
+securely. [MERGED]
+
+A bug in ICMP that could cause an attacker to disrupt TCP and UDP
+"sessions" has been corrected. [MERGED]
+
+A bug in timed(8), which caused it to crash if send certain malformed
+packets, has been corrected (see security advisory
+FreeBSD-SA-01:28). [MERGED]
+
+A bug in rwhod(8), which caused it to crash if send certain malformed
+packets, has been corrected (see security advisory
+FreeBSD-SA-01:29). [MERGED]
+
+To prevent some forms of DOS attacks, glob(3) allows specification of
+a limit on the number of pathname matches it will return. ftpd(8) now
+uses this feature. [MERGED]
+
+
+1.3. USERLAND CHANGES
+---------------------
+
+cdcontrol(1) now supports a "cdid" command, which calculates and
+displays the CD serial number, using the same algorithm used by the CDDB
+database. [MERGED]
+
+mtree(8) now includes support for a file listing pathnames to be excluded
+when creating and verifying prototypes. This makes it easier to use
+mtree as a part of an intrusion-detection system. [MERGED]
+
+OpenSSL has been upgraded to 0.9.6. [MERGED]
+
+OpenSSL now has support for machine-dependent ASM optimizations,
+activated by the new MACHINE_CPU Makefile variable. [MERGED]
+
+The OPIE one-time-password suite has been updated to 2.32. [MERGED]
+
+OpenSSH has been upgraded to 2.1.0, which provides support for the
+SSH2 protocol, including DSA keys. Therefore, OpenSSH users in the US
+no longer need to rely on the restrictively-licensed RSAREF toolkit
+which is required to handle RSA keys. OpenSSH 2.1 interoperates well
+with other SSH2 clients and servers, including the ssh2 port. See
+http://www.openssh.com for more details. [MERGED]
+
+OpenSSH can now authenticate using OPIE passwords in SSH1 mode.
+Support is not yet available in SSH2 mode. [MERGED]
+
+OpenSSH has been upgraded to 2.2.0. ssh-add(1) and ssh-agent(1) can now
+handle DSA keys. An sftp server interoperable with ssh.com clients
+and others has been added. scp(1) can now handle files >2GB.
+Interoperability with other ssh2 clients/servers has been improved. A
+new feature to limit the number of outstanding unauthenticated ssh
+connections in sshd has been added. [MERGED]
+
+OpenSSH has been upgraded to 2.3.0. This version adds support for the
+Rijndael encryption algorithm. [MERGED]
+
+PAM support for OpenSSH has been added.
+
+A long-standing bug in SSH, which sometimes resulted in a dropped
+session when an X11-forwarded client was closed, was fixed.
+
+Kerberos compatability has been added to OpenSSH. [MERGED]
+
+OpenSSH has been modified to be more resistant to traffic analysis by
+requiring that "non-echoed" characters are still echoed back in a null
+packet, as well as by padding passwords sent so as not to hint at
+password lengths. [MERGED]
+
+Support for USB devices was added to the GENERIC kernel and to the
+installation programs to support USB devices out of the box. Note that
+an AT keyboard must still be used during the initial install, but it
+should work fine afterwards. [MERGED]
+
+The entire i386 bootstrap was revamped to support automatic detection and
+use of the Enhanced Disk Drive BIOS extensions to support booting beyond
+the 1023rd cylinder. As part of this change, the FreeBSD boot manager
+(boot0) was increased from 1 sector in size (512 bytes), to 2 sectors in
+length (1024 bytes). As a result, several userland changes were made to
+cope with MBR boot loaders of varying sizes. [MERGED]
+
+The csh(1) shell has been replaced by tcsh(1), although it can still
+be run as csh(1). tcsh has been updated to version 6.10. [MERGED]
+
+The more(1) command has been replaced by less(1), although it can still
+be run as more(1). [MERGED]
+
+ls(1) can produce colorized listings with the -G flag (and appropriate
+terminal support). [MERGED]
+
+libalias(3) and natd(8) now support RFC 2391 (Load Sharing using IP
+Network Address Translation), as well as new translation options.
+[MERGED]
+
+FreeBSD can now be installed over an IPv6-only network. [MERGED]
+
+sendmail upgraded from version 8.9.3 to version 8.11.3. Important changes
+include: new default file locations (see
+/usr/src/contrib/sendmail/cf/README); newaliases is limited to root and
+trusted users; STARTTLS encryption; and the MSA port (587) is turned on by
+default. See /usr/src/contrib/sendmail/RELEASE_NOTES for more
+information. [MERGED]
+
+mail.local(8) is no longer installed as a set-user-id binary. If you are
+using a /etc/mail/sendmail.cf from the default sendmail.cf included with
+FreeBSD any time after 3.1.0, you are fine. If you are using a
+hand-configured sendmail.cf and mail.local for delivery, check to make sure
+the F=S flag is set on the Mlocal line. Those with .mc files who need to
+add the flag can do so by adding the following line to their your .mc file
+and regenerating the sendmail.cf file:
+ MODIFY_MAILER_FLAGS(`LOCAL', `+S')dnl
+Note that FEATURE(`local_lmtp') already does this. [MERGED]
+
+The default /etc/mail/sendmail.cf disables the SMTP EXPN and VRFY
+commands. [MERGED]
+
+vacation(1) has been updated to use the version included with
+sendmail. [MERGED]
+
+The sendmail(8) configuration building tools are installed in
+/usr/share/sendmail/cf/. [MERGED]
+
+New make.conf options: SENDMAIL_MC and SENDMAIL_ADDITIONAL_MC. See
+/etc/defaults/make.conf for more information. [MERGED]
+
+The Makefile in /etc/mail now supports: the new SENDMAIL_MC make.conf
+option; the ability to build .cf files from .mc files; generalized map
+rebuilding; rebuilding the aliases file; and the ability to stop, start,
+and restart sendmail. [MERGED]
+
+sysinstall(8) now properly preserves /etc/mail during a binary
+upgrade. [MERGED]
+
+awk has been upgraded from gawk-3.0.4 to gawk-3.0.6. This fixes a number
+of non-critical bugs and includes a few performance tweaks. [MERGED]
+
+routed(8) has been updated to version 2.22. [MERGED]
+
+The truncate(1) utility, which truncates or extends the length
+of files, has been added. [MERGED]
+
+syslogd(8) can take a -n option to disable DNS queries for every
+request. [MERGED]
+
+kenv(1), a command to dump the kernel environment, has been added.
+[MERGED]
+
+The behavior of periodic(8) is now controlled by /etc/defaults/periodic.conf
+and /etc/periodic.conf. [MERGED]
+
+boot98cfg(8), a PC-98 boot manager installation and configuration
+utility, has been added. [MERGED]
+
+logger(1) can now send messages directly to a remote syslog. [MERGED]
+
+GDB now supports hardware watchpoints (using the kernel's debug register
+support that has been introduced in FreeBSD 4.0). [MERGED]
+
+which(1) is now a C program, rather than a Perl script.
+
+killall(1) is now a C program, rather than a Perl script. As a
+result, killall's -m option now uses the regular expression syntax of
+regex(3), rather than that of perl(1). [MERGED]
+
+killall(1) now allows non-root users to kill SUID root processes that
+they started.
+
+finger(1) now has the ability to support fingering aliases, via the
+finger.conf(5) file. [MERGED]
+
+finger(1) now has support for a .pubkey file.
+
+nsswitch support has been merged from NetBSD. By creating an
+nsswitch.conf(5) file, FreeBSD can be configured so that various
+databases such as passwd(5) and group(5) can be looked up using flat
+files, NIS, or Hesiod. The old hosts.conf(5) file is no longer used.
+
+sshd X11Forwarding is now turned on by default on server (any risk is
+to the client, where it is already disabled by default).
+
+RSA Security has waived all patent rights to the RSA algorithm (two
+weeks before the patent was due to expire). As a result, the native
+OpenSSL implementation of the RSA algorithm is now activated by
+default, and the rsaref port and librsaUSA are no longer
+required for USA residents. [MERGED]
+
+sshd is now enabled by default on new installs. [MERGED]
+
+perl has been updated to version 5.6.0.
+
+Binutils have been upgraded to 2.10.1. [MERGED]
+
+libreadline has been upgraded to 4.1. [MERGED]
+
+The ifconfig(8) command can set the link-layer address of an interface.
+[MERGED]
+
+setproctitle(3) has been moved from libutil to libc. [MERGED]
+
+chio(1) now has the ability to specify elements by volume tag instead
+of by their physical location as well as the ability to return an
+element to its previous location. [MERGED]
+
+sed(1) now takes a -E option for extended regular expression
+support. [MERGED]
+
+ln(1) now takes an -i option to request user confirmation before
+overwriting an existing file. [MERGED]
+
+Version numbers of installed packages have a new (backward-compatible)
+syntax, which supports the "PORTREVISION" and "PORTEPOCH" variables in
+ports collection makefiles. These changes help keep track of changes
+in the ports collection entries such as security patches or
+FreeBSD-specific updates, which aren't reflected in the original,
+third-party software distributions. pkg_version(1) can now compare
+these new-style version numbers. [MERGED]
+
+cvs(1) has been updated to 1.11. [MERGED]
+
+tcpdump(1) has received some updates and bug fixes. [MERGED]
+
+User-land ppp(8) has received a number of updates and bug fixes. [MERGED]
+
+To improve performance and disk utilization, the "ports skeletons" in
+the FreeBSD Ports Collection have been restructured. Installed ports
+and packages should not be affected. [MERGED]
+
+make(1) has gained the :C/// (regexp substitution), :L (lowercase),
+and :U (uppercase) variable modifiers. These were added to reduce the
+differences between the FreeBSD and OpenBSD/NetBSD make programs. [MERGED]
+
+Bugs in make(1), among which include broken null suffix behavior, bad
+assumptions about current directory permissions, and potential buffer
+overflows, have been fixed. [MERGED]
+
+fsck wrappers have been imported; this feature provides infrastructure
+for fsck(8) to work on different types of filesystems (analogous to
+mount(8) and mount_*(8)).
+
+ncurses has been updated to ncurses-5.1-20001009. [MERGED]
+
+gperf has been updated to 2.7.2. [MERGED]
+
+style.perl.7, a style guide for Perl code in the FreeBSD base system,
+has been added.
+
+The ISC library from the BIND distribution is now built as
+libisc. [MERGED]
+
+The "in use" percentage metric displayed by netstat(1) now really
+reflects the percentage of network mbufs used. [MERGED]
+
+mergemaster(8) has gained some new features, has been cleaned up
+somewhat, and is now more cross-platform friendly.
+
+mergemaster(8) now sources an /etc/mergemaster.rc file and also
+prompts the user to run recommended commands (such as "newaliases") as
+needed. [MERGED]
+
+The compiler chain now uses the FSF-supplied C/C++ runtime
+initialization code. This change brings about better compatibility
+with code generated from the various egcs and gcc ports, as well as
+the stock public FSF source. [MERGED]
+
+The threads library has gained some signal handling changes, bug
+fixes, and performance enhancements (including zero system call thread
+switching). gdb(1) thread support has been updated to match these
+changes. [MERGED]
+
+chflags(1) has moved from /usr/bin to /bin.
+
+Use of the CSMG_* macros no longer require inclusion of <sys/param.h>.
+
+IP Filter is now supported by the rc.conf(5) boot-time configuration
+and initialization. [MERGED]
+
+The lastlogin(1) utility, which prints the last login time of each
+user, has been imported from NetBSD. [MERGED]
+
+newfs(1) now implements write combining, which can make creation of
+new filesystems up to seven times faster. [MERGED]
+
+A number of buffer overflows in config(8) have been fixed. [MERGED]
+
+pwd(1) can now double as realpath(1), a program to resolve pathnames
+to their underlying physical paths. [MERGED]
+
+file(1) has been contribify-ed, and imported as version 3.33. [MERGED]
+
+stty(1) now has support for an "erase2" control character, so that
+both "delete" and "backspace" can be used to erase characters. [MERGED]
+
+The ibcs2(8), linux(8), osf1(8), and svr4(8) scripts, whose sole
+purpose was to load emulation kernel modules, have been removed. The
+kernel module system will automatically load them as needed to fulfill
+dependencies.
+
+top(1) will now use the full width of its tty.
+
+groff(1) and its related utilities have been updated to FSF version
+1.16.1. [MERGED]
+
+growfs(8), a utility for growing FFS filesystems, has been added.
+ffsinfo(8), a utility for dump all the meta-information of an existing
+filesystem, has also been added.
+
+indent(1) has gained some new formatting options. [MERGED]
+
+sysinstall now uses some more intuitive defaults thanks to some new
+dialog support functions. [MERGED]
+
+The default root partition in sysinstall is now 100MB on the i386 and
+110MB on the alpha.
+
+gcc has been updated to 2.95.3.
+
+Shortly after the receipt of a SIGINFO signal (normally control-T from
+the controlling tty), fsck_ffs will now output a line indicating the
+current phase number and progress information relevant to the current
+phase. [MERGED]
+
+fsck_ffs now supports background filesystem checks to mounted FFS
+filesystems with the -B option (softupdates must be enabled on these
+filesystems).
+
+Catching up with most other network utilities in the base system,
+lpr(1), lpd(8), syslogd(8), and logger(1) are now all IPv6-capable.
+[MERGED]
+
+libdisk can now do install-time configuration of the i386 boot0 boot
+loader. [MERGED]
+
+rm(1) -v now displays the entire pathname of a file being
+removed. [MERGED]
+
+lpr(1), lpq(1), and lpd(8) have received a few minor
+enhancements. [MERGED]
+
+pkg_update(1), a utility to update installed packages and update their
+dependencies, has been added. [MERGED]
+
+pkg_info(1) now supports globbing against names of installed packages.
+The -G option disables this behavior, and the -x option causes regular
+expression matching instead of shell globbing. [MERGED]
+
+If the first argument fo ancontrol(8) or wicontrol(8) doesn't start
+with a "-", it is assumed to be an interface.
+
+rdist(1) has been retired.
+
+Kerberos IV has been updated to 1.0.5. [MERGED]
+
+Heimdal has been updated to 0.3e. [MERGED]
+
+ppp(8) has gained the tcpmssfixup option, which adjusts outgoing TCP
+SYN packets so that the maximum receive segment size is no larger than
+allowed by the interface MTU.
+
+libcrypt and libdescrypt have been unified to provide a configurable
+password authentication hash library. Both the md5 and des hash methods
+are provided unless the des hash is specifically compiled out.
+
+passwd(1) and pw(8) now select the passwd hash algorithm at run time. See
+the "passwd_format" attribute in /etc/login.conf.
+
+In preparation for meeting SUSv2/POSIX <sys/select.h> requirements,
+'struct selinfo' and related functions have been moved to
+<sys/selinfo.h>.
+
+gcc now uses a unified libgcc rather than a separate one for threaded
+and non-threaded programs. /usr/lib/libgcc_r.a can be removed. [MERGED]
+
+syslogd(8) now supports a "LOG_CONSOLE" facility (disabled by
+default), which can be used to log /dev/console output. [MERGED]
+
+rpcgen now uses /usr/bin/cpp (as on NetBSD), not /usr/libexec/cpp.
+
+Boot-time syscons configuration was moved to a machine-independent
+rc.syscons. [MERGED]
+
+burncd(8) now supports a -m option for multisession mode (the default
+behavior now is to close disks as single-session). A -l option to
+take a list of image files from a filename was also added; '-' can be
+used as a filename for stdin. [MERGED]
+
+dmesg(8) now has a -a option to show the entire message buffer,
+including syslog records and /dev/console output. [MERGED]
+
+In /etc/ssh/sshd_config, the ConnectionsPerPeriod parameter has been
+deprecated in favor of MaxStartups. [MERGED]
+
+cdcontrol(1) now uses the CDROM environment variable to pick a default
+device. [MERGED]
+
+sysctl(8) now supports a -N option to print out variable names only.
+
+All packages and ports now contain an "origin" directive, which makes
+it easier for programs like pkg_version(1) to determine the directory
+from which a package was built. [MERGED]
+
+sysinstall(8) now lives in /usr/sbin, which simplifies the installation
+process. The sysinstall(8) manpage is also installed in a more
+consistent fashion now.
+
+config(8) is now better about converting various warnings that should
+have been errors into actual fatal errors with an exit code. This
+ensures that that 'make buildkernel' doesn't quietly ignore them and
+build a bogus kernel without a human to read the errors. [MERGED]
+
+pkg_create(1) and pkg_add(1) can now work with packages that have
+been compressed using bzip2(1). pkg_add(1) will use the
+PACKAGEROOT environment variable to determine a mirror site for new
+packages. [MERGED]
+
+pkg_info(1) can now accept a -g flag for verifying an installed
+package against its recorded checksums (to see if it's been modified
+post-installation). Naturally, this mechanism is only as secure as
+the contents of /var/db/pkg if it's to be used for auditing
+purposes. [MERGED]
+
+libc is now thread-safe by default; libc_r contains only thread functions.
+
+find(1) now takes the -empty flag, which returns true if a file or
+directory is empty. [MERGED]
+
+find(1) now takes the -iname and -ipath primaries for case-insensitive
+matches, and the -regexp and -iregexp primaries for regular-expression
+matches. The -E flag now enables extended regular
+expressions. [MERGED]
+
+tftpd(8) now takes the -c and -C options, which allow the server to
+chroot(2) based on the IP address of the connecting client. tftp(1)
+and tftpd(8) can now transfer files larger than 65535 blocks. [MERGED]
+
+vidcontrol(1) now accepts a -g parameter to select custom text
+geometry in the VESA_800x600 raster text mode. [MERGED]
+
+ldconfig(8) now checks directory ownerships and permissions for
+greater security; these checks can be disabled with the -i
+flag. [MERGED]
+
+The rfork_thread(3) library call has been added as a helper function
+to rfork(2). Using this function should avoid the need to implement
+complex stack swap code. [MERGED]
+
+Significant additions have been made to internationalization support;
+FreeBSD now has complete locale support for the LC_MONETARY,
+LC_NUMERIC, and LC_MESSAGES categories. A number of applications have
+been updated to take advantage of this support.
+
+A compat4x distribution has been added for compatibility with FreeBSD
+4-STABLE.
+
+The compat3x distribution has been updated to include libraries
+present in FreeBSD 3.5.1-RELEASE. [MERGED]
+
+savecore(8) now supports a -k option to prevent clearing a crash dump
+after saving it. It also attempts to avoid writing large stretches of
+zeros to crash dump files to save space and time. [MERGED]
+
+When requested to delete multiple packages, pkg_delete(1) will now
+attempt to remove them in dependency order rather than the order
+specified on the command line. [MERGED]
+
+pkg_delete(1) now can perform glob/regexp matching of package names.
+In addition, it supports the -a option for removing all packages and
+the -i option for rm(1)-style interactive confirmation. [MERGED]
+
+tar(1) now supports the TAR_RSH variable, principally to enable the
+use of ssh(1) as a transport. [MERGED]
+
+disklabel(8) now supports partition sizes expressed in kilobytes,
+megabytes, or gigabytes, in addition to sectors. [MERGED]
+
+The pseudo-random number generator implemented by rand(3) has been
+improved to provide less biased results.
+
+login(1) now exports environment variables set by PAM
+modules. [MERGED]
+
+wall(1) now supports a -g flag to write a message to all users of a
+given group.
+
+The new CPUTYPE make.conf variable controls the compilation of
+processor-specific optimizations in various pieces of code such as
+OpenSSL. [MERGED]
+
+The default value for the CVS_RSH variable (used by cvs(1)) is now
+ssh, rather than rsh. [MERGED]
+
+bc has been updated from 1.04 to 1.06. [MERGED]
+
+ipfstat(8) now supports the -t option to turn on a top(1)-like
+display. [MERGED]
+
+pkg_sign(1) and pkg_check(1) have been added to digitally sign and
+verify the signatures on binary package files. [MERGED]
+
+/usr/src/share/examples/BSD_daemon/ now contains a scalable Beastie
+graphic. [MERGED]
+
+dump(8) now supports inheritance of the "nodump" flag down a
+hierarchy. [MERGED]
+
+The ISC DHCP client has been updated to 2.0pl5. [MERGED]
+
+split(1) now has the ability to split a file longer than 2GB. [MERGED]
+
+units(1) has received some updates and bugfixes. [MERGED]
+
+netstat(1) now keeps track of input and output packets on a
+per-address basis for each interface. [MERGED]
+
+As part of an ongoing process, many manual pages were improved, both
+in terms of their formatting markup and in their content. [MERGED]
+
+pkg_create(1) now records dependencies in dependency order rather than
+in the order specified on the command line. This improves the
+functioning of "pkg_add -r". [MERGED]
+
+"lprm -" now works for remote printer queues. [MERGED]
+
+ftpd(8) now supports a -r flag for read-only mode and a -E flag to
+disable EPSV. It also has some fixes to reduce information leakage
+and the ability to specify compile-time port ranges. [MERGED]
+
+ping(8) now supports a -m option to set the TTL of outgoing packets.
+
+A version of Transport Independent RPC (TI-RPC) has been imported.
+
+rpcbind(8) has replaced portmap(8).
+
+NFS now works over IPv6.
+
+lockd has been imported from NetBSD.
+
+rc(8) now has an framework for handling dependencies between
+rc.conf(5) variables. [MERGED]
+
+
+2. Supported Configurations
+---------------------------
+
+FreeBSD currently runs on a wide variety of ISA, VLB, EISA, MCA and PCI
+bus based PC's, ranging from 386sx to Pentium class machines (though the
+386sx is not recommended). Support for generic IDE or ESDI drive
+configurations, various SCSI controller, network and serial cards is
+also provided.
+
+What follows is a list of all peripherals currently known to work with
+FreeBSD. Other configurations may also work, we have simply not as yet
+received confirmation of this.
+
+2.1. Disk Controllers
+---------------------
+IDE
+ATA
+
+Adaptec 1535 ISA SCSI controllers
+Adaptec 154x series ISA SCSI controllers
+Adaptec 164x series MCA SCSI controllers
+Adaptec 174x series EISA SCSI controller in standard and enhanced mode.
+Adaptec 274X/284X/2920C/294x/2950/3940/3950 (Narrow/Wide/Twin) series
+EISA/VLB/PCI SCSI controllers.
+Adaptec AIC7850, AIC7860, AIC7880, AIC789x, on-board SCSI controllers.
+Adaptec 1510 series ISA SCSI controllers (not for bootable devices)
+Adaptec 152x series ISA SCSI controllers
+Adaptec AIC-6260 and AIC-6360 based boards, which includes the AHA-152x
+and SoundBlaster SCSI cards.
+
+Adaptec 2100S, 2400A, 3200S, and 3400S SCSI RAID controllers.
+
+Adaptec FSA family RAID controllers:
+ Adaptec AAC-2622
+ Adaptec AAC-364
+ Adaptec AAC-3642
+ Dell PERC 2/QC
+ Dell PERC 2/Si
+ Dell PERC 3/Di
+ Dell PERC 3/QC
+ Dell PERC 3/Si
+ HP NetRAID-4M
+
+AdvanSys SCSI controllers (all models).
+
+BusLogic MultiMaster controllers:
+
+[ Please note that BusLogic/Mylex "Flashpoint" adapters are NOT yet supported ]
+
+BusLogic MultiMaster "W" Series Host Adapters:
+ BT-948, BT-958, BT-958D
+BusLogic MultiMaster "C" Series Host Adapters:
+ BT-946C, BT-956C, BT-956CD, BT-445C, BT-747C, BT-757C, BT-757CD, BT-545C,
+ BT-540CF
+BusLogic MultiMaster "S" Series Host Adapters:
+ BT-445S, BT-747S, BT-747D, BT-757S, BT-757D, BT-545S, BT-542D, BT-742A,
+ BT-542B
+BusLogic MultiMaster "A" Series Host Adapters:
+ BT-742A, BT-542B
+
+AMI FastDisk controllers that are true BusLogic MultiMaster clones are also
+supported.
+
+The Buslogic/Bustek BT-640 and Storage Dimensions SDC3211B and SDC3211F
+Microchannel (MCA) bus adapters are also supported.
+
+DPT SmartCACHE Plus, SmartCACHE III, SmartRAID III, SmartCACHE IV and
+SmartRAID IV SCSI/RAID controllers.
+
+DPT SmartRAID V and VI SCSI RAID controllers:
+ PM1554, PM2554, PM2654, PM2865, PM2754, PM3755, PM3757
+
+AMI MegaRAID Express and Enterprise family RAID controllers:
+ MegaRAID Series 418
+ MegaRAID Enterprise 1200 (Series 428)
+ MegaRAID Enterprise 1300 (Series 434)
+ MegaRAID Enterprise 1400 (Series 438)
+ MegaRAID Enterprise 1500 (Series 467)
+ MegaRAID Enterprise 1600 (Series 471)
+ MegaRAID Elite 1500 (Series 467)
+ MegaRAID Elite 1600 (Series 493)
+ MegaRAID Express 100 (Series 466WS)
+ MegaRAID Express 200 (Series 466)
+ MegaRAID Express 300 (Series 490)
+ MegaRAID Express 500 (Series 475)
+ Dell PERC
+ Dell PERC 2/SC
+ Dell PERC 2/DC
+ HP NetRAID-1si
+ HP NetRAID-3si
+ HP Embedded NetRAID
+Booting from these controllers is supported.
+
+Mylex DAC960 and DAC1100 RAID controllers with 2.x, 3.x, 4.x and 5.x
+firmware:
+ DAC960P
+ DAC960PD
+ DAC960PDU
+ DAC960PL
+ DAC960PJ
+ DAC960PG
+ AcceleRAID 150
+ AcceleRAID 250
+ eXtremeRAID 1100
+Booting from these controllers is supported. EISA adapters are not
+supported.
+
+Mylex PCI to SCSI RAID controllers with 6.x firmware:
+ AcceleRAID 160
+ AcceleRAID 170
+ AcceleRAID 352
+ eXtremeRAID 2000
+ eXtremeRAID 3000
+Compatible Mylex controllers not listed should work, but have not been
+verified.
+
+3ware Escalade ATA RAID controllers. All members of the 5000 and
+6000 series are supported.
+
+SymBios (formerly NCR) 53C810, 53C810a, 53C815, 53C820, 53C825a,
+53C860, 53C875, 53C875j, 53C885, 53C895 and 53C896 PCI SCSI controllers:
+ ASUS SC-200
+ Data Technology DTC3130 (all variants)
+ Diamond FirePort (all)
+ NCR cards (all)
+ Symbios cards (all)
+ Tekram DC390W, 390U and 390F
+ Tyan S1365
+
+NCR 53C500 based PC-Card SCSI host adapters:
+ IO DATA PCSC-DV
+ KME KXLC002(TAXAN ICD-400PN, etc.), KXLC004
+ Macnica Miracle SCSI-II mPS110
+ Media Intelligent MSC-110, MSC-200
+ NEC PC-9801N-J03R
+ New Media Corporation BASICS SCSI
+ Qlogic Fast SCSI
+ RATOC REX-9530, REX-5572 (as SCSI only)
+
+TMC 18C30, 18C50 based ISA/PC-Card SCSI host adapters:
+ Future Domain SCSI2GO
+ IBM SCSI PCMCIA Card
+ ICM PSC-2401 SCSI
+ Melco IFC-SC
+ RATOC REX-5536, REX-5536AM, REX-5536M, REX-9836A
+
+QLogic 1020, 1040, 1040B, 1080 and 1240 SCSI Host Adapters.
+QLogic 2100 Fibre Channel Adapters (private loop only).
+
+DTC 3290 EISA SCSI controller in 1542 emulation mode.
+
+Workbit Ninja SCSI-3 based PC-Card SCSI host adapters:
+ Alpha-Data AD-PCS201
+ IO DATA CBSC16
+
+With all supported SCSI controllers, full support is provided for
+SCSI-I & SCSI-II peripherals, including hard disks, optical disks,
+tape drives (including DAT and 8mm Exabyte), medium changers, processor
+target devices and CDROM drives. WORM devices that support CDROM commands
+are supported for read-only access by the CDROM driver. WORM/CD-R/CD-RW
+writing support is provided by cdrecord, which is in the ports tree.
+
+The following CD-ROM type systems are supported at this time:
+(cd) SCSI interface (also includes ProAudio Spectrum and
+ SoundBlaster SCSI)
+(matcd) Matsushita/Panasonic (Creative SoundBlaster) proprietary
+ interface (562/563 models)
+(scd) Sony proprietary interface (all models)
+(acd) ATAPI IDE interface
+
+The following drivers were supported under the old SCSI subsystem, but are
+NOT YET supported under the new CAM SCSI subsystem:
+
+ NCR5380/NCR53400 ("ProAudio Spectrum") SCSI controller.
+
+ UltraStor 14F, 24F and 34F SCSI controllers.
+
+ Seagate ST01/02 SCSI controllers.
+
+ Future Domain 8xx/950 series SCSI controllers.
+
+ WD7000 SCSI controller.
+
+ [ Note: There is work-in-progress to port the UltraStor driver to
+ the new CAM SCSI framework, but no estimates on when or if it will
+ be completed. ]
+
+Unmaintained drivers, they might or might not work for your hardware:
+
+ (mcd) Mitsumi proprietary CD-ROM interface (all models)
+
+
+2.2. Ethernet cards
+-------------------
+
+Adaptec Duralink PCI Fast Ethernet adapters based on the Adaptec
+AIC-6915 Fast Ethernet controller chip, including the following:
+ ANA-62011 64-bit single port 10/100baseTX adapter
+ ANA-62022 64-bit dual port 10/100baseTX adapter
+ ANA-62044 64-bit quad port 10/100baseTX adapter
+ ANA-69011 32-bit single port 10/100baseTX adapter
+ ANA-62020 64-bit single port 100baseFX adapter
+
+Allied-Telesis AT1700 and RE2000 cards
+
+Alteon Networks PCI Gigabit Ethernet NICs based on the Tigon 1 and Tigon 2
+chipsets, including the following:
+ Alteon AceNIC (Tigon 1 and 2)
+ 3Com 3c985-SX (Tigon 1 and 2)
+ Netgear GA620 (Tigon 2)
+ Silicon Graphics Gigabit Ethernet
+ DEC/Compaq EtherWORKS 1000
+ NEC Gigabit Ethernet
+
+AMD PCnet/PCI (79c970 & 53c974 or 79c974)
+AMD PCnet/FAST, PCnet/FAST+, PCnet/FAST III, PCnet/PRO,
+PCnet/Home, and HomePNA.
+
+SMC Elite 16 WD8013 Ethernet interface, and most other WD8003E,
+WD8003EBT, WD8003W, WD8013W, WD8003S, WD8003SBT and WD8013EBT
+based clones. SMC Elite Ultra. SMC Etherpower II.
+
+RealTek 8129/8139 Fast Ethernet NICs including the following:
+ Allied Telesyn AT2550
+ Allied Telesyn AT2500TX
+ Genius GF100TXR (RTL8139)
+ NDC Communications NE100TX-E
+ OvisLink LEF-8129TX
+ OvisLink LEF-8139TX
+ Netronix Inc. EA-1210 NetEther 10/100
+ KTX-9130TX 10/100 Fast Ethernet
+ Accton "Cheetah" EN1207D (MPX 5030/5038; RealTek 8139 clone)
+ SMC EZ Card 10/100 PCI 1211-TX
+
+Lite-On 82c168/82c169 PNIC Fast Ethernet NICs including the following:
+ LinkSys EtherFast LNE100TX
+ NetGear FA310-TX Rev. D1
+ Matrox FastNIC 10/100
+ Kingston KNE110TX
+
+Macronix 98713, 98713A, 98715, 98715A and 98725 Fast Ethernet NICs
+ NDC Communications SFA100A (98713A)
+ CNet Pro120A (98713 or 98713A)
+ CNet Pro120B (98715)
+ SVEC PN102TX (98713)
+
+Macronix/Lite-On PNIC II LC82C115 Fast Ethernet NICs including the following:
+ LinkSys EtherFast LNE100TX Version 2
+
+Winbond W89C840F Fast Ethernet NICs including the following:
+ Trendware TE100-PCIE
+
+VIA Technologies VT3043 "Rhine I" and VT86C100A "Rhine II" Fast Ethernet
+NICs including the following:
+ Hawking Technologies PN102TX
+ D-Link DFE-530TX
+ AOpen/Acer ALN-320
+
+Silicon Integrated Systems SiS 900 and SiS 7016 PCI Fast Ethernet NICs
+
+National Semiconductor DP83815 Fast Ethernet NICs including the following:
+ NetGear FA312-TX
+
+Sundance Technologies ST201 PCI Fast Ethernet NICs including
+the following:
+ D-Link DFE-550TX
+
+SysKonnect SK-984x PCI Gigabit Ethernet cards including the following:
+ SK-9841 1000baseLX single mode fiber, single port
+ SK-9842 1000baseSX multimode fiber, single port
+ SK-9843 1000baseLX single mode fiber, dual port
+ SK-9844 1000baseSX multimode fiber, dual port
+
+Texas Instruments ThunderLAN PCI NICs, including the following:
+ Compaq Netelligent 10, 10/100, 10/100 Proliant, 10/100 Dual-Port
+ Compaq Netelligent 10/100 TX Embedded UTP, 10 T PCI UTP/Coax, 10/100 TX UTP
+ Compaq NetFlex 3P, 3P Integrated, 3P w/ BNC
+ Olicom OC-2135/2138, OC-2325, OC-2326 10/100 TX UTP
+ Racore 8165 10/100baseTX
+ Racore 8148 10baseT/100baseTX/100baseFX multi-personality
+
+ADMtek Inc. AL981-based PCI Fast Ethernet NICs
+ADMtek Inc. AN985-based PCI Fast Ethernet NICs
+ADMtek Inc. AN986-based USB Ethernet NICs including the following:
+ LinkSys USB100TX
+ Billionton USB100
+ Melco Inc. LUA-TX
+ D-Link DSB-650TX
+ SMC 2202USB
+
+CATC USB-EL1210A-based USB Ethernet NICs including the following:
+ CATC Netmate
+ CATC Netmate II
+ Belkin F5U111
+
+Kawasaki LSI KU5KUSB101B-based USB Ethernet NICs including
+the following:
+ LinkSys USB10T
+ Entrega NET-USB-E45
+ Peracom USB Ethernet Adapter
+ 3Com 3c19250
+ ADS Technologies USB-10BT
+ ATen UC10T
+ Netgear EA101
+ D-Link DSB-650
+ SMC 2102USB
+ SMC 2104USB
+ Corega USB-T
+
+ASIX Electronics AX88140A PCI NICs, including the following:
+ Alfa Inc. GFC2204
+ CNet Pro110B
+
+DEC EtherWORKS III NICs (DE203, DE204, and DE205)
+DEC EtherWORKS II NICs (DE200, DE201, DE202, and DE422)
+DEC DC21040, DC21041, or DC21140 based NICs (SMC Etherpower 8432T, DE245, etc)
+
+Davicom DM9100 and DM9102 PCI Fast Ethernet NICs, including the
+following:
+ Jaton Corporation XpressNet
+
+Fujitsu MB86960A/MB86965A, including the following:
+ CONTEC C-NET(PC)C Ethernet
+ Eiger Labs EPX-10BT
+ Fujitsu FMV-J182, FMV-J182A, MBH10302, MBH10303 Ethernet PCMCIA
+ Fujitsu Towa LA501 Ethernet
+ HITACHI HT-4840-11
+ NextCom J Link NC5310
+ RATOC REX-5588, REX-9822, REX-4886, REX-R280
+ TDK LAK-CD021, LAK-CD021A, LAK-CD021BX
+
+HP PC Lan+ cards (model numbers: 27247B and 27252A).
+
+Intel EtherExpress 16
+Intel EtherExpress Pro/10
+Intel EtherExpress Pro/100B PCI Fast Ethernet
+Intel InBusiness 10/100 PCI Network Adapter
+Intel PRO/100+ Management Adapter
+
+Isolan AT 4141-0 (16 bit)
+Isolink 4110 (8 bit)
+
+Novell NE1000, NE2000, and NE2100 Ethernet interface.
+
+PCI network cards emulating the NE2000: RealTek 8029, NetVin 5000,
+Winbond W89C940, Surecom NE-34, VIA VT86C926.
+
+3Com 3C501 cards
+
+3Com 3C503 Etherlink II
+
+3Com 3c505 Etherlink/+
+
+3Com 3C507 Etherlink 16/TP
+
+3Com 3C509, 3C529 (MCA), 3C579,
+3C589/589B/589C/589D/589E/XE589ET/574TX/574B (PC-card/PCMCIA),
+3C590/592/595/900/905/905B/905C PCI,
+3C556/556B MiniPCI,
+3C575TX/575B/XFE575BT/575C/656/656B/656C Cardbus,
+and EISA (Fast) Etherlink III / (Fast) Etherlink XL
+
+3Com 3c980/3c980B Fast Etherlink XL server adapter
+
+3Com 3cSOHO100-TX OfficeConnect adapter
+
+Crystal Semiconductor CS89x0-based NICs, including:
+ IBM Etherjet ISA
+
+NE2000 compatible PC-Card (PCMCIA) Ethernet/FastEthernet cards,
+including the following:
+ AR-P500 Ethernet card
+ Accton EN2212/EN2216/UE2216(OEM)
+ Allied Telesis CentreCOM LA100-PCM_V2
+ AmbiCom 10BaseT card
+ BayNetworks NETGEAR FA410TXC Fast Ethernet
+ CNet BC40 adapter
+ COREGA Ether PCC-T/EtherII PCC-T/FEther PCC-TXF/PCC-TXD
+ Compex Net-A adapter
+ CyQ've ELA-010
+ D-Link DE-650/660
+ Danpex EN-6200P2
+ ELECOM Laneed LD-CDL/TX
+ IO DATA PCLATE,PCET/TX-R
+ IBM Creditcard Ethernet I/II
+ IC-CARD Ethernet/IC-CARD+ Ethernet
+ Linksys EC2T/PCMPC100,EtherFast 10/100 PC Card (PCMPC100 V2)
+ Melco LPC-T/LPC2-T/LPC2-CLT/LPC2-TX/LPC3-TX/LPC3-CLX
+ NDC Ethernet Instant-Link
+ National Semiconductor InfoMover NE4100
+ Network Everywhere Ethernet 10BaseT PC Card
+ Planex FNW-3600-T
+ Socket LP-E
+ Surecom EtherPerfect EP-427
+ TDK LAK-CD031,Grey Cell GCS2000 Ethernet Card
+ Telecom Device SuperSocket RE450T
+
+Megahertz X-Jack Ethernet PC-Card CC-10BT
+
+Xircom X3201 (Cardbus) based Ethernet cards,
+including the following:
+ IBM EtherJet Cardbus Adapter
+ Intel PRO/100 Mobile Cardbus (versions that uses the X3201 chipset)
+ Xircom Cardbus Realport
+ Xircom Cardbus Ethernet 10/100
+ Xircom Cardbus Ethernet II 10/100
+
+Xircom CreditCard adapters(16bit) and workalikes
+ Accton EN2226/Fast EtherCard (16-bit verison)
+ Compaq Netelligent 10/100 PC Card
+ Intel EtherExpress PRO/100 Mobile Adapter (16-bit verison)
+ Xircom 10/100 Network PC Card adapter.
+ Xircom Realport card + modem(Ethernet part)
+ Xircom CreditCard Ethernet 10/100
+ Xircom CreditCard 10Base-T "CreditCard Ethernet Adaptor IIps" (PS-CE2-10)
+ Xircom CreditCard Ethernet 10/100 + modem (Ethernet part)
+
+National Semiconductor DP8393X (SONIC) Ethernet cards
+ NEC PC-9801-83, -84, -103, and -104
+ NEC PC-9801N-25 and -J02R
+
+
+2.3. FDDI
+---------
+
+DEC FDDI (DEFPA/DEFEA) NICs
+
+
+2.4. ATM
+--------
+
+ o ATM Host Interfaces
+ - FORE Systems, Inc. PCA-200E ATM PCI Adapters
+ - Efficient Networks, Inc. ENI-155p ATM PCI Adapters
+
+ o ATM Signaling Protocols
+ - The ATM Forum UNI 3.1 signaling protocol
+ - The ATM Forum UNI 3.0 signaling protocol
+ - The ATM Forum ILMI address registration
+ - FORE Systems' proprietary SPANS signaling protocol
+ - Permanent Virtual Channels (PVCs)
+
+ o IETF "Classical IP and ARP over ATM" model
+ - RFC 1483, "Multiprotocol Encapsulation over ATM Adaptation Layer 5"
+ - RFC 1577, "Classical IP and ARP over ATM"
+ - RFC 1626, "Default IP MTU for use over ATM AAL5"
+ - RFC 1755, "ATM Signaling Support for IP over ATM"
+ - RFC 2225, "Classical IP and ARP over ATM"
+ - RFC 2334, "Server Cache Synchronization Protocol (SCSP)"
+ - Internet Draft draft-ietf-ion-scsp-atmarp-00.txt,
+ "A Distributed ATMARP Service Using SCSP"
+
+ o ATM Sockets interface
+
+
+2.5. Misc
+---------
+
+AST 4 port serial card using shared IRQ.
+
+ARNET 8 port serial card using shared IRQ.
+ARNET (now Digiboard) Sync 570/i high-speed serial.
+
+Boca BB1004 4-Port serial card (Modems NOT supported)
+Boca IOAT66 6-Port serial card (Modems supported)
+Boca BB1008 8-Port serial card (Modems NOT supported)
+Boca BB2016 16-Port serial card (Modems supported)
+
+Comtrol Rocketport card.
+
+Cyclades Cyclom-y Serial Board.
+
+STB 4 port card using shared IRQ.
+
+SDL Communications Riscom/8 Serial Board.
+SDL Communications RISCom/N2 and N2pci high-speed sync serial boards.
+
+Stallion multiport serial boards: EasyIO, EasyConnection 8/32 & 8/64,
+ONboard 4/16 and Brumby.
+
+Specialix SI/XIO/SX ISA, EISA and PCI serial expansion cards/modules.
+
+Advance Asound 100, 110 and Logic ALS120
+Crystal Semiconductor CS461x/462x/428x
+ENSONIQ AudioPCI ES1370/1371
+ESS ES1868, ES1869, ES1879 and ES1888
+ESS Maestro-1, Maestro-2, and Maestro-2E
+ESS Maestro-3/Allegro
+ForteMedia fm801
+Gravis UltraSound MAX/PnP
+MSS/WSS Compatible DSPs
+NeoMagic 256AV/ZX
+OPTi 931/82C931
+SoundBlaster, Soundblaster Pro, Soundblaster AWE-32, Soundblaster AWE-64
+Trident 4DWave DX/NX
+VIA Technologies VT82C686A
+Yamaha DS1 and DS1e
+(newpcm driver)
+
+Connectix QuickCam
+Matrox Meteor Video frame grabber
+Creative Labs Video Spigot frame grabber
+Cortex1 frame grabber
+Hauppauge Wincast/TV boards (PCI)
+STB TV PCI
+Intel Smart Video Recorder III
+Various Frame grabbers based on Brooktree Bt848 / Bt878 chip.
+
+HP4020, HP6020, Philips CDD2000/CDD2660 and Plasmon CD-R drives.
+
+PS/2 mice
+
+Standard PC Joystick
+
+X-10 power controllers
+
+GPIB and Transputer drivers.
+
+Genius and Mustek hand scanners.
+
+Xilinx XC6200 based reconfigurable hardware cards compatible with
+the HOT1 from Virtual Computers (www.vcc.com)
+
+Support for Dave Mills experimental Loran-C receiver.
+
+Lucent Technologies WaveLAN/IEEE 802.11 PCMCIA and ISA standard speed
+(2Mbps) and turbo speed (6Mbps) wireless network adapters and workalikes
+NCR WaveLAN/IEEE 802.11
+Cabletron RoamAbout 802.11 DS
+Compaq WL100
+Corega KK Wireless LAN PCC-11, PCCA-11
+Laneed Wireless card
+ELECOM Air@Hawk/LD-WL11/PCC
+Farallon Skyline 11Mbps Wireless
+ICOM SL-1100
+IO Data WN-B11/PCM
+Melco Airconnect WLI-PCM-L11
+NEC Wireless Card CMZ-RT-WP, PC-WL/11C, PK-WL001
+PLANEX GeoWave/GW-NS110
+TDK LAK-CD011WL
+Note: the ISA versions of these adapters are actually PCMCIA cards
+combined with an ISA to PCMCIA bridge card, so both kinds of devices
+work with the same driver.
+
+Aironet 4500/4800 series 802.11 wireless adapters. The PCMCIA,
+PCI and ISA adapters are all supported.
+Cisco Systems Aironet 340 Series (includes 340, 341, and 342 models)
+11Mbps 802.11 wireless NIC
+
+Webgear Aviator 2.4GHz wireless adapters.
+
+AcerISDN P10 ISA PnP (experimental)
+Asuscom ISDNlink 128K ISA
+AVM A1
+AVM Fritz!Card classic
+AVM Fritz!Card PnP
+AVM Fritz!Card PCI
+Creatix ISDN-S0
+Creatix ISDN-S0 P&P
+Dr. Neuhaus Niccy Go@ and compatibles
+Dynalink IS64PH
+ELSA PCC-16
+ELSA QuickStep 1000pro ISA
+ELSA MicroLink ISDN/PCI
+ELSA QuickStep 1000pro PCI
+ITK ix1 Micro ( < V.3, non-PnP version )
+Sedlbauer Win Speed
+Siemens I-Surf 2.0
+TELEINT ISDN SPEED No.1 (experimental)
+Teles S0/8
+Teles S0/16
+Teles S0/16.3
+Teles S0/16.3 PnP
+Teles 16.3c ISA PnP (experimental)
+USRobotics Sportster ISDN TA intern
+Winbond W6692 based PCI cards
+
+Toshiba Mobile HDD MEHDD20A (Type II)
+
+Panasonic Flash ATA BN-040ABP3
+
+Hewlett Packard M820e (CD-writer)
+
+FAX-Modem/PC-Card
+Melco IGM-PCM56K/IGM-PCM56KH
+Nokia Card Phone 2.0 (gsm900/dcs1800 HSCSD terminal)
+
+PHS Data Communication Card/PC-Card
+NTT DoCoMo P-in Comp@ct
+Panasonic KX-PH405
+SII MC-P200
+
+
+3. Obtaining FreeBSD
+--------------------
+
+You may obtain FreeBSD in a variety of ways:
+
+
+3.1. FTP/Mail
+-------------
+
+You can ftp FreeBSD and any or all of its optional packages from
+`ftp.FreeBSD.org' - the official FreeBSD release site.
+
+For other locations that mirror the FreeBSD software see the file
+MIRROR.SITES. Please ftp the distribution from the site closest (in
+networking terms) to you. Additional mirror sites are always welcome!
+Contact freebsd-admin@FreeBSD.org for more details if you'd like to
+become an official mirror site.
+
+If you do not have access to the Internet and electronic mail is your
+only recourse, then you may still fetch the files by sending mail to
+`ftpmail@ftpmail.vix.com' - putting the keyword "help" in your message
+to get more information on how to fetch files using this mechanism.
+Please do note, however, that this will end up sending many *tens of
+megabytes* through the mail and should only be employed as an absolute
+LAST resort!
+
+
+3.2. CDROM
+----------
+
+FreeBSD 4.x-RELEASE and 3.x-RELEASE CDs may be ordered on CDROM from:
+
+ BSDi / Walnut Creek CDROM
+ 4041 Pike Lane, Suite D
+ Concord CA 94520
+ USA
+ +1-800-786-9907, +1-925-674-0783, +1-925-674-0821 (FAX)
+
+Or via the Internet from orders@cdrom.com or http://www.cdrom.com.
+Their current catalog can be obtained via ftp from:
+
+ ftp://ftp.cdrom.com/cdrom/catalog
+
+Cost per -RELEASE CD is $39.95 or $24.95 with a FreeBSD subscription.
+FreeBSD SNAPshot CDs, when available, are $39.95 or $14.95 with a
+FreeBSD-SNAP subscription (-RELEASE and -SNAP subscriptions are entirely
+separate). With a subscription, you will automatically receive updates as
+they are released. Your credit card will be billed when each disk is
+shipped and you may cancel your subscription at any time without further
+obligation.
+
+Shipping (per order not per disc) is $5 in the US, Canada or Mexico
+and $9.00 overseas. They accept Visa, Mastercard, Discover, American
+Express or checks in U.S. Dollars and ship COD within the United
+States. California residents please add 8.25% sales tax.
+
+Should you be dissatisfied for any reason, the CD comes with an
+unconditional return policy.
+
+
+4. Upgrading from previous releases of FreeBSD
+----------------------------------------------
+
+If you're upgrading from a previous release of FreeBSD, most likely
+it's 3.0 and there may be some issues affecting you, depending
+of course on your chosen method of upgrading. There are two popular
+ways of upgrading FreeBSD distributions:
+
+ o Using sources, via /usr/src
+ o Using sysinstall's (binary) upgrade option.
+
+Please read the UPGRADE.TXT file for more information, preferably
+before beginning an upgrade.
+
+
+5. Reporting problems, making suggestions, submitting code.
+-----------------------------------------------------------
+Your suggestions, bug reports and contributions of code are always
+valued - please do not hesitate to report any problems you may find
+(preferably with a fix attached, if you can!).
+
+The preferred method to submit bug reports from a machine with
+Internet mail connectivity is to use the send-pr command or use the CGI
+script at http://www.FreeBSD.org/send-pr.html. Bug reports
+will be dutifully filed by our faithful bugfiler program and you can
+be sure that we'll do our best to respond to all reported bugs as soon
+as possible. Bugs filed in this way are also visible on our WEB site
+in the support section and are therefore valuable both as bug reports
+and as "signposts" for other users concerning potential problems to
+watch out for.
+
+If, for some reason, you are unable to use the send-pr command to
+submit a bug report, you can try to send it to:
+
+ freebsd-bugs@FreeBSD.org
+
+Note that send-pr itself is a shell script that should be easy to move
+even onto a totally different system. We much prefer if you could use
+this interface, since it make it easier to keep track of the problem
+reports. However, before submitting, please try to make sure whether
+the problem might have already been fixed since.
+
+
+Otherwise, for any questions or tech support issues, please send mail to:
+
+ freebsd-questions@FreeBSD.org
+
+
+If you're tracking the -current development efforts, you should
+definitely join the -current mailing list, in order to keep abreast
+of recent developments and changes that may affect the way you
+use and maintain the system:
+
+ freebsd-current@FreeBSD.org
+
+
+Additionally, being a volunteer effort, we are always happy to have
+extra hands willing to help - there are already far more desired
+enhancements than we'll ever be able to manage by ourselves! To
+contact us on technical matters, or with offers of help, please send
+mail to:
+
+ freebsd-hackers@FreeBSD.org
+
+
+Please note that these mailing lists can experience *significant*
+amounts of traffic and if you have slow or expensive mail access and
+are only interested in keeping up with significant FreeBSD events, you
+may find it preferable to subscribe instead to:
+
+ freebsd-announce@FreeBSD.org
+
+
+All of the mailing lists can be freely joined by anyone wishing
+to do so. Send mail to MajorDomo@FreeBSD.org and include the keyword
+`help' on a line by itself somewhere in the body of the message. This
+will give you more information on joining the various lists, accessing
+archives, etc. There are a number of mailing lists targeted at
+special interest groups not mentioned here, so send mail to majordomo
+and ask about them!
+
+
+6. Acknowledgments
+------------------
+
+FreeBSD represents the cumulative work of many hundreds, if not
+thousands, of individuals from around the world who have worked very
+hard to bring you this release. For a complete list of FreeBSD
+project staffers, please see:
+
+ http://www.FreeBSD.org/handbook/staff.html
+
+or, if you've loaded the doc distribution:
+
+ file:/usr/share/doc/handbook/staff.html
+
+
+Special mention to:
+
+ The donors listed at http://www.FreeBSD.org/handbook/donors.html
+
+ Justin M. Seger <jseger@FreeBSD.org> for almost single-handedly
+ converting the ports collection to ELF.
+
+ Doug Rabson <dfr@FreeBSD.org> and John Birrell <jb@FreeBSD.org>
+ for making FreeBSD/alpha happen and to the NetBSD project for
+ substantial indirect aid.
+
+ Peter Wemm <peter@FreeBSD.org> for the new kernel module system
+ (with substantial aid from Doug Rabson).
+
+ And to the many thousands of FreeBSD users and testers all over the
+ world, without whom this release simply would not have been possible.
+
+We sincerely hope you enjoy this release of FreeBSD!
+
+ The FreeBSD Project
+
+$FreeBSD$
diff --git a/release/write_mfs_in_kernel.c b/release/write_mfs_in_kernel.c
new file mode 100644
index 000000000000..379112459ee8
--- /dev/null
+++ b/release/write_mfs_in_kernel.c
@@ -0,0 +1,96 @@
+/*
+ * ----------------------------------------------------------------------------
+ * "THE BEER-WARE LICENSE" (Revision 42):
+ * <phk@login.dknet.dk> wrote this file. As long as you retain this notice you
+ * can do whatever you want with this stuff. If we meet some day, and you think
+ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+ * ----------------------------------------------------------------------------
+ *
+ * $FreeBSD$
+ *
+ * This program patches a filesystem into a kernel made with MD_ROOT
+ * option.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <ufs/ffs/fs.h>
+
+static int force = 0; /* don't check for zeros, may corrupt kernel */
+
+int
+main(int argc, char **argv)
+{
+ unsigned char *buf_kernel, *buf_fs, *p,*q, *prog;
+ int fd_kernel, fd_fs, ch, errs=0;
+ struct stat st_kernel, st_fs;
+ u_long l;
+
+ prog= *argv;
+ while ((ch = getopt(argc, argv, "f")) != EOF)
+ switch(ch) {
+ case 'f':
+ force = 1 - force;
+ break;
+ default:
+ errs++;
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (errs || argc != 2) {
+ fprintf(stderr,"Usage:\n\t%s [-f] kernel fs\n", prog);
+ exit(2);
+ }
+ --argv; /* original prog did not use getopt(3) */
+ fd_kernel = open(argv[1],O_RDWR);
+ if (fd_kernel < 0) { perror(argv[1]); exit(2); }
+ fstat(fd_kernel,&st_kernel);
+ fd_fs = open(argv[2],O_RDONLY);
+ if (fd_fs < 0) { perror(argv[2]); exit(2); }
+ fstat(fd_fs,&st_fs);
+ buf_kernel = malloc(st_kernel.st_size);
+ if (!buf_kernel) { perror("malloc"); exit(2); }
+ buf_fs = malloc(st_fs.st_size);
+ if (!buf_fs) { perror("malloc"); exit(2); }
+ if (st_kernel.st_size != read(fd_kernel,buf_kernel,st_kernel.st_size))
+ { perror(argv[1]); exit(2); }
+ if (st_fs.st_size != read(fd_fs,buf_fs,st_fs.st_size))
+ { perror(argv[2]); exit(2); }
+ for(l=0,p=buf_kernel; l < st_kernel.st_size - st_fs.st_size ; l++,p++ )
+ if(*p == 'M' && !strcmp(p,"MFS Filesystem goes here"))
+ goto found;
+ fprintf(stderr,"MFS filesystem signature not found in %s\n",argv[1]);
+ exit(1);
+found:
+ if (!force)
+ for(l=0,q= p + SBOFF; l < st_fs.st_size - SBOFF ; l++,q++ )
+ if (*q)
+ goto fail;
+ memcpy(p+SBOFF,buf_fs+SBOFF,st_fs.st_size-SBOFF);
+ lseek(fd_kernel,0L,SEEK_SET);
+ if (st_kernel.st_size != write(fd_kernel,buf_kernel,st_kernel.st_size))
+ { perror(argv[1]); exit(2); }
+ exit(0);
+fail:
+ l += SBOFF;
+ fprintf(stderr,"Obstruction in kernel after %ld bytes (%ld Kbyte)\n",
+ l, l/1024);
+ fprintf(stderr,"Filesystem is %ld bytes (%ld Kbyte)\n",
+ (u_long)st_fs.st_size, (u_long)st_fs.st_size/1024);
+ exit(1);
+}
+
+/*
+ * I added a '-f' option to force writing the image into the kernel, even when
+ * there is already data (i.e. not zero) in the written area. This is useful
+ * to rewrite a changed MD-image. Beware: If the written image is larger than
+ * the space reserved in the kernel (with option MD_ROOT) then
+ * THIS WILL CORRUPT THE KERNEL!
+ *
+ */