انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: سودو. در 01 خرداد 1401، 12:35 بظ
-
درود مهربانان : )
یه دوری زدم تو شاخه ها و دستورات ، چند تا پرسش ذهنم رو مشغول کرد !
۱ . در ls -l ، فیلد دوم از چپ بعد از دسترسی ها چیه ؟
(https://forum.ubuntu-ir.org/index.php?action=dlattach;topic=154960.0;attach=53241;image)
۲ . حجم شاخه proc چرا اینقدر زیاده ؟ اصلا من این همه یجا ندیدم !
(https://forum.ubuntu-ir.org/index.php?action=dlattach;topic=154960.0;attach=53243;image)
۳ . حجم کرنل ، هسته سیستم عامل با اون عظمت واقعا ۷ مگه ؟
(https://forum.ubuntu-ir.org/index.php?action=dlattach;topic=154960.0;attach=53245;image)
۴ . چجوری یه تصویر بزارم مثل باقی توزیع ها مراحل و کارای اینیت در هنگام بوت شدن و بالا اومدن ، پشتش مخفی شه ؟
( پرسش های ریز دیگه ای هم به ذهنم رسید همینجا میپرسم : )
-
3: compress شدشه : )
-
۱. گروه
۲. اون سامانهٔ پروندهٔ محازیه. واقعاً وجود نداره.
۳. کرنل، هستهٔ سیستمعامل نیست. کرنل ۷ مگه و هستهٔ سیستمعامل، حدود ۳۰۰-۴۰۰ مگابایت
۴. از plymouth استفاده کن
-
۱ . اون عدده رو میگم ها ، همون که معمولا یک یا دوعه ، اون چیه گروهه دقیقا ؟
۲ . میدونم مجازیه ، خب پس نباید مثل پرونده های مجازی شاخه dev صفر بایت باشن ؟ اصلا حجمم داشته باشن ، چرا اینقدر عجیب زیاد ؟
۳ . نفهمیدم درست ، مگه کرنل همون هسته نیس ؟ وقتی میاد رو رم میشه چهارصد مگ ؟
۴ . سپاس ، برم ببینم چجوری چیکار کنم !
-
سلام،
قسمت دوم از چپ بعد از دسترسیها میشه گروه،
قسمت اول از چپ بعد از دسترسیها فکر کنم تعداد پیوندهای سخت اون پرونده باشه،
قسمت دوم از چپ هم فکر کنم پیوندهای سخت اون پرونده باشه.
-
گرفتم چی میخوای بگی اسحاق جان ، حق داری بد گفتم ، منظورم همونه که میگی پیوند سخت هست ، حدس میزدمم خودمم با اینک چند جا بررسی کردم و نتیجه عکس بود : ) مثلا مگه شاخه نما گرفت ها جای دیگه ای پیوند سخت داره ؟
-
از شما انتظار داریم بعد از این همه فعالیت در انجمن، موضوع پست خود رو درست انتخاب کنید :)
-
خب واقعا برای هر کدوم از این پرسشای نامربوط به هم ، اون هم پرسشی به این کوچکی ، تاپیک جدا بسازم ؟
-
بله! :)
-
بله! :)
باشه ، پس خودتون گفتین دیگه : ) من معمولا پرسش های این چنینی رو مینوشتم یجا ک با هم بپرسم و دلم نمیومد هر کدومو جدا در اختیار یه تاپیک بذارم نمیدونم چرا ! ولی دیگه چی بگم ، دستور از بالاس
-
عالی. اگر «که» هم «ک» ننویسید، خوب میشه.
-
انصافا دارم سعی میکنم ، کاری کردید با من که خارج از اینجا هم دارم درست مینویسم 😂 هر چی تلاش میکنم توازن رو نگه دارم نمیشه 😅
-
داری خوب پیش میری (ط رو خدا همینطوری ادامه بده ;D (شوخی ;)) )
-
۲- یه فایلسیستم مجازی روی /proc/ سوار میشه. اگه با df اون رو بررسی کنید، حجمش رو 0 نشون میده. نمیدونم روش محاسبه df و nautilus چه فرقی داره که نتایج اونها با هم متفاوته.
۳- خود کرنل به تنهایی حجم زیادی نداره. اون ماژولهاش روی هم هستند که حجم زیادی دارند. اکثر ماژولها شامل درایور برای سختافزارهای مختلف هستند، قسمتی از ماژولها برای پشتیبانی از فایلسیستمها به کار میرن و قسمتی از اونها قابلیتهایی به کرنل اضافه میکنند.
اون ماژولها بر اساس نیاز میتونند بارگذاری و برداشته بشن. ممکنه توی سیستم شما حدود ۹۰ تا ماژول بارگذاری شده باشند که هر کدوم یه کار خاصی انجام میدن.
خروجی lsmod به شما نشون میده که چه ماژولهایی توی کرنل بارگذاری شدند.
lsmod
میتونید خروجی رو بدید به wc -l تا به شما بگه خروجی چنتا خط داره. خروجی lsmod، هر ماژول رو توی یه خط نشون میده. پس اگه تعداد خطهای خروجی lsmod رو داشته باشید، میتونید بفهمید که چنتا ماژول توی کرنل بارگذاری شده.
تعداد ماژولها یکی از چیزی که wc -l میگه کمتره. دلیلش اینه که خروجی lsmod اولش یه خط header داره.
مثلا توی سیستم من ۱۰۱ ماژول بارگذاری شده.
ممکنه با توجه به کاری که میکنید یا سختافزارهای متصل، این تعداد تغییر کنه.
۴- plymouth رو نصب کنید. بسته plymouth توی دبیان شامل خود plymouth به همراه چیزهای لازمش و یه تم پیشفرض هست. میتونید بسته plymouth-themes رو نصب کنید تا یه سری تم هم نصب بشن.
با اجرای دستور plymouth-set-default-theme بدون هیچ آپشن و آرگومانی میتونید اسم تم فعلی plymouth رو ببینید.
با دادن آپشن l-یا list-- به دستور میتونید تمهای موجود رو ببینید.
اگه اسم یه تم رو بدون هیچ آپشنی به plymouth بدید، تم فعلی به اون تغییر میکنه ولی تا وقتی که initramfs رو دوباره نسازید، همچنان تم قبلی موقع بوت نمایش داده میشه.
اگه اسم یه تم رو همراه آپشن R- یا rebuild-initrd-- به دستور بدید، تم فعلی به چیزی که مشخص کردید تغییر میکنه و initramfs/initrd هم دوباره ساخته میشه.
اگه آپشن r- یا reset-- رو بدید، تم فعلی به تم پیشفرض تغییر میکنه ولی تا وقتی که initramfs/initrd رو دوباره نسازید، تم قبلی موقع بوت نمایش داده میشه. (تا جایی که امتحانش کردم انگار باگ داره)
اگه آپشن R- یا rebuild-initrd-- رو بدون چیز دیگهای به دستور بدید، initramfs/initrd رو دوباره میسازه، همین. ولی اگه فایلهای plymouth مشکل داشته باشند، اتفاقی نمیافته و یه خطا میگیرید.
دادن آپشن h- یا help-- باعث میشه یه راهنمای کوچک درباره دستور نشون داده بشه.
-
سپاس بزرگوار : )
۲ . اون ماژول ها پرونده هستن ؟ اگر بله کجا قرار میگیرن ؟
اگر یک هسته یکپارچه اینقد کم حجمه و این همه ماژول میتونه داشته باشه ، وضعیت میکرو کرنل چیه پس ؟ چون شنیده بودم که سازنده کرنل مینیکس گفته بوده که لینوس بزرگ ترین اشتباهش طراحی یکپارچه کرنلش بود ! یا مگه نمیگفتن همه درایور ها همراه خود کرنلن ؟ ولی طبق گفته شما جدا و در نقش ماژول هستن ، کلا قاطی کردم گمونم ، یه توضیحی ریزی میدید ؟
هر بار سخت افزار جدیدی متصل میشه قطعا درایورش هست که استفاده بشه درسته ؟ پس یعنی همه درایور های همه سخت افزار های جهان رو جمع کرده ، صحیح ؟ یعنی اینا روی هم چقد فضا گرفتن ؟
۳ . تم ؟ من فقط یه تصویر میخوام بزارم روی اون زمانی که داره یه عالم چرت و پرت و نوشته های مربوط به لحظات بوت رو نشون میده ، یعنی این همون تم هست ؟ چجوری میشه خودم بسازم یکی ؟
-
۲- بله فایل هستند. توی مسیر زیر ذخیره میشن:
/lib/modules/KERNEL_RELEASE
به جای KERNEL_RELEASE اسم انتشار کرنل قرار میگیره. مثلا اینها:
5.17.0-1-amd64
5.17.9-arch1-1
ماژولها همونجا نیستند، بلکه توی یه سری زیر دایرکتوری قرار دارند. معمولا پسوند ماژولها ko. هست. ممکنه ماژولهای کرنل فشرده شده باشند تا جای کمتری بگیرند، کرنل آرچ که اینجوریه و ماژولهاش با xz فشرده شدند. در اینصورت پسوند فشردهسازی هم به پسوند ماژول اضافه میشه. مثلا ko.xz.
ماژولها قسمتی از خود کرنل هستند که میتونند داخل کرنل بارگذاری بیشن. در اصل وقتی یه ماژول رو توی کرنل بارگذاری میکنید، یه سری کد به کدهای کرنل اضافه میشه.
میشه ماژولها رو داخل خود کرنل هم کار گذاشت. همینطور که بعضی از ماژولهای کوچک داخل خود کرنل قرار دارند. هر چند فایل اونها همچنان توی /lib/modules/ پیدا میشه.
ماژولهایی که داخل خود کرنل قرار دارند، نمیتونند unload بشن. کرنل همیشه به اونها دسترسی داره و متغیرها و توابع اونها همیشه مقداری از رم رو اشغال میکنند.
میشه همهی ماژولها رو داخل کرنل کار گذاشت تا به فایل جدا نیاز نشده ولی اینجوری حجم کرنل خیلی زیاد میشه. موقع اجرا هم رم زیادی توسط اونها اشغال میشه بدون اینکه نیازی به اون ماژولها داشته باشید. بعیده که بخواهید چند گیگابایت از رم شما توسط درایورهایی اشغال بشه که حتی سختافزار مرتبط با اونها رو ندارید.
ماژولهای کرنل جزیی از خود کرنل هستند که هر موقع لازم بشه توی کرنل بارگذاری و استفاده میشن. این ماژولها به کل کرنل در حال اجرا دسترسی دارند. توی فضای کرنل اجرا میشن، نه فضای کاربر یا فضای دیگهای.
به همین خاطر توسعه ماژول برای کرنل سخته و باید با دقت کد نوشت.
یه اشارهگر اشتباه توی کد میتونه کل فایلسیستم رو از بین ببره.
ماژول نباید دچار segmentation fault بشه چون در اینصورت خود کرنل دچار segmentaion fault و غیرقابل استفاده میشه.
ماژول نباید تعداد چیزهایی که از اون استفاده میکنند رو گم کنه وگرنه هیچجوری نمیشه به صورت ایمن اون رو unload کرد.
برای نوشتن ماژولها دسترسی به خیلی از توابعی که معمولا توی c بهشون دسترسی دارید وجود نداره. مثلا اونجا نمیتونید از printf استفاده کنید. برای کار با فایلها، * FILE وجود نداره. فقط به توابع کرنل و اونهایی که مال خود ماژول هست دسترسی دارید. تا جایی که میدونم، به توابع بقیه ماژولها هم دسترسی ندارید چون معمولا توابع ماژولها به صورت static هست، فقط خود ماژول بهش دسترسی داره. فکر کنم به system call ها هم دسترسی دارید، مطمئن نیستم.
نمیتونید ماژول یه کرنل رو روی یه کرنل دیگه استفاده کنید. حتی اگه دوتا ماژول برای یه کار باشند.
ماژولها باید برای همون کرنل و با توجه به header هاش کامپایل بشن.
اگه یه کرنل رو کامپایل کنید و بعد حتی به مقدار کوچک سورس یا config اون رو تغییر بدید، بعیده که ماژولهای قبلی باهاش کار کنند. باید ماژولها دوباره براش کامپایل بشن.
هر بار سخت افزار جدیدی متصل میشه قطعا درایورش هست که استفاده بشه درسته ؟
نه. ممکنه درایورهاش باشن، ممکن هم هست نباشند. مثلا بعضی چیپهای وایفای درایور همراه کرنل ندارند و به همین خاطر جدا از طریق dkms کامپایل و نصب میشن.
سختافزارهای انحصاری که تولید کننده اونها با توسعهدهندههای کرنل همکاری نکردند و مستندات کافی هم بیرون ندادند معمولا درایورشون همراه کرنل نیست.
سختافزارهای خیلی جدید که معمولا کمتر از ۱ ماه معرفی شدند، ممکنه درایورهاشون همراه کرنل نباشه.
البته در مورد پردازندههای intel و amd اینجوری نیست. معمولا خود شرکت قبل از اینکه پردازنده واقعا بیاد توی بازار، درایورها و تغییرات لازم رو به توسعهدهندههای کرنل میده و وقتی پردازنده واقعا میاد توی بازار، چیزهای لازم از چند ماه قبل همراه کرنل بوده.
پس یعنی همه درایور های همه سخت افزار های جهان رو جمع کرده ، صحیح ؟
نه. ولی تعداد خیلی زیادی از اونها رو داره. کم پیش میاد که یه سختافزار داشته باشید و کرنل درایور اون رو نداشته باشه و نتونید ازش استفاده کنید.
یعنی اینا روی هم چقد فضا گرفتن ؟
با df ببینید چقدر جا گرفتن. برای کرنل در حال اجرا اینجوری:
df -hs /lib/modules/"$(uname -r)"
البته این بالایی ممکنه توی chroot کار نده.
-
واقعا جالب و بی نظیر ، سپاس 🌹
-
۳ . تم ؟ من فقط یه تصویر میخوام بزارم روی اون زمانی که داره یه عالم چرت و پرت و نوشته های مربوط به لحظات بوت رو نشون میده ، یعنی این همون تم هست ؟ چجوری میشه خودم بسازم یکی ؟
منظورم از تم همون چیزی هست که موقع بوت نمایش میده. plymouth رو نصب کنید، ببینید چجوری هست.
نمیدونم خودتون چجوری میتونید یه تم بسازید.