As partições de inicialização podem ter uma relação de muitos para as partições raiz? Quanto as partições de inicialização dependem das de raiz?

1

Estou fazendo um projeto no meu Raspberry Pi onde estou tentando fazer com que minha partição raiz esteja em um pen drive. Vários pen drives, na verdade. Então, tudo o que preciso fazer para ir de um espaço de trabalho para outro é conectar um novo USB e reinicializar.

Mas isso pode realmente funcionar apenas se a partição de inicialização raramente for alterada e não souber muito mais sobre a partição raiz do que como iniciar o sistema operacional.

Isso pode funcionar? As partições de boot se preocupam apenas com algumas partes simples da raiz que podem ser facilmente mantidas as mesmas para todos, ou as duas evoluem juntas e se emaranham?

Estou executando o Raspian e pretendo ter várias versões do sistema raiz para todas elas usadas (uma por vez) pela mesma inicialização.

    
por Seph Reed 05.09.2015 / 06:50

1 resposta

1

Sim, tanto quanto sei, isso é completamente possível!

What you wanna do is to copy the root partition over to a USB stick and then change the /etc/fstab and /boot/cmdline.txt to make it boot from the external drive instead of the second partition on the SD card.

Se encontrou um tutorial, mas infelizmente não é em inglês, então tentarei explicar o procedimento com minhas próprias palavras.

  1. Reinicie o Pi com a única unidade externa sendo o pen drive USB (desta forma evitamos ter diferentes números de unidade em cada inicialização, já que IDs de unidade exclusivas não são possíveis se você quiser trocar os pen drives USB posteriormente). / p>

  2. Obtenha o número da unidade usando sudo blkid . Deve haver apenas um que se pareça com isto: /dev/sda1 .

  3. Usando o comando mount , podemos ver se ele foi montado automaticamente. Se não estiver listado, prossiga com o próximo passo. Se estiver, execute sudo umount /dev/sda1 (correto para números diferentes, se eles não forem iguais) para desmontar o pendrive.

  4. Em seguida, queremos formatar o pendrive USB para ter o sistema de arquivos correto para a partição raiz do Debian, que é preferencialmente ext4 . Você pode fazer isso executando o comando: sudo mkfs.ext4 /dev/sda1 .

  5. Depois disso, precisamos (re) montar o dispositivo USB em um local temporário para copiar a partição raiz do cartão SD. Fazemos isso executando: sudo mount /dev/sda1 /mnt . (Se o comando reclamar sobre /mnt não existente, crie uma pasta com esse nome executando: sudo mkdir /mnt e tente novamente.

  6. Agora é hora de copiar todos os dados da partição raiz alternando primeiro para o diretório principal com: cd / e depois executando este comando tar: sudo tar cf - * --exclude /mnt/* | ( cd /mnt; sudo tar xfp -) . Provavelmente não é a solução mais compacta, mas funcionou para mim. Tenha em mente que isso pode demorar um pouco, dependendo da velocidade do seu cartão SD e drive USB.

  7. Em seguida, precisamos alterar o /etc/fstab que contém as unidades que serão montadas na inicialização executando sudo nano /mnt/etc/fstab . ( Observe que isso está no pendrive, já que adicionamos /mnt . ) Você precisa alterar as linhas correspondentes para torná-las assim:

/dev/mmcblk0p1 /boot vfat defaults 0 0 /dev/sda1 / ext4 defaults,noatime 0 0

  1. Finalmente, precisamos informar a partição de inicialização no cartão SD para inicializar a partir da unidade USB. Mas primeiro é provavelmente uma boa idéia fazer um backup do arquivo que vamos alterar agora, antes de nos comprometermos a fazer a troca, executando: sudo cp /boot/cmdline.txt /boot/cmdline.txt.save .

  2. Execute sudo nano /boot/cmdline.txt para inserir nano para alterar os parâmetros de inicialização na primeira partição do cartão SD. Basicamente, precisamos alterar a entrada da partição raiz para a unidade USB. O tutorial oferece isso para ser inserido lá (1 linha):

    dwc_otg.lpm_enable=0 root=/dev/sda1 rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2

    Você pode ler o que esses parâmetros significam aqui .

    Agora salve e saia do nano e na próxima reinicialização, o seu Raspberry Pi deve inicializar a partir do pendrive, mas é claro que o cartão SD ainda é necessário, como você já mencionou.

Desde que a unidade USB seja a única unidade (além do cartão SD) na inicialização, isso deve funcionar. Você tem que ter um pouco de dinâmica e não vejo qualquer outra maneira de se referir à unidade diferente de usar /dev/diskX .

Edit: Eu esqueci de mencionar que você precisa duplicar a unidade USB depois de terminar ou fazer as mesmas etapas com outras instalações em outras unidades. Se a versão do Raspian incluindo os pacotes instalados for a mesma, não vejo nenhum motivo para que isso não funcione.

A partição /boot é bem básica e a linha que eu mencionei em 9. é basicamente tudo que ela faz. Ele só precisa entregá-lo para a partição correta com o sistema de arquivos correto e deve funcionar.

Espero que isso tenha sido útil para você.

Para as pessoas de língua alemã, deixarei aqui o link da fonte: Origem .

    
por 05.09.2015 / 11:27