Dự trữ vùng bộ nhớ RAM cố định dưới dạng thiết bị khối (với địa chỉ vật lý bắt đầu đã cho)


11

Đã có rất nhiều câu hỏi về Đĩa RAM và tôi biết về ramfs và tmpfs cho phép sử dụng ram như một thiết bị khối. Tuy nhiên, sở thích của tôi là sử dụng dải địa chỉ bộ nhớ cố định làm thiết bị khối.

Điều này phát sinh từ sự cần thiết phải sử dụng RAM không bay hơi có sẵn trong hệ thống của tôi. Tôi có sẵn 6GB RAM và 8GB RAM không bay hơi. Đầu ra của / Proc / iomem cho tôi những điều sau đây

100000000-17fffffff: RAM hệ thống

180000000-37fffffff: dành riêng

Ở đây, vùng từ 6GB đến 14GB tương ứng với vùng RAM không bay hơi được đánh dấu bằng bản đồ bộ nhớ BIOS E820 là dành riêng. Mục đích chính của tôi là sử dụng NVRAM này như một thiết bị khối trong linux. Điều này rất hữu ích để thử nghiệm các hệ thống NVRAM. Có lệnh linux nào đã có mặt cho phép tôi sử dụng vùng này làm thiết bị chặn hay tôi phải viết trình điều khiển thiết bị kernel của riêng mình để tạo điều kiện tương tự?


2
Chỉ tò mò, tại sao bạn muốn làm điều này?
mtak

Nó cung cấp một cách dễ dàng để kiểm tra các hệ thống tệp được thiết kế cho RAM không biến động trên linux.
qstack

Câu trả lời:


2

Tôi không phải là chuyên gia về trình điều khiển thiết bị, tuy nhiên đây là một số gợi ý cho R & D của bạn:

  1. nếu bộ nhớ được đánh dấu là "dành riêng", HĐH không thể chạm vào nó; bạn sẽ phải tìm cách để BIOS đánh dấu nó là có sẵn cho HĐH hoặc sử dụng các ioctl cấp thấp trực tiếp để điều khiển nó
  2. nếu Linux có thể nhìn thấy bộ nhớ, bạn vẫn sẽ không có cách dễ dàng để ngăn Linux sử dụng nó như bất kỳ khối RAM nào khác; một nỗ lực có thể được thử bằng cách đánh dấu RAM là "xấu" và sau đó sửa đổi kernel để vẫn sử dụng nó một cách đặc biệt (vui lòng kiểm tra tài liệu kernel về điều này, nó đã thay đổi rất nhiều kể từ lần cuối tôi hack vào nó và nó đang phát triển ở tốc độ cao)
  3. xem xét ở trên như một nghiên cứu khả thi sơ bộ (và không dứt khoát hoặc không toàn diện), tôi sẽ nói rằng viết trình điều khiển blockdevice ramdisk của bạn là tùy chọn lành mạnh nhất trong trường hợp của bạn và có lẽ bạn nên đóng góp lại cho nhân Linux và / hoặc hợp tác với mọi người đã thử điều này (có lẽ một nơi tốt hơn cho câu hỏi này là danh sách Gửi thư hạt nhân Linux , nếu bạn chưa đăng ở đó)

Một số nguồn liên quan khác:


1

Trước khi giới thiệu tmpfs/ initramfsđã được ramdisksử dụng để tải initrdhình ảnh, một thiết bị khối kích thước cố định được xác định trước, tôi nghĩ rằng liền kề, ít nhất là trên các triển khai trước đó.

Người tài xế khối tự nó không có thông số cho địa chỉ bộ nhớ, chỉ có kích thước, nhưng hạt nhân sử dụng để tải hình ảnh initrd tại một địa chỉ được xác định trước (bằng cách config) do đó, một peek vào chính / init kernel mã có thể giúp (tôi sẽ ngạc nhiên nếu ramdisk không được hỗ trợ nữa cho initrd nhưng vì initramfs đã xuất hiện, rất nhiều năm nay, không bao giờ sử dụng ramdisk nữa).

Các nguồn tài xế đã lái xe / block / rd.c , nếu tôi thấy một cách chính xác tại là trình điều khiển / block / brd.c .

Khác, tìm kiếm ramdisk Tôi tìm thấy một triển khai có vẻ thú vị:

Đĩa trên RAM - Chơi với trình điều khiển khối

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.