Câu hỏi Gắn chỉ đọc phân vùng persistence (casper-rw)


Tôi đang cố tạo một ảnh ISO mới để sử dụng trên thanh USB. Tôi đã phân đoạn thanh USB của mình thành 2 phân vùng, một vfat và một ext4. Các vfat phân vùng có ISO và GRUB2 cài đặt vào nó, như vậy GRUB2 khởi động ISO.

Các ext4 phân vùng có nhãn âm lượng casper-rw và được sử dụng làm lưu trữ dữ liệu liên tục cho USB trực tiếp. Tôi đã sửa đổi grub.cfg sao cho tôi nhận được hai tùy chọn khi khởi động, một để khởi động ISO ở chế độ liên tục và một để khởi động bình thường.

Tuy nhiên, khi khởi động ở chế độ "bình thường", casper-rw phân vùng được gắn kết như một ổ đĩa bình thường và thay đổi được thực hiện trong chế độ liên tục không ở lại.

Những gì tôi muốn là phân vùng casper-rw được gắn lên trên / hệ thống tập tin, nhưng khi tôi yêu cầu Ubuntu khởi động bình thường (tức là, không có persistent tùy chọn trong GRUB2), Tôi muốn phân vùng đó được gắn kết chỉ đọc để các thay đổi được thực hiện trong chế độ liên tục tồn tại.

cách tốt nhất để đạt được điều này là gì?


1
2018-01-19 21:48


gốc




Các câu trả lời:


Những gì tôi đã làm là tôi sửa đổi kịch bản casper bên trong initrd.lz.

Kịch bản lệnh sẽ gắn casper-rw là chỉ đọc và sau đó chồng lên nó trên đầu trang /. Sau đó nó sẽ gắn tmpfs lên trên lớp phủ.

Tôi sử dụng mint btw, không chắc chắn về ubuntu, hy vọng nó hoạt động cho bạn.

Dưới đây là các chi tiết khác:

  1. Trích xuất initrd bằng cách sử dụng lệnh từ đây.
  2. Chỉnh sửa tập lệnh / casper, sửa đổi setup_unionfs() chức năng. Bạn tìm thấy hàm được sửa đổi đây.

    ...
    p_ro_mount=""
    if [ -n "${PERSISTENT}" ]; then
          cowprobe=$(find_cow_device "${root_persistence}")
          if [ -b "${cowprobe}" ]; then
                p_ro_device=${cowprobe}
                p_ro_fstype=$(get_fstype "${cowprobe}")
                p_ro_mountopt="ro,noatime"
                p_ro_mount="/persistent"
                mkdir -p $p_ro_mount
                mount -t ${p_ro_fstype} -o ${p_ro_mountopt} \   
                  ${p_ro_device} \
                  ${p_ro_mount} || panic "Can not mount"
    ...
    case ${UNIONFS} in
    ...
       overlayfs)
           mounts=""
           for mount in /cow $p_ro_mount $rofslist
    ...
    
  3. Thay thế initrd.lz, hoặc trong trường hợp của tôi, tôi vừa tạo một cái mới.

    find . | cpio --quiet -o -H newc | lzma -7 > ../ro-initrd.lz
    
  4. Thêm tùy chọn khởi động khác vào syslinux.cfg

    append initrd=/casper/ro-initrd.lz file=/cdrom/preseed/linuxmint.seed boot=casper  splash -- persistent
    

Lưu ý: Tôi sử dụng Mint 16 (x86) và unetbootin.


2
2018-01-22 10:10



Bạn có thể thêm một số chi tiết khác về cách bạn đạt được điều này không? Ngay cả một bản sao của kịch bản sẽ là tốt. - Chinmay Kanchi
Tôi thêm chi tiết hơn - David Lim