summaryrefslogtreecommitdiff
path: root/lfs-12.2-sysv/chapter10/grub.html
blob: c9c325296c8a830cf271dc8ae7e8aa5b7ad77331 (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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
    <title>
      10.4. Использование GRUB для настройки процесса загрузки
    </title>
    <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
    <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
    <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
    "text/css" media="print" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  </head>
  <body class="lfs" id="lfs-12.2">
    <div class="navheader">
      <h4>
        Линукс с нуля - Версия 12.2
      </h4>
      <h3>
        Глава 10. Делаем систему LFS загрузочной
      </h3>
      <ul>
        <li class="prev">
          <a accesskey="p" href="kernel.html" title="Linux-6.10.5">Пред.</a>
          <p>
            Linux-6.10.5
          </p>
        </li>
        <li class="next">
          <a accesskey="n" href="../chapter11/chapter11.html" title=
          "Заключение">След.</a>
          <p>
            Заключение
          </p>
        </li>
        <li class="up">
          <a accesskey="u" href="chapter10.html" title=
          "Глава 10. Делаем систему LFS загрузочной">Наверх</a>
        </li>
        <li class="home">
          <a accesskey="h" href="../index.html" title=
          "Линукс с нуля - Версия 12.2">Начало</a>
        </li>
      </ul>
    </div>
    <h1 class="sect1">
      <a id="ch-bootable-grub" name="ch-bootable-grub"></a>10.4.
      Использование GRUB для настройки процесса загрузки
    </h1>
    <div class="wrap" lang="ru" xml:lang="ru">
      <div class="admon note">
        <img alt="[Примечание]" src="../images/note.png" />
        <h3>
          Примечание
        </h3>
        <p>
          Если ваша система поддерживает UEFI и вы хотите загрузить LFS с
          помощью UEFI, вам следует пропустить инструкции на этой странице,
          но все равно изучить синтаксис <code class=
          "filename">grub.cfg</code> и способ указания раздела в файле с этой
          страницы, а также настроить GRUB с поддержкой UEFI используя
          инструкции, приведенные на <a class="ulink" href=
          "https://mirror.linuxfromscratch.ru/blfs/view/12.2/postlfs/grub-setup.html">
          странице BLFS</a>.
        </p>
      </div>
      <div class="sect2" lang="ru" xml:lang="ru">
        <h2 class="sect2">
          10.4.1. Введение
        </h2>
        <div class="admon warning">
          <img alt="[Предупреждение]" src="../images/warning.png" />
          <h3>
            Предупреждение
          </h3>
          <p>
            При неправильной настройке GRUB ваша система перестанет
            загружаться без вспомогательно загрузочного CD-ROM или
            USB-накопителя. Для загрузки системы LFS этот раздел
            необязателен. Вы можете просто использовать существующий
            загрузчик, например Grub-Legacy, GRUB2 или LILO.
          </p>
        </div>
        <p>
          Убедитесь, что аварийный загрузочный диск готов к <span class=
          "quote">«<span class="quote">спасению</span>»</span> компьютера,
          если он перестанет загружаться. Если у вас еще нет загрузочного
          диска, вы можете создать его. Для этого необходимо перейти в раздел
          BLFS и установить программу <strong class=
          "userinput"><code>xorriso</code></strong> из пакета <a class=
          "ulink" href=
          "https://mirror.linuxfromscratch.ru/blfs/view/12.2/multimedia/libisoburn.html">
          libisoburn</a>.
        </p>
        <pre class="userinput"><kbd class="command">cd /tmp
grub-mkrescue --output=grub-img.iso
xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</kbd></pre>
      </div>
      <div class="sect2" lang="ru" xml:lang="ru">
        <h2 class="sect2">
          10.4.2. Соглашения об именовании GRUB
        </h2>
        <p>
          GRUB использует собственную структуру именования дисков и разделов
          в виде <span class="emphasis"><em>(hdn,m)</em></span>, где
          <span class="emphasis"><em>n</em></span> — номер жесткого диска, а
          <span class="emphasis"><em>m</em></span> — номер раздела. Номера
          жестких дисков начинаются с нуля, а номера разделов начинаются с
          единицы для обычных разделов (с пяти для расширенных разделов).
          Обратите внимание, что это отличается от более ранних версий, где
          оба номера начинались с нуля. Например, раздел <code class=
          "filename">sda1</code> это <span class=
          "emphasis"><em>(hd0,1)</em></span> в GRUB, а <code class=
          "filename">sdb3</code> <span class=
          "emphasis"><em>(hd1,3)</em></span>. В отличие от Linux, GRUB не
          считает приводы CD-ROM жесткими дисками. Например, если
          используемый CD-привода определяется как <code class=
          "filename">hdb</code>, а второй жесткий диск как <code class=
          "filename">hdc</code>, этот второй жесткий диск все равно будет
          <span class="emphasis"><em>(hd1)</em></span>.
        </p>
      </div>
      <div class="sect2" lang="ru" xml:lang="ru">
        <h2 class="sect2">
          10.4.3. Настройка
        </h2>
        <p>
          GRUB записывает данные на первый физический сектор жесткого диска.
          Эта область не является частью какой-либо файловой системы.
          Программа в загрузочном разделе имеет доступ к модулям GRUB
          расположенным по умолчанию в /boot/grub/.
        </p>
        <p>
          Расположение загрузочного раздела - это выбор пользователя, который
          влияет на конфигурацию. Одна из рекомендаций заключается в том,
          чтобы иметь отдельный небольшой раздел (примерно 200 МБ)
          исключительно для загрузочной информации. В этом случае каждая
          сборка, будь то LFS или другой дистрибутив, может обращаться к тем
          же загрузочным файлам, а доступ может быть получен из любой
          загруженной системы. Если вы решите так сделать, вам необходимо
          примонтировать отдельный раздел, переместить все файлы из текущего
          каталога <code class="filename">/boot</code> (например, ядро Linux,
          которое вы создали на предыдущем этапе) в новый раздел. Затем нужно
          отмонтировать раздел и примонтировать его заново в каталог
          <code class="filename">/boot</code>. Когда вы это сделаете,
          обязательно обновите данные в файле <code class=
          "filename">/etc/fstab</code>.
        </p>
        <p>
          Оставить <code class="filename">/boot</code> на текущем разделе LFS
          это тоже рабочее решение, но его настройка для загрузки нескольких
          систем сложнее.
        </p>
        <p>
          Используя информацию выше, определите соответствующие точки
          монтирования для корневого раздела (или загрузочного раздела, если
          используется отдельный). В следующем примере предполагается, что
          корневым (или отдельным загрузочным) разделом является <code class=
          "filename">sda2</code>.
        </p>
        <p>
          Установите файлы GRUB в каталог <code class=
          "filename">/boot/grub</code> и настройте загрузочный сектор:
        </p>
        <div class="admon warning">
          <img alt="[Предупреждение]" src="../images/warning.png" />
          <h3>
            Предупреждение
          </h3>
          <p>
            Следующая команда перезапишет текущий загрузчик. Не выполняйте
            эту команду, если это не нужно, например, если вы используете
            сторонний менеджер загрузки для управления главной загрузочной
            записью (MBR).
          </p>
        </div>
        <pre class="userinput"><kbd class=
        "command">grub-install /dev/sda</kbd></pre>
        <div class="admon note">
          <img alt="[Примечание]" src="../images/note.png" />
          <h3>
            Примечание
          </h3>
          <p>
            Если система была загружена с использованием UEFI, <span class=
            "command"><strong>grub-install</strong></span> попытается
            установить файлы для <span class=
            "emphasis"><em>x86_64-efi</em></span>, но эти файлы не были
            установлены в <a class="xref" href="../chapter08/chapter08.html"
            title=
            "Глава 8. Установка базового системного программного обеспечения">
            Глава&nbsp;8</a>. Если это так, добавьте <code class=
            "option">--target i386-pc</code> к приведенной выше команде.
          </p>
        </div>
      </div>
      <div class="sect2" lang="ru" xml:lang="ru">
        <h2 class="sect2">
          <a id="grub-cfg" name="grub-cfg"></a>10.4.4. Создание файла
          конфигурации GRUB
        </h2>
        <p>
          Создайте файл <code class="filename">/boot/grub/grub.cfg</code>:
        </p>
        <pre class="userinput"><kbd class=
        "command">cat &gt; /boot/grub/grub.cfg &lt;&lt; "EOF"
<code class="literal"># Begin /boot/grub/grub.cfg
set default=0
set timeout=5

insmod part_gpt
insmod ext2
set root=(hd0,2)

menuentry "GNU/Linux, Linux 6.10.5-lfs-12.2" {
        linux   /boot/vmlinuz-6.10.5-lfs-12.2 root=/dev/sda2 ro
}</code>
EOF</kbd></pre>
        <p>
          Команды <span class="command"><strong>insmod</strong></span>
          загружают модули <span class="application">GRUB</span> с именами
          <code class="filename">part_gpt</code> и <code class=
          "filename">ext2</code>. Несмотря на название, <code class=
          "filename">ext2</code> фактически поддерживаются файловые системы
          <code class="systemitem">ext2</code>, <code class=
          "systemitem">ext3</code> и <code class="systemitem">ext4</code>.
          Команда <span class="command"><strong>grub-install</strong></span>
          встроила некоторые модули в основной образ <span class=
          "application">GRUB</span> (установленный в MBR или раздел GRUB
          BIOS) для доступа к другим модулям (в <code class=
          "filename">/boot/grub/i386-pc</code>), поэтому в стандартной
          конфигурации эти два модуля уже встроены и эти две команды
          <span class="command"><strong>insmod</strong></span> ничего не
          будут делать. В любом случае, от них нет никакого вреда, но они
          могут понадобиться в некоторых редких конфигурациях.
        </p>
        <div class="admon note">
          <img alt="[Примечание]" src="../images/note.png" />
          <h3>
            Примечание
          </h3>
          <p>
            С точки зрения <span class="application">GRUB</span>, файлы ядра
            относятся к используемому разделу. Если вы используется отдельный
            раздел /boot, удалите /boot из приведенной выше строки
            <span class="emphasis"><em>linux</em></span>. Вам также
            потребуется изменить строку <span class="emphasis"><em>set
            root</em></span> так, чтобы она указывала на загрузочный раздел.
          </p>
        </div>
        <div class="admon note">
          <img alt="[Примечание]" src="../images/note.png" />
          <h3>
            Примечание
          </h3>
          <p>
            Наименование раздела для GRUB может измениться, если вы добавили
            или удалили некоторые диски (это могут быть как съемные диски,
            так и USB-устройства). Изменение может привести к сбою загрузки,
            потому что <code class="filename">grub.cfg</code> ссылается на
            <span class="quote">«<span class="quote">старые</span>»</span>
            указатели. Чтобы не столкнуться с этой проблемой, необходимо
            использовать UUID раздела и файловой системы вместо указателя
            GRUB для указания устройства. Запустите команду <span class=
            "command"><strong>lsblk -o
            UUID,PARTUUID,PATH,MOUNTPOINT</strong></span