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


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

埌 ちょうど䞀ヶ月 ゆっくりずした開発の埌、ブヌトストラップ v1.2 がリリヌスされたした。これは、ブヌト むメヌゞずドラむブを䜜成するための POSIX シェル䞊のツヌル セットです。

Boobstrap では、次のコマンドを XNUMX ぀だけ実行できたす。

  • GNU/Linux ディストリビュヌションを含む initramfs むメヌゞを䜜成したす。
  • 任意の GNU/Linux ディストリビュヌションでブヌト可胜な ISO むメヌゞを䜜成したす。
  • 任意の GNU/Linux ディストリビュヌションを䜿甚しお、起動可胜な USB、HDD、SSD ドラむブを䜜成したす。

特城は、GNU/Linux をロヌドした埌、完党に玔粋な tmpfs で動䜜するか、たたは Overlay FS および SquashFS むメヌゞを䜿甚しお動䜜するこずです。 GNU/Linux ディストリビュヌションをディレクトリにむンストヌルし、必芁な蚭定をすべお (堎合によっおは別のディレクトリに) 行った埌、コマンド XNUMX ぀でブヌト デバむス (ISO むメヌゞ、USB、HDD、SSD ドラむブなど) を䜜成したす。システムを䜿甚しお initrd むメヌゞを䜜成できたす。 システムは垞に同じ状態にあり、障害が発生した堎合は、リセット ボタンを XNUMX ぀抌すこずで元の状態に戻すこずができたす。 システムを別のホストに転送したすか? それずも既存のコンテナからシステムを䜜成したすか? おっぱいストラップはそれをやりたす。

䞻な倉曎点には次のようなものがありたす。

  • 既存の grub2 に加えお、syslinux ブヌトロヌダヌのサポヌトが远加されたした。 --legacy-boot syslinux オプションず --efi grub2 オプションを䜿甚しおブヌト デバむスたたは ISO むメヌゞを䜜成するずきに、grub2、syslinux、たたはその䞡方を䜿甚するこずを遞択できるようになりたした。たた、ダりンロヌドで ISO をサポヌトするモヌドも遞択できたす。画像。
  • --bootable オプションを远加したした。これにより、ブロック デバむスが起動可胜になりたす。 ISO むメヌゞを䜜成するには、--iso-9660 オプションを䜿甚する必芁がありたす。
  • すべおのオヌバヌレむの内容を tmpfs にコピヌするカヌネル ブヌト オプション Boobe.use-shmfs、オヌバヌレむ FS を䜿甚しおブヌトする Boobe.use-overlayfs、システムの゜ヌスを遞択する Boobe.search-rootfs、boobs.copy-to-ram を远加したした。システムをメモリにコピヌしおから、デバむスの電源をオフにしたす。
  • ブヌトストラップが機胜するために必芁な䟝存関係は cpio だけです。 残りの䟝存関係はオプションです: grub2、syslinux - ブヌタブルメディアの䜜成に必芁、cdrkit たたは xorriso から遞択 - ISO の䜜成、squashfs-tools (SquashFS の䜜成) ただし、-cpio オプションの代わりに -cpio オプションを䜿甚するこずを劚げるものはありたせん。 squashfs を䜿甚しお、ディストリビュヌションをアヌカむブにパッケヌゞ化したす。 Busybox はむンストヌルされおいる堎合にのみ䜿甚されたすが、むンストヌルされおいない堎合は、システムから必芁なナヌティリティがすべおコピヌされたす。 したがっお、ブヌストラップはほがどこでも動䜜するこずが保蚌されおいたす。

たずえば、次のコマンドは、SquashFS むメヌゞずしおパッケヌゞ化された gentoo-chroot/ システムを含む initrd むメヌゞを䜜成したす。これは、initrd 自䜓がロヌドされた埌に正垞に起動したす。 Overlay FS を SquashFS ず組み合わせお䜿甚​​するには、boots.use-overlayfs カヌネル オプションを枡す必芁があるこずを思い出しおください。そうしないず、システムは tmpfs に解凍されたす。 远加の蚭定はすべお別のディレクトリ (䟋: gentoo-settings/) で行うこずができたす。

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

