Как я могу сказать ядру Linux полностью игнорировать диск, как если бы он даже не был подключен?

Обратите внимание

Пожалуйста, прокрутите вниз, чтобы получить ответ (у него мало пунктов, но он правильный). Проблема решена патчем, который будет в ядре 3.12.7 и выше; Я надеюсь, что это будет перенесено и на более ранние версии.

Мой ноутбук - Samsung Chronos серии 7. Ubuntu Gnome Remix 13.04 с обновленными драйверами Intel.

У меня проблема с внутренним SSD-накопителем (емкость 8G). Сбой с COMRESET и ошибками ввода / вывода. Я совершенно уверен, что проблема аппаратная; к сожалению, у меня не установлено Windows на ноутбуке, чтобы проверить, является ли это вопросом конфигурации SSD или чего-то еще.

Проблема в том, что udev распознает диск:

KERNEL[9.515930] add      /devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb (block)
ACTION=add
DEVNAME=sdb
DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb
DEVTYPE=disk
MAJOR=8
MINOR=16
SEQNUM=1785
SUBSYSTEM=block
UDEV_LOG=3

, и после этого он проваливает множество проверок, задерживая загрузку, задерживая выключение и заставляя (я думаю) приостановить невозможно.

Можно ли сказать Linux полностью игнорировать что-либо в ссылке ata2? Я попытался добавить эту строку в /etc/udev/rules.d/10-local.rules

SUBSYSTEMS=="pci"  DRIVERS=="ahci" KERNELS=="ata2" OPTIONS=="ignore_device"

, но это не работает.

С другой стороны, если кто-нибудь знает, как сбросить SSD, если он был оставлен в режиме «кэширования» без использования Windows ... или загрузить «живые» окна, чтобы сделать то же самое ... [ 1119]

Спасибо!

Данные добавлены:

Полная udevadm info -a -n /dev/sdb вставлена ​​в http://paste.ubuntu.com/6186145/

[ 1123] smartctl -i /dev/sdb -T permissive дает:

root@samsung-romano:/home/romano# smartctl -i /dev/sdb -T permissive
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-3.8.0-31-generic] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

Vendor:               /1:0:0:0
Product:              
User Capacity:        600,332,565,813,390,450 bytes [600 PB]
Logical block size:   774843950 bytes
>> Terminate command early due to bad response to IEC mode page

, что явно неверно. Тем не менее:

root@samsung-romano:/home/romano# fdisk -b 512 -C 970 -H 256 -S 63 /dev/sdb
fdisk: unable to read /dev/sdb: Input/output error

(данные SSD из http://ubuntuforums.org/showthread.php?t=1935699&p=11739579#post11739579 ).

ДОПОЛНИТЕЛЬНАЯ МЫСЛЬ:

Может ли все это быть побочным эффектом технологии Intel Smart Response не отключаться перед установкой Linux? Если да, как я могу проверить это, кроме переустановки Windows на машине? Или это выстрел в темноте? (В биосе SSD-накопитель не показывается и в Intel SRT ничего нет).

О МАРКИРОВКЕ КАК ДУБЛИКАТ:

Я изменил название вопроса; Я не думаю, что связанный вопрос отвечает на мою проблему. Я положительно знаю , что SSD выходит из строя. Я спрашиваю, можно ли сказать ядру Linux, чтобы оно вообще не проверялось. [Тысяча сто двадцать девять]

18
задан 13 April 2017 в 15:23

6 ответов

Два решения здесь: каждый быстр для применения, хотя решает проблему только частично, другой является полным, но требует, чтобы Вы скомпилировали свое собственное ядро.

Корректный ответ является патчем ядра.

Robin H. Johnson записал, патч для драйвера ядра SATA (найдите его в сайте обмена стека Unix/Linux), который скрывает полностью диск.

Обновите 1, патч является теперь восходящим (по крайней мере, в 3.12.7 стабильных ядрах), посмотрите репозиторий мерзавца. Я попросил бэкпорт в панели запуска Ubuntu.

Обновите 2, патч находится в стандартном ядре для Надежного человека Ubuntu Thar 14.04; таким образом, теперь только следующее дополнение к параметру начальной загрузки необходимо.

После того как патч установлен, добавив

 libata.force=2.00:disable

к ядру параметры начальной загрузки скроют диск от ядра Linux. Двойная проверка, чтобы число было корректно; поиск имени устройства может помочь:

(0)samsung-romano:~% dmesg | grep iSSD
[    1.493279] ata2.00: ATA-8: SanDisk iSSD P4 8GB, SSD 9.14, max UDMA/133
[    1.494236] scsi 1:0:0:0: Direct-Access     ATA      SanDisk iSSD P4  SSD  PQ: 0 ANSI: 5

Для добавления параметра ядра (бот временно и постоянно), можно проверить это Вопросы и ответы: Как я добавляю параметр начальной загрузки ядра?

Обходное решение

По крайней мере, проблема включения приостанавливать-резюме была решена пользователем Emmanuel Unix StackExchange в https://unix.stackexchange.com/a/103742/52205. Как корень, дайте команду:

echo 1 > /sys/block/sdb/device/delete

прежде приостанавливают.

Для создания этого постоянным включите следующий файл /etc/pm/sleep.d/ и сделайте это исполняемым файлом:

-rwxr-xr-x 1 root root 204 Dec  6 16:03 99_delete_sdb

с содержанием:

#!/bin/sh

# Delete the failing disk so that it will not block suspend

case "$1" in
    suspend|hibernate)
        if [ -d /sys/block/sdb ]; then
            echo 1 > /sys/block/sdb/device/delete       
        fi
        ;;
