• Nenhum resultado encontrado

Aula 7 Conhecendo o grub e O que é preciso ainda saber do Shell

N/A
N/A
Protected

Academic year: 2021

Share "Aula 7 Conhecendo o grub e O que é preciso ainda saber do Shell"

Copied!
11
0
0

Texto

(1)

Aula 7 – Conhecendo o grub e O que é preciso

ainda saber do Shell

Grub – Básico de Manutenção

Gerenciador de boot do Gnu/Linux. Trataremos da versão 2.

/boot/grub/grub.cfg é o seu arquivo de configuração, onde estão armazenadas as

informações necessárias para inicializar cada SO cadastrado.

O comando update-grub atualiza o arquivo /boot/grub/grub.cfg, com qualquer modificação feita no sistema, como uma inclusão/exclusão de kernel.

Configuração

Alterações na configuração são normalmente feitas em /etc/defaul/grub e nos arquivos da pasta /etc/grub.d.

O arquivo /boot/grub/grub.cfg não deve ser editado pelo usuário; mudanças nesse arquivo são feitas pelos scripts de configuração.

Arquivo /etc/default/grub

É o principal arquivo de configuração para alterar as configurações padrão. - GRUB_DEFAULT=0

Configura a entrada default pela posição. Como no GRUB a primeira entrada é zero, a segunda 1, etc,

- GRUB_DEFAULT=saved

Define a entrada de menu padrão com o que foi selecionado anteriormente (a última seleção).

- GRUB_DEFAULT="xxxx"

Neste caso, a localização no menu não importa.

Exemplo: GRUB_DEFAULT="Ubuntu, Linux 2.6.31-9-generic"

- GRUB_TIMEOUT= Configura o tempo.

- GRUB_HIDDEN_TIMEOUT=0 O menu ficará oculto.

# GRUB_HIDDEN_TIMEOUT=0 O menu não será oculto

- GRUB_HIDDEN_TIMEOUT_QUIET=true

true = nenhuma contagem regressiva é exibida. A tela ficará em branco. false = Um contador será exibido numa tela em branco durante o tempo do GRUB_HIDDEN_TIMEOUT.

(2)

- #GRUB_GFXMODE=640x480

- descomente essa linha para mudar a resolução. Ela fornece resoluções suportadas pela placa de vídeo do usuário (640x480,

800x600, 1280x1024, etc).

aplica-se apenas a resolução do menu de boot.

Dica: Definindo a mesma resolução do sistema operacional o tempo de inicialização diminuirá ligeiramente.

- GRUB_DISABLE_LINUX_RECOVERY=true

Adicione ou descomente essa linha se não desejar o “Recovery” mode no menu. "Recovery mode" para apenas um kernel, fazer uma entrada especial em

/etc/grub/40_custom.

Entradas personalizadas

GRUB 2 permite ao usuário criar seleções de menus personalizados que serão automaticamente adicionados ao menu principal quando o comando

Código:

sudo update-grub

é executado. Um arquivo 40_custom vazio está disponível em /etc/grub.d/ para uso ou para servir de exemplo para criar menus personalizados. Aqui estão algumas

considerações para menus personalizados:

- o nome do arquivo determina a ordem das seleções no menu. Nomes numéricos são executados primeiro, seguido por nomes alfabéticos.

- Entrada 10_linux aparecerá antes de 30_os prober, que será colocado antes de entradas 40_custom, que irá preceder my.custom.entries.

- o usuário que desejar que as suas entradas de menu personalizado apareçam em primeiro lugar no menu principal pode nomear a pasta para

06_custom que suas listas estarão em primeiro lugar no menu. - o arquivo deve ser feito executável :

Código:

sudo chmod +x /etc/grub.d/filename .

- o conteúdo desse arquivo é adicionado ao grub.cfg sem alterações quando o comando sudo update-grub é executado.

- ao contrário do grub.cfg, arquivos personalizados podem ser editados a qualquer

momento, não são somente leitura, e podem ser propriedade de usuários comuns, se for desejado.

- o seu conteúdo não será alterado quando novos kernels forem adicionados ou removidos.

Criando menus personalizados

O usuário pode editar o arquivo default /etc/grub.d/40_custom ou criar um novo. A maneira mais fácil de criar o conteúdo de um menu personalizado é copiar uma entrada

(3)

do /boot/grub/grub.cfg. Depois de copiado, o conteúdo do 40_custom pode ser adaptado a vontade do usuário.

• De acordo com o arquivo personalizado padrão da amostra (etc/grub.d/40_custom/) as duas primeiras linhas de um arquivo personalizado em /etc/grub.d deve ser:

#!/bin/sh

exec tail -n +3 $0

Exemplo de menuentry :

### BEGIN /etc/grub.d/10_linux ###

