Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 08 Aug 2002 21:46:54 +0300
From:      Maxim Sobolev <sobomax@FreeBSD.org>
To:        John Hay <jhay@icomtek.csir.co.za>
Cc:        current@FreeBSD.ORG, ru@FreeBSD.ORG, jhb@FreeBSD.ORG
Subject:   Re: 3 floppy system for -current releases
Message-ID:  <3D52BC9E.137D7B73@FreeBSD.org>
References:  <200208081632.g78GWeq61331@zibbi.icomtek.csir.co.za>

next in thread | previous in thread | raw e-mail | index | archive | help
Did you look at split images loading feature, which the loader(8) had
for quite some time now? My feeling is that you can do the same thing
but much easier, by just spliting out mfsroot over two or more
floppies. See
http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libstand/splitfs.c for
details.

-Maxim

John Hay wrote:
> 
> Here is a try at a 3 floppy system. Most people should be able to
> install with the first 2 floppies (kern.flp and mfsroot.flp). Just
> those that need a driver on the third floppy (drivers.flp) will
> need it.
> 
> If this idea is acceptable, we should probably tweak what should
> go on the second floppy and what is used the least and put that
> on the last one.
> 
> To load drivers from the drivers floppy, go to "Configure" and then
> the last option there is "Load KLD".
> 
> The last 2 files in the diff (bld-ko.sh and driver-list.awk) are not
> really needed. That is part of my attempt to create a single .ko to
> save space on mfsroot.flp. But I can't get internal dependancies to
> work yet. Most drivers depend on miibus and that don't get loaded
> first.
> 
> John
> --
> John Hay -- John.Hay@icomtek.csir.co.za / jhay@FreeBSD.org
> 
> Index: usr.sbin/sysinstall/system.c
> ===================================================================
> RCS file: /home/ncvs/src/usr.sbin/sysinstall/system.c,v
> retrieving revision 1.119
> diff -u -r1.119 system.c
> --- usr.sbin/sysinstall/system.c        1 Nov 2001 23:32:46 -0000       1.119
> +++ usr.sbin/sysinstall/system.c        8 Aug 2002 09:17:01 -0000
> @@ -348,7 +348,13 @@
>      snprintf(buf, FILENAME_MAX, "/stand/help/%s.hlp.gz", file);
>      if (file_readable(buf))
>         return expand(buf);
> +    snprintf(buf, FILENAME_MAX, "/stand/help/%s.hlp", file);
> +    if (file_readable(buf))
> +       return expand(buf);
>      snprintf(buf, FILENAME_MAX, "/stand/help/%s.TXT.gz", file);
> +    if (file_readable(buf))
> +       return expand(buf);
> +    snprintf(buf, FILENAME_MAX, "/stand/help/%s.TXT", file);
>      if (file_readable(buf))
>         return expand(buf);
>      snprintf(buf, FILENAME_MAX, "/usr/src/usr.sbin/sysinstall/help/%s.hlp", file);
> Index: release/Makefile
> ===================================================================
> RCS file: /home/ncvs/src/release/Makefile,v
> retrieving revision 1.698
> diff -u -r1.698 Makefile
> --- release/Makefile    5 Aug 2002 16:57:43 -0000       1.698
> +++ release/Makefile    8 Aug 2002 15:40:27 -0000
> @@ -518,7 +518,8 @@
>  .endif
>         cd ${j}_crunch; ${WMAKE} -f ${j}_crunch.mk subclean
>         cd ${.CURDIR}/..; ${TMAKE} build-tools
> -       cd ${j}_crunch; ${WMAKE} -f ${j}_crunch.mk all
> +       cd ${j}_crunch; ${WMAKE} -f ${j}_crunch.mk \
> +           CFLAGS="-Os -pipe" -DNO_CPU_CFLAGS all
>         mv ${j}_crunch/${j}_crunch ${RD}/crunch/${j}
>  .endfor
>         touch release.5
> @@ -654,15 +655,15 @@
>             > ${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 ${RD}/trees/base/COPYRIGHT > ${RD}/mfsfd/stand/help/COPYRIGHT.hlp.gz
> +       cat ${RD}/trees/base/COPYRIGHT > ${RD}/mfsfd/stand/help/COPYRIGHT.hlp
>  .if !defined(NODOC)
>         @for i in ${DIST_DOCS_ARCH_INDEP}; do \
> -         gzip -9c ${RND}/${RELNOTES_LANG}/$$i/article.txt > ${RD}/mfsfd/stand/help/`echo $${i} | tr 'a-z' 'A-Z'`.TXT.gz; \
> +         cat ${RND}/${RELNOTES_LANG}/$$i/article.txt > ${RD}/mfsfd/stand/help/`echo $${i} | tr 'a-z' 'A-Z'`.TXT; \
>         done
>         @for i in ${DIST_DOCS_ARCH_DEP}; do \
> -         gzip -9c ${RND}/${RELNOTES_LANG}/$$i/${TARGET}/article.txt > ${RD}/mfsfd/stand/help/`echo $${i} | tr 'a-z' 'A-Z'`.TXT.gz; \
> +         cat ${RND}/${RELNOTES_LANG}/$$i/${TARGET}/article.txt > ${RD}/mfsfd/stand/help/`echo $${i} | tr 'a-z' 'A-Z'`.TXT; \
>         done
> -       @mv ${RD}/mfsfd/stand/help/INSTALLATION.TXT.gz ${RD}/mfsfd/stand/help/INSTALL.TXT.gz
> +       @mv ${RD}/mfsfd/stand/help/INSTALLATION.TXT ${RD}/mfsfd/stand/help/INSTALL.TXT
>  .endif
>         -test -f ${.CURDIR}/install.cfg && cp ${.CURDIR}/install.cfg ${RD}/mfsfd
>         @mkdir -p ${RD}/mfsfd/boot
> @@ -674,16 +675,28 @@
>         @echo "Making the regular boot floppy."
>         @tar --exclude CVS -cf - -C ${.CURDIR}/../usr.sbin/sysinstall help | \
>                 tar xf - -C ${RD}/mfsfd/stand
> -       @echo "Compressing doc files..."
> -       @gzip -9 ${RD}/mfsfd/stand/help/*.hlp
>  .if ${TARGET_ARCH} == "alpha"
>         rm -rf ${RD}/mfsfd/stand/help/*
>  .endif
>  .if exists(${.CURDIR}/${TARGET}/drivers.conf)
>         @mkdir -p ${RD}/mfsfd/stand/modules
> -       @awk -f  ${.CURDIR}/scripts/driver-copy2.awk \
> +.if !defined(SINGLE_MODULE)
> +       @awk -f  ${.CURDIR}/scripts/driver-copy2.awk 2 \
>             ${.CURDIR}/${TARGET}/drivers.conf \
> -           ${RD}/trees/base/boot/kernel ${RD}/mfsfd/stand/modules
> +           ${RD}/trees/base/boot/kernel ${RD}/mfsfd/stand/modules/
> +.else
> +       sh -e ${.CURDIR}/scripts/bld-ko.sh ${RD}/mfsfd/stand/modules \
> +           `awk -f ${.CURDIR}/scripts/driver-list.awk 2 \
> +           ${.CURDIR}/${TARGET}/drivers.conf`
> +.endif
> +       @kldxref ${RD}/mfsfd/stand/modules/
> +       rm -rf ${RD}/driverfd
> +       mkdir ${RD}/driverfd
> +       @awk -f  ${.CURDIR}/scripts/driver-copy2.awk 3 \
> +           ${.CURDIR}/${TARGET}/drivers.conf \
> +           ${RD}/trees/base/boot/kernel ${RD}/driverfd/
> +       @sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/drivers.flp \
> +           ${RD} ${MNT} ${BOOTSIZE} ${RD}/driverfd ${BOOTINODE} ${BOOTLABEL}
>  .endif
>         sh -e ${.CURDIR}/scripts/doFS.sh -s mfsroot ${RD} ${MNT} \
>                 ${MFSSIZE} ${RD}/mfsfd ${MFSINODE} ${MFSLABEL}
> @@ -832,7 +845,7 @@
>                   fbsd_livefs ${CD}/disc2.iso ${CD_DISC2}; \
>                 if [ "x${CD_EXTRA_BITS}" != "x" ]; then \
>                         sh ${.CURDIR}/${TARGET_ARCH}/mkisoimages.sh ${BOOTABLE} \
> -                         fbsd_boot ${CD}/disc1.iso ${CD_DISC1} ${CD_EXTRA_BITS}; \
> +                         fbsd_boot ${CD}/disc1.iso ${CD_DISC1} ${CD_EXTRA_BITS} \
>                             && false; \
>                 fi \
>         else \
> @@ -963,7 +976,8 @@
>         cd ${.CURDIR}/..; \
>         KERNEL_KO=BOOTMFS KODIR= \
>             ${CROSSMAKE} ${KERNEL_FLAGS} -DNO_MODULES -DNO_KERNELCLEAN \
> -           KERNCONF=BOOTMFS buildkernel reinstallkernel \
> +           KERNCONF=BOOTMFS COPTFLAGS="-Os -pipe" -DNO_CPU_COPTFLAGS \
> +           buildkernel reinstallkernel \
>             DESTDIR=${RD}/kernels
>         [ -r ${.CURDIR}/../sys/${TARGET}/conf/BOOTMFS.hints ] && \
>         cp ${.CURDIR}/../sys/${TARGET}/conf/BOOTMFS.hints ${RD}/kernels
> @@ -995,6 +1009,7 @@
>  .endif
>         @echo "load -t mfs_root /mfsroot" >> ${RD}/image.${FSIMAGE}/boot/loader.rc
>         @echo "set hint.acpi.0.disable=1" >> ${RD}/image.${FSIMAGE}/boot/loader.rc
> +       @echo "set module_path=\"/stand/modules;/dist\"" >> ${RD}/image.${FSIMAGE}/boot/loader.rc
>         @echo "echo \\007\\007" >> ${RD}/image.${FSIMAGE}/boot/loader.rc
>         @echo "autoboot 10" >> ${RD}/image.${FSIMAGE}/boot/loader.rc
>  .if ${TARGET_ARCH} == "i386" && ${AUTO_KEYBOARD_DETECT}
> Index: release/i386/dokern.sh
> ===================================================================
> RCS file: /home/ncvs/src/release/i386/dokern.sh,v
> retrieving revision 1.59
> diff -u -r1.59 dokern.sh
> --- release/i386/dokern.sh      4 Aug 2002 18:35:02 -0000       1.59
> +++ release/i386/dokern.sh      8 Aug 2002 09:17:01 -0000
> @@ -21,6 +21,7 @@
>         -e '/   random  /d' \
>         -e '/   splash$/d' \
>         -e '/PROCFS/d' \
> +       -e '/PSEUDOFS/d' \
>         -e '/KTRACE/d' \
>         -e '/SYSV/d' \
>         -e '/SOFTUPDATES/d' \
> @@ -83,6 +84,7 @@
>         -e '/   random  /d' \
>         -e '/   splash$/d' \
>         -e '/PROCFS/d' \
> +       -e '/PSEUDOFS/d' \
>         -e '/KTRACE/d' \
>         -e '/SYSV/d' \
>         -e '/SOFTUPDATES/d' \
> @@ -109,6 +111,7 @@
>         -e '/   ulpt    /d' \
>         -e '/   urio    /d' \
>         -e '/   uscanner        /d' \
> +       -e '/   ses     /d' \
>         -e '/maxusers/d' \
>         -e 's/ident.*GENERIC/ident              BOOTMFS/g'
> 
> Index: release/i386/drivers.conf
> ===================================================================
> RCS file: /home/ncvs/src/release/i386/drivers.conf,v
> retrieving revision 1.7
> diff -u -r1.7 drivers.conf
> --- release/i386/drivers.conf   25 Jul 2002 14:04:38 -0000      1.7
> +++ release/i386/drivers.conf   8 Aug 2002 12:58:49 -0000
> @@ -39,9 +39,9 @@
>  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"
> +de     if_de           3       network "DEC DE435 PCI NIC or other DC21040-AA based card"
>  ed     if_ed           2       network "NE[12]000, SMC Ultra, 3c503, DS8390 ISA ethernet cards"
> -em     if_em           2       network "Intel Pro/1000 PCI gigabit ethernet card"
> +em     if_em           3       network "Intel Pro/1000 PCI gigabit ethernet card"
>  fe     if_fe           2       network "Fujitsu MB8696x based cards"
>  fxp    if_fxp          2       network "Intel EtherExpress Pro/100B PCI Fast Ethernet card"
>  kue    if_kue          2       network "Kawasaki LSI USB ethernet adapter"
> @@ -51,11 +51,11 @@
>  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"
> -sn     if_sn           2       network "SMC's 9000 series of ethernet chips"
> +sk     if_sk           3       network "SysKonnect PCI gigabit ethernet card"
> +sn     if_sn           3       network "SMC's 9000 series of ethernet chips"
>  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"
> +ti     if_ti           3       network "Alteon Networks PCI gigabit ethernet card"
> +tl     if_tl           3       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"
>  vx     if_vx           2       network "3Com 3c590/3c595 PCI ethernet card"
> @@ -63,6 +63,9 @@
>  wi     if_wi           2       network "Lucent WaveLAN/IEEE 802.11 PCMCIA card"
>  xe     if_xe           2       network "Xircom pccard ethernet"
>  xl     if_xl           2       network "3COM 3c90x / 3c90xB PCI ethernet card"
> +CD9660 cd9660          3       options "ISO 9660 Filesystem"
> +MSDOSFS        msdosfs         3       options "MSDOS filsystem"
> +NFSCLIENT      nfsclient       3       options "Network Filesystem Client"
>  SYSVSHM        sysvshm         2       options "SYSV-style shared memory"
>  SYSVMSG        sysvmsg         2       options "SYSV-style message queues"
>  SYSVSEM        sysvsem         2       options "SYSV-style semaphores"
> Index: release/scripts/driver-copy2.awk
> ===================================================================
> RCS file: /home/ncvs/src/release/scripts/driver-copy2.awk,v
> retrieving revision 1.2
> diff -u -r1.2 driver-copy2.awk
> --- release/scripts/driver-copy2.awk    25 May 2002 10:37:00 -0000      1.2
> +++ release/scripts/driver-copy2.awk    8 Aug 2002 09:17:01 -0000
> @@ -30,7 +30,7 @@
> 
>  function usage()
>  {
> -       print "usage: driver-copy2.awk config_file src_ko_dir dst_ko_dir" > "/dev/stderr";
> +       print "usage: driver-copy2.awk flop_num config_file src_ko_dir dst_ko_dir" > "/dev/stderr";
>         exit 1;
>  }
> 
> @@ -62,12 +62,13 @@
>  }
> 
>  BEGIN {
> -       if (ARGC != 4)
> +       if (ARGC != 5)
>                 usage();
> 
> -       config = ARGV[1];
> -       srcdir = ARGV[2];
> -       dstdir = ARGV[3];
> +       fnum = ARGV[1];
> +       config = ARGV[2];
> +       srcdir = ARGV[3];
> +       dstdir = ARGV[4];
> 
>         readconfig();
> 
> @@ -77,20 +78,15 @@
>                 err(1, "cannot find %s directory", dstdir);
> 
>         for (f in flp) {
> -               if (flp[f] == 1) {
> -                       print f ": There's nothing to do with driver on first floppy." > "/dev/stderr";
> -               } else if (flp[f] == 2) {
> -                       srcfile = srcdir "/" f ".ko";
> -                       dstfile = dstdir "/" f ".ko";
> -                       dscfile = dstdir "/" f ".dsc";
> -                       print "Copying " f ".ko to " dstdir > "/dev/stderr";
> -                       if (system("cp " srcfile " " dstfile) != 0)
> -                               exit 1;
> -                       printf "%s", dsc[f] > dscfile;
> -                       close(dscfile);
> -               } else if (flp[f] == 3) {
> -                       # third driver floppy (not yet implemented)
> -                       err(1, "%s: 3rd driver floppy support is not implemented", f);
> -               }
> +               if (flp[f] != fnum)
> +                       continue;
> +               srcfile = srcdir "/" f ".ko";
> +               dstfile = dstdir "/" f ".ko";
> +               dscfile = dstdir "/" f ".dsc";
> +               print "Copying " f ".ko to " dstdir > "/dev/stderr";
> +               if (system("cp " srcfile " " dstfile) != 0)
> +                       exit 1;
> +               printf "%s", dsc[f] > dscfile;
> +               close(dscfile);
>         }
>  }
> --- /dev/null   Thu Aug  8 17:33:00 2002
> +++ release/scripts/bld-ko.sh   Thu Aug  8 14:25:14 2002
> @@ -0,0 +1,45 @@
> +#!/bin/sh
> +
> +if [ $# -lt 2 ]; then
> +       echo "usage: bld-ko dst_ko_dir driver_name ..."
> +       exit 1
> +fi
> +
> +mdir="/usr/obj/usr/src/sys/GENERIC/modules/usr/src/sys/modules"
> +blddir="/usr/obj/usr/src/release/modules"
> +dstdir=$1
> +shift
> +
> +dlist=""
> +
> +if [ -d ${blddir} ]; then
> +       rm -rf ${blddir}
> +fi
> +mkdir ${blddir}
> +cd ${blddir}
> +
> +for a in $*; do
> +       noif=`echo $a | sed -e s/if_//g`
> +       if [ -f ${mdir}/${a}/${a}.kld ]; then
> +               cp ${mdir}/${a}/${a}.kld .
> +               dlist="$dlist ${a}.kld"
> +       elif [ -f ${mdir}/${noif}/${a}.kld ]; then
> +               cp ${mdir}/${noif}/${a}.kld .
> +               dlist="$dlist ${a}.kld"
> +       elif [ ${a} = "miibus" ]; then
> +               cp ${mdir}/mii/${a}.kld .
> +               dlist="$dlist ${a}.kld"
> +       elif [ -f ${mdir}/sysvipc/${a}/${a}.kld ]; then
> +               cp ${mdir}/sysvipc/${a}/${a}.kld .
> +               dlist="$dlist ${a}.kld"
> +       else
> +               echo "Cannot find ${a}.kld"
> +       fi
> +done
> +
> +set -x
> +ld -r -d -o drivers.kld ${dlist}
> +ld -Bshareable -d -warn-common -o drivers.ko.debug drivers.kld
> +objcopy --strip-debug drivers.ko.debug drivers.ko
> +cp drivers.ko ${dstdir}/
> +echo "Various device drivers" > ${dstdir}/drivers.dsc
> --- /dev/null   Thu Aug  8 17:33:00 2002
> +++ release/scripts/driver-list.awk     Thu Aug  8 14:22:31 2002
> @@ -0,0 +1,85 @@
> +#!/usr/bin/awk -f
> +#
> +# Copyright (c) 2000  "HOSOKAWA, Tatsumi" <hosokawa@FreeBSD.org>
> +# Copyright (c) 2002  Ruslan Ermilov <ru@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: src/release/scripts/driver-copy2.awk,v 1.2 2002/05/25 10:37:00 ru Exp $
> +#
> +
> +function usage()
> +{
> +       print "usage: driver-copy2.awk floppy_number config_file" > "/dev/stderr";
> +       exit 1;
> +}
> +
> +function err(eval, fmt, what)
> +{
> +       printf "driver-copy2.awk: " fmt "\n", what > "/dev/stderr";
> +       exit eval;
> +}
> +
> +function readconfig()
> +{
> +       while ((r = (getline < config)) > 0) {
> +               sub("#.*$", "");
> +               if (sub(/^[[:alnum:]_]+[ \t]+[[:alnum:]_]+[ \t]+[0-9]+[ \t]+[[:alnum:]_]+[ \t]+\".*\"[ \t]*$/, "&")) {
> +                       sub(/[ \t]+/, "#");
> +                       sub(/[ \t]+/, "#");
> +                       sub(/[ \t]+/, "#");
> +                       sub(/[ \t]+/, "#");
> +                       sub(/\"/, "");
> +                       sub(/\"/, "");
> +                       split($0, arg, "#");
> +                       flp[arg[2]] = arg[3];
> +                       dsc[arg[2]] = arg[5];
> +               }
> +       }
> +       if (r == -1)
> +               err(1, "error reading %s", config);
> +       close(config);
> +}
> +
> +BEGIN {
> +       if (ARGC != 3)
> +               usage();
> +
> +       fnum = ARGV[1];
> +       config = ARGV[2];
> +
> +       readconfig();
> +
> +       dlist = "";
> +       for (f in flp) {
> +               if (flp[f] != fnum)
> +                       continue;
> +               if (f == "miibus")
> +                       miibus = 1;
> +               else
> +                       dlist = dlist " " f;
> +       }
> +       if (miibus == 1)
> +               dlist = "miibus " dlist;
> +       print dlist;
> +}
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-current" in the body of the message

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3D52BC9E.137D7B73>