/ dev / sda1: найдены иноды, которые были частью поврежденного связанного списка потерянных

16

Я обычно использовал свой ноутбук Ubuntu 2015.04 (с домашним пользователем, зашифрованным ecryptfs), когда жесткий диск внезапно стал доступен только для чтения.

Я перезагрузился и теперь застрял на этом:

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

Интересная часть системных журналов:

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

Я не уверен, что это ACPI или проблема с диском. Я попытался обновить до последней версии BIOS мой Lenovo Thinkpad T520, но он не загружается лучше.

Как решить эту проблему, или если диск умирает, как хотя бы экспортировать данные из моего зашифрованного дома на внешний диск?

Николас Рауль
источник
8
он обнаружил ошибки в корневой файловой системе. делайте, как говорится, запускайте fsck /dev/sda1и в интерактивном режиме показывайте найденные ошибки и исправляйте их. Пройдите один раз и все время говорите «нет», чтобы увидеть, сколько ошибок. Если они только для файлов, которые не важны, например, файлы журналов, повторите процедуру, сказав «да». это может привести к потере файлов, поэтому, если вы можете сначала скопировать раздел, скажем, на USB-устройство, сделайте это в первую очередь.
Мех

Ответы:

20
  1. В командной строке введите fsck /dev/sda<number>и нажмите клавишу ввода (ищите <number>из ваших журналов на основе каталога, который содержит ошибки файловой системы)
  2. Введите yвсе ошибки, чтобы исправить их
  3. exit
Роки Инд
источник
как найти <номер>
Капиль Ядав
Tyvm. Это сработало.
Viraths
1
@KapilYadav: вы можете найти номер в журналах ошибок, которые будут выброшены. Например, в вопросе ОП в журнале написано « system-fsck[475]: /dev/sda1 contains a file system with errors, check forced.Значит, это число1
Роки
0

В терминале

sudo -i (если не пользователь root, иначе пропустите это)

fdisk -l

Ищите свой корневой диск.

Я использую Kali Linux в Raspberry Pi, поэтому мой выглядит примерно так, mmcblk0p2а не sdb1... Смотрите для вашего.

`umount /dev/mmcblk0p2`

fsck -y /dev/mmcblk0p2

poweroff

insidevoid
источник
-1

У меня была такая же проблема. Я создал файл изображения с рабочей Raspbian SDCard, используя Win32DiskImager. Когда я запустил pishrink, инструмент выдал мне ошибку «список осиротевших узлов». Поэтому я последовал предложению Rocky Inde и выполнил команду fsck. Он обнаружил и исправил некоторые ошибки, поэтому я снова запустил pishrink, и это сработало! Спасибо Rock Inde.

Если вы зашли так далеко и все еще не знаете, как это сделать, я создал скрипт, частично основанный на pishrink, для исправления этих «осиротевших inode». Вы можете проверить источник скрипта на

https://github.com/gmenezesg/fix_orphaned_inode_list

Использование:

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]

Автор сценария:

#!/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
источник