1. 程式人生 > >linux用mknod建立裝置(節點)

linux用mknod建立裝置(節點)

mknod命令用於建立一個裝置檔案,即特殊檔案
首先要明白什麼是裝置檔案,簡單的我們說 作業系統與外部裝置(入磁碟驅動器,印表機,modern,終端 等等)都是通過裝置檔案來進行通訊的,在Unix/Linux系統與外部裝置通訊之前,這個裝置必須首先要有一個裝置檔案,裝置檔案均放在/dev目錄下
一般情況下在安裝系統的時候系統自動建立了很多已檢測到的裝置的裝置檔案,但有時候我們也需要自己手動建立,命令列生成裝置檔案的方式有 insf,mksf,mknod等等
根據mknod命令的使用引數來看【mknod Name { b | c } Major Minor 】,使用mknod之前,至少要明白以下幾點:
裝置檔案型別:分為塊裝置和字元裝置。ls -l /dev 結果顯示第一個欄位有b*** 和 c****,這裡即標識了塊裝置和字元裝置。
    字元裝置檔案----字元裝置檔案傳送資料給裝置的時候,一次傳送一個字元,終端,印表機,繪圖儀,modern等裝置都經過字元裝置檔案傳送資料
    塊裝置---系統通過塊裝置檔案存取一個裝置的時候,先從記憶體中的buffer中讀或寫資料,而不是直接傳送資料到物理磁碟,這種方式能有效的提高磁碟和CD-ROMS的I/O效能。磁碟和CD-ROMS即可以使用字元裝置檔案也可使用塊裝置檔案。
主號和次號:
    主號:當在任意目錄使用ls -l 時,結果的第5個欄位就是主號,裝置主號代表了這個裝置使用的是哪個裝置驅動程式
    次號:次號是一個24位的十六進位制數字,定義了設個裝置在系統中的物理的位置

掛接行動硬碟

  對linux系統而言,USB介面的行動硬碟是當作SCSI裝置對待的。插入行動硬碟之前,應先用fdisk –l 或 more /proc/partitions檢視系統的硬碟和硬碟分割槽情況。

  [root at pldyrouter /]# fdisk -l

  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes

  255 heads, 63 sectors/track, 8924 cylinders

  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot Start End Blocks Id System

  /dev/sda1 1 4 32098+ de Dell Utility

  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS

  /dev/sda3 2555 7904 42973875 83 Linux

  /dev/sda4 7905 8924 8193150 f Win95 Ext'd (LBA)

  /dev/sda5 7905 8924 8193118+ 82 Linux swap

在這裡可以清楚地看到系統有一塊SCSI硬碟/dev/sda和它的四個磁碟分割槽/dev/sda1 -- /dev/sda4, /dev/sda5是分割槽/dev/sda4的邏輯分割槽。接好行動硬碟後,再用fdisk –l 或 more /proc/partitions檢視
系統的硬碟和硬碟分割槽情況

[root at pldyrouter /]# fdisk -l

  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes

  255 heads, 63 sectors/track, 8924 cylinders

  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot Start End Blocks Id System

  /dev/sda1 1 4 32098+ de Dell Utility

  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS

  /dev/sda3 2555 7904 42973875 83 Linux

  /dev/sda4 7905 8924 8193150 f Win95 Ext'd (LBA)

  /dev/sda5 7905 8924 8193118+ 82 Linux swap

  Disk /dev/sdc: 40.0 GB, 40007761920 bytes

  255 heads, 63 sectors/track, 4864 cylinders

  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot Start End Blocks Id System

  /dev/sdc1 1 510 4096543+ 7 HPFS/NTFS

  /dev/sdc2 511 4864 34973505 f Win95 Ext'd (LBA)

  /dev/sdc5 511 4864 34973473+ b Win95 FAT32

  大家應該可以發現多了一個SCSI硬碟/dev/sdc和它的兩個磁碟分割槽/dev/sdc1?、/dev/sdc2,其中/dev/sdc5是/dev/sdc2分割槽的邏輯分割槽。我們可以使用下面的命令掛接/dev/sdc1和/dev/sdc5。

   #mkdir -p /mnt/usbhd1

   #mkdir -p /mnt/usbhd2

   注:建立目錄用來作掛接點(mount point)

   #mount -t ntfs /dev/sdc1 /mnt/usbhd1

   #mount -t vfat /dev/sdc5 /mnt/usbhd2

   注:對ntfs格式的磁碟分割槽應使用-t ntfs 引數,對fat32格式的磁碟分割槽應使用-t vfat引數。若漢字檔名顯示為亂碼或不顯示,可以使用下面的命令格式。

相關推薦

linuxmknod建立裝置(節點)

mknod命令用於建立一個裝置檔案,即特殊檔案 首先要明白什麼是裝置檔案,簡單的我們說 作業系統與外部裝置(入磁碟驅動器,印表機,modern,終端 等等)都是通過裝置檔案來進行通訊的,在Unix/Linux系統與外部裝置通訊之前,這個裝置必須首先要有一個裝置檔案,裝置檔案

Linux /dev 自動建立裝置節點

ifeq ($(KERNELRELEASE),) #KERNEL_DIR:=/lib/modules/$(shell uname -r)/build/ KERNEL_DIR:=/usr/src/linux-headers-3.2.0-29-generic-pae PWD:=$(shell pwd) modul

