Использование Linux в сервисном центре

Материал из OpenWiki
Перейти к: навигация, поиск

На этой странице собрана информация, которая будет полезна в сервисных центрах — как провести диагностику компьютерного «железа» или восстановить данные.

Содержание

Загрузка с разных устройств

Линуксы могут загружаться откуда угодно — с USB-флешек и жёстких дисков, карт памяти (SD и прочих), CD/DVD, по локальной сети (PXE). Главное, чтобы материнская плата умела загружать операционную систему с этих устройств.

Загрузочные клавиши для некоторых ноутбуков и материнских плат можно посмотреть на http://boot-keys.org.

32/64 бита

Большинство линуксов можно скачать как 32-битными, так и 64-битными.

  • 32-битные запустятся почти на любом процессоре (ARM и прочую экзотику пока не рассматриваем). Оперативной памяти больше 4 ГБ увидит со специальным PAE-ядром (обычно входит в комплект многих дистрибутивов).
  • 64-битные ОС запустятся только на 64-разрядных процессорах.

Работа в терминале

Если вы раньше не работали в консоли Linux, запомните несколько правил:

  • Прочтите статьи для начинающих, например http://help.ubuntu.ru/manual/терминал;
  • Регистр букв имеет значение. Чаще всего, команды пишутся с маленькой буквы. Если написать команду с большой буквы, система сообщит вам, что команда не найдена;
  • Удобно пользоваться автодополнением, чтобы не ошибаться при наборе команды. Когда наберёте первые символы, просто нажмите TAB один-два раза;
  • Большинство команд, связанных с оборудованием, должны выполнятся от суперпользователя root. Чтобы стать суперпользователем, необходимо набрать sudo -i или su - В этом режиме надо быть предельно осторожным — например, если перепутать /dev/sda с /dev/sdb, то операция будет произведена с другим жёстким диском.

Общая информация об операционной системе

  • Эти программы/команды обычно не нужно устанавливать:
  • Эти программы надо устанавливать:
    • screenFetch — выдаёт в консоли логотип системы + базовую информацию (версия ядра, ОС, количество оперативной памяти, процессор, видеокарта, …)
    • Neofetch — аналогично, входит в состав Lubuntu;

Особенности работы с драйверами

Linux-системы заново определяют оборудование при каждом запуске системы, поэтому можно загружаться с установленной на жёсткий диск (или флешку) системой почти на любом железе — в основном, всё само определится и сразу заработает. Трудности с автоопределением железа могут возникнуть с проприетарными драйверами, поэтому лучше их не устанавливать.

Чтобы посмотреть, какие модули ядра используются, можно воспользоваться командой lspci -k:

00:00.0 Host bridge: Advanced Micro Devices [AMD] RS780 Host Bridge
00:01.0 PCI bridge: ASUSTeK Computer Inc. RS880 PCI to PCI bridge (int gfx)
        Kernel modules: shpchp
00:06.0 PCI bridge: Advanced Micro Devices [AMD] RS780 PCI to PCI bridge (PCIE port 2)
        Kernel driver in use: pcieport
        Kernel modules: shpchp
00:11.0 SATA controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
        Subsystem: ASUSTeK Computer Inc. M3A78-EH Motherboard
        Kernel driver in use: ahci
00:12.0 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
        Subsystem: ASUSTeK Computer Inc. M3A78-EH Motherboard
        Kernel driver in use: ohci_hcd
00:12.1 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0 USB OHCI1 Controller
        Subsystem: ASUSTeK Computer Inc. M3A78-EH Motherboard
        Kernel driver in use: ohci_hcd
00:12.2 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller
        Subsystem: ASUSTeK Computer Inc. M3A78-EH Motherboard
        Kernel driver in use: ehci_hcd
00:13.0 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
        Subsystem: ASUSTeK Computer Inc. M3A78-EH Motherboard
        Kernel driver in use: ohci_hcd
00:13.1 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0 USB OHCI1 Controller
        Subsystem: ASUSTeK Computer Inc. M3A78-EH Motherboard
        Kernel driver in use: ohci_hcd
00:13.2 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB EHCI Controller
        Subsystem: ASUSTeK Computer Inc. M3A78-EH Motherboard
        Kernel driver in use: ehci_hcd
