Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Jul 1997 14:49:38 -0400
From:      Jim Carroll <jim@carroll.com>
To:        freebsd-hackers@freebsd.org
Subject:   make boot.flp FIXED!
Message-ID:  <Pine.BSD.3.91.970728142550.17581F-100000@apollo.carroll.com>

next in thread | raw e-mail | index | archive | help

 Several weeks ago I embarked on what I thought was a simple task; to make a
 boot floppy, with a custom version of the operating system. It  turns  out,
 this is not so simple.

 I  believe  I  now have a working Makefile that anyone can use to re-create
 either the standard boot OS, or to create their own (I needed a version  of
 the OS with the Iomega parallel Zip drive at boot time).

 There  were  basically  4 changes that needed to be made. I have included a
 description of the changes here, and a Makefile diff output below.
 
 1.  changed  /R  to  ${RR} macro. This was a consistancy change (consistant
 with the ${RD} macro), to permit sending the output somewhere other than to
 the root of the filesystem. Without  changing  this  to  a  macro,  the  /R
 directory (which is quite large upon completion) would go to /.

 2. change doMFSKERN target to work the the KERNELS? macro defined at top of
 makefile.  By  forcing  doMFSKERN  to use the KERNELS macro, you can define
 which custom OS to build.
 
 3. change  release.8  to  get  device  definitions  from  /dev  instead  of
 ${RD}/trees/bin/dev.  I spent alot of time agonizing over this one. Somehow
 release.8 expects the target directory ${RD}/trees.bin/dev to  get  created
 with  devices from /dev, but I could not figure out where this was supposed
 to happen. In any event, since this directory is built from /dev, I saw  no
 harm in going to the "horeses mouth".
 
 4. added custom.floppy target to handle the details of building a floppy OS
 from  scratch  assuming  no  other  make  tages  from  the /usr/src/release
 makefile were first built.
 
 
 To use the custom.floppy (which defaults to GENERIC), you must first:
 
 	cd /usr/src
 	make world

 	(go away for about 12-hours)
  
 After that:
 
 	cd /usr/src/release
 	vi Makefile

  		Be sure to set: 
 			BUILDNAME, CHROOTDIR, RELEASETAG, RR
 
 		Here are my settings (to create 2.2.1 generic release)
			BUILDNAME=2.2-RELEASE
			CHROOTDIR=/var/junk/release
			RELEASETAG=RELENG_2_2_1_RELEASE
			RR=/var/R
 
 	make custom.floppy

 On a 486/133-16MB RAM, the make takes about 2 hours.

 
 I have included the output from a diff of the new Makefile from the
 distribution Makefile:
 
 diff -e Makefile.old Makefile.new
 
 Yeilds:
 
56,58c56,59
< RD=			/R/stage
< FD=			/R/ftp
< CD=			/R/cdrom
---
> RR=			/var/R
> RD=			${RR}/stage
> FD=			${RR}/ftp
> CD=			${RR}/cdrom
143c144
< 	echo "export RELEASEDIR=/R"		>> ${CHROOTDIR}/mk
---
> 	echo "export RELEASEDIR=${RR}"	>> ${CHROOTDIR}/mk
178c179,196
< # Clean out /R and make the directory structure.
---
> custom.floppy:
> .if !defined(CHROOTDIR) || !defined(BUILDNAME)
> 	@echo "To make a release you must set CHROOTDIR and BUILDNAME" && false
> .endif
> .if exists(${CHROOTDIR})
> 	chflags -R noschg ${CHROOTDIR}/.
> 	-rm -rf ${CHROOTDIR}
> .endif
> 	-mkdir -p ${CHROOTDIR}
> 	cd ${.CURDIR}/../etc && ${MAKE} distrib-dirs DESTDIR=${CHROOTDIR}
> 	cd ${.CURDIR}/../etc && ${MAKE} distribution DESTDIR=${CHROOTDIR}
> 	cd ${.CURDIR}/.. && ${MAKE} install DESTDIR=${CHROOTDIR} NOMAN=1
> 	${MAKE} release.1
> 	${MAKE} release.2
> 	${MAKE} boot.flp
> 
> 
> # Clean out ${RR} and make the directory structure.
180,187c198,205
< 	-mkdir /R
< 	chflags -R noschg /R/.
< 	rm -rf /R/*
< 	mkdir ${RD}
< 	mkdir ${RD}/floppies
< 	mkdir ${RD}/trees
< 	mkdir ${RD}/dists
< 	mkdir ${RD}/kernels
---
> 	-mkdir ${RR}
> 	chflags -R noschg ${RR}/.
> 	rm -rf ${RR}/*
> 	mkdir -p ${RD}
> 	mkdir -p ${RD}/floppies
> 	mkdir -p ${RD}/trees
> 	mkdir -p ${RD}/dists
> 	mkdir -p ${RD}/kernels
401c419
< 	( cd ${RD}/trees/bin/dev && \
---
> 	( cd /dev && \
627,628c645,646
< 		-e 's/GENERIC/BOOTMFS/g' \
< 		-e '/maxusers/s/10/4/' < GENERIC > BOOTMFS && \
---
> 		-e 's/${KERNELS}/BOOTMFS/g' \
> 		-e '/maxusers/s/10/4/' < ${KERNELS} > BOOTMFS && \


 There  was  one  other  change  necessary  to  make  the  targets  compile.
 sysinstall needed to libs not listed in the boot floppy crunch.conf file.
 
 Add these to libs to the 'libs' statement in the file:
 
 	/usr/src/release/floppies/boot/crunch
 
 	-lcrypt -lftpio


 I believe this is the core of the changes I had to make to get this all  to
 work. If anyone needs help, please feel free to email me.
  
---
Jim C., President       | C A R R O L L - N E T, Inc.
201-488-1332 voice      | New Jersey's Premier Internet Service Provider
201-487-5717 dialup     |
http://www.carroll.com  | Ask about our Business Messaging Services



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSD.3.91.970728142550.17581F-100000>