Tôi không biết cách thêm mọi thứ vào /proc
bên ngoài bằng cách viết một mô-đun (hoặc mã hạt nhân đơn giản). Có thể là một số tiện ích ngoài đó mặc dù.
Nếu bạn có thể xây dựng và chèn một mô-đun, thì nó khá đơn giản: bạn chỉ cần tạo một liên kết tượng trưng khác (đã /proc/mounts
là một liên kết tượng trưng).
Nguồn ( mnt_link.c
):
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
#define MODULE_VERS "0.0"
#define MODULE_NAME "mnt_link"
static int __init init_mnt_link(void)
{
static struct proc_dir_entry *symlink;
symlink = proc_symlink("mnt", NULL, "self/mounts");
if(!symlink)
return -ENOMEM;
return 0;
}
static void __exit cleanup_mnt_link(void)
{
remove_proc_entry("mnt", NULL);
}
module_init(init_mnt_link);
module_exit(cleanup_mnt_link);
MODULE_AUTHOR("U&L");
MODULE_LICENSE("CC-WIKI");
MODULE_DESCRIPTION("Create a /proc/mnt symlink to /proc/self/mounts");
Trang điểm:
obj-m := mnt_link.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
(Điều này giả định rằng bạn sẽ xây dựng cho hệ thống Linux hiện tại của mình. Để xây dựng một cái gì đó cho Android, bạn có thể tham khảo: Làm thế nào để bạn tạo một mô-đun hạt nhân có thể tải cho Android? )
Khi bạn đã tải mô-đun ( insmod mnt_link.ko
), bạn sẽ nhận được:
$ ls -l /proc/m*nt*
lrwxrwxrwx 1 root root 11 Nov 27 22:43 /proc/mnt -> self/mounts
lrwxrwxrwx 1 root root 11 Nov 27 22:43 /proc/mounts -> self/mounts
Điều đó đang được nói, tiện ích đó của bạn rất có thể đang mong đợi một cái gì đó khác ngoài liên kết tượng trưng này. (Có lẽ nó phụ thuộc vào một mô-đun khác được tải để cung cấp một số thông tin tại vị trí đó.)
Sử dụng có nguy cơ của riêng bạn .