menuentry "Ubuntu, Linux 2.6.31-15-generic" { recordfail=1

if [ -n ${have_grubenv} ]; then save_env recordfail; fi set quiet=1

insmod ext2 set root=(hd0,2)

search --no-floppy --fs-uuid --set 22290d2e-82c9-48d5-92c1-ce138634eedc linux /boot/vmlinuz-2.6.31-15-generic root=UUID=22290d2e-82c9-48d5-92c1-ce138634eedc ro vga=789 quiet splash

initrd /boot/initrd.img-2.6.31-15-generic }

Essa entrada do exemplo, copiada do grub.cfg e alterada pode ter este aspecto: menuentry "Ubuntu 9.10" {

set root=(hd0,2)

search --no-floppy --fs-uuid --set 22290d2e-82c9-48d5-92c1-ce138634eedc linux /boot/vmlinuz-2.6.31-15-generic root=UUID=22290d2e-82c9-48d5-92c1-ce138634eedc ro quiet splash

initrd /boot/initrd.img-2.6.31-11-generic }

Uma entrada de exemplo para Carregamento em série para um outro gestor de arranque GRUB.

menuentry "Grub 1 Bootloader" { set root=(hd0,8)

chainloader +1 }

Obs: em uma entrada já existente é possível passar parâmetros para o kernel. Por exemplo no 10_linux (etc/grub.d/) localize a primeira ocorrência de “menuentry”. Logo abaixo começa uma linha com a palavra linux. Ao final dela, basta dá um espaço e acrescentar os nomes dos módulos desejados. Por exemplo vga=788, que coloca uma resolução de 800x600 no shell.

(4)

640x480 800x600 1024x768 1280x1024

256 769 771 773 775

32K 784 787 790 793

64K 785 788 791 794

16M 786 789 792 795

Dica: Do obs acima faça o seguinte (vale para o Debian 5): – Instale o pacote fbi;

– Com o comando usermod -G video usuario acrescente o seu usuário nesse grupo; – Faça logoff e logon;

– Baixe uma imagem e tente ver com o fbi, ou um pdf para vê-lo com o fbgs: – fbi imagem.png

– fbgs arquivo.pdf – Ambos saem com q.

Splash Images – Imagens e Animações no Grub

GRUB 2 Splash Images

Instale o pacote padrão GRUB 2 splash images : Código:

sudo apt-get install grub2-splashimages .

Não confundir este com o pacote grub-splashimages, que não é compatível com o GRUB 2.

A localização padrão para essas imagens é /usr/share/images/grub.

Configurando splash images

As splash images do GRUB 2 são controladas pelo arquivo /etc/grub.d/05_debian_theme Edite esse arquivo como root :

Código:

sudo gedit /etc/grub.d/05_debian_theme Encontre a linha abaixo :

for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga} ; do

Detalhes sobre esta entrada:

- por default o GRUB 2 procura por splash images em /boot/grub e /usr/share/images/desktop-base

(5)

- o usuário deve:

- alterar a localização da pasta na linha acima para apontar para o endereço correto, ou

- mover a imagen para uma das pastas acima referenciadas.

- para adicionar a pasta grub coloque a entrada para ela e mude o nome do arquivo da imagem pelo que voce quer.

Na imagem do nosso exemplo a configuração ficou assim : for i in

{/boot/grub,/usr/share/images/desktop-base,/usr/share/images/grub}/Lake_mapourika_NZ.{png,tga} ; do

Depois de ter introduzido o caminho e o nome da imagem em 05_debian_theme você executa

Código:

sudo update-grub

Configurando fonte e cores

Estas linhas estão contidas em /etc/grub.d/05_debian_theme.

A cor é definida pela linha abaixo. A primeira cor é a cor do texto, a segunda é a cor de fundo.

set color_normal=black/black

O código abaixo define a cor de entradas selecionadas. A primeira cor é a cor do texto em destaque, a segunda é a cor de fundo da linha selecionada. Se black é a segunda

entrada, a linha de destaque será transparente e apenas o texto mudará de cor. set color_highlight=magenta/black

O black é a cor de transparência GRUB 2 padrão . Altere apenas a cor do primeiro (ou seja, xxxxx /black), se utilizar uma imagem de splash.

Se o segundo valor nesta linha é alterada para uma cor diferente de black a imagem splash será escondida atrás de um fundo de cor sólida.

Para mais detalhes : GRUB 2 Splash Images.

Manipulando Entradas no GRUB 2

Primeiro faça uma cópia de segurança, na sua pasta pessoal, dos arquivos 10_linux e 30_os-prober, para reverter se algo der errado.

Depois rode o comando Código:

sudo cat /boot/grub/grub.cfg | grep "menuentry" | cut -d '"' -f 2

Esse comando mostra o que tem no menu. Isso ajuda a fazer a alteração e vc pode ver se funcionou sem precisar reiniciar.

