Como devo configurar o grub para inicializar o kernel Linux a partir de um disco rígido USB?


17

Eu tenho um disco rígido de laptop em um gabinete externo que eu uso como um pendrive grande. Para uma reviravolta adicional, eu instalei o Linux nele, para que eu possa inicializar qualquer máquina com minha distribuição de escolha (por exemplo, para recuperação de dados ou reparo de um sistema b0rked ou apenas usando um laptop emprestado sem destruir o Windows pré-instalado). O problema é que, dependendo da configuração do hardware, o disco rígido USB pode estar visível em diferentes caminhos. Para a configuração do grub, eu apenas uso (hda0,0), pois é relativo ao dispositivo do qual o grub foi iniciado. Tenho entradas UUID no /etc/fstab. Também especifico rootwaitnos parâmetros do kernel para que ele aguarde o subsistema USB se acalmar antes de tentar montar o dispositivo.

O que devo passar para o kernel como root=? Atualmente, inicialize a partir do pendrive uma vez, verifique as mensagens de depuração para ver qual /dev/sdXdispositivo foi atribuído à unidade USB pelo kernel, depois reinicie e edite a configuração do grub. Não posso alterar nada no PC além de ativar o Boot from USB hard driveBIOS e defini-lo como prioridade mais alta do que os discos rígidos internos.

Existem vários scripts geradores do initrd que incluem suporte ao UUID no caminho do dispositivo raiz, infelizmente o nativo do Gentoo (genkernel) não suporta rootwaite não tive sorte em tentar usar outros.

O processo de inicialização é assim ( é bastante semelhante no Windows ):

  1. O BIOS escolhe o dispositivo de inicialização e carrega qualquer que seja seu MBR (que passa a ser o grub stage-1).
  2. O Grub carrega seus arquivos de configuração e estágio 2 do dispositivo que ele definiu como root, usando (hd0)o dispositivo para o qual foi carregado pelo BIOS.
  3. O Grub carrega e inicia um kernel (ainda com a mesma numeração, para que eu possa usá-lo (hd0,0)novamente).
  4. O kernel inicializa todos os dispositivos embutidos ( rootwaitisso é mágico agora).
  5. O kernel monta a partição na qual foi passada como root(este é um parâmetro do kernel, não um parâmetro do grub).
  6. init.dinicia o processo de inicialização do usuário, incluindo a montagem de itens /etc/fstab.

A parte 5 é a que está me dando problemas.

Respostas:


6

Eu acho que a resposta deve ser usar um root=LABEL=...ouroot=UUID=...

Mas você indica que isso não funciona para você. Eu sugeriria investigar se há algum problema com as ações do seu initrd.


Eu não tenho um initrd, esse é o problema. O genkernel não suporta a opção "rootwait" e outros não funcionam com o Gentoo.
Skolima 06/10/08

2

Eu poderia estar enganado ou possivelmente apenas estar entendendo mal você, mas a escolha do dispositivo de inicialização não é algo que seria configurado a partir do BIOS da máquina que você está inicializando?

Eu acho que seria uma questão de escolher a unidade USB, que teria o GRUB instalado como seu carregador de inicialização, e depois escolher a distribuição que você deseja inicializar no menu GRUB.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.