linux創建設備
❶ 如何在suselinux上創建raw設備
裸設備,是沒有經過格式化的分區或磁碟,也叫裸分區(原始分區),不被Unix通過文件系統來讀取的特殊字元設備。它由應用程序負責對
它進行讀寫操作。不經過文件系統的緩沖,是不被操作系統直接管理的設備。由於跨過操作系統管理,使得I/O效率更高。在基於SUSE Linux
10上安裝Oracle 10g RAC的話,由於Oracle 10g 不支持將ocr與votingdisk 存放在ASM 磁碟中,因此,依然需要為其使用裸設備方式。SUSE
Linux裸設備的配置與其他的Linux稍有差異,下面將具體描述。
[python] view plain
1、先對磁碟進行分區,sdd如下面的方法炮製
#下面的示例中使用sdc和sdd來用作裸設備,一塊用於ocr,一塊用於votingdisk
bo2dbp:~ # fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
❷ LINUX 下怎麼重建設備,或刷新新接入的硬體設備
一、Linux device driver 的概念 系統調用是操作系統內核和應用程序之間的介面,設備驅動程序是操作系統內核和機器硬體之間的介面。設備驅動程序為應用程序屏蔽了硬體的細節,這樣在應用程序看來,硬體設備只是一個設備文件,應用程序可以象操作普通文件一樣對硬體設備進行操作。設備驅動程序是內核的一部分,它完成以下的功能:
1、對設備初始化和釋放。
2、把數據從內核傳送到硬體和從硬體讀取數據。
3、讀取應用程序傳送給設備文件的數據和回送應用程序請求的數據。
4、檢測和處理設備出現的錯誤。
在Linux操作系統下有三類主要的設備文件類型,一是字元設備,二是塊設備,三是網路設備。字元設備和塊設備的主要區別是:在對字元設備發出讀/寫請求時,實際的硬體I/O一般就緊接著發生了,塊設備則不然,它利用一塊系統內存作緩沖區,當用戶進程對設備請求能滿足用戶的要求,就返回請求的數據,如果不能,就調用請求函數來進行實際的I/O操作。塊設備是主要針對磁碟等慢速設備設計的,以免耗費過多的CPU時間來等待。
❸ linux用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位的十六進制數字,定義了設個設備在系統中的物理的位置
就拿我們常用的創建卷組來看:
先來看看mknod
命令,如果該設備文件你想放在一個特定的文件夾下當然就先創建文件夾
mknod
設備文件名[/dev/xyz]
b/c
主號
次號
{
mkdir
/dev/vg01
mknod
/dev/vg01/group
c
64
0X010000}
創建之後,就可以使用你想要創建的設備對於德創建命令了,如我現在的卷組的創建命令:
vgcreate
/dev/vg01
/dev/dsk/c*t*d*
一直進行下去,之後的步驟根據不同的設備而不盡相同。
❹ 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位的十六進制數字,定義了設個設備在系統中的物理的位置
就拿我們常用的創建卷組來看;
先來看看mknod 命令,如果該設備文件你想放在一個特定的文件夾下當然就先創建文件夾
mknod 設備文件名[/dev/xyz] b/c 主號 次號
{ mkdir /dev/vg01
mknod /dev/vg01/group c 64 0X010000
}
創建之後,就可以使用你想要創建的設備對於德創建命令了,如我現在的卷組的創建命令:
vgcreate /dev/vg01 /dev/dsk/c*t*d*
一直進行下去
之後的步驟根據不同的設備而不盡相同
❺ Linux上如何創建裸設備
1.創建
pv
pvcreate -M2 --metadatasize 100M /dev/sda
pvcreate -M2 --metadatasize 100M /dev/sdb1
pvcreate -M2 --metadatasize 100M /dev/sdb2
pvcreate -M2 --metadatasize 100M /dev/sdc
物理卷可以是整個硬碟(
lun
),也可以是硬碟上的一個分區
2.創建
vg
vgcreate vg_db /dev/sda /dev/sdb1 /dev/sdb2 /dev/sdc -s128m
3.創建
lv
lvcreate -L2048m -i4 -I64k vg_db -n lv_2g_001
lvcreate -L2048m -i4 -I64k vg_db -n lv_2g_002
4.綁定
raw /dev/raw/raw1 /dev/mapper/vg_db-lv_2g_001
raw /dev/raw/raw2 /dev/mapper/vg_db-lv_2g_002
使用
raw
命令綁定的裸設備在重啟後會失效。所以需要修改
/etc/sysconfig/rawdevices
配置文件,在文件中加入如下內容(每個裸設備一
行):
/dev/raw/raw1 /dev/mapper/vg_db-lv_2g_001
/dev/raw/raw2 /dev/mapper/vg_db-lv_2g_002
執行
/etc/init.d/rawdevices restart
使配置文件中的裸設備生效
執行
/sbin/chkconfig rawdevices on
保證機器啟動的時候裸設備能夠載入
5.授權
chown -R oracle.dba /dev/mapper
修改配置文件
/etc/udev/permissions.d/50-udev.permissions
注釋掉
raw/*:root:disk:0660
添加新行
raw/*:oracle:dba:0660
6.鏈
(可選)
ln -s /dev/raw/raw1 /oradata/ningoo/system01.dbf
ln -s /dev/raw/raw2 /oradata/ningoo/undo01.dbf
❻ 如何在嵌入式LINUX中增加自己的設備驅動程序
Linux驅動程序的使用可以按照兩種方式編譯,一種是靜態編譯進內核,另一種是編譯成模塊以供動態載入。由於uClinux不支持模塊動態載入,而且嵌入式LINUX不能夠象桌面LINUX那樣靈活的使用insmod/rmmod載入卸載設備驅動程序,因而這里只介紹將設備驅動程序靜態編譯進uClinux內核的方法。
下面以UCLINUX為例,介紹在一個以模塊方式出現的驅動程序test.c基礎之上,將其編譯進內核的一系列步驟:
(1)
改動test.c源帶代碼
第一步,將原來的:
#include
#include
char
kernel_version[]=UTS_RELEASE;
改動為:
#ifdef
MODULE
#include
#include
char
kernel_version[]=UTS_RELEASE;
#else
#define
MOD_INC_USE_COUNT
#define
MOD_DEC_USE_COUNT
#endif
第二步,新建函數int
init_test(void)
將設備注冊寫在此處:
result=register_chrdev(254,"test",&test_fops);
(2)將test.c復制到/uclinux/linux/drivers/char目錄下,並且在/uclinux/linux/drivers/char目錄下mem.c中,int
chr_dev_init(
)函數中增加如下代碼:
#ifdef
CONFIG_TESTDRIVE
init_test();
#endif
(3)在/uclinux/linux/drivers/char目錄下Makefile中增加如下代碼:
ifeq($(CONFIG_TESTDRIVE),y)
L_OBJS+=test.o
Endif
(4)在/uclinux/linux/arch/m68knommu目錄下config.in中字元設備段里增加如下代碼:
bool
'support
for
testdrive'
CONFIG_TESTDRIVE
y
(5)
運行make
menuconfig(在menuconfig的字元設備選項里你可以看見我們剛剛添加的'support
for
testdrive'選項,並且已經被選中);make
dep;make
linux;make
linux.text;make
linux.data;cat
linux.text
linux.data
>
linux.bin。
(6)
在
/uclinux/romdisk/romdisk/dev/目錄下創建設備:
mknod
test
c
254
0
並且在/uclinux/appsrc/下運行make,生成新的Romdisk.s19文件。
到這里,在UCLINUX中增加設備驅動程序的工作可以說是完成了,只要將新的linux.bin與Romdisk
❼ linux 設備哪個目錄創建設備節點
在基於Linux的系統中,設備節點一般在/dev下,通常使用如下的前綴: fb:frame緩沖 fd:軟盤 hd:IDE硬碟 lp:列印機 par:並口 pt:偽終端 s:SCSI設備 scd:SCSI音頻光碟機 sd:SCSI硬碟
❽ linux自動創建設備文件時:
我想應該是從設備的名字來區分是字元還是塊設備,因為設備驅動本身是個子系統,然後,在建立設備文件與設備驅動關聯的時候,也就是自動創建設備文件的時候,class_create和devicec_create會根據你建立的設備名索引到你的設備驅動,因此,它們就知道該為你創建的是字元設備文件還是塊設備文件了。
這僅僅是個人猜測而已,因為字元設備文件和塊設備文件的創建都是使用這兩個函數,而從表面的調用來看是分不出是字元還是塊的。那唯一能關聯起來的就是設備名了,而這兩個函數能跟設備名關聯起來的也就是類名了。