booty - tiện ích tạo image và ổ đĩa khởi động

Chương trình trình bày Đồng mưu, cho phép bạn tạo các ảnh initrd, tệp ISO hoặc ổ đĩa có khả năng khởi động chứa bất kỳ bản phân phối GNU/Linux nào bằng một lệnh. Mã được viết bằng shell POSIX và phân phối bởi được cấp phép theo GPLv3.

Tất cả các bản phân phối được khởi động bằng Booty đều chạy SHMFS (tmpfs) hoặc SquashFS + Overlay FS, do người dùng lựa chọn. Bản phân phối được tạo một lần và trong quá trình khởi động, các tham số được chọn cho phép bạn sử dụng tmpfs thuần túy cho thư mục gốc hoặc kết hợp Overlay FS + SquashFS với việc ghi lại các thay đổi đối với tmpfs. Có thể sao chép trước bộ phân phối có thể tải xuống vào RAM, điều này cho phép bạn ngắt kết nối ổ USB sau khi tải xuống và sao chép bộ phân phối vào bộ nhớ.

Trước hết, Booty tạo hình ảnh initrd của riêng mình, có thể sử dụng các tiện ích gốc từ hệ thống hiện tại hoặc busybox. Có thể gộp (đóng gói) toàn bộ bộ phân phối được cài đặt trong thư mục (chroot) vào initramfs. Điều này có thể hữu ích khi bạn cần nâng cấp hệ thống bằng kexec: chỉ cần tải lại initrd bằng kernel mới và hệ thống mới bên trong initrd.

Tạo hình ảnh initrd dành riêng cho Booty:

mkdir initramfs/
mkinitramfs initramfs/ --output initrd

Tạo một hình ảnh initrd bao gồm phân phối từ thư mục “gentoo/”:

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

Sau đó, hình ảnh initrd này hoàn toàn sẵn sàng để tải, chẳng hạn như qua PXE hoặc qua kexec.

Tiếp theo, Booty tạo hình ảnh với hệ thống được chỉ định là “lớp phủ”. Ví dụ: bạn có thể cài đặt (giải nén kho lưu trữ) một Gentoo có điều kiện trong một thư mục riêng, sau đó kho lưu trữ cpio hoặc hình ảnh SquashFS với hệ thống này sẽ được tạo bằng Booty. Bạn cũng có thể định cấu hình phân phối trong một thư mục riêng và sao chép cài đặt cá nhân của mình sang thư mục khác. Tất cả các “lớp” này sẽ được tải tuần tự lên nhau và tạo thành một hệ thống làm việc duy nhất.

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay settings/ --overlay tài liệu/ --squashfs --output initrd

Cuối cùng, Booty cho phép bạn tạo ảnh ISO có khả năng khởi động và USB, HDD, SSD và các ổ đĩa khác bằng cách cài đặt hệ thống trên từ ảnh. Đồng mưu hỗ trợ tạo hệ thống khởi động BIOS và UEFI. Bộ tải khởi động GRUB2 và SYSLINUX được hỗ trợ. Bộ tải khởi động có thể được kết hợp, ví dụ: sử dụng SYSLINUX để khởi động vào BIOS và GRUB2 cho UEFI. Để tạo ảnh ISO, bạn cũng cần có gói cdrkit (genisoimage) hoặc xorriso (xorrisofs) để lựa chọn.

Hành động bổ sung duy nhất cần có là chuẩn bị trước kernel (vmlinuz) để khởi động. Tác giả (Spoofing) khuyên bạn nên sử dụng "make defconfig". Trước khi tạo image, bạn cần chuẩn bị một thư mục bằng cách đặt kernel vmlinuz và initrd “trống” đã chuẩn bị trước đó được tạo trong ví dụ đầu tiên.

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

Vậy là quá trình chuẩn bị đã hoàn tất, bây giờ chúng ta có thể tạo ảnh ISO từ thư mục này.

Lệnh sau sẽ tạo ảnh ISO, không phải ảnh có khả năng khởi động, chỉ là ISO:

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

Để tạo một ảnh khởi động, bạn cần chỉ định tùy chọn “--legacy-boot” tương ứng cho BIOS và “--efi” cho UEFI; các tùy chọn lấy grub2 hoặc syslinux làm tham số; bạn cũng có thể chỉ định chỉ một tùy chọn ( ví dụ: không cần hỗ trợ khởi động UEFI, nó có thể không được chỉ định).

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 --output boot-uefionly.iso

Và cũng như trước đây, hình ảnh của hệ thống đã được đưa vào initrd, bạn có thể đưa chúng vào ISO.

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

Sau lệnh này, một ảnh ISO BIOS/UEFI có khả năng khởi động sẽ được tạo để tải Gentoo vào ảnh SquashFS bằng Overlay FS, sử dụng tmpfs để lưu trữ dữ liệu. Hạt nhân phải được xây dựng với sự hỗ trợ của Overlay FS với SquashFS. Tuy nhiên, nếu vì lý do nào đó điều này không bắt buộc, bạn có thể sử dụng tùy chọn “—cpio” thay vì —squashfs để đóng gói gentoo/ dưới dạng kho lưu trữ cpio, trong trường hợp đó, kho lưu trữ sẽ được giải nén trực tiếp vào tmpfs khi khởi động, vấn đề chính là là để giải nén hệ thống, tmpfs có đủ RAM.

Sự thật thú vị: nếu ảnh ISO được tạo bằng tùy chọn “—efi” được giải nén vào ổ flash FAT32 bằng cách sao chép tệp (cp -r), thì ổ Flash sẽ khởi động ở chế độ UEFI mà không cần chuẩn bị sơ bộ, nhờ vào thông tin cụ thể của các trình tải xuống UEFI.

Ngoài ISO có thể khởi động, bất kỳ ổ đĩa khởi động nào cũng có thể được tạo với cùng các thông số: USB, HDD, SSD, v.v. và ổ đĩa này có thể tiếp tục được sử dụng cho mục đích đã định. Để thực hiện việc này, chẳng hạn, bạn cần gắn một thiết bị USB và chạy mkbootisofs trên đó. Chỉ cần thêm một tùy chọn “—có thể khởi động” để ổ đĩa chứa thư mục được chỉ định có khả năng khởi động được.

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

Sau đó, thiết bị USB sẽ có khả năng khởi động được với gentoo/overlay (đừng quên sao chép các tập tin /boot/vmlinuz và /boot/initrd vào thiết bị).

Nếu vì lý do nào đó mà ổ đĩa không được gắn vào /mnt và hóa ra /mnt nằm trên thiết bị chính /dev/sda, thì bộ nạp khởi động sẽ được ghi lại thành /dev/sda. Bạn nên cẩn thận khi chỉ định tùy chọn --bootable.

Trong quá trình khởi động, Booty hỗ trợ một số tùy chọn có thể được chuyển tới bộ tải khởi động, grub.cfg hoặc syslinux.cfg. Theo mặc định, không có bất kỳ tùy chọn nào, tất cả các lớp phủ đều được tải và giải nén vào tmpfs (tùy chọn mặc định ooty.use-shmfs). Để sử dụng Overlay FS, tùy chọn booty.use-overlayfs phải được sử dụng. Tùy chọn booty.copy-to-ram trước tiên sao chép các lớp phủ vào tmpfs, sau đó nó chỉ kết nối chúng và tải chúng. Sau khi sao chép, thiết bị USB (hoặc thiết bị lưu trữ khác) có thể được gỡ bỏ.

Nguồn: opennet.ru

Thêm một lời nhận xét