Moved driver modules for some PCI NICs and PCCARD-only NICs to mfsroot.flp.

http://people.freebsd.org/~hosokawa/driver-floppy/ for details.

Reviewed by:	current@FreeBSD.org
This commit is contained in:
Tatsumi Hosokawa 2000-10-31 07:39:07 +00:00
parent 0ba3999559
commit b98c5f70ff
15 changed files with 398 additions and 22 deletions

View File

@ -89,6 +89,8 @@ MNT= /mnt
# Various floppy image parameters.
#
.if ${MACHINE_ARCH} == "i386"
.if ${MACHINE} == "pc98"
SMALLBOOTSIZE= 1200
BOOTSIZE= 1440
@ -104,21 +106,28 @@ MFSLABEL= minimum2
.else
BOOTSIZE= 1440
FIXITSIZE= 1440
MFSSIZE= 2880
MFSSIZE= 4320
BIGBOOTSIZE= 2880
BOOTINODE= 80000
FIXITINODE= 4000
MFSINODE= 8000
BOOTLABEL= fd1440
FIXITLABEL= fd1440
MFSLABEL= minimum2
MFSLABEL= minimum3
BIGBOOTLABEL= minimum2
.endif
# overrides.
.if ${MACHINE_ARCH} == "alpha"
.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 -
@ -547,11 +556,21 @@ release.8: write_mfs_in_kernel
@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 ${.CURDIR}/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
@ -767,6 +786,28 @@ installCRUNCH:
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} ##==--
#
@ -783,6 +824,14 @@ doKERNEL:
[ -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}
@ -799,17 +848,7 @@ doSTDKERNEL:
doMFSKERN:
@echo "Running doMFSKERN for ${FSIMAGE}"
@rm -f ${RD}/kernels/BOOTMFS.${FSIMAGE}
@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
@cd ${.CURDIR} && ${MAKE} createBOOTMFS
@cd ${.CURDIR} && ${MAKE} doKERNEL KERNEL=BOOTMFS KERNEL_KO=BOOTMFS KODIR=""
@rm -rf ${RD}/image.${FSIMAGE}
@mkdir ${RD}/image.${FSIMAGE}

View File

@ -48,6 +48,7 @@ do
vnconfig -s labels -c /dev/r${VNDEVICE} ${FSIMG}
disklabel -Brw /dev/r${VNDEVICE} ${FSLABEL}
newfs -i ${FSINODE} -T ${FSLABEL} -o space /dev/r${VNDEVICE}c
tunefs -m 0 /dev/r${VNDEVICE}c
mount /dev/${VNDEVICE}c ${MNT}

View File

@ -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;
}
}

View File

@ -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;

View File

@ -12,8 +12,8 @@ CLEANFILES+= keymap.tmp keymap.h
SRCS= anonFTP.c cdrom.c command.c config.c devices.c dhcp.c kget.c \
disks.c dispatch.c dist.c dmenu.c doc.c dos.c floppy.c \
ftp.c globals.c http.c index.c install.c installUpgrade.c keymap.c \
label.c lndir.c main.c makedevs.c media.c menus.c misc.c mouse.c \
msg.c network.c nfs.c options.c package.c pccard.c \
label.c lndir.c main.c makedevs.c media.c menus.c misc.c modules.c \
mouse.c msg.c network.c nfs.c options.c package.c pccard.c \
system.c tape.c tcpip.c termcap.c ufs.c usb.c user.c variable.c \
wizard.c keymap.h

View File

@ -101,6 +101,9 @@ main(int argc, char **argv)
if (DebugFD)
dup2(DebugFD, 2);
/* Initialize driver modules */
moduleInitialize();
/* Initialize PC-card */
pccardInitialize();

View File

@ -0,0 +1,91 @@
/*-
* 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$
*/
#include "sysinstall.h"
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/linker.h>
#include <fcntl.h>
#include <dirent.h>
#define MODULESDIR "/stand/modules"
void
moduleInitialize(void)
{
int fd, len;
DIR *dirp;
struct dirent *dp;
char module[MAXPATHLEN], desc[MAXPATHLEN];
char desc_str[BUFSIZ];
if (!RunningAsInit && !Fake) {
/* It's not my job... */
return;
}
dirp = opendir(MODULESDIR);
if (dirp) {
while ((dp = readdir(dirp))) {
if (dp->d_namlen < (sizeof(".ko") - 1)) continue;
if (strcmp(dp->d_name + dp->d_namlen - (sizeof(".ko") - 1), ".ko") == 0) {
strcpy(module, MODULESDIR);
strcat(module, "/");
strcat(module, dp->d_name);
strcpy(desc, module);
len = strlen(desc);
strcpy(desc + (len - (sizeof(".ko") - 1)), ".dsc");
fd = open(module, O_RDONLY);
if (fd < 0) continue;
close(fd);
fd = open(desc, O_RDONLY);
if (fd < 0) {
desc_str[0] = 0;
}
else {
len = read(fd, desc_str, BUFSIZ);
close(fd);
if (len < BUFSIZ) desc_str[len] = 0;
}
if (desc_str[0])
msgDebug("Loading module %s (%s)\n", dp->d_name, desc_str);
else
msgDebug("Loading module %s\n", dp->d_name);
if (kldload(module) < 0) {
if (desc_str[0])
msgConfirm("Loading module %s failed\n%s", dp->d_name, desc_str);
else
msgConfirm("Loading module %s failed", dp->d_name);
}
}
}
closedir(dirp);
}
}

View File

@ -670,6 +670,9 @@ extern WINDOW *savescr(void);
extern void restorescr(WINDOW *w);
extern char *sstrncpy(char *dst, const char *src, int size);
/* modules.c */
extern void moduleInitialize(void);
/* mouse.c */
extern int mousedTest(dialogMenuItem *self);
extern int mousedDisable(dialogMenuItem *self);

View File

@ -12,8 +12,8 @@ CLEANFILES+= keymap.tmp keymap.h
SRCS= anonFTP.c cdrom.c command.c config.c devices.c dhcp.c kget.c \
disks.c dispatch.c dist.c dmenu.c doc.c dos.c floppy.c \
ftp.c globals.c http.c index.c install.c installUpgrade.c keymap.c \
label.c lndir.c main.c makedevs.c media.c menus.c misc.c mouse.c \
msg.c network.c nfs.c options.c package.c pccard.c \
label.c lndir.c main.c makedevs.c media.c menus.c misc.c modules.c \
mouse.c msg.c network.c nfs.c options.c package.c pccard.c \
system.c tape.c tcpip.c termcap.c ufs.c usb.c user.c variable.c \
wizard.c keymap.h

View File

@ -101,6 +101,9 @@ main(int argc, char **argv)
if (DebugFD)
dup2(DebugFD, 2);
/* Initialize driver modules */
moduleInitialize();
/* Initialize PC-card */
pccardInitialize();

View File

@ -670,6 +670,9 @@ extern WINDOW *savescr(void);
extern void restorescr(WINDOW *w);
extern char *sstrncpy(char *dst, const char *src, int size);
/* modules.c */
extern void moduleInitialize(void);
/* mouse.c */
extern int mousedTest(dialogMenuItem *self);
extern int mousedDisable(dialogMenuItem *self);

View File

@ -12,8 +12,8 @@ CLEANFILES+= keymap.tmp keymap.h
SRCS= anonFTP.c cdrom.c command.c config.c devices.c dhcp.c kget.c \
disks.c dispatch.c dist.c dmenu.c doc.c dos.c floppy.c \
ftp.c globals.c http.c index.c install.c installUpgrade.c keymap.c \
label.c lndir.c main.c makedevs.c media.c menus.c misc.c mouse.c \
msg.c network.c nfs.c options.c package.c pccard.c \
label.c lndir.c main.c makedevs.c media.c menus.c misc.c modules.c \
mouse.c msg.c network.c nfs.c options.c package.c pccard.c \
system.c tape.c tcpip.c termcap.c ufs.c usb.c user.c variable.c \
wizard.c keymap.h

View File

@ -101,6 +101,9 @@ main(int argc, char **argv)
if (DebugFD)
dup2(DebugFD, 2);
/* Initialize driver modules */
moduleInitialize();
/* Initialize PC-card */
pccardInitialize();

View File

@ -0,0 +1,91 @@
/*-
* 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$
*/
#include "sysinstall.h"
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/linker.h>
#include <fcntl.h>
#include <dirent.h>
#define MODULESDIR "/stand/modules"
void
moduleInitialize(void)
{
int fd, len;
DIR *dirp;
struct dirent *dp;
char module[MAXPATHLEN], desc[MAXPATHLEN];
char desc_str[BUFSIZ];
if (!RunningAsInit && !Fake) {
/* It's not my job... */
return;
}
dirp = opendir(MODULESDIR);
if (dirp) {
while ((dp = readdir(dirp))) {
if (dp->d_namlen < (sizeof(".ko") - 1)) continue;
if (strcmp(dp->d_name + dp->d_namlen - (sizeof(".ko") - 1), ".ko") == 0) {
strcpy(module, MODULESDIR);
strcat(module, "/");
strcat(module, dp->d_name);
strcpy(desc, module);
len = strlen(desc);
strcpy(desc + (len - (sizeof(".ko") - 1)), ".dsc");
fd = open(module, O_RDONLY);
if (fd < 0) continue;
close(fd);
fd = open(desc, O_RDONLY);
if (fd < 0) {
desc_str[0] = 0;
}
else {
len = read(fd, desc_str, BUFSIZ);
close(fd);
if (len < BUFSIZ) desc_str[len] = 0;
}
if (desc_str[0])
msgDebug("Loading module %s (%s)\n", dp->d_name, desc_str);
else
msgDebug("Loading module %s\n", dp->d_name);
if (kldload(module) < 0) {
if (desc_str[0])
msgConfirm("Loading module %s failed\n%s", dp->d_name, desc_str);
else
msgConfirm("Loading module %s failed", dp->d_name);
}
}
}
closedir(dirp);
}
}

View File

@ -670,6 +670,9 @@ extern WINDOW *savescr(void);
extern void restorescr(WINDOW *w);
extern char *sstrncpy(char *dst, const char *src, int size);
/* modules.c */
extern void moduleInitialize(void);
/* mouse.c */
extern int mousedTest(dialogMenuItem *self);
extern int mousedDisable(dialogMenuItem *self);