Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
R
rootlabs
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
Root
rootlabs
Commits
97a51a2f
Commit
97a51a2f
authored
2 years ago
by
Odair M.
Browse files
Options
Downloads
Patches
Plain Diff
feat(Baremetals): improve grub documentation
parent
e18951c2
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
source/pages/baremetals.rst
+349
-70
349 additions, 70 deletions
source/pages/baremetals.rst
with
349 additions
and
70 deletions
source/pages/baremetals.rst
+
349
−
70
View file @
97a51a2f
Baremetals
##########
Configuração básica de uma servidora.
##########
Introdução
...
...
@@ -560,11 +561,251 @@ defini parametros para que:
Configuração do boot
********************
Multi boot com grub
===================
A ideia central é ter um *GRUB* que chame outros *GRUBS*. Para isso temos que
criar nosso proprio ``grub.cfg``, em vez de gerar automáticamente. Vamos
dividir o arquivo ``grub.cfg`` em partes e depois montamos ele inteiro:
.. contents:: Etapas
:local:
:depth: 1
Menu e escolha padrão
----------------------------------------------------------------------
A primeira etapa é fazer o menu e escolha padrão:
.. code:: cfg
# configuracao para boot padrao
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
O código serve para que sempre selecione uma entrada como padrão e use, caso
contrário o grub fica esperando o usuário escolher manualmente.
Configuração de video
---------------------
A configuração de video serve para mostrar na tela as opções do grub. Ela se dá
por carregar módulos de videos e por mostrar também na porta serial.
Faz o load dos módulos de videos
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code:: cfg
# configuracao de video
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
# Ativa o serial, util para o IPMI
serial --unit=0 --speed=115200
.. note::
Porta serial:
O códio ``serial --unit=0 --speed=115200`` indica que o grub imprimirá o
output na porta serial 0 com velocidade de 115k.
Carrega a fonte:
^^^^^^^^^^^^^^^^
Outro ponto do video é o carregamento das fontes que será utilizado, isso é
feito com o código abaixo:
.. code:: cfg
# Procura pela fonte,
if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_gpt
insmod part_gpt
insmod mdraid09
insmod lvm
insmod ext2
set root='mduuid/bbb4a32abcf8eb415241990451489ef3' # Alterado Odair
# alterado por odair
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/bbb4a32abcf8eb415241990451489ef3' f8e0f46a-e650-422e-a4ce-b286cd8010c9
else
search --no-floppy --fs-uuid --set=root f8e0f46a-e650-422e-a4ce-b286cd8010c9
fi
font="/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=C
insmod gettext
fi
.. note::
Simplificação:
Talvez seja possível simplificar o código assumindo que a fonte sempre está
em ``/boot/grub/unicode.pf2``, o que é verdade, visto que nós que estamos
gerenciando o grub manualmente.
Redirecionando input e output
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A próxima etapa é fazer o redirecionamento do input e output.
.. code:: cfg
# aceita input tanto do console quanto do IPMI
terminal_input console serial
# Saída tanto em video quanto no serial para IPMI
terminal_output gfxterm serial
Basicamente fazemos o redirecionamento para video e para o serial.
Configuração de timeout
-----------------------
A função dessa parte é desenhar o timeout até que a opção padrão seja escolhida.
.. code:: cfg
# Configuração de timeout
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
fi
GFXMODE:
--------
Eu não tenho certeza se esse fragmento de código é realmente necessário. Por
enquanto estou mantendo, mas é necessário pesquisar sobre o que o *gfxmode* faz
e se é necessário para o que estamos fazemos.
.. code:: cfg
# ------------- Talvez remover essa parte ----------------
function gfxmode {
set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
Opção no menu:
--------------
O template a ser seguido segue o código abaixo:
.. code:: cfg
menuentry 'TEMPLATE' --class TEMPLATE.DISTRO --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-TEMPLATE-f940644b-e20b-4086-b916-8d57afd80bfb' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod part_gpt
insmod diskfilter
insmod mdraid09
insmod ext2
insmod chain
set root='mduuid/bbb4a32abcf8eb415241990451489ef3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/bbb4a32abcf8eb415241990451489ef3' f8e0f46a-e650-422e-a4ce-b286cd8010c9
else
search --no-floppy --fs-uuid --set=root f8e0f46a-e650-422e-a4ce-b286cd8010c9
fi
configfile /TEMPLATE/grub/grub.cfg
}
O que está tudo em *uppercase* deve ser subtituído pela informação da entrada.
ou seja:
* `<TEMPLATE>`: nome da entrada.
* `<TEMPLATE.DISTRO>`: nome da distribuíção, por exemplo, **debian**
Deve ter um diretório chamado com o nome do TEMPLATE dentro do diretório do
boot, por exemplo: **recover** com configrações de boot para fazer linkar com
outro grub.
.. note::
mduuid:
O *mduuid* é o UUID do volume raid boot, é possível obter com o comando
``lsblk -o NAME,SIZE,UUID`` e dever remover os ``-``.
.. note::
UUID:
O uuid: ``f8e0f46a-e650-422e-a4ce-b286cd8010c9`` é o UUID do sistema de
arquivo do /boot, também obtido via ``lsblk -o NAME,SIZE,UUID``.
Configuração de layout de boot
==============================
A ideia é montar a partição de boot fazer os *bind* necessários para que seja feito o chain loader
corretamente. Os passos são:
.. contents:: Passos:
:local:
:depth: 1
Monte o array:
--------------
.. code:: shell
...
...
@@ -591,12 +832,11 @@ Crie o arquivo ``/boot_alt/grub/grub.cfg`` com o conteúdo:
.. code:: cfg
#
variavel do grubenv
#
configuracao para boot padrao
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
# opção default
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
...
...
@@ -628,6 +868,7 @@ Crie o arquivo ``/boot_alt/grub/grub.cfg`` com o conteúdo:
save_env saved_entry
fi
}
# configuracao de video
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
...
...
@@ -641,33 +882,48 @@ Crie o arquivo ``/boot_alt/grub/grub.cfg`` com o conteúdo:
insmod video_cirrus
fi
}
# Ativa o serial, util para o IPMI
serial --unit=0 --speed=115200
# Procura pela fonte,
if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_
msdos
insmod part_
msdos
insmod
diskfilter
insmod
mdraid1x
insmod part_
gpt
insmod part_
gpt
insmod
mdraid09
insmod
lvm
insmod ext2
set root='mduuid/580c789518a82e6edb8f4f6ef3e533b5'
set root='mduuid/bbb4a32abcf8eb415241990451489ef3' # Alterado Odair
# alterado por odair
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/
580c789518a82e6edb8f4f6ef3e533b5' 47d567cb-4401-41b1-93ab-16e8096071ff
search --no-floppy --fs-uuid --set=root --hint='mduuid/
bbb4a32abcf8eb415241990451489ef3' f8e0f46a-e650-422e-a4ce-b286cd8010c9
else
search --no-floppy --fs-uuid --set=root
47d567cb-4401-41b1-93ab-16e8096071ff
search --no-floppy --fs-uuid --set=root
f8e0f46a-e650-422e-a4ce-b286cd8010c9
fi
font="/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=
pt_BR
set lang=
C
insmod gettext
fi
terminal_output gfxterm
# aceita input tanto do console quanto do IPMI
terminal_input console serial
# Saída tanto em video quanto no serial para IPMI
terminal_output gfxterm serial
# Configuração de timeout
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
...
...
@@ -681,38 +937,61 @@ Crie o arquivo ``/boot_alt/grub/grub.cfg`` com o conteúdo:
fi
fi
#--class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-be7d7025-4b62-461a-addf-17505b8dc2b4'
menuentry 'Template' $menuentry_id_option 'gnulinux-simple-template-47d567cb-4401-41b1-93ab-16e8096071ff' {
# ------------- Talvez remover essa parte ----------------
function gfxmode {
set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
# -----------------------------------------------------------
# Aqui vai cada entrada, o template é:
# menuentry 'TEMPLATE' --class TEMPLATE.DISTRO --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-TEMPLATE-f940644b-e20b-4086-b916-8d57afd80bfb' {
# load_video
# insmod gzio
# if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
# insmod part_gpt
# insmod part_gpt
# insmod diskfilter
# insmod mdraid09
# insmod ext2
# insmod chain
# set root='mduuid/bbb4a32abcf8eb415241990451489ef3'
# if [ x$feature_platform_search_hint = xy ]; then
# search --no-floppy --fs-uuid --set=root --hint='mduuid/bbb4a32abcf8eb415241990451489ef3' f8e0f46a-e650-422e-a4ce-b286cd8010c9
# else
# search --no-floppy --fs-uuid --set=root f8e0f46a-e650-422e-a4ce-b286cd8010c9
# fi
# configfile /TEMPLATE/grub/grub.cfg
# }
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-f940644b-e20b-4086-b916-8d57afd80bfb' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
insmod part_msdos
insmod part_msdos
insmod part_gpt
insmod diskfilter
insmod mdraid1x
set root='mduuid/580c789518a82e6edb8f4f6ef3e533b5' # MUDAR
insmod mdraid09
insmod ext2
insmod chain
set root='mduuid/bbb4a32abcf8eb415241990451489ef3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/
580c789518a82e6edb8f4f6ef3e533b5' 47d567cb-4401-41b1-93ab-16e8096071ff
search --no-floppy --fs-uuid --set=root --hint='mduuid/
bbb4a32abcf8eb415241990451489ef3' f8e0f46a-e650-422e-a4ce-b286cd8010c9
else
search --no-floppy --fs-uuid --set=root
47d567cb-4401-41b1-93ab-16e8096071ff
search --no-floppy --fs-uuid --set=root
f8e0f46a-e650-422e-a4ce-b286cd8010c9
fi
c
hain /boot/template
/grub/grub.cfg
c
onfigfile /recover
/grub/grub.cfg
}
pegue o *MDUUID* do array boot:
.. code:: cfg
mduuid=580c789518a82e6edb8f4f6ef3e533b5
.. tip::
Para achar o UUID do do boot use ``lsblk -o NAME,SIZE,UUID``
Instale o grub:
---------------
.. code:: shell
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment