Sistema com erro de boot e inacessibilidade ao dispositivo

Iniciado por Tasrael, 07 de Outubro de 2014, 14:51

tópico anterior - próximo tópico

Tasrael

Olá a todos.

Como um inexperiente que sou, e depois de muito pesquisar problemas semelhantes, decidi abrir este tópico. Eu tenho o ubuntu 14.04 instalado em um pen drive sandisk 16g. Na última vez que tentei usá-lo, logo após o menu de boot, o sistema não dá continuidade ao processo, abrindo então uma tela preta com os dizeres de um erro e com o busybox esperando um comando. Mesmo usando o live cd não consigo ter acesso ao pen drive, por este estar "somente leitura" e não importa o comando que eu execute pelo terminal, a resposta é sempre a mesma. Não sei o que fazer. Nem o geparted consegue ajudar. Alguém tem alguma idéia? ???

druidaobelix

Citarabrindo então uma tela preta com os dizeres de um erro

Olá /Tasrael/, é imprescindível que você reporte exatamente os tais "dizeres de um erro", pois só assim se pode começar a raciocinar sobre alguma possibilidade.

Diga também algum coisa sobre a configuração de hardware de sua máquina para que se possa ter uma idéia, ainda que remota, do computador em questão. O quê mais tem de disco? Outros sistemas operacionais instalados? Quais?
Enfim, ilumine quem está do lado de cá com informações sobre o contexto do problema.
www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

Tasrael

Ok. Perdoe o meu amadorismo.

Vamos lá, os dizeres são estes:

mount: mounting /dev/disk/by-uuid/fac854d7-80dc-44e7-8f9e-ddf591e105b3 on /root failed: Invalid argument
mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed: No such file or directory
Target filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.

Quanto a hardware, para uso do ubuntu eu utilizo um notebook positivo sim+ 6000 com processador intel B940, 6g DDR3, HD samsung de 500g. HD esse que foi o motivo para instalar o sistema no pen drive em caráter de urgência meses atrás por estar com defeito.

druidaobelix

#3
Esse é um clássico nos problemas de disco. :-(

1) Inicie o sistema a partir de um segundo live usb-pendrive ou cdrom;

2) Se existirem arquivos seus pessoais (fotos, documentos, textos, etc) nessa unidade veja se é possível copiá-los para outra unidade (backup) **antes** de tentar qualquer solução que possa vir a destruir tais arquivos;

3) determine exatamente qual é a unidade de disco que corresponde ao pendrive sandisk 16g.
Para determinar isso, execute os comandos:

sudo fdisk -l

sudo blkid


(é a letra 'ele' ali acima, depois do b em blkid, quase todo mundo erra nisso)

As saídas irão identificar as unidades de disco do sistema e ainda o sistema de arquivos utilizado (fat32, ext3, ext4, ntfs, etc)

Vamos supor (é só um exemplo) que o sandisk seja a unidade 'b', o caso concreto só o comando aí que vai te dizer

Sabendo então qual é a unidade, e com ela desmontada, execute o comando:

sudo fsck /dev/sdb1

(note que o 'b1' ali no final de sdb1 é hipotético, você troca pela letra e indicação do caso concreto)

Pode acontecer do seu pendrive ter muitos, mas muitos defeitos mesmo e então o comando acima se torna um transtorno, pois cada vez que ele encontra um erro irá pedir para você confirmar se quer corrigir. As vezes isso acontece mais de 500 ou 1000 vezes, e aí fica altamente cansativo ficar teclando 'y' (de yes / sim) a todo instante.

Em razão disso e como não sabemos, a prori, a extensão do problema, talvez seja melhor usar assim:

sudo fsck -y /dev/sdb1

O 'y' na linha de comando acima está dizendo para responder 'sim' (yes) a todas as perguntas (nem sempre isso é uma boa idéia)

(lembrando novamente que o sdb1 é hipotético, o comando "fdisk -l" é quem dirá o exato disco e partição a ser corrigido e que corresponde ao sandisk mencionado.)

