Desativar temporariamente o sistema de arquivos expandido durante a primeira inicialização

13

Eu gostaria de criar uma imagem interna do Raspberry Pi baseada no Raspbian Lite, que já esteja configurada com o local, o fuso horário, etc.

Quero evitar os aborrecimentos de reduzir o tamanho do sistema de arquivos , impedindo que o redimensionamento ocorra. Como eu editaria a imagem após a gravação para desativar temporariamente o redimensionamento automático do sistema de arquivos?

Editado para esclarecer efeitos deve ser reversível; isto é, quero que minha imagem personalizada seja expandida na primeira inicialização.

patricktokeeffe
fonte
Esta pode não ser a solução ideal, mas você já pensou em usar um cartão pequeno de 4GB onde isso não representaria esse problema.
21316 Steve Robillard
2
Idéia interessante .. queimando em um cartão pequeno, efetivamente limitando o redimensionamento. Eu preferiria uma solução direta, mas esta é uma alternativa decente. Obrigado
patricktokeeffe
2
Isso é muito chato. Tenho certeza de que isso é feito por meio de um script de inicialização simples e autodestrutivo, a la raspi-configé executado na primeira inicialização e seria fácil de desativar. Posso dar uma olhada, mas vou ter que baixar uma nova imagem, a última que tenho é de maio. Volte em algumas horas.
goldilocks

Respostas:

13

Existe um mecanismo de duas partes que assume a responsabilidade por isso no Raspbian; provavelmente a melhor idéia é cuidar de ambas as partes, se estiverem ativadas.

A primeira é que o original /boot/cmdline.txtinclui isso:

init=/usr/lib/raspi-config/init_resize.sh

Referindo-se a um script com esse caminho na partição raiz, que será usado como o processo init na inicialização. Sem esse bit, o padrão seria um valor incorporado ao kernel, /sbin/initno qual o Raspbian é um link simbólico /lib/systemd/systemd.

Ao remover essa parte cmdline.txt, o sistema deve inicializar normalmente.

O que esse script realmente faz é redimensionar a partição no cartão SD. Esse é um processo distinto de redimensionar o sistema de arquivos na partição, 1 e é o que acontece a seguir.

A maneira como isso acontece é que o sistema é reinicializado imediatamente normalmente (ou seja, via systemd) e um init.dscript é definido para disparar desde o início, que deve ser removido da segunda partição:

/etc/init.d/resizefs_once

E o link simbólico para ele, que também deve ser removido:

/etc/rc3.d/S01resizefs_once

Você pode manter uma cópia para uso posterior, se quiser, mas raspi-configpode criá-la novamente para você (está incorporada no raspi-configshell script). Se ele realmente for executado, ele será excluído, para que não ocorra novamente.

O que ele também faz é redimensionar o sistema de arquivos na partição recém-redimensionada.

Nenhum dano deve ser causado se apenas uma ou outra parte acontecer; no primeiro caso, você acaba com um sistema de arquivos que não preenche a partição ampliada; no segundo, nada acontecerá, porque o sistema de arquivos já preenche a partição.

Se você usar posteriormente raspi-configpara aumentar o sistema de arquivos, a partição será redimensionada imediatamente e configurará o script init (como já mencionado).

A edição cmdline.txtna primeira partição é simples em qualquer computador, pois é uma partição VFAT. A remoção do init.darquivo requer um sistema que possa acessar e editar sistemas de arquivos ext4.

Em vez disso, ambas as tarefas podem ser executadas no próprio arquivo de imagem antes da gravação do cartão; para montar e modificar uma imagem Raspbian em um sistema GNU / Linux, veja aqui . Há uma sessão de perguntas e respostas paralela para Windows .

Isso também é reversível, mas você precisará recolocar as duas partes do mecanismo conforme descrito acima, pois a primeira não inclui a preparação automática da segunda.


  1. Embora uma mensagem de erro desse script possa confundir esses termos, alegando que não foi possível redimensionar o sistema de arquivos raiz , quando o que realmente falhou foi redimensionar a partição com o sistema de arquivos raiz. Fazer um não realiza o outro automaticamente.
Cachinhos Dourados
fonte
1
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
Ghanima
@ Goldilocks de desativação de init=/usr/lib/raspi-config/init_resize.shde /boot/cmdline.txtobras no ubuntu acasalar também e parece suficiente por si só. Eu tenho uma imagem de 4gb ubuntu mate lançada em um sdcard de 32gb e ela está mantendo os tamanhos de partição no tamanho da imagem original. Também /etc/init.d/resizefs_oncee /etc/rc3.d/S01resizefs_onceexist não faça após a primeira inicialização no ubuntu acasalar.
sith
Só para confirmar, irá restaurar tanto o cmdline.txte init.de rc3.darquivo e link de permitir que a próxima inicialização para redimensionar por si só ou eu tenho que executar raspi-confige executá-lo manualmente?
Oxwivi 01/01/19
@ Oxwivi Deveria, sim. Esclarei todo esse post e fiz um comentário explícito sobre isso no final.
goldilocks
Sim obrigado. Além disso, o IDK desde a versão, mas pelo menos a versão mais recente, não possui as referências de redimensionamento de script que você mencionou fora cmdline.txt. Inicializei a imagem Raspbian usando systemd-nspawne ainda tenho logs de erro tentando redimensionar após remover cmdline.txtalgo, no entanto.
Oxwivi 02/01/19