Saya punya Samsung laptop (Chronos s7) dengan satu SATA hard disk pada bus ata:1
, yang terdeteksi sebagai /dev/sda
, sebuah 8G SSD pada ata:2
, /dev/sdb
, dan berbagai perangkat lain di seluruh antarmuka SATA.
Masalahnya adalah disk SSD itu
- disolder ke papan utama (tidak bergerak)
- rusak (itu hanya memberikan kesalahan I / O untuk operasi apa pun)
- tidak muncul dalam bios (mungkin karena rusak)
Sekarang disk ini:
- menunda booting tiga hingga lima menit, mencoba menyelidiki disk yang rusak, yang menjengkelkan;
- tetapi hal yang paling menjengkelkan adalah bahwa sistem gagal untuk ditangguhkan karena
/dev/sdb
gagal.
Perhatikan bahwa saya dapat hidup dengan penundaan saat boot --- yang membuat saya khawatir adalah resume / menunda.
Jadi pertanyaannya adalah: dapatkah saya memberi tahu kernel untuk menghindari bahkan memeriksa perangkat di ata: 2?
Di kernel yang lebih lama (<3.0), ketika saya masih bisa menggali sedikit ke dalam source, ada parameter baris perintah dari style hdb=ignore
yang akan melakukan trik.
Saya telah mencoba semua trik yang diusulkan di bawah ini dengan udev
dan libata:force
kernel parameter, tidak berhasil. Secara khusus, berikut ini tidak berfungsi:
Menambahkan ke salah
/etc/udev/rules.d/
satu file berikut (dalam eksekusi awal suka00-ignoredisk.rules
atau terlambat sebagai99-ignoredisk.rules
atau di kedua tempat)SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{rev}=="SSD ", ATTRS{model}=="SanDisk iSSD P4 ", ENV{UDISKS_IGNORE}="1"
maupun
KERNEL=="sdb", ENV{UDISKS_IGNORE}="1"
juga tidak banyak solusi perantara --- ini membuat disk tidak dapat diakses setelah booting, tetapi disk tersebut diperiksa saat booting, dan masih diperiksa saat menangguhkan --- menyebabkan penangguhan gagal.
Mengedit file sistem
/lib/udev/rules.d/60-persistent-storage.rules
(danudisks
,udisks2
) berubahKERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md", GOTO="persistent_storage_end"
untuk
KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md|sdb*", GOTO="persistent_storage_end"
sekali lagi, ini memiliki beberapa efek, menutupi disk dari userspace, tetapi disk tersebut masih terlihat oleh kernel.
Boot dengan semua kemungkinan kombinasi (well, banyak dari mereka) dari
libata:force
parameter (ditemukan misalnya di sini ) untuk menonaktifkan DMA, kecepatan lebih rendah atau apa pun tentang disk yang gagal --- tidak berfungsi. Parameter digunakan, tetapi disk masih diselidiki dan gagal.udevadm info -a -n /dev/sdb
Disisipkan penuh ke http://paste.ubuntu.com/6186145/smartctl -i /dev/sdb -T permissive
memberi: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
yang jelas salah. Namun:
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
(Data SSD dari http://ubuntuforums.org/showthread.php?t=1935699&p=11739579#post11739579 ).
sumber
/etc/fstab
? Karena keterlambatan saat boot bisa disebabkan oleh kernel atau udev, yang tampaknya merupakan kasusnya, tetapi juga nanti oleh fsck, ketika membacafstab
.Jawaban:
libata
sama sekali tidak memiliki opsi noprobe; itu adalah opsi IDE warisan ...Tapi saya pergi dan menulis patch kernel untuk Anda yang mengimplementasikannya. Ini harus diterapkan ke banyak kernel dengan sangat mudah (baris di atasnya ditambahkan 2013-05-21 / v3.10-rc1 *, tetapi dapat dengan aman diterapkan secara manual tanpa garis itu).
Perbarui Patch sekarang menjadi hulu (setidaknya di kernel stabil 3.12.7). Ia berada di kernel standar yang didistribusikan dengan Ubuntu 14.04 (yang didasarkan pada 3.13-stable).
Setelah tambalan diinstal, tambahkan
ke parameter boot kernel akan menyembunyikan disk dari kernel Linux. Periksa kembali apakah nomornya benar; mencari nama perangkat dapat membantu (jelas, Anda harus memeriksa pesan kernel sebelum menambahkan parameter boot):
Angka penting adalah
ata2.00
pada baris pertama di atas.sumber
Masalah perangkat keras memiliki solusi perangkat keras fisik. Apakah Anda mempertimbangkan untuk melepas atau memotong catu daya drive?
EDIT: Ok kalau itu bukan pilihan orang menggunakan ini sebelumnya untuk hot-plug hard drive. Anda dapat menggunakannya untuk menonaktifkan drive Anda.
Perhatikan bahwa proses lain dapat memaksa pemindaian bus SATA, dan kemudian membuatnya kembali. Cobalah untuk melakukannya tepat sebelum hibernasi laptop.
Diedit oleh OP: itu berhasil . Saya menambahkan file berikut:
dengan konten:
... dan sekarang sistem menangguhkan (dan melanjutkan) dengan benar.
sumber
delete
.BIOS
Apakah perangkat ini tidak muncul dengan cara apa pun melalui BIOS Anda?
Sering kali HDD dikonfigurasikan dalam mode "otomatis", saya akan memeriksa dan memastikan bahwa perangkat ini dalam keadaan dinonaktifkan dan bahkan secara eksplisit hanya mengaktifkan satu HDD dan menonaktifkan yang lainnya.
Opsi Boot Kernel
Sering kali Anda dapat menonaktifkan berbagai subsistem agar tidak terdeteksi secara otomatis oleh booting Kernel Linux melalui penggunaan opsi boot yang berbeda yang dapat diteruskan ke sana sebagai sakelar.
Sebagian besar jika tidak semua opsi tercantum di sini:
Linux dalam buku singkatnya
Anda mungkin ingin membaca buku O'Reilly, Linux Kernel in a Nutshell , khususnya, Bab 7: Menyesuaikan Kernel .
Buku ini tersedia secara gratis oleh penulisnya, Greg Kroah-Hartman, di situs pribadinya. Seluruh buku juga dapat diunduh.
sumber
noide=....
. Ada sejumlah opsi lain yang dapat Anda berikan ke kernel booting untuk menonaktifkan deteksi otomatis perangkat keras.hdb=noprobe
opsi belum lulus kerahkan ke scsi (saya pikir itu dihilangkan sekitar 2.6.x), sehingga tidak ada (segera setelah saya tahu) asdb=noprobe
atauata:2=noprobe
opsi. Saya telah membaca (hampir) semuakernel-parameters.txt
file di sumber kernel dan saya tidak dapat menemukan parameter yang benar. Jika Anda mengenal seseorang, tolong katakan dalam jawaban --- Saya akan sangat berterima kasih.libata.dma=
Cara Linux untuk memeriksa kunci:
sudo hdparm -I /dev/sdX
(dengan X = a..z; Anda harus tahu perangkat apa yang digunakan drive Anda). Pada akhir output (besar), Anda harus bisa membaca di dalam 10 baris terakhir:*not* locked
.sumber