Tạo hình ảnh bootstrap v1.0


Tạo hình ảnh bootstrap v1.0

Tôi muốn giới thiệu với các bạn một khung công tác có tên là chesttrap, được viết bằng shell POSIX, để tạo các ảnh khởi động với các bản phân phối GNU/Linux. Khung này cho phép bạn thực hiện toàn bộ quá trình chỉ bằng ba bước đơn giản: từ triển khai hệ thống trong chroot, tạo hình ảnh initramfs bao gồm hệ thống chroot và cuối cùng là hình ảnh ISO có thể khởi động. boostrap bao gồm ba tiện ích lần lượt là mkbootstrap, mkinitramfs và mkbootisofs.

mkbootstrap cài đặt hệ thống trong một thư mục riêng, có hỗ trợ riêng cho CRUX và trong trường hợp các bản phân phối dựa trên Arch Linux / Manjaro và Debian, các tiện ích của bên thứ ba pacstrap, basetrap và debootstrap phải được sử dụng tương ứng.

mkinitramfs tạo image initramfs, bạn có thể sử dụng hệ thống đã cài đặt trong thư mục dưới dạng “lớp phủ”, được nén bằng SquashFS hoặc sau khi khởi động vào hệ thống, hãy làm việc trực tiếp trong tmpfs. Vì vậy, ví dụ: lệnh mkinitramfs `mktemp -d` --overlay "arch-chroot/" --overlay "/home" --squashfs-xz --output initrd sẽ tạo một tệp initrd, bao gồm hai lớp phủ có "arch- chroot/" và "/home" của bạn, được nén bằng SquashFS, sau đó bạn có thể khởi động qua PXE vào tmpfs hoặc tạo ảnh ISO có thể khởi động bằng initrd này.

mkbootisofs tạo ảnh ISO có khả năng khởi động BIOS/UEFI từ thư mục được chỉ định. Chỉ cần đặt /boot/vmlinuz và /boot/initrd vào thư mục.

ngựctrap không sử dụng busybox và để tạo môi trường initramfs hoạt động, một bộ chương trình tối thiểu được sao chép bằng ldd, cần thiết để khởi động và chuyển sang hệ thống. Danh sách các chương trình cần sao chép, giống như mọi thứ khác, có thể được cấu hình thông qua tệp cấu hình /etc/boobstrap/boobstrap.conf. Ngoài ra, bạn có thể cài đặt bất kỳ bản phân phối tối giản nào vào một chroot/ riêng biệt, từ đó bạn có thể tạo một môi trường initramfs chính thức. Là một môi trường tối giản nhưng đồng thời đầy đủ như vậy, người ta đề xuất sử dụng mẫu “crux_gnulinux-embedded”, mẫu này sau xz sẽ chiếm dung lượng 37 MB. busybox, ngoài kích thước của nó, 3-5 MB so với 30-50 MB của môi trường GNU/Linux chính thức, không còn mang lại bất kỳ lợi thế nào nữa, vì vậy việc sử dụng busybox trong một dự án có vẻ không phù hợp.

Làm thế nào để nhanh chóng kiểm tra chức năng và bắt đầu? Cài đặt và chạy.

# bản sao git https://github.com/sp00f1ng/boobstrap.git
# cd ngực
# thực hiện cài đặt# boostrap/tests/crux_gnulinux-download-and-build
# qemu-system-x86_64 -enable-kvm -m 1G -cdrom tmp.*/install.iso

Bạn cũng cần cài đặt các phần phụ thuộc, cụ thể là: cpio, grub, grub-efi, dosfstools, xorriso. Việc sử dụng công cụ squatfs là không cần thiết; bạn có thể làm việc trong tmpfs với lượng RAM thích hợp. Nếu thiếu thứ gì đó trong hệ thống, ngực bẫy sẽ báo cáo điều này khi khởi động.

Để đơn giản hóa việc tạo cấu hình, boostrap gợi ý sử dụng “mẫu” và “hệ thống”, bản chất của nó là sử dụng “mẫu” (bootstrap-templates/) để cài đặt nhanh hệ thống từ một tệp và trực tiếp “hệ thống” (bootstrap- systems/) được sử dụng để thiết lập cấu hình cuối cùng.

