ایجاد تصاویر bootstrap v1.2


ایجاد تصاویر bootstrap v1.2

بعد از فقط یک ماه پس از توسعه آهسته، boobstrap v1.2 منتشر شد - مجموعه ای از ابزارها در پوسته POSIX برای ایجاد تصاویر بوت و درایوها.

Boobstrap به شما امکان می دهد فقط یک دستور را انجام دهید:

  • یک تصویر initramfs، از جمله هر توزیع گنو/لینوکس در آن ایجاد کنید.
  • تصاویر ISO قابل بوت را با هر توزیع گنو/لینوکس ایجاد کنید.
  • درایوهای USB، HDD، SSD قابل بوت را با هر توزیع گنو/لینوکس ایجاد کنید.

ویژگی این است که پس از بارگذاری گنو/لینوکس یا به طور کامل در tmpfs خالص کار می کند یا با استفاده از تصاویر Overlay FS و SquashFS، انتخاب شماست. شما هر توزیع گنو/لینوکس را در یک دایرکتوری نصب می‌کنید، تمام تنظیمات لازم را انجام می‌دهید (احتمالاً در یک دایرکتوری جداگانه)، پس از آن فقط با یک فرمان یک دستگاه بوت ایجاد می‌کنید، خواه یک تصویر ISO، USB، HDD، درایو SSD یا شما می توانید یک تصویر initrd با سیستم ایجاد کنید. سیستم همیشه در همان حالت خواهد بود و در صورت خرابی می توانید با فشار دادن یک دکمه Reset به حالت اولیه خود بازگردید. آیا می خواهید سیستم را به میزبان دیگری منتقل کنید یا یک سیستم از یک کانتینر موجود ایجاد کنید؟ Boobstrap این کار را انجام خواهد داد.

از جمله تغییرات کلیدی:

  • اضافه شدن پشتیبانی از بوت لودر syslinux، علاوه بر grub2 موجود. اکنون می توانید هنگام ایجاد یک دستگاه بوت یا تصویر ISO با گزینه های --legacy-boot syslinux و --efi grub2 به ترتیب از grub2، syslinux یا هر دو استفاده کنید، و همچنین می توانید انتخاب کنید که کدام حالت ها از ISO پشتیبانی می کند. تصویر
  • گزینه --bootable اضافه شد که هر دستگاه بلوکی را قابل بوت می کند. برای ایجاد تصاویر ISO باید از گزینه --iso-9660 استفاده شود.
  • افزودن گزینه های بوت هسته boobs.use-shmfs برای کپی کردن محتویات همه همپوشانی ها به tmpfs، boobs.use-overlayfs برای بوت شدن با استفاده از Overlay FS، boobs.search-rootfs برای انتخاب منبع با سیستم، boobs.copy-to-ram برای کپی کردن سیستم در حافظه و سپس خاموش کردن دستگاه.
  • تنها وابستگی لازم برای کار کردن boobstrap، cpio است. بقیه وابستگی ها اختیاری هستند: grub2، syslinux - برای ایجاد رسانه قابل بوت، cdrkit یا xorriso لازم است - برای ایجاد ISO، squashfs-tools برای ایجاد SquashFS، اما هیچ چیز مانع از استفاده شما از گزینه -cpio به جای - نمی شود. squashfs برای بسته بندی توزیع شما در یک آرشیو. busybox فقط در صورت نصب استفاده می شود، اما در غیر این صورت، تمام ابزارهای ضروری از سیستم شما کپی می شوند. بنابراین، boobstrap تقریباً در همه جا کار می کند.

به عنوان مثال، دستور زیر یک تصویر initrd شامل یک سیستم gentoo-chroot/ بسته بندی شده به عنوان یک تصویر SquashFS ایجاد می کند که پس از بارگیری خود initrd با موفقیت بوت می شود. یادآوری می کنم که برای استفاده از Overlay FS به همراه SquashFS باید گزینه boobs.use-overlayfs kernel را پاس کنید، در غیر این صورت سیستم به tmpfs باز می شود. تمام تنظیمات اضافی را می توان در یک دایرکتوری جداگانه انجام داد، به عنوان مثال gentoo-settings/

# mkdir initramfs/
# mkinitramfs initramfs/ --overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs > initrd

یک تصویر initrd با یک سیستم در داخل زمانی مناسب است که شما نیاز به استقرار سریع یک سیستم دارید، به عنوان مثال، از طریق PXE، یا روی یک سوئیچ سیستم بارگذاری شده به initrd با استفاده از دستور kexec -l /boot/vmlinuz-* —initrd=./initrd && kexec -e، خوب یا با قرار گرفتن در رابط ماشین مجازی QEMU (احتمالاً حتی Proxmox)، از یک منبع راه دور با استفاده از سه دستور IPXE بوت شود: هسته http://[...]/vmlinuz، initrd http://[ ...]/initrd، بوت. همانطور که می بینید، حتی یک initrd معمولی با سیستم شما در داخل، کاربردهای زیادی دارد.