00:14.0 SMBus: Advanced Micro Devices [AMD] nee ATI SBx00 SMBus Controller (rev 3a)
        Subsystem: ASUSTeK Computer Inc. M3A78-EH Motherboard
        Kernel driver in use: piix4_smbus
        Kernel modules: sp5100_tco, i2c-piix4
00:14.1 IDE interface: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 IDE Controller
        Subsystem: ASUSTeK Computer Inc. M3A78-EH Motherboard
        Kernel driver in use: pata_atiixp
        Kernel modules: pata_atiixp
00:14.3 ISA bridge: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 LPC host controller
        Subsystem: ASUSTeK Computer Inc. M3A78-EH Motherboard
00:14.4 PCI bridge: Advanced Micro Devices [AMD] nee ATI SBx00 PCI to PCI Bridge
00:14.5 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
        Subsystem: ASUSTeK Computer Inc. M3A78-EH Motherboard
        Kernel driver in use: ohci_hcd     
00:18.0 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor DRAM Controller
        Kernel modules: amd64_edac_mod           
00:18.3 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Miscellaneous Control
        Kernel driver in use: k10temp     
        Kernel modules: k10temp           
00:18.4 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Link Control
01:05.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI RS780C [Radeon HD 3100]
        Subsystem: ASUSTeK Computer Inc. Device 82ee
        Kernel driver in use: radeon     
        Kernel modules: radeon           
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)
        Subsystem: ASUSTeK Computer Inc. M3A78-EH Motherboard
        Kernel driver in use: r8169     
        Kernel modules: r8169           
03:07.0 Multimedia audio controller: Creative Labs SB0400 Audigy2 Value
        Subsystem: Creative Labs Device 1001
        Kernel driver in use: snd_emu10k1
        Kernel modules: snd-emu10k1

Также можно посмотреть список модулей для PCI-устройств с помощью команды pcimodules:

r8169
pata_via
i2c-i801
iTCO_wdt
shpchp
snd-hda-intel
mei
i915

Как получить список аппаратных компонентов

В терминале

  • lshw — почти полный список оборудования, не хватает: большинство usb устройств (кроме дисков), мониторы, ИБП;
  • hwinfo --short — ещё один список оборудования;
  • lspci — список PCI-устройств. С параметром «-k» показывает используемые модули ядра (т.е., драйверы). Если устройство совсем свежее, запустите sudo update-pciids для обновления базы.
  • lsusb — список USB-устройств. С параметром «-v» показывает очень много дополнительной информации.
  • decode-dimms — подробная информация об оперативной памяти. Содержится в пакете i2c-tools. Можно, например, сгенерировать html страницу:
decode-dimms -f --side-by-side --merge-cells > /tmp/decode-dimms.html
  • dmidecode — информация о железе из Desktop Management Interface;
  • discover --type-summary --disable-bus all --enable-bus pci display — показать название видеокарты;
  • inxi — список оборудования и информация о системе (процессы, диски, версии ПО);

Графически

  • lshw-gtk — почти полный список оборудования
  • HardInfo — выводит информацию об оборудовании и операционной системе. Поддерживаются шины PCI, ISA PnP, USB, IDE, SCSI, последовательные и параллельные порты.

Тестирование оперативной памяти

  • Memtest86+ — имеется во многих дистрибутивах. Запускать можно с LiveCD или с жёсткого диска из меню Grub. Нужно сделать минимум один прогон (цифра в столбце «Pass» должна быть больше 0), лучше оставить на всю ночь. В случае ошибок оперативной памяти, появятся красные строки с описанием. Параллельно с работой Memtest86+ ничего делать не получится, т.к. он монопольно использует ресурсы.
  • memtester — тестирует из запущенного Linux, т.е. можно параллельно, например, запускать Smart-тесты жёсткого диска. Проверить 1 ГБ памяти два раза:
    memtester 1024 2

Датчики (температура, напряжение)

  • lm-sensors позволяет просматривать информацию от доступных датчиков — температуру, напряжение, обороты вентиляторов. Если пакет уже был установлен в систему, возможно команда sensors выдаст вам полную информацию:
