Inicializar a partir de uma unidade / unidade USB externa?

44

Eu sei que não é possível inicializar diretamente de um pendrive / unidade USB externa, mas você precisa inicializar a partir do cartão SD e o dispositivo externo pode assumir o controle. Qual é a maneira mais fácil e preferida de configurar isso, portanto, inicialize a partir do cartão SD e deixe um dispositivo externo assumir o controle?

stefan.at.wpf
fonte

Respostas:

37

Se você possui um sistema operacional em execução no Pi, primeiro seria útil saber se o dispositivo USB é suportado. Você pode fazer isso montando-o normalmente:

mount /dev/sda1 /mnt 

Se isso falhar, você não poderá usar o dispositivo USB como partição raiz sem ativar os módulos do kernel. E para isso você pode precisar compilar seu próprio kernel.

Se for bem-sucedido, deve funcionar bem com alguns ajustes nos parâmetros de inicialização que o Pi usa:

Em uma imagem existente, abra cmdline.txt, que pode ser encontrado na partição de inicialização, e digite as seguintes linhas:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 
root=/dev/sda1 rootfstype=ext4 rootwait text

Tudo o que você deve fazer é fazer o flash dessa imagem no cartão SD e inicializar o Pi. Se tudo estiver bem, /dev/sda1deve ser o local da unidade USB quando o Pi inicializar e, portanto, deve tentar usar esse local como raiz. O rootwaitparâmetro é importante, pois fará com que o processo de inicialização seja interrompido até que a unidade USB seja reconhecida. Sem ele, o Pi pode reclamar que o local não existe.

Sugiro que você copie a partição raiz de uma imagem existente do Raspberry Pi para a sua unidade USB e use-a para inicializar.

Entre em contato se precisar de mais informações.

Jivings
fonte
+1 ótima resposta. console=...Já não deveria estar lá?
Alex Chamberlain
2
Além disso, você pode usar UUIDs na linha de comando?
Alex Chamberlain
Sim, eu forneci o arquivo inteiro e onde você está falando sobre o uso de UUIDs?
Jivings
3
Muito obrigado Jivings, eu "mostrei" a imagem oficial para o meu pen drive, copiei o material da partição FAT para um cartão SD e ajustei o cmdline.txt. No meu caso, a partição raiz é / dev / sda2, porque / dev / sda1 é a partição de inicialização (não utilizada) no pendrive. Eu não precisava do rootwait no meu caso, mas é bom conhecer esse parâmetro!
stefan.at.wpf
@ stefan.at.wpf (e Jivings) Você pode usar UUIDs em vez de /dev/sdx- pelo menos em /etc/fstab/- então não importa se as xalterações são alteradas.
Alex Chamberlain
4

A maneira mais fácil de configurar isso seria usar BerryBoot . Ele suporta a instalação de, ou de, uma ou mais imagens em um pendrive (ou no próprio cartão SD) fora da caixa por meio de uma interface gráfica agradável.

Para configurar tudo o que você precisa fazer é copiar os ~ 70 MB de arquivos de instalação em um cartão SD formatado em FAT32, inseri-lo no seu dispositivo e inicializar. Ele ainda tem uma lista de imagens pré-configuradas que podem ser baixadas e instaladas automaticamente para você através de uma conexão Ethernet ou Wi-Fi.

Em seguida, você seleciona o sistema operacional que deseja inicializar por padrão a partir das imagens disponíveis e, se quiser adicionar novas imagens ou alterar o padrão posteriormente, basta pressionar enter durante o processo de inicialização para reconfigurar!

Nathan Dunn
fonte
mover a imagem para o cartão SD? Eu pensei que queremos instalá-lo em um pendrive?
Suhaib
Como o OP afirmou, não é possível inicializar diretamente de um pendrive em um Raspberry Pi - você precisa de um cartão SD com um gerenciador de inicialização instalado que possa transferir o processo para outro dispositivo depois de ligado.
Nathan Dunn
2

ok, para esclarecer -

na sequência de resposta @Jivings -

Existem várias maneiras de se referir a um disco no fstab. O uso de / dev / sdXX nem sempre pode ser seguro, pois a ordem em que os discos scsi aparecem pode não ser garantida.

O que eu não sei é se a configuração de inicialização compreende algo além de rótulos básicos de dispositivo. "root = / dev / sda1" é uma abstração, no entanto, em teoria, root = LABEL = TEST pode funcionar. Eu preciso investigar.

Peço desculpas se não estou sendo muito claro. Eu tenho algum ganho de habilidade para explicar o linux para novas pessoas, obviamente.

Nox
fonte
1
Jivings: você poderia explicar alguns dos parâmetros no seu exemplo de linha de comando para nós nubies? Obrigado.
Michael Moriarty
Ele nunca mencionou fstab. O nome do dispositivo / partição de destino é um parâmetro do kernel. Acredito que outras convenções de nomenclatura como o UUID sejam possíveis com os kernels modernos, especialmente se eles tiverem módulos initrd / initramfs.
precisa saber é