من می خواهم چارچوبی به نام boobstrap را که در پوسته POSIX نوشته شده است، برای ایجاد تصاویر بوت با توزیع های گنو/لینوکس به شما معرفی کنم. این فریم ورک به شما این امکان را می دهد که کل فرآیند را تنها در سه مرحله ساده طی کنید: از استقرار سیستم در یک chroot، ایجاد یک تصویر initramfs که شامل سیستم chroot شده و در نهایت یک تصویر ISO قابل بوت است. boobstrap به ترتیب شامل سه ابزار مفید mkbootstrap، mkinitramfs و mkbootisofs است.
mkbootstrap سیستم را در یک دایرکتوری جداگانه نصب می کند، پشتیبانی بومی برای CRUX وجود دارد، و در مورد Arch Linux / Manjaro و توزیع های مبتنی بر Debian، ابزارهای شخص ثالث pacstrap، basestrap و debootstrap باید به ترتیب استفاده شوند.
mkinitramfs یک تصویر initramfs ایجاد می کند، می توانید از سیستم نصب شده در فهرست به عنوان یک "پوشش" استفاده کنید، با استفاده از SquashFS فشرده شده است، یا پس از بوت شدن در سیستم، مستقیماً در tmpfs کار کنید. بنابراین برای مثال، دستور mkinitramfs `mktemp -d` --overlay "arch-chroot/" --overlay "/home" --squashfs-xz --output initrd یک فایل initrd ایجاد می کند که شامل دو همپوشانی با "arch- است. سیستم chroot/" و "/home" شما، با استفاده از SquashFS فشرده شده است، که سپس می توانید از طریق PXE در tmpfs بوت کنید یا یک تصویر ISO قابل بوت با این initrd ایجاد کنید.
mkbootisofs یک تصویر ISO قابل بوت BIOS/UEFI از دایرکتوری مشخص شده ایجاد می کند. کافیست /boot/vmlinuz و /boot/initrd را در دایرکتوری قرار دهید.
boobstrap از busybox استفاده نمیکند و برای ایجاد یک محیط initramfs کار، مجموعهای از برنامهها با استفاده از ldd کپی میشود که برای بوت شدن و سوئیچ به سیستم ضروری است. لیست برنامه هایی که باید کپی شوند، مانند هر چیز دیگری، می توانند از طریق فایل پیکربندی /etc/boobstrap/boobstrap.conf پیکربندی شوند. همچنین، میتوانید هر توزیع مینیمالیستی را در یک chroot/ جداگانه نصب کنید، که از آن میتوانید یک محیط initramfs کامل ایجاد کنید. به عنوان یک محیط مینیمالیستی، اما در عین حال تمام عیار، پیشنهاد می شود از الگوی "crux_gnulinux-embedded" استفاده شود که پس از xz 37 مگابایت را اشغال می کند. busybox، علاوه بر اندازه آن، 3-5 مگابایت در مقابل 30-50 مگابایت یک محیط کامل گنو/لینوکس، دیگر هیچ مزیتی ندارد، بنابراین استفاده از busybox در یک پروژه مناسب به نظر نمی رسد.
چگونه به سرعت عملکرد را بررسی کنیم و شروع کنیم؟ نصب و اجرا کنید.
# کلون گیت https://github.com/sp00f1ng/boobstrap.git
# سی دی سی دی
# را نصب کنید# boobstrap/tests/crux_gnulinux-download-and-build
شما همچنین باید وابستگی هایی را نصب کنید، یعنی: cpio، grub، grub-efi، dosfstools، xorriso. استفاده از squashfs-tools ضروری نیست، می توانید با مقدار مناسب RAM در tmpfs کار کنید. اگر چیزی در سیستم گم شده باشد، boobstrap این را هنگام راه اندازی گزارش می کند.
برای سادهسازی ایجاد تنظیمات، boobstrap استفاده از «قالبها» و «سیستمها» را پیشنهاد میکند که ماهیت آن استفاده از «قالبها» (bootstrap-templates/) برای نصب سریع سیستمها از یک فایل و مستقیماً از «سیستمها» است (bootstrap- Systems/) برای تنظیم تنظیمات نهایی استفاده می شود.
به عنوان مثال، اجرای اسکریپت boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild حداقل پیکربندی سیستم CRUX GNU/Linux را نصب می کند و آن را در فایل crux_gnulinux-embedded.rootfs ذخیره می کند، سپس boobstrap-sy/bootstrap را اجرا می کنید. /default/crux_gnulinux.bbuild که پیکربندی اولیه را از فایل ذکر شده بارگذاری می کند، تمام تنظیمات لازم را انجام می دهد و یک ISO قابل بوت آماده می کند. این زمانی راحت است که، برای مثال، بسیاری از سیستمها از یک نوع پیکربندی استفاده میکنند: برای اینکه هر بار مجموعهای از بستهها را توصیف نکنید، از یک الگو استفاده میکنید که بر اساس آن تصاویر بوت سیستمها را با پیکربندی نهایی ایجاد میکنید.
از کجا می توانم از این همه استفاده کنم؟
شما یک بار سیستم را در یک فایل پیکربندی می کنید و با اجرای آن آن را می سازید و/یا به روز می کنید. این سیستم در tmpfs اجرا می شود، که آن را اساسا یکبار مصرف می کند. اگر سیستم از کار افتاد، می توانید با یک کلیک بر روی دکمه Reset به حالت اولیه خود بازگردید. می توانید با خیال راحت rm -rf / را اجرا کنید.
شما می توانید تنظیمات تمام سیستم های خود را به صورت محلی پیکربندی کنید، تصاویر ایجاد کنید، آنها را در یک ماشین مجازی یا سخت افزار جداگانه آزمایش کنید، سپس آنها را در یک سرور راه دور آپلود کنید و فقط دو دستور kexec -l /vmlinuz —initrd=/initrd && kexec -e را اجرا کنید. برای به روز رسانی کل سیستم، راه اندازی مجدد آن به tmpfs.
به همین ترتیب می توانید تمام سیستم ها را مثلاً روی VDS برای کار در tmpfs انتقال دهید و دیسک /dev/vda را رمزگذاری کنید و فقط برای داده ها استفاده کنید، بدون اینکه نیازی به نگه داشتن سیستم عامل روی آن باشد. تنها "نقطه نشت اطلاعات" در این مورد تنها "تخلیه سرد" حافظه ماشین مجازی شما خواهد بود و در صورت به خطر افتادن سیستم (به عنوان مثال، با حدس زدن رمز عبور ssh یا آسیب پذیری در Exim)، میتوانید یک ISO جدید را از طریق "کنترل پنل" ارائهدهنده خود دانلود کنید تا VDS را دوباره به کار بیاندازید، بدون اینکه فراموش کنید پیکربندی سیستم را برای بستن تمام آسیبپذیریها ویرایش کنید. این سریعتر از نصب مجدد، پیکربندی بعدی و/یا بازیابی از یک نسخه پشتیبان است، زیرا در اصل، ISO قابل دانلود با سیستم شما پشتیبان شما است. "هفت مشکل - یک تنظیم مجدد."
در پایان، می توانید هر توزیعی را برای نیاز خود ایجاد کنید، آن را در یک درایو USB بنویسید و در آن کار کنید، در صورت نیاز آن را به روز کنید و دوباره آن را در درایو USB بازنویسی کنید. تمام داده ها در ابرها ذخیره می شوند. وقتی سیستم، تکرار می کنم، اساساً یکبار مصرف شده است، دیگر نیازی به نگرانی در مورد ایمنی سیستم و تهیه نسخه پشتیبان ندارید.
خواسته ها، پیشنهادات و نظرات شما پذیرفته می شود.
در مخزن در لینک زیر یک فایل README مفصل (به زبان انگلیسی) با توضیحات هر ابزار و نمونههایی از استفاده وجود دارد، همچنین اسناد دقیق به زبان روسی و تاریخچه توسعه در لینک موجود است: مجتمع اسکریپت بوت استرپ.
منبع: linux.org.ru