Tôi đang cố gắng tạo một phân vùng cứu hộ nhỏ (~800 MB dung lượng trống sau tất cả các phân vùng lưu trữ và hệ thống khác) cho một máy tính xách tay có phần cứng chuyên dụng yêu cầu các mô-đun hạt nhân và nhân đặc biệt, chẳng hạn như các công cụ cứu hộ như Clonezilla Live và GParted Live không có' t làm việc rất tốt. Phân vùng quá nhỏ để bao gồm các mô-đun và phần mềm cần thiết cho những gì tôi muốn xây dựng, vì vậy phần lớn hệ thống cần được nén và tải vào RAM khi chạy. Ngoài ra, tôi muốn hệ thống được giải nén hoàn toàn thay vì dựa vào bí đao
và tôi muốn khả năng lưu các thay đổi được thực hiện cho hệ thống nhiều nhất có thể mà phân vùng cho phép. Sử dụng Ubuntu 20.04 làm hệ thống cơ sở, tôi đã nghĩ ra sơ đồ sau cho mục đích này:
- Sau khi xây dựng hệ thống ban đầu trong
chroot
, tạo và làm trống thư mục /đập
làm điểm gắn kết cho tmpfs
để chứa các tệp người dùng và hệ thống đã giải nén trong thời gian chạy, hãy di chuyển tất cả các thư mục tệp hệ thống và người dùng (Trang Chủ
,sử dụng
,var
,opt
,vân vân
, vân vân.) vào trong /đập
và thay thế từng cái bằng một liên kết tượng trưng đến /ram/$dir
. Nén /đập
như/ram.tar.gz
và để lại các điểm gắn kết đặc biệt (nhà phát triển
, hệ thống
,chạy
,tmp
, và thủ tục
) cũng như khởi động
một mình trên rootfs
. Xóa bỏ /đập/*
và viết rootfs
lên phân vùng.
- Khi khởi động, sau kernel và
ban đầu
được tải, cài đặt trước rootfs
, gắn kết tmpfs
trên /đập
, sau đó trích xuất nội dung của /ram.tar.gz
vào trong /đập
. Điều này phải xảy ra trước rootfs
thay thế initramfs
với quyền root vì nếu không thì rootfs
không thể truy cập các tiện ích cần thiết để gắn kết /đập
và giải nén từ kho lưu trữ nén.
- núi
rootfs
và tiến hành khởi động.
- Khi tắt máy, sao lưu
/ram.tar.gz
như /ram.tar.gz.bak
sau đó nén sửa đổi /đập
vào trong /ram.tar.gz
. Điều này có thể đạt được bằng cách sử dụng hệ thống
.
Rõ ràng mọi thứ có thể sai ở bước 4 và do đó bước 2 cần bao gồm tính toàn vẹn của /ram.tar.gz
và tải bản sao lưu nếu thất bại, nhưng đây chỉ là một vài lệnh bổ sung để đưa vào công cụ initramfs
kịch bản và ngoài phạm vi câu hỏi của tôi, đó là:
Không thay đổi /usr/share/initramfs-tools/init
, làm cách nào để tạo tập lệnh trong /etc/initramfs-tools/scripts
để hoàn thành bước 2? Các lệnh phải đủ dễ dàng như
mount -t tmpfs -o $OPTIONS không /ram
tar xvzf ram.tar.gz
Nhưng tôi hơi băn khoăn không biết thư mục nào sẽ bao gồm tập lệnh (init? local? top? bottom? premount?) và cách làm việc với YÊU CẦU TRƯỚC
tiêu đề trong chính tập lệnh.