/ dev / sda1: inodes qui faisaient partie d'une liste de liens orphelins corrompus trouvée

16

J'utilisais normalement mon ordinateur portable Ubuntu 2015.04 (avec la maison des utilisateurs cryptés par ecryptfs) quand soudainement, le disque dur est devenu en lecture seule.

J'ai redémarré et maintenant il est bloqué sur ceci:

[    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:~#

Partie intéressante des journaux système:

-- 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

Je ne sais pas s'il s'agit d'un ACPI ou d'un problème de disque. J'ai essayé de mettre à jour le dernier BIOS de mon Lenovo Thinkpad T520, mais il ne démarre pas mieux.

Comment résoudre ce problème, ou si le disque est en train de mourir, comment au moins exporter les données de ma maison cryptée vers un disque externe?

Nicolas Raoul
la source
8
il a trouvé des erreurs avec le système de fichiers racine. faites ce qu'il dit, exécutez-le fsck /dev/sda1et laissez-le interactivement vous montrer les erreurs qu'il a trouvées et choisissez de les corriger. Passez une fois en disant non tout le temps pour voir combien il y a d'erreurs. S'ils semblent concerner uniquement des fichiers sans importance, comme les fichiers journaux, recommencez en disant oui. cela peut entraîner la perte de fichiers, donc si vous pouvez d'abord copier la partition pour dire un périphérique USB, faites-le d'abord.
meuh

Réponses:

20
  1. À l'invite, tapez fsck /dev/sda<number>et appuyez sur Entrée (recherchez le <number>dans vos journaux en fonction du répertoire qui contient les erreurs du système de fichiers)
  2. Saisissez ytoutes les erreurs pour les corriger
  3. exit
Rocky Inde
la source
comment trouver <numéro>
Kapil Yadav
Tyvm. Ça a marché.
Viraths
1
@KapilYadav: vous pouvez trouver le numéro dans les journaux d'erreurs qui sont levés. Par exemple, dans la question de OP, le journal indique system-fsck[475]: /dev/sda1 contains a file system with errors, check forced.Par conséquent, le nombre est1
Rocky Inde
0

Dans le terminal

sudo -i (si ce n'est pas un utilisateur root, sinon ignorez cela)

fdisk -l

Recherchez votre lecteur racine.

J'utilise Kali Linux dans Raspberry Pi, donc le mien ressemble à quelque chose mmcblk0p2au lieu de sdb1... Voyez le vôtre.

`umount /dev/mmcblk0p2`

fsck -y /dev/mmcblk0p2

poweroff

à l'intérieur
la source
-1

J'ai eu le même problème. J'ai créé un fichier image à partir d'une carte SD Raspbian fonctionnelle à l'aide de Win32DiskImager. Lorsque j'ai exécuté pishrink, l'outil m'a donné l'erreur "orphelin inode list". J'ai donc suivi la suggestion de Rocky Inde et exécuté fsck. Il a rencontré et corrigé quelques erreurs, j'ai donc exécuté à nouveau pishrink et cela a fonctionné! Merci Rock Inde.

Si vous êtes arrivé jusqu'ici et que vous ne savez toujours pas comment le faire, j'ai créé un script, en partie basé sur pishrink, pour corriger ces "inodes orphelins". Vous pouvez vérifier la source du script sur

https://github.com/gmenezesg/fix_orphaned_inode_list

Usage:

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]

Scénario:

#!/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"
user408841
la source