esac

... и теперь система приостанавливает (и резюме) правильно.

14
ответ дан 13 April 2017 в 15:23

Вы можете попытаться создать правило udev со следующей информацией (вывод udevadm info -a -n /dev/sdb).

ИНФОРМАЦИЯ:

looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0':
    KERNELS=="1:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{rev}=="SSD "
    ATTRS{type}=="0"
    ATTRS{scsi_level}=="6"
    ATTRS{model}=="SanDisk iSSD P4 "
    ATTRS{state}=="running"
    ATTRS{queue_type}=="none"
    ATTRS{iodone_cnt}=="0x309"
    ATTRS{iorequest_cnt}=="0x30a"
    ATTRS{queue_ramp_up_period}=="120000"
    ATTRS{timeout}=="30"
    ATTRS{evt_media_change}=="0"
    ATTRS{ioerr_cnt}=="0x1d6"
    ATTRS{queue_depth}=="1"
    ATTRS{vendor}=="ATA     "
    ATTRS{device_blocked}=="0"
    ATTRS{iocounterbits}=="32"

1) Создать правило udev.

  • sudo nano /etc/udev/rules.d/99-hide-ssd.rules

Вы можете попробовать сопоставить клавиши "SUBSYSTEMS" и "DRIVERS" и "ATTRS {rev}" & amp; Атрибуты ATTRS {модель} , затем присвойте переменную «UDISKS» , чтобы игнорировать ее.

Содержимое файла 99-hide-ssd.rules будет следующим:

SUBSYSTEMS == "scsi", DRIVERS == "sd", ATTRS {rev} == "SSD" , ATTRS {model} == "SanDisk iSSD P4", ENV {UDISKS_IGNORE} = "1"

Чтобы сохранить изменения в nano ... Ctrl + < kbd> O , затем Enter и, наконец, Ctrl + X .

2) Наконец, обновите правила udev:

  • sudo udevadm trigger

ПРИМЕЧАНИЕ: С помощью [ 1126] ENV {UDISKS_IGNORE} = "1" будет игнорировать диск для Ubuntu 12.10 & amp; 13,04.
Для Ubuntu 12.04 переменная будет ENV {UDISKS_PRESENTATION_HIDE} = "1" .

Надеюсь, это поможет.

0
ответ дан 13 April 2017 в 15:23

https://serverfault.com/questions/112147/tell-ubuntu-to-ignore-dead-hard-drive-during-booting предлагает частично:

от имени пользователя root откройте /etc/udev/rules.d/60-persistent-storage.rules в своем любимом текстовом редакторе.

Через несколько строк вы, вероятно, увидите строку, которая выглядит следующим образом:

пропустить правила для неподходящих блочных устройств

KERNEL == "ram * | loop * | fd * | nbd * | gnbd * | dm- | md ", GOTO =" persistent_storage_end " Добавьте« sdb * »во вторую строку, чтобы она выглядела следующим образом:

[ 118] KERNEL == "ram * | loop * | fd * | nbd * | gnbd * | dm- | md | sdb *", GOTO = "persistent_storage_end"

Сохраните, перезагрузите компьютер и, возможно, это сработает. Если нет, ну это пост-гарантия?

0
ответ дан 13 April 2017 в 15:23

Если другие ваши диски не используют ahci или не SSD, вы можете удалить для них драйвер ядра.

, чтобы удалить для этого сеанса (до следующей перезагрузки), выполните:

sudo rmmod ahci

, чтобы перезагрузить его, выполните:

sudo modprobe ahci

, если вы видите, что все идет хорошо, теперь вы можете полностью отключить его (не загружайте его при следующей загрузке). откройте файл /etc/modprobe.d/blacklist.conf и добавьте следующую строку:

blacklist ahci 

в черный список драйверов ssd, просто замените ahci на сд

0
ответ дан 13 April 2017 в 15:23

Из того, что я знаю, нет способа удалить сообщение, кроме как удалить свой SSD.

0
ответ дан 13 April 2017 в 15:23

Я пошел и записал патч ядра для Вас, который реализует способность отключить отдельный диск во время начальной загрузки, так, чтобы Вы не должны были беспокоиться отключением ее в udev или ожидании во время начальной начальной загрузки.

http://dev.gentoo.org/~robbat2/patches/3.13-libata-disable-disks-by-param.patch

Должен относиться ко многим ядрам очень легко (строка выше его была добавлена 2013-05-21/v3.10-rc1*, но может быть безопасно применена вручную без той строки).

1
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: