Hai giải pháp ở đây: một là nhanh chóng để áp dụng, mặc dù chỉ giải quyết được một phần, một là giải pháp hoàn chỉnh nhưng yêu cầu bạn phải biên dịch kernel của riêng bạn.
Câu trả lời đúng là một bản vá kernel.
Robin H. Johnson đã viết một bản vá cho trình điều khiển hạt nhân SATA ( tìm thấy nó trong trang web trao đổi ngăn xếp Unix / Linux ) ẩn hoàn toàn ổ đĩa.
Cập nhật Bản vá hiện đang ngược dòng (ít nhất là trong kernel ổn định 3.12.7), xem kho git . Tôi đã yêu cầu backport trong launchpad Ubuntu .
Sau khi bản vá được cài đặt, thêm
libata.force=2.00:disable
các tham số khởi động kernel sẽ ẩn đĩa khỏi kernel Linux. Kiểm tra kỹ xem số đó có đúng không; tìm kiếm tên thiết bị có thể giúp:
(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
Giải pháp thay thế
Đã được trả lời bởi người dùng Unix StackExchange Emmanuel trong https://unix.stackexchange.com/a/103742/52205
Bạn ít nhất có thể giải quyết vấn đề đình chỉ bằng cách ban hành lệnh
echo 1 > /sys/block/sdb/device/delete
trước khi đình chỉ.
Để tự động hóa nó, tôi đã thêm tệp sau: (lưu ý các cờ, nó phải được thực thi)
-rwxr-xr-x 1 root root 204 Dec 6 16:03 99_delete_sdb
trong thư mục /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
... và bây giờ hệ thống tạm dừng (và tiếp tục) một cách chính xác. Tôi đã thêm đoạn trích
if [ -d /sys/block/sdb ]; then
echo Deleting device sdb
echo 1 > /sys/block/sdb/device/delete
fi
đến /etc/rc.local
quá, cho biện pháp tốt.
99_delete_sdb
tập tin thực thi ở đâu? Trong/etc/rc0.d/
có thể?