برای ایجاد درایوهای قابل بوت و تصاویر، از دستور mkbootisofs استفاده می شود، برای مثال، این چیزی است که ایجاد یک تصویر ISO با گزینه -iso-9660 مانند استفاده از syslinux برای بوت شدن در حالت Legacy-Mode (BIOS) و grub2 برای بوت شدن در EFI- است. حالت (UEFI).

# mkdir initrd/
# mkinitramfs initrd/ > initrd
# mkdir isoimage/
# mkdir isoimage/boot
# cp /boot/vmlinuz-* isoimage/boot/vmlinuz
# cp initrd isoimage/boot/initrd
# mkbootisofs isoimage/ —iso-9660 —legacy-boot syslinux —efi grub2 —output boot.iso
--overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs

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

نصب بر روی هر درایو و بوت شدن بعدی از آن با استفاده از گزینه --bootable انجام می شود. شما باید خودتان پارتیشن‌هایی روی درایو ایجاد کنید (fdisk) و آنها را فرمت کنید (mkdosfs، mke2fs و غیره) و سپس دستگاه را در یک پوشه مونت کنید.

# mount /dev/sdb1 /mnt/drive/
# mkbootisofs /mnt/drive/ --bootable --legacy-boot grub2 --efi grub2
--overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs

احتیاط! گزینه --bootable تعیین می کند که دایرکتوری از کدام دستگاه بلوکی نصب شده است و بوت لودر را روی این دستگاه نصب می کند. اگر فراموش کردید که دستگاه را نصب کنید یا به اشتباه دایرکتوری را مشخص کنید که مثلاً در /dev/sda قرار دارد، بوت لودر در /dev/sda بر این اساس رونویسی می شود. با احتیاط از --bootable استفاده کنید.

نصب هر سیستم گنو/لینوکس فقط به یک دستور کاهش می یابد. نصب بر روی هر HDD، SSD و غیره قابل انجام است. شایان ذکر است که این هنوز هم سیستمی است که از Overlay FS / SquashFS اجرا می شود یا به انتخاب شما به طور کامل در tmpfs بارگیری می شود.

از جمله، boobstrap دارای تعدادی ویژگی جالب و قابلیت های اضافی است!

برای مثال، می‌توانید با دستور mkinitramfs `mktemp -d` > /boot/initrd یک initrd boobstrap اختصاصی ایجاد کنید و با این initrd در سیستم خود راه‌اندازی کنید و گزینه‌های هسته را مشخص کنید boobs.use-overlayfs boobs.search-rootfs=/dev /sda1. در این حالت، /dev/sda1، جایی که سیستم خانگی شما نصب شده است، به عنوان یک لایه Overlay FS فقط خواندنی متصل می شود و تمام تغییراتی که انجام می دهید فقط به طور موقت در tmpfs نوشته می شود. می توانید گزینه boobs.copy-to-ram را اضافه کنید و سپس کل سیستم شما در RAM کپی می شود و هارد دیسک را می توان از رایانه جدا کرد. زمانی که نیاز به شکستن چیزی دارید راحت است و می‌توانید تغییرات را به سادگی با راه‌اندازی مجدد بازگردانید. 🙂

اما اگر هنوز نیاز به ذخیره تمام تغییرات در سیستم دارید، چه؟ مثلا نرم افزار یا چیز دیگری نصب کردید. هنگامی که در tmpfs خالص کار می کنید، متأسفانه این غیرممکن است، اما اگر با استفاده از Overlay FS بوت شده باشید، تمام تغییراتی که در سیستم رخ می دهد در یک فهرست tmpfs جداگانه ذخیره می شوند: /mnt/overlayfs/rootfs-changes! سناریوی استفاده بسیار ساده است. شما از یک دستگاه USB وارد سیستم خود شده اید، کارهایی انجام داده اید، و می خواهید هر چیزی را که تغییر کرده است ذخیره کنید، سپس یک بایگانی cpio ایجاد کنید و آن را در اینجا، در همان دستگاه USB، قرار دهید.

# cd /mnt/overlayfs/rootfs-changes
# پیدا کردن . -print0 | cpio --create --format "newc" --null --quiet > /mnt/drive/rootfs-changes.cpio
# سی دی $OLDPWD

می‌توانید بایگانی را در کنار «لایه‌های دیگر SquashFS» و «cpio» قرار دهید، سپس با بارگیری بعدی، بایگانی فقط به عنوان یک لایه فقط خواندنی دیگر متصل می‌شود. برای ادامه کار با تغییرات، از گزینه آپلود boobs.rootfs-changes=/rootfs-changes.cpio استفاده کنید. گزینه boobs.rootfs-changes لایه مشخص شده را با دسترسی تغییر فعال می کند. لایه می تواند یک دستگاه بلوک باشد، برای مثال می توانید /dev/sdb1 را مشخص کنید، سپس تمام تغییرات ایجاد شده در Overlay FS به سادگی در /dev/sdb1 ذخیره می شود.

Boobstrap با وجود امکانات گسترده هنوز در مرحله توسعه است، تمام نظرات و پیشنهادات شما لحاظ می شود!

منبع: linux.org.ru

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