booty - ابزاری برای ایجاد تصاویر بوت و درایوها

برنامه ارائه شده است غنیمت جنگی، که به شما امکان می دهد تصاویر initrd قابل بوت، فایل های ISO یا درایوهای حاوی هر توزیع گنو/لینوکس را با یک دستور ایجاد کنید. کد در پوسته POSIX و نوشته شده است توزیع شده توسط تحت مجوز GPLv3.

همه توزیع‌هایی که با استفاده از Booty بوت می‌شوند، SHMFS (tmpfs) یا SquashFS + Overlay FS را اجرا می‌کنند که انتخاب کاربر است. توزیع یک بار ایجاد می شود و در طول فرآیند بوت، پارامترهایی انتخاب می شوند که به شما امکان می دهد از tmpfs خالص برای ریشه یا ترکیبی از Overlay FS + SquashFS با ضبط تغییرات به tmpfs استفاده کنید. امکان کپی کردن کیت توزیع قابل دانلود در حافظه رم وجود دارد که به شما امکان می دهد پس از دانلود و کپی کردن کیت توزیع در حافظه، درایو USB را جدا کنید.

اول از همه، Booty تصویر initrd خود را تولید می کند که می تواند از ابزارهای بومی سیستم فعلی یا busybox استفاده کند. این امکان وجود دارد که کل کیت توزیع نصب شده در دایرکتوری (chroot) را در initramfs قرار دهید. این می تواند زمانی مفید باشد که نیاز به ارتقاء یک سیستم با استفاده از kexec داشته باشید: به سادگی initrd را با یک هسته جدید و یک سیستم جدید در داخل initrd بارگذاری مجدد کنید.

ایجاد یک تصویر initrd مخصوص Booty:

mkdir initramfs/
mkinitramfs initramfs/ --خروجی initrd

ایجاد یک تصویر initrd شامل توزیع از دایرکتوری “gentoo/”:

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --cpio --output initrd

پس از آن این تصویر initrd کاملاً برای بارگذاری آماده است، مثلاً از طریق PXE یا از طریق kexec.

در مرحله بعد، Booty تصاویر را با سیستمی که به عنوان "همپوشانی" مشخص شده است تولید می کند. به عنوان مثال، می توانید یک Gentoo شرطی را در یک پوشه جداگانه نصب کنید (بایگانی را باز کنید)، پس از آن یک آرشیو cpio یا تصویر SquashFS با این سیستم با استفاده از Booty تولید می شود. همچنین می توانید توزیع را در یک فهرست جداگانه پیکربندی کنید و تنظیمات شخصی خود را در فهرست دیگری کپی کنید. همه این "لایه ها" به صورت متوالی بر روی یکدیگر بارگذاری می شوند و یک سیستم کاری واحد ایجاد می کنند.

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --تنظیمات overlay/ --overlay document/ --squashfs --output initrd

در نهایت Booty به شما این امکان را می دهد که با نصب سیستم فوق از روی تصاویر، تصاویر ISO قابل بوت و درایوهای USB، HDD، SSD و سایر درایوها ایجاد کنید. غنیمت جنگی از ایجاد سیستم های بوت BIOS و UEFI پشتیبانی می کند. بوت لودرهای GRUB2 و SYSLINUX پشتیبانی می شوند. بوت لودرها را می توان با هم ترکیب کرد، برای مثال از SYSLINUX برای بوت شدن در بایوس و از GRUB2 برای UEFI استفاده کرد. برای ایجاد تصاویر ISO، برای انتخاب به بسته cdrkit (genisoimage) یا xorriso (xorrisofs) نیز نیاز دارید.

تنها اقدام اضافی مورد نیاز این است که هسته (vmlinuz) را از قبل برای بوت آماده کنید. نویسنده (Spoofing) استفاده از "make defconfig" را توصیه می کند. قبل از ایجاد تصویر، باید یک دایرکتوری را با قرار دادن هسته vmlinuz و initrd "خالی" آماده شده قبلی که در مثال اول ایجاد شده بود آماده کنید.

mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd

با این کار آماده سازی کامل شد، اکنون می توانیم تصاویر ISO را از این فهرست ایجاد کنیم.

