diff --git a/source/pages/baremetals.rst b/source/pages/baremetals.rst index 955dade66b2973e96df62ca740de1ee6726e01cd..a41c0517ef366b17463b7cd7cabbcae52ec47233 100644 --- a/source/pages/baremetals.rst +++ b/source/pages/baremetals.rst @@ -1,6 +1,7 @@ Baremetals ########## +Configuração básica de uma servidora. ########## Introdução @@ -290,41 +291,41 @@ Os pacotes base são: .. hlist:: :columns: 4 - * systemd - * systemd-container - * systemd-timesyncd - * systemd-cron - * mdadm - * lvm2 - * grub2 - * linux-image-amd64 - * linux-headers-amd64 - * ssh - * rsync - * vim - * htop - * curl - * wget - * less - * lm-sensors - * iproute2 - * gdisk - * fdisk - * dnsutils - * iputils-ping - * zsh - * locales - * locales-all - * gcc - * make - * unzip - * tar - * man-db - * keyboard-configuration - * console-setup - * git - * python3 - * debootstrap + * systemd + * systemd-container + * systemd-timesyncd + * systemd-cron + * mdadm + * lvm2 + * grub2 + * linux-image-amd64 + * linux-headers-amd64 + * ssh + * rsync + * vim + * htop + * curl + * wget + * less + * lm-sensors + * iproute2 + * gdisk + * fdisk + * dnsutils + * iputils-ping + * zsh + * locales + * locales-all + * gcc + * make + * unzip + * tar + * man-db + * keyboard-configuration + * console-setup + * git + * python3 + * debootstrap Complementos: ------------- @@ -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 ext2 - set root='mduuid/580c789518a82e6edb8f4f6ef3e533b5' - if [ x$feature_platform_search_hint = xy ]; then - search --no-floppy --fs-uuid --set=root --hint='mduuid/580c789518a82e6edb8f4f6ef3e533b5' 47d567cb-4401-41b1-93ab-16e8096071ff - else - search --no-floppy --fs-uuid --set=root 47d567cb-4401-41b1-93ab-16e8096071ff - fi - font="/grub/unicode.pf2" + 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=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 - chain /boot/template/grub/grub.cfg + configfile /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