Outro detalhe: isso só vai funcionar da forma acima se o sistema de arquivos do sandisk por fat32.
Se o sistema de arquivos for outro, por exemplo, ext4, terá que usar:

sudo fsck.ext4 -y /dev/sdb1

e assim por diante.

Isso posto, o próximo passo é recuperar o Grub, que é o gerenciador de boot do sistema.

Para isso, existe muito material aqui no Fórum ensinando como fazer.

Existe um tópico específico com esse título:

Mil e uma maneiras de recuperar GRUB 2, GRUB 2 EFI e GRUB

http://ubuntuforum-br.org/index.php/topic,14614.0.html

Estude esse tópico e aí se tiver dúvidas conversamos mais sobre isso tentando esclarecer.

Existem outras possibilidades de abordar o problema, a partir do próprio prompt do erro, entretanto precisaria de mais tempo para abordar isso, matéria prima essa que me falta no momento.

É preciso destacar, contudo, que não necessariamente tudo isso vai dar certo e recuperar o sistema então existente no pendrive (sandisk), pois se ocorreu alguma avaria física importante ele pode se tornar inutilizável ou bastante inutilizável, o que não é assim incomum em pendrives, dependendo da qualidade e do tempo de uso. Outra questão é que se você já usou o GParted pode ter literalmente destruído tudo o que havia lá na partição, questão de ver.

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

Tasrael

Muito obrigado pelo passo a passo bem explicado. Eu apliquei a solução que você indicou para sistema de arquivo ext4, e então chegamos ao "X" da questão.

Usando o comando sudo fsck.ext4 -y /dev/sdb1 obtive o seguinte resultado:

fsck.ext4: Read-only file system while trying to open /dev/sdd1
Disk write-protected; use the -n option to do a read-only
check of the device.

E em seguida a opção -n:

Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/sdd1: clean, 362754/915712 files, 2657708/3657984 blocks

Pelo o que entendi, os arquivos estão no modo "somente leitura", certo? Então quando tento montar o dispositvo acontece isso:

Unable to access "15 GB Volume"

Error mounting /dev/sdc1 at /media/ubuntu/fac854d7-80dc-44e7-8f9e-ddf591e105b3: Command-line `mount -t "ext4" -o "uhelper=udisks2,nodev,nosuid" "/dev/sdc1" "/media/ubuntu/fac854d7-80dc-44e7-8f9e-ddf591e105b3"' exited with non-zero exit status 32: mount: block device /dev/sdc1 is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/sdc1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

Não estou me importando tanto com o sistema por já ter feito backup antes disso acontecer, o problema mesmo é não poder formatar. Por causa desse somente leitura infernal o gparted não consegue fazer nada. Estou temendo o pior.

druidaobelix

Então, /Tasrael/, para usar o fsck e bem assim para formatar é necessário que o dispositivo esteja desmontado.

Note que ao introduzir o dispositivo pendrive no computador o Ubuntu 14.04 automaticamente faz a montagem, então é necessário desmontá-lo antes de usar o fsck.

Antes de mais nada e para que se possa ter uma visão melhor do que está ocorrendo aí é preferível que você passe aqui a informação do sistema de disco para que o fórum possa avaliar.

Inicie o sistema no modo live (cdrom ou um outro pendrive)
Após e somente após ter iniciado e completado a carga do sistema live, introduza o sandisk. Não deixe carregar com o dispositivo já introduzido (conectado), pois se você criou nele uma partição swap ela vai ativar, então, só depois de carregar introduza o dispositivo e deixe montar normalmente para que possamos ver o estado de montagem.

Isso posto, abra um terminal (Ctrl+Alt+T), execute os comandos a seguir e cole aqui no fórum os resultados:

sudo fdisk -l

sudo blkid

cat /media/*

cat /etc/mtab


O último comando deverá mostrar a situação real de montagem do dispositivo, que você diz estar sendo somente leitura (ready only - ro), o que não deveria estar ocorrendo. Que o dispositivo monte ro quando está com defeito é lógico quando ele é que está fazendo o boot, porque a ideia é exatamente preservar o sistema de arquivo de um aumento de avarias, porém como não é ele que está fazendo o boot e sim um outro live, não deveria estar montando ro, mas vamos ver o resultado dos comandos acima.

Isso posto, disponibilizados os resultados dos comandos aqui, tente desmontar o dispositivo e, se der certo, utilize novamente o fsck.

Para desmontar o dispositivo (estou supondo que esteja em sdb1 como você referenciou anteriormente):

sudo umount /dev/sdb1

Não use o modo gráfico para ver se deu certo, pois ao clicar sobre o ícone o dispositivo monta de novo e aí não dá certo, portanto, para verificar use novamente:

cat /etc/mtab

a linha que corresponde ao dispositivo deve ter desaparecido (porque desmontou).

Use então o fsck porém como já está indicando 'clean' na verificação anterior, force a execução usando o parâmetro -f

sudo fsck.ext4 -y -f /dev/sdb1

A partir desse ponto é recuperar o Grub como já havia sido dito anteriormente.
www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

Tasrael

Retomando. Obrigado /druidaobelix/ pelo esforço em me ajudar. Segui a risca as orientações, mas o resultado não deu êxito:

ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x46d523a0

   Device Boot      Start         End      Blocks   Id  System

Disk /dev/sdb: 16.0 GB, 16008609792 bytes
255 heads, 63 sectors/track, 1946 cylinders, total 31266816 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c8ef7

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048    29265919    14631936   83  Linux
/dev/sdb2        29267966    31266815      999425    5  Extended
/dev/sdb5        29267968    31264767      998400   82  Linux swap / Solaris

ubuntu@ubuntu:~$ sudo blkid
/dev/loop0: TYPE="squashfs"
/dev/sr0: LABEL="Ubuntu 14.04 LTS amd64" TYPE="iso9660"
/dev/sdb1: UUID="fac854d7-80dc-44e7-8f9e-ddf591e105b3" TYPE="ext4"
/dev/sdb5: UUID="9937da45-85eb-43b9-9ea3-f01c8e54a176" TYPE="swap"

ubuntu@ubuntu:~$ cat /media/*
cat: /media/cdrom: Is a directory
cat: /media/ubuntu: Is a directory

ubuntu@ubuntu:~$ cat /etc/mtab
/cow / overlayfs rw 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0
udev /dev devtmpfs rw,mode=0755 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0
tmpfs /run tmpfs rw,noexec,nosuid,size=10%,mode=0755 0 0
/dev/sr0 /cdrom iso9660 ro,noatime 0 0
/dev/loop0 /rofs squashfs ro,noatime 0 0
none /sys/fs/cgroup tmpfs rw 0 0
none /sys/fs/fuse/connections fusectl rw 0 0
none /sys/kernel/debug debugfs rw 0 0
none /sys/kernel/security securityfs rw 0 0
tmpfs /tmp tmpfs rw,nosuid,nodev 0 0
none /run/lock tmpfs rw,noexec,nosuid,nodev,size=5242880 0 0
none /run/shm tmpfs rw,nosuid,nodev 0 0
none /run/user tmpfs rw,noexec,nosuid,nodev,size=104857600,mode=0755 0 0
none /sys/fs/pstore pstore rw 0 0
systemd /sys/fs/cgroup/systemd cgroup rw,noexec,nosuid,nodev,none,name=systemd 0 0
gvfsd-fuse /run/user/999/gvfs fuse.gvfsd-fuse rw,nosuid,nodev,user=ubuntu 0 0

ubuntu@ubuntu:~$ sudo umount /dev/sdb1
umount: /dev/sdb1: not mounted

ubuntu@ubuntu:~$ cat /etc/mtab

/cow / overlayfs rw 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0
udev /dev devtmpfs rw,mode=0755 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0
tmpfs /run tmpfs rw,noexec,nosuid,size=10%,mode=0755 0 0
/dev/sr0 /cdrom iso9660 ro,noatime 0 0
/dev/loop0 /rofs squashfs ro,noatime 0 0
none /sys/fs/cgroup tmpfs rw 0 0
none /sys/fs/fuse/connections fusectl rw 0 0
none /sys/kernel/debug debugfs rw 0 0
none /sys/kernel/security securityfs rw 0 0
tmpfs /tmp tmpfs rw,nosuid,nodev 0 0
none /run/lock tmpfs rw,noexec,nosuid,nodev,size=5242880 0 0
none /run/shm tmpfs rw,nosuid,nodev 0 0
none /run/user tmpfs rw,noexec,nosuid,nodev,size=104857600,mode=0755 0 0
none /sys/fs/pstore pstore rw 0 0
systemd /sys/fs/cgroup/systemd cgroup rw,noexec,nosuid,nodev,none,name=systemd 0 0
gvfsd-fuse /run/user/999/gvfs fuse.gvfsd-fuse rw,nosuid,nodev,user=ubuntu 0 0

ubuntu@ubuntu:~$ sudo fsck.ext4 -y -f /dev/sdb1
e2fsck 1.42.9 (4-Feb-2014)
fsck.ext4: Read-only file system while trying to open /dev/sdb1
Disk write-protected; use the -n option to do a read-only
check of the device.

A coisa é bem confusa. Dá pra perceber que tanto o HD do notebook quanto o pen drive são identificados, mas nenhum diretório do pen drive é relacionado. Note que nas duas vezes que o comando cat /etc/mtab é usado, o resultado é o mesmo; além disso, o resultado foi o mesmo quando conectei o dispositivo após o total carregamento do sistema e antes de usar o terminal:

Error mounting /dev/sdc1 at /media/ubuntu/fac854d7-80dc-44e7-8f9e-ddf591e105b3: Command-line `mount -t "ext4" -o "uhelper=udisks2,nodev,nosuid" "/dev/sdc1" "/media/ubuntu/fac854d7-80dc-44e7-8f9e-ddf591e105b3"' exited with non-zero exit status 32: mount: block device /dev/sdc1 is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/sdc1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

