aboutsummaryrefslogtreecommitdiffstats
path: root/chapter02/creatingpartition.xml
blob: 3f165980f0d72640804ed90ace69e5a24260b72d (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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<?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="ch-partitioning-creatingpartition">
  <?dbhtml filename="creatingpartition.html"?>

  <title>Creating a New Partition</title>

  <para>Like most other operating systems, LFS is usually installed on a
  dedicated partition. The recommended approach to building an LFS system
  is to use an available empty partition or, if you have enough unpartitioned
  space, to create one.</para>

  <para>A minimal system requires a partition of around 10 gigabytes (GB).
  This is enough to store all the source tarballs and compile the packages.
  However, if the LFS system is intended to be the primary Linux system,
  additional software will probably be installed which will require additional
  space. A 30 GB partition is a reasonable size to provide for growth.  The LFS
  system itself will not take up this much room.  A large portion of this
  requirement is to provide sufficient free temporary storage as well as
  for adding additional capabilities after LFS is complete. Additionally, compiling
  packages can require a lot of disk space which will be reclaimed after the
  package is installed.</para>

  <para>Because there is not always enough Random Access Memory (RAM) available
  for compilation processes, it is a good idea to use a small disk partition as
  <systemitem class="filesystem">swap</systemitem> space. This is used by the
  kernel to store seldom-used data and leave more memory available for active
  processes. The <systemitem class="filesystem">swap</systemitem> partition for
  an LFS system can be the same as the one used by the host system, in which
  case it is not necessary to create another one.</para>

  <para>Start a disk partitioning program such as <command>cfdisk</command>
  or <command>fdisk</command> with a command line option naming the hard
  disk on which the new partition will be created&mdash;for example
  <filename class="devicefile">/dev/sda</filename> for the primary
  disk drive. Create a Linux native partition and a
  <systemitem class="filesystem">swap</systemitem> partition, if needed. Please
  refer to <filename>cfdisk(8)</filename> or <filename>fdisk(8)</filename> if
  you do not yet know how to use the programs.</para>

  <note><para>For experienced users, other partitioning schemes are possible.
  The new LFS system can be on a software <ulink
  url="&blfs-book;postlfs/raid.html">RAID</ulink> array or an <ulink
  url="&blfs-book;postlfs/aboutlvm.html">LVM</ulink> logical volume.
  However, some of these options require an <ulink
  url="&blfs-book;postlfs/initramfs.html">initramfs</ulink>, which is
  an advanced topic.  These partitioning methodologies are not recommended for
  first time LFS users.</para></note>

  <para>Remember the designation of the new partition (e.g., <filename
  class="devicefile">sda5</filename>). This book will refer to this as
  the LFS partition. Also remember the designation of the <systemitem
  class="filesystem">swap</systemitem> partition. These names will be
  needed later for the <filename>/etc/fstab</filename> file.</para>

  <sect2>
  <title>Other Partition Issues</title>

  <para>Requests for advice on system partitioning are often posted on the LFS mailing
  lists. This is a highly subjective topic.  The default for most distributions
  is to use the entire drive with the exception of one small swap partition.  This
  is not optimal for LFS for several reasons.  It reduces flexibility, makes
  sharing of data across multiple distributions or LFS builds more difficult, makes
  backups more time consuming, and can waste disk space through inefficient
  allocation of file system structures.</para>

    <sect3>
    <title>The Root Partition</title>

    <para>A root LFS partition (not to be confused with the
    <filename class="directory">/root</filename> directory) of
    twenty gigabytes is a good compromise for most systems.  It provides enough
    space to build LFS and most of BLFS, but is small enough so that multiple
    partitions can be easily created for experimentation.</para> </sect3>

    <sect3>
    <title>The Swap Partition</title>

    <para>Most distributions automatically create a swap partition.  Generally
    the recommended size of the swap partition is about twice the amount of
    physical RAM, however this is rarely needed.  If disk space is limited,
    hold the swap partition to two gigabytes and monitor the amount of disk
    swapping.</para>

    <para>If you want to use the hibernation feature (suspend-to-disk) of Linux,
    it writes out the contents of RAM to the swap partition before turning off
    the machine. In this case the size of the swap partition should be at
    least as large as the system's installed RAM.</para>

    <para>Swapping is never good. For mechanical hard drives you can generally
    tell if a system is swapping by just listening to disk activity and
    observing how the system reacts to commands. With an SSD you will not
    be able to hear swapping, but you can tell how much swap space is being used
    by running the <command>top</command> or <command>free</command> programs.  Use of
    an SSD for a swap partition should be avoided if possible.  The first
    reaction to swapping should be to check for an unreasonable command such as
    trying to edit a five gigabyte file. If swapping becomes a normal
    occurrence, the best solution is to purchase more RAM for your
    system.</para> </sect3>

    <sect3>
    <title>Convenience Partitions</title>

    <para>There are several other partitions that are not required, but should
    be considered when designing a disk layout.  The following list
    is not comprehensive, but is meant as a guide.</para>

    <itemizedlist>

      <listitem><para>/boot &ndash; Highly recommended.  Use this partition to
      store kernels and other booting information.  To minimize potential boot
      problems with larger disks, make this the first physical partition on
      your first disk drive.  A partition size of 200 megabytes is
      adequate.</para></listitem>

      <listitem><para>/boot/efi &ndash; The EFI System Partition, which is
      needed for booting the system with UEFI.  Read
      <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>
      for details.</para></listitem>

      <listitem><para>/home &ndash; Highly recommended.  Share your home
      directory and user customization across multiple distributions or LFS
      builds.  The size is generally fairly large and depends on available disk
      space.</para></listitem>

      <listitem><para>/usr &ndash; In LFS,
      <filename class="directory">/bin</filename>,
      <filename class="directory">/lib</filename>, and
      <filename class="directory">/sbin</filename> are symlinks to their
      counterparts in <filename class="directory">/usr</filename>.
      So <filename class="directory">/usr</filename> contains all the binaries
      needed for the system to run.  For LFS a separate partition for
      <filename class="directory">/usr</filename> is normally not needed.
      If you create it anyway, you should make a partition large enough to
      fit all the programs and libraries in the system. The root partition can be
      very small (maybe just one gigabyte) in this configuration, so it's
      suitable for a thin client or diskless workstation (where
      <filename class="directory">/usr</filename> is mounted from a remote
      server). However, you should be aware that an initramfs (not covered by
      LFS) will be needed to boot a system with a separate
      <filename class="directory">/usr</filename> partition.</para></listitem>

      <listitem><para>/opt &ndash; This directory is most useful for
      BLFS, where multiple large packages like KDE or Texlive can
      be installed without embedding the files in the /usr hierarchy.  If
      used, 5 to 10 gigabytes is generally adequate.</para>
      </listitem>

      <listitem revision='sysv'><para>/tmp &ndash; A separate /tmp partition
      is rare, but useful if configuring a thin client.  This partition, if
      used, will usually not need to exceed a couple of
      gigabytes.  If you have enough RAM, you can mount a
      <systemitem class='filesystem'>tmpfs</systemitem> on /tmp to make
      access to temporary files faster.</para></listitem>

      <listitem revision='systemd'><para>/tmp &ndash; By default, systemd
      mounts a <systemitem class='filesystem'>tmpfs</systemitem> here.
      If you want to override that behavior, follow
      <xref linkend='systemd-no-tmpfs'/> when configuring the LFS
      system.</para></listitem>

      <listitem><para>/usr/src &ndash; This partition is very
      useful for providing a location to store BLFS source files and
      share them across LFS builds. It can also be used as a location
      for building BLFS packages. A reasonably large partition of 30-50
      gigabytes provides plenty of room.</para></listitem>

    </itemizedlist>

    <para>Any separate partition that you want automatically mounted when the
    system starts must be specified in the <filename>/etc/fstab</filename> file.
    Details about how to specify partitions will be discussed in <xref
    linkend="ch-bootable-fstab"/>.</para>

    </sect3>
  </sect2>
</sect1>