Xây dựng hệ thống Linux chỉ đọc với lớp có thể ghi trong RAM


7

Tôi có một yêu cầu để khởi động RHEL 6.6 / 7.0 vào chế độ chỉ đọc với một lớp có thể ghi chỉ trong RAM. Tôi tin rằng điều này tương tự như cách các đĩa CD hoạt động, trong đó hệ thống tệp chỉ đọc, nhưng một số phần của nó có thể ghi được sau khi được tải vào RAM. Ở đây, mọi thay đổi được ghi vào hệ thống tệp sẽ bị mất khi khởi động lại (vì chỉ RAM được cập nhật trong lớp có thể ghi).

Trong khi tìm kiếm trên mạng, tôi không tìm thấy hướng dẫn cấu hình "CD sống" của riêng mình mà không có công cụ trợ giúp để tôi có thể bắt chước quy trình này trong một hệ thống được cài đặt hiện có.

Có ai biết nơi tôi có thể có được một số tài nguyên để xây dựng CD trực tiếp của riêng tôi hoặc tạo một Linux chỉ đọc với một lớp có thể ghi chỉ trong RAM không?

Câu trả lời:


9

OK, vì vậy tôi có một hệ thống chỉ đọc hoạt động trên thẻ SD cho phép chuyển đổi đọc / ghi thành chế độ chỉ đọc. Tôi sẽ trả lời câu hỏi của riêng mình, vì tôi có cảm giác tôi sẽ tìm lại các bước này và hy vọng điều này sẽ giúp được người khác.

Trong khi đặt các thư mục khác nhau ở /etc/fstabdạng chỉ đọc trên hệ thống Red Hat Enterprise Linux 6.6, tôi đã tìm thấy tệp /etc/sysconfig/readonly-root. Điều này khơi gợi sự quan tâm của tôi về những gì tập tin này được sử dụng cho, cũng như bất kỳ thông tin phụ trợ nào liên quan đến nó. Nói tóm lại, tập tin này chứa một dòng trạng thái, " READONLY=no". Thay đổi dòng này sẽ tự động tải hầu hết hệ thống tệp gốc dưới dạng chỉ đọc trong khi duy trì các thao tác ghi cần thiết trên các thư mục khác nhau (thư mục và tệp được tải dưới dạng tmpfs). Những thay đổi duy nhất tôi phải thực hiện là thiết lập /home,/rootvà một vài thư mục khác có thể ghi thông qua /etc/rwtab.dthư mục và sửa đổi / etc / fstab để tải hệ thống tệp gốc dưới dạng chỉ đọc (đã thay đổi " defaults" thành " ro" cho root). Khi tôi đặt " READONLY=yes" trong /etc/sysconfig/readonly-roottệp và đặt các thư mục có thể ghi cần thiết của mình /etc/rwtab.d, cũng như fstabthay đổi, tôi có thể khiến hệ thống tải chỉ đọc, nhưng có các thư mục có thể ghi được vào RAM.

Để biết thêm thông tin, đây là những tài nguyên mà tôi đã sử dụng:

Ngoài ra, tôi đã xác minh nhanh trên Red Hat Enterprise Linux 7.0 và tệp này vẫn còn đó và hoạt động. Môi trường thử nghiệm của tôi là CentOS 6.6 và 7.0 trong một máy ảo cũng như RHEL 6.6 và 7.0 trên máy tính bảng đơn VME.

LƯU Ý: Khi root chỉ đọc, không có thay đổi nào có thể được thực hiện đối với hệ thống gốc. Ví dụ: bạn không thể sử dụng yum để cài đặt các gói và chúng vẫn tồn tại khi khởi động lại. Do đó, để phá vỡ root chỉ đọc, tôi đã thêm một dòng grub loại bỏ rhgb và yên lặng (điều này chỉ để gỡ lỗi các vấn đề khởi động, bạn có thể để chúng nếu bạn muốn) và thêm " init=/bin/bash". Điều này cho phép tôi nhập vào một thiết bị đầu cuối. Khi ở thiết bị đầu cuối, tôi đã gõ " mount - / -oremount,rw" để hệ thống có thể ghi. Khi có thể ghi, tôi đã sửa đổi (sử dụng vim) /etc/sysconfig/readonly-rootđể nói "READONLY=no"và khởi động lại hệ thống. Điều này cho phép tôi thực hiện bảo trì hệ thống bằng cách tắt chỉ đọc. Nếu bạn đang sử dụng thẻ SD như tôi, thì công tắc đọc / ghi trên thẻ SD cần được đặt thành có thể ghi.


3

Vâng, đây giống như những gì một CD Live làm. Nó được thực hiện bằng cách sử dụng trình điều khiển hệ thống tệp đặc biệt được thiết kế để chồng nhiều hệ thống tệp lên nhau - trong trường hợp này là hệ thống tệp chỉ đọc với đĩa RAM.

Có rất nhiều lựa chọn khác nhau về các hệ thống tệp lớp phủ - hãy thử tìm kiếm xung quanh UnionFS, aufs và lớp phủ để có ý tưởng về lựa chọn của bạn là gì và sự đánh đổi giữa chúng có thể là gì.


1
Cảm ơn đề nghị của bạn. Tôi đã xem xét xung quanh một số hệ thống tập tin công đoàn, nhưng nhận thấy rằng hầu hết tất cả chúng đều không có sẵn trong RHEL 6/7. Tôi quan tâm đến việc phát triển sự hiểu biết kỹ thuật về cách tạo đĩa CD Fedora Live kể từ UnionFS, AuFS, v.v., không phải là một phần của gói cài đặt kernel hoặc kernel. Các hệ thống tập tin yêu cầu một bản vá để làm việc. Nhưng, một cái gì đó phải tồn tại để Fedora Live CD hoạt động, vì bất kỳ ai cũng có thể tải xuống và sử dụng nó. Vì vậy, tôi đang tìm cách các đĩa CD Live trên các dẫn xuất Fedora / CentOS / RHEL / Red Hat hoạt động và đảm bảo hệ thống của tôi tải ro.
Arc Kinetic

@KineticArc, bugzilla.redhat.com/show_orms.cgi?id=465725 dường như chỉ ra rằng RHEL thực hiện điều đó với một thứ gọi là "lớp phủ ảnh chụp LVM" - đó có thể là hướng để nhìn vào. chúng là một giải pháp tồi tệ hơn so với các hệ thống tập tin công đoàn.
trời ơi 30/1/2015

1

Để theo dõi câu trả lời do Kinetic Arc cung cấp, cách dễ dàng hơn để sửa đổi hệ thống trong các lần khởi động lại tiếp theo là thêm "noreadonly" vào dòng lệnh kernel. Nếu đây không phải là điều bạn mong đợi sẽ làm thường xuyên, thì chỉ cần bắt grub và thêm nó bằng tay có lẽ là đủ. Khi phát triển các hệ thống chỉ đọc của chúng tôi, chúng tôi đã thêm một mục vào grub.conf với điều đó đã thêm và tăng thời gian chờ một chút. Khi quá trình phát triển hình ảnh hệ thống hoàn tất, chúng tôi sẽ đưa mục ra trước khi phân phối hình ảnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.