Processo de inicialização - alterações do nome Dev sdX

1

Eu tinha uma máquina Slack 13.1 com o kernel 2.6.36. Então atualizei o kernel para 3.12.1.

Esta máquina conectou: um disco inicializável com três parções (/ dev / sda1 - > arquivos do SO Linux ..., / dev / sda2 - > data, / dev / sda3 - > mais dados ), um SSD "fictício" apenas para armazenar coisas (/ dev / sdb1) e portas USB.

O fato é que sempre que eu tento iniciar o Linux com um USB contendo dados (não um LiveUSB) conectado à máquina, durante o processo de inicialização há algo acontecendo que atribui o dispositivo sda a o USB, por isso não é possível montar as partições do Linux no "disco de inicialização" devido a um Kernel Panic :

VFS: Mounted root (vfat filesystem) readonly on device 8:1.
devtmpfs: error mounting -2
[...]
Kernel panic - not syncing: no init found. Try passing init=..

O bootloader que estou usando é LILO . Não sei se existe alguma maneira de forçar o processo de inicialização a não alterar nomes de dispositivos ou pré-atribuir qualquer um deles a um determinado dispositivo. Esta é a sua configuração:

# Linux bootable partition config begins
image = /boot/vmlinuz
root=/dev/sda1    
append="panic=120"
label=3.12.20-smp
read-only 

/ etc / fstab:

/dev/sda1        /                ext4        rw               1   1

Como a partição do dispositivo USB é considerada como sda1, obviosuly não contém nenhum tipo de processo ou aplicativo init, então fico com o kernel em pânico.

Eu tinha tentado com root="LABEL = myLabel" ou root="LABEL = current" sem sorte ... Acho que porque ele procura o rótulo no nó raiz, não em todas as partições: S

Alguma sugestão do que está acontecendo? É possível consertar isso? Obrigado antecipadamente!

    
por aloplop85 23.01.2015 / 13:27

3 respostas

0

O problema é que os nomes dos discos são criados sequencialmente; o primeiro disco a ser detectado pelo kernel torna-se /dev/sda , o segundo é /dev/sdb etc.

A solução para o seu problema seria desabilitar o uso (ou seja, a detecção) de discos USB (incluindo unidades USB) até que o sistema tenha concluído a inicialização. Isso pode ser feito configurando o kernel para não incluir o driver de armazenamento USB no próprio kernel, mas para construí-lo como um módulo. Dessa forma, durante a inicialização apenas o disco "normal" é encontrado, e somente após o sistema de arquivos raiz ter sido montado é possível carregar o módulo usb_storage.ko .

Isto assume que você construiu o kernel e não está usando um initrd (ramdisk inicial).

    
por 23.01.2015 / 16:26
2

Esqueça a identificação de dispositivos pelo nome do desenvolvedor. Use o UUID e você não terá nenhum problema.

Você pode identificar o UUID dos dispositivos com o comando blkid .

A propósito, não sei se o LILO suporta o UUID. Caso não mude para o GRUB.

    
por 23.01.2015 / 14:17
1

Esta numeração de dispositivos no Linux é uma das piores coisas sobre esse sistema operacional. Todos os outros * nix razoáveis usam algo como controller / target / lun para endereçar discos.

Uma vez resolvi esse problema no meu PC alterando a ordem de dispositivo de inicialização no BIOS (coloque o USB por último).

Eu não sei se isso funcionará em todas as situações, já que o Linux geralmente não liga para as configurações da BIOS.

    
por 24.01.2015 / 23:27