درایور NTFS موجود در کرنل

سالها برای مونت کردن درایوهای ntfs در لینوکس، باید ntfs-3g رو نصب میکردیم و در متغیرهای مونت، نوع فایل‌سیستم رو ntfs-3g قرار میدادیم. اما از کرنل 5.15 درایور اختصاصی ntfs-3 با قابلیت خواندن و نوشتن در خود کرنل گنجانده شده و دیگه لازم نیست ntfs-3g رو نصب داشته باشیم.

و الان که کرنل در نسخه ۶.۷ بسر میبره، این درایور پیشرفت های زیادی داشته و حتی در مواردی بهتر از ntfs-3g هم عمل میکنه. و متغیرهای جالبی هم برای مونت درایو داره. از جمله:

  • nohidden: فایلها و فولدرهایی که در ویندوز hidden هستند (مثل فولدر system volume information) در لینوکس هم مخفی بمانند.
  • sys_immutable: فایلها و فولدرهایی که در ویندوز سیستمی تلقی میشن و قابل write نیستند، در لینوکس هم همین ویژگی رو داشته باشند.
  • hide_dot_files: فایلها و فولدرهایی که در لینوکس میسازیم و اونها رو با گذاشتن یک نقطه در ابتدای اسمشون مخفی میکنیم، در ویندوز هم hidden شناخته خواهند شد.
  • windows_names: نام فایلها و فولدرهایی که در لینوکس انتخاب میکنیم، با شیوه نام گذاری فایلها در ویندوز مغایرت نداشته باشند.
  • force: وقتی درایو در ویندوز هایبرنیت شده (که قابل مونت با ntfs-3g نیست) با این متغیر قابل مونت میشه.
  • و چند تا چیز مفید دیگه که توصیه میکنم در اینجا در موردش بخونید

کافیه برای استفاده از درایور ntfs کرنل، بجای ntfs-3g از ntfs-3 استفاده کنید و متغیرها رو بر اساس شیوه جدید تنظیم کنید. از هر نوع روشی که برای مونت استفاده میکنید مهم نیست، از دستور مستقیم mount یا فایل fstab یا یونیت های systemd. مثلا برای دستور مستقیم:

# mount -t ntfs-3 -o rw,nodev,noatime,nohidden,windows_names,uid=1000,gid=1000 /dev/sdXX /data/driveC

بعد از اینکه تست کردید و همه چیز اوکی بود، میتونید بسته ntfs-3g رو حذف کنید. اگر یک روزی خواستید از دستور ntfsfix استفاده کنید میبایست بسته ntfsprogs-ntfs3 رو از AUR نصب کنید.

گزینه های پیشفرض mount

شاید تا حالا براتون سوال پیش اومده باشه که در mount کردن درایوها، اون defaults چیه که همه جا هست؟! 

باید بگم که متغیر defaults شامل یک سری متغیرها است که بجای نوشتن همه اونها، شما فقط کافیه defaults رو بنویسید. تا سیستم موقع مونت کردن درایو (مثلا از روی فایل fstab) اون متغیرها رو اعمال کنه.

ما میتونیم این متغیرهای پیشفرض رو طبق سلیقه خودمون تغییر بدیم! برای این کار، کافیه فایل زیر رو یک نگاهی بیندازید:

$ nano /etc/udisks2/mount_options.conf.example

توضیحات فایل گویای خودش هست. شما میتونید برای انواع فایل سیستم (ext4 یا ntfs یا vfat و...) متغیر های پیشفرض خودتون رو تعیین کنید. از فایل نمونه بالا استفاده کنید و فایل نهایی رو بدون پسوند example در همون مسیر ذخیره کنید.

تغییر در مدیریت microcode در Arch

اگر از  Arch Linux استفاده میکنید و برای ساختن ایمیج کرنل از mkinitcpio استفاده میکنید، و همچنین بسته های microcode مربوط به CPU رو هم دارید (اینتل یا AMD) در ورژن ۳۸ از mkinitcpio تغییری در نحوه مدیریت microcode برای ساخت ایمیج کرنل در پروسه بوت اتفاق افتاده که میبایست به اون توجه کنیم. در واقع در ورژن جدید، ایمیج microcode دیگه جدا از ایمیج کرنل نخواهد بود و با هم ادغام میشن. مراحل زیر هنوز در wiki نیومده. ولی در اینجا میتونید پیشنویس‌ها رو ببینید.

  1. سیستم رو آپدیت کنید تا همه چیز بروزرسانی بشه.
  2. اگر فایل /etc/mkinicpio.conf رو دستکاری نکردید، بعد از آپدیت هم لازم نیست تغییرش بدید. با آپدیت، این فایل هم بروزرسانی میشه. اما اگر دستکاریش کردید، این فایل رو باز کنید و یک HOOK تحت نام microcode به قسمت مربوطه اضافه کنید. در هر صورت مطمئن بشید که این هوک وجود داشته باشه.
  3. سپس فایل preset مربوط به کرنلی که دارید (عموما /etc/mkinitcpio.d/linux.preset) رو باز کنید و خط مربوط به microcode رو حذف کنید یا کامنت کنید.
  4. سپس با دستورsudo mkinitcpio -P ایمیج کرنل رو بسازید.
  5. در نهایت باید خطوط مربوط به لود ایمیج microcode رو در بوت لودر خودتون (حالا هر چی که هست، grub یا systemd-boot یا rEFInd و...) حذف کنید.

Cover Image

مهاجرت به Arch

۸ سالی میشد که 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




حاصل سر و کله زدن های من با لینوکس