Date: Sun, 11 Jan 1998 16:48:09 +1100 (EST) From: John Birrell <jb@freebsd1.cimlogic.com.au> To: alpha@FreeBSD.ORG Subject: Bootstrapping FreeBSD/Alpha Message-ID: <199801110548.QAA24424@freebsd1.cimlogic.com.au>
index | next in thread | raw e-mail
G'day,
I've committed a bunch of changes that allow FreeBSD/Alpha to be
bootstrapped from an installed NetBSD/Alpha 1.3 system. The bootstrap
is not complete (after 2.5 days), but it is in a state where people
who want to play can do so using source that they are familiar with.
The bootstrap is not intended to clobber anything on the system you
are using. It uses a modified makefile based on the -current make
world, but unlike that makefile, there is no final install (yet).
The bootstrap will abort long before that. 8-).
The philosophy behind this bootstrap is that you start with a stock
NetBSD/Alpha installation and using the FreeBSD bootstrap procedure
you evolve into FreeBSD/Alpha. The system will remain a hybrid for
some time due to the differences in the kernel interface. The goal
is to be able to run as much of the FreeBSD user-space code as
possible and then (hopefully) people will step up to the plate to
take the system the extra mile.
Here's a summary of what the bootstrap does:
1. Deletes a previous build if one exists. You always bootstrap
from scratch.
2. Installs FreeBSD's mkdep in the temporary build tree because
the one in NetBSD isn't good enough.
3. Runs NetBSD's make using FreeBSD's .mk and makefiles to build
a new version of make from FreeBSD sources using NetBSD headers,
installed libraries and tools.
4. Builds a FreeBSD version of find which has the -L argument that
NetBSD doesn't have. This version of find doesn't support the
-fstype argument because NetBSD's libc doesn't support getvfsbyname().
5. Runs mtree like a normal build does. At this point you'll find
that you need to add a few users and groups because NetBSD doesn't
support as many as FreeBSD does.
6. Builds the obj tree like a normal build does.
7. Re-makes make, this time using makefiles parsed by the FreeBSD
make (just in case the NetBSD one came up with a different set
of build commands).
8. Builds install from the FreeBSD source because the NetBSD one
doesn't know -C.
9. Builds lex like the normal build does.
10. Creates links to the GNU programs that haven't been ported.
11. Builds gperf, tsort, bison, gcc, cpp, g++ etc which are
needed to build the libraries.
12. Installs the FreeBSD header files in the temporary build tree.
Up to this point, all the builds have used the NetBSD make until the
FreeBSD one was built. The FreeBSD source files have been pre-processed
against NetBSD header files and the programs linked against NetBSD
libraries. From here on, the build continues to use FreeBSD programs
if they have been built and NetBSD ones otherwise. The build will
only look at FreeBSD header files from this point.
13. Builds a number of the most important libraries that are needed
to link the remainder of the build tools. [You can expect the
bootstrap build to come to a grinding halt somewhere in here
when it tries to link against NetBSD's libc and finds that the
locale functions referenced by ctype.h are not there. I've
started porting libc to resolve this.]
14. Builds the rest of the build tools.
15. Makes dependencies on everything.
16. Builds everythings.
[And then you'd install to clobber the existing system if you got that far].
Before you use the bootstrap build, just give a thought to what you'd
do if it clobbers something it shouldn't. As always, you do this at
your own risk. 8-)
Here's what I do:
1. Mount /usr/src from another (FreeBSD) machine.
2. Create /usr/obj with enough disk space to build.
3. cd /usr/src
make -m /usr/src/share/mk buildworld
4. Sit back and wait for it to crash. If it stops before you get to
the libs, I've probably missed committing something.
5. When it does stop, all of the things you've built will be in
the /usr/obj/usr/src/tmp tree. They should run!
Let me (and this list) know how you get on. And if anyone else wants
to do part of this work, please do.
Regards,
--
John Birrell - jb@cimlogic.com.au; jb@netbsd.org; jb@freebsd.org
CIMlogic Pty Ltd, GPO Box 117A, Melbourne Vic 3001, Australia +61 418 353 137
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199801110548.QAA24424>
