segunda-feira, 29 de julho de 2013

Raspberry Pi mais rápido usando um disco USB!

Como eu acabei por mudar o sistema do Raspbian do SDcard para um disco rígido ligado ao Raspberry por USB...

Esta ideia já não é propriamente nova mas acabou por sair mais reforçada quando chega a altura de retirar o máximo do pequeno RPi. Nos últimos meses às melhorias na firmware desta board permitem já ter um sistema estável ligado durante semanas seguidas usando os modos overclock, entre os quais o modo "High Turbo a 1.0Ghz"!!

Nos cartões de memoria, mesmo aqueles de classe 10 e todos os outros que dizem ser rápidos, não se consegue ter um sistema estável sem ser por USB. Por mim esta "teoria" lida nos foruns do Raspberry já foi comprovada. Um dos meus "RPis" nem arranca em modo turbo a partir do SDCard, ou quando arranca bloqueia logo depois. Já por USB, mesmo que seja um penUSB das mais antiguitas arranca e funciona que nem uma beleza ;)


Esta troca até pode pensar-se que é um pouco complicada, para mais quando já temos todo o sistema configurado e não queremos perder nada e nem por sombras começar do zero. 

Sinceramente a maioria dos how-tos que tenho visto para fazer isso são complicados à brava ou têm coisas a mais. Trocar o sistema do Raspbian do SDcard para um disco ou uma pen ligada por USB é muito mais fácil do que pode parecer inicialmente...


1 - Acedendo ao RPi por ssh ou na consola e já com a pen/disco ligado por USB, vamos executar o seguinte comando:

dmesg

Este comando servirá para descobrir o nome da unidade que o Raspbian atribuiu ao dispositivo de armazenamento por USB que acabamos de ligar. Como vemos na imagem seguinte esse nome resulta de três letras sdX (ex: sda). 


2 - Descoberto o nome da unidade, vamos utilizar o comando DD e copiar/clonar o SDcard inteiro para o dispositivo USB. Atenção que para isto resultar o armazenamento ligado por USB têm que ser pelo menos do mesmo tamanho do SDcard. Atenção ainda que com este comando todos os dados do armazenamento ligado por USB serão perdidos. Por isso tratem de efectuar backups antes caso seja o caso. O comando é este:

dd if=/dev/mmcblk0 of=/dev/sda

Depois de executado o comando é importante não fecharem a consola e esperar que o processo de copia termine. Demora uns bons minutos, mais ou menos para um cartão de 4GB são cerca de 20 minutos!

3 - Finalizado o processo basta indicar apenas o novo ponto de montagem do sistema no ficheiro cmdline.txt. Este ficheiro encontra-se na partição "boot" do sdcard e podemos aceder a ele deste modo:

sudo nano /boot/cmdline.txt

Na única linha de texto do ficheiro, basta trocar o seguinte:

root=/dev/mmcblk0p2 por root=/dev/sda2

Fecha-se o editor nano gravando alterações CTRL+X e (Y)

No próximo reboot o sistema correrá a partir do armazenamento USB. Caso não fiquem contentes podem sempre reverter a coisa no ficheiro cmdline.txt com "root=/dev/mmcblk0p2" ;)

NOTAS: Convém dizer que o cartão de memoria não vai ser usado, mas também não pode ser retirado do RPi. Pois ele contém toda a informação de arranque do Raspbian.

Mais importante ainda, o espaço do armazenamento USB esta dimensionado com o tamanho do SDcard. Para aproveitar o espaço restante caso ele exista vejam às seguintes opções:
  • Correr o utilitário raspi-config e seleccionem a opção 1, Expand Filesystem
  • Utilizar o GParted para criarem outra(s) partição no espaço remanescente. 

Resta só dizer que este tutorial funciona perfeitamente noutros S.O independentemente de ser ou não a distribuição oficial do Raspbian!

