সাম্প্রতিক কর্পোরেট কম্পিউটারে স্টার্টআপের সময় ক্রাশ


63

কিছু সাম্প্রতিক আপডেটের পরে, আমার কম্পিউটার আর বুট হয় না! আমি যা নির্ধারণ করতে পারি তা এখানে:

  • এটি একটি খুব সাম্প্রতিক কম্পিউটার যা আমাকে কর্পোরেট আইটি সরবরাহ করেছিল। এটির সাম্প্রতিক ইন্টেল সিপিইউ (স্কাইলেক প্রজন্ম) রয়েছে।
  • কম্পিউটার উবুন্টু 16.04 চালায়।
  • কম্পিউটারটি সর্বশেষে মার্চ মাসের কিছু সময় বুট হয়েছিল। সমস্যাটি সম্ভবত সফ্টওয়্যার আপডেট বা একটি হার্ডওয়্যার বাগের কারণে is
  • আমার আরও একটি কম্পিউটার চলছে 16.04 একই সফটওয়্যারটি ইনস্টল করে (আমি ব্যবহার করেছি apt-clone), এবং এটি ঠিক কাজ করে। এটির বিভিন্ন হার্ডওয়্যার রয়েছে (amd64, তবে বিভিন্ন সিপিইউ, বিভিন্ন জিপিইউ ইত্যাদি)।
  • কার্নেলটি শুরু হয়, initrd সঠিকভাবে কাজ করে works আমি যখন গ্রাফিক্স মোডে একটি স্প্ল্যাশ স্ক্রিন দিয়ে বুট করি তখন আমার ডিএম-ক্রিপ্ট ভলিউমের জন্য পাসওয়ার্ডের জন্য অনুরোধ জানানো হয়, এবং সর্বশেষে আমি দেখতে পাই এটি সফলভাবে মাউন্ট হয়েছে।
  • আমি লগইন প্রম্পট পাওয়ার আগে হ্যাং ঘটে। কম্পিউটার হ্যাং হয়ে গেলে, এটি একটি হার্ড হ্যাং। এমনকি Alt+ SysRqসাড়া দেয় না। ভক্তরা সম্পূর্ণ বিস্ফোরণে চালু হওয়ার পরে থেকেই সিপিইউ স্পষ্টতই 100% এঁকেছে।
  • রিবুট করার আগে আমি যে কার্নেলটি চালাচ্ছিলাম তা এখনও আমার কাছে রয়েছে। আমি যখন গ্রাব মেনুতে এই কার্নেলটি নির্বাচন করি তখন আমি একই লকআপটি পাই। সুতরাং দেখে মনে হচ্ছে এটি পূর্ব-বিদ্যমান কার্নেল বাগ যা অন্য কোনও কিছুর দ্বারা ট্রিগার হয়ে যায় - তবে কী?
  • যদি আমি স্প্ল্যাশ স্ক্রীন বন্ধ সুইচ (অপসারণ splashথেকে linuxGRUB- র মধ্যে কমান্ড লাইন), আমি পরিষেবার একটি শুরুর নম্বর হবে দেখতে, তাহলে এটি লক।
  • আমি গ্রুব- init=/bin/shlinuxকমান্ড লাইনে যুক্ত করে একটি রুট শেল পেতে পারি । আমি যোগ করেও আরও পেতে পারি

    systemd.unit=basic.target systemd.shell
    

    এটি বেশ কয়েকটি পরিষেবা শুরু করে এবং tty9 এ একটি রুট শেল চালায়।

  • আমি যদি systemctl start multi-user.targetএই রুট শেলটি থেকে চালনা করি তবে কম্পিউটার লক হয়ে যায়। সুতরাং সম্ভবত এই সমস্যাগুলির মধ্যে একটি দ্বারা ট্রিগার হয়।
  • systemctl list-dependencies multi-user.targetকী পরিষেবা শুরু হয় তা দেখতে দৌড়ে এসেছি । আমি তালিকাভুক্ত নির্ভরতাগুলি ম্যানুয়ালি এক এক করে শুরু করেছি এবং সবকিছু ঠিকঠাক শুরু হয়েছিল।

সুতরাং এটি দেখতে একটি হার্ডওয়্যার বাগের মতো (যেহেতু এটি একটি কম্পিউটারে ঘটে তবে অন্য কম্পিউটারে নয়) যা কিছু সফ্টওয়্যার দ্বারা ট্রিগার হয়ে যায়। তবে কী সফটওয়্যার? যেহেতু কম্পিউটারটি এত শক্তভাবে লক হয়ে গেছে, আমি কোনও লগ পেতে পারি না। এমনকি আমি কোনও দরকারী কনসোল আউটপুট পেতে পারি না।


দরকারী ডিবাগিং কৌশল:

  • Alt+ SysRq: ম্যাজিক সিসআরকি কী , যা আপনাকে জরুরি রিবুটের মতো জিনিসগুলি করতে দেয়। এটি খুব নিম্ন স্তরে কার্নেলটি অ্যাক্সেস করে, তাই এটি সবচেয়ে খারাপ ক্র্যাশ ব্যতীত সমস্ত ক্ষেত্রে কাজ করে। আমার ক্ষেত্রে, Alt+ SysRqসাড়া দেয় না, যা ক্র্যাশটি কত গভীর হয় তা দেখায়।
  • বুট পরামিতিগুলি সংশোধন করতে, পাওয়ারটি Shiftস্যুইচ করার পরে কয়েক সেকেন্ড টিপুন এবং ধরে রাখুন । বিআইওএস কীবোর্ড শুরু করার পরে আপনাকে এটি টিপতে হবে তবে অপারেটিং সিস্টেম বুট করার আগে। এটি গ্রাব মেনুতে উপস্থিত হয়।
  • গ্রুব মেনুতে, eমেনু প্রবেশের জন্য কমান্ড লাইনটি সম্পাদনা করতে টিপুন । লিনাক্স বুট পরামিতিগুলি পরিবর্তন করতে, শুরু হওয়া লাইনে নেভিগেট করুন linux। একটি আধুনিক উবুন্টুতে, আপনি "উবুন্টুর জন্য উন্নত বিকল্পগুলি" এর অধীনে পুরানো কার্নেলগুলি পাবেন। একবার আপনি কমান্ড লাইনে পছন্দসই পরিবর্তনগুলি Ctrlসম্পাদন xকরলে বুট করতে + টিপুন । আপনি এখানে যে কোনও পরিবর্তন কেবল এই বুটের জন্য, সেগুলি ডিস্কে সংরক্ষণ করা হয় না।
  • linuxকমান্ড লাইনে কিছু দরকারী বিকল্প :
    • quiet nosplashপ্রায় সমস্ত বুট বার্তা লুকায়। বুট চলাকালীন কনসোলে বার্তা পেতে তাদের সরান, যা সমস্যা নির্ণয়ের কোনও সম্ভাবনা থাকা প্রয়োজন।
    • recoveryআপনাকে কোনও রুট শেল দেয় almost আপনাকে মূল পাসওয়ার্ড জানতে হবে। "পুনরুদ্ধার মোড" মেনু এন্ট্রি এটি ব্যবহার করে।
    • init=/bin/shকোনও পরিষেবা ছাড়াই আপনাকে একটি রুট শেল দেয়। স্বাভাবিক বুট পুনরায় শুরু করতে, চালান exec init। আপনি এই মুহুর্তে সিস্টেমেড বিকল্পগুলি পাস করতে পারেন, উদাহরণস্বরূপ exec init --unit=basic.targetআরম্ভ এবং কয়েকটি পরিষেবা শুরু করার জন্য (নোট করুন যে এটি লগ ইন করার কোনও উপায় শুরু করে না, সুতরাং অন্য কনসোলে আপনার শেল চলার চেয়ে আরও ভাল হবে)। লক্ষ্য করুন যে রুট ফাইল সিস্টেমটি কেবল পঠনযোগ্য হিসাবে মাউন্ট করা হয়েছে; mount -o remount,rw /এটি লিখতে সক্ষম হতে চালান ।
    • systemd.unit=basic.targetপরিষেবার একটি খুব বেসিক সেট শুরু। মনে রাখবেন যে এটিতে লগ ইন করার কোনও উপায় অন্তর্ভুক্ত নয়! systemctl set-default basic.targetরুট প্রম্পটে চালিয়ে আপনি এটি ডিফল্ট করতে পারেন । মূল ডিফল্ট লক্ষ্য পুনরুদ্ধার করতে, চালান systemctl set-default graphical.target(বা systemctl set-default multi-user.targetকোনও জিইউআইবিহীন সার্ভারের জন্য)।
    • systemd.debug-shelltty9 এ একটি রুট শেল শুরু করে। systemctl enable debug-shellরুট প্রম্পটে চালিয়ে আপনি প্রতিটি বুটের জন্য এটি সক্ষম করতে পারেন । আপনি সমস্যাটি সমাধান করার পরে এটি অক্ষম করতে ভুলবেন না systemctl disable debug-shell। টিটি 9 তে স্যুইচ করতে Alt+ টিপুন F9
    • আরও দেখুন ফেডোরা systemd হল টিপস , আর্চ লিনাক্স বুট সমস্যা টিপস

উত্তর:


71

সমস্যাটি

দেখা যাচ্ছে যে আমার সমস্যাটি সর্বশেষতম ইন্টেল মাইক্রোকোড (কিছু?) স্কাইলেক সিপিইউ এবং সাম্প্রতিক লিনাক্স কার্নেলের মধ্যে একটি জ্ঞাত সমস্যা, যা মূলত এসএসডি দ্বারা ট্রিগার করা হয় । দেখুন উবুন্টু বাগ # 1759920 "ইন্টেল-মাইক্রো-3.20180312.0 লগইন পর্দায় লকআপ ঘটায় (W / Linux চিত্র 4.13.0-37-জেনেরিক)" , এবং এছাড়াও অন্যান্য বাগ যা শয্যাত্যাগ একটি নম্বর একই সমস্যা সম্পর্কে করা যেমন উবুন্টু বাগ # 1746806 "এসএসএসডি এডাব্লুএস সি 5 এবং এম 5 উদাহরণগুলি ক্র্যাশ করে, 100% সিপিইউ সৃষ্টি করে" এবং উবুন্টু বাগ # 1746418 "লিনাক্স-ইমেজ-4.13.0-32-জেনেরিক ইনস্টল করার পরে জর্জি শুরু করার সময় সিস্টেম হিমশীতল" । আপনি সম্ভবত এই বাগের মুখোমুখি হতে পারেন যদি:

  • আপনার খুব সাম্প্রতিক ইন্টেল সিপিইউ রয়েছে। আমি যতদূর বলতে পারি, এই বাগটি কেবল স্কাইলেক সিপিইউতে উত্থিত হয় ।
  • আপনি ইন্টেল-মাইক্রোকোড প্যাকেজ ইনস্টল করেছেন। আগেরটিতে ফিরে যাওয়া, পরীক্ষিত কার্নেলটি আমার পক্ষে কাজ করে না কারণ আমি কেবল সেই কার্নেলটি পূর্বের মাইক্রোকোড দিয়ে চালাতাম।
  • ব্যবহারকারী প্রমাণীকরণের জন্য আপনার কম্পিউটারটি কর্পোরেট নেটওয়ার্কের সাথে সংযুক্ত (সাধারণত এলডিএপি বা সক্রিয় ডিরেক্টরি)। যদিও বাগটি ট্রিগার করার অন্যান্য উপায় রয়েছে তবে এসএসডি চালানো সর্বাধিক সাধারণ অপরাধী বলে মনে হয়। এছাড়া রিপোর্ট হয় উপলব্ধকারী Xorg বিপর্যয়

বাগ জন্য mitigations কারণে স্পেকটের সুরক্ষা সমস্যা যে জানুয়ারী 2018 সালে প্রকাশিত হয় কিছু কার্নেল কোড এবং কিছু মধ্যে একটি অসঙ্গতি এর প্রসেসর মাইক্রো- যে কিছু পরিস্থিতিতে একটি লক-আপ হয়।

কীভাবে মেরামত করবেন

  1. আপনি যদি সাধারণভাবে বুট করতে না পারেন তবে গ্রুব প্রম্পটে আপনার কার্নেল কমান্ড লাইনটি সম্পাদনা করতে হবে। মূল শেল পাওয়ার ব্যাখ্যা এবং সম্ভাব্য উপায়গুলির জন্য প্রশ্নটি দেখুন।
  2. এই নির্দিষ্ট বাগ জন্য একটি কার্যসংক্রান্ত হয় যোগ noibpbKernel কমান্ড-লাইনের প্যারামিটার ( 1746418/14 , 1759920/56 )। এটি আপনাকে স্বাভাবিকভাবে বুট করতে এবং কিছু মেরামত করতে দেয়।
    এটি দুর্বলতা প্রশমনটি অক্ষম করে যা সমস্যার সৃষ্টি করে, যার অর্থ আপনার কম্পিউটার এখন কিছু আক্রমণে ঝুঁকির মধ্যে রয়েছে। তারা স্থানীয় আক্রমণ, অর্থাৎ আক্রমণকারীকে আপনার মেশিনে কোড চালানো দরকার, তবে এই আক্রমণগুলি সম্ভবত ব্রাউজারে জাভাস্ক্রিপ্টের মাধ্যমে সম্পাদন করা যেতে পারে।
    আপনার যদি অন্য কোনও উপায় না থাকে তবে আপনি noibpbস্থির কার্নেল না পাওয়া পর্যন্ত কার্নেল কমান্ড লাইনে যুক্ত করে এটি স্থায়ী করতে পারেন।
  3. উবুন্টুতে, 23 এপ্রিল 2018 এর সপ্তাহে এই ফিক্সটি আশা করা হচ্ছে , সম্ভবত এটি কার্নেল হবে 4.4.0-117 এবং 4.13.0-39। ইতিমধ্যে, টাইলার হিকস পরীক্ষার কার্নেলগুলি 4.4 এবং 4.13 এর জন্য প্রকাশ করেছে

