ড্রাইভের জন্য কার্নেল প্রোবিং নিষ্ক্রিয় করবেন কীভাবে?


9

আমি মেইনবোর্ডে 30 গিগাবাইট এক্সপ্রেসক্যাচ সানডিস্ক এসএসডি সোনার্ড সহ সামস্যাং ল্যাপটপ পেয়েছি। এসএসডি মারা গিয়েছিল (যখন আমি কোনওভাবে এটি অ্যাক্সেস করার চেষ্টা করেছি তখন প্রচুর ত্রুটি দেয়) তবে এটি এখনও কার্নেল বুটে অনুসন্ধান করা হয়েছে, আমি এটির বিভাজন দেখছি, উবুন্টুর unityক্য অ্যাপ্লিকেশন ড্রয়ারে আনমাউন্টড ড্রাইভ আইকনটি দেখায় এবং সর্বোপরি আমি ল্যাপটপ স্থগিত করতে পারি না can't , কারণ এসএসডি ডিভাইসে সাসপেন্ড কমান্ড প্রেরণ ব্যর্থ। আমি sdb = নোপ্রোব কার্নেল প্যারামিটারটি পাস করার চেষ্টা করেছি, তবে দেখে মনে হচ্ছে এটি অনেক আগে 3.8.0 কার্নেলে (উবুন্টু 13.04) অপ্রচলিত। সাম্প্রতিক কার্নেলগুলিতে আমি কীভাবে সাটা ডিভাইস অক্ষম করতে পারি?

উত্তর:


1

দুটি সমাধান এখানে: একটি প্রয়োগ করা দ্রুত, যদিও সমস্যাটি কেবল আংশিকভাবে সমাধান করে, অন্যটি সম্পূর্ণরূপে তবে আপনার নিজের কার্নেলটি সঙ্কলন করতে হবে।

সঠিক উত্তরটি কার্নেল প্যাচ।

রবিন এইচ জনসন এসএটিএ কার্নেল ড্রাইভারের জন্য একটি প্যাচ লিখেছিলেন ( এটি ইউনিক্স / লিনাক্স স্ট্যাক এক্সচেঞ্জ সাইটে সন্ধান করুন ) যা পুরোপুরি ড্রাইভটি আড়াল করে।

আপডেট প্যাচটি এখন আপস্ট্রিমে রয়েছে (কমপক্ষে 3.12.7 স্থিতিশীল কার্নেলের মধ্যে), গিট সংগ্রহস্থলটি দেখুন । আমি উবুন্টু লঞ্চপ্যাডে ব্যাকপোর্টের জন্য জিজ্ঞাসা করেছি ।

একবার প্যাচ ইনস্টল করা হয়, যোগ

 libata.force=2.00:disable

কার্নেলের বুট পরামিতিগুলি লিনাক্স কার্নেল থেকে ডিস্কটি আড়াল করবে। নম্বরটি সঠিক কিনা তা ডাবল পরীক্ষা করে দেখুন; ডিভাইসের নাম অনুসন্ধান করতে সহায়তা করতে পারে:

(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

কার্যসংক্রান্ত

ইউনিক্স স্ট্যাকএক্সচেঞ্জ ব্যবহারকারী ইমমানুয়েল https://unix.stackexchange.com/a/103742/52205 এ উত্তর দিয়েছেন

কম্যান্ড জারি করে আপনি কমপক্ষে সাসপেন্ড সমস্যাটি সমাধান করতে পারেন

echo 1 > /sys/block/sdb/device/delete

স্থগিত করার আগে।

এটি স্বয়ংক্রিয় করতে, আমি নিম্নলিখিত ফাইলটি যুক্ত করেছি: (পতাকাগুলি নোট করুন, এটি অবশ্যই কার্যকর হতে হবে)

-rwxr-xr-x 1 root root 204 Dec  6 16:03 99_delete_sdb

ডিরেক্টরিতে /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

... এবং এখন সিস্টেমটি সঠিকভাবে স্থগিত করেছে (এবং পুনরায় শুরু করুন)। আমি স্নিপেট যোগ

if [ -d /sys/block/sdb ]; then
      echo Deleting device sdb 
      echo 1 > /sys/block/sdb/device/delete     
fi

থেকে /etc/rc.localখুব, ভাল পরিমাপ জন্য।


ধন্যবাদ @ রুমানো, প্রতিধ্বনি কাজ করেছে। তবে এটি অস্পষ্ট, আমি 99_delete_sdbএক্সিকিউটেবল ফাইলটি কোথায় রাখব ? ইন /etc/rc0.d/হয়তো?
সের্গেই মেলখিন

দুঃখিত --- প্রাসঙ্গিক তথ্য যুক্ত।
রুমানো

5

আমি গিয়েছিলাম এবং আপনার জন্য একটি কার্নেল প্যাচ লিখেছিলাম যা বুট করার সময় একক ডিস্ক নিষ্ক্রিয় করার দক্ষতা প্রয়োগ করে, যাতে আপনাকে এটি ইউদেভে অক্ষম করা বা প্রাথমিক বুটের সময় অপেক্ষায় বিরক্ত করার প্রয়োজন হয় না।

http://dev.gentoo.org/~robbat2/patches/3.13-libata-disable-disks-by-param.patch

খুব সহজেই অনেকগুলি কার্নেলগুলিতে প্রয়োগ করা উচিত (উপরে লাইনটি 2013-05-21 / v3.10-rc1 * যুক্ত করা হয়েছিল, তবে সেই লাইনটি ছাড়াই ম্যানুয়ালি প্রয়োগ করা যেতে পারে)।


1
আপনার প্রচেষ্টার জন্য ধন্যবাদ। সম্ভবত আপনি মন্তব্য করতে পারেন (যারা কার্নেল প্যাচগুলির সাথে এতটা পরিচিত নন), প্যাচটি কীভাবে প্রয়োগ করবেন এবং কীভাবে এটি ব্যবহার করবেন (সম্ভবত sdb=disableকার্নেল প্যারামিটার হিসাবে)।
এমপি

1
কার্নেল.আর / ডক / ডকুমেন্টেশন / অ্যাপলিং- পেচস টেক্সট সাধারণভাবে কার্নেল প্যাচগুলি প্রয়োগ করার বিষয়টি অন্তর্ভুক্ত করে তবে অনেকগুলি বিতরণে প্যাচ প্রয়োগের নির্দিষ্ট পদ্ধতি রয়েছে। এই প্যাচটি আরও নির্দিষ্টভাবে লিবাটার জন্য 'অক্ষম' বলের পতাকা প্রয়োগ করে। ব্যবহারকারীকে এটি লিবাটা.ফোর্স = আইডি দিয়ে ব্যবহার করতে হবে: আইডি যেখানে নম্বর বা সংখ্যা হয় সেখানে অক্ষম করুন.সংখ্যায় ড্রাইভ সনাক্তকারী সংখ্যাদি টুপল।
রোবট 2

আমি জানি না এই নির্দেশাবলী: wiki.ubuntu.com/Kernel/BuildYourOwnKernel আপ টু ডেট। আমি এই সপ্তাহে যদি পারি তবে আমি চেষ্টা করব ...
রুমানো

যাইহোক, স্যামসুং ল্যাপটপের ক্ষেত্রে কমান্ডটি সম্ভবত "libata.for = 2.00: অক্ষম" grep iSSD /var/log/syslogহওয়া উচিত ( আপনাকে একটি ইঙ্গিত দেওয়া উচিত)।
রুমানো

1
এফওয়াইআই, এটি 3.13 এবং স্থিতিশীল কার্নেল গাছের সাথে কার্নেলের সাথে মিশে গেছে। নোডাইজেবল বিকল্পটি অবশ্য গ্রহণ করা হয়নি।
রোবট 2

0

আমি এটি নিয়ে গবেষণা করেছি এবং একটি সমাধান পেয়েছি যা উবুন্টুতে খুব সহজেই প্রয়োগ করা যেতে পারে। ডিস্ট্রোটি কমোড ব্যবহার করে, সুতরাং নিম্নলিখিতটি যে কোনওটি এবং কমড ব্যবহার করে যে কোনও ডিস্ট্রোতে ভাল কাজ করা উচিত।

আপনি কোন ড্রাইভারটি ব্যবহার করছেন তার উপর নির্ভর করে, আপনি যদি সমস্ত এসটিএ ডিভাইস অক্ষম করতে চান তবে আপনাকে এটি ব্ল্যাকলিস্ট করতে হবে । আপনি lsmod | grep sataকোন ড্রাইভার (গুলি) ব্যবহার করছেন তা চেষ্টা করে দেখুন। তারপরে আপনার /etc/modprobe.d/একটি নতুন ফাইল echo blacklist (module) > blacklist.confএটিকে ব্ল্যাকলিস্টে যুক্ত করার জন্য তৈরি করুন। mkinitramfsএটি কার্যকর হওয়ার জন্য আপনার সিরামফগুলি পুনর্নির্মাণ করুন । পুনরায় বুট করুন।

পর্যায়ক্রমে, কেবল modprobe.blacklist=(module)আপনার কার্নেল প্যারামিটারগুলিতে যুক্ত করুন।


1
এটি হার্ড ড্রাইভ সহ সমস্ত সাটা ডিভাইস অক্ষম করবে, তাই আমার ল্যাপটপ আর বুট হবে না। এবং সাটা সমর্থন কার্নেলের মধ্যে সংকলিত হয়েছে (মডিউল হিসাবে নয়), তাই আমি এটি কালো তালিকাভুক্ত করতে পারি না।
সের্গেই মেলখিন

ঠিক আছে, তাহলে কেবল আপনার ল্যাপটপটি খুলুন এবং ড্রাইভটি সরান ...
হেক্টর

দুর্ভাগ্যক্রমে আমি এটি করতে যথেষ্ট সক্ষম নই - এটি মেইনবোর্ডে সোনার্ড করা হয়েছে, সাতা কেবলের মাধ্যমে সংযুক্ত নয়। আমি এমনকি শুরুরও নই যে ল্যাপটপটি কেবল সরিয়ে ফেললে কার্যকর হবে।
সের্গেই মেলখিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.