Linux
 
  • Top
  • About me
  •     My public key
        My Orkut
  • Photography
  •     On facebook
        On Photo.Net
        Tutorials     In PDF
        Defense slides
  • Linear Solver (Gauss-Jordan)
  • Matrix Inverter
  • LatexRender-ng
  • Links


  • Em Português
  • Moodle do Professor
  • Meu Twitter
  • Cubo Mágico
  •     Ágebra Linear 1
        Cálculo Numérico
        Tutorial Java
        Tutorial Html
        Curso de Grego on-line
  • Escalonador (Sistemas)
  • Inversor Matricial
  • Videos
  •     No facebook
        Photo.Net
  • Linux
  •     Projetos com PIC     Aaron Lauve
        Alfredo Rios
        Augusto Ponce
        Carlo Mazza
        Chris Long
        David Nacin
        David Radnell
        Eric Sundberg
        Fernando Louro
        Liangyi "Lee" Zhao
        Kia Dalili
        Klay Kruczek
        Richard Mikula
        Sadao Massago
        Xiaoqing Li     Em PDF
        Em PostScript
  • Estatísticas
  •     Temperature Charts

     

    Dicas de Linux

    Índice

  • Consertando o 'c' acentuado
  • Pondo seu Toshiba Satellite 1415-S173 para dormir
  • Consertando 'c' acentuado

    Tudo indica que este problema só aparece quando for utilizada a codificação UTF-8 e o teclado for o US-International (ou US-Acentos). Nesses teclados, para formar o cedilha é preciso teclar primeiro o apóstrofo (que é uma tecla morta) e depois o 'c'. Nas distribuições Linux estrangeiras isso produz um 'c' com acento agudo.

    Uma solução para o problema é a seguinte: primeiro consulte o arquivo o arquivo /etc/sysconfig/i18n e veja como ele define o parâmetro LANG. O meu arquivo é o seguinte:

     LANG="en_US.UTF-8"
     SUPPORTED="en_US.ISO8859-1:en_US.UTF-8:en_US:en:pt_BR.UTF-8:pt_BR:pt"
     SYSFONT="latarcyrheb-sun16"
    

    Eu uso en_US, ao invés de pt_BR, pois prefiro as mensagens do sistema em inglês. Outra maneira de obter essa informação é dar o comando echo LANG. É provável que no seu sistema em português a resposta seja pt_BR.UTF-8.

    Em seguida, vá ao diretório /usr/X11R6/lib/X11/locale e localize um dos diretórios pt_BR.UTF-8 ou en_US.UTF-8, conforme estabelecido pelo parâmetro LANG.
    Errata: No xorg o caminho é /usr/share/X11/locale.
    Nesse diretório, há um arquivo chamado Compose, que descreve a formação pelo teclado de caracteres acentuados. Esse arquivo normalmente contém as seguintes linhas:

     <dead_acute> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE
     <dead_acute> <C> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE
    

    Essas linhas devem ser alteradas respectivamente para:

     <dead_acute> <c> : "ç" U00E7 # LATIN SMALL LETTER C WITH CEDILLA
     <dead_acute> <C> : "Ç" U00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
    

    Depois disso, basta reiniciar o sistema para que as alterações tenham efeito. Por conveniência, estas linhas estão disponíveis para download aqui.

    Errata: A receita acima funciona para a maioria dos aplicativos, menos os que se baseiam na biblioteca gtk-2.0. Neste caso, será preciso editar o arquivo /etc/gtk-2.0/gtk.immodules. Procure a linha

    "cedilla" "Cedilla" "gtk+" "/usr/share/locale" "az:ca:co:en:fr:gv:oc:pt:sq:tr:wa"
    
    e acrescente na lista o locale da sua escolha. Esse arquivo pode estar localizado em alguma subpasta do caminho /etc/gtk-2.0. Por exemplo, /etc/gtk-2.0/i686-redhat-linux-gnu, no meu caso.

    Pondo seu Toshiba Satellite 1415-S173 para dormir

    Um dos recursos mais interessantes para aqueles que dispões de computação móvel é exatamente a possibilidade de por seu computador para dormir. Além de conservar energia, isso prolonga a vida útil do display lcd, do processador e da bateria. Talvez ainda mais interessante é que em comparação com o longo tempo que o boot e o shutdown tomam normalmente, os poucos segundos necessários para ir dormir e para acordar são uma dádiva preciosa. Isso sem contar que os aplicativos que estavam rodando não serão terminados como no shutdown, e vão continuar a rodar normalmente após o despertar.

    O que vou descrever aqui é, em princípio, válido apenas para o Toshiba Satellite 1415-S173 rodando Fedora Core 3, mas com um pouco de trabalho, paciência e investigação, pode servir também para outros modelos.

    Há basicamente duas maneiras de mandar o notebook dormir: uma é usando o APM, que é mais antigo mas também é mais estável, e a outra é usar os novos recursos ainda instáveis do ACPI. Como sou corajoso e queria usar ao máximo as capacidades do meu notebook, decidi optar pelo ACPI. Com o que vou descrever aqui, seu notebook irá dormir e acordar com muito charme.

    Requisitos

  • Notebook Toshiba Satellite 1415-S173 ou similar
  • Fedora Core 3
  • Kernel 2.6.9 ou superior
  • Driver de video original NVIDIA (opcional)
  • Parâmetros do Boot

    A primeira coisa a fazer é acertar a configuração do grub. Vá ao diretório /boot/grub, edite o arquivo menu.lst e localize a seguinte linha:

     kernel /boot/vmlinuz-2.6.11-1.27_FC3 ro root=/dev/hda6 rhgb quiet
    

    O número 2.6.11-1.27_FC3 vai variar de acordo com a versão do kernel instalado. Altere para o seguinte:

     kernel /boot/vmlinuz-2.6.11-1.27_FC3 ro root=/dev/hda6 rhgb quiet pci=noacpi
      acpi=on apm=off acpi_sleep=s3_bios
    

    As opções acpi=on e apm=off indicam que queremos usar ACPI, no entanto, há problemas com o roteamento de IRQ feito pela atual versão do ACPI, impedindo o computador de acordar corretamente, por isso usamos a opção pci=noacpi para inibir esse mecanismo. A opcão acpi_sleep=s3_bios serve para inicializar o driver de video ao despertar. Caso contrário, teremos apenas uma tela preta. Essa opção não é necessária caso o driver de video seja o nv da xorg.

    Removendo alguns obstáculos

    Sem alterar mais nada, podemos mandar o computador ir dormir por meio do comando:

     echo 3 > /proc/acpi/sleep
    

    que deve ser executado como root, ao que ele obedecerá, mas infelizmente poderá não conseguir acordar mais. Isso ocorre porque alguns módulos do kernel não se comportam como deveriam ou simplesmente ainda não sabem lidar com o ACPI. Por isso eles precisam ser removidos antes de ir dormir e recarregados ao acordar. Os módulos que me deram problemas são o orinoco_cs (placa Wi-Fi) e o uhci_hcd (USB).

    Além disso, se houver diretórios nfs montados, é boa idéia desmontá-los antes de dormir, pois podemos acordar em outro lugar onde esses recursos estejam indisponíveis. Outra coisa: se estivermos removendo algum cartão pcmcia, como a placa Wi-Fi, ao acordar o serviço pcmcia fica instável, por isso é bom desligá-lo também

    Assim, uma possível preparação para o sono é a seguinte (executada como root):

    service netfs stop     # Desmonta os sistemas de arquivos nfs
    ifdown eth1            # Desativa a Wi-Fi (se estiver presente)
    cardctl eject 0        # Remove o cartão Wi-Fi (ou o orinoco_cs não sai)
    modprobe -r orinoco_cs # Remove o driver da placa Wi-Fi
    modprobe -r uhci_hcd   # Remove o driver USB
    

    Para restaurar o sistema ao acordar, podemos fazer o seguinte:

    cardctl insert 0       # Reinserimos o cartão Wi-Fi
    sleep 1                # Damos um tempo para ele inicializar
    service pcmcia start   # Reiniciamos o serviço pcmcia
    modprobe uhci_hcd      # Recarregamos o driver USB
    

    Note que não é preciso recarregar o driver orinoco_cs. Isto será feito automaticamente ao reiniciar o serviço pcmcia. Além disso, a Wi-Fi será reconectada automagicamente, se houver uma rede sem fio por perto.

    Meu script completo para ir dormir é chamado sweet-dreams e fica guardado no diretório /usr/bin. Seu conteúdo é o seguinte:

    #!/bin/bash
    export PATH=/sbin:/usr/sbin:$PATH
    
    service netfs stop     # Desmonta os sistemas de arquivos nfs
    ifdown eth1            # Desativa a Wi-Fi (se estiver presente)
    cardctl eject 0        # Remove o cartão Wi-Fi (ou o orinoco_cs não sai)
    modprobe -r orinoco_cs # Remove o driver da placa Wi-Fi
    modprobe -r uhci_hcd   # Remove o driver USB
    
    touch /var/run/atsleep # Liga um flag indicando que vamos dormir
    sync;sync
    echo "3" > /proc/acpi/speep # Sweet dreams...
    
    cardctl insert 0       # Reinserimos o cartão Wi-Fi
    sleep 1                # Damos um tempo para ele inicializar
    service pcmcia start   # Reiniciamos o serviço pcmcia
    modprobe uhci_hcd      # Recarregamos o driver USB
    
    rm -f /var/run/atsleep # Remove o flag indicador de sono
    

    Ainda assim, as coisas não vão funcionar bem, conforme explicarei na próxima seção. A razão para mantermos um flag ficará clara. Não devemos esquecer de fazer esse arquivo executável através do comando chmod +x /usr/bin/sweet-dreams

    Configuração do acpi

    O próximo passo é acertar as configurações do diretório /etc/acpi. Este contém dois subdiretórios: events e actions. O primeiro contém arquivos que especificam como os eventos acpi devem ser tratados e o segundo contém scripts acionados por esses eventos. Da maneira como estão essas configurações, o computador fará um inexplicável shutdown logo depois de acordar. Acontece que para acordar, ou pressionamos a tecla power ou levantamos a tampa do notebook. Ambos as ações geram um evento acpi chamado button/power. Listando o único arquivo, sample.conf, presente no subdiretório actions, vemos que ele contém as linhas:

    # This is a sample ACPID configuration
    
    event=button/power.*
    action=/sbin/shutdown -h now
    

    O motivo do shutdown agora está claro. Para mudar isso, basta comentarmos as duas linhas finais:

    # This is a sample ACPID configuration
    
    # event=button/power.*
    # action=/sbin/shutdown -h now
    

    ou simplesmente apagarmos o arquivo sample.conf.

    Agora, criamos nesse diretório o arquivo power.button.conf conténdo as seguintes linhas:

    # Power button instruction for ACPI
    
    event=button/power.*
    action=/etc/acpi/actions/power.button.sh
    

    Finalmente, criamos no subdiretório actions o arquivo power.button.sh contendo:

    #!/bin/bash
    export PATH=/sbin:/usr/sbin:$PATH
    
    if [ -f /var/run/atsleep ]; then # Se estamos voltando do sono...
        rm -f /var/run/atsleep       # então removemos o flag ... 
        exit 0                       # e não fazemos mais nada.
    fi
    
    # Caso contrário, estamos indo dormir, por isso chamamos nosso script
    /usr/bin/sweet-dreams
    

    Devemos fazer esse arquivo executável com o comando chmod +x power.button.sh

    Se isso tudo não funcionar no seu caso, provavelmente deve ser porque há algum módulo carregado que não está se comportando muito bem. Você precisará descobrí-lo e modificar o código do script para fazer a remoção-inserção adequadamente. Por outro lado, se você não tiver Wi-Fi como no meu caso, não precisará se preocupar com o driver orinoco_cs e pode remover a parte do código que trata desse caso.

    Um toque final

    Se você quiser que o seu micro vá dormir sempre que você fechar a tampa, então basta criar o arquivo lid.button.conf no subdiretório events com o seguinte conteúdo:

    # Lid button instruction for ACPI
    
    event=button/lid.*
    action=/etc/acpi/actions/power.button.sh
    

    Brevemente, estarei incluindo aqui um programa que estou escrevendo para permitir a utilização dos recursos extras do Toshiba, como as teclas de função e as teclas de controle de multimedia localizadas na frente do notebook.

    Por enquanto é só. Bom proveito.

    Referências

  • O site: Linux on Toshiba Satellite 1415-S173

    é um bom lugar para começar se você ainda não instalou mas pretende instalar o Linux no seu notebook.
  • A homepage do Projeto ACPI para linux é um bom lugar para aprender mais sobre o assunto.

  • Updated on  Mon Jul 15 13:27:35 2013
    Copyright © 1997-2014, Waldeck Schutzer
     
    http://twitter.com/ityessal http://twitter.com/liminft