Tôi đang cố gắng ghi đè các phần nhất định trong bộ nhớ hạt nhân (Linux 2.6.31, Ubuntu 9.10) trong máy ảo (sử dụng VirtualBox) qua mô-đun hạt nhân. Bất cứ khi nào tôi làm điều này tôi nhận được lỗi nàyKhông thể ghi vào bộ nhớ hạt nhân qua mô-đun hạt nhân Linux (Ubuntu)
[27.154,303726] BUG: không thể xử lý yêu cầu kernel phân trang ở 0xc05769bc
Mã của tôi:
unsigned char *p = (unsigned char *) c05769bc;
p[1] = (addr & 0x000000ff);
p[2] = (addr & 0x0000ff00) >> 8;
p[3] = (addr & 0x00ff0000) >> 16;
p[4] = (addr & 0xff000000) >> 24;
Địa chỉ là đúng và vì vậy là viết mã của tôi. Tôi chỉ sử dụng một con trỏ để ghi vào bộ nhớ hạt nhân. Tôi đã tự hỏi tại sao tôi nhận được thông báo này vì trang bộ nhớ của địa chỉ đó chắc chắn nằm trong bộ nhớ.
Hành vi này có liên quan đến máy ảo không? Hoặc làm hạt nhân gần đây có một số loại bảo vệ được xây dựng trong? Tôi hy vọng ai đó có thể cho tôi một số đầu mối.
Sự cố có vẻ liên quan đến Ubuntu, vì cùng một mã không bị lỗi khi sử dụng Debian.
TIA!
Willem
Debian trong VM hoặc độc lập? –
Debian cũng trong VM (VirtualBox) –