atk0110-acpi-0
Adapter: ACPI interface
Vcore Voltage:      +1.10 V  (min =  +0.85 V, max =  +1.60 V)
 +3.3 Voltage:      +3.26 V  (min =  +2.97 V, max =  +3.63 V)
 +5 Voltage:        +4.92 V  (min =  +4.50 V, max =  +5.50 V)
 +12 Voltage:      +12.10 V  (min = +10.20 V, max = +13.80 V)
CPU FAN Speed:     1486 RPM  (min =  600 RPM)
CHASSIS FAN Speed: 1115 RPM  (min =  600 RPM)
POWER FAN Speed:      0 RPM  (min =  600 RPM)
CPU Temperature:    +39.0°C  (high = +60.0°C, crit = +95.0°C)
MB Temperature:     +42.0°C  (high = +45.0°C, crit = +95.0°C)

k10temp-pci-00c3
Adapter: PCI adapter
temp1:        +29.0°C  (high = +70.0°C)
                       (crit = +83.5°C, hyst = +81.5°C)

Если нет, то установите пакет lm-sensors и запустите sensors-detect от суперпользователя root.

Программный контроль скорости вращения кулеров

fancontrol — программная регулировка скорости вентиляторов. Утилита pwmconfig служит для его настройки. Если конфигурация оборудования изменилась, необходимо заново запустить pwmconfig, чтобы она определила, какие кулеры к каким каналам управления подключены.

Видеокарты

  • glxinfo -B — информация о видеокарте, в т.ч. количество оперативной памяти на ней (например: Video memory: 1024MB)

Тестирование производительности видеокарты

Тесты можно использовать как для прогрева железа, чтобы оценить качество работы системы охлаждения, так и для сравнения производительности:

  • gtkperf — тестирования ускорения 2D-графики;
  • glxgears — простейший тест с шестерёнками;
  • glmark2 — более разнообразный тест, занимает около 5 минут. Пример вывода для интегрированной видеокарты AMD с open source драйверами:
=======================================================
    glmark2 2012.08
=======================================================
    OpenGL Information
    GL_VENDOR:     X.Org
    GL_RENDERER:   Gallium 0.4 on AMD RS780
    GL_VERSION:    3.0 Mesa 9.1.1
=======================================================
[build] use-vbo=false: FPS: 359 FrameTime: 2.786 ms
[build] use-vbo=true: FPS: 395 FrameTime: 2.532 ms
[texture] texture-filter=nearest: FPS: 387 FrameTime: 2.584 ms
[texture] texture-filter=linear: FPS: 381 FrameTime: 2.625 ms
[texture] texture-filter=mipmap: FPS: 390 FrameTime: 2.564 ms
[shading] shading=gouraud: FPS: 311 FrameTime: 3.215 ms
[shading] shading=blinn-phong-inf: FPS: 290 FrameTime: 3.448 ms
[shading] shading=phong: FPS: 216 FrameTime: 4.630 ms
[bump] bump-render=high-poly: FPS: 192 FrameTime: 5.208 ms
[bump] bump-render=normals: FPS: 374 FrameTime: 2.674 ms
[bump] bump-render=height: FPS: 270 FrameTime: 3.704 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 117 FrameTime: 8.547 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 26 FrameTime: 38.462 ms
[pulsar] light=false:quads=5:texture=false: FPS: 318 FrameTime: 3.145 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 52 FrameTime: 19.231 ms
[desktop] effect=shadow:windows=4: FPS: 179 FrameTime: 5.587 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 103 FrameTime: 9.709 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 141 FrameTime: 7.092 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 112 FrameTime: 8.929 ms
[ideas] speed=duration: FPS: 198 FrameTime: 5.051 ms
[jellyfish] <default>: FPS: 114 FrameTime: 8.772 ms
[terrain] <default>: FPS: 8 FrameTime: 125.000 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 319 FrameTime: 3.135 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 111 FrameTime: 9.009 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 319 FrameTime: 3.135 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 236 FrameTime: 4.237 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 127 FrameTime: 7.874 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 235 FrameTime: 4.255 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 234 FrameTime: 4.274 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 94 FrameTime: 10.638 ms
=======================================================
                                  glmark2 Score: 220 
=======================================================

Для мобильных видеокарт, поддерживающих только OpenGL ES, есть специальные урезанные тесты:

  • es2gears — те же шестерёнки;
  • glmark2-es2

Энергопотребление ATI/AMD Radeon

Open source драйвер «Radeon» поддерживает управление энергопотреблением видеокарты (см. Возможности Open source драйвера Radeon):

До R6xx

Включить динамическое управление энергопотреблением:

echo dynpm > /sys/class/drm/card0/device/power_method

Включить режим энергопотребления по заранее подготовленным профилям ("default", "auto", "low", "mid", "high"):

echo profile > /sys/class/drm/card0/device/power_method
echo low > /sys/class/drm/card0/device/power_profile

Посмотреть частоты:

cat /sys/kernel/debug/dri/0/radeon_pm_info
default engine clock: 600000 kHz
current engine clock: 299530 kHz
default memory clock: 500000 kHz
current memory clock: 499500 kHz
voltage: 1150 mV
PCIE lanes: 16

Посмотреть температуру можно стандартной командой sensors:

radeon-pci-0100
Adapter: PCI adapter
temp1:        +58.0°C  

R6xx и новее

Поддерживается режим dpm, все параметры управляются аппаратно (можно включить старое поведение, передав ядру при загрузке параметр «radeon.dpm=0»):

cat /sys/class/drm/card0/device/power_method
dpm

Принудительно включаем режим пониженного потребления:

echo low > /sys/class/drm/card0/device/power_dpm_force_performance_level

Ускорение проигрывания видео

Информацию можно получить с помощью команд vdpauinfo или vainfo.

Тестирование звуковой карты

Со звуком в линуксе обычно работает ALSA, в некоторых дистрибутивах поверх ALSA работает PulseAudio.

  • pactl list cards — Список устройств с точки зрения PulseAudio;
  • cat /proc/asound/cards — Список устройств с точки зрения ALSA;
  • speaker-test -c 6 -t wav -l 1 — тестирование звука с помощью ALSA: в каждый канал один раз проиграть название канала;

Работа с разделами жёсткого диска

Любые изменения таблицы разделов жёсткого диска выполняются от суперпользователя root.

В терминале

  • dd — простая и мощная команда, позволяющая копировать, например, раздел диска в файл или по сети, или забить весь жёсткий диск нулями(«низкоуровневое форматирование»)/случайными значениями. Много примеров в статье википедии. В случае, если диск плохо читается, надо использовать dd_rescue;
  • fsarchiver probe simple — получить список дисковых устройств и разделов на них;
  • fdisk — утилита для работы с таблицей разделов. Не работает с GUID (GPT);
  • gdisk — аналог fdisk для GPT. Умеет конвертировать MBR в GPT;
  • cfdisk — редактор разделов с интерфейсом, сделанном на curses. Не работает с GUID (GPT);
  • sfdisk — манипулятор партициями, отлично подходит для использования в скриптах. Не умеет работать с GPT. Пример: скопировать таблицу разделов с жёсткого диска /dev/sda на /dev/sdb:
    sfdisk -d /dev/sda | sfdisk /dev/sdb
  • parted — тоже манипулятор партициями. Умеет работать с GPT. Пример: вывести информацию о разделах жёсткого диска:
sudo parted /dev/sda print
Модель: ATA ST31500541AS (scsi)
Диск /dev/sda: 1500GB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: gpt

Номер  Начало  Конец   Размер  Файловая система  Имя  Флаги
 1     1049kB  21,5GB  21,5GB  ext4
 2     21,5GB  23,7GB  2202MB  linux-swap(v1)
 3     23,7GB  1479GB  1456GB  ext4
 4     1479GB  1500GB  21,0GB  ext4

Графически

  • GParted — Графический редактор разделов. Работает не только с таблицей разделов, но и с самими разделами — может изменять их размер, перемещать, копировать на другой диск.

Тестирование жёсткого диска

  • hdparm -I /dev/sda — получить информацию о настройках жёсткого диска;

Тестирование на битые секторы («бэд-блоки», «бэд-секторы», повреждённые секторы):

Программное

  • badblocks — в простейшем случае, запускаем
    badblocks -v -s /dev/sda
    и программа начнёт проверку в режиме только чтения. С опцией -w, программа перейдёт в разрушающий режим сканирования, записывая данные и сверяя их. Пользователям файловых систем ext2/ext3/ext4 рекомендуется использовать команду e2fsck -c, которая автоматически запустит badblocks в режиме только чтения, и если будут найдены сбойные блоки, они будут добавлены в специальный список (см. man e2fsck).
  • dd — читаем с диска в /dev/null, в случае проблемы с поверхностью получим ошибку чтения, если же проблем нет, то по окончании получим ошибку, что на диске закончилось место:
    dd if=/dev/sdX of=/dev/null bs=1M
  • WHDD — аналог MHDD [1]. В репозиториях Debian/Ubuntu пока отсутствует, есть на диске SystemRescueCd.

S.M.A.R.T.

S.M.A.R.T. позволяет посмотреть: были ли ранее проблемы с жёстким диском, количество сбойных секторов, статистику (время работы, количество включений, …). Также с помощью S.M.A.R.T. можно провести самотестирование жёсткого диска:

В терминале

smartctl — позволяет просматривать и изменять параметры SMART, запускать самотестирование.

Если ещё не обновляли его базу данных, можно это сделать:

update-smart-drivedb

Примеры команд:

  • smartctl -s on /dev/sda — включить SMART у жёсткого диска /dev/sda (обычно уже включен);
  • smartctl -t long /dev/sda — запустить полное самотестирование поверхности. Утилита выведет примерное время, через которое завершится тестирование, после чего нужно посмотреть информацию о диске:
  • smartctl -a /dev/sda — посмотреть всю информацию о диске /dev/sda. На жёсткие диски с интерфейсом USB может заругаться «Unknown USB bridge … please specify device type with the -d option», обычно помогает указать -d sat. Пример вывода:
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-26-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda LP
Device Model:     ST31500541AS
Serial Number:    9XW01A24
LU WWN Device Id: 5 000c50 019af1954
Firmware Version: CC34
User Capacity:    1 500 301 910 016 bytes [1,50 TB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 4
Local Time is:    Thu Jul 26 23:01:20 2012 YEKT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever 
                                        been run.
Total time to complete Offline 
data collection:                (  633) seconds.
Offline data collection
capabilities:                    (0x7b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine 
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        ( 255) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x103f) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   119   099   006    Pre-fail  Always       -       208965758
  3 Spin_Up_Time            0x0003   100   100   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       170
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   080   060   030    Pre-fail  Always       -       106608780
  9 Power_On_Hours          0x0032   080   080   000    Old_age   Always       -       18183
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       170
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   098   000    Old_age   Always       -       324
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   063   052   045    Old_age   Always       -       37 (Min/Max 28/39)
194 Temperature_Celsius     0x0022   037   048   000    Old_age   Always       -       37 (0 17 0 0)
195 Hardware_ECC_Recovered  0x001a   040   024   000    Old_age   Always       -       208965758
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       1
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       175466593929409
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       2255824820
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       3056934445

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%     10636         -
# 2  Conveyance offline  Completed without error       00%         7         -
# 3  Extended offline    Completed without error       00%         4         -
# 4  Short offline       Completed without error       00%         0         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Здесь, к примеру:

  • Extended self-test routine recommended polling time 255 minutes — примерное время полного самотестирования. Так как максимальное значение ячейки 255, эта цифра показывает, что время будет больше 255 минут.
  • Reallocated_Sector_Ct 0 — сбойных секторов не обнаружено;
  • Start_Stop_Count 170 — включался 170 раз;
  • Power_On_Hours 18183 — проработал 18183 часов;
  • Spin_Retry_Count 0 — повторных попыток раскрутить шпиндель не было;
  • Airflow_Temperature_Cel 37 (Min/Max 28/39) — температура жёсткого диска 37 °C;
  • Extended offline Completed without error 10636 — Когда жёсткий диск проработал 10636 часов, кто-то запустил полное самотестирование поверхности, которое закончилось без ошибок.
SSD

У современных моделей SSD можно посмотреть статистику с помощью команды smartctl -l ssd /dev/sda, вот пример вывода свежекупленного Crucial M4:

smartctl 5.43 2012-06-30 r3573 [x86_64-linux-3.8.0-26-generic] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

Device Statistics (GP Log 0x04)
Page Offset Size         Value  Description
  7  =====  =                =  == Solid State Device Statistics (rev 1) ==
  7  0x008  1                4~ Percentage Used Endurance Indicator
                              |_ ~ normalized value

Также в обычном выводе smartctl -a /dev/sda (см. пример выше) надо обратить внимание на параметр «Wear Leveling Count».

Графически

В разных дистрибутивах Linux есть различные графические утилиты для работы со SMART жёстких дисков:

  • gsmartcontrol: запускать от суперпользователя (либо сама запросит). Пример вывода для SSD, поработавшей 1 год:

Gsmartcontrol KINGSTON SUV400S37240G bad.png

  • palimpsest («Дисковая утилита», пакет gnome-disk-utility) — в Gnome. Пример:

Gnome palimpsest smart example.png

Резервное копирование и восстановление разделов

Целый жёсткий диск, как и отдельный раздел, можно скопировать командой dd. Если же нужно получить образ минимального размера, пригодится команда partimage.

В любом случае, лучше для начала сохранить информацию о разделах и загрузочную область:

sfdisk -d > backup_sfdisk.txt
dd bs=1M count=1 if=/dev/sda of=backup_boot_sda.img

В случае GPT:

Сохранить информацию о разделах диска /dev/sda в файл backup_sgdisk.txt в текущей директории:

sgdisk --backup=backup_sgdisk.txt /dev/sda

Восстановить таблицу разделов диска /dev/sdX из файла backup_sgdisk.txt в текущей директории:

sgdisk --load-backup=backup_sgdisk.txt /dev/sdX

Эта команда может выдать ошибку «Non-GPT disk; not saving changes. Use -g to override.», просто затрите первый сектор диска /dev/sdX нулями и повторите.

dd

Если резервная копия была сделана с помощью команды dd, то восстанавливаем так:

dd if=backup_sda1.img of=/dev/sdaX bs=1M

Если резервная копия была сделана с помощью команд dd и gzip, то восстанавливаем так:

zcat backup_sda1.img.gz | dd of=/dev/sdaX bs=1M

ntfsclone

Для создания резервной копии раздела с файловой системой NTFS можно использовать ntfsclone из пакета ntfs-3g:

ntfsclone --rescue --save-image --output backup_ntfsclone_sda1.img /dev/sda1

Можно ещё на лету сжимать в gzip:

ntfsclone --rescue --save-image -o - /dev/sda1 | gzip -c > backup_ntfsclone_sda1.img.gz

Восстанавливаем так:

ntfsclone --restore-image --overwrite /dev/sdaX backup_ntfsclone_sda1.img

Если же образ от ntfsclone сжат с помощью gzip, то восстанавливаем так:

zcat backup_ntfsclone_sda1.img.gz | ntfsclone --restore-image --overwrite /dev/sdaX -

fsarchiver

Архивирует на уровне файловой системы.

Clonezilla

Специализированный дистрибутив (на основе Debian/Ubuntu, в зависимости от версий), с помощью которого можно сохранить образ жёсткого диска (на другой жёсткий диск или в сеть на smb/nfs/ssh) и развернуть его, например, на другом компьютере (или нескольких). Процесс проходит в форме вопросов-ответов.

Восстановление данных

  • gpart — Поиск и восстановление потерянных разделов;
  • photorec — ищет мультимедиа-файлы на жёстком диске по их содержимому, игнорируя файловую систему. На диске ничего не меняет, может работать с образом диска. Работает в интерактивном режиме. В последних версиях объединили в пакет с testdisk. Пример использования:
    photorec /d /tmp/ /dev/sdb
  • myrescue — ?
  • Autopsy — ?
  • scalpel — для восстановления файлов, ищет по сигнатурам (видимо, результат будет аналогичен photorec). Перед запуском, надо поправить файл /etc/scalpel/scalpel.conf, раскомментировав строки с интересующими файлами.

ddrescue

  • dd_rescue — копирует данные из одного файла или блочного устройства на другое. Например, с одного жёсткого диска на другой, или в образ. Также есть gddrescue.

Пример работы ddrescue из deb-пакета gddrescue:

# ddrescue --block-size=1M /dev/sda /media/BIG/320_ddrescue.img /media/BIG/320_ddrescue.img.log

GNU ddrescue 1.17
Press Ctrl-C to interrupt
rescued:    80025 MB,  errsize:    613 kB,  current rate:    5361 kB/s
   ipos:    80026 MB,   errors:       1,    average rate:   11351 kB/s
   opos:    80026 MB,    time since last successful read:       0 s
Finished

testdisk

testdisk — находит и восстанавливает информацию об удалённых разделах (хранится в MBR). Может работать, к примеру, с образом жёсткого диска, сделанным командой dd. Вот список восстанавливаемых типов разделов из man testdisk:

  • BeFS (BeOS)
  • BSD disklabel (FreeBSD/OpenBSD/NetBSD)
  • CramFS, Compressed File System
  • DOS/Windows FAT12, FAT16 and FAT32
  • HFS and HFS+, Hierarchical File System
  • JFS, IBM's Journaled File System
  • Linux ext2/ext3/ext4
  • Linux Raid:
    • RAID 1: mirroring
    • RAID 4: striped array with parity device
    • RAID 5: striped array with distributed parity information
    • RAID 6: striped array with distributed dual redundancy information
  • Linux Swap (versions 1 and 2)
  • LVM and LVM2, Linux Logical Volume Manager
  • Mac partition map
  • Novell Storage Services NSS
  • NTFS (Windows NT/2K/XP/2003/Vista/...)
  • ReiserFS 3.5, 3.6 and 4
  • Sun Solaris i386 disklabel
  • Unix File System UFS and UFS2 (Sun/BSD/...)
  • XFS, SGI's Journaled File System

Также testdisk может восстанавливать удалённые файлы с:

  • DOS/Windows FAT12, FAT16 и FAT32;
  • Linux ext2;
  • NTFS (Windows NT/2K/XP/2003/Vista/...);

Диагностика сетевых карт

Для внутренней диагностики некоторых сетевых карт есть пакет nictools-pci, в нём отдельные команды, например eepro100-diag, rtl8139-diag, via-diag…

Работа с COM-портом

Для восстановления жёстких дисков Seagate нужно подключаться к терминальному порту, выведенному около SATA-разъёма. Для этого используют один из многочисленных переходников USB → RS232 TTL, которые обычно определяются системой как /dev/ttyUSB0. Для работы с ним, можно использовать команду minicom.

Обычно аппаратный COM1 имеет адрес /dev/ttyS0. Определить можно с помощью команды:

dmesg | grep tty

вывод будет примерно такой:

[    1.532172] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    1.557480] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

minicom

В первый раз запускаем minicom -s от суперпользователя root. Настраиваем (имя порта /dev/ttyUSB0, скорость 38400). Выбираем «Сохранить настройки как dfl» (как default). После настройки, можно запускать minicom об обычного пользователя, лишь бы он был в группе dialout (на неё даются права на чтение/запись в устройство /dev/ttyUSB0).

cutecom

Графический последовательный терминал, как minicom.

ttysnoop

Позволяет «подсматривать» за последовательными соединениями.

Прошивка BIOS

Большинство BIOS можно прошить с помощью всего одной утилиты — flashrom. Устанавливается из репозитория. Запускать от суперпользователя. Список гарантированно поддерживаемых устройств.

  • flashrom -r backup.bios — сохранить прежнюю версию BIOS в файл backup.bios
  • flashrom -w M3A78-CM-ASUS-2801.ROM — записать BIOS из заранее скачанного с официального сайта и распакованного файла M3A78-CM-ASUS-2801.ROM

Загрузка прошивки в жёсткий диск

Можно рискнуть загрузить свежую прошивку в жёсткий диск с помощью команды hdparm [2]:

hdparm --fwdownload файл_с_прошивкой.LOD /dev/sdc

Полезные LiveCD

  • SystemRescueCd — на основе Gentoo, позволяет выбрать разрядность процессора, разместить операционную систему в оперативной памяти, загрузить консоль, а из неё — графический интерфейс;
  • http://stresslinux.org — дистрибутив для стресс-тестирования железа;
  • Inquisitor — на основе Debian;
  • Trinity Rescue Kit.

См. также