Enfim, não sei se vou ter sucesso em recuperar esse pen drive.

druidaobelix

#7
1) Não observo nenhuma partição definida em sda, é isso mesmo, não tem nada lá, nem mesmo a tabela de partição?
Isso não deve ter maior relevância no caso, mas sempre é bom esclarecer pois quando não se está diante do equipamento tudo é muito mais difícil para analisar.

2) Também não entendi o último bloco com mensagens de erro e fazendo referência a sdc (Error mounting /dev/sdc1 at /media/ubuntu/fac854d7-80dc-44e7-8f9e-ddf591e105b3 [..] etc) o que, salvo engano, é inconsistente com o resultado do 'fdisk' acima, pois nele não aparece nenhuma unidade sdc. Então, que unidade sdc é essa que esta referida, já que pelo fdisk não há sdc no sistema?

3) Para tirar a dúvida sobre a organização de discos do sistema (e adiante também pode ser útil para outra finalidade), vamos utilizar um outro programa e registrar aqui o resultado. No terminal, digite:

sudo parted

Você será colocado diante de um prompt (piscando) do 'parted', então digite:

select /dev/sdb

Deverá dizer como retorno algo assim: "usando /dev/sdb", então digite:

print all

copie com o mouse e cole o resultado aqui no forum

para sair do 'parted' digite:

quit

4) O que queremos com o 'fsck' é verificar a integridade do sistema de arquivos para que se possa ir para o próximo passo, que é recuperar o Grub.
Na primeira passagem o comando já disse que está "clean", então o que queremos agora é apenas melhor confirmar isso, pois que se estiver mesmo nesse estado significa que não há erros detectados no sistema de arquivos (o que não quer dizer que um ou mais arquivos não possam estar internamente avariados).

