歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux NFS啟動慢的問題 開機加速 Redhat更改計算機名 嵌入式linu

Linux NFS啟動慢的問題
Redhat在VMWare虛擬機啟動的時候,在啟動NFS服務時候停留很長時間,原因及解決方法如下:
因為每次客戶端mount過NFS而又沒有正常umount後,在/var/lib/nfs/rmtab裡會留下記錄,每次NFS啟動的時候都會去 check以前的IP,如果不通,要等到timeout才行。cat rmtab看一下,很多用過的IP都在裡面記著,難怪慢的象蝸牛一樣!清空了後試了一下,速度就快起來了。
Linux更改計算機名
do as the following steps:
1)open a shell, tpye the command below:
[root@kcn-110]#hostname kcn-110mw
2)edit the file:/etc/sysconfig/network, change the value of 'HOSTNAME':
[root@kcn-110]#vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=kcn-110mw

3)edit the file:/etc/hosts, change the ip address and your hostname
[root@kcn-110]#vi /etc/hosts

# Do not remove the following line, or various programs
# that require network functionality will fail.
#127.0.0.1 localhost.localdomain localhost
192.168.0.110 kcn-110mw kcn-110mw
Linux驅動 讀寫IO端口
在Arm ,Linux裡面,全部都會做phy->virt的映射。映射方式中的一種是靜態映射,ioremap是動態映射。在靜態映射之後,仍然可以通過ioremap動態映射,也就是一個IO物理地址可以映射到多個虛擬地址。
(1)關於IO與內存空間:
在X86處理器中存在著I/O空間的概念,I/O空間是相對於內存空間而言的,它通過特定的指令in、out來訪問。端口號標識了外設的寄存器地址。Intel語法的in、 out指令格式為:
IN 累加器, {端口號│DX}
OUT {端口號│DX},累加器
目前,大多數嵌入式微控制器如ARM、PowerPC等中並不提供I/O空間,而僅存在內存空間。內存空間可以直接通過地址、指針來訪問,程序和程序運行中使用的變量和其他數據都存在於內存空間中。即便是在X86處理器中,雖然提供了I/O空間,如果由我們自己設計電路板,外設仍然可以只掛接在內存空間。此時,CPU可以像訪問一個內存單元那樣訪問外設 I/O端口,而不需要設立專門的I/O指令。因此,內存空間是必須的,而I/O空間是可選的。
(2)inb和outb:
在Linux設備驅動中,宜使用Linux內核提供的函數來訪問定位於I/O空間的端口,這些函數包括:
· 讀寫字節端口(8位寬)
unsigned inb(unsigned port);
void outb(unsigned char byte, unsigned port);
· 讀寫字端口(16位寬)
unsigned inw(unsigned port);
void outw(unsigned short word, unsigned port);
· 讀寫長字端口(32位寬)
unsigned inl(unsigned port);
void outl(unsigned longword, unsigned port);
· 讀寫一串字節
void insb(unsigned port, void *addr, unsigned long count);
void outsb(unsigned port, void *addr, unsigned long count);
· insb()從端口port開始讀count個字節端口,並將讀取結果寫入addr指向的內存;outsb()將addr指向的內存的count個字節連續地寫入port開始的端口。
· 讀寫一串字
void insw(unsigned port, void *addr, unsigned long count);
void outsw(unsigned port, void *addr, unsigned long count);
· 讀寫一串長字
void insl(unsigned port, void *addr, unsigned long count);
void outsl(unsigned port, void *addr, unsigned long count);
上述各函數中I/O端口號port的類型高度依賴於具體的硬件平台,因此,只是寫出了unsigned。
(3)readb和writeb:
在設備的物理地址被映射到虛擬地址之後,盡管可以直接通過指針訪問這些地址,但是工程師宜使用Linux內核的如下一組函數來完成設備內存映射的虛擬地址的讀寫,這些函數包括:
· 讀I/O內存
unsigned int ioread8(void *addr);
unsigned int ioread16(void *addr);
unsigned int ioread32(void *addr);
與上述函數對應的較早版本的函數為(這些函數在Linux 2.6中仍然被支持):
unsigned readb(address);
unsigned readw(address);
unsigned readl(address);
· 寫I/O內存
void iowrite8(u8 value, void *addr);
void iowrite16(u16 value, void *addr);
void iowrite32(u32 value, void *addr);
與上述函數對應的較早版本的函數為(這些函數在Linux 2.6中仍然被支持):
void writeb(unsigned value, address);
void writew(unsigned value, address);
void writel(unsigned value, address);

Copyright © Linux教程網 All Rights Reserved