بوت چندگانه روی فلش بوسیله‌ی گراب۲

سلام.

توی این مطلب می‌خوام توضیح بدم که چجوری به کمک گراب بتونیم از روی فلشمون چند: OS، Live CD ، Rescue disk و … رو بوت کنیم.

این داستان از اینجا شروع شد که سر یه داستانی یک فلش 8 گیگ جمع و جور به دستم رسید. من تقریباً اون فلش رو لازم نداشتم (چون ضبط ماشین کمی باهاش مشکل داشت) به همین خاطر تصمیم گرفتم تا یه کاری کنم که هم روش ویندوز داشته باشم و هم اوبونتو لایو تا اینجوری هم هر وقت برای سیستم خودم که اوبونتو استفاده می‌کنم و برای اقوام که ویندوز استفاده می‌کنن اتفاقی افتاد یه چیز حاضر آماده داشته باشم. همچنین هر وقت که ایزوی یک توزیع جدید اومد بتونم اون رو بدون دردسر فرمت کردن و این داستان‌ها امتحان کنم.

خوب بریم ببینیم مراحل کار چیه:
۱. یک پارتیشن ۴ گیگ روی فلش درست کردم و ویندوز رو ریختم توش (یعنی در این مرحله می‌شه باهاش سیستم رو بوت کرد و ویندوز نصب کرد). شما میتونید این کار رو با هر نرم‌افزاری که دوست دارید و یا به کمک خط فرمان خود ویندوز انجام بدید فقط اون نرم‌افزار نباید بوت منیجری غیر از بوت منیجر خود ویندوز روی فلش نصب کنه (حداقل تا الآن که دارم این رو می‌نویسم چنین تجربه‌ای دارم.)

چون هدفم اینه که توزیع‌های مختلف رو امتحان کنم از قابلیت iso boot در گراب۲ استفاده می کنم:

۲. با بقیه فلش یک پارتیشن دیگه درست کردم.
۳. گراب رو روی فلش نصب کردم:

sudo -i

# grub-install --no-floppy --force --root-directory=/media/babak/sdb2 /dev/sdb

دقت کنید که گراب رو روی sdb یعنی mbr ریختم، ولی پوشه‌ی روت رو روی sdb2 یعنی پارتیشنی که ایزوها رو روش می‌خوام بریزم آدرس دادم.
۴. یک پوشه به اسم isos درست کردم و ایزوی اوبونتو (و یا هر توزیعی که بوتمنیجرش گراب۲ باشه) رو ریختم توش.
۵. یک فایل به اسم grub.cfg توی آدرس زیر روی sdb2 ساختم با محتویات زیر:

/boot/grub

set timeout=10
set default=0

menuentry "Ubuntu 14.0.4.3" {
loopback loop /isos/ubuntu-14.04.3-desktop-amd64.iso
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/isos/ubuntu-14.04.3-desktop-amd64.iso splash --
initrd (loop)/casper/initrd.lz
}

menuentry "Windows 7 AIO setup" {
insmod usbms
insmod part_msdos
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root 04EE707FEE706B36
chainloader +1
}

و حالا من یک فلش دارم که هم می‌تونم باهاش ویندوز نصب کنم و هم اوبونتو.

حالا چندتا نکته توش هست:

۱. اینکه این نوشته‌ها یعنی چی؟ شما جواب کامل و با جزئیاتش رو می‌تونید توی راهنمای گراب۲   بخونید. ولی این چند توضیح مختصر رو از من داشته باشید:

الف) شاید لازم باشه توی خط دوم menuentry اوبونتو (و یا هر توزیع با بوت منیجر گراب۲ دیگه‌ای) یک سری عبارت یا کلمه بسته به ساختار سخت‌افزاری سیستم و یا توزیع مورد نظرتون وارد کنید. این کار فقط با جستجو در دنیای مجازی ممکنه(تا الآن که من چنین تجربه‌ای داشتم.). این داستان برای modهای مختلفی که برای بالا آوردن ویندوز نیاز دارید هم صادقه

ب) خطی که با search شروع می‌شه تعیین کننده‌ی درایو root برای بوت منیجر هست و این خط با هر فرمان دیگه‌ای که این کار رو انجام بده قابل تعوض هست ولی بهتره که اون فرمان این کار رو به کمک uuid انجام بده چون مقدار ثابتی در هر سیستم داره.

۲. این کار با ایزو‌های توزیع‌های مختلف که از بوتمنیجر‌های دیگه‌ای استفاده می کنن، کمی متفاوت هست. طبق جستجویی که من انجام دادم به احتمال ٪ ۹۰ (برای اینکه فلش یا اون درایو مربوطه روی فلش رو فرمت نکنین و …) باید ایزوی اون‌ها رو توی یک آدرس توی اون درایو اکسترکت کنیم تا از موقع انتقال بوتمنیجر از گراب۲ (که روی فلش نصب هست) به بوتمنیجر خود توزیع مشکلی پیش نیاد. همچنین modهای مختلف مورد نیاز هم باید با جستجو در دنیای مجازی بدست بیارید.(هر وقت برای بقیه امتحان کردم به شما هم خبر می‌دم.)

۳. به علت درگیری‌هام وقت نکردم( و تا عید هم نخواهم کرد!) تا امتحان کنم می‌شه اون حالت نصب اوبونتو که یه فضای بیشتری روی فلش اشغال می‌کنه ولی اجازه می‌ده که شما رو شن رم‌افزار نصب کنید و این داستان‌ها هم جواب می‌ده یا نه. اگه کسی امتحان کرده بگه، اگه نه که شاید توی عید امتحان کنم.