আমি কীভাবে সমস্যাটি সনাক্ত করেছি

আমি বেশ কয়েকটি জিনিস চেষ্টা করেছি (প্রশ্নটি দেখুন) এবং নির্ধারণ করেছি যে বাগটি পৌঁছানোর basic.targetএবং পৌঁছানোর মাঝে কোথাও ট্রিগার হয়েছিল multi-user.target। তাই আমি ডিফল্ট সিস্টেমেড টার্গেটটি basic.target( systemctl set-default basic.target) এ সেট করেছিলাম এবং রুট শেল পেতে debug-shellপরিষেবা ( systemctl enable debug-shell) সক্ষম করেছিলাম ।

আমি দৌড়ে গিয়ে systemctl list-dependencies multi-user.targetম্যানুয়ালি একের পর এক তালিকাভুক্ত নির্ভরতা শুরু করেছি। এটি ক্রাশটিকে ট্রিগার করে না।

সমস্ত পরিষেবা সরাসরি সিস্টেমড দ্বারা পরিচালিত হয় না । কিছু আপস্টার্ট পরিষেবা হিসাবে পরিচালিত হয় এবং কিছু সিসভিনিট স্ক্রিপ্ট হিসাবে পরিচালিত হয় । নীচের শেল স্ক্রিপ্ট তাদের সমস্ত চালায়। দ্রষ্টব্য: আমি এটি একবারই পরীক্ষা করে দেখেছি এবং এটি ডিজাইন দ্বারা ক্র্যাশ হয়েছে।

#!/bin/sh
wants=$(systemctl show -p Wants multi-user.target | sed 's/^Wants=//' | tr ' ' '\n' | sort)
log=/var/tmp/multi-user-steps-$(date +%Y%m%d-%H%M%S)

log () {
  echo "$* ..." | tee -a "$log"
  sync
  "$@"
  ret=$?
  echo "$* -> $ret" | tee -a "$log"
  sync
  return $ret
}

# systemd services
for service in $wants; do
  log systemctl start $service
  sleep 2
done

# upstart services
for conf in /etc/init/*.conf; do
  service=${conf##*/}; service=${service%.conf}
  log service ${service} start
  sleep 2
done

# sysvinit services
for service in /etc/rc3.d/S*; do
  log ${service} start
  sleep 2
done

আমার কম্পিউটার শুরু হওয়ার পরে ক্র্যাশ হয়েছে sssd। সেখান থেকে, “এসএসডি লিনাক্স কার্নেল হ্যাং” -র একটি ওয়েব অনুসন্ধান আমাকে https://bugs.launchpad.net/cloud-images/+bug/1746806 এবং সনাক্তকরণ এবং সমাধানের দিকে নিয়ে যায়।


আমি এই এক মধ্যে দৌড়ে। আমি ইন্টেল-মাইক্রোকোড প্যাকেজটি সরিয়েছি এবং এটি পুনরায় ইনস্টল হওয়া রোধ করতে এপটিকে কালো তালিকাভুক্ত করেছি। যে মাইক্রো-কোডগুলির কারণে সমস্যাগুলি সিপিইউতে স্থায়ীভাবে যুক্ত হয় না। এটি প্রতিবার পুনরায় লোড করা হয়। সুতরাং এটি লোড না করাও একটি কাজ হিসাবে কাজ করবে। এই ক্ষেত্রে noipbp দরকার নেই এবং আপনি এখনও প্রশমনগুলি পাবেন। আমার ক্ষেত্রে এই সিস্টেম হিসাবে একটি প্রয়োজনীয়তা কর্পোরেট প্রক্সি সার্ভারগুলির অতিরিক্ত সুরক্ষা ব্যতীত বেশিরভাগ সময় সরাসরি ইন্টারনেটের মুখোমুখি হয়।
টনি

3
@Tonny মাইক্রো-যেমন অন্যান্য বাগ, সংশোধন করা হয়েছে এই , সেইসাথে বিষয় ইন্টেল প্রকাশ করে না। যদিও এটি আসলে একটি সমাধান, আমি মাইক্রোকোড আপডেটগুলি প্রয়োগ না করা অস্বাচ্ছন্দ্য করছি - স্পেকটার / মেল্টডাউনটি দেখে মনে হয় কিছুটা বেরিয়ে এসেছিল। আমি noipbpবেশিরভাগ প্রভাবিতকারী সিস্টেমে বুট করার উপায় হিসাবে প্রস্তাব করছি । আমি মনে করি এখানে কর্ণটি আপগ্রেড করা সবচেয়ে ভাল সমাধান।
গিলস

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