[FUG-BR] 7.0 Não arranca depois de actualizacao

Patrick Tracanelli eksffa em freebsdbrasil.com.br
Quinta Fevereiro 28 00:27:20 BRT 2008


>>>  Can't work out which disk we are booting from.
>>>  Guessed BIOS device 0xffffffff not found by probes, defaulting to disk0:
>>>  panic: free: guard1 fail @ 0x6c23c
>>>  from /usr/src/sys/boot/i386/loader/../../common/module.c:959
>>>  press any key to reboot

O loader não consegue relacionar o ID de disco que a BIOS informa ao 
disco de fato. Isso pode ser por corrupcao do proprio loader ou algum 
estagio intermediario (boot1, 2, ..).

Entao voce tem algumas alternativas.

1) De o boot com um CD, va ate partition, marque a particao como ativa 
com a tecla S (set active) e aperte W (write to disk), instale o boot 
manager, e tente bootar. Se nao funcionar proxima alternativa:

2) Entre com o CD de em modo Fixit, escolha a midia Live como opcao, 
monte o s1a do seu disco em algum lugar (/mnt por exemplo) e remova o 
/boot/loader. Sim, nos nao precisamos do loader. Ele prove uma serie de 
recursos mas nao eh imperativo. Entao remova, os boot stages vao tentar 
carregar o kernel diretamente sem solicitar intervencao do loader 
(afinal ele nao vai existir). Se nao funcionar:

3) Antes de identificar qual particao voce quer bootar via F1, F2, etc, 
de uma barra de espaco. Voce caira numa prompt absurtamente precaria, 
algo assim:

 >> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/boot/loader
boot:

E ai digite por qual disco voce quer bootar. A sintaxe eh:

<BIOS_ID>:<device>(<device_unit>,<label>)/<arquivo>

<BIOS_ID> é o ID da controladora de disco na BIOS, onde 0 = controladora 
1 (IDE 1 por exemplo, ou scsi ID), etc;

<device> é o nome do device driver (ad pra ata disk, da pra scsi, etc)

<device_unit> pro numero do disco, 0 = disco1, etc;

<label> = label ;)

<arquivo> é o nome do arquivo onde voce quer bootar; o padrão (por 
omissão inclusive) é o /boot/loader do disco que voce escolher; mas como 
eu disse antes o loader não é imperativo, você não precisa dele.

Por exemplo, supondo que voce queira o disco ad0s1a no ID 0

0:ad(0,a)

Se quer ad2s2a

2:ad(1,a)

Ou entao

1:ad(1,a)
ou
1:ad(0,a)

Nao importa, voce quem decide.

Como estamos contando com a hipotese do loader estar danificado, pule-o, 
chamando direto o kernel, por exemplo:

1:ad(1,a)/boot/kernel/kernel

Pronto. Não tem como não funcionar. Pode até ser que você ainda não 
consiga bootar, mas a causa (e consequentemente a mensagem de erro) 
certamente será outra.

Assim que bootar a primeira coisa é reinstalar o loader, entre em 
/usr/src/sys/boot/i386/loader e reinstale. Caso voce precise bootar 
varias vezes escolhendo o disco manualmente, o padrão acima pode ser 
tornado permanente em /boot.config, por exemplo com:

echo "1:ad(1,a)/boot/kernel/kernel" > /boot.config

Boa sorte. Espero que voce consiga com o procedimento 1 ou 2 pois o 
ultimo eh chatissimo. BIOS ID se o disco for ATA ou SATA não é nada linear.

--
Patrick Tracanelli





Mais detalhes sobre a lista de discussão freebsd