Não é possível inicializar após a atualização do grub no Arch

2

Eu fiz uma atualização ontem e não reiniciei meu laptop até ter uma falha de energia. Após a reinicialização, descubro que não tenho disco rígido (ou assim ele afirma). Eu tentei arrancar em um disco ao vivo do arco e acabei com rootfs. Eu não sei o que fazer aqui realmente. Eu estava pensando em montar os discos, mas não sabia onde. Eu tenho sda, 1,2,3,4 e sdb, 1. A execução de du -h /dev/sda* mostra um zero no início de cada linha. Mas, novamente, df -h me mostra usando 0% do usb. Ainda assim, mesmo que eu os tenha montado, não tenho certeza do que faria, porque como reinstalar o grub ou o gummiboot? (Se é isso que o problema é. Eu acho que é porque eu vi uma atualização do grub).

O erro que recebo ao inicializar no live usb é

:: running early hook [udev]
:: running hook [udev]
:: Triggering uevents...
:: running hook [memdisk]
:: running hook [archiso]
:: running hook [archiso_loop_mnt]
:: running hook [archiso_pxe_common]
:: running hook [archiso_pxe_ndb]
:: running hook [archiso_pxe_http]
:: running hook [archiso_pxe_nfs]
:: Mounting '/dev/disk/by-label/ARCH_201409' to '/run/archiso/bootmnt'
Waiting 30 seconds for device /dev/disk/by-label/ARCH_201409 ...
[    9.375197] sd 6:0:0:0: [sdb] No Caching mode page found
[    9.375197] sd 6:0:0:0: [sdb] Assuming drive cache: write through
ERROR: '/dev/disk/by-label/ARCH_201409' device did not show up after 30 seconds...
   Falling back to interactive prompt
   You can try to fix the problem manually, log out when you are finished
sh: can't access tty; job control turned off
[rootfs /]#

Eu peguei o chrooted e agora estou localizado em [root@(none)]#

SOLUÇÃO

O Unetbootin parece ter problemas para criar o Arch's. Isso levou dois usb's. Fallback para rootfs em sdb e plugado em usb2 para sdc. Os rootfs não tinham fdisk nem nada, então montei sda1,2,4 em / mnt, / mnt / boot, / mnt / home, respectivamente. Eu então chrooted em / mnt ( [root@(none) ]# ).

De lá eu pude reformatar sdc (depois de copiar um archiso para / home / name / where). Então dd bs=4M if=/path/to/arch.iso of=/dev/sdc && sync e depois reiniciado.

Isso me deu uma inicialização de arco normal, na qual eu tinha o arch-chroot e podia executar corretamente systemctl start dhcpcd.service para acesso à Internet (ethernet). Eu tentei reinstalar o grub, mas não funcionou.

Eu fui com gummiboot (seguindo o guia do iniciante). Presto, o sistema funciona agora.

    
por Steven Walton 25.09.2014 / 22:55

1 resposta

3

Depois de um bate-papo, estou postando uma resposta resumindo algumas pistas interessantes a serem seguidas enquanto enfrento tais problemas.

Inicializando com segurança em uma imagem USB

Como você pode ver aqui, parece que o seu sistema teve algum problema ao tentar inicializar a partir da unidade USB:

ERROR: '/dev/disk/by-label/ARCH_201409' device did not show up after 30 seconds...
Falling back to interactive prompt
You can try to fix the problem manually, log out when you are finished

Enquanto a sua BIOS detecta com sucesso uma mídia inicializável e inicia uma sequência de inicialização, o Arch não inicializa corretamente devido a algum tipo de erro de disco. Como você disse no bate-papo, você formatou e enviou suas imagens em sua chave algumas vezes, o que poderia levar a imagens quebradas ou a tabelas de partição. Ao enviar uma imagem ISO inicializável para uma unidade USB, geralmente é uma boa ideia certificar-se de que a unidade esteja realmente limpa antes de prosseguir:

$ fdisk /dev/sdX # sdX being your USB drive (NOT partition!)
Command (m for help): d

Use d repetidamente até não restar nenhuma partição. Em seguida, recrie uma partição limpa ocupando todo o dispositivo:

$ fdisk /dev/sdbX
Command (m for help): n
Partition type:
    p   primary (1 primary, 0 extended, 3 free)
    e   extended
Select (default p): p
Partition number (1-4, default 1): 1
# ...

Em seguida, seguiremos algumas opções relacionadas ao tamanho, basta escolher o padrão todas as vezes. Quando terminar, escreva as alterações no disco usando w . Agora que a tabela de partições é um pouco mais limpa, você pode formatar ...

$ mkfs.ext4 /dev/sdX1

... e envie o seu Arch ISO para a unidade:

$ dd if=/path/to/arch.iso of=/dev/sdX # Again, the device, NOT the partition.

Nota: é muito importante que tanto o ISO Arch quanto o sistema rígido compartilhem a mesma arquitetura!

Neste ponto, você pode reinicializar sua máquina e acessar o sistema ao vivo sem muita dificuldade. Apenas certifique-se de que sua unidade USB vem em primeiro lugar na sua seqüência de inicialização da BIOS.

Chrooting no sistema antigo / quebrado

Agora, isso é um pouco mais complicado. Vou reutilizar o conteúdo do Wiki do Arch . Você tem duas opções aqui:

  • Use os scripts do Arch (recomendado).
  • Chroot tudo manualmente, manualmente.

No primeiro caso, tudo o que você precisa fazer é montar suas partições " caseiras ": aquelas que você criou quando instalou o sistema:

$ mount -o exec /mnt /dev/sda1      # / partition.
$ mount /mnt/boot /dev/sda2         # /boot partition.
$ mount /mnt/home /dev/sda3         # /home partition.
$ # ... and so on.

Quando terminar, use apenas arch-chroot para entrar:

$ arch-chroot /mnt /bin/bash

Agora, se você quiser chorar tudo sozinho, terá um pouco mais de trabalho para fazer. Primeiro, monte os sistemas anteriores e adicione:

$ mount -t proc proc /mnt/proc/     # procfs
$ mount --rbind /sys /mnt/sys/      # sysfs
$ mount --rbind /dev /mnt/dev/      # /dev
$ mount --rbind /run /mnt/run/      # /run

Você também pode querer um resolvedor de DNS em funcionamento (ainda que seja improvável que tenha sido danificado):

$ cp /etc/resolv.conf /mnt/etc/resolv.conf

Finalmente, entre:

$ chroot /mnt /bin/bash

Investigando

Basicamente, o seu sistema acabou de ficar sem energia. Como você disse, não havia nenhuma tarefa significativa em execução (pelo menos, nenhuma atualização), portanto a perda deve ter sido limitada. Primeiras coisas primeiro, verifique seus registros . Dê uma olhada em /var/log e use journalctl para encontrar informações sobre o que aconteceu antes do desligamento.

Reinstalando o GRUB

No bate-papo, você disse que seu sistema não estava mais disponível no menu de inicialização, provavelmente algo relacionado à atualização mais recente que você fez. Vamos reinstalar:

$ pacman -S grub # Should not do anything though.
$ grub-install --recheck /dev/sdX # Your hard drive.
$ grub-mkconfig -o /boot/grub/grub.cfg
    
por 26.09.2014 / 18:16