اگر از Arch Linux استفاده میکنید و برای ساختن ایمیج کرنل از mkinitcpio استفاده میکنید، و همچنین بسته های microcode مربوط به CPU رو هم دارید (اینتل یا AMD) در ورژن ۳۸ از mkinitcpio تغییری در نحوه مدیریت microcode برای ساخت ایمیج کرنل در پروسه بوت اتفاق افتاده که میبایست به اون توجه کنیم. در واقع در ورژن جدید، ایمیج microcode دیگه جدا از ایمیج کرنل نخواهد بود و با هم ادغام میشن. مراحل زیر هنوز در wiki نیومده. ولی در اینجا میتونید پیشنویسها رو ببینید.
/etc/mkinicpio.conf
رو دستکاری نکردید، بعد از آپدیت هم لازم نیست تغییرش بدید. با آپدیت، این فایل هم بروزرسانی میشه. اما اگر دستکاریش کردید، این فایل رو باز کنید و یک HOOK تحت نام microcode
به قسمت مربوطه اضافه کنید. در هر صورت مطمئن بشید که این هوک وجود داشته باشه./etc/mkinitcpio.d/linux.preset
) رو باز کنید و خط مربوط به microcode رو حذف کنید یا کامنت کنید.sudo mkinitcpio -P
ایمیج کرنل رو بسازید.۸ سالی میشد که Manjaro داشتم. برای من بی دردسر بود. آپدیت ها بدون اشکال اعمال میشدند و هیچ وقت سیستم failed نشد. کاملا پایدار و قابل اعتماد. حداقل برای من.
تا اینکه یک مدتی بود که گیر داده بودم به پروسه boot تا اون رو سریعتر کنم و چیزهای اضافی رو حذف کنم. و بسیار هم موفق شدم در این زمینه. اما به دنبال کارهای عجیب و غریبی که میکردم، بعد از یک ریبوت دیگه سیستم بالا نیومد. هیچ راهی وجود نداشت جز اینکه با Live بیام بالا و ایمیج کرنل رو بازسازی کنم. چون بوت منیجر نداشتم و نمیشد پارامترهای کرنل رو تغییر بدم. و خب من تا اون لحظه هیچ ایمیج لایوی نداشتم. این شد که تصمیم گرفتم حالا که قراره یک ایمیج لایو دانلود کنم، Arch رو دانلود کنم و کلا سیستم رو به Arch تغییر بدم.
و حتی در مرحله ای تصمیم گرفتم کل پارتیشن های ویندوز (اورجینال لپتاپ) رو هم که عملا دیگه برام استفاده ای نداشت فرمت کنم و فقط یک Arch روی سیستم داشته باشم. و این کار رو کردم! 🤯 خداحافظ ماجاروی دوست داشتنی... 😕
خوشبختانه پروسه فرمت هارد و نصب آرچ بر طبق ویکی به خوبی پیش رفت. سیستم با موفقیت بوت شد و کم کم ابزارهای لازمم رو نصب کردم. از اینکه اون طوری که خودم خواستم تونستم سیستمم رو پیکربندی کنم واقعا لذت میبرم. هیچ چیز اضافه ای وجود نداره 🙂
در آینده در مورد این موارد خواهم نوشت:
اگر از lm_sensors استفاده میکنید با دستور sensors
میتونید دمای قسمت های مختلف سیستم رو در یک لحظه نگاه کنید.
اما میتونیم این رو با watch
ترکیب کنیم تا دمای سیستم رو به صورت realtime تماشا کنیم:
watch -n 1 sensors
با یک udev rule ساده میتونیم به سیستم بگیم وقتی شارژر قطع شد، بکلایت (نور صفحه) رو کم کنه و وقتی شارژر وصل شد نور صفحه رو زیاد کنه.
فایل زیر رو ایجاد کنید و به جای دستوری که من نوشتم، دستور مورد نظر خودتون رو وارد کنید. راه های متعددی برای تغییر بکلایت وجود داره. یکی از اونها brightnessctl
هست.
/etc/udev/rules.d/99-backlight-ac-battery.rules
## ACTION TO DO WHEN ON BATTERY
SUBSYSTEM=="power_supply", ATTR{online}=="0", ENV{POWER}="off", RUN+="/usr/bin/brightnessctl set 30%"
## ACTION TO DO WHEN ON CHARGER
SUBSYSTEM=="power_supply", ATTR{online}=="1", ENV{POWER}="on", RUN+="/usr/bin/brightnessctl set 70%"
و بعد یک بار دستور زیر رو اجرا کنید تا این rule توسط سیستم شناسایی بشه
$ sudo udevadm control --reload-rules
همون طور که میدونید در لینوکس برای دسترسی به درایوها باید اونها رو در یک فولدر mount کرد. ولی جالبه که بدونید میتونیم هر یک از محتویات یک درایو ماونت شده رو هم در جاهای دیگه ماونت کرد! به این کار میگن bind (بخوانید بایند) دو تا فولدر به هم.
یک چیزی شبیه به ایجاد کردن لینک که با دستور ln
انجام میدیم. منتها با یک سری تفاوت های کوچک...
ln
ما یک شورتکات از مقصد میسازیم. درواقع فولدر واقعی وجود نداره. اما در bind ما یک فولدر میسازیم و محتویات یک فولدر دیگه رو داخلش ماونت میکنیم.bindfs
هم bind کرد که نیاز به دسترسی root نداره، ولی خب برای نصب پکیج باید دسترسی root داشته باشید!من در هاردم، چند تا فولدر دارم به نام های Documents, Downloads, Pictures, Videos, Music. یعنی همون هایی که در فولدر home کاربری هم داریم. تا الان با ln یک شورتکات از هر کدوم این ها در فولدر home داشتم. ولی حالا فولدرهای روی هارد رو با فولدرهای متناظرشون در فولدر home کاربر bind کردم. ظاهر قضیه بهتر شده. یعنی دیگه خبری از فلش روی آیکن نیست و انگار واقعا همه چیز در home قرار داره.
توجه: بعد از نوشتن این مطلب متوجه شدم فعلا امکان Trash کردن فایلها در مسیرهای bind شده دستکم در دسکتاپها وجود نداره. ولی در cli با trash-cli میشه اینکار رو کرد. اما بعدا متوجه شدم که با bindfs میشه! پایین تر توضیح دادم.
برای اینکه بدونید چطوری، ادامه مطلب رو ببینید...
برای دسترسی به درایوها در لینوکس باید اونها رو اصطلاحا mount کنیم. یعنی یک فولدر بسازیم و به سیستم عامل بگیم که درایو مورد نظر ما رو داخلش نشون بده. برای اینکه این کار حین بوت انجام بشه، به طور سنتی از فایل /etc/fstab
استفاده میکردیم.
اما با ظهور systemd و رفتن توزیع ها به سمت اون، تغییرات جدیدی در نحوه مدیریت خیلی چیزها از جمله ماونت کردن درایو ها ایجاد شد. systemd فایل fstab رو موقع بوت بررسی میکنه و به ازای هر ردیفی که داخلش وجود داره یک یونیت mount درست میکنه و سپس درایو مورد نظر ماونت میشه.
چرا ما از اول خودمون این یونیت ها رو آماده نکنیم؟ که دیگه systemd مجبور نباشه در هر بوت اونها رو تولید کنه و بعد ماونت کنه؟ در این نوشته میخوام بگم من چطوری پارتیشن مورد نظرم رو با استفاده از systemd موقع بوت ماونت میکنم و دیگه توی fstab ردیفی برای اون قرار ندادم.
استفاده از systemd برای ماونت این فواید رو داره:
حاصل سر و کله زدن های من با لینوکس