(6)

E, não esqueça de : Código:

sudo update-grub

depois de alterar o menu. Shell

1 – Histórico de comandos:

Todos os comandos digitados na linha de comando são registrados, em um arquivo .bash_history, em cada pasta pessoal dos usuários, podendo ser recuperados para nova execução.

$ more $HOME/.bash_history (ver o conteúdo do histórico de comando do usuário atual) Formas de acessar os comandos antigos:

a – Setas de direção <up> e <down>;

b – Através de seu número na lista. A forma de saber qual é a ordem do comando na lista é através do comando:

$ history (você pode paginar com o less ou o more) E a sua execução é da seguinte forma:

$ !num (ordem na lista)

$ !nome_do_comando (executa o comando mais recente com nome_do_comando) $ !?palavra_presente_no_comando (executa o comando mais recente que tiver

palavra_presente_no_comando)

$ ^palavra_presente_no_comando^nova_ palavra_presente_no_comando (executa o comando mais recente que tiver palavra_presente_no_comando, mas troca

palavra_presente_no_comando por nova_palavra_presente_no_comando)

Ex.:

$ !15 (executa o 15º comando usado) $ !ls

$ !?home (se você digitou antes ls -l /home)

$^home^etc (se você usou antes ls -l /home, o comando volta como ls -l /etc) Dica:

$ cat .bash_history | grep “ls -l” (mostra as ocorrências com o comando ls -l. Como é um comando existente, tem de proteger com “” ou '')

(7)

2 – Variáveis e variáveis de Ambiente: contem referencias ou nomes utilizados por vários comandos ou apenas valores. Se comportam da mesma forma que uma variável de uma linguagem de programação. Uma variável de ambiente controla o comportamento de um programa, registram detalhes úteis durante a seção do usuário no sistema, especificam o idioma das mensagens do sistema, etc. Comandos e conceitos:

$ nome=valor (atribuição)

$ echo $nome (O $ é usado para se ter acesso ao conteúdo da variável, que pode ser utilizado para alguma coisa)

$ set (mostra todas as variáveis locais) $ env (mostra todas as variáveis globais)

$ export nome=valor (torna a variável disponível para todos, ou seja, global, mas se perde no logoff)

Variáveis de ambiente conhecidas:

• HOME - Esta variável identifica o diretório do usuário doméstico, use o comando echo $HOME para saber qual é o seu diretório HOME.

• SHELL - Esta variável identifica qual shell está sendo usado, use o comando echo $SHELL para saber qual é o shell que o seu sistema está usando.

• TERM - Esta variável define o tipo de terminal que está sendo usado, use o comando echo $TERM para saber qual o tipo de terminal está sendo usado pelo sistema.

• USER - Pré-define o nome de conta como variável de ambiente, ou seja, ao se logar ao sistema a ID do usuário é combinada com um nome de conta, para saber qual é o usuário corrente use o comando "echo USER".

• PATH - Esta é a variável de ambiente que define quais diretórios pesquisar e a ordem na qual eles são pesquisados para encontrar um determinado comando. Para saber como o sistema faz esta pesquisa e em qual diretório está um comando use o comando "echo $PATH".

• MAIL - Esta é a variável de correio eletrônico. Para saber como seu mail está definido use o comando "echo $MAIL".

• LOGNAME - Esta variável é um sinônimo para USER. Para saber qual é o seu logname use o comando "echo $LOGNAME".

• OSTYPE - Essa variável define o tipo de sistema operacional em uso. Para saber qual é o sistema operacional em uso use o comando "echo $OSTYPE".

Uma variável pode se tornal local ou global sempre que o sistema estiver ativo, através de sua inclusão em:

/etc/profile (a variável fica disponível para todos, ou seja, global. Este arquivo contém comandos que são executados para todos os usuários do sistema no momento do login. Somente o usuário root pode ter permissão para modificar este arquivo. )

/etc/environment (Armazena as variáveis de ambiente que são exportadas para todo o sistema. )

(8)

.bash_profile (dentro da pasta do usuário, a variável está disponível apenas para um usuário. Usado por shell que requerem autenticação. Também executa comandos nele definidos) ou

.bashrc (mesmo jeito do anterior, mas é usado por shells que não requerem autenticação. Também executa comandos nele definidos )

Dica: é possível jogar a saída de um comando dentro de uma variável, através da instrução

$(comando). Exemplo:

$ saida_ls=$(ls -l /home) (executa o ls e joga o seu resultado dentro da variável saida_ls) $ echo $saida_ls (mostra o conteúdo de saida_ls)

3 – Apelidos: criar nomes alternativos para comandos. alias apelido=comando (cria um apelido)

unalias apelido (apaga o apelido)

Um alias só sobrevive até o logoff. Para se tornar sempre disponível, armazenar o comando em algum dos arquivos de inicialização citados anteriormente.

Exs.:

$ alias lsh=”ls -l /home” $ lsh

$ unalias lsh

4 – Shell instalados:

$ cat /etc/shells (mostra todos os shells instalados) ou $ exec nome_shell (abre o shell informado)

$ chsh (permite a troca do shell por outro. É solicitado o caminho do novo shell) 5 – Coisas estranhas

- Operações booleanas:

entre comandos:

&& - And (significa que o próximo comando só executa se o primeiro deu certo) | | - Or (significa que o próximo comando executa se o primeiro não deu certo)

(9)

Ex.:

cat /etc/default/grub && echo “Terminei” (O echo só executa se o cat executar sem erros) echo “Comecei” || echo “Terminei” (O 2º echo executa mesmo que o 1º dê algum erro)

- Comando read: lê um valor. Tipo o read de linguagem de programação

$ read nome_var (lê um valor e o armazena em nome_var)

- Comando test:

testa uma condição, retornando true ou false. Parâmetros:

Exemplos:

$ test 13 -lt 20 (testa se 13 é menor do que (-lt) 20) $ test 30 -gt 11 (testa se 30 é maior do que (-gt) 11) $ test -d /dev && echo “Certo. É um diretório”

(testa se /dev é um diretório (-d) e usa um AND (&&) para rodar um comando qualquer para ver se o primeiro deu certo, como um comando para mostrar que a verificação foi verdadeira)

- Comando if: testa se comandos são verdadeiros. Como há o test, ele pode ser

combinado com o if: if test 12 -lt 20 then

(10)

echo “é menor” else

echo “é maior” fi

ou com [ e ] (o [ é atalho para o test), da seguinte forma: if [ 12 -lt 20 ] then echo “é menor” else echo “é maior” fi

- Comando de loop while:

i=0

# a condição de test é se i é menor igual (-le) while test $i -le 10

#(ou while[ $i -le 10 ] ) do

echo “$i é menor” i=$((i+1))

# o $() permite salvar o resultado de um comando dentro de uma variável. No caso do exemplo, os parenteses extras são utilizados para fazer operações matemáticas. done

Obs: use tanto o if como o while dentro de shell script. É mais prático de trabalhar com eles...

Referências:

http://ubuntuforum-br.org/index.php/topic,58947.0.html - GRUB 2 - Um help na apresentação e configuração;

(11)

http://www.vivaolinux.com.br/dicas/impressora.php?codigo=13810 - Como configurar o Grub2 no Ubuntu 9.10;

http://www.vivaolinux.com.br/dica/Framebuffer-recursos-graficos-sem-o-X/ - Framebuffer - recursos gráficos sem o X;

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=118 - Configurando vídeo no Linux usando frame buffer;

http://aurelio.net/shell/canivete.html#operadores – Canivete Suíço do Shell (Bash) - 1 Operadores;

http://aurelio.net/shell/canivete.html#ifwhilefor - Canivete Suíço do Shell (Bash) - 6. if, for, select, while, until, case;

http://www.devin.com.br/shell_script/ - Programando em shell-script;

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5337 - Otimizando o controle e a digitação de comandos no shell;

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=855 - Trabalhando com shell e variáveis de ambiente.

Referências

Documentos relacionados

Tal Filosofia (a classificação de primeira não significa que depois dela venha uma filosofia segunda) deve ser entendida como a forma suprema do saber - por ser capaz

As coisas relativas à vida com Deus e ao seu serviço lhes são tediosas, e não podem encontrar qualquer alegria nelas, porque apagaram o Espírito Santo e

3.1) Existe um projeto, em parceria com a FEI, visando a implantação de um Laboratório Lean nessa faculdade de engenharia. Ferro tem um ótimo contato com o

Sem desconsiderar as dificuldades próprias do nosso alunado – muitas vezes geradas sim por um sistema de ensino ainda deficitário – e a necessidade de trabalho com aspectos textuais

ponto de acesso sem fios, você pode se conectar ao projetor sem fios através do ponto de acesso usando o software de rede da Epson.. Instalação do módulo de LAN

1º - Aprovar “ad referendum” o Projeto Pedagógico do Curso de Formação Inicial e Continuada de Língua Brasileira de Sinais Intermediário I e II do

E) CRIE NO SEU CADERNO UM TÍTULO PARA ESSA HISTÓRIA EM QUADRINHOS.. 3- QUE TAL JUNTAR AS SÍLABAS ABAIXO PARA FORMAR O NOME DE CINCO SUGESTÕES DE PRESENTE PARA O DIA

Se você gostou de ter acesso ao nosso super acervo que conta com centenas de atividades e quer continuar aproveitando nossas dicas, sugestões e material de estudo, aproveite para