Dwa rozwiązania tutaj: jedno jest szybkie do zastosowania, chociaż rozwiązuje problem tylko częściowo, drugie jest kompletne, ale wymaga skompilowania własnego jądra.
Prawidłowa odpowiedź to łatka na jądro.
Robin H. Johnson napisał łatkę do sterownika jądra SATA ( znajdź go na stronie wymiany stosów Unix / Linux ), która całkowicie ukrywa dysk.
Aktualizacja Łata jest teraz w górę (przynajmniej w stabilnym jądrze 3.12.7), zobacz repozytorium git . Poprosiłem o backport w starterze Ubuntu .
Po zainstalowaniu poprawki dodawanie
libata.force=2.00:disable
do parametrów rozruchowych jądra ukryje dysk przed jądrem Linux. Sprawdź dokładnie, czy numer jest poprawny; wyszukiwanie nazwy urządzenia może pomóc:
(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
Obejście
Odpowiedzi udzielił użytkownik Unix StackExchange Emmanuel w https://unix.stackexchange.com/a/103742/52205
Możesz przynajmniej rozwiązać problem z zawieszeniem, wydając polecenie
echo 1 > /sys/block/sdb/device/delete
przed zawieszeniem.
Aby go zautomatyzować, dodałem następujący plik: (zwróć uwagę na flagi, musi być wykonywalny)
-rwxr-xr-x 1 root root 204 Dec 6 16:03 99_delete_sdb
w katalogu /etc/pm/sleep.d/
#!/bin/sh
# Tell grub that resume was successful
case "$1" in
suspend|hibernate)
if [ -d /sys/block/sdb ]; then
echo Deleting device sdb
echo 1 > /sys/block/sdb/device/delete
fi
;;
esac
... a teraz system poprawnie zawiesza (i wznawia). Dodałem fragment kodu
if [ -d /sys/block/sdb ]; then
echo Deleting device sdb
echo 1 > /sys/block/sdb/device/delete
fi
do /etc/rc.local
zbyt, na dokładkę.
99_delete_sdb
plik wykonywalny? W/etc/rc0.d/
może być?