/ dev / sda1 : 손상된 고아 링크 목록의 일부인 Inode가 발견되었습니다.


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인지 디스크 문제인지 확실하지 않습니다. Lenovo Thinkpad T520을 최신 BIOS로 업데이트하려고했지만 더 잘 부팅되지 않습니다.

이 문제를 해결하는 방법 또는 디스크가 죽는 경우 암호화 된 홈에서 외부 드라이브로 데이터를 내보내는 방법은 무엇입니까?


8
루트 파일 시스템에 오류가 있습니다. 그것이 말한대로 실행 fsck /dev/sda1하고 대화식으로 발견 된 오류를 표시하고 오류를 수정하도록 선택하십시오. 오류가 얼마나 많은지 보려면 항상 한 번 말하지 마십시오. 로그 파일과 같이 중요하지 않은 파일에만 해당되는 경우 다시 예라고 답하십시오. 이로 인해 파일이 손실 될 수 있으므로 먼저 파티션을 복사하여 USB 장치라고 할 수있는 경우 먼저 복사하십시오.
meuh

답변:


20
  1. 프롬프트에서 fsck /dev/sda<number>enter를 입력하고 누르 <number>십시오 (파일 시스템 오류가 포함 된 디렉토리를 기반으로 로그에서를 찾으십시오)
  2. y모든 오류를 입력 하여 수정하십시오
  3. exit

찾는 방법을 <수>
카필 야다 브

Tyvm. 효과가있었습니다.
Viraths 2016 년

1
@ KapilYadav : 오류 로그에서 숫자를 찾을 수 있습니다. 예를 들어, OP의 질문에 따르면 로그 system-fsck[475]: /dev/sda1 contains a file system with errors, check forced.에 숫자는1
Rocky Inde

0

터미널에서

sudo -i (루트 사용자가 아닌 경우에는 건너 뛰십시오)

fdisk -l

루트 드라이브를 찾으십시오.

나는 라즈베리 파이에서 Kali Linux를 사용하므로 내 mmcblk0p2대신에 다음과 같이 보입니다 sdb1...

`umount /dev/mmcblk0p2`

fsck -y /dev/mmcblk0p2

poweroff


-1

나는 같은 문제가 있었다. Win32DiskImager를 사용하여 작동하는 Raspbian SDCard에서 이미지 파일을 만들었습니다. pishrink를 실행했을 때 도구에서 "분리 된 inode 목록"오류가 발생했습니다. 그래서 나는 Rocky Inde의 제안에 따라 fsck를 실행했습니다. pishrink를 다시 실행하여 오류가 발생하여 일부 오류가 수정되었습니다! 고마워 록 인디.

이 문제를 해결하고 여전히 혼란 스러울 경우, "고립 inodes"를 수정하기 위해 부분적으로 pishrink를 기반으로 스크립트를 작성했습니다. 당신은 스크립트 소스를 확인할 수 있습니다

https://github.com/gmenezesg/fix_ 분리 _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"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.