/ 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-пристрій, зробіть це спочатку.
meuh

Відповіді:


20
  1. У відповідь на запит введіть fsck /dev/sda<number>та натисніть клавішу Enter (шукайте <number>свої журнали на основі каталогу, що містить помилки файлової системи)
  2. Введіть yусі помилки, щоб їх виправити
  3. exit

як знайти <число>
Капіль Ядав

Тивм. Це спрацювало.
Вірат

1
@KapilYadav: число можна знайти в журналах помилок, які викидаються. Наприклад, у запитанні ОП журнал говорить, system-fsck[475]: /dev/sda1 contains a file system with errors, check forced.отже, це число1
Rocky Inde

0

У Терміналі

sudo -i (якщо не користувач root, інакше пропустіть це)

fdisk -l

Шукайте свій кореневий диск.

Я використовую Kali Linux в малиновому пі, так що мій виглядає щось на зразок mmcblk0p2замість sdb1... Подивіться на своє.

`umount /dev/mmcblk0p2`

fsck -y /dev/mmcblk0p2

poweroff


-1

У мене була така ж проблема. Я створив файл зображення з робочої Raspbian SDCard за допомогою Win32DiskImager. Коли я запустив пішрін, інструмент дав мені помилку "список осиротілих інод". Тож я пішов на пропозицію від Rocky Inde і виконав fsck. Він зіткнувся і виправив деякі помилки, тому я знову запустив pishrink і воно спрацювало! Спасибі Rock Inde.

Якщо ви до цього досягли, і все ще плутаєте, як це зробити, я створив сценарій, почасти заснований на пишбриках, щоб виправити ці "осиротілі вставки". Ви можете перевірити джерело сценарію за адресою

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"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.