دستور زیر یک تصویر ISO ایجاد می کند، نه یک تصویر قابل بوت، فقط یک ISO:

mkdir iso/
mkbootisofs iso/ --output archive.iso

برای ایجاد یک تصویر بوت، باید گزینه «--legacy-boot» را برای BIOS و «--efi» را برای UEFI مشخص کنید؛ گزینه‌ها یا grub2 یا syslinux را به عنوان پارامتر می‌گیرند؛ همچنین می‌توانید تنها یک گزینه را تعیین کنید ( برای مثال، پشتیبانی بوت UEFI مورد نیاز نیست، ممکن است مشخص نباشد).

mkbootisofs iso/ --legacy-boot syslinux --output boot-biosonly.iso

mkbootisofs iso/ --legacy-boot syslinux --efi grub2 --output boot-bios-uefi.iso

mkbootisofs iso/ --efi grub2 --خروجی boot-uefionly.iso

و همانطور که قبلاً تصاویر با سیستم در initrd قرار داده شد ، می توانید آنها را در ISO قرار دهید.

mkbootisofs iso/ --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --output gentoo.iso

پس از این دستور، یک تصویر قابل بوت BIOS/UEFI ISO تولید می‌شود که جنتو را با استفاده از Overlay FS در تصویر SquashFS بارگذاری می‌کند و با استفاده از tmpfs برای ذخیره داده‌ها. هسته باید با پشتیبانی Overlay FS با SquashFS ساخته شود. با این حال، اگر به دلایلی این مورد نیاز نیست، می‌توانید به‌جای «squashfs برای بسته‌بندی gentoo/» به‌عنوان بایگانی cpio از «—cpio» استفاده کنید، در این صورت آرشیو به‌طور مستقیم در tmpfs در هنگام بوت باز می‌شود. این است که برای باز کردن سیستم tmpfs رم کافی داشت.

واقعیت جالب: اگر یک تصویر ISO ایجاد شده با استفاده از گزینه "-efi" روی یک درایو فلش FAT32 با کپی کردن فایل ها (cp -r) باز شود، درایو فلش در حالت UEFI بدون هیچ گونه آماده سازی اولیه، به لطف ویژگی های خاص، بوت می شود. دانلود کننده های UEFI.

علاوه بر ISOهای قابل بوت، هر درایو قابل بوتی را می توان با پارامترهای مشابه: USB، HDD، SSD و غیره ایجاد کرد و این درایو همچنان می تواند برای هدف مورد نظر خود استفاده شود. برای انجام این کار، باید مثلاً یک دستگاه USB را سوار کنید و mkbootisofs را روی آن اجرا کنید. فقط یک گزینه "-bootable" اضافه کنید تا درایوی که دایرکتوری مشخص شده در آن قرار دارد قابل بوت شود.

mount /dev/sdb1 /mnt
mkbootisofs /mnt --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --bootable

پس از آن، دستگاه USB با پوشش gentoo/ قابل بوت می شود (فراموش نکنید فایل های /boot/vmlinuz و /boot/initrd را در دستگاه کپی کنید).

اگر به دلایلی درایو در /mnt نصب نشده باشد و معلوم شود که /mnt در دستگاه اصلی /dev/sda قرار دارد، بوت لودر به /dev/sda بازنویسی می شود. هنگام تعیین گزینه --bootable باید مراقب باشید.

در طول فرآیند بوت، Booty از تعدادی گزینه پشتیبانی می کند که می توانند به بوت لودر، grub.cfg یا syslinux.cfg ارسال شوند. به‌طور پیش‌فرض، بدون هیچ گزینه‌ای، همه همپوشانی‌ها بارگیری و در tmpfs باز می‌شوند (گزینه پیش‌فرض ooty.use-shmfs). برای استفاده از Overlay FS باید از گزینه booty.use-overlayfs استفاده شود. گزینه booty.copy-to-ram ابتدا همپوشانی ها را در tmpfs کپی می کند و پس از آن فقط آنها را به هم متصل کرده و بارگذاری می کند. پس از کپی کردن، دستگاه USB (یا سایر دستگاه های ذخیره سازی) را می توان حذف کرد.

منبع: opennet.ru

اضافه کردن نظر