21 comentários:

  1. Bom Dia!
    Tudo o que voce falou é realmente verdade e era exatamente o que eu estava procurando...
    Precisava de algumas informacaoes:
    Quando eu acender pelo hd externo, preciso particiona-lo no tamanho do sdcard ou pode ser maior?
    Quanto as atualizacoes do sistema, correrá pelo hd externo?

    Grato,
    Luis Ferreira

    ResponderEliminar
  2. A copia feito pelo comando DD, copia o sdcard completo para o hd externo. O hd externo não precisa estar já particionado, pode estar vazio ou cheio que no final fica igual ao sdcard mesmo tamanho de partições.
    O espaço restante do hd externo caso exista (EX: sdcard 4GB, HD 120GB, então fica 116GB sem estarem particionados)

    Esses 116GB depois corres o raspi-config fazendo espand filesystem. Ou então crias outra(s) partição ao teu gosto com uma ferramenta a tua escolha "Gparted, fdisk..etc" ;)

    Todo o sistema e todas às alterações fica no hd externo. Na realidade até podes apagar a segunda partição (a maior) do sdcard. Só precisas dela se tencionares voltar atrás e usar o cartão de memoria para o sistema. Neste caso basta repores root=/dev/mmcblk0p2 no ficheiro cmdline.txt que se encontra na primeira partição do sdcard. Essa partição e que não pode ser apagada ao contrario da segunda.

    Ainda no hd externo a primeira partição é uma copia da partição boot do sdcard (sabes que clonamos o sdcard para o hd externo), essa partição também é desnecessario mas também só ocupa cerca de 56mb por isso nem vale a pena apaga-la ;)

    ResponderEliminar
  3. Boa Noite!!!
    Esqueci de perguntar ou ainda o que li nao entedi pq fico pensando como isso funciona..srsrrsr :-)
    O Raspi1 que estah ligado ao hd externo, na verdade ele eh um server_lamp de web e para o outro raspi2 acessar os videos que estao raspi1.
    A pergunta e a parte web_lamp como ficará ? Porque na verdade gostaria de mudar a parte o apache e do mysql para o hd externo tb.
    Como fazer para mudar a parte do Lamp ?

    Grato,
    Luis Ferreira

    ResponderEliminar
    Respostas
    1. É igual, é sempre igual se reparares antes de efectuares algo na partição fat32 do raspi lamp tens lá o ficheiro cmdline.txt, é só alterares como expliquei e isto depois de copiares o cartão para o hd externo com o comando do howto ;)

      Eliminar
    2. Olah...
      Teria como direcionar a copia do sdcard para uma particao especifica ? As minhas sda2 e 3 estao sendo usadas.. deixei exatamente a sda1 para o SO.
      Grato,
      Luis

      Eliminar
  4. Olá Nuno.

    Adquiri um RAspberry Pi e utilizo um SD de 8GB class 10.Se ligar um disco externo de 40 GB (Western Digital) como devo proceder para utilizar o openelec?

    Obrigado,
    Rui

    ResponderEliminar
    Respostas
    1. Vê aqui:

      http://cria-o-teu-avatar.blogspot.pt/2012/11/xbmc-com-openelec-no-raspberry-pi-tudo.html

      Nas ultimas linhas do Passo 12.

      Basicamente é formatares o disco em ext4 e mudares aquela tal linha no ficheiro cmdline.txt.

      Eliminar
  5. Nuno, parabéns pelo blog. Fui em um seminário de TI apresentar um trabalho e conheci o raspberry lá e fiquei bem otimista.

    Penso em desenvolver algum projeto em cima dele, principalmente para dar cunho científico e/ou social, por isto estou lendo bastante para criar algo.

    Após este artigo, fiquei com algumas dúvidas que gostaria, fazendo favor, de sua resposta:

    1- Fazendo o SO partir da USB, o cartão sd pode ficar como um segundo dispositivo de armazenamento?

    2- Posso espetar um hd externo nele, ao invés de ficar limitado aos (poucos) gbs de pen drives?

    3- A função de adaptar um hd ide/sata para usb, através de cases, de nada impede sua utilização no raspberry, certo?

    4- Há algum módulo ou chip para aumentar a memória do raspberry de 512 para 1gb, por exemplo?


    Muito obrigado e abraços!

    ResponderEliminar
    Respostas
    1. 1 e 2 - Tudo o que lhes ligares pode ser usado como armazenamento, o cartão SD terã que ter sempre uma partição de arranque para o sistema.

      3 - Claro que não!

      4 - Não conheço nada!

      Eliminar
    2. Obrigado pelas respostas, amigo.

      Continuo na leitura de relatos e projetos, de forma a definir alguma linha de pesquisa.

      Abraços!

      Eliminar
  6. Boa tarde , a alimentação do raspberrypi aguenta com o disco externo ?
    abc,
    LM

    ResponderEliminar
    Respostas
    1. Não!

      Disco externo 2.5" ou maior só com um hub usb 2.0 auto-alimentado.

      Eliminar
  7. Bom Dia!!!
    Depois de muito tempo resolvi colocar em pratica o seu tutorial....
    No meu caso instalei o Raspbmc e nao sei se o boot estah correndo ou nao pelo USB.
    Gostaria de saber:
    Existe algum comando que posso verificar por onde o boot estah correndo?
    Voce sabe algum comando que faca o Expand Filesystem ??

    Grato,
    Luis Ferreira

    ResponderEliminar
    Respostas
    1. o Raspbmc ´e o Raspbian com xbmc, em principio podes tentar o raspi-config para expander o file system.

      O Raspbmc deve ter o seu metodo de instalar na USB, de qualquer maneira ve com o comando df -h e compara o tamanho das partiçoes para saberes se esta a funcionar ;)

      Eliminar
    2. Pelo comando que vc me enviou me apareceu o seguinte :
      root@raspbmc:~# df -h
      Filesystem Size Used Avail Use% Mounted on
      /dev/mmcblk0p2 30G 1.9G 26G 7% /
      /dev/mmcblk0p1 69M 50M 19M 73% /boot
      /dev/sda1 69M 50M 19M 73% /media/F19A-405A

      Eliminar
  8. Boa Noite,
    Utilizei o seu tutorial para instalar o Raspbian e tb criei outras particoes no disco... a pergunta é : agora com a nova versao gostaria de atualizar para ela, no entanto acredito que se eu fizer novamente este processo ele ira me apagar todo o disco com as outras particoes, certo ?
    Gostaria de saber se vc sabe como fazer para que a atualizacao utilize somente a particao que foi criada antes ?

    Grato.
    Luis

    ResponderEliminar
    Respostas
    1. Falas em atualizar do wheeze para o jessie correcto ? Não deveras ter problemas mas faz um backup primeiro.

      Officialmente eles n recomendam atualizar por cima do Raspbian existente mas claro a forma de fazer isso.

      Eliminar
    2. Ok.. este seria o problema... terei que fazer o Backup e formatar novamente o disco ? Nao teria uma forma de formatar somente a particao que esta o sistema wheeze ? Assim como se faz nos outros SO ? Windows ou Ubuntu ?

      Att, Luis

      Eliminar
  9. blz man... parabéns pelo tutorial muito bom...

    mas eu to com um projeto aqui e surgiu umas duvidas se vai dar certo...

    Estou querendo montar um box de mídia e retro-console usando retropie e OpenElec(Kodi) usando com gerenciador de boot o Berryboot ou o Noobs.

    A ideia é construir uma placa extra com botão de liga-desliga e mais 4 ubs, onde vou usar um de ponte desta placa para a raspberry uma segunda para conectar um HD externa e uma terceira para um leitor de Bluray, sobrando 4 usb pra conectar controles.

    o boot principal ficaria em um cartão SD pequeno enquanto os S.O.s seria movidos para a HD externa.

    A ideia é ter um dual boot e a partir da escolha do sistemas através do gerenciador iniciar o sistema escolhido, que vai estar nesta HD externa. Isto é possível?

    ResponderEliminar
    Respostas
    1. Sim é possível... e esta correcto como o queres fazer.

      Podes misturar como quiseres, os dois sistemas no cartão ou no HD ou um em cada.

      Na minha opinião não tens grandes ganhos em mover "hoje" o sistema para o HD num RPi2/3 e no caso dos jogos ou dos ficheiros de media podes sempre usar o HD só para eles, mantendo o sistema RetroPie/OpenELEC no cartão.

      Não tenho a certeza, mas se ligares o HD no cartão com o Noobs na altura de instalares o software penso que podes fazer isso a partir do menu do Noobs facilmente. Caso contrario os inves de seguires este howto, segue este que é melhor:

      https://cria-o-teu-avatar.blogspot.pt/2014/03/openelec-no-raspberry-pi-arranque-facil.html

      Eliminar

Related Posts Plugin for WordPress, Blogger...

Popular no Blogue: