
GRUB یا GRand Unified Bootloader، در سیستم عامل لینوکس، یک بوت لودر میباشد. GRUB نقش راهاندازی سیستم عامل را پس از روشن شدن سیستم، بر عهده دارد. بدون بوت لودر، نمیتوان سیستم عامل را، بارگذاری نمود. bootloader، هستهی سیستم عامل را، در حافظهی اصلی بارگذاری کرده و مدیریت سیستم را، به آن واگذار مینماید. بوت لودرهای مختلفی از قبیل GRUB و LILO در لینوکس وجود دارند. بوت لودر GRUB دارای دو ورژن میباشد: GRUB 1 که به آن GRUB Legacy نیز میگویند و GRUB 2.
گراب، با سیستم عاملهای لینوکس ، BSD، ویندوز و DOS ، به خوبی کار میکند. GRUB از دیوایسهای مختلفی از قبیل هارددیسک CD-Rom فلش و دیوایسهای شبکه قابل بوت شدن میباشد و قابلیت بارگذاری کرنل سیستم را، حتی از روی شبکه، دارا میباشد. در ادامه، بیشتر در بارهی بوتلودر GRUB در لینوکس، توضیح خواهیم داد.
ویژگیهای بوت لودر GRUB در لینوکس
بوت لودر GRUB، پراستفادهترین بوتلودر میباشد، که در بیشتر توزیع های لینوکس به طور پیشفرض نصب گردیده است. GRUB از قابلیت بوت از چند کرنل، برای یک سیستم عامل پشتیبانی میکند. بهدلیل اینکه، ممکن است، بعضی از برنامهها با ورژن خاصی از کرنل درست کار نکنند، شما میتوانید در موقع بوت سیستم عامل، با ورژن کرنل مورد نیاز، سیستم را بوت نمایید. در گراب میتوانیم چندین سیستم عامل لینوکس یا ویندوز را در پارتیشنهای مختلف نصب کرده و موقع راهاندازی سیستم، یکی از آنها را انتخاب نماییم. ویژگیهای این بوت لودر از قرار زیر میباشد:
- گراب دارای انعطافپذیری بالا است و قابلیت پیکربندی پویا را دارد. یعنی شما میتوانید تغییرات موردنظرتان را، در موقع بوت شدن سیستم اعمال نمایید. مثلا میتوانید کرنل جدید و یا پارتیشن جدید را، برای بوت شدن انتخاب نمایید.
- دارای قابلیت بوت چندگانه است.
- با اغلب سیستم عاملهای سازگار با یونیکس و ورژنهای مختلف ویندوز، سازگار است.
نصب GRUB در لینوکس
برای نصب گراب به سادگی دستور grub-install را وارد میکنیم.
| فایلهای GRUB را در فولدر boot/grub/ پارتیشن جاری کپی کرده و bootloader را در اولین هارد ایجاد میکند. | grub-install /dev/sda |
| فایلهای GRUB را در فولدر boot/grub/ پارتیشن جاری کپی کرده و bootloader را در اولین پارتیشن اولین هارد ایجاد میکند. | grub-install /dev/sda1 |
| فایلهای GRUB را در فولدر boot/grub/ پارتیشن جاری کپی کرده و bootloader را در اولین پارتیشن سومین هارد ایجاد میکند. | grub-install /dev/sda3 |
GRUB Legacy
GRUB Legacy ، نسخهی قدیمیتر GRUB میباشد که در حال حاضر دیگر ورژن جدیدی از آن منتشر نمیشود.
مراحل بوت شدن سیستم عامل در GRUB Legacy
پس از روشن شدن کامپیوتر، در ابتدا کنترل سیستم به BIOS انتقال مییابد. BIOS در ابتدا سختافزار را از نظر عملکرد، چک نموده و پس از اطمینان از سختافزار در مرحلهی بعد، سکتور اول از دستگاه ذخیرهساز (مثل هارد یا فلش) که به عنوان دیوایس فعال در نظر گرفته شده است را، در حافظهی اصلی قرار میدهد. GRUB در 446 بایت از MBR، کد مربوط به خود را جایگزین کد پیشفرض MBR مینماید. GRUB Legacy از روش پارتیشنبندی GPT پشتیبانی نمیکند.
مرحله یا Stage اول
در اولین مرحلهي بوت سختافزار، توسط BIOS، اولین سکتور از دیسک فعال، به نام MBR، که مقدار آن 512 بایت میباشد، را را در حافظهی اصلی قرار داده و آن را اجرا مینماید. 512 بایت اندازهی حافظهی کافی برای کدهای گراب نمیباشد. در این مرحله برای بارگذاری کامل گراب، مرحلهی 1.5 (در صورت نیاز) یا مرحلهی 2 را در حافظه بارگذاری شده و اجرا میگردد.
مرحلهی 1.5
این مرحله که توسط مرحلهی اول بارگذاری میشود، حالت واسطی بین مرحلهی اول و مرحلهی دوم میباشد. در صورتی که فایلهای مرحلهی دوم به طور عادی در فایل سیستم ذخیره شده باشند، بدلیل عدم پشتیبانی MBR از فایل سیستم، نیاز به استفاده از این مرحله میباشد. کدهای شناسایی فایل سیستم، در فضای خالی بین سکتور MBR و شروع سکتور مربوط به پارتیشن یعنی سکتور 63 (حدودا سی کیلوبایت)، ذخیره میشود.
در صورتیکه موقع نصب گراب، مکان ذخیرهسازی فایلهای stage 2، ثابت بوده و مستقل از فایل سیستم باشد، نیازی به این مرحله نمیباشد. اما دیگر نمیتوانید مکان این فایل ها را تغییر دهید.
مرحلهی 2
در این مرحله بوت لودر GRUB، در حافظهی اصلی قرار گرفته و اجرا میشود. در این حالت منوی بوت لودر نمایش داده میشود.
مرحلهی 3
در این مرحله کرنل مورد نظر در حافظهی اصلی لود شده و هدایت سیستم به آن سپرده میشود.
فایل کانفیگ در GRUB legacy در مسیر boot/grub/menu.lst/ قرار دارد. در بعضی از توزیعهای لینوکس مثل ردهت و فدورا این مسیر در boot/grub/grub.conf/ قرار دارد.
نامگذاری پارتیشنها بهجای sda و sdb از شمارهگذاری 0 شروع میشود. مثلا dev/sda/ به hd0 و به همین صورت به hd1 و غیره تبدیل می گردد. پارتیشنهای هر دیسک هم به صورت شمارهگذاری نمایش میدهیم. مثلا (hd1,2) به معنی هاردیسک دوم، پارتیشن سوم میباشد.
پارتیشن root در GRUB legacy میتواند از پارتیشن root سیستم عامل متفاوت باشد. اما به طور معمول چون فایل کانفیگ menu.lst در همان پارتیشن root سیستم عامل وجود دارد پارتیشنهای root هردو یکسان میشوند.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
default=0 timeout=5 splashimage=(hd0,5)/boot/grub/splash.xpm.gz title CentOS 5.6 i686 root (hd0,5) kernel /boot/vmlinuz-2.6.18-238.19.1.el5.centos.plusPAE ro root=/dev/sda6 rhgb noquiet initrd /boot/initrd-2.6.18-238.19.1.el5.centos.plusPAE.img title Arch Linux Stock Kernel root (hd0,0) kernel /vmlinuz-linux root=/dev/sda2 ro initrd /initramfs-linux.img title Windows rootnoverify (hd0,3) makeactive chainloader +1 |
در خط اول کرنل یا سیستم عامل پیشفرض را انتخاب میکنیم. default = 0 به معنی انتخاب سیستم عامل پیشفرض است . شمارهی اختصاص داده شده به ترتیب سیستمعاملهای موجود در منوی گراب است که از شمارهی صفر شروع میشود. در مثال بالا سیستم عامل پیشفرض، CentOS به عنوان اولین سیستم عامل در منو است، که در صورت عدم انتخاب دیگر سیستم عاملها به طور پیش فرض CentOS، بوت خواهد شد.
خط دوم میزان زمان انتظار تا boot شدن پیش فرض را نمایش میدهد. در این مثال این عد 5 ثانیه میباشد. در صورتی که کاربر تا این مدت اتخاب دیگری نداشته باشد، سیستم از سیستم عامل پیشفرض، بوت خواهد شد.
خط سوم، مسیر فایل تصویر پیشزمینه را تعیین میکند. این تصویر موقع نمایش منو، در پیشزمینه نمایش داده میشود.
هر title سرنام انتخابی برای کرنل و یا سیستم عاملی که در پارتیشنهای مختلف نصب کردهایم میباشد. در این مثال سه سیستم عامل CentOS و ARCH و سیستم عامل ویندوز در پارتیشنهای مختلف قرار دارند.
در هر بخش در خطهای 6, 11، root مسیر را به GRUB برای بارگذاری سیستم عامل موردنظر مشخص مینماید. در خط 16، rootnoverify شبیه دستور root عمل مینماید، یعنی GRUB سیستم عامل را نمیشناسد ولی به محلی که سیستم عامل نصب شده است، اشاره مینماید.
kernel، در مرحلهی بعد، image کرنل مورد نظر را، در مسیر تعیین شده، بارگذاری میکند. این خط معمولا در به صورت
…kernel /boot/vmlinuz شروع میشود.
initrd در مرحلهی بعد قبل از بالا آمدن root اصلی سیستم، مراحل آماده سازی و سازگاری با سختافزارهای مورد نیاز را فراهم میکند.
chainloader، زمانی استفاده میشود که سیستم عامل بهطور مستقیم قابل بوت شدن نمیباشد. در اینجا، GRUB روند کنترل بوت شدن را به خود سیستم عامل (مثلا ویندوز) واگذار میکند.
GRUB 2
GRUB 2 به عنوان جانشین برای GRUB Legacy معرفی شده است. تفاوتهای GRUB 2 با GRUB Legacy را میتوان به شرح زیر بیان نمود:
- فایلهای تنظیمات آنها متفاوت است.
- GRUB 2 از فایل سیسستمهای بیشتری حمایت میکند.
- از storageهای LVM و Raid به طور مستقیم قابل بوت شدن است.
- قابلیت جستجوی کرنلها و سیستم عاملهای دیگر، مثل ویندوز را به طور خودکار دارا میباشد.
فایلهای کانفیگ GRUB 2
فایل اصلی کانفیگ در GRUB 2 در مسیر boot/grub/grub.cfg/ قرار دارد. این فایل جایگزین boot/grub/menu.lst/ در GRUB legacy شده است. اما این فایل را، مستقیما نباید ویرایش نمود. بلکه تنظیمات را، درفایل etc/default/grub/ و یا اسکریپتهای نوشته شده در مسیر etc/grub.d/ قرار دارد. در زیر اسکریپتهای موجود در دایرکتوری etc/grub.d/ نمایش داده شده است:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
kazemian@upgradeit:~$ ls -l /etc/grub.d/ total 132 -rwxr-xr-x 1 root root 10627 Apr 15 2020 00_header -rwxr-xr-x 1 root root 6258 Apr 15 2020 05_debian_theme -rwxr-xr-x 1 root root 17622 Aug 17 18:34 10_linux -rwxr-xr-x 1 root root 42359 Aug 17 18:34 10_linux_zfs -rwxr-xr-x 1 root root 12894 Apr 15 2020 20_linux_xen -rwxr-xr-x 1 root root 1992 Feb 14 2020 20_memtest86+ -rwxr-xr-x 1 root root 12059 Apr 15 2020 30_os-prober -rwxr-xr-x 1 root root 1424 Apr 15 2020 30_uefi-firmware -rwxr-xr-x 1 root root 214 Apr 15 2020 40_custom -rwxr-xr-x 1 root root 216 Apr 15 2020 41_custom -rw-r--r-- 1 root root 483 Apr 15 2020 README kazemian@upgradeit:~$ |
همانطور که مشاهده میکنید، نام فایلهای اسکریپت در etc/grub.d/ ، با شمارهگذاری شروع شدهاند. برای ایجاد فایل اصلی گراب یعنی boot/grub/grub.cfg/ این اسکریپتها به ترتیب شماره اجرا خواهند شد. درصورتی که میخواهید اسکریپت مربوط به بوت سیستم عامل جدید را اضافه نمایید شمارهی اسکریپتی که به آن اختصاص میدهید، ترتیب منوی بوت گراب را مشخص خواهد ساخت. در زیر فایل 40_custom که یک فایل برای ایجاد بوت جدید میباشد نمایش میدهیم:
|
1 2 3 4 5 6 7 |
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. |
همچنین در زیر یک فایل پیکربندی در مسیر etc/default/grub/ نمایش داده شده است:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=0 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="" # Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entries #GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1" |
پس از تنظیمات و ایجاد اسکریپتهای مورد نیاز، با دستور زیر فایل grub.cfg را بروزرسانی مینماییم:
|
1 2 3 |
grub-mkconfig -o /boot/grub/grub.cfg |
دستور update-grub را به جای عبارت فوق و به صورت کوتاه شده میتوانیم استفاده نماییم.
یک فایل grub.cfg نمونه
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# Config for GNU GRand Unified Bootloader (GRUB) # /boot/grub/grub.cfg # Timeout for menu set timeout=60 # Default boot entry set default=0 # Menu Colours set menu_color_normal=white/black set menu_color_highlight=white/green # Path to the partition holding ISO images (using UUID) #set imgdevpath="/dev/disk/by-uuid/UUID_value" # ... or... # Path to the partition holding ISO images (using device labels) #set imgdevpath="/dev/disk/by-label/label_value" set imgdevpath="/dev/disk/by-label/MULTIBOOT" # 'Close Encounters' (comment out to silence the tune) play 480 900 2 1000 2 800 2 400 2 600 3 # CPU information (Thanks Giles <http://gilesorr.com/>!) function cpu_props { echo "GRUB's ability to analyse processors is limited, we can ask:" echo " * is it 64/32bit?" echo " * does it support Physical Address Extension (PAE)?" if cpuid -p; then pae_assessment="Yes" else pae_assessment="No" fi echo "" if cpuid -l; then echo "(O<" echo "(/)_ .: Processor: 64bit, PAE: $pae_assessment" else echo "(O<" echo "(/)_ .: Processor: 32bit, PAE: $pae_assessment" fi } menuentry "Tell Me About This Machine's Processor" { cpu_props echo $"Press escape to return to the main menu" sleep --interruptible 9999 } # Boot ISOs # To use these menu entries will require separately downloading the # matching ISO files. submenu "Debian ->" { set menu_color_normal=white/black set menu_color_highlight=white/green # Debian 64/32bit Netinst+firmware images # # This was a bit tricky to get working. Selecting firmware-VERSION-netinst.iso # from the GRUB menu would get things started but the install would fail at the # stage where the ISO needs to be located and mounted. Debian's netinst images # do not include the iso-scan package , which is required for searching and # loading ISO images. # # For a work-around ... # check out http://www.circuidipity.com/multi-boot-usb.html#debian-netinst menuentry "Debian 9 Stretch - 64bit Netinst+firmware" { set iso="/boot/iso/firmware-9.0.0-amd64-netinst.iso" loopback loop $iso linux (loop)/install.amd/vmlinuz iso-scan/ask_second_pass=true iso-scan/filename=$iso priority=low vga=normal quiet initrd /boot/debian/install.amd/initrd.gz } menuentry "Debian 9 Stretch - 32bit Netinst+firmware" { set iso="/boot/iso/firmware-9.0.0-i386-netinst.iso" loopback loop $iso linux (loop)/install.386/vmlinuz iso-scan/ask_second_pass=true iso-scan/filename=$iso priority=low vga=normal quiet initrd /boot/debian/install.386/initrd.gz } #menuentry "BunsenLabs Deuterium (Jessie) - 64bit Installer" { # set iso="/boot/iso/bl-Deuterium-amd64_20170429.iso" # loopback loop $iso # linux (loop)/install/vmlinuz iso-scan/ask_second_pass=true iso-scan/filename=$iso priority=low vga=normal quiet # initrd /boot/debian/install.amd/initrd.gz # } #menuentry "BunsenLabs Deuterium - 32bit NonPAE Installer" { # set iso="/boot/iso/bl-Deuterium-i386+NonPAE_20170429.iso" # loopback loop $iso # linux (loop)/install/vmlinuz iso-scan/ask_second_pass=true iso-scan/filename=$iso priority=low vga=normal quiet # initrd /boot/debian/install.386/initrd.gz # } } submenu "SystemRescueCd ->" { set menu_color_normal=white/black set menu_color_highlight=white/green menuentry "SystemRescueCd 64bit" { set iso="/boot/iso/systemrescuecd-x86-4.9.6.iso" loopback loop $iso linux (loop)/isolinux/rescue64 isoloop=$iso setkmap=us initrd (loop)/isolinux/initram.igz } menuentry "SystemRescueCd 32bit" { set iso="/boot/iso/systemrescuecd-x86-4.9.6.iso" loopback loop $iso linux (loop)/isolinux/rescue32 isoloop=$iso setkmap=us initrd (loop)/isolinux/initram.igz } } submenu "Ubuntu ->" { set menu_color_normal=white/black set menu_color_highlight=white/green menuentry "Ubuntu 16.04 LTS - 64bit Mini-Installer" { set iso="/boot/iso/ubuntu-1604-amd64-mini.iso" loopback loop $iso linux (loop)/linux boot=casper iso-scan/filename=$iso noprompt noeject initrd (loop)/initrd.gz } menuentry "Ubuntu 16.04 LTS - 32bit Mini-Installer" { set iso="/boot/iso/ubuntu-1604-i386-mini.iso" loopback loop $iso linux (loop)/linux boot=casper iso-scan/filename=$iso noprompt noeject initrd (loop)/initrd.gz } menuentry "Ubuntu 16.04 LTS - 32bit Mini-Installer ('forcepae' for Pentium M)" { set iso="/boot/iso/ubuntu-1604-i386-mini.iso" loopback loop $iso linux (loop)/linux boot=casper iso-scan/filename=$iso noprompt noeject forcepae initrd (loop)/initrd.gz } #menuentry "Lubuntu 16.04 LTS - 64bit Live Mode + Desktop Installer" { # set iso="/boot/iso/lubuntu-16.04.2-desktop-amd64.iso" # loopback loop $iso # linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$iso noprompt noeject # initrd (loop)/casper/initrd.lz # } } # Hmm ... on my C720 Chromebook this memory tool would freeze on startup and # the machine required a hard reset. Reported OK on other machines. menuentry "Memory test (memtest86+)" --hotkey=M { linux16 /boot/iso/memtest86+-5.01.bin } menuentry "Reboot" { reboot } |
خط فرمان در GRUB
در موقع بوت شدن سیستم و بعد از لود شدن grub در حافظهی اصلی، منوی grub ظاهر میگردد. در صورتی که timeoute را برابر صفر قرار داده باشیم منوی گراب را، موقع بوت شدن سیستم نخواهیم دید. اگر timeoute بزرگتر از صفر باشد، به همان اندازه زمان منوی گراب منتظر انتخاب کاربر خواهد ماند و سپس در صورت عدم انتخاب، به صورت پیشفرض سیستم راهاندازی میشود. در منوی grub در صورتی که کاراکتر c را وارد نماییم، وارد شل یا خطفرمان grub میشویم. محیط شل گراب، شبیه محیط شل در سیستم عامل لینوکس میباشد اما فرمانهای کمتری دارد. بعضی از فرامین در شل گراب به فرمانهای محیط شل لینوکس شبیه هستند.

با دستور help میتوانید، لیست دستورهای موجود در grub را مشاهده نمایید. و برای هر دستور میتوانید با استفاده از دستور help command راهنمای آن دستور را مشاهده نمایید.

با دستور ls میتوانید، لیست دیسکها و پارتیشنهای موجود را مشاهده نمایید:

همچنین میتوانیم در هر پارتیشنی که سیستم عامل مورد نظر نصب گردیده است با دستور ls ورژنهای مختلف کرنل را مشاهده و کرنل مورد نظر را با روشی که در ادامه شرح میدهیم، نصب نماییم.

همچنین میتوانیم با انتخاب پارتیشنی که در آن سیستم عامل نصب شده است، نسبت به بارگذاری کرنل مورد نظر در محیط خطفرمان اقدام نماییم.
|
1 2 3 4 5 6 |
grub> set root=(hd0,0) grub> linux /vmlinuz-5.8.0-33-generic root=/dev/sda1 grub> initrd /initrd.img-5.8.0-33-generic grub> boot |

کارتون حرف نداره
خیلی ازم سوال میشه که به عنوان یک صفر کیلومتر
برای یاد گیری لینوکس
باید چه نوع و چه نسخه ایی رو نصب کنیم
من در حد راهنمایی کردنشون نیستم و همه سایتها هم
چنان کلاف سردرگمی درست میکنند که طرف حق داره
پشیمون بشه..خواهش میکنم برای من پاسخ شایسته ایی که حتما از طرف شما بهترین خواهد بود رو ارسال کنید..دنیا دنیا سپاس
خیلی خود را درگیر انتخاب توزیع لینوکس ننمایید. برای شروع میتوانید ۱۰ توزیع پرطرفدار را در اینترنت جستجو نموده و امتحان نمایید. هر کدام را که با ان راحتتر بودید را انتخاب نمایید. البته توزیعهایی مثل اوبونتو، فدورا، دبیان دارای انجمنها و سایتهای مختلف و زیادی برای رفع اشکلات هستند و بخوبی میتوانند شما را راهنمایی کنند. اوبونتو با ظاهری زیبا و مخزن (Repository) خوب، به راحتی میتواند انتظارات شما را براورده نماید. اوبونتو در دو نسخهی دسکتاپ و سرور عرضه میگردد. که برای شروع نسخهی دسکتاپ آن را نصب نمایید.
برای توضیحات بیشتر به پست منظور از توزیع های لینوکس چیست و چه توزیعی را انتخاب کنیم ؟ مراجعه فرمایید.
سلام…من میخوام کنار ویندوز 11 کالی لینوکس 2024 رو نصب کنم..دانلودش کردم و فلش رو با تنظیمات مختلف بوتیبل کردم ولی وقتی بوت میکنم وارد Grub میشه و دستور boot رو میزنم مینویسه you need load kernel first و نمیدونم باید چطور لودش کنم..fastboot , source boot رو هم غیر فعال کردم..و بارها فلش رو فرمت کردم و با تنظیمات مختلف بوتیبل کردم در هیچ حالتی بالا نمیاره فقط روی این حالت بالا میاره که این هم میگه you need load kernel first..هر کاری کردم درست نشد.. لطفا راهنمایی کنید ممنون میشم