通知
お願いします 答えをスクロールしてください (ポイントは少ないですが、正しいものです)。この問題は、カーネル3.12.7以降に含まれるパッチによって解決されます。以前のバージョンにもバックポートされることを願っています。
私のラップトップは、Samsung Chronosシリーズ7です。UbuntuGnome 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"
しかし、それは機能しません。
一方、Windowsを使用せずに「キャッシュ」モードのままにした場合、または同じことを行うために「ライブ」ウィンドウを起動する場合、SSDをリセットする方法を誰かが知っている場合...
ありがとう!
追加されたデータ:
フル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
( http://ubuntuforums.org/showthread.php?t=1935699&p=11739579#post11739579 からのSSDデータ)。
追加の考え:
これはすべて、Intel Smart Response Technologyの副作用であり、Linuxをインストールする前に無効にできないのでしょうか?はいの場合、マシンにウィンドウを再インストールする前にどのように確認できますか?または、これは暗闇でのショットですか? (BIOSではSSDドライブは表示されず、Intel SRTについては何もありません)。
重複としてのマーキングについて:
質問のタイトルを変更しました。リンクされた質問が私の問題に答えるとは思わない。 SSDが故障していることを肯定的に知っています。 Linuxカーネルにまったくプローブしないように指示することは可能かどうかを尋ねています。
ここで2つのソリューション:1つは適用が速いですが、問題は部分的にしか解決しませんが、もう1つは完全なものですが、独自のカーネルをコンパイルする必要があります。
ロビンH.ジョンソンは、SATAカーネルドライバー用のパッチを作成しました( nix/Linuxスタック交換サイトで見つけてください )。これはドライブを完全に隠します。
Update 1パッチはアップストリームになりました(少なくとも3.12.7安定カーネル)。 gitリポジトリ を参照してください。 buntuランチパッドのバックポート を要求しました。
Update 2パッチはUbuntu Trusty 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
カーネルパラメーターを追加するには(一時的および永続的にボット)、次のQ&Aを確認できます。 カーネルブートパラメーターを追加するにはどうすればよいですか
少なくともsuspend-resumeを有効にする問題は、Unix StackExchangeユーザーEmmanuelによって 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
...そして、システムは正しくサスペンド(およびレジューム)します。
次の情報(udevadm info -a -n/dev/sdbの出力)を使用して、udevルールの作成を試みることができます。
情報:
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}"&ATTRS { model}属性、次に"UDISKS"変数を割り当てて無視します。
99-hide-ssd.rulesファイルの内容は次のとおりです。
SUBSYSTEMS == "scsi"、DRIVERS == "sd"、ATTRS {rev} == "SSD"、ATTRS {model} == "SanDisk iSSD P4"、ENV {UDISKS_IGNORE} = "1"
変更をナノに保存するには... Ctrl+O、その後 Enter そして最後に Ctrl+X。
2)最後に、udevルールを次のように更新します。
Sudo udevadm trigger
注:ENV {UDISKS_IGNORE} = "1"を使用すると、Ubuntu 12.10および13.04のディスクは無視されます。
Ubuntu 12.04の場合、変数はENV {UDISKS_PRESENTATION_HIDE} = "1"になります。
お役に立てれば。
他のディスクがahciを使用していない場合、またはSSDでない場合は、それらのカーネルドライバーを削除できます。
(次の再起動まで)そのセッションから削除するには、次を実行します:
Sudo rmmod ahci
リロードするには、次を実行します:
Sudo modprobe ahci
すべてが順調に進んでいることがわかったら、今度は完全に無効にすることができます(次回起動時に読み込まないでください)。ファイル/ etc/modprobe.d/blacklist.confを開き、次の行を追加します。
blacklist ahci
ssdドライバーをブラックリストに登録するには、ahciをsdに置き換えるだけです
https://serverfault.com/questions/112147/tell-ubuntu-to-ignore-dead-hard-drive-during-booting は、部分的に示唆しています:
ルートとして、/ etc/udev/rules.d/60-persistent-storage.rulesをお気に入りのテキストエディターで開きます。
数行下に、おそらく次のような行が表示されます。
KERNEL == "ram * | loop * | fd * | nbd * | gnbd * | dm-| md"、GOTO = "persistent_storage_end 「その2行目に「sdb *」を追加すると、次のようになります。
KERNEL == "ram * | loop * | fd * | nbd * | gnbd * | dm-| md| sdb *"、GOTO = "persistent_storage_end"
保存して再起動すると、おそらく動作します。そうでない場合、まあ、これは保証後ですか?
私が知っていることから、SSDを削除する以外、メッセージを削除する方法はありません。
私は行って、起動時に単一のディスクを無効にする機能を実装するカーネルパッチを作成しました。これにより、udevで無効にしたり、初期ブート中に待機したりする必要がなくなります。
http://dev.gentoo.org/~robbat2/patches/3.13-libata-disable-disks-by-param.patch
多くのカーネルに非常に簡単に適用できるはずです(上の行は2013-05-21/v3.10-rc1 *に追加されましたが、その行がなくても手動で安全に適用できます)。