129 lines
4.6 KiB
Text
129 lines
4.6 KiB
Text
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
|
|
<!ENTITY base CDATA "..">
|
|
<!ENTITY date "$Date: 1998-07-14 18:54:32 $">
|
|
<!ENTITY title "Bootstrapping FreeBSD/Alpha">
|
|
<!ENTITY email 'freebsd-alpha'>
|
|
<!ENTITY % includes SYSTEM "../includes.sgml"> %includes;
|
|
]>
|
|
<!-- $Id: bootstrapping.sgml,v 1.1 1998-07-14 18:54:32 wosch Exp $ -->
|
|
|
|
<html>
|
|
&header;
|
|
|
|
<pre>
|
|
From: John Birrell <jb@freebsd1.cimlogic.com.au>
|
|
Message-Id: <199801110548.QAA24424@freebsd1.cimlogic.com.au>
|
|
Subject: Bootstrapping FreeBSD/Alpha
|
|
To: alpha@FreeBSD.ORG
|
|
Date: Sun, 11 Jan 1998 16:48:09 +1100 (EST)
|
|
|
|
|
|
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
|
|
</pre>
|
|
|
|
&footer;
|
|
</body>
|
|
</html>
|
|
|