در مطلب قبلی گفتم که چطوری میتونیم بدون GRUB و با استفاده از systemd-boot لینوکسمون رو بوت کنیم. در این مطلب میخوام بگم چطوری و بدون هیچ بوت لودری، فقط با اضافه کردن یک آیتم به آیتم های EFI مادربرد، لینوکسمون رو بیاریم بالا!
در لپتاپ من، موقعی که سیستم روشن میشه، با زدن کلید esc یک منویی ظاهر میشه تا بوتلودر EFI مورد نظرم رو انتخاب کنم. میتونم انتخاب کنم بوت لودر ویندوز لود بشه یا بوتلودر لینوکس. که این بوت لودر لینوکس میتونه GRUB باشه یا systemd-boot که در مطلب قبلی گفتم یا هر دوتاش.
ولی حالا میخوایم فرض کنیم نه GRUB داشته باشیم و نه systemd-boot. صرفا یک آیتم که ایمیج های کرنل لینوکس رو میخونه و سیستم رو بوت میکنه. کافیه از efibootmgr استفاده کنیم. اگر نصب ندارید، نصبش کنید!
در یک مثال، من با efibootmgr یک آیتم اضافه میکنم:
sudo efibootmgr --create --disk /dev/sda --part 1 --label "Manjaro-Linux" --loader /vmlinuz-5.10-x86_64 --unicode 'root=UUID=81fb7cc5-77a1-4971-a686-a69757c47e11 rw splash initrd=\intel-ucode.img initrd=\initramfs-5.10-x86_64.img'
/dev/sda
هارد درایوی است که پارتیشن EFI من توش قرار داره و در مسیر /boot
ماونت شده. و با --part
که متغیر 1 رو بهش دادم، بهش میگم پارتیشن شماره 1. یعنی در نهایت میشه sda1
--label
که مشخصه. اسم آیتم رو به دلخواه خودمون تعیین میکنیم.
با متغیر --loader
تعیین میکنیم که اسم vmlinuz ما چی هست.
و در متغیر --unicode
هم مشخص میکنیم پارتیشن root ما کجاست و متغیرهای خط کرنل و محل ایمیج های کرنل کجا هستند.
مقدار UUID پارتیشن مورد نظر رو میتونید با دستور lsblk -f
پیدا کنید.
متغیرهای خط کرنل بستگی به نیاز خودتون میتونه متفاوت باشه. من اینجا فقط splash رو نوشتم که کوتاه تر بشه توی وبلاگ.
با تایپ دستور efibootmgr بدون هیچ متغیری، آیتم های بوت EFI مادربرد رو نشون میده. برای حذف هر کدوم از آیتم ها میتونید از مثال زیر استفاده کنید:
sudo efibootmgr --delete-bootnum --bootnum #
بجای # از شماره آیتمی استفاده کنید که میخواید حذفش کنید. مثلا اگر 0005 هست باید بنویسید 5 ولی مراقب باشید، چون راه بازگشتی وجود نداره. پس بدونید دارید چکار میکنید.
در مورد EFI هم میتونید این ویکی طولانی رو نگاه کنید.
GRUB (مخفف GNU GRand Unified Bootloader) یکی از بوت لودر هایی است که از زمان های بسیار دور در سیستم عاملهای لینوکس نصب میشد و به ما امکان این رو میداد که موقع روشن شدن سیستم بتونیم آیتم های مختلفی رو برای بوت شدن انتخاب کنیم. از جمله کرنل های مختلف، سیستم عامل های دیگه مثل ویندوز و ...
امروزه با پدیدار شدن systemd ما به خیلی از ابزارهای اضافی برای انجام دادن کارها نیازی نداریم. یکی از این موارد GRUB هست. در واقع systemd-boot میتونه کار یک بوت لودر رو در سیستم هایی که از EFI پشتیبانی میکنند به خوبی انجام بده، بدون نیاز به نصب گراب یا هر بوت لودر دیگه ای.
توی این مطلب میخوام در مورد اینکه بوت لودر رو چگونه از GRUB به systemd-boot تغییر دادم بنویسم. تا هم برای خودم آرشیو داشته باشم و هم اگر شما هم دوست داشتید انجام بدید.
توجه: من هیچ مسئولیتی در خراب شدن احتمالی بوت لودر شما ندارم. بنابراین منابع رو به دقت بخونید و سپس اقدام کنید. ضمنا وقتی کار رو شروع کردید نصفه و نیمه رها نکنید و سیستم رو restart نکنید تا زمانی که تمام مراحل رو تکمیل کرده باشید.
قبل از هر چیز، اینها منابعی هستند که من ازشون استفاده کردم: ویکی Arch، ویکی Gentoo، ویکی Manjaro، ویکی آرچ در مورد UEFI. من این کار رو در Manjaro انجام دادم و ممکنه در سایر توزیع ها متفاوت باشه.
یادمه اولین سالهایی که شروع به کار کردن با لینوکس کردم از بوت شدن سیستم عامل تعجب کرده بودم. یک سری خطوط که پشت سر هم تند و تند عبور میکردن تا دسکتاپ ظاهر بشه.بعد از یک مدت با اومدن توزیع هایی مثل اوبونتو، با چیزی به نام Plymouth
آشنا شدم که بوت انیمیشن یا اصطلاحا bootsplash
رو در حین بوت اجرا میکرد و ما دیگه اون لاگ ها رو نمیدیدیم. شاید بشه گفت الان همه ی لینوکس هایی که بوت انیمیشن دارن از Plymouth استفاده میکنن.اما از کرنل linux414 به بعد، bootsplash در خود کرنل گنجانده شده و ما فقط باید از اون استفاده کنیم! حداقل در Manjaro این جوریه. در مورد توزیع های دیگه اطلاعی ندارم.
البته هنوز فقط تعداد انگشت شماری براش تم درست کردن که اغلب شامل لوگو و یک انیمیشن اسپینر میشه.
در حال حاضر تم های زیر ساخته شدن:
تم vendor
لوگوی بوت دستگاه شما رو نشون میده. که ظاهرا در بعضی دستگاه ها نشون نمیده و به جاش تم bgrt
رو درست کردند.
برای اینکه این بوت انیمیشن رو در دستگاهتون داشته باشید، کافیه مراحل زیر رو طی کنید...
توجه: این مطلب قدیمی است و صرفا جهت آرشیو حفظ شده است. ممکن است امروزه برخی موارد یکسان نباشند.
وقتی در لینوکس از طریق GRUB
بوت میکنیم، حتی اگه چیزی مثل plymouth نصب باشه و هنگام بوت انیمیشن نشون بده، قبل از شروع بوت انیمیشن باز هم تعدادی پیام روی صفحه نشون داده میشه. برای اینکه جلوی نمایش این پیام ها رو هم بگیریم و حتی یک کاراکتر هم نشون داده نشه میتونیم کارهای زیر رو انجام بدیم
یکی از مراحل در ویکی آرچ توضیح داده شده.ادامه مطلب رو ببینید...
sudo gedit /etc/default/grub
/usr/share/images/grub.png
رو برای پس زمینه انتخاب کنیم. شما هر عکسی رو میتونید کپی کنید و آدرسش رو بدید. در فایل گراب خط زیر رو اضافه کنید:
GRUB_BACKGROUND=/usr/share/images/grub.png
و اگر این رو میبینید: GRUB_GFXMODE=640×480
پشتش یه # بذارید تا این طوری بشه: # GRUB_GFXMODE=640×480
فایل رو ذخیره کنید و خارج شید.
و حالا در ترمینال این دستور رو اجرا کنید:
sudo update-grub
حاصل سر و کله زدن های من با لینوکس