5 تعديلات أساسية على systemd لتحسين سرعة إقلاع النظام بشكل ملحوظ
ليس كل مستخدمي Linux مهووسين بسرعة إقلاع نظامهم، ولكنني شخصيًا أستمتع برؤية إقلاع سريع ونظيف. حتى مع وجود محرك أقراص ذو حالة صلبة، يمكن أن تتسلل بعض الاختناقات وتبطيء الأمور. يوفر Systemd مجموعة متنوعة من الأدوات التي تسمح لك بتتبع أماكن حدوث هذه التأخيرات وحلها. مع قليل من التعديل، تمكنت من تقليل وقت الإقلاع بشكل ملحوظ دون التضحية بالاستقرار.
الفائدة الحقيقية لهذه التعديلات ليست مجرد توفير ثوانٍ على ساعة الإيقاف. النظام الذي يتم تشغيله بسرعة يبدو أكثر استجابة ويوفر وقتك الثمين الذي تقضيه في الانتظار.
تحديد نقاط الضعف في عملية الإقلاع
استخدام systemd-analyze لتتبع أداء الإقلاع
قبل أن تتمكن من تسريع الأمور، تحتاج إلى معرفة ما الذي يبطئها. يُظهر الأمر systemd-analyze
المدة التي تستغرقها النواة ومساحة المستخدم للتهيئة، مما يمنحك نظرة عامة على وقت الإقلاع. اجمعه مع systemd-analyze blame
وسترى تفصيلاً للخدمات مرتبة حسب المدة التي تستغرقها للبدء. غالبًا ما يكون هذا هو المكان الذي تختبئ فيه الأسباب الحقيقية، سواء كان ذلك برنامجًا خفيًا تم تكوينه بشكل خاطئ أو شيء لا تستخدمه أبدًا.
من خلال تشغيل هذا التحليل عدة مرات، ستحصل على إحساس بالاتساق مقابل القيم المتطرفة. قد ترتفع بعض الخدمات بشكل متقطع بسبب اكتشاف الأجهزة، بينما البعض الآخر ثقيل باستمرار. سيمنحك التركيز على أسوأ المخالفين أكبر قدر من التحسين بأقل جهد. عادةً ما أحفظ نسخة من الإخراج قبل إجراء التغييرات حتى أتمكن من قياس التقدم بموضوعية.
يجدر أيضًا استخدام systemd-analyze critical-chain
، والذي يُظهر كيفية اصطفاف التبعيات في تسلسل الإقلاع. تعتبر الخدمات التي تعيق المهام الأساسية الأخرى مرشحة رئيسية لإعادة الترتيب أو التعطيل. باستخدام هذه الأداة، يمكنك الانتقال من التخمين إلى إجراء تعديلات مستنيرة تقلل حقًا من تأخيرات بدء التشغيل.
تقليل الخدمات التي تعمل في الخلفية
تعطيل الخدمات التي لا تستخدمها فعليًا
بعد تحديد المهام التي تستهلك وقتًا طويلاً، الخطوة التالية هي تقليل المهام غير الضرورية. تتيح العديد من توزيعات Linux خدمات بشكل افتراضي قد لا يحتاجها كل مستخدم. على سبيل المثال، غالبًا ما تعمل برامج تشغيل الطابعات أو مديري Bluetooth في الخلفية حتى على الأجهزة التي لا تحتوي على طابعات أو أجهزة Bluetooth. يمكن أن يؤدي تعطيل هذه الخدمات إلى توفير ثوانٍ ثمينة أثناء بدء التشغيل.
أسهل طريقة لإدارة ذلك هي استخدام الأمر systemctl disable
متبوعًا باسم الخدمة. هذا يمنع تشغيلها عند الإقلاع، مع السماح لك بتشغيلها يدويًا إذا احتجت إليها. بالنسبة للخدمات التي أنت متأكد تمامًا من أنك لن تستخدمها أبدًا، فإن الأمر systemctl mask
يذهب خطوة أخرى إلى الأمام عن طريق حظرها تمامًا. كلما قل عدد البرامج التي يجب على systemd تشغيلها، كلما وصلت جهازك إلى حالة قابلة للاستخدام بشكل أسرع.
لا تقم بتعطيل الخدمات بشكل عشوائي. تأكد من إلقاء نظرة فاحصة على ما تفعله وما هي الخدمات الأخرى التي قد تعتمد عليها. يعد عمل نسخة احتياطية لجهاز الكمبيوتر الخاص بك قبل البدء في التعديلات فكرة رائعة بالتأكيد.
بالطبع، هذا يتطلب بعض الحذر. قد يؤدي تعطيل شيء أساسي إلى تعطيل وظيفة تعتمد عليها، لذلك أوصي بتغيير شيء واحد في كل مرة واختباره بعد كل تعديل. على مدار بضعة أيام، يمكنك إنشاء ملف تعريف إقلاع أكثر سلاسة وسرعة دون زعزعة استقرار نظامك.
الاستفادة من التوازي في Systemd
تحسين التبعيات لتسريع بدء التشغيل
إحدى المزايا التي يتمتع بها systemd مقارنة بأنظمة التهيئة القديمة هي قدرته على بدء الخدمات بالتوازي. بدلاً من انتظار تحميل كل برنامج قبل بدء البرنامج التالي، فإنه يقوم بتشغيل البرامج المستقلة في وقت واحد. هذا يعني أن وحدة المعالجة المركزية والقرص الخاصين بك يتم استخدامهما بكفاءة أكبر، مما يسرع الأمور بشكل طبيعي. المفتاح هو التأكد من تحديد التبعيات بشكل صحيح حتى لا تحظر الخدمات بعضها البعض دون داع.
يمكنك التحقق من علاقات التبعية باستخدام الأمر systemctl list-dependencies
أو عن طريق النظر إلى ملفات الوحدة مباشرة. إذا لاحظت أن خدمة ما تنتظر شيئًا لا تحتاجه حقًا، فيمكنك تعديل تكوينها. تتيح لك إضافة توجيهات مثل After=
أو Requires=
ضبط وقت بدء الخدمة بالنسبة إلى الخدمات الأخرى. يؤدي إزالة التبعيات غير الضرورية إلى منع الانتظار الخامل والاستفادة بشكل أفضل من التوازي.
هناك حيلة أخرى وهي تفعيل المقابس (socket activation) لبعض الخدمات. بهذه الطريقة، لا يقوم systemd بتشغيل الخدمة إلا عند الوصول إلى المقبس الخاص بها، بدلاً من تشغيلها في كل مرة يتم فيها الإقلاع. هذا لا يقلل فقط من وقت الإقلاع، بل يقلل أيضًا من استخدام موارد النظام في الخلفية. عند ضبطه بشكل صحيح، ستحصل على نظام يبدو أسرع وأخف وزنًا.
إخفاء الخدمات التي تسبب تباطؤًا
التأكد من عدم إعادة تفعيل أي شيء قمت بإخفائه
في بعض الأحيان، لا يكفي تعطيل خدمة ما، لأن تحديثًا لحزمة أخرى أو تبعية قد يعيد تفعيلها. الإخفاء هو الحل الأقوى، لأنه يربط الخدمة بشكل أساسي بـ /dev/null
بحيث لا يمكن تشغيلها عن طريق الخطأ. هذا مفيد بشكل خاص للخدمات التي تعرف بالتأكيد أنها غير ضرورية لإعدادك. مثال جيد على ذلك هو برامج تشغيل الشبكات التي تتعارض مع مدير الشبكة الذي اخترته.
لإخفاء خدمة، يمكنك استخدام الأمر systemctl mask
متبوعًا باسم الوحدة. من الآن فصاعدًا، حتى إذا حاولت عملية أخرى تشغيلها، سيرفض systemd ذلك. إذا غيرت رأيك في أي وقت، فإن إلغاء الإخفاء بسيط مثل استخدام الأمر systemctl unmask
. يمنحك راحة البال بأن الخدمات غير المرغوب فيها لن تعود إلى تسلسل الإقلاع الخاص بك.
يكمن العائق في أن إخفاء الخدمة الخاطئة يمكن أن يسبب ارتباكًا، خاصةً إذا كان هناك شيء آخر يعتمد عليها بشكل غير مباشر. لهذا السبب أقوم دائمًا بالتحقق المزدوج من شجرة التبعيات قبل الإخفاء. ولكن عند القيام بذلك بشكل صحيح، يضمن الإخفاء بقاء نظامك مُحسَّنًا بمرور الوقت، حتى من خلال التحديثات.
تحسين كيفية بدء جلسة سطح المكتب
تعديل مديري العرض وتسجيل الدخول لتحقيق السرعة
بالنسبة لمستخدمي سطح المكتب، غالبًا ما تكون المرحلة الأخيرة من عملية الإقلاع هي الجلسة الرسومية. يمكن لمديري العرض مثل GDM أو LightDM أو SDDM إضافة وقت بدء التشغيل الخاص بهم. يمكن أن يؤدي تعديلها أو التبديل إلى إصدار أخف وزنًا إلى إحداث فرق ملحوظ. على سبيل المثال، يميل LightDM إلى أن يكون أسرع على الأجهزة المتواضعة مقارنة بالبدائل الأثقل.
شيء آخر يستحق التدقيق هو التطبيقات التي تبدأ تلقائيًا في إعدادات الجلسة. العديد من بيئات سطح المكتب تشغل تطبيقات مساعدة صغيرة، أو أدوات تحديث، أو عملاء مزامنة سحابية بشكل افتراضي. تقليل هذه التطبيقات إلى ما تستخدمه فعليًا لا يجعل سطح المكتب يبدأ بشكل أسرع فحسب، بل يقلل أيضًا من الفوضى بمجرد تسجيل الدخول. إنه نفس مبدأ تعطيل خدمات النظام، ولكن يتم تطبيقه على مستوى المستخدم.
يمكنك أيضًا تجربة كيفية انتقال نظامك بين الأهداف الرسومية ومتعددة المستخدمين. من خلال تأخير بعض الخدمات حتى بعد تحميل سطح المكتب، فإنك تعطي الأولوية للوصول إلى جلسة قابلة للاستخدام في وقت أقرب. غالبًا ما تتراكم التعديلات الطفيفة مثل هذه، وتحول بدء التشغيل البطيء إلى تجربة أكثر سلاسة بشكل ملحوظ.
لماذا تعديلات systemd مجدية في الاستخدام اليومي
الفائدة الحقيقية من هذه التعديلات ليست مجرد توفير ثوانٍ معدودة. النظام الذي يبدأ بسرعة يبدو أكثر استجابة ويضيع وقتًا أقل في الانتظار. من خلال تحليل الخدمات وتعطيلها وإخفائها وضبطها بدقة، فإنك تخلق تجربة أكثر سلاسة مصممة خصيصًا لتلبية احتياجاتك. التغييرات سهلة الرجوع عنها إذا حدث خطأ ما، ولكن بمجرد ضبطها، فإنها تميل إلى الثبات. بالنسبة لي، تتراكم هذه المكاسب الصغيرة كل يوم، والعائد هو نظام Linux يبدو سريعًا كما ينبغي أن يكون.