mount -t devtmpfs
এটি দেখতেও আকর্ষণীয় যে আধুনিক সিস্টেমে /dev
সাধারণত ফাইল সিস্টেম টাইপ যা আপনি যেখানে চান সেখানে মাউন্ট করা যায়। উবুন্টু 16.04:
mkdir d
sudo mount -t devtmpfs none d
head -c 10 d/random
sudo umount d
এটি এর দ্বারা সক্ষম করা হয়েছে CONFIG_DEVTMPFS=y
, এবং কার্নেলটি নিজেই প্রয়োজন হিসাবে ডিভাইস ফাইলগুলি তৈরি এবং ধ্বংস করতে দেয়।
CONFIG_DEVTMPFS_MOUNT=y
এই বিকল্পটি কার্নেল স্বতঃ-মাউন্ট ডেভটিএমপি চালু করে /dev
।
drivers/base/Kconfig
দস্তাবেজ:
config DEVTMPFS_MOUNT
bool "Automount devtmpfs at /dev, after the kernel mounted the rootfs"
depends on DEVTMPFS
help
This will instruct the kernel to automatically mount the
devtmpfs filesystem at /dev, directly after the kernel has
mounted the root filesystem. The behavior can be overridden
with the commandline parameter: devtmpfs.mount=0|1.
This option does not affect initramfs based booting, here
the devtmpfs filesystem always needs to be mounted manually
after the rootfs is mounted.
With this option enabled, it allows to bring up a system in
rescue mode with init=/bin/sh, even when the /dev directory
on the rootfs is completely empty.
file_operations
শেষ পর্যন্ত, আপনার নিজের চরিত্রের ডিভাইস কার্নেল মডিউলটি তৈরি করা উচিত যা ঠিক চলছে তা দেখতে।
এখানে একটি সর্বনিম্ন চলমান উদাহরণ: অক্ষর ডিভাইস (বা অক্ষর বিশেষ) ফাইলগুলি বোঝা
সর্বাধিক গুরুত্বপূর্ণ পদক্ষেপটি হচ্ছে কাঠামোটি স্থাপন করা file_operations
, যেমন:
static const struct file_operations fops = {
.owner = THIS_MODULE,
.read = read,
.open = open,
};
static int myinit(void)
{
major = register_chrdev(0, NAME, &fops);
return 0;
}
যার মধ্যে ফাংশন পয়েন্টার রয়েছে যা প্রতিটি ফাইল-সম্পর্কিত সিস্টেম কলের জন্য কল করে।
এরপরে এটি স্পষ্ট হয়ে যায় যে আপনি ফাইল-সম্পর্কিত সিস্টেম কলগুলি যা খুশি করতে করতে ওভাররাইড করবেন এবং তাই কার্নেলটি ডিভাইসগুলির মতো প্রয়োগ করে /dev/zero
।
/dev
ছাড়াই স্বয়ংক্রিয়ভাবে এন্ট্রি তৈরি করুনmknod
চূড়ান্ত রহস্যটি কীভাবে কার্নেলটি স্বয়ংক্রিয়ভাবে /dev
এন্ট্রি তৈরি করে ।
কার্নেল মডিউল তৈরির মাধ্যমে প্রক্রিয়াটি পর্যবেক্ষণ করা যায় যা এটি নিজের মতো করে দেখায়: https://stackoverflow.com/questions/5970595/how-to-create-a-device-node-from-the-init-module- কোড-অফ-অ-লিনাক্স-কার্নেল-মডিউল / 45531867 # 45531867 এবং device_create
কলটিতে নেমে আসে ।