generalinstructions: Remove a false statement about "cp -R destroys symlink"
[lfs.git] / chapter02 / creatingpartition.xml
blobf5bb244cb4a33f77631e92939dbf705dcb7a4a69
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4   <!ENTITY % general-entities SYSTEM "../general.ent">
5   %general-entities;
6 ]>
8 <sect1 id="ch-partitioning-creatingpartition">
9   <?dbhtml filename="creatingpartition.html"?>
11   <title>Creating a New Partition</title>
13   <para>Like most other operating systems, LFS is usually installed on a
14   dedicated partition. The recommended approach to building an LFS system
15   is to use an available empty partition or, if you have enough unpartitioned
16   space, to create one.</para>
18   <para>A minimal system requires a partition of around 10 gigabytes (GB).
19   This is enough to store all the source tarballs and compile the packages.
20   However, if the LFS system is intended to be the primary Linux system,
21   additional software will probably be installed which will require additional
22   space. A 30 GB partition is a reasonable size to provide for growth.  The LFS
23   system itself will not take up this much room.  A large portion of this
24   requirement is to provide sufficient free temporary storage as well as
25   for adding additional capabilities after LFS is complete. Additionally, compiling
26   packages can require a lot of disk space which will be reclaimed after the
27   package is installed.</para>
29   <para>Because there is not always enough Random Access Memory (RAM) available
30   for compilation processes, it is a good idea to use a small disk partition as
31   <systemitem class="filesystem">swap</systemitem> space. This is used by the
32   kernel to store seldom-used data and leave more memory available for active
33   processes. The <systemitem class="filesystem">swap</systemitem> partition for
34   an LFS system can be the same as the one used by the host system, in which
35   case it is not necessary to create another one.</para>
37   <para>Start a disk partitioning program such as <command>cfdisk</command>
38   or <command>fdisk</command> with a command line option naming the hard
39   disk on which the new partition will be created&mdash;for example
40   <filename class="devicefile">/dev/sda</filename> for the primary
41   disk drive. Create a Linux native partition and a
42   <systemitem class="filesystem">swap</systemitem> partition, if needed. Please
43   refer to <ulink role='man' url='&man;cfdisk.8'>cfdisk(8)</ulink> or
44   <ulink role='man' url='&man;fdisk.8'>fdisk(8)</ulink> if
45   you do not yet know how to use the programs.</para>
47   <note><para>For experienced users, other partitioning schemes are possible.
48   The new LFS system can be on a software <ulink
49   url="&blfs-book;postlfs/raid.html">RAID</ulink> array or an <ulink
50   url="&blfs-book;postlfs/aboutlvm.html">LVM</ulink> logical volume.
51   However, some of these options require an <ulink
52   url="&blfs-book;postlfs/initramfs.html">initramfs</ulink>, which is
53   an advanced topic.  These partitioning methodologies are not recommended for
54   first time LFS users.</para></note>
56   <para>Remember the designation of the new partition (e.g., <filename
57   class="devicefile">sda5</filename>). This book will refer to this as
58   the LFS partition. Also remember the designation of the <systemitem
59   class="filesystem">swap</systemitem> partition. These names will be
60   needed later for the <filename>/etc/fstab</filename> file.</para>
62   <sect2>
63   <title>Other Partition Issues</title>
65   <para>Requests for advice on system partitioning are often posted on the LFS mailing
66   lists. This is a highly subjective topic.  The default for most distributions
67   is to use the entire drive with the exception of one small swap partition.  This
68   is not optimal for LFS for several reasons.  It reduces flexibility, makes
69   sharing of data across multiple distributions or LFS builds more difficult, makes
70   backups more time consuming, and can waste disk space through inefficient
71   allocation of file system structures.</para>
73     <sect3>
74     <title>The Root Partition</title>
76     <para>A root LFS partition (not to be confused with the
77     <filename class="directory">/root</filename> directory) of
78     twenty gigabytes is a good compromise for most systems.  It provides enough
79     space to build LFS and most of BLFS, but is small enough so that multiple
80     partitions can be easily created for experimentation.</para> </sect3>
82     <sect3>
83     <title>The Swap Partition</title>
85     <para>Most distributions automatically create a swap partition.  Generally
86     the recommended size of the swap partition is about twice the amount of
87     physical RAM, however this is rarely needed.  If disk space is limited,
88     hold the swap partition to two gigabytes and monitor the amount of disk
89     swapping.</para>
91     <para>If you want to use the hibernation feature (suspend-to-disk) of Linux,
92     it writes out the contents of RAM to the swap partition before turning off
93     the machine. In this case the size of the swap partition should be at
94     least as large as the system's installed RAM.</para>
96     <para>Swapping is never good. For mechanical hard drives you can generally
97     tell if a system is swapping by just listening to disk activity and
98     observing how the system reacts to commands. With an SSD you will not
99     be able to hear swapping, but you can tell how much swap space is being used
100     by running the <command>top</command> or <command>free</command> programs.  Use of
101     an SSD for a swap partition should be avoided if possible.  The first
102     reaction to swapping should be to check for an unreasonable command such as
103     trying to edit a five gigabyte file. If swapping becomes a normal
104     occurrence, the best solution is to purchase more RAM for your
105     system.</para> </sect3>
107     <sect3>
108     <title>The Grub Bios Partition</title>
110     <para>If the <emphasis>boot disk</emphasis> has been partitioned with a
111     GUID Partition Table (GPT), then a small, typically 1 MB, partition must be
112     created if it does not already exist.  This partition is not formatted, but
113     must be available for GRUB to use during installation of the boot
114     loader. This partition will normally be labeled 'BIOS Boot' if using
115     <command>fdisk</command> or have a code of <emphasis>EF02</emphasis> if
116     using the <command>gdisk</command> command.</para>
118     <note><para>The Grub Bios partition must be on the drive that the BIOS
119     uses to boot the system.  This is not necessarily the drive that holds
120     the LFS root partition. The disks on a system may use different
121     partition table types. The necessity of the Grub Bios partition depends
122     only on the partition table type of the boot disk.</para></note>
123     </sect3>
125     <sect3>
126     <title>Convenience Partitions</title>
128     <para>There are several other partitions that are not required, but should
129     be considered when designing a disk layout.  The following list
130     is not comprehensive, but is meant as a guide.</para>
132     <itemizedlist>
134       <listitem><para>/boot &ndash; Highly recommended.  Use this partition to
135       store kernels and other booting information.  To minimize potential boot
136       problems with larger disks, make this the first physical partition on
137       your first disk drive.  A partition size of 200 megabytes is
138       adequate.</para></listitem>
140       <listitem><para>/boot/efi &ndash; The EFI System Partition, which is
141       needed for booting the system with UEFI.  Read
142       <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>
143       for details.</para></listitem>
145       <listitem><para>/home &ndash; Highly recommended.  Share your home
146       directory and user customization across multiple distributions or LFS
147       builds.  The size is generally fairly large and depends on available disk
148       space.</para></listitem>
150       <listitem><para>/usr &ndash; In LFS,
151       <filename class="directory">/bin</filename>,
152       <filename class="directory">/lib</filename>, and
153       <filename class="directory">/sbin</filename> are symlinks to their
154       counterparts in <filename class="directory">/usr</filename>.
155       So <filename class="directory">/usr</filename> contains all the binaries
156       needed for the system to run.  For LFS a separate partition for
157       <filename class="directory">/usr</filename> is normally not needed.
158       If you create it anyway, you should make a partition large enough to
159       fit all the programs and libraries in the system. The root partition can be
160       very small (maybe just one gigabyte) in this configuration, so it's
161       suitable for a thin client or diskless workstation (where
162       <filename class="directory">/usr</filename> is mounted from a remote
163       server). However, you should be aware that an initramfs (not covered by
164       LFS) will be needed to boot a system with a separate
165       <filename class="directory">/usr</filename> partition.</para></listitem>
167       <listitem><para>/opt &ndash; This directory is most useful for
168       BLFS, where multiple large packages like KDE or Texlive can
169       be installed without embedding the files in the /usr hierarchy.  If
170       used, 5 to 10 gigabytes is generally adequate.</para>
171       </listitem>
173       <listitem revision='sysv'><para>/tmp &ndash; A separate /tmp partition
174       is rare, but useful if configuring a thin client.  This partition, if
175       used, will usually not need to exceed a couple of
176       gigabytes.  If you have enough RAM, you can mount a
177       <systemitem class='filesystem'>tmpfs</systemitem> on /tmp to make
178       access to temporary files faster.</para></listitem>
180       <listitem revision='systemd'><para>/tmp &ndash; By default, systemd
181       mounts a <systemitem class='filesystem'>tmpfs</systemitem> here.
182       If you want to override that behavior, follow
183       <xref linkend='systemd-no-tmpfs'/> when configuring the LFS
184       system.</para></listitem>
186       <listitem><para>/usr/src &ndash; This partition is very
187       useful for providing a location to store BLFS source files and
188       share them across LFS builds. It can also be used as a location
189       for building BLFS packages. A reasonably large partition of 30-50
190       gigabytes provides plenty of room.</para></listitem>
192     </itemizedlist>
194     <para>Any separate partition that you want automatically mounted when the
195     system starts must be specified in the <filename>/etc/fstab</filename> file.
196     Details about how to specify partitions will be discussed in <xref
197     linkend="ch-bootable-fstab"/>.</para>
199     </sect3>
200   </sect2>
201 </sect1>