aboutsummaryrefslogtreecommitdiffstats
path: root/prologue/architecture.xml
blob: 0a9c0759950fa742f943ac301a73aec05285faa0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="pre-architecture">
  <?dbhtml filename="architecture.html"?>

  <title>LFS Target Architectures</title>

<para>The primary target architecture of LFS is the 32-bit Intel CPU.  If you
have not built an LFS system before, you should probably start with that
target.  The 32-bit architecture is the most widely supported Linux system and
is most compatible with both open source and proprietary software.</para>

<para>On the other hand, the instructions in this book are known to work, with
some modifications, with both Power PC and 64-bit AMD/Intel CPUs.  To build a
system that utilizes these CPUs, the main prerequisite in addition to those on
the next few pages, is an existing system such as an earlier LFS system,
Ubuntu, Red Hat/Fedora, SuSE, or other distribution that targets the system
that you have.  Also note that a 32-bit system can be installed and used as a
host system on a 64-bit AMD/Intel system.</para>

<para>If you decide to target a 64-bit AMD/Intel system, LFS does have some
limitations.  First, it does not currently provide instructions for a 64-bit
boot loader.  If there is an existing boot loader, it can be used to boot to
any LFS system you build, but <xref linkend="ch-bootable-grub"/> cannot be
built on a 64-bit system.</para>

<para>Some other facts about a 64-bit systems need to be added here.  When
compared to a 32-bit system, the sizes of executable programs are slightly
larger and the execution speeds are only slightly faster.  For example, in a
test build of LFS-6.5 on a Core2Duo CPU based system, the following statistics
were measured:</para>

<screen><computeroutput>Architecture Build Time     Build Size 
32-bit       198.5 minutes  648 MB 
64-bit       190.6 minutes  709 MB</computeroutput></screen>

<para>As you can see, the 64-bit build is only 4% faster and is 9% larger than
the 32-bit build.  The gain from going to a 64-bit system is relatively
minimal. Of course, if you have more than 4GB of RAM or want to manipulate
data that exceeds 4GB, the advantages of a 64-bit system are substantial.</para>

<para>The default 64-bit build that results from LFS is considered a "pure"
64-bit system.  That is, it supports 64-bit executables only.  Building a
"multi-lib" system requires building many applications twice, once for a 32-bit
system and once for a 64-bit system.  Currently this is not directly supported
in the book, but is under consideration for a future release.  In the meantime,
you can refer to the <ulink url="http://trac.cross-lfs.org/">Cross Linux From
Scratch</ulink> project for this advanced topic.</para>

<para>There is one last comment about 64-bit systems.  There are some packages
that cannot currently be built in a "pure" 64-bit system or require specialized
build instructions.  Generally, these packages have some embedded 32-bit
specific assembly language instructions that fail when building on a 64-bit
system.  Examples include the  <ulink
url="http://www.linuxfromscratch.org/blfs/view/cvs/">Beyond Linux From Scratch
(BLFS)</ulink> packages Zip and some Xorg drivers. Many of these problems can
be worked around, but may require some specialized procedures or
patches.</para>

</sect1>