Return to BSD News archive
Newsgroups: comp.unix.bsd
Path: sserve!manuel!munnari.oz.au!spool.mu.edu!darwin.sura.net!convex!bcm!rice!news.Rice.edu!rich
From: rich@Rice.edu (Richard Murphey)
Subject: Bare minimum steps for recompiling the 386BSD kernel for XFree86
Message-ID: <RICH.92Oct3175851@kappa.Rice.edu>
Sender: news@rice.edu (News)
Reply-To: Rich@rice.edu
Organization: Department of Electrical and Computer Engineering, Rice
University
Date: Sat, 3 Oct 1992 23:58:51 GMT
Lines: 272
Here is a step-by-step example of the bare minimum needed to configure
a 386bsd kernel with XFree86 support. If you plan to go any farther,
take a look at Terry Lambert's patch kit instead. Terry's kit
includes all of the patches used here. For more info on configuring
kernels, look at chapter 2 of the system maintainers manual
(in /usr/othersrc/share/doc/smm/02.config).
Create a copy of the /sys/compile/GENERICISA directory where the
kernel with be built.
cd /sys/compile
mkdir XGENERICISA
cd XGENERICISA
cp will complain about 'machine'. Recreate it using ln:
ln -s ../../i386/include machine
Next copy over the files that need to be modified.
cp /usr/src/sys.386bsd/i386/isa/com.c .
cp /usr/src/sys.386bsd/i386/i386/cons.c .
cp /usr/src/sys.386bsd/kern/kern_execve.c .
cp /usr/src/sys.386bsd/i386/i386/locore.s .
cp /usr/src/sys.386bsd/i386/i386/machdep.c .
cp /usr/src/sys.386bsd/i386/isa/pccons.c .
Patches for each of these files is included with the binary
distribution for XFree86 1.1. If XFree86 has already been installed
in /usr/X386 then they should be in /usr/X386/lib/X11/etc/386bsd.patch.
Extract the patches.
sh /usr/X386/lib/X11/etc/386bsd.patch
This will create the file README and files *.diff, one for each
source file that is modified. README describes the patches.
Patch each of the source files:
patch -p <com.diff
patch -p <cons.diff
patch -p <kern_execve.diff
patch -p <locore.diff
patch -p <machdep.diff
patch -p <pccons.diff
Skip init.diff. It's a patch for the init program, not the kernel,
and is handled later. Cut out the patch below for the makefile and
apply it. It changes the Makefile so that the modified files are
compiled in rather than the distribution files. It also includes
Chris Demetriou's fixes for the order of loading and creating vers.o.
make depend
make
Then install the new kernel:
mv /386bsd /386bsd.alt
cp 386bsd /386bsd
/sbin/init also needs to be patched:
cd /usr/src/sbin/init
patch -p </sys/compile/XGENERICISA/init.diff
make
mv /sbin/init /sbin/init~
make install
Assuming you have already run /usr/X386/lib/X11/etc/x386install. You
should already have created /dev/vga and changed `console' to `vga' in
/etc/ttys so that the X server will interact properly with the console
login session.
/usr/X386/lib/X11/etc/README and README.386BSD have more details
and pointers to information on configuring and installing XFree86.
Rich
----------------------------------------------------------------
*** Makefile.dist Tue Aug 11 15:15:48 1992
--- Makefile Sat Oct 3 15:42:41 1992
***************
*** 1,4 ****
! IDENT=-DGENERICISA -Di386 -DTCP_COMPAT_42 -DCOMPAT_43 -DNFS -DISOFS -DINET
PARAM=-DTIMEZONE=480 -DDST=1 -DMAXUSERS=10
# Copyright 1990 W. Jolitz
# @(#)Makefile.i386 7.1 5/10/91
--- 1,4 ----
! IDENT=-DXGENERICISA -Di386 -DTCP_COMPAT_42 -DCOMPAT_43 -DNFS -DISOFS -DINET -DXSERVER -DUCONSOLE
PARAM=-DTIMEZONE=480 -DDST=1 -DMAXUSERS=10
# Copyright 1990 W. Jolitz
# @(#)Makefile.i386 7.1 5/10/91
***************
*** 22,34 ****
#
TOUCH= touch -f -c
LD= /usr/bin/ld
! CC= cc
CPP= cpp
S= ../..
I386= ../../i386
! INCLUDES= -I. -I$S -I$S/sys
COPTS= ${INCLUDES} ${IDENT} -DKERNEL -Di386 -DNPX
ASFLAGS=
CFLAGS= -O ${COPTS}
--- 22,34 ----
#
TOUCH= touch -f -c
LD= /usr/bin/ld
! CC= /bin/cc
CPP= cpp
S= ../..
I386= ../../i386
! INCLUDES= -I. -I$S -I$S/sys -I$S/i386/i386
COPTS= ${INCLUDES} ${IDENT} -DKERNEL -Di386 -DNPX
ASFLAGS=
CFLAGS= -O ${COPTS}
***************
*** 37,47 ****
NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
DRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
DRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
! SYSTEM_OBJS=locore.o ${OBJS} param.o ioconf.o conf.o vers.o
! SYSTEM_DEP=Makefile symbols.sort ${SYSTEM_OBJS}
! SYSTEM_LD_HEAD= @echo loading $@; rm -f $@ ; /sys/conf/newvers.sh ; cc -c vers.c
! SYSTEM_LD= @${LD} -z -T FE000000 -o $@ -X ${SYSTEM_OBJS}
! SYSTEM_LD_TAIL= @echo rearranging symbols; cp $@ orig.$@ ;symorder -t symbols.sort $@; size $@; chmod 755 $@
OBJS=init_main.o init_sysent.o kern_acct.o kern_clock.o kern_descrip.o \
kern_execve.o kern_exit.o kern_fork.o kern_kinfo.o kern_ktrace.o \
--- 37,47 ----
NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
DRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
DRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
! SYSTEM_OBJS=locore.o ${OBJS} param.o ioconf.o conf.o
! SYSTEM_DEP=Makefile newvers symbols.sort ${SYSTEM_OBJS}
! SYSTEM_LD_HEAD= @echo loading $@; rm -f $@
! SYSTEM_LD= @${LD} -z -T FE000000 -o $@ -X vers.o ${SYSTEM_OBJS}
! SYSTEM_LD_TAIL= @echo rearranging symbols; symorder symbols.sort $@; size $@; chmod 755 $@
OBJS=init_main.o init_sysent.o kern_acct.o kern_clock.o kern_descrip.o \
kern_execve.o kern_exit.o kern_fork.o kern_kinfo.o kern_ktrace.o \
***************
*** 114,127 ****
$S/isofs/isofs_lookup.c $S/isofs/isofs_node.c \
$S/isofs/isofs_util.c $S/isofs/isofs_vfsops.c \
$S/isofs/isofs_vnops.c $S/i386/i386/autoconf.c \
! $S/i386/i386/cons.c $S/i386/isa/pccons.c $S/i386/isa/clock.c \
! $S/i386/i386/in_cksum.c $S/i386/i386/machdep.c \
$S/i386/i386/math_emulate.c $S/i386/i386/mem.c \
$S/i386/i386/pmap.c $S/i386/i386/sys_machdep.c \
$S/i386/i386/trap.c $S/i386/i386/vm_machdep.c \
$S/i386/isa/if_ne.c $S/i386/isa/if_we.c $S/i386/isa/if_ec.c \
$S/i386/isa/if_is.c $S/i386/isa/wd.c $S/i386/isa/fd.c \
! $S/i386/isa/wt.c $S/i386/isa/isa.c $S/i386/isa/com.c \
$S/i386/isa/npx.c $S/i386/isa/as.c swap386bsd.c
386bsd: ${SYSTEM_DEP} swap386bsd.o
--- 114,127 ----
$S/isofs/isofs_lookup.c $S/isofs/isofs_node.c \
$S/isofs/isofs_util.c $S/isofs/isofs_vfsops.c \
$S/isofs/isofs_vnops.c $S/i386/i386/autoconf.c \
! ./cons.c ./pccons.c $S/i386/isa/clock.c \
! $S/i386/i386/in_cksum.c ./machdep.c \
$S/i386/i386/math_emulate.c $S/i386/i386/mem.c \
$S/i386/i386/pmap.c $S/i386/i386/sys_machdep.c \
$S/i386/i386/trap.c $S/i386/i386/vm_machdep.c \
$S/i386/isa/if_ne.c $S/i386/isa/if_we.c $S/i386/isa/if_ec.c \
$S/i386/isa/if_is.c $S/i386/isa/wd.c $S/i386/isa/fd.c \
! $S/i386/isa/wt.c $S/i386/isa/isa.c ./com.c \
$S/i386/isa/npx.c $S/i386/isa/as.c swap386bsd.c
386bsd: ${SYSTEM_DEP} swap386bsd.o
***************
*** 148,157 ****
grep -v '^#' ${I386}/i386/symbols.raw \
| sed 's/^ //' | sort -u > symbols.sort
! locore.o: assym.s ${I386}/i386/locore.s machine/trap.h machine/psl.h \
machine/pte.h vector.s ${I386}/isa/icu.s ${I386}/isa/isa.h \
${I386}/isa/icu.h
! ${CPP} -I. -DLOCORE ${COPTS} ${I386}/i386/locore.s | \
${AS} ${ASFLAGS} -o locore.o
# the following is necessary because autoconf.o depends on #if GENERIC
--- 148,157 ----
grep -v '^#' ${I386}/i386/symbols.raw \
| sed 's/^ //' | sort -u > symbols.sort
! locore.o: assym.s ./locore.s machine/trap.h machine/psl.h \
machine/pte.h vector.s ${I386}/isa/icu.s ${I386}/isa/isa.h \
${I386}/isa/icu.h
! ${CPP} -I. -DLOCORE ${COPTS} ./locore.s | \
${AS} ${ASFLAGS} -o locore.o
# the following is necessary because autoconf.o depends on #if GENERIC
***************
*** 207,212 ****
--- 207,216 ----
param.o: param.c Makefile
${CC} -c ${CFLAGS} ${PARAM} param.c
+ newvers:
+ sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT}
+ cc ${CFLAGS} -c vers.c
+
init_main.o: $S/kern/init_main.c
${NORMAL_C}
***************
*** 564,573 ****
autoconf.o: $S/i386/i386/autoconf.c
${DRIVER_C}
! cons.o: $S/i386/i386/cons.c
${NORMAL_C}
! pccons.o: $S/i386/isa/pccons.c
${DRIVER_C}
clock.o: $S/i386/isa/clock.c
--- 568,577 ----
autoconf.o: $S/i386/i386/autoconf.c
${DRIVER_C}
! cons.o: ./cons.c
${NORMAL_C}
! pccons.o: ./pccons.c
${DRIVER_C}
clock.o: $S/i386/isa/clock.c
***************
*** 576,582 ****
in_cksum.o: $S/i386/i386/in_cksum.c
${NORMAL_C}
! machdep.o: $S/i386/i386/machdep.c
${NORMAL_C_C}
math_emulate.o: $S/i386/i386/math_emulate.c
--- 580,586 ----
in_cksum.o: $S/i386/i386/in_cksum.c
${NORMAL_C}
! machdep.o: ./machdep.c
${NORMAL_C_C}
math_emulate.o: $S/i386/i386/math_emulate.c
***************
*** 621,627 ****
isa.o: $S/i386/isa/isa.c
${DRIVER_C}
! com.o: $S/i386/isa/com.c
${DRIVER_C}
npx.o: $S/i386/isa/npx.c
--- 625,631 ----
isa.o: $S/i386/isa/isa.c
${DRIVER_C}
! com.o: ./com.c
${DRIVER_C}
npx.o: $S/i386/isa/npx.c