Discuta este tópico no fórum

Se este conteúdo te ajudou, deixe um presente!

domingo, 31 de março de 2013

OpenWRT: Expandindo o espaço do disco com unidade externa

O grande limitador de um roteador com OpenWRT não está no software que ele usa. Afinal de contas, rodando um Linux, é possível montar um servidor completo. O que restringe os usos do roteador são suas características fisicas, principalmente disco e memória. Processador também é um limitador importante para operações de tempo real, como streaming de conteúdo multimídia, mas pouco podemos fazer para melhorar o processador. Ao menos para o disco e a memória temos alguma alternativa. Sim, também é possível trocar os chips da placa por outros de maior capacidade, mas o que eu vou mostrar aqui é algo bem menos intrusivo.

Como já escrevi anteriormente, em imagens squashfs, OpenWRT divide o sistema de arquivos em duas partes: uma imagem base e as suas alterações. A primeira, chamada de "rom", é um sistema de arquivos completo, imutável, e somente é modificado na gravação de uma nova firmware. O usuário nem nota esta característica pois qualquer alteração efetuada nesta imagem são guardados em uma segunda área de disco, o chamado "overlay". O espaço livre do disco é, na verdade, o espaço disponível na "overlay". Seguindo esta estrutura, não adianta apagar coisas do disco que sejam provenientes da "rom" pois eles somente serão marcados como apagados e não serão liberados do disco.

Por padrão, o "kernel" e a "rom" dividem a flash do roteador e o que sobra fica para a "overlay". Quanto maior as duas primeiras, menos espaço "livre", e tudo isto em uma flash de 4 ou 8MB. O que vamos fazer é configurar o OpenWRT para usar uma unidade externa como a "overlay", expandindo o limite disponível.

O primeiro passo é escolher a unidade externa. No meu caso vai ser um pendrive antigo de 128MB, mas pode ser qualquer dispositivo de armazenamento USB. A configuração inicial é a mesma apresentada no último post. Se conectar o dispositivo e ele aparecer em /mnt ou no comando mount, você está pronto para a segunda etapa.

É bom ter uma configuração funcional antes de iniciar o processo. Caso você remova o disco externo, você terá seu roteador com esta configuração. Sugiro algo simples com a capacidade de acessar a internet.

A montagem automática funciona muito bem para dispositivos de uso eventual. Porém, como será um dispositivo permanente, o ideal é fixar algumas configurações. A primeira coisa a ser melhorada é o ponto de montagem. "/dev/sda5" não diz muito a quem está lendo e quando se trata de discos, é importante não errar a unidade. Também, se for conectada mais de uma unidade, a ordem que estes discos aparecem dependem da ordem de conexão. O primeiro será o sda, o segundo sdb e assim por diante. O ideal é a ordem dos discos não influencie. Para estas configurações, existe o arquivo "/etc/config/fstab". A entrada que nos interessa é a de montagem. Você pode ter quantas entradas destas desejar. No meu caso, terei 2: uma para a partição do HD externo e outra para a nova "overlay".

Atualizado em 2015-09-30: para versões mais novas (como a CC), o recomendado é gerar a configuração "/etc/config/fstab" com:

# block detect >/etc/config/fstab

Depois é só ajustar os valores (normalmente só o enable)

Existem três características que podem ser usadas para identificar um disco no OpenWRT (também suportadas em Linux "convencionais"): dispositivo, nome e uuid. O primeiro é o nome do arquivo que representa o dispositivo, em geral /dev/sd??. Como já comentei, este nome depende da ordem de conexão dos discos e deve ser evitado. A segunda forma, pelo nome, usa o nome ou rótulo dado ao sistema de arquivos, configurado na formatação ou posteriormente. Para partições ext2/3/4, o comando é o tune2fs. O terceiro é o uuid. Ele funciona como um identificador único e é gerado na criação do disco (tune2fs também pode alterá-lo). Se gerado aleatoriamente, é desprezível a possibilidade de conflito. Apesar da segurança do uuid, prefiro a contextualização que o nome me fornece. Estas propriedades dos discos podem ser visualizadas com o comando "blkid". Como usarei dois discos, foram adicionadas as seguintes linhas no meu arquivo /etc/config/fstab:
config mount
        option target   /mnt/usb-dados
        #option device  /dev/sda1
        option label    "usb-dados"
        #option uuid    "b7dc2020-b12a-431e-98d3-619a..."
        option fstype   ext4
        option options  rw,sync
        option enabled  1
        option enabled_fsck 0
config mount
        option target /mnt/extroot
        option label "openwrt-extroot"
        option fstype ext3
        option options rw,sync
        option enabled 1
        option enabled_fsck 0
Para registro, deixei intencionalmente as opções para apontamento por dispositivo e uuid. Porém, estas opções, por estarem comentadas, não serão lidas. Reiniciando o serviço fstab ou o roteador, você terá o disco identificado como usb-dados montado em /mnt/usb-dados e o nomeado "openwrt-extroot" em /mnt/extroot. O caminho deste segundo é temporário e logo será substituído.

Se as partições retornarem de um reboot montadas, é hora de migrar da "overlay" interna para a externa. O primeiro passo é configurar em  /etc/config/fstab a nova partição como a "overlay". E isto depende da versão que você está usando do OpenWRT. Para a versão 12.09, ainda em desenvolvimento, basta trocar onde antes era "/mnt/extroot", colocar "/overlay". Para a versão 10.04.1, backfire, é necessário instalar o pacote "block-extroot" adicionar a opção "option is_rootfs 1" e não alterar a opção target para "/overlay".

Agora basta popular a nova partição Copie os arquivos da "overlay" atual para a nova:
tar -C /overlay -cvf - . | tar -C /mnt/extroot -xf -
Lembre-se de ajustar o nome em negrito para o ponto de montagem em uso pela futura "overlay". Mas preciso usar o tar? É bom pois ele copia todos os atributos necessários e não sei se o cp do busybox faria melhor.

Se tudo der certo, só falta reiniciar. Antes, minhas montagem antes de reiniciar eram estas:
# mount
rootfs on / type rootfs (rw)
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,noatime)
sysfs on /sys type sysfs (rw,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime,size=30856k)
tmpfs on /dev type tmpfs (rw,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,noatime,mode=600)
/dev/mtdblock3 on /overlay type jffs2 (rw,noatime)
overlayfs:/overlay on / type overlayfs (rw,relatime,lowerdir=/,upperdir=/overlay)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)
/dev/sda5 on /mnt/usb-dados type ext4 (rw,sync,relatime,user_xattr,barrier=1,data=ordered)
/dev/sdb1 on /mnt/extroot type ext3 (rw,sync,relatime,user_xattr,barrier=1,nodelalloc,data=ordered)
E com a nova "overlay" ficaram:
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,noatime)
sysfs on /sys type sysfs (rw,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime,size=30856k)
tmpfs on /dev type tmpfs (rw,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,noatime,mode=600)
/dev/sdb1 on /overlay type ext3 (rw,sync,relatime,user_xattr,barrier=1,nodelalloc,data=ordered)
overlayfs:/overlay on / type overlayfs (rw,relatime,lowerdir=/,upperdir=/overlay)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
/dev/sda5 on /mnt/usb-dados type ext4 (rw,sync,relatime,user_xattr,barrier=1,data=ordered)
none on /proc/bus/usb type usbfs (rw,relatime)
E, principalmente, o espaço livre:
# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                  117.6M     13.7M     97.8M  12% /
(...)
Pronto! É espaço de sobra para instalar o que eu pretendo utilizar no roteador. Apesar de ser apenas 128MB, é muito mais do que os 6MB restantes da flash interna. Nos próximos posts, farei a configuração do samba, servidor de impressão e cliente torrent. Até mais e Feliz Páscoa.

