انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: norouzi90 در 15 آذر 1400، 09:10 بظ
-
با سلام و خسته نباشید.
تا جایی که در صفحات وب گشتم ،اینطور فهمیدم که آموزش هایی را که در رابطه با نصب کرنل لینوکس گذاشته اند، بیشتر در حول و حوش افزایش ورژن کرنل فعلی به ورژن بالاتر و یا کانفیگ و کامپایل مجدد کرنل فعلی می باشد.
فرض کنید که در کامپیوترتان هیچ سیستمی عاملی نصب نشده باشد و نخواهیم از هیچکدام از توزیعهای گنو/لینوکس استفاده نماییم. آیا اگر مثلا فایل آرشیو linux-5.15.6.tar.xz را از سایت www.kernel.org دریافت کنیم و بقیه مراحل را بخواهیم برویم ، چکار بایستی بکنیم؟ آیا حتما بایستی سیستمی نصب شده بر کامپیوتر باشد که کرنل آنرا تغییر داد، یا لازم نیست حتما سیستمی باشد و کرنل را همین طوری هم می شود، با ابزار خاصی بشود نصب کرد. در این قسمت دیگر هیچ ذهنیتی ندارم ، شاید از نرم افزار بخصوصی بشود استفاده کرد و یا با استفاده از سیستم لایو....
اگر امکان داشته باشد کمی در این مورد راهنمایی بفرمایید. آیا کرنل جدید را بایستی حتما بر روی کرنل فعلی نصب کرد و یا می شود از صفر نصب کرد؟
-
سلام.
کرنل فقط رابط میان سخت افزار و نرم افزار است و نمی توان آن را تنها روی کامپیوتر نصب کرد. ابزار های گنو همراه کرنل لینوکس یک سیستم عامل رو تشکیل می دهند
-
سلام.
این پاسخی برای سوال شما نیست اما حدس میزنم این پست برای کسی که این سوال برایش ایجاد شده جذاب باشه:
https://sisoog.com/blog/2017/06/13/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a8%d8%a7-%d8%b1%d8%b2%d8%a8%d8%b1%db%8c-%d9%be%d8%a7%db%8c/
-
احتمالا منظورتان این است:
https://www.linuxfromscratch.org (https://www.linuxfromscratch.org)
-
باسلام
این ویدیو از جادی هست من خودم قبلا دیدم خیلی باحاله :)
کمپایل و نصب کرنل لینوکس
https://www.aparat.com/v/p2vTx/%D8%AC%D8%A7%D8%AF%DB%8C_%D8%AA%DB%8C_%D9%88%DB%8C_-_%DA%A9%D9%85%D9%BE%D8%A7%DB%8C%D9%84_%D9%88_%D9%86%D8%B5%D8%A8_%DA%A9%D8%B1%D9%86%D9%84_%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3_%D8%A8%D9%87
-
محیط لایو بالا بیار. کرنل و لیبسی(مثل glibc و musl) و کوریوتیلز(gnu coreutils یا busybox) و اینا کامپایل کن مقصد کامپایل بزار یه پارتیشن که میخوای روت باشه و بعد chroot کن. تنظیماتش انجام بده و گراب نصب کن. تموم.
اینو ببین:
https://github.com/hoomanist/shit-linux/blob/master/build.sh
-
با سلام و خسته نباشید.
تا جایی که در صفحات وب گشتم ،اینطور فهمیدم که آموزش هایی را که در رابطه با نصب کرنل لینوکس گذاشته اند، بیشتر در حول و حوش افزایش ورژن کرنل فعلی میباشد.
ببینید لازم نیست تا کرنلی که الان دارید رو ارتقا بدید یا عوض کنید. اون چیزی که از kernel.org دریافت میکنید، کد کرنل هست (یکمی هم firmware به صورت دودویی همراهش هست) مشخصا این کد توی این حالت نمیتونه کاری انجام بده. برای همین شما باید اون کد رو کامپایل کنید تا تبدیل به یه کرنل به همراه ماژولهاش بشه. برای کامپایل به یه کامپایلر و پردازنده نیاز دارید. پردازنه که توی کامپیوتر شما قرار داره و بهش کاری نداریم. برای کامپایلر، معمولا از gcc استفاده میشه، البته گزینههای دیگه مثل llvm هم هستند.
اگه بخواهید بدون هیچ سیستمعاملی کرنل رو کامپایل کنید، باید برای اینکار یه سختافزار بسازید.
اگه از یه توزیع زنده استفاده کنید، میشه از یه کامپایلر استفاده کرد تا کار شما رو راحتتر کنه (به جای اینکه کامپایلر خودتون رو بنویسید یا اینکه بخواهید سختافزاری مخصوص اینکار درست کنید)
وقتی یه کرنل رو نصب میکنید، در اصل فایلهایی که کامپایل شدند، توی جاهای خاصی قرار میگیرند. معمولا خود فایل کرنل توی /boot/ قرار میگیره و ماژولهای اون توی دایرکتوری /lib/modules/KERNEL-VERSION/
نصب کار خاصی انجام نمیده، فقط فایلهایی که کامپایل شدند روی توی اون مسیرها قرار میده، همین.
برای کامپایل، معمولا مستقیما از خود کامپایلر استفاده نمیکنند؛ چون تعداد فایلها خیلی و دستورات هم معمولا طولانی هستند، به همین دلیل، از build system ها مثل make استفاده میشه. با make میشه توی یه فایل تنظیمات و پرچمهای مربوط به کامپایل رو مشخص کرد، مقدار متغییرهای محیطی رو تنظیم کرد بررسی کرد که فایلهای موردنیاز برای کامپایل وجود داره یا نه و خیلی از کارهای مربوط به کامپایل رو خودکار کرد. اینجوری شما با زدن دو سه تا دستور، کرنل و ماژولهاش رو کامپایل و نصب میکنید. بهجای اینکه لازم باشه جدا جدا بررسی کنید که پیشنیازها وجود داره یا نه، فایلها رو به ترتیب درست کامپایل کنید، پرچمها و آپشنهای کامپایل رو دستی مشخص کنید و دونه دونه فایلهای بدست اومده رو توی جای درست قرار بدید.
-
فرض کنید که در کامپیوترتان هیچ سیستمی عاملی نصب نشده باشد و نخواهیم از هیچکدام از توزیعهای گنو/لینوکس استفاده نماییم. آیا اگر مثلا فایل آرشیو linux-5.15.6.tar.xz را از سایت www.kernel.org دریافت کنیم و بقیه مراحل را بخواهیم برویم ، چکار بایستی بکنیم؟
کاری نمیتونی بکنی. کرنل به تنهایی هیچ کاری نمیکنه. نقل قول از لینوس توروالدز: «متأسّفانه یک کرنل به تنهایی راه به جایی نمیبرد، برای داشتن یک سامانهٔ قابل استفاده، نیاز به یک پوسته، کامپایلرها، یک کتابخانه و… دارید.»
برای همینه که روی رایانه، سیستمعامل نصب میکنن، نه کرنل!
-
شاید بشه
-
سلام.
کرنل فقط رابط میان سخت افزار و نرم افزار است و نمی توان آن را تنها روی کامپیوتر نصب کرد. ابزار های گنو همراه کرنل لینوکس یک سیستم عامل رو تشکیل می دهند
کاری نمیتونی بکنی. کرنل به تنهایی هیچ کاری نمیکنه. نقل قول از لینوس توروالدز: «متأسّفانه یک کرنل به تنهایی راه به جایی نمیبرد، برای داشتن یک سامانهٔ قابل استفاده، نیاز به یک پوسته، کامپایلرها، یک کتابخانه و… دارید.»
برای همینه که روی رایانه، سیستمعامل نصب میکنن، نه کرنل!
درست فرمودید.
سلام.
این پاسخی برای سوال شما نیست اما حدس میزنم این پست برای کسی که این سوال برایش ایجاد شده جذاب باشه:
https://sisoog.com/blog/2017/06/13/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a8%d8%a7-%d8%b1%d8%b2%d8%a8%d8%b1%db%8c-%d9%be%d8%a7%db%8c/
آره جذاب بود، دستت درد نکند.
احتمالا منظورتان این است:
https://www.linuxfromscratch.org (https://www.linuxfromscratch.org)
آره، خیلی هم خوب بود ، مخصوصا این قسمت هایش:
Requirements and procedure
A clean partition and a working Linux system with a compiler and some essential software libraries are required to build LFS. Instead of installing from an existing Linux system, one can also use a Live CD to build an LFS system.
https://en.wikipedia.org/wiki/Linux_From_Scratch (https://en.wikipedia.org/wiki/Linux_From_Scratch)
https://www.linuxfromscratch.org/livecd/ (https://www.linuxfromscratch.org/livecd/)
https://www.linuxfromscratch.org/livecd/download.html (https://www.linuxfromscratch.org/livecd/download.html)
https://www.linuxfromscratch.org/lfs/downloads/11.0-systemd/LFS-BOOK-11.0-systemd.pdf (https://www.linuxfromscratch.org/lfs/downloads/11.0-systemd/LFS-BOOK-11.0-systemd.pdf)
https://www.linuxfromscratch.org/lfs/downloads/11.0/LFS-BOOK-11.0.pdf (https://www.linuxfromscratch.org/lfs/downloads/11.0/LFS-BOOK-11.0.pdf)
باسلام
این ویدیو از جادی هست من خودم قبلا دیدم خیلی باحاله :)
کمپایل و نصب کرنل لینوکس
https://www.aparat.com/v/p2vTx/%D8%AC%D8%A7%D8%AF%DB%8C_%D8%AA%DB%8C_%D9%88%DB%8C_-_%DA%A9%D9%85%D9%BE%D8%A7%DB%8C%D9%84_%D9%88_%D9%86%D8%B5%D8%A8_%DA%A9%D8%B1%D9%86%D9%84_%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3_%D8%A8%D9%87
دست گلت درد نکنه.
محیط لایو بالا بیار. کرنل و لیبسی(مثل glibc و musl) و کوریوتیلز(gnu coreutils یا busybox) و اینا کامپایل کن مقصد کامپایل بزار یه پارتیشن که میخوای روت باشه و بعد chroot کن. تنظیماتش انجام بده و گراب نصب کن. تموم.
اینو ببین:
https://github.com/hoomanist/shit-linux/blob/master/build.sh
آقا هومان، این زندگی که نشد، ان شا الله زندگی بعدی یکم ذهنم قویتر بشه، آنوقت بیام ببینم چی می گی.
حالا من یک چیزی گفتم، تو همون تعویض تایرهایش موندم ، چه برسد به موتور و گیربوکسش. گرفتی ما را ها !!!
شاید بشه
داداش گلم، شاید چی، یکم بیشتر توضیح بده ببینم چی می خواهی بگی.
آقای Dragon- ، حرف آخر را همین اول برایت می گویم، خودت می دونی که اگر دویست سال نوری هم بنشینم، نمی توانم کرنل را یک کاریش بکنم، قشنگ برو ببین ، اون ورها چه خبره، بعد بیا به زبان اول ابتدایی برایم شرح بده!
-
برید ویکی
توزیع سبک
اخرین توزیعی که معرفی شده سبک ترین نسخش فقط یک ترمینال داره برای ارتباط با کرنل همین
-
با سلام وخسته نباشید مجدد به خدمت همه دوستان ارجمند.
تا حدی که در توانم بود یک کارهایی را انجام داده ام ، هر چند که فعلا به نتیجه نرسیده ام.
گفتم که کارهایی را که در اینباره انجام داده ام، خدمت دوستان بگویم، شاید با توضیحات
دوستان بتوانم، به نتیجه برسانم.
من یک فلش حدود هفت گیگ را برداشته ام و فرمت EXT4 کردم و می خواهم، کرنل و مابقی متعلقات را به آن بزنم .
عکس ها به ترتیب کارهایی که انجام داده ام. در مورد عکس شش و هفت، هیچ تغییری در کانفیگ کرنل انجام نداده ام.
البته خواسته اصلی من این بود که وقتی کامپیوتر را روشن می کنم ، از فلش سیستم بوت شود و بروم به سیستم عامل
داخل فلش.
اگر راهنمایی بفرمایید ، ممنون می شوم.
در ضمن چرا پوشه ای بنام arch بوجود آمده است؟ آیا این نام ربطی به توزیع آرچ دارد؟
چون عکس ها چهارده تا بودند، مجبور شدم سه تا ارسالی در این رابطه داشته باشم.
-
ادامه عکس ها.
-
ادامه عکس ها.
-
اون پوشه arch برای معماری هست ربطی به توزیع آرچ نداره: architecture
-
اون پوشه arch برای معماری هست ربطی به توزیع آرچ نداره: architecture
ممنون، در درک موضوع خیلی به من کمک کرد.
-
بلاخره توانستم فایل bzImage را در مرحله make بسازم.( در فلش مموری ام ساخته ام)(عکس ۱)
ولی الان مشکی که دارم این است که برای این دو تا دستور:
sudo make modules_install
sudo make install
بنظرم در این مرحله اگر بخواهم از این دستورات به همین نحو استفاده کنم ، اینها در سیستم اصلی ام اعمال خواهند شد. اینجایش را زیاد مطمن نیستم!
می خواهم از chroot استفاده کنم تا این دستورات را در سیستم عاملی که در فلش می خواهم بسازم ، اعمال شود. بنظرم چون فایل فایل bzImage را ساخته ام این کار احتمالا شدنی است.
به ویکی انجمن هم در رابطه با chroot مراجعه کردم، ولی در این باره به مشکل خوردم و زیاد سر در نیاوردم. اگر امکان داشته باشد در رابطه با chroot در این قسمت مرا راهنمایی بفرمایید.(عکس ۲)
-
مجبور شدم همینطوری ادامه بدهم.
در ادامه کار دستور make modules را انجام دادم و بدون مشکل اجرا شد.تا اینجای کار بنظرم همه چیز درست است.
دستورات make install و make modules_install برای اجرا شدن نیازمند sudo بودند و آنها را با sudo اجرا کردم و همانطور که حدس می زدم بعد از restart ، ورژن کرنل سیستم فعلی ام افزایش یافت و این دو دستور آخری به سیستم اصلی ام اعمال شد ، که البته من در پی این نبودم و می خواهم که در فلش این دو تا دستور اعمال شوند.
اگر نظر یا پیشنهادی داشتید حتمابفرمایید تا امتحان کنم و در ضمن به هیچ وجه نگران سیستم من نباشید، این قسمت کار کاملا به عهده خودم می باشد.
ورژن قبلی کرنل: 5.10.0.9
ورژن جدید کرنل: 5.10.84
البته الان سیستمم را به حالت قبل برگرداندم.
-
وقتی دستورات make و make modules رو میزنید، به ترتیب خود کرنل و ماژولهای اون کامپایل میشن. دستورات make و makemodules_install به ترتیب خود کرنل و ماژولهای اون رو در جای درست قرار میده. این مرحله فقط شامل یه سری کپی کردن هست، همین. کرنل بعد از کامپایل، توی دایرکتوری زیر پیدا میشه
arch/x86_64/boot
اگه کرنل برای معماریهای دیگه هم کامپایل شده باشه، مسیر مثل بالا هست با این تفاوت که به جای x86_64، اسم اون معماری رو باید قرار بدید.
برای اینکه بتونید سیستم رو با اون کرنل بوت کنید، به یه initramfs هم نیاز دارید. توی دبیان و توزیعهای مبتنی بر اون، به طور پیشفرض از initramfs-system برای ایجاد initramfs استفاده میشه، ولی میشه به جای اون از dracut (پیشفرض فدورا و open suse) هم استفاده کرد.
وقتی که کرنل بوت میشه، به طور پیشفرض میره و سعی میکنه داخل دایرکتوری زیر، دنبال ماژولها بگرده
/lib/modules/$(uname -r)
محلی که کرنل دنبال ماژولها میگرده رو باید موقع کامپایل تعیین کنید، نمیدونم میشه از طریق خط فرمان کرنل، اون دایرکتوری رو مشخص کرد یا نه. (بعیده بشه)
شما میخواهید کرنل و ماژولهای اون، توی یه مسیر دیگه قرار بگیرن. برای اینکار دو راه دارید،
۱- دستی خود کرنل و ماژولهای کامپایل شده رو کپی کنید.
۲- با دادن آپشنهای مناسب به make install و make modules_install، جایی که فایلها کپی میشن رو تغییر بدید.
خواستید از chroot استفاده کنید، برای اینکه از chroot استفاده کنید، باید حداقل یه base system داشته باشید. همینجوری نمیشه. صفحه man مربوط به chroot رو ببینید تا بیشتر متوجه بشید.
با استفاده از debootstrap میتونید یه base system دبیان درست کنید. بعد کرنلی که کامپایل کردید رو توی اون base system نصب کنید (در اصل فایلهای کامپایل شده رو کپی میکنید) بعد گراب رو تنظیم کنید که یه منو برای این base system ایجاد کنه. حتما لازم نیست گراب رو توی base system نصب کنید.
-
اگه کرنل برای معماریهای دیگه هم کامپایل شده باشه، مسیر مثل بالا هست با این تفاوت که به جای x86_64، اسم اون معماری رو باید قرار بدید.
۱- تمامی رایانه ها ی شخصی و لب تاب ها از این معماری x86_64 استفاده می کنند؟
۲- این معماری ارتباط مستقیم با کدام قطعه از کامپیوترمان دارد؟ یعنی با عوض کردن یکی از اینها در کامپیوتر نوع معماری هم احتمالا بایستی عوض بکنیم؟این معماری به cpu و یا کارت گرافیک بستگی دارد؟
برای اینکه بتونید سیستم رو با اون کرنل بوت کنید، به یه initramfs هم نیاز دارید.
۳-فرآیند بوت شدن سیستم به initramfs ربط دارد یا GRUB ؟ برای بوت شدن بایستی هر دو تایشان را نصب بکنم؟
۲- با دادن آپشنهای مناسب به make install و make modules_install، جایی که فایلها کپی میشن رو تغییر بدید.
۴-من می خواهم در dev/sdb1/ سیستمم را نصب کنم، آیا می توانید بگویید که چگونه مسیر نصب را به این مسیر تغییر بدهم؟
۵- در هنگام ایجاد پارتیش EFI System در نصب دبیان ، لازم بود که فرمت پارتیش FAT باشد،آیا هر پارتیشن بوتی بایستی فرمتش FAT باشد تا توسط بایوس شناخته شود؟ در این صورت در فلش مموری که من می خواهم در آن سیستم عامل نصب کنم آیا لازم است که حتما فرمتش را FAT بکنم؟ یا بایستی حتما برای اینکه فلش مموری قابلیت بوت شدن داشته باشد دو تا پارتیشن ایجاد کنم یکی با فرمت FAT برای پارتیشن boot و دیگری با فرمت FAT یا EXT4 برای پارتیشن ریشه؟
۶- آیا لازم است طبق عکس یک ، برای بوت شدن فلش مموری گزینه یا گزینه هایی را در قسمت flags فعال کنم؟
۷- بعد از فرمت فلش مموری ام، نام فلش مموری ام از dev/sdb/ تبدیل شد به dev/sdb1/ ، آیا راهی وجود دارد که بتوان اسم آنرا دوباره به dev/sdb/ برگردانم؟
-
۱- تقریبا همه پردازندههای اینتل و amd که توی ۲۰ سال گذشته ساخته شدند، از معماری x86 استفاده میکنند.
x86 به طور پیشفرض 16 بیتی هست و توی همین حالت شروع به کار میکنه. ولی نسلهای اول اون پردازندههایی که توی لپتاپها و کامپیوترهای شخصی استفاده شدند، اکثرا 32 بیتی بودند. x86_64 نسخه 64 بیتی معماری x86 هست.
معماری x86، بین نسخههای خودش سازگاری عقبرو داره؛ به این معنی که برنامهای که قابلیت اجرا روی پردازنده 16 بیتی x86 داره، روی پردازنده 32 بیتی و 64 بیتی هم قابل اجراست. (کاری به کتابخانهها و سیستمعامل ندارم.) ولی برعکسش صادق نیست، یعنی شما نمیتونید برنامهای که برای نسخه 64 بیتی معماری x86 نوشته شده رو، روی یه پردازنده 32 با همین معماری اجرا کنید. (اگه بشه به همین راحتی نیست، احتمالا از بعضی قابلیتهای برنامه هم نمیتونید استفاده کنید.)
amd بار اول پردازنده 64 بیتی با معماری x86 ساخت، به خاطر همین توی گنو/لینوکس و freebsd، به این معماری، amd64 هم گفته میشه. بعضی جاها به اسم x64 نیز شناخته میشه.
اکثر لپتاپ، کامپیوترها و سرورها، از پردازندههای x86_64 استفاده میکنند. (نسخه 32 بیتی دیگه زیاد استفاده نمیشه) البته این پردازندههای m1 جدید، که apple توی محصولات خودش استفاده میکنه، مبتنی بر arm64 یا همون aarch، نسخه 8.4a هست.
تلفنهای همراه از پردازندههایی با معماری خانوادههای arm استفاده میکنند. دلیلش اینه که مصرف انرژی و تولید گرما پردازندههای با معماری خانواده arm، از پردازندههای با معماری x86، کمتره. (یه قائده کلی، معماریهای risc انرژی کمتری نسبت به معماریهای cisc مصرف میکنند. برای اطلاعات بیشتر، اینجا (https://fa.m.wikipedia.org/wiki/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87_%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D9%84%D8%B9%D9%85%D9%84)، اینجا (https://fa.m.wikipedia.org/wiki/%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87_%DA%A9%D9%85_%D8%AF%D8%B3%D8%AA%D9%88%D8%B1) و اینجا (https://fa.m.wikipedia.org/wiki/%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87_%D8%A8%D8%A7_%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D9%87%D8%A7%DB%8C_%D9%BE%DB%8C%DA%86%DB%8C%D8%AF%D9%87) رو ببینید.)
اینتل و HP همراه هم، معماری ia64 رو برای جایگزینی x86 توی سرور توسعه دادند؛ اما تقریبا یه معماری شکست خورده هست و به جز بعضی پردازندههای سرور، جای دیگهای استفاده نمیشه. (نمیدونم هنوز پردازندههاش تولید میشن یا نه)
۲- پردازنده.
لازمه که پردازنده رو عوض کنید. چون چیپست مادربرد باید با پردازنده سازگار باشه، چیپست و بعضی قطعات مادربرد هم باید تعویض بشن، اما از اونجایی که این کار سخته و ارزش اقتصادی خاصی هم نداره، باید مادربرد و پردازنده عوض بشن. (پردازنده قسمت اصلیه)
نرمافزارها رو هم باید عوض کنید. برنامهای که برای معاری x86_64 کامپایل شده، روی پردازنده با معماری arm64 اجرا نمیشه.
۳- به هر دو.
برای بوت شدن، به initramfs نیاز دارید. معمولا یه بوتلودر هم استفاده میشه تا کرنل و initramfs رو بوت کنه. کرنل لینوکس این قابلیت رو داره تا مستقیم توی سیستمهای efi بوت بشه. با دستور efibootmgr میشه متغییرهای efi رو ویرایش کنید تا کرنل رو بوت کنید و محل initramfs رو هم از طریق خط فرمان کرنل مشخص کنید. خط فرمان کرنل چیزی شبیه bash نیست. همون آپشنهایی هست که به کرنل میدید و با منوی گراب میتونید تغییرش بدید. (با بوتلودرهای دیگه هم میشه تغییرش داد.
خط فرمان کرنل رو میشه موقع بارگذاری کرنل تعیین کرد. میشه داخل initramfs هم قسمتهایی از خط فرمان کرنل رو مشخص کنید. برای دیدن خط فرمان کرنلی که الان در حال اجراست ، محتویات فایل cmdline توی دایرکتوری /proc/ رو ببینید. (میشه کرنل در حال اجرا رو با استفاده از kexec تغییر داد، بدون اینکه سیستم رو راهاندازی مجدد کرد)
cat /proc/cmdline
میشه کرنل، initramfs و خط فرمان کرنل رو با هم ترکیب کرد و یه efi image ساخت. میشه این efi image رو مستقیم توسط uefi بوت کرد. میشه از بوتلودرها هم استفاده کرد. مزیت این روش این هست که میشه این فایل بدست اومده رو امضا کرد و با استفاده از secure boot مطمئن شد خط فرمان کرنل، خود کرنل و initramfs تغییری نکردن. اینکار مزیت امنیتی داره، مزیت خاص دیگهای نداره. با دستور objcopy میشه این efi image رو ساخت. dracut هم این قابلیت رو داره.
برای اینکه یه efi image بسازید، باید efi stub مرتبط با معماری پردازنده رو داشته باشید. این فایل همراه systemd هست و توی سیستمهایی که از systemd استفاده میکنند، میتونید توی مسیر زیر پیداش کنید.
/lib/systemd/boot/efi
اسمش اینجوری هست linuxARCH.efi.stub که به جای ARCH، معماری پردازنده قرار میگیره.
توی توزیعهایی که از systemd استفاده نمیکنند، معمولا یه بسته به اسم gummiboot هست که efi stub به همراه systemd boot داخلش وجود داره. در این حالت، معمولا فایل توی مسیر زیر پیدا میشه.
/lib/gummiboot
در صورتی که کامپیوتر از uefi پشتیبانی نکنه، باید از یه بوتلودر استفاده کنید تا کرنل و initramfs رو بوت کنه. کرنل برای اینکه توی master boot record جا بشه، خیلی بزرگه، حدود 6Mib؛ در حالی که maste boot record فقط اولین سکتور دیسک هست و بسته به دیسک، میتونه بین 512Kib تا 8Mib فضا داشته باشه. معمولا بین 512Kib تا 4Mib هست. بعضی ssd ها سکتور 8Mib داره ک اکثرا عمر و کیفیت پایینی دارند.
توی سیستمهای legacy، میتونید از بوتلودرهای گراب و syslinux استفاده کنید.
-
آقای Dragon- ،
خیلی زحمت کشیدید، از محبت هایتان بی نهایت سپاسگزارم .
-
بقیهش رو نگفتم. میخواستم توی یه ارسال دیگه بگم که قبلی خیلی طولانی نشه. (همینجوری طولانی هست)
۴- پیشنهاد نمیکنم که کرنل و ماژولهای اون رو توی فلش نصب کنید و بعد سعی کنید همین سیستم رو با کرنل کامپایل شده بوت کنید، چون احتمالا باید یه لینک از جایی که ماژولها هستند، به داخل دایرکتوری /lib/modules/ درست کنید، فایل fstab رو تغییر بدید تا فلش شما رو یه جا سوار کنه و initramfs رو هم درست تنظیم کنید تا:
۱- ماژولهای موردنیاز برای بوت رو داخل خودش داشته باشه
۲- توی مراحل اولیه بوت، فلش شما رو سوار کنه تا کرنل به ماژولهای خودش دسترسی داشته باشه تا اگه لازم شد، هر کدوم رو بارگذاری کنه.
به خاطر همین بهتره یه base system دبیان ایجاد کنید و کرنل کامپایل شده رو داخل اون قرار بدید.
اول یه پارتیشن فلش رو روی /mnt/ سوار کنید. اطلاعات روی پارتیشن رو انتقال بدید یه جای دیگه، تا پارتیشن خالی باشه.
بسته debootstrap رو نصب کنید تا بتونید باهاش، یه base system دبیان ایجاد کنید.
sudo apt install debootstrap
حالا با debootstrap کار رو شروع کنید.
sudo debootstrap bullseye /mnt
به جای bullseye میتونید اسم چیزی که قراره نصب بشه رو قرار بدید. برای مثال، میتونید sid یا bookworm رو جایگزین bullseye کنید تا به ترتیب، دبیان ناپایدار یا دبیان ۱۲ نصب بشه. (دبیان ۱۲ توی حالت آزمایشی هست.) میتونید هم اسمهای اوبونتو رو بذارید. focal برای اوبونتو 20.04 و بقیه اسمها برای بقیه نسخههای اوبونتو/دبیان/devuan
به جای /mnt/ میتونید مسیری که قرار بستهها نصب بشن رو قرار بدید.
به صورت اختیاری میتونید آینهای که بستهها از اون دریافت میشن رو تعیین کنید. در صورتی که آینهای رو مشخص نکنید، به طور پیشفرض از http://deb.debian.org/debian استفاده میشه.
برای تعیین آینه، آدرس کامل به همراه پروتکل رو در انتهای دستور بنویسید. مثلا برای استفاده از آینه https://debian.hostiran.ir/debian اینجوری از دستور استفاده کنید.
sudo debootstrap bullseye /mnt https://debian.hostiran.ir/debian
توی مثال بالا، https پروتکل ارتباطی هست. برای اینکه ببینید چه پروتکلهایی پشتیبانی میشه، صفحه man مربوط به sources.list رو ببینید.
معمولا فایلها توی روتِ وبسرور نیستند و باید دایرکتوری رو هم مشخص کنید، توی مثال بالا debian، توی اکثر آینهها همین دایرکتوری هست.
debian.hostiran.ir، آدرس آینه هست، میشه مستقیم از ip هم استفاده کرد. در صورتی که پروتکل، file باشه، آدرس میشه مسیر یه دایرکتوری مثل این:
/srv/nfs/localmirror
بالاتر گفتم، man مربوط به sources.list رو ببینید.
برای دیدن یه لیست از آینههای دبیان، این (https://www.debian.org/mirror/list) صفحه از وبسایت دبیان رو ببینید.
من خودم از آینه https://a.docker-registry.ir/debian استفاده میکنم. مربوط به ابرآروان هست، سریع بروز میشه و داخلی هم هست به خاطر همین سرعت خوبی داره. از https هم پشتیبانی میکنه. توی وبسایت دبیان نیست، از یه جای دیگه پیداش کردم، درست یادم نیست کجا.
بعد از اینکه base system رو با debootstrap نصب کردید، سورس کرنل رو کپی کنید توی دایرکتوری زیر
/mnt/usr/src
معمولا سورسها رو اونجا قرار میدن. اگه خواستید، میتونید جای دیگه هم بذارید ولی ترجیحا توی فلش باشه تا آخر کار مجبور نباشید آپشنهای make رو عوض کنید تا کرنل و ماژولهاش رو توی جای درست کپی کنه.
بعد از اینکه سورس کرنل رو توی جای درست گذاشتید، کامپایل رو آغاز کنید. کامپایل رو از طریق سیستم فعلی انجام بدید چون ابزارهای مورد نیاز رو نصب کردید. میتونید هم توی chroot انجام بدید ولی اینجوری لازمه بستههای موردنیاز برای کامپایل رو توی chroot هم نصب کنید.
برای کامپایل، اول وارد دایرکتوری /mnt/usr/src/ بشید (یا اگه سورس کرنل رو جای دیگه گذاشتید، وارد اونجا بشید) بعد مثل قبل کانفیگ کرنل رو ایجاد کنید و دستور make رو بزنید. میتونید با آپشن j- تعیین کنید که چند نخ (thread) برای اینکار استفاده بشه.
بهتره این عدد از تعداد هستههای پردازنده شما بیشتر نباشه و گرنه ممکنه load average شما برای مدت زیادی از تعداد نخهای پردازنده شما بیشتر بشه، رم پر بشه و سیستم کِرَش کنه.
(اگه وقت زیاد ندارید، از اینجا تا جایی که گفتم "الان که حسابی سرتون با چرت و پرتهای من درد گرفت، برگردیم سر موضوع اصلی ;D" رو رد کنید، زیاد به موضوع اصلی مرتبط نیستند اما خوندشون بد نیست)
اگه پردازنده از smt پشتیبانی میکنه و smt توی کرنل فعاله، میتونید عدد جلوی j- رو دو برابر کنید، برای اکثر پردازندههای اینتل و amd که اینطوره.
smt یه قابلیت هست که به پردازنده این امکان رو میده تا هر هسته، بتونه همزمان دوتا نخ رو اجرا کنه. برای اطلاعات بیشتر در این مورد، اینجا (https://fa.m.wikipedia.org/wiki/%D9%81%D8%B1%D8%A7%D8%B1%DB%8C%D8%B3%D9%85%D8%A7%D9%86%DB%8C) رو ببینید. به طور ساده و غیر دقیق یعنی مثلا پردازنده شما ۴ تا هسته داره ولی با این قابلیت، انگار ۸ تا هسته داره، که هر هسته میتونه در هر لحظه، یه نخ رو اجرا کنه.
البته smt میتونه توی بعضی پردازندهها مشکل امنیتی درست کنه، عموما پردازندههای نسل ۶ و قبلتر اینتل (2016 و قبلتر) به این صورت که ممکنه نشت اطلاعات رخ بده.
این مشکل سختافزاری هست و با نرمافزار یا آپدیت microcode های پردازنده رفع نمیشه، دو راه برای حلش هست، یا از smt استفاده نشه یا اینکه پردازنده رو عوض کنید. (تعمییر پردازنده نه اقتصادیه نه چیزی که بشه به همین راحتی انجامش داد. فکر نکنم حتی خود اینتل هم این رو به همین راحتی انجام بده)
برای غیرفعال کردن استفاده از smt، میتونید پارامتر nosmt رو موقع بوت شدن به کرنل بدید. ممکنه توی تنظیمات uefi یا bios راهی برای غیرفعال کردن این باشه. برای کرنل در حال اجرا، میشه با نوشتن مقدار off یا forceoff (دومی رو با احتیاط استفاده کنید) توی فایل زیر، smt رو غیرفعال کرد. مشخصا این تغییر با راهاندازی مجدد از بین میره. راه اصلی رو بالاتر گفتم.
/sys/devices/system/cpu/smt/control
اینکه چجوری این نشت اطلاعات مشکل امنیتی حساب بشه، بستگی به برنامه و وضعیت سیستم داره، اما خیلی وقتا این مشکلی برای کامپیوترهای خانگی پیش نمیاره، بیشتر مربوط به سرورها میشه، غیرفعال کردن smt کامپیوتر شما رو کند میکنه (چون انگار نصف هستهها غیب شدن) پس بهتره حتی اگه این مشکل وجود داره، باز هم فعال بذاریدش.
برای اینکه ببینید این مشکل برای پردازنده شما هم هست یا نه، خروجی dmesg رو بررسی کنید. خودم همینجوری متوجه این موضوع شدم.
برای اطلاعات بیشتر، اینجا (https://access.redhat.com/solutions/rhel-smt) رو ببینید.
توی عکسهای قبلی، دیدم که شما make رو همراه آپشن j12- اجرا کرده بودید. واقعا تعداد نخهای پردازنده شما اینقدره؟ اگه آره پس مشکلی نیست، در غیراینصورت ممکنه اتفاقی که بالاتر گفتم، پیش بیاد. (زیاد شدن load average )
دستور nproc میگه که شما چنتا نخ دارید. توی گنو/لینوکس، هر نخ، یه پردازنده به حساب میاد پس اگه چیزی تعداد پردازندههای شما رو ۸ گزارش کرد، در حالی که فقط یکی داشتید، تعجب نکنید.
الان که حسابی سرتون با چرت و پرتهای من درد گرفت، برگردیم سر موضوع اصلی ;D
کانفیگ کرنل رو ایجاد کردید، حالا توی همین سیستم که هستید، make -j$(nproc) رو بزنید تا کرنل شروع به کامپایل بشه. بعد هم دستور زیر رو بزنید تا ماژولها کامپایل بشن
make -j$(nproc) modules
حواستون باشه توی دستور بالا، اشتباهی modules_install رو وارد نکنید، چون باعث میشه ماژولها علاوه بر کامپایل شدن، توی سیستم فعلی نصب بشن که ما نمیخواهیم، میخواهیم توی base system نصب بشن.
حالا که کامپایل خود کرنل و ماژولهای اون به اتمام رسید، وقت نصب کرنل هست. (این مرحله در اصل یه مشت ماژول به همراه خود کرنل رو کپی میکنه توی جای درست، بعدش هم یه depmod اجرا میکنه تا cache مربوط به ماژولها درست بشه. همین)
برای نصب، اول فایلسیستمهای مجازی رو سوار کنید. (فکر نکنم الان بهشون نیازی باشه ولی بودنشون مشکل درست نمیکنه)
for i in dev dev/pts sys proc; do
sudo mount -B /$i /mnt/$i
done
حلقه بالا کار رو راحتتر میکنه. معادل این هست که دستورات پایین رو اجرا کرد
sudo mount -B /dev /mnt/dev
sudo mount -B /dev/pts /mnt/dev/pts
sudo mount -B /sys /mnt/sys
sudo mount -B /proc /mnt/proc
همونطور که میبینید، دستورات خیلی شبیه هم، و تکراری هستند. به خاطر همین میشه با یه حلقه کار رو راحتتر کرد تا کمتر لازم باشه تایپ کنید.
الان با chroot، وارد base system بشید.
sudo chroot /mnt
توی base system برید داخل جایی که سورس کرنل رو ذخیره کرده بودید و دستورات make install و make modules_install رو بزنید تا به ترتیب کرنل و ماژولهاش توی جای درست کپی بشن.
الان شما با موفقیت base system رو همراه کرنل شخصیسازی شده خودتون نصب کردید، اما هنوز کار تموم نشده. لیست مخازن رو بروزرسانی کنید و بستههای locales و console-setup رو نصب کنید.
apt install locales console-setup
توی منویی که از شما سوال میپرسه، utf8 و EN رو انتخاب کنید.
الان منطقه زمانی و locales رو تنظیم کنید.
dpkg-reconfigure tzdata locales
tzdata رو قبلا دید پس میدونید چجوری هست. برای locales، ترجیحا یه چیزی انتخاب کنید که utf8 و انگلیسی باشه.
فایل fstab رو تنظیم کنید. یه همچین چیزی کافی هست تا روت سوار بشه. ولی برای استفاده طولانی بهتره که نوع فایلسیستم مشخص بشه، آپشنها بیشتر تنظیم بشن و بررسی fsck هم فعال بشه.
/dev/sdb1 / auto rw,defaults 0 0
اگه چیز خاصی مد نظر شما هست، توی fstab تنظیم کنید. حواستون باشه به جای sdb1، پارتیشن درست رو قرار بدید، فلش دیگهای رو هم موقع بوت به کامپیوتر وصل نکنید تا نام گذاری کرنل عوض نشه. اگه از uuid یا partuuid استفاده کنید بهتره.
ESP (همون پارتیشن EFI SYSTEM) رو توی fstab تعریف نکردیم، چون توی این شرایط، حتما لازمش نداریم. اگه میخواهید، خودتون تنظیمش کنید.
فایل mtab رو ایجاد کنید.
ln -s /proc/self/mounts /etc/mtab
امتحان کنید که دستور mount چی میگه،اگه خطا نداد، این مرحله رو درست انجام دادید.
با passwd یه رمز برای روت بذارید. (گذاشتن رمز برای روت مناسب نیست، ولی الان برای اهداف آزمایشی/آموزشی نباید مشکل درست کنه.)
اگه خواستید، یه hostname برای این سیستم بذارید. مثلا custom-kernel یا هرچیز دیگه. فقط فاصله نداشته و شامل کاراکترهای a-zA-Z0-9 و علامتهای - یا _ باشه. پیشفرض debian هست.
echo "custom-kernel" > /etc/hostname
فایل hosts رو هم تنظیم کنید.
echo "custom-kernel 127.0.1.1" >> /etc/hosts
بهجای custom-kernel مقدار hostname رو بذارید. توی شرکت یا جایی که کامپیوترهای زیادی هست، باید hostname و تنظیمات فایل hosts به دقت و با توجه به تنظیمات شبکه انجام بشه اما از اونجایی که توی خانه هستید و فکر نکنم تعداد زیادی کامپیوتر توی شبکه وجود داشته باشه، فعلا لازم نیست ملاحظه خاصی در نظر بگیرید. اگه تعداد کامپیوترها بیشتر از یکی هست، حواستون باشه hostname دو کامپیوتر یکی نباشه، همین کافیه.
گراب و یه initramfs system نصب کنید. بهتره برای initramfs system، از initramfs-tools که پیشفرض دبیان هست، استفاده کنید. dracut هم هست.
apt install grub-efi initramds-tools
بسته grub-efi، با توجه به معماری پردازنده فعلی، بسته گراب مرتبط رو نصب میکنه، در این حالت، grub-efi-amd64
اگه کامپیوتر توی حالت legacy بوت میشه، بسته grub-pc رو نصب کنید.
initramfs رو ایجاد کنید.
update-initramfs -c -k all
در صورتی که dracut رو نصب کردید، دستور dracut -f رو جایگزین بالایی کنید.
تنظیمات گراب رو بروزرسانی کنید.
update-grub
ولی گراب رو با grub-install، روی ESP نصب نکنید. همین الان، گراب روی ESP نصب شده، لازم نیست یه بار دیگه نصبش کنید.
از chroot خارج بشید.
exit
فایلسیستمهایی که قبلا سوار کردید رو unmount کنید
sudo umount -R /mnt
آپشن R- برای این هست که هر فایلسیستمی که زیر /mnt/ سوار شده هم unmount بشه. در اصل R- باعث میشه که عملیات unmount به طور بازگشتی انجام بشه، مثل ls -R یا grep -r یا بقیه دستورات که آپشنی برای انجام کارها به صورت بازگشتی دارند.
اگه R- رو مشخص نمیکردید، باید همه تین دستورات رو به ترتیب میزدید.
sudo umount /mnt/dev/pts
sudo umount /mnt/dev
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt
همونطور که میبینید، میشه از یه حلقه هم استفاده کرد
از xargs و خیلی چیزهای دیگه هم میشه استفاده کرد، کلا راه زیاد دارید.
مطمئن بشید که بسته os-prober نصب هست.
apt list os-prober
اگه نبود نصبش کنید.
sudo apt install os-prober
الان تنظیمات گراب رو توی سیستم اصلی بروزرسانی کنید و ببینید توی خروجی، سیستمی که نصب کردید شناسایی میشه یا نه.
sudo update-grub
اگه شناسایی شده بود، کامپیوتر رو راهاندازی مجدد کنید و توی منوی گراب، سیستم نصب شده رو انتخاب کنید.
اگه فلش از استاندارد usb3 پشتیبانی نمیکنه، چیزهای زیادی روی فلش نصب نکنید، مخصوصا محیط گرافیکی چون عملکرد خیلی کندی میگیرید. اگه فلش usb3 هست، اون رو به یه درگاه usb3 یا بالاتر وصل کنید تا سرعت درست بگیرید، در غیر اینصورت سرعت usb2 یا حتی ممکنه usb1 بگیرید.
-
؟!
-
بقیهش رو نگفتم. میخواستم توی یه ارسال دیگه بگم که قبلی خیلی طولانی نشه. (همینجوری طولانی هست)
تازه قرار بوده طولانی هم نباشه؟؟ هر کدوم ارسالهای شما واسه خودش پتانسیل اینو داره که یه صفحه ویکی بشه!
-
؟!
یه جایی به مشکل خورده. همون دستوری که پایین نوشته رو اجرا کنید و دوباره همون debootstrap قبلی رو بزنید ببینید چی میشه. اگه درست نشد، همه فایلهای داخل فلش رو پاک کنید و دوباره سعی کنید.
یه چیزی که دیدم این هست که اگه اتصال به مخازن زیاد قطع و وصل بشه، debootstrap به مشکل میخوره؛ مخزن http://deb.debian.org/debian بعضی وقتا زیاد قطع و وصل میشه (احتمالا به خاطر اینترنت ایران و فاصله مکانی از اینجا) به خاطر همین بهتره از یه آینه استفاده کنید که نزدیکتر باشه.
تازه قرار بوده طولانی هم نباشه؟؟ هر کدوم ارسالهای شما واسه خودش پتانسیل اینو داره که یه صفحه ویکی بشه!
تا حالا سعی کردم اینها رو ویکی کنم ولی کار با ویکی انجمن وضح نیست، اگه یه چنتا دکمه مثل اینجا داشت، میشد باهاش کارد. مثلا لازمه که یه چیزی به عنوان دستور/کد نمایش داده بشه، چنین دکمهای نیست، باید رفت توی یه موضوع دیگه که دستور/کد داره، ویرایش رو بزنی تا متنش نمایش داده بشه و از اونجا بفهمی باید چی بنویسی. کلا کار باهاش راحت نیست.
-
۵- در هنگام ایجاد پارتیش EFI System در نصب دبیان ، لازم بود که فرمت پارتیش FAT باشد،آیا هر پارتیشن بوتی بایستی فرمتش FAT باشد تا توسط بایوس شناخته شود؟ در این صورت در فلش مموری که من می خواهم در آن سیستم عامل نصب کنم آیا لازم است که حتما فرمتش را FAT بکنم؟ یا بایستی حتما برای اینکه فلش مموری قابلیت بوت شدن داشته باشد دو تا پارتیشن ایجاد کنم یکی با فرمت FAT برای پارتیشن boot و دیگری با فرمت FAT یا EXT4 برای پارتیشن ریشه؟
۶- آیا لازم است طبق عکس یک ، برای بوت شدن فلش مموری گزینه یا گزینه هایی را در قسمت flags فعال کنم؟
۷- بعد از فرمت فلش مموری ام، نام فلش مموری ام از dev/sdb/ تبدیل شد به dev/sdb1/ ، آیا راهی وجود دارد که بتوان اسم آنرا دوباره به dev/sdb/ برگردانم؟
۵- fat جز مشخصات uefi هست و توی پیادهسازیهای مختلف، uefi باید بتونه پارتیشن با فرمت fat32 و fat16 رو بخونه. )ممکنه بعضی مادربردهت با fat16 مشکل داشته باشند.) در مورد fat12 چیزی نمیدونم.
اینکه uefi از چه فایلسیستمهایی پشتیبانی کنه، بستگی به سازنده داره. fat32 همونطور که گفتم، باید پشتیبانی بشه، ممکنه سازنده مادربرد تصمیم بگیره که بقیه فایلسیستمها رو هم پشتیبانی کنه. مثلا efi مادربردهای apple، از فایلسیستم +hpfs و جدیدا apfs پشتیبانی میکنند. (هر دو انحصاری apple هستند)
لازم نیست اصلا /boot/ رو جدا کنید. اون ESP هست که باید جدا باشه. بسته به شرایط، ممکنه ESP همون پارتیشن /boot/ باشه.
۶- توی parted، و ابزارهایی که از اون استفاده میکنند مثل gparted، پرچمهای boot و esp رو فعال کنید. فکر کنم esp یه اسم دیگه برای boot باشه. این در حالتی هست که پارتیشنتیبل، gpt باشه. در مورد dos مطمئن نیستم.
توی gdisk، نوع پارتیشن رو باید برابر EF00 قرار بدید. توی fdisk، باید برابر EFI system باشه.
در حالت کلی با پارتیشنتیبل gpt، باید ESP یه guid برابر مقدار زیر داشته باشه.
C12A7328-F81F-11D2-BA4B-00A0C93EC93B
با فعال کردن پرچمهای درست توی parted یا تنظیم درستِ نوعِ پارتیشن توی fdisk و gdisk، مقدار guid پارتیشن مربوط، برابر مقدار بالایی که قرار دادم میشه.
۷- پارتیشن ایجاد کردید، به خاطر همین با sdb1 مشخص شده. میتونید پارتیشن رو پاک کنید و مسقیما فایلسیستم رو روی کل فلش بسازید اما اینجوری، فکر نکنم بتونید اندازه اون فایلسیستم ایجاد شده رو تغییر بدید.
-
البته چندین روز بر روی این پروژه مانند کار کرده بودم، چون بیش از اندازه برایم سخت بود، آنرا کنار گذاشته بودم.
نمی دانم شاید بعدها دوباره سعی کنم.
ولی چند مطلب بود که حیفم آمد در اینجا به آنها اشاره ای نکنم، شاید بدرد یکی بخورد.
۱- کرنل لینوکس به تنهایی به هیچ دردی نمی خورد، حتی به تنهایی قادر به انجام دستوراتی مانند copy و paste و mkdir و mv و ls و ... و خلاصه هر چیزی را که فکرش را بکنید،نیست . برای اینکه این دستورات را بشود بعد از نصب کرنل لینوکس استفاده کرد به busybox نیازمندیم.تنها کافیست در ترمینال تایپ کنید :
busybox --list
تا به اهمیت این عنصر حیاتی در توزیع های گنو/لینوکس پی ببرید.
سیستم لینوکس در مینیمال ترین حالتش که حداقل به یک چیزی شبیه باشد و لااقل بهش بگوییم مثلا یک لیستی بگیرد( فرمان ls ) و ... بایستی هم کرنل را نصب کنیم و هم busybox را .
۲- من یک اشتباه مهلکی را انجام دادم و این اشتباه باعث شد کل سیستمم به فنا برود. در سالهای خیلی پیش که داشتم رایانه کار درجه دو را در یک آموزشگاهی می خواندم،
مربی امان یک مطلب جالب و مهمی از ما پرسید. ایشان پرسید آیا مثلا این نرم افزار word ای که دارید باهاش کار می کنید مهم است یا داده هایی که بوسیله آن ایجاد کرده اید؟ خوب همه ما گفتیم این نرم افزار word . البته ایشان در همانجا به ما توضیح دادند و ما را متوجه اشتباهمان کردند.
این داده هایی که ما داریم شاید ماحصل چندین ساعت یا روز یا ماه ما باشد ولی این نرم افزار فرضا اگر هم حذف شود به راحتی قابل نصب می باشد.
در سیستم من چه اتفاقی افتاد؟ تمام داده های پارتیشن های دیگرم رفت روی هوا و تنها پارتیشن ریشه و هوم برایم باقی ماند. اطلاعات اساسی ام در پارتیشن های دیگرم بودند و همگی آنها هیچ شدند.
تا آن زمان تنها فکر می کردم اگر ما بر روی پارتیش ریشه دچار اشتباه بشویم، فوقش سیستم عاملمان خراب می شود، مشکلی نیست یا از timeshift کمک بگیر و یا دوباره سیستم عامل را از نو نصبش کن ولی آن طرف قضیه را ندیده بودم.
من پکیج کرنل را در /mnt/ ، از حالت فشرده خارج کردم ، بعد که کارهایم را انجام دادم ، خواستم که آنها را حذف کنم. سیستم را مجبور کردم که هر چیزی در این
پوشه /mnt/ است را حذف کند و الی ماشاءالله.
-
۱- کرنل لینوکس به تنهایی به هیچ دردی نمی خورد، حتی به تنهایی قادر به انجام دستوراتی مانند copy و paste و mkdir و mv و ls و ... و خلاصه هر چیزی را که فکرش را بکنید،نیست . برای اینکه این دستورات را بشود بعد از نصب کرنل لینوکس استفاده کرد به busybox نیازمندیم.تنها کافیست در ترمینال تایپ کنید :
به جای busybox، بهتره از بسته coreutils استفاده بشه که استانداردتره. busybox این دستورات رو تو یک فایل ادغام کرده و مثلا دستورات رو به busybox لینک میده.
-
من پکیج کرنل را در /mnt/ ، از حالت فشرده خارج کردم ، بعد که کارهایم را انجام دادم ، خواستم که آنها را حذف کنم. سیستم را مجبور کردم که هر چیزی در این
پوشه /mnt/ است را حذف کند و الی ماشاءالله.
مگه بقیه فایلسیستمها رو زیر /mnt/ سوار کرده بودید که اینجوری شد؟ یعنی پارتیشنهایی که اطلاعات داخلش بود رو، زیر /mnt/ سوار کردید و بعد اشتباهی با rm کل محتویات /mnt/ رو پاک کردید؟
-
مال من که اینجوری هست.
-
خب همینطور که آقای دراگون گفت درسته، همینطور که مشاهده میکنید خب 3 تا پارتیشن شما در این مکان سوار شدن خب منطقی وقتی کل این پوشه /mnt پاک کنید این ها هم پاک بشن! منم برام پیش اومده اشتباهی در پوشه ای پارتیشنم سوار کرده باشم و دقت نکرده باشم و پاکش کرده باشم با دستور lsblk میتونی پارتیشن هات ببینی کجا سوار شدن و اینجا هم مشخصه که در /mnt هست و منطقی با پاک کردن کامل این پوشه بقیه اطلاعاتت هم پاک بشه
-
مال من که اینجوری هست.
یه سری دایرکتوری توی /mnt/ هست. احتمالا موقع پاک کردن محتویات /mnt/، پارتیشنهای شما اونجا سوار بوده و محتویات اونها هم پاک شده. با دستور mountpoint میتونید بفهمید که آیا چیزی روی یه دایرکتوری سوار شده یا نه. مثلا برای اینکه ببینید چیزی روی /mnt/sda7/ سوار شده، اینجوری از دستور استفاده کنید.
mountpoint /mnt/sda7