/ dev / sda1: se encontraron inodos que formaban parte de una lista enlazada huérfana corrupta

16

Estaba usando mi computadora portátil Ubuntu 2015.04 (con la casa de usuario encriptada con ecryptfs) normalmente cuando, de repente, el disco duro se volvió de solo lectura.

Reinicié y ahora está atascado en esto:

[    0.703206] ACPI PCC probe failed.
starting version 219
error: /dev/sdb: No medium found
error: /dev/sdb: No medium found
Welcome to emergency mode! After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default or ^D to
try again to boot into default mode.
root@nico:~#

Parte interesante de los registros del sistema:

-- Unit systemd-fsckd.service has begun starting up.
system-fsck[475]: /dev/sda1 contains a file system with errors, check forced.
kernel: ACPI warning: \_SB_.PCIO.PEG_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20141107/nsarguments-95)
kernel: ACPI warning: \_SB_.PCIO.PEG_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20141107/nsarguments-95)
kernel: thinkpad_acpi: EC reports that Thermal Table has changed
system-fsck[475]: /dev/sda1: Inodes that were part of a corrupted orphan linked list found.
system-fsck[475]: /dev/sda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
system-fsck[475]: (i.e., without -a or -p options)
system-fsck[475]: fsck failed with error code 4.
system-fsck[475]: Running request emergency.target/start/replace
systemd[1]: system-fsck-root.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start File System Check on Root Device
-- Subject: Unit system-fsck-root.service has failed

No estoy seguro de si se trata de un ACPI o un problema de disco. Intenté actualizar al BIOS más reciente de mi Lenovo Thinkpad T520, pero no arranca mejor.

¿Cómo solucionar este problema, o si el disco se está muriendo, como al menos exportar los datos de mi hogar encriptado a una unidad externa?

Nicolas Raoul
fuente
8
ha encontrado errores con el sistema de archivos raíz. haz lo que dice, ejecuta fsck /dev/sda1y deja interactivamente que te muestre los errores que encontró y elige corregirlos. Ve una vez diciendo no todo el tiempo para ver cuántos errores hay. Si solo parecen ser para archivos sin importancia, como archivos de registro, repita nuevamente diciendo sí. esto puede provocar la pérdida de archivos, por lo que si puede copiar la partición primero para decir un dispositivo usb, hágalo primero.
meuh

Respuestas:

19
  1. Cuando se le solicite, escriba fsck /dev/sda<number>y presione Intro (busque <number>desde sus registros en función del directorio que contiene los errores del sistema de archivos)
  2. Ingrese ya todos los errores para corregirlos
  3. exit
Rocky Inde
fuente
cómo encontrar <número>
Kapil Yadav
Tyvm. Funcionó.
Viraths
1
@KapilYadav: puede encontrar el número en los registros de errores que se generan. Por ejemplo, en la pregunta de OP, el registro dice system-fsck[475]: /dev/sda1 contains a file system with errors, check forced.Por lo tanto, el número es1
Rocky Inde
0

En la terminal

sudo -i (si no es un usuario root, de lo contrario, omita esto)

fdisk -l

Busque su unidad raíz.

Yo uso Kali Linux en Raspberry Pi, así que el mío se parece a algo en mmcblk0p2lugar de sdb1... Ver el tuyo.

`umount /dev/mmcblk0p2`

fsck -y /dev/mmcblk0p2

poweroff

interior
fuente
-1

He tenido el mismo problema. He creado un archivo de imagen desde una Raspbian SDCard que funciona con Win32DiskImager. Cuando ejecuté pishrink, la herramienta me dio el error "lista de inodos huérfanos". Así que seguí la sugerencia de Rocky Inde y ejecuté fsck. Encontró y corrigió algunos errores, así que ejecuté pishrink nuevamente y funcionó. Gracias Rock Inde.

Si llegaste hasta aquí y sigues confundido sobre cómo hacerlo, he creado un script, en parte basado en pishrink, para arreglar estos "inodes huérfanos". Puede consultar la fuente del script en

https://github.com/gmenezesg/fix_orphaned_inode_list

Uso:

wget https://raw.githubusercontent.com/gmenezesg/fix_orphaned_inode_list/master/fix_orphaned_inode_list.sh

sudo chmod +x fix_orphaned_inode_list.sh

sudo ./fix_orphaned_inode_list.sh [imagefile.img]

Guión:

#!/bin/bash

function cleanup() {
  if losetup $loopback &>/dev/null; then
        if [ "$verbose_mode" = true ]; then
        echo "### Running cleanup ###"
        fi
        losetup -d "$loopback"
  fi
}

verbose_mode=false

while getopts ":v" opt; do
  case "${opt}" in
    v) verbose_mode=true ;;
    *) usage ;;
  esac
done
shift $((OPTIND-1))

usage() { echo "Usage: $0 [-v] imagefile.img"; exit -1; }

if [ "$verbose_mode" = true ]; then
echo "### Mapping arguments ###"
fi

img="$1"

if [ "$verbose_mode" = true ]; then
echo "### Usage checks ###"
fi

if [[ -z "$img" ]]; then
  usage
fi
if [[ ! -f "$img" ]]; then
  echo "ERROR: $img is not a file..."
  exit -2
fi
if (( EUID != 0 )); then
  echo "ERROR: You need to be running as root."
  exit -3
fi

echo "#Check that what we need is installed"
for command in parted losetup tune2fs md5sum e2fsck resize2fs; do
  which $command 2>&1 >/dev/null
  if (( $? != 0 )); then
    echo "ERROR: $command is not installed."
    exit -4
  fi
done

if [ "$verbose_mode" = true ]; then
echo "### Setting cleanup at script exit ###"
fi
trap cleanup ERR EXIT

beforesize=$(ls -lh "$img" | cut -d ' ' -f 5)
parted_output=$(parted -ms "$img" unit B print | tail -n 1)
partnum=$(echo "$parted_output" | cut -d ':' -f 1)
partstart=$(echo "$parted_output" | cut -d ':' -f 2 | tr -d 'B')
loopback=$(losetup -f --show -o $partstart "$img")
tune2fs_output=$(tune2fs -l "$loopback")
currentsize=$(echo "$tune2fs_output" | grep '^Block count:' | tr -d ' ' | cut -d ':' -f 2)
blocksize=$(echo "$tune2fs_output" | grep '^Block size:' | tr -d ' ' | cut -d ':' -f 2)

fsck -y "$loopback"
usuario408841
fuente