Là Ramdisk và initrd giống nhau?


10

Trong khi đọc tài liệu kernel trên ramdisk trong ramfs-rootfs-initramfs.txt, tôi đã có một nghi ngờ giống như ramdisk giải thích có giống như các tính năng initrd được mô tả trong bài đăng ở sự khác biệt giữa initrd-và-initramfs .

Ai đó có thể làm rõ tôi về điều này ??

Và nếu nó giống nhau, tôi đọc rằng có nhiều nhược điểm cho nó, nhưng vẫn trong PC fedora của tôi, tôi thấy

initrd-2.6,29.4-167.fc11.i686.PAE.img

trong thư mục khởi động của tôi. Có khác với initrd đã đề cập ở trên không ??

UPDATE_EDIT:
Trong các bài viết tôi thậm chí đã thấy một lệnh như
# update-initramfs -u all
update-initramfs: Generating /boot/initrd.img-2.6.18-5-amd64

Vậy initramfs này được liên kết với initrd.img như thế nào?

Câu trả lời:


13

Một ramdisk là một tập hợp các khối được sao chép vào một đoạn bộ nhớ được phân bổ, sau đó được coi là một thiết bị khối. Một hệ thống tập tin bình thường được tạo ra trên ramdisk. Initrd (ramdisk ban đầu) là một ramdisk được gắn trong quá trình khởi động.

Các initramfs là một cái gì đó khác nhau. Đây là kho lưu trữ cpio của các tệp được tải trong quá trình khởi động. Nhân tải nội dung vào một hệ thống tệp ảo mà nó gọi là rootfs. Không giống như ramdisk, xóa các tệp trực tiếp giải phóng bộ nhớ và không có hệ thống tệp và lớp khối bổ sung nào liên quan.

Cả hai phương pháp đều dẫn đến các tệp có sẵn cho kernel khi khởi động trước khi bất kỳ thiết bị nào được tải, và vì vậy trong thực tế, bạn có thể đạt được kết quả tương tự với cả hai. Các hệ thống cũ hơn sử dụng initrd (nó được tạo ra trước initramfs) nhưng tất cả các hệ thống hiện đại nên sử dụng initramfs. Bạn vẫn có thể thấy từ initrd liên quan đến một cái gì đó thực sự là một initramfs; nó chỉ là đặt tên cho lợi ích tương thích.


Cảm ơn phù du, tôi muốn biết ý của bạn là "ramdisk là một tập hợp các khối". Làm thế nào điều này được coi là một thiết bị khối khi nó đã được sao chép?
Sen

@Sen: Có một rdmô-đun (sau này được đổi tên thành brdvà có thể được tích hợp vào kernel), phân bổ một loạt bộ nhớ, tạo một thiết bị khối và ánh xạ các yêu cầu đến / từ thiết bị khối thành đọc / ghi trong bộ nhớ.
ephemient

Bạn có thể cho tôi thêm một số ý tưởng về mô-đun nd / brd này?
Sen

tôi cũng muốn biết rằng nếu tôi đã tạo một hình ảnh ramdisk bằng cách làm theo các bước sau: mke2fs -vm0 / dev / ram 4096; gắn kết -t ext2 / dev / ram / mnt; cd / mnt; các tập tin cp / bin, / sbin, / etc, / dev ... trong mnt; cd ../; ô / mnt; dd if = / dev / ram bs = 1k đếm = 4096 of = ext2ramdisk; Làm thế nào tôi sẽ khởi động ext2ramdisk này trong thiết bị của tôi? Chỉ cần tải nó vào ram, nó sẽ làm việc?
Sen

@Sen: Bộ tải khởi động chịu trách nhiệm tải cả kernel và init (rd | ramfs) vào RAM; xem tài liệu của bootloader của bạn. Nhưng ngay cả khi bạn đang xây dựng nó bằng tay (tại sao ??), bạn nên sử dụng find /bin /sbin /etc /dev ... | cpio -o | gzip -c > initramfsthay vì initrd.
ephemient
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.