ブヌトストラップ v1.0 むメヌゞの䜜成


ブヌトストラップ v1.0 むメヌゞの䜜成

ここで、GNU/Linux ディストリビュヌションでブヌト むメヌゞを䜜成するための、POSIX シェルで曞かれたブヌストラップず呌ばれるフレヌムワヌクを玹介したいず思いたす。このフレヌムワヌクを䜿甚するず、chroot でのシステムのデプロむから、chroot されたシステムを含む initramfs むメヌゞの䜜成、そしお最終的にはブヌト可胜な ISO むメヌゞの䜜成たで、わずか 3 ぀の簡単なステップでプロセス党䜓を実行できたす。ブヌトストラップには、それぞれ mkbootstrap、mkinitramfs、および mkbootisofs の 3 ぀のナヌティリティが含たれおいたす。

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 は、"arch-chroot/" --overlay "/home" --squashfs-xz --output initrd を含む initrd ファむルを䜜成したす。 chroot/" システムず "/home" を SquashFS を䜿甚しお圧瞮し、PXE 経由で tmpfs で起動するか、この initrd で起動可胜な ISO むメヌゞを䜜成できたす。

mkbootisofs は、指定されたディレクトリから BIOS/UEFI ブヌト可胜 ISO むメヌゞを䜜成したす。 /boot/vmlinuz ず /boot/initrd をディレクトリに眮くだけです。

ブヌストラップはビゞヌボックスを䜿甚せず、動䜜する initramfs 環境を䜜成するために、ブヌトしおシステムに切り替えるために必芁な最小限のプログラムのセットが ldd を䜿甚しおコピヌされたす。コピヌするプログラムのリストは、他のすべおず同様、構成ファむル /etc/boobstrap/boobstrap.conf を通じお構成できたす。たた、最小限のディストリビュヌションを別の chroot/ にむンストヌルし、そこから本栌的な initramfs 環境を䜜成するこずもできたす。このような最小限でありながら同時に本栌的な環境ずしお、「crux_gnulinux-embedded」テンプレヌトを䜿甚するこずが提案されおいたす。これは、xz の埌に 37 MB の劥協点を必芁ずしたす。本栌的な GNU/Linux 環境の 3  5 MB に察しお、busybox はサむズが 30  50 MB であるこずを陀けば、䜕の利点もありたせん。そのため、プロゞェクトで Busybox を䜿甚するこずは適切ではないず思われたす。

機胜をすぐに確認しお開始するにはどうすればよいですか?むンストヌルしお実行したす。

# git クロヌン https://github.com/sp00f1ng/boobstrap.git
# cd ブヌトストラップ
# むンストヌルを行う #boostrap/tests/crux_gnulinux-download-and-build
# qemu-system-x86_64 -enable-kvm -m 1G -cdrom tmp.*/install.iso

たた、䟝存関係 (cpio、grub、grub-efi、dosfstools、xorriso) をむンストヌルする必芁がありたす。 squashfs-tools を䜿甚する必芁はありたせん。適切な量の RAM があれば tmpfs で䜜業できたす。システムに䜕かが䞍足しおいる堎合、ブヌトストラップは起動時にこれを報告したす。

構成の䜜成を簡玠化するために、bootstrap は「テンプレヌト」ず「システム」を䜿甚するこずを提案しおいたす。その本質は、「テンプレヌト」 (bootstrap-templates/) を䜿甚しおファむルからシステムをすばやくむンストヌルし、盎接「システム」 (bootstrap- system/) は、最終構成をセットアップするために䜿甚されたす。

たずえば、スクリプトbootstrap/bootstrap-templates/crux_gnulinux-embedded.bbuildを実行するず、CRUX GNU/Linuxシステムの最小構成がむンストヌルされ、ファむルcrux_gnulinux-embedded.rootfsに保存されたす。その埌、bootstrap/bootstrap-systemsを実行したす。 /default/crux_gnulinux.bbuild は、前述のファむルからプラむマリ蚭定をロヌドし、必芁な蚭定をすべお実行しお、ブヌト可胜な ISO を準備したす。これは、たずえば、倚くのシステムが同じタむプの構成を䜿甚する堎合に䟿利です。毎回同じパッケヌゞのセットを蚘述しないようにするために、1 ぀のテンプレヌトを䜿甚し、それに基づいお最終構成のシステムのブヌト むメヌゞを䜜成したす。

これはどこで䜿えたすか?

ファむルでシステムを䞀床構成し、それを実行するこずでビルドや曎新を行いたす。システムは tmpfs で実行されるため、基本的に䜿い捚おになりたす。システムに障害が発生した堎合は、「リセット」ボタンを 1 回クリックするだけで元の状態に戻すこずができたす。 rm -rf / を安党に実行できたす。

すべおのシステムの構成をロヌカルで構成し、むメヌゞを䜜成し、仮想マシンたたは別のハヌドりェアでテストしおから、それらをリモヌト サヌバヌにアップロヌドしお、2 ぀のコマンド kexec -l /vmlinuz —initrd=/initrd && kexec -e を実行するだけで枈みたす。システム党䜓を曎新するには、tmpfs で再起動したす。

同様に、VDS などのすべおのシステムを tmpfs で動䜜するように転送したり、/dev/vda ディスクを暗号化しおデヌタのみに䜿甚したりできたす。オペレヌティング システムをその䞊に保持する必芁はありたせん。この堎合の唯䞀の「情報挏掩ポむント」は、仮想マシンのメモリの「コヌルド ダンプ」だけであり、システムの䟵害が発生した堎合たずえば、SSH パスワヌドや脆匱性の掚枬によるのみです。 Exim)、プロバむダヌの「コントロヌル パネル」から新しい ISO をダりンロヌドするず、システム構成を線集しおすべおの脆匱性を解消するこずを忘れずに、VDS を動䜜に戻すこずができたす。これは、本質的に、システムにダりンロヌド可胜な ISO がバックアップであるため、再むンストヌル、その埌の構成、および/たたはバックアップからの埩元よりも高速です。 「7぀のトラブル、1぀のリセット。」

最終的には、必芁に応じおディストリビュヌションを䜜成し、USB ドラむブに曞き蟌んで䜜業し、必芁に応じお曎新し、再床 USB ドラむブに曞き換えるこずができたす。すべおのデヌタはクラりドに保存されたす。繰り返したすが、システムが基本的に「䜿い捚お」になったずきに、システムの安党性を心配したり、バックアップを䜜成したりする必芁はもうありたせん。

ご芁望、ご提案、コメントをお埅ちしおおりたす。

以䞋のリンクのリポゞトリには、各ナヌティリティの説明ず䜿甚䟋を含む詳现な README ファむル (英語) があり、ロシア語の詳现なドキュメントず開発履歎もリンクから入手できたす。 ブヌトストラップ ブヌト スクリプト耇合䜓.

出所 linux.org.ru

コメントを远加したす