システムを内郚に含む initrd むメヌゞは、PXE 経由でシステムを迅速に展開する必芁がある堎合や、ロヌドされたシステムでコマンド kexec -l /boot/vmlinuz-* —initrd=./initrd を䜿甚しお initrd に切り替える必芁がある堎合に䟿利です。 && kexec -e、たたは、QEMU 仮想マシン むンタヌフェむス (おそらく Proxmox も) で、次の XNUMX ぀の IPXE コマンドを䜿甚しおリモヌト ゜ヌスから起動したす: kernel http://[...]/vmlinuz、initrd http://[ ...]/initrd、ブヌトしたす。 ご芧のずおり、システムが内郚にある通垞の initrd であっおも、さたざたな甚途がありたす。

起動可胜なドラむブずむメヌゞを䜜成するには、mkbootisofs コマンドが䜿甚されたす。たずえば、-iso-9660 オプションを䜿甚しお ISO むメヌゞを䜜成するず、syslinux を䜿甚しおレガシヌ モヌド (BIOS) で起動し、grub2 を䜿甚しお EFI で起動するようになりたす。モヌドUEFI。

# mkdir initrd/
# mkinitramfs initrd/ > initrd
# mkdir isoimage/
# mkdir isoimage/ブヌト
# cp /boot/vmlinuz-* isoimage/boot/vmlinuz
# cp initrd isoimage/boot/initrd
# mkbootisofs isoimage/ —iso-9660 —レガシヌブヌト syslinux —efi grub2 —出力 boot.iso
--overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs

ブヌト モヌドの XNUMX ぀を指定しおも、たったく指定しなくおも、察応する ISO むメヌゞが正垞に䜜成されたす。

任意のドラむブぞのむンストヌルずその埌のそこからの起動は、 --bootable オプションを䜿甚しお実行されたす。 自分でドラむブ䞊にパヌティションを䜜成し (fdisk)、それらをフォヌマットし (mkdosfs、mke2fs など)、デバむスをディレクトリにマりントする必芁がありたす。

# マりント /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 は泚意しお䜿甚しおください。

GNU/Linux システムのむンストヌルは XNUMX ぀のコマンドだけで枈みたす。 むンストヌルは任意の HDD、SSD などに行うこずができたす。 これは䟝然ずしお Overlay FS / SquashFS から実行されおいるシステムであるか、完党に tmpfs にロヌドされおいるかを遞択できるこずを思い出しおください。

ずりわけ、Bootstrap には倚くの興味深い機胜ず远加機胜がありたす。

たずえば、コマンド mkinitramfs `mktemp -d` > /boot/initrd を䜿甚しお独自のブヌストラップ initrd を䜜成し、カヌネル オプション Boobe.use-overlayfs Boobs.search-rootfs=/dev を指定しお、この initrd でシステムを起動できたす。 /sda1. この堎合、ホヌム システムがむンストヌルされおいる /dev/sda1 は読み取り専甚のオヌバヌレむ FS レむダヌずしお接続され、加えたすべおの倉曎は䞀時的にのみ tmpfs に曞き蟌たれたす。 オプション Boobe.copy-to-ram を远加するず、システム党䜓が RAM にコピヌされ、ハヌド ドラむブをコンピュヌタから切断できたす。 䜕かを壊す必芁がある堎合に䟿利で、再起動するだけで倉曎をロヌルバックできたす。 🙂

しかし、システム内のすべおの倉曎を保存する必芁がある堎合はどうすればよいでしょうか? たずえば、゜フトりェアなどをむンストヌルしたずしたす。 玔粋な tmpfs で䜜業しおいる堎合、これは残念ながら䞍可胜ですが、オヌバヌレむ 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
# cd $OLDPWD

アヌカむブを他の SquashFS および cpio の「レむダヌ」の隣に配眮するず、その埌のロヌド時にアヌカむブが単なる別の読み取り専甚レむダヌずしお接続されたす。 匕き続き倉曎を凊理するには、アップロヌド オプション Boobe.rootfs-changes=/rootfs-changes.cpio を䜿甚したす。 Boobe.rootfs-changes オプションは、指定されたレむダヌを倉曎アクセスで有効にしたす。 レむダヌはブロック デバむスにするこずができたす。たずえば、/dev/sdb1 を指定するず、オヌバヌレむ FS で行われたすべおの倉曎が単玔に /dev/sdb1 に保存されたす。

Boobstrap には幅広い可胜性がありたすが、ただ開発段階にあり、すべおのコメントや提案が考慮されたす。

出所 linux.org.ru

コメントを远加したす