É uma diferença sutil, porém erros no sistema de arquivo é diferente de erro em arquivos. Sistema de arquivos é um encadeamento lógico que observa certas condições exteriores, o que é diferente do conteúdo interno de um arquivo em particular.
Isso quer dizer que algumas vezes um fsck (que é um scandisk) pode não encontrar um erro num sistema de arquivos, entretanto um arquivo qualquer estar internamente avariado e por isso o computador não consegue executar determinada função.

Mas voltando ao que interessa, já que existe a previa informação do 'clean' e apenas queremos confirmar, execute o fsck mesmo com o parâmetro 'n' porém adicionando o parâmetro 'f' e veja o resultado, veja se confirma a inexistência de erro. Então execute assim:

sudo fsck.ext4 -n -f /dev/sdb1

Lembre ainda de não executar 'fsck' em disco montado,, embora com o parâmetro 'n' não haverá esse alerta (WARNING!!!  The filesystem is mounted.   If you continue you ***WILL*** cause ***SEVERE*** filesystem damage.), exatamente porque o '-n' está dizendo "-n para "não fazer alterações no sistema de arquivos". Apenas estou aqui evidenciando essa observação para o caso de você querer testar com algum outro pendrive, outro disco ou outro computador, então tenha isso sempre em conta.


5) Como eu desconfiava, existe uma partição swap no pendrive "sandisk-16GB', portanto, não se esqueça de não iniciar o sistema com ele plugado, pois essa partição possivelmente será detectada e utilizada pelo sistema, o que inviabiliza qualquer tratamento global do dispositivo.

6) Na hipótese de lá no passo 4, usando os parâmetros -n e -f, não apontar mesmo erro no sistema de arquivos, então é o caso de partir diretamente para a tentativa de recuperar o Grub.

Caso você não tenha familiaridade (ou tenha dificuldade) com essa recuperação do Grub, amplamente descrita no link que passei no post #3, tente utilizar então uma ferramenta simples com interface gráfica que ajuda bastante a execução da tarefa de recuperação do Grub.

Fiz no passado um tutorial sobre a ferramenta de interface gráfica Boot-Repair:

Boot-Repair-Ubuntu para recuperação do Grub-2

http://ubuntuforum-br.org/index.php/topic,84609.0.html

entretanto, esse post é de junho de 2011 e está desatualizado em face da versão atual 14.04 do Utunbu, pois a ferramenta gráfica agora se chama apenas boot-repair e não vem mais por padrão no Ubuntu (não está na Central de Programas do Ubuntu), porém ainda pode ser usada, bastando que se habilite a ppa e fazendo a instalação

É muito fácil de instalar e usar, mesmo a partir de live-cdrom.
No terminal faça:

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo sed 's/trusty/saucy/g' -i /etc/apt/sources.list.d/yannubuntu-boot-repair-trusty.list
sudo apt-get update
sudo apt-get install -y boot-repair && (boot-repair &)


Evidentemente ao final de cada linha acima dê um [Enter] e deixe executar, após o que outra linha e assim sucessivamente.
Ao final da instalação ela sozinha chama o programa, mas se quiser chamar novamente, basta digitar no terminal: boot-repair

Possivelmente você já deve saber disso, mas por reforço é bom lembrar, esses códigos mais longos é melhor não digitar no terminal, pois a chance de erro é grande, então é melhor copiar com o mouse o colar no terminal usando o botão direito do mouse.

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

Apenas mais um detalhe na recuperação do Grub pelo Boot-Repair.

1)Introduza o pendrive (sandisk-16GB) somente após a inicilização completa do live-cdrom (para não bloquear o swap), mas antes de iniciar o boot-repair;
2) mantenha o pendrive "sandisk" desmontado (use o umount se o caso);
3) antes de aplicar o boot-repair gere um relatório (bootinfo) por ele próprio, isto é, vai gerar uma url onde está o relatório, que é bom anotar e, se o caso, postar aqui no forum, pois permite acesso ao relatório integral da situação de boot e discos do sistema;
4) possivelmente você terá que usar as "Opções Avançadas" (porque o seu boot não é pelo padrão sda e sim pelo sdb), marcando na aba "Opções da MBR" sdb1.

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.