Linux 字元裝置驅動結構(二)—— 自動建立裝置節點

      上一篇我們介紹到建立裝置檔案的方法,利用cat /proc/devices檢視申請到的裝置名,裝置號。 第一種是使用mknod手工建立:mknod filename type major minor 第二種是自動建立裝置節點:利用u

linux驅動:自動建立裝置節點

在載入驅動模組後,就要自己使用mknod建立裝置節點,這樣雖然是可行的,但是比較麻煩。我們可以在__init()函式裡面新增一些函式,自動建立裝置節點。建立裝置節點使用了兩個函式 class_create()和device_create(),當然在__exit()函式裡,要使

linux driver ------ 字元裝置驅動之“ 建立裝置節點流程 ”

在字元裝置驅動開發的入門教程中,最常見的就是用device_create()函式來建立裝置節點了,但是在之後閱讀核心原始碼的過程中卻很少見device_create()的蹤影了,取而代之的是device_register()與device_add(),將device_create()函式展開不難發現:其實de

Linux裝置驅動第四天(自動建立裝置節點、LED驅動程式)

回顧: 與驅動有關的幾個重要結構體 1,struct cdev //從軟體上代表硬體裝置 { dev_t dev;//裝置號 = 主裝置號+次裝置號 struct file_operations f_ops; } 2,stru

Linux裝置節點建立》使用者空間ueventd建立裝置節點規則

一、devfs、udev和sysfs是什麼關係? linux2.6之前使用devfs裝置檔案系統,它存在與核心空間; linux2.6之後使用udev裝置檔案系統,它存在與使用者空間、但嚴重依賴與sysfs檔案系統。 二、Android(使用linux2.6以後的裝

Linux裝置節點建立》手動與自動建立裝置節點

一、手動建立 1.驅動模組 test_driver.c //#include <linux/devfs_fs_kernel.h> #include <linux/module.h> #include <linux/types.h>

linux字元驅動之自動建立裝置節點

上一節中,我們是手工建立裝置節點,大家肯定也會覺得這樣做太麻煩了。 問:能不能讓系統自動建立裝置節點? 答:可以,linux有udev、mdev的機制,而我們的ARM開發板上移植的busybox有mdev機制,那麼就使用mdev機制來自動建立裝置節點。 問:檔案系統裡,在

Linux裝置節點建立》使用者空間ueventd建立裝置節點規則

說明:本文基於Android2.3和Linux2.6,其餘版本僅供參考。 一、devfs、udev和sysfs是什麼關係? linux2.6之前使用devfs裝置檔案系統,它存在與核心空間; linux2.6之後使用udev裝置檔案系統,它存在與使用者空間、但嚴重依賴與sy

一步一步學習 Linux 驅動之自動建立裝置節點

extern struct device *device_create(struct class *cls, struct device *parent, dev_t devt, vo

linux驅動開發之自動建立裝置節點

在有2.6系列版本中支援udev管理裝置檔案可以方便的建立裝置節點,不必使用mknod來建立,本文使用最小編碼來說明建立的幾個方法。 //主要用到的四個方法在linux/device.h定義: //建立類和釋放類的函式  建立成後將建立/sys/class/name資料

linux_DEVICE_ATTR建立裝置節點程式

一、簡述:      通過DEVICE_ATTR建立裝置節點,可以完成一些簡單的驅動的測試工作,可以向節點做echo cat相關的操作。 二、程式碼如下: (1)驅動程式碼: #include <linux/init.h> #include

linux_DEVICE_ATTR建立裝置節點程式[轉]

一、簡述:      通過DEVICE_ATTR建立裝置節點,可以完成一些簡單的驅動的測試工作,可以向節點做echo cat相關的操作。 二、程式碼如下: (1)驅動程式碼: #include <linux/init.h> #include <lin

Linux Shell 判斷塊裝置節點是否存在

/************************************************************************* * Linux Shell 判斷塊裝置節點是否存在 * 說明: * 能牌問shell指令碼-f不能判

Android音訊驅動-ASOC之建立裝置節點

建立裝置檔案的方法: 第一種是使用mknod手工建立:mknod filename type major minor 第二種是自動建立裝置節點:利用udev(mdev)來實現裝置檔案的自動建立,首先應保證支援udev(mdev),由busybox配置。

udev建立裝置節點的規則

1. 裝置要在下面任一一組目錄下 /sys/subsystem/devices /sys/bus/devices, /sys/class/, /sys/block 2. 上面這些目錄下面的裝置目錄裡要有uevent子項, 當用戶程式向uevent裡寫入add, kerne

led驅動_自動建立裝置節點

原文連結: http://liu1227787871.blog.163.com/blog/static/20536319720128901736417/ 上篇文章大概說明了驅動編寫的格式, 但是我們每次都要去先insmod驅動程式, 然後cat /proc/devices

[ZedBoard移植嵌入式Linux教程(4)]建立裝置樹(Device-Tree)檔案dts

裝置樹用於硬體和軟體之間的資訊互動,也就是將ZedBoard的硬體資訊傳遞給linux核心,避免在linux核心中硬編碼而影響在其他平臺上的可移植性。裝置樹一般以兩種檔案格式存在,一個是dts檔案,也就是文字檔案,便於閱讀,另外一種是dtb檔案,是二進位制格式,是dts使用d

android中建立裝置節點

init收到uevent後,對於action為add/remove的uevent,會建立或刪除節點。這在handle_device_event中處理:如果主裝置號或次裝置號無效(-1),則返回;否則會根據subsystem會在dev下不同的目錄中建立裝置節點。