20 votes

/dev/sda1 : Inodes qui faisaient partie d'une liste orpheline liée corrompue trouvés

J'utilisais mon ordinateur portable Ubuntu 2015.04 (avec ecryptfs-encrypted user home) normalement quand soudain, le disque dur est devenu en lecture seule.

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

[    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 du 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 suis pas sûr qu'il s'agisse d'un problème d'ACPI ou 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 mourant comment au moins exporter les données de ma maison cryptée vers un disque externe ?

26voto

Ben Hutchison Points 465
  1. À l'invite, tapez fsck /dev/sda<number> et appuyez sur la touche "Entrée" (recherchez l'icône <number> de vos journaux en fonction du répertoire qui contient les erreurs du système de fichiers)
  2. Entrez y à toutes les erreurs pour les corriger
  3. exit

1voto

insidevoid Points 11

Dans le terminal

sudo -i (si vous n'êtes pas un utilisateur root, sinon passez cette étape)

fdisk -l

Cherchez votre lecteur racine.

J'utilise Kali Linux dans un raspberry pi, donc le mien ressemble à quelque chose comme mmcblk0p2 au lieu de sdb1 ... Voyez par vous-même.

`umount /dev/mmcblk0p2`

fsck -y /dev/mmcblk0p2

poweroff

-1voto

user408841 Points 99

J'ai eu le même problème. J'ai créé un fichier image à partir d'une carte SDCard Raspbian en utilisant Win32DiskImager. Lorsque j'ai exécuté pishrink, l'outil m'a donné l'erreur "orphaned 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 relancé pishrink et ça a marché ! Merci Rock Inde.

Si vous êtes arrivé jusqu'ici et que vous ne savez toujours pas comment faire, j'ai créé un script, partiellement basé sur pishrink, pour réparer ces "inodes orphelins". Vous pouvez consulter la source du script à l'adresse suivante

https://github.com/gmenezesg/fix_orphaned_inode_list

Utilisation :

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]

script :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X