সিস্টেম সময় পরিবর্তনের সাথে পরীক্ষার অনুমতি দেওয়ার সময় আমি কীভাবে "fsck ম্যানুয়ালি চালান" বার্তাগুলি এড়াতে পারি?


18

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

Checking filesystems
IMAGE2: Superblock last mount time (Tue Mar  1 17:32:48 2011,
        now = Thu Feb 24 17:34:29 2011) is in the future.

IMAGE2: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
        (i.e., without -a or -p options)

*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.

… এবং তারপরে বুটটি ব্যবহারকারীর কনসোল ইনপুটটির জন্য অপেক্ষা করে, এবং একবার কনসোল অ্যাক্সেস পাওয়ার পরেও চালিয়ে যাওয়ার জন্য একটি রুট পাসওয়ার্ড প্রয়োজন requires

এটি স্থিরভাবে আদর্শের চেয়ে কম। হয় চেক এড়িয়ে যাওয়ার বা চেকটিকে পুনরায় বুট করার সময় স্বয়ংক্রিয়ভাবে ঘটতে বাধ্য করার কোনও উপায় আছে?

গুগল কেবলমাত্র সহায়তা সরবরাহ করেছে যার জন্য / যখন এটি আঘাত হ'ল ম্যানুয়ালি fsck চালানো দরকার, যা আমি পরে করছি না। সময় নির্ধারণের পরে ম্যানুয়ালি fsck চালানো ফাইল-সিস্টেমটি এখনও কাজ করে না কারণ ফাইল-সিস্টেমটি এখনও সেই মুহুর্তে মাউন্ট হয় এবং কেবল fsck সম্পূর্ণরূপে অক্ষম করা আদর্শের চেয়ে কম নয় less

আমি রেডহ্যাট 6 ব্যবহার করছি।

আপডেট : আমি বর্তমানে যে সমাধানটি নিয়ে যাচ্ছি তা হ'ল রিবুটটিতে fsck চেকিং অক্ষম করতে fstab হ্যাক করা। আমি ডিস্কগুলিতে ব্যবহার করে শেষ মাউন্ট টাইমটি সম্পাদনা করার চেষ্টা করেছি debugfs, যা ext3 ড্রাইভের জন্য সূক্ষ্ম কাজ করে তবে ext4 এ অসামঞ্জস্যভাবে ব্যর্থ হয় বলে মনে হয়।

উত্তর:


15

আমি হ্যাকিংকে e2fsckভবিষ্যতের শেষ মাউন্ট সময় বা শেষ লেখার সময়গুলির জন্য নির্দিষ্ট চেকগুলি অক্ষম করতে পরামর্শ দিচ্ছিলাম । এসব সংজ্ঞায়িত করা হয় problem.c / problem.h , এবং ব্যবহৃত super.c । কিন্তু খুঁজছেন, আমার আবিষ্কার করেন যে E2fsprogs 1.41.10 একটি নতুন বিকল্প যোগ করা /etc/e2fsck.confনামক broken_system_clock । এটি আপনার যা প্রয়োজন ঠিক তা বলে মনে হচ্ছে এবং আপনি যেহেতু রেড হ্যাট এন্টারপ্রাইজ লিনাক্স 6 ব্যবহার করছেন তাই আপনার 1.41.12 থাকা উচিত, যার মধ্যে এই বিকল্পটি অন্তর্ভুক্ত রয়েছে। ম্যান পৃষ্ঠা থেকে:

   broken_system_clock
          The e2fsck(8) program has some hueristics that assume  that  the
          system clock is correct.  In addition, many system programs make
          similar assumptions.  For example, the UUID library  depends  on
          time  not going backwards in order for it to be able to make its
          guarantees about issuing universally unique ID’s.  Systems  with
          broken  system clocks, are well, broken.  However, broken system
          clocks, particularly in embedded systems, do exist.  E2fsck will
          attempt  to  use  hueristics to determine if the time can no tbe
          trusted; and to skip time-based checks if this is true.  If this
          boolean  is set to true, then e2fsck will always assume that the
          system clock can not be trusted.

হ্যাঁ, ম্যান পেজটি "হিউরিস্টিক্স" বানান করতে পারে না। উফ। তবে সম্ভবত কোড যেভাবেই কাজ করে। :)


এটি দুর্দান্ত দেখায়, সংরক্ষণ করুন যে ম্যান পেজটি কেবল এটি ext2 এবং ext3- কে প্রভাবিত করে এবং আমি ext3 এবং ext4 এর সংমিশ্রণটি ব্যবহার করছি। তবুও, আমি এখনই চেষ্টা করে যাব, যেন এটি কাজ করে, ঠিক এটিই আমি যা খুঁজছি।
me_ এবং

1
এটি কাজ করে! Ext4- এ অন্তর্ভুক্ত। ধন্যবাদ!
আমি_আর

1

আমি সন্দেহ করি যে উত্স কোডটি সংশোধন না করেই এই চেকটি বিশেষভাবে মুছে ফেলার একটি উপায় রয়েছে। Fsck থেকে সমস্ত ত্রুটি উপেক্ষা করা বিপজ্জনক বলে মনে হচ্ছে, অন্য কোনও সমস্যা হলে কী হবে?

অতএব আমি নিম্নলিখিত কাজের মতো পরামর্শ দেব: fsck চালানোর ঠিক আগে সিস্টেমের তারিখটি কিছু সময়ের জন্য সেট করতে বুট স্ক্রিপ্টগুলি পরিবর্তন করুন (3238-বিট মেশিনে 2038-01-18 বলুন) এবং এটি হার্ডওয়ার থেকে আবার পড়ুন এর পরে ঘড়িটি ( hwclock --hctosysআপনার হার্ডওয়্যার এবং হার্ডওয়্যার ক্লকটিতে জিএমটি ব্যবহারের উপর নির্ভর করে প্রয়োজনীয় আরও বিকল্প সহ)


এর অর্থ কি পরের বারের মতো হবে না যে এমন উইন্ডো থাকবে যেখানে আমরা আবার একই বাগটিকে আঘাত করতে পারি? অর্থাৎ শেষ মাউন্ট টাইমটি 2038-01-18, সুতরাং যদি বর্তমান সময়টিও সেট করা থাকে তবে একটি রেসের শর্ত রয়েছে যেখানে আমরা (যতক্ষণ পর্যন্ত সিস্টেমের সাথে সম্পর্কিত) আবার শেষ মাউন্টের আগে মাউন্ট করার চেষ্টা করছি।
আমি_ এবং

@ মি_আর: হ্যাঁ, আমি ভয় করি যে আমার কুলডজ দূষিত ব্যবহারকারীদের বিরুদ্ধে সহায়তা করবে না। যদি আপনি এটির বিরুদ্ধে কাজ করছেন তবে fsck কে প্যাচ করা সেরা বিকল্প বলে মনে হচ্ছে।
গিলস

0

এটি ভার্চুয়াল মেশিনে চালিত হওয়া উচিত বলে মনে হচ্ছে, যেখানে আপনার আরও নিয়ন্ত্রণ থাকতে পারে (বা স্ন্যাপশটে ফিরে যেতে পারেন)।


ভিএম-তে চালানো আসলে আমাদের পক্ষে কোনও বিকল্প নয় এবং যে কোনও ক্ষেত্রে স্ন্যাপশটে ফিরে যাওয়া মানে আমরা ব্যবহারকারীর দ্বারা নির্ধারিত অন্যান্য সমস্ত রাজ্য অপসারণ করি।
me_ এবং

0

এখানে একটি সমাধান যা আমার পক্ষে দুর্দান্ত কাজ করেছে:

/Etc/e2fsck.conf তৈরি করুন:

[problems]

# Superblock last mount time is in the future (PR_0_FUTURE_SB_LAST_MOUNT).
0x000031 = {
preen_ok = true
preen_nomessage = true
}

# Superblock last write time is in the future (PR_0_FUTURE_SB_LAST_WRITE).
0x000032 = {
preen_ok = true
preen_nomessage = true
}

এখানে এই ঠিক করার বিষয়ে আরও:

http://stillstup.blogspot.com/2010/02/superblock-last-mount-time-is-in-future.html

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