49 comentários:

  1. Parabens pelo tutorial.
    Instalei o gargoyle ultima versao faz 2 dias e nao consegui extender o local para instalar os programas. Vou tentar o seu tutorial, espero que consiga.
    vandrerm@gmail.com

    ResponderExcluir
  2. Olá, eu fiz tudo direitinho, mas quando reinicio o roteador para terminar o processo, ele não inicia.

    Quando reinicio o roteador com o pendrive plugado ele religa mas fica piscando o LED sys e a wifi não funciona, só funciona quando reinicio e conecto depois o pendrive. O que pode ser?

    ResponderExcluir
    Respostas
    1. Se não liga a wifi, em geral, é sintoma que o disco não foi montado ou, no mínimo, suas configurações não funcionaram.
      É difícil diagnosticar sem uma serial. Tente refazer os passos.

      Excluir
  3. Este comentário foi removido pelo autor.

    ResponderExcluir
    Respostas
    1. Diogo,

      Acredito que possa funcionar. Considerando que a informação da montagem da nova overlay é útil apenas para a primeira montagem, ela pode ser desnecessária após a montagem do pendrive externo. O ideal é que as duas configurações estejam iguais quanto ao fstab. Se você fez a mudança do fstab após copiar, basta um cp de um lado para outro e ambos terão a mesma configuração.

      Excluir
  4. Luiz bom dia,

    só uma duvida nesse ponto:

    tar -C /overlay -cvf - . | tar -C /mnt/extroot -xf -

    no lugar de "/mnt/extroot" eu vou trocar por /dev/sda1(no meu caso)?

    João Luiz

    ResponderExcluir
    Respostas
    1. Olá João,

      Não, é o /mnt/extroot mesmo. Na primeira configuração do fstab, a sua partição /dev/sda1 será montada no /mnt/extroot. Se não está montado, deve ter algo errado. Verifica o que está montado rodando o comando mount.

      Excluir
    2. Luiz obrigado pela ajuda,

      no meu caso a partição está sendo montada em /mnt/sda1, mesmo indicando o ponto de montagem em /mnt/extroot no arquivo de configuração fstab.

      Excluir
    3. Provavelmente sua conf no /etc/config/fstab não está casando com o seu disco e ele foi montado prq a opção "anon_mount" está habilitada.

      Se ocorrer mesmo após reiniciar o roteador, é algum problema com sua conf fstab.

      Excluir
  5. Luiz bom dia,

    consegui resolver aqui, foi um erro meu mesmo.
    muito obrigado.

    João Luiz

    ResponderExcluir
  6. Olá Luiz, fiz as configurações e deu tudo certinho, mas depois que eu alterei o fstab para /overlay e rebotei o fstab voltou sozinho para /mnt/extroot. É isso mesmo?

    Mesmo assim está tudo funcionando:
    /dev/sda2 on /overlay type ext3 (rw,sync,relatime,user_xattr,barrier=1,nodelalloc,data=ordered)
    Filesystem Size Used Available Use% Mounted on
    rootfs 2.9G 75.4M 2.7G 3% /
    ...

    ResponderExcluir
    Respostas
    1. Você diz o arquivo de configuração voltou ao que era antes?
      Se for isto, provavelmente você fez o tar antes de alterar o arquivo de configuração. Não acho que seria um grande problema pois ele não vai conseguir montar 2 vezes e estragar alguma coisa.

      Excluir
  7. Olá Luiz, instalei ontem o OpenWRT no meu repetidor, um TP-Link TL-WA901ND e as configurações do wifi estão funcionando certinho, porém quando tento instalar o LuCI (único pacote adicional que quero instalar no momento), estou sendo vítima da falta de espaço.

    Será que você pode me ajudar?

    Veja o log abaixo:

    root@OpenWrt:/overlay/usr/lib# df -h
    Filesystem Size Used Available Use% Mounted on
    rootfs 768.0K 552.0K 216.0K 72% /
    /dev/root 2.0M 2.0M 0 100% /rom
    tmpfs 14.1M 592.0K 13.5M 4% /tmp
    /dev/mtdblock3 768.0K 552.0K 216.0K 72% /overlay
    overlayfs:/overlay 768.0K 552.0K 216.0K 72% /
    tmpfs 512.0K 0 512.0K 0% /dev
    root@OpenWrt:/overlay/usr/lib# opkg update
    Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/Packages.gz.
    Updated list of available packages in /var/opkg-lists/barrier_breaker.
    root@OpenWrt:/overlay/usr/lib# opkg install luci
    Installing luci (svn-r9934-1) to root...
    Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci_svn-r9934-1_ar71xx.ipk.
    Installing luci-mod-admin-full (svn-r9934-1) to root...
    Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-mod-admin-full_svn-r9934-1_ar71xx.ipk.
    Installing luci-mod-admin-core (svn-r9934-1) to root...
    Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-mod-admin-core_svn-r9934-1_ar71xx.ipk.
    Installing luci-lib-web (svn-r9934-1) to root...
    Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-lib-web_svn-r9934-1_ar71xx.ipk.
    Installing luci-lib-core (svn-r9934-1) to root...
    Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/luci-lib-core_svn-r9934-1_ar71xx.ipk.
    Installing lua (5.1.5-1) to root...
    Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/lua_5.1.5-1_ar71xx.ipk.
    Installing liblua (5.1.5-1) to root...
    Configuring lua.
    Configuring luci-lib-core.
    Configuring luci-lib-web.
    Configuring luci-mod-admin-core.
    Configuring luci-mod-admin-full.
    Collected errors:
    * verify_pkg_installable: Only have 24kb available on filesystem /overlay, pkg liblua needs 71
    * opkg_install_cmd: Cannot install package luci.
    root@OpenWrt:/overlay/usr/lib#

    Não tenho a possibilidade de instalar unidade USB no Repetidor.

    Você tem alguma idéia de como posso fazer para instalar o pacote?

    Um abraço,

    Fabio

    ResponderExcluir
    Respostas
    1. Vejo q você está usando um roteador com 4MB de disco. Tenho um assim e é dose viver com tão pouco.
      Para quem só quer instalar o luci, seu disco está meio cheio. O que você tem de espaço para trabalhar é o overlay. Ele, antes de instalar o luci, tem 552k ocupados. Dá uma olhada com um du em /overlay que deve ter algo grande lá (siom, 500k é muito :-) ). Se não souber o que limpar, no pior dos casos, zera a configuração. Com a conf inicial, esta área vai ocupar uns 50k no máximo.

      Fora isto, só resta criar uma firmware customizada com somente os pacotes que te interessam. http://luizluca.blogspot.com.br/2012/01/openwrt-turbine-seu-roteador_25.html. Se for usar como repetidor, deve ter algumas coisas relacionadas a roteamento que você poderia remover.

      Para o meu 740N, eu uso isto:

      make image PROFILE=TLWR740NV1 PACKAGES="-ppp-mod-pppoe -ppp"

      Só verificar o target correto. (acho que seria em target/linux/ar71xx/generic/profiles/tp-link.mk)

      Excluir
  8. Quando vou instalar alguma coisa pela interface web, aparece que tenho 2 GB de espaço livre, porém está dando o erro de falta de espaço.

    rootfs on / type rootfs (rw)
    /dev/root on /rom type squashfs (ro,relatime)
    proc on /proc type proc (rw,noatime)
    sysfs on /sys type sysfs (rw,noatime)
    tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime,size=14608k)
    tmpfs on /dev type tmpfs (rw,noatime,size=512k,mode=755)
    devpts on /dev/pts type devpts (rw,noatime,mode=600)
    /dev/mtdblock3 on /overlay type jffs2 (rw,noatime)
    overlayfs:/overlay on / type overlayfs (rw,relatime,lowerdir=/,upperdir=/overlay)
    debugfs on /sys/kernel/debug type debugfs (rw,relatime)
    none on /proc/bus/usb type usbfs (rw,relatime)
    /dev/sda1 on /overlay type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

    rootfs 5184 5080 104 98% /
    /dev/root 2048 2048 0 100% /rom
    tmpfs 14608 1072 13536 7% /tmp
    tmpfs 512 0 512 0% /dev
    /dev/mtdblock3 2052096 2752 2049344 0% /overlay
    overlayfs:/overlay 5184 5080 104 98% /
    /dev/sda1 2052096 2752 2049344 0% /overlay

    ResponderExcluir
    Respostas
    1. Tem alguma coisa estranha ai. O /overlay está montado 2 vezes.

      O esperado é algo como:

      rootfs on / type rootfs (rw)
      /dev/root on /rom type squashfs (ro,relatime)
      proc on /proc type proc (rw,noatime)
      sysfs on /sys type sysfs (rw,noatime)
      tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime,size=30852k)
      tmpfs on /dev type tmpfs (rw,noatime,size=512k,mode=755)
      devpts on /dev/pts type devpts (rw,noatime,mode=600)
      /dev/sda1 on /overlay type ext3 (rw,sync,relatime,user_xattr,barrier=1,nodelalloc,data=ordered)
      overlayfs:/overlay on / type overlayfs (rw,relatime,lowerdir=/,upperdir=/overlay)
      debugfs on /sys/kernel/debug type debugfs (rw,relatime)
      none on /proc/bus/usb type usbfs (rw,relatime)

      É como se o overlay fosse montado fora de hora, depois de mtdblock3. Vc está usando a versão 12.09?

      Excluir
    2. Acho q eu vi o problema:

      /dev/sda1 on /overlay type vfat

      vfat não tem os recursos suficientes para ser usado como extroot. Formate com ext3.

      Excluir
    3. Boa tarde Luiz,

      Estou aqui de volta, eu obtive sucesso nos procedimentos, mas de tempos em tempos, já a 2 ou 3 vez, corrompe a partição overlay, na penúltima vez consegui recuperar com o programa xfs_repair, mas agora na ultima, não consigo mais, não encontra o segundo superblock válido, e o primeiro corrompeu segundo o programa. É muito custoso refazer tudo que já tenho feito de configuração que ficou salva neste pen drive com o overlay modificado, sendo que nem lembro mais o que fiz durante tanto tempo.
      Você conhece algum outro programa pra recuperar que funcione no open-wrt e tb vc acha que esse problema recorrente ocorre por eu está utilizando uma particção ext4 em vez de ext3 ?

      GRato.
      André.

      Excluir
    4. Lembrei de outra coisa:

      Será que tem como reconstruir a partição e copiar ou preservar os arquivos e programas que já estão no pen drive, atual overlay ? Pois consegui montar a partição que não inicia no boot e conseguir visualizar todos os arquivos.
      Se sim , qual seria o comando para realizar com sucesso.

      GRato .
      André ;

      Excluir
    5. Xfs_repair? Acho que ele pode fazer um estrago em um sistema de arquivos ext3/4 :-)
      Ele é feito para xfs e não ext.

      Se você consegue ler os arquivos e eles estiverem íntegros, faz um backup com tar, reconstroi o ext e decompacta o tar.

      tar -C /pendrive -cvf becape.tgz .
      umount /pendrive
      mkfs.ext3 /dev....
      mount /dev... /pendrive
      tar -C /pendrive -xvf becape.tgz

      E desconheço problemas ao usar ext4 se você configurar a montagem como ext4.

      Excluir
    6. Vou tentar fazer o backup.
      Tem como instalar este outro programa para criar/alterar partição no roteador ?
      Grato,

      Excluir
    7. Conseguir fazer o backup e restaurar.

      Penei, pois e openwrt no WDR4300 não suporta ext3 (não encontrei na lista pacote para ext3, só para outros) , e fui inventar de formatar sem saber disso. Depois que me toquei, e voltei pra ext4.
      Obrigado.

      Até logo.

      Excluir
    8. André,

      "criar/alterar partição"? fdisk. Mas trocar o sistema de arquivos não precisa mexer com partições.
      E quanto a suporte ao ext3, tudo que suporta ext4 também acessa ext3 e ext2. Isto vale para o módulo de kernel também. Por exemplo, o comando que cria um ext* é o mesmo mke2fs, chamado por nomes distintos que, dependendo do nome, deve ativar/desativar opções padrão:

      lrwxrwxrwx 1 root root 6 Nov 4 12:34 /usr/sbin/mkfs.ext2 -> mke2fs
      lrwxrwxrwx 1 root root 6 Nov 4 12:34 /usr/sbin/mkfs.ext3 -> mke2fs
      lrwxrwxrwx 1 root root 6 Nov 4 12:34 /usr/sbin/mkfs.ext4 -> mke2fs

      Excluir
    9. Pois então Luiz, não sei se é por causa do roteador WDR4300 que tem o openwrt mais enxuto, porque aqui é necessário instalar os módulos do kernel pra esse tipo de situação, pra montar o ext3 não tem o módulo, pro ext4 eu instalei um, chamado kmod-fs-ext4 pra poder montar os discos, e precisei instalar o fs-cifs pra poder montar um outro disco em ntfs pela rede. Tenho essas dificuldades pois não uso Linux no PC, ai tenho que trabalhar tudo no roteador mesmo. Então to usando um programa via windows pra formatar em ext3 ou 4.

      Aproveitando, você sabe me dizer qual o arquivo de configuração pra alterar aquela tela de inicio quando se entra no terminal via putty? Quero acrescentar um comando ou script para ser executado toda vez que abro o terminal.

      Grato.

      Excluir
    10. Luiz.

      Perguntar sobre algo estranho que acontece aqui: Toda vez preciso reiniciar o roteador, o primeiro pós-reboot não monta o pen drive como overlay. A segundo reboot monta e reconhece todos os programas instalados. Sempre foi assim aqui . É preciso reiniciar 2 vezes sempre pra deixar nos conformes. É normal ?

      Grato.

      Excluir
    11. André, o módulo kmod-fs-ext4 também monta ext3. Não recomendo usar NTFS. Já ouvi relatos de lentidão extrema, fora o fato de não ser um sistema de arquivos para UNIX. Para formatar em ext3/4, instale o pacote e2fsprogs. Com ele, vocẽ terá os comandos mkfs.ext2 mkfs.ext3 mkfs.ext4.

      A "tela inicial" é um banner. O que você quer é alterar o profile (/etc/profile).

      Quanto a precisar de 2 reboots, talvez seu pendrive está levando mais tempo para ligar. Tente adicionar um
      delay_root maior em /etc/config/fstab. Acho que o padrão é 5.

      Excluir
  9. Descobri depois de muita luta, parace ser básico mas eu estava me ferrando pq estava fazendo esta configuração via WIFI, claro quando montava a partição extraroot o roteador subia com as configurações originais onde, o WIFI está desabilitado, via cabo foi só fazer um back up e restaurar, obrigado pelas dicas que tb foram úteis. Ivan

    ResponderExcluir
    Respostas
    1. Ivan,

      Se seguisse o que está neste artigo, você deveria copiar o estado atual para o extroot. Ele não ficaria em branco. Dever ter algum erro no comando tar que você executou.

      De qualquer forma, fazer uma nova conf também é uma solução valida

      Excluir
  10. Luiz, tudo certo?
    Fiz a atualização para a nova versão, só que estou enfrentando um problema pra migrar a /overlay para meu hd externo.
    Eu fiz a preparação e a montagem das partições usando a interface web, onde agora consigo atribuir cada uma delas (swap, storage) pelo uuid. Inclusive, swap e storage estão montados e funcionando. Mas não estou conseguindo montar e fazer aparecer a minha partição externa /overlay. Será que é confilito de nomes dos pontos de montagem?

    Essa é a listagem de como está a configuração atual:
    Filesystem Mount Point Available Used

    rootfs / 184.00 KB / 4.56 MB 96% (4.38 MB)
    /dev/root /rom 0.00 B / 2.25 MB 100% (2.25 MB)
    tmpfs /tmp 12.41 MB / 14.03 MB 12% (1.62 MB)
    /dev/mtdblock3 /overlay 184.00 KB / 4.56 MB 96% (4.38 MB)
    overlayfs:/overlay / 184.00 KB / 4.56 MB 96% (4.38 MB)
    tmpfs /dev 512.00 KB / 512.00 KB 0% (0.00 B)
    /dev/sda3 /storage 112.67 GB / 873.07 GB 86% (713.81 GB)

    Será que procede mesmo oq eu falei, dos conflitos com os pontos de montagem?

    Saudações, Anderson

    ResponderExcluir
    Respostas
    1. Anderson,

      Não tem como existir conflitos de montagem. Se estiver duplicado, ele simplesmente monta por cima.

      Se você está atualizando o sistema, você limpou a overlay antes de tentar montá-la novamente?
      http://luizluca.blogspot.com.br/2015/10/openwrt-atualizando-para-versao-1505.html

      Excluir
  11. Luiz, boa noite.

    Em primeiro lugar, excelentes tutoriais, mas este em especial ficou um pouco confuso. Acabo de atualizar o OpenWrt do meu TL-WDR4300 para a última versão (Chaos Calmer) e gostaria de, se possível, um guia detalhado apenas para esta versão (15.05) de como expandir o espaço do disco (extroot). Obrigado!

    ResponderExcluir
    Respostas
    1. Guilherme, a diferença é na geração da conf, que é gerada com 'block detect'. Vou botar na lista de tarefas dar uma limpada neste artigo.

      Excluir
  12. O comando:
    tar -C /overlay -cvf - . | tar -C /mnt/extroot -xf -
    Não está adiantando.
    Depois que faço tudo direito, monto o /dev/sd2 (no meu caso) no /mnt/extroot e mando esse comando e reinicio o roteador ele simplesmente não fica como overlay. Fica como tava antes:

    /dev/sd1 on /mnt/extroot

    O que faço?

    root@OpenWrt:~# df
    Filesystem 1K-blocks Used Available Use% Mounted on
    rootfs 1024 248 776 24% /
    /dev/root 2048 2048 0 100% /rom
    tmpfs 14608 68 14540 0% /tmp
    tmpfs 512 0 512 0% /dev
    /dev/mtdblock3 1024 248 776 24% /overlay
    overlayfs:/overlay 1024 248 776 24% /
    /dev/sda2 6202310 12318 5859292 0% /mnt/extroot
    /dev/sda1 1044844 31672 960796 3% /mnt/sda1
    root@OpenWrt:~# mount
    rootfs on / type rootfs (rw)
    /dev/root on /rom type squashfs (ro,relatime)
    proc on /proc type proc (rw,noatime)
    sysfs on /sys type sysfs (rw,noatime)
    tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime,size=14608k)
    tmpfs on /dev type tmpfs (rw,noatime,size=512k,mode=755)
    devpts on /dev/pts type devpts (rw,noatime,mode=600)
    /dev/mtdblock3 on /overlay type jffs2 (rw,noatime)
    overlayfs:/overlay on / type overlayfs (rw,relatime,lowerdir=/,upperdir=/overlay)
    debugfs on /sys/kernel/debug type debugfs (rw,relatime)
    /dev/sda2 on /mnt/extroot type ext4 (rw,sync,relatime,user_xattr,barrier=1,data=ordered)
    none on /proc/bus/usb type usbfs (rw,relatime)
    /dev/sda1 on /mnt/sda1 type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)

    ResponderExcluir
    Respostas
    1. Mudei o fstab para:

      config 'global'
      option anon_swap '0'
      option anon_mount '0'
      option auto_swap '1'
      option auto_mount '1'
      option delay_root '5'
      option check_fs '0'

      config 'mount'
      option target '/overlay'
      option uuid 'c91232a0-c50a-4eae-adb9-14b4d3ce3de1'
      option enabled '1'

      config 'swap'
      option uuid '08b4f0a3-f7ab-4ee1-bde9-55fc2481f355'
      option enabled '1'

      config 'mount'
      option target '/data'
      option uuid 'c1068d91-863b-42e2-bcb2-b35a241b0fe2'
      option enabled '1'

      Colocando os código uuid do meu pendrive e funcionou.
      Meu pendrive tem duas partições, uma ext4 e outra linux swap.

      Excluir
  13. Eai Luiz!
    Segui seus passos, consegui instalar o OpenWRT com sucesso e achei ele bem mais intuitivo no SSH pois a documentação é atualizada.

    Porém, como não consegui montar minha partição externa por ser NTFS (preciso que seja), acabei tendo que instalar uma porrada de pacotes para conseguir. Pronto, montado.

    Agora o EXT3 com 128MB foi montado automaticamente em /mnt/sda2.

    Aproveitei e instalei o SFTP pois acho mais fácil abrir o FTP e abrir o arquivo com meu editor do windows para editar o arquivo, pois ao salvar ele já envia o arquivo modificado.

    Então, fico comutando o SSH e o FTP :D (foi tão difícil instalar que tive que instalar o editor NANO para substituir o vi hahahha).

    Agora o problema:
    Ao digitar block detect >/etc/config/fstab e ir no arquivo /etc/config/fstab apareceu:


    config global
    option anon_swap '0'
    option anon_mount '0'
    option auto_swap '1'
    option auto_mount '1'
    option delay_root '5'
    option check_fs '0'

    config mount
    option target '/mnt/sda2'
    option uuid '90b947ff-1b89-d101-00b0-46ff1b89d101'
    option enabled '1'

    config mount
    option enabled '0'

    Substitui o /mnt/sda2 lá por /overlay e digitei depois:
    tar -C /overlay -cvf - . | tar -C /mnt/sda2 -xf -

    Ele copiou uma pancada de arquivos para essa unidade, alguns deram erro (bem poucos, acho que questão de permissão) e pronto. Ai dei um Reboot e .... Bom....

    Indo no Luci - System - Software aparece:
    Free space: 2% (84.00 KB)

    E pelo df -h
    Filesystem Size Used Available Use% Mounted on
    rootfs 4.5M 4.4M 84.0K 98% /
    /dev/root 2.3M 2.3M 0 100% /rom
    tmpfs 61.5M 1.0M 60.5M 2% /tmp
    /dev/mtdblock3 4.5M 4.4M 84.0K 98% /overlay
    overlayfs:/overlay 4.5M 4.4M 84.0K 98% /
    tmpfs 512.0K 0 512.0K 0% /dev
    /dev/sda1 3.6G 2.0G 1.6G 55% /mnt/usb-ntfs


    Ahhh! me lembrei. No comando tar tinha dado que falhou a cópia por inteiro pois o dispositivo alvo tinha acabo o espaço. Achei estraho...

    ResponderExcluir
    Respostas
    1. Este comentário foi removido pelo autor.

      Excluir
    2. Imagem do Mount Interface
      http://i.imgur.com/aVgVfD2.png

      Excluir
    3. Primeiro, use somente partições ext{2,3,4} para aumentar o disco. Nunca uma ntfs. Não vai rolar.

      Antes do tar e com o fstab modificado, o df tem que mostrar a linha:

      /dev/sda2 ... /mnt/sda2

      Neste momento você roda o tar para copiar lá. O erro de disco cheio foi possivelmente por causa que /mnt/sda2 não tinha um disco montado. Se não tem um disco, ele é apenas um diretório. Como você não tem espaço para copiar 2x seus arquivos na flash, ela encheu. Os erros eram importantes...

      Revisando:

      1) monte a partição em algum lugar (ex: /mnt/sda2)
      1.1) deve aparecer no mount "/dev/sda2 ... /mnt/sda2"
      2) atualize a conf do fstab para o que você vai quere usar (/overlay).
      1.1) deve ainda estar no mount "/dev/sda2 ... /mnt/sda2"
      2.1) ela ainda não está em atuação, mas é para copiar uma configuração correta.
      3) tar
      4) reboot
      4.1) deve estar no mount "/dev/sda2 ... /overlay"

      Excluir
  14. Prezado Luiz,
    Como vai, tudo bem? Tenho a seguinte situação. Meu OpenWRT está montado em partições sobre um SSD de 16GB mas no momento em que foram geradas as imagens e gravadas no disco, tenho somente disponíveis 512MB disponíveis. Como faço para obter um /overlay maior pois necessito usar todo espaço disponível no SSD.
    Desde já agradeço sua sempre importante e esclarecedoras intervenções.

    Grande abraço!

    ResponderExcluir
    Respostas
    1. Opa Wanderlei,

      Acabei perdendo seu comentário...
      Talvez seja alguma limitação do squashfs da raiz ou do overlay_fs. Sugestão? Use duas partições: uma de 512 para expandir a raiz e outra com o resto para os dados. Essa segunda, monte em algum lugar, como /mnt/xxx. Jogue seus dados pesados lá. Para programas (sem os dados), 512M é mais do que você pensaria em usar no seu roteador ;)

      Excluir
  15. Olá amigo, parabéns pelo tutorial. Estou com um grande problema. Consigo instalar o block-mount, kmod-usb-storage, mas quando vou instalar o kmod-fs-ext4, da falta de espaço. Estou usando o Powered by LuCI 15.05-149-g0d8bbd2 Release. Qual a dica q pode me dar?
    Grato

    ResponderExcluir
    Respostas
    1. Hum... tens só 4M de flash? Se for o caso e você não instalou nada além disso, temos duas alternativas.

      A primeira seria tentar usar o jffs2 como sistema de arquivos da partição. Como ele já está dentro do kernel, não precisaria instalar. Nunca fiz isso, mas deve funcionar. Você vai precisar preparar a partição com mkfs.jffs2

      A segunda é criar uma firmware com algum recurso dispensável, como o Luci (interface web) ou o pppoe (se não usar). Já poderia aproveitar e colocar os pacotes necessários. A compressão neste caso é melhor e pode até caber o que você precisa sem a necessidade de remover outros pacotes. Tudo que você remover poderá ser reinstalado na unidade externa. Só lembre de não remover algo que impeça o acesso ao roteador e é bom ainda manter tudo necessário para o acesso internet. http://luizluca.blogspot.com.br/2012/01/openwrt-turbine-seu-roteador_25.html

      Excluir
  16. Olá Luiz, parabéns por todos seus tutoriais, desde o samba ao torrent,

    Vamos ao meu problema.
    Eu tenho um HD de 1TB e formatei 1GB para ser a partição extroot do meu openwrt, porém na hora de montar dá o erro:

    root@OpenWrt:~# mount /dev/sda2 /mnt/sda2
    NTFS signature is missing.
    Failed to mount '/dev/sda2': Invalid argument
    The device '/dev/sda2' doesn't seem to have a valid NTFS.
    Maybe the wrong device is used? Or the whole disk instead of a
    partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
    mount: mounting /dev/sda2 on /mnt/sda2 failed: Invalid argument

    root@OpenWrt:~# mount -t ext /dev/sda2 /mnt/sda2
    mount: mounting /dev/sda2 on /mnt/sda2 failed: No such device

    Tens alguma ideia do que eu possa fazer?

    ResponderExcluir
    Respostas
    1. NTFS? Não recomendo nem de perto :) Não é pirraça com a M$. Ele só não é adequado para guardar dados UNIX. Fora isso, ele é bem mais pesado, em especial em um roteador. Recomendo que use ext4.

      Normalmente tem um erro "melhor" no dmesg. Você chegou a formatar a partição como ext4 (mkfs.ext4)? O "block detect" irá te dizer o que tem no disco. Aparentemente você tem uma partição sem sistema de arquivos.

      Ah, e o "-t ext" tem que ser "-t ext4" (ou ext3, ext3... ext não existe mais).

      Excluir
  17. boa noite, obrigado pelo tutorial mas nao consegui fazer, poderia realizar para a versao 18 ?

    ResponderExcluir
    Respostas
    1. Olá Luiz,

      Foi atualizado na última vez que mudou algo relevante (CC/15.05). Deveria se aplicar sem mudanças na última versão.

      Em que parte não funcionou?

      Excluir