У меня есть ноутбук Samsung (Хронос) с s7 одним жестким диском SATA на шину ata:1
, которая определяется как /dev/sda
, к 8G SSD на ata:2
, /dev/sdb
и различные другие устройства на остальной части интерфейса SATA.
Проблема в том, что диск SSD
- припаянный к основной плате (неподвижный)
- Busted (он просто дает ошибки ввода-вывода для любой операции)
- он не появляется в биосе (вероятно, потому что он сломан)
Теперь этот диск:
- задерживает загрузку на три-пять минут, пытаясь проверить неисправный диск, что раздражает;
- но самое неприятное, что система не может приостановить работу из-за
/dev/sdb
сбоя.
Обратите внимание, что я могу жить с задержкой при загрузке - меня беспокоит возобновление / приостановка.
Итак, вопрос: могу ли я сказать ядру, чтобы оно не проверяло устройство на ata: 2?
В более старом ядре (<3.0), когда я все еще мог немного покопаться в источнике, был параметр командной строки стиля, hdb=ignore
который бы сработал.
Я перепробовал все приемы , предложенные ниже с udev
и libata:force
ядром параметров, но безрезультатно. В частности, следующее не работает:
Добавление к одному из следующих
/etc/udev/rules.d/
файлов (в раннем исполнении, например,00-ignoredisk.rules
в конце99-ignoredisk.rules
или в обоих местах)SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{rev}=="SSD ", ATTRS{model}=="SanDisk iSSD P4 ", ENV{UDISKS_IGNORE}="1"
ни
KERNEL=="sdb", ENV{UDISKS_IGNORE}="1"
ни много промежуточных решений - это делает диск недоступным после загрузки, но он проверяется при загрузке и все еще проверяется при приостановке - вызывая сбой приостановки.
Редактирование системных файлов
/lib/udev/rules.d/60-persistent-storage.rules
(иudisks
,udisks2
) изменениеKERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md", GOTO="persistent_storage_end"
в
KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md|sdb*", GOTO="persistent_storage_end"
опять же, это имеет некоторый эффект, маскируя диск из пространства пользователя, но диск все еще виден ядру.
Загрузка всех возможных комбинаций (ну, их много)
libata:force
параметров (найденных, например, здесь ) для отключения DMA, более низкой скорости или чего-либо другого из-за неисправного диска - не работает. Параметр используется, но диск все еще проверяется и дает сбой.Полная
udevadm info -a -n /dev/sdb
вставка на http://paste.ubuntu.com/6186145/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 ).
источник
/etc/fstab
? Потому что задержка при загрузке могла быть вызвана раньше ядром или udev, что, как кажется, имеет место, но позже и fsck, при чтенииfstab
.Ответы:
libata
вообще не имеет опции noprobe; это был устаревший вариант IDE ...Но я пошел и написал патч для ядра , который его реализует. Он должен очень легко применяться ко многим ядрам (строка выше была добавлена 2013-05-21 / v3.10-rc1 *, но может быть безопасно применена вручную без этой строки).
Обновление Пластырь теперь вверх по течению (по крайней мере в 3.12.7 стабильного ядра). Он находится в стандартном ядре, распространяемом с Ubuntu 14.04 (который основан на версии 3.13-stable).
После установки патча добавим
к параметрам загрузки ядра будет спрятан диск от ядра Linux. Дважды проверьте правильность номера; поиск имени устройства может помочь (очевидно, вы должны проверить сообщения ядра перед добавлением параметров загрузки):
Важный номер
ata2.00
в первой строке выше.источник
Аппаратные проблемы имеют физическое аппаратное решение. Рассматривали ли вы распаять или отключить питание привода?
РЕДАКТИРОВАТЬ: Хорошо, если это не вариант, люди используют это раньше для горячего подключения жесткого диска. Вы можете использовать это, чтобы отключить ваш диск.
Обратите внимание, что любой другой процесс может принудительно сканировать шину SATA, а затем заставить его вернуться. Попробуйте сделать это непосредственно перед спящим режимом ноутбука.
Под редакцией ОП: сработало . Я добавил следующий файл:
с содержанием:
... и теперь система приостанавливает (и возобновляет) правильно.
источник
delete
.BIOS
Это устройство не отображается каким-либо образом через ваш BIOS?
Зачастую, когда жесткие диски настраиваются в «автоматическом» режиме, я просматриваю и проверяю, чтобы эти устройства находились в отключенном состоянии и даже доходили до явного включения только одного жесткого диска и отключения всего остального.
Параметры загрузки ядра
Часто вы можете отключить автоматическое обнаружение различных подсистем загрузочным ядром Linux с помощью различных параметров загрузки, которые могут быть переданы ему в качестве коммутаторов.
Большинство, если не все варианты перечислены здесь:
Linux в двух словах
Возможно, вы захотите просмотреть книгу О'Рейли « Ядро Linux в двух словах» , в частности, главу 7: «Настройка ядра» .
Эта книга доступна бесплатно ее автором, Грегом Кроа-Хартманом, на его личном веб-сайте. Также можно скачать всю книгу.
источник
noide=....
. Есть множество других опций, которые вы можете предоставить загрузочному ядру, чтобы отключить автоопределение оборудования.hdb=noprobe
параметры не прошли проверку в SCSI (я думаю, что он был исключен около 2.6.x), поэтому он не существует (насколько я знаю) вариантsdb=noprobe
илиata:2=noprobe
. Я прочитал (почти) весьkernel-parameters.txt
файл в исходном коде ядра и не могу найти правильный параметр. Если вы знаете кого-то, пожалуйста, скажите это в ответе - я буду очень благодарен.libata.dma=
Linux способ проверить блокировку:
sudo hdparm -I /dev/sdX
(с X = a..z; конечно, вы должны знать, на каком устройстве находится ваш диск). В конце (большой) выход, вы должны быть в состоянии прочитать в последние 10 строк:*not* locked
.источник