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:
parent
0ba3999559
commit
b98c5f70ff
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=68048
@ -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}
|
||||
|
@ -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}
|
||||
|
||||
|
78
release/scripts/driver-copy2.pl
Normal file
78
release/scripts/driver-copy2.pl
Normal 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;
|
||||
}
|
||||
}
|
58
release/scripts/driver-remove.pl
Normal file
58
release/scripts/driver-remove.pl
Normal 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;
|
@ -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
|
||||
|
||||
|
@ -101,6 +101,9 @@ main(int argc, char **argv)
|
||||
if (DebugFD)
|
||||
dup2(DebugFD, 2);
|
||||
|
||||
/* Initialize driver modules */
|
||||
moduleInitialize();
|
||||
|
||||
/* Initialize PC-card */
|
||||
pccardInitialize();
|
||||
|
||||
|
91
release/sysinstall/modules.c
Normal file
91
release/sysinstall/modules.c
Normal 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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
|
@ -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
|
||||
|
||||
|
@ -101,6 +101,9 @@ main(int argc, char **argv)
|
||||
if (DebugFD)
|
||||
dup2(DebugFD, 2);
|
||||
|
||||
/* Initialize driver modules */
|
||||
moduleInitialize();
|
||||
|
||||
/* Initialize PC-card */
|
||||
pccardInitialize();
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
||||
|
@ -101,6 +101,9 @@ main(int argc, char **argv)
|
||||
if (DebugFD)
|
||||
dup2(DebugFD, 2);
|
||||
|
||||
/* Initialize driver modules */
|
||||
moduleInitialize();
|
||||
|
||||
/* Initialize PC-card */
|
||||
pccardInitialize();
|
||||
|
||||
|
91
usr.sbin/sysinstall/modules.c
Normal file
91
usr.sbin/sysinstall/modules.c
Normal 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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user