Vì vậy, ví dụ chạy script boostrap/bootstrap-templates/crux_gnulinux-embedded.bbuild sẽ cài đặt cấu hình tối thiểu của hệ thống CRUX GNU/Linux và lưu vào file crux_gnulinux-embedded.rootfs, sau đó bạn chạy boostrap/bootstrap-systems /default/crux_gnulinux.bbuild sẽ tải cấu hình chính từ tệp được đề cập, thực hiện tất cả cấu hình cần thiết và chuẩn bị ISO có thể khởi động. Điều này thuận tiện, chẳng hạn, khi nhiều hệ thống sử dụng cùng một loại cấu hình: để không mô tả cùng một bộ gói mỗi lần, bạn sử dụng một mẫu, dựa vào đó bạn tạo hình ảnh khởi động của hệ thống với cấu hình cuối cùng.

Tôi có thể sử dụng tất cả những thứ này ở đâu?

Bạn định cấu hình hệ thống trong một tệp một lần và bằng cách chạy nó, bạn xây dựng và/hoặc cập nhật nó. Hệ thống chạy trong tmpfs, về cơ bản nó chỉ dùng một lần. Nếu hệ thống bị lỗi, bạn có thể quay lại trạng thái ban đầu chỉ bằng một cú nhấp chuột vào nút Đặt lại. Bạn có thể chạy rm -rf /.

Bạn có thể định cấu hình cục bộ cấu hình của tất cả hệ thống của mình, tạo hình ảnh, kiểm tra chúng trong máy ảo hoặc phần cứng riêng biệt, sau đó tải chúng lên máy chủ từ xa và chỉ chạy hai lệnh kexec -l /vmlinuz —initrd=/initrd && kexec -e để cập nhật toàn bộ hệ thống, khởi động lại nó vào tmpfs.

Theo cách tương tự, bạn có thể chuyển tất cả các hệ thống, chẳng hạn như trên VDS, để hoạt động trong tmpfs và mã hóa đĩa /dev/vda và chỉ sử dụng nó cho dữ liệu mà không cần phải giữ hệ điều hành trên đó. “Điểm rò rỉ thông tin” duy nhất trong trường hợp này sẽ chỉ là “bãi rác nguội” của bộ nhớ máy ảo của bạn và trong trường hợp hệ thống bị xâm phạm (ví dụ: bằng cách đoán mật khẩu ssh hoặc một lỗ hổng trong Exim), bạn có thể tải xuống ISO mới thông qua “bảng điều khiển” của nhà cung cấp để đưa VDS hoạt động trở lại mà không quên chỉnh sửa cấu hình hệ thống để đóng mọi lỗ hổng. Việc này nhanh hơn việc cài đặt lại, cấu hình tiếp theo và/hoặc khôi phục từ bản sao lưu, vì về bản chất, ISO có thể tải xuống cùng với hệ thống của bạn chính là bản sao lưu của bạn. "Bảy rắc rối - một lần thiết lập lại."

Cuối cùng, bạn có thể tạo bất kỳ bản phân phối nào theo nhu cầu của mình, ghi nó vào ổ USB và làm việc trong đó, cập nhật khi cần và ghi lại vào ổ USB. Tất cả dữ liệu được lưu trữ trên đám mây. Bạn không còn cần phải lo lắng về sự an toàn của hệ thống và tạo bản sao lưu khi hệ thống, tôi nhắc lại, về cơ bản đã trở thành “dùng một lần”.

Mong muốn, đề xuất và ý kiến ​​​​của bạn đều được chào đón.

Trong kho lưu trữ ở liên kết bên dưới có tệp README chi tiết (bằng tiếng Anh) với mô tả về từng tiện ích và ví dụ sử dụng, cũng có tài liệu chi tiết bằng tiếng Nga và lịch sử phát triển tại liên kết: Tập lệnh khởi động Boobstrap phức tạp.

Nguồn: linux.org.ru

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