در مطلب قبلی گفتم که چطوری میتونیم بدون 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 هم میتونید این ویکی طولانی رو نگاه کنید.
حاصل سر و کله زدن های من با لینوکس