您的位置:首页 > 运维架构 > Linux

centOS搭建linux驱动开发环境

2016-08-25 18:29 573 查看
更改软件的默认安装路径

1、win+R,启动管理器,输入regedit

2、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

3、ProgramFilesDir右击,修改,数值数据:D:\Program Files

linux常用命令及使用技巧

01、date - print or set the system date and time

02、stty - change and print terminal line settings

03、passwd - 更改用户密码

04、exit - cause normal process termination

05、login - 在系统上启动回话

06、pwd - print name of current/working directory

07、more - file perusal filter for crt viewing

08、less - opposite of more

09、head - output the first part of files

10、tail - output the last part of files

11、lp - print files

12、lpstat - print cups status information

13、cancel - cancel jobs

14、lpr - print files

15、lpq - show printer queue status

16、lprm - cancel print jobs

17、chmod - change file mode bits

18、rm - remove files or directories

19、cp - copy files and directories

20、kill - send a signal to a process

21、ps - report a snapshot of the current processes.

22、apt-get update - 更新软件源

23、apt-get upgrade - 升级系统

24、uname - print system information

25、cat /etc/issue - 查看ubuntu版本信息

26、df -h - 打印文件系统空间使用情况

27、fdisk -l - 查看硬盘分区情况

28、ifconfig - configure a network interface

29、netstat -r - 查看内核IP路由表

30、apt-get install zhcon - 控制台下显示中文

31、man - 在线参考手册的接口

32、ls - list directory contents

33、cp - copy files and directories

34、rm - remove files or directories

35、mv - move (rename) files

36、cat - concatenate files and print on the standard output

37、clear - clear the terminal screen

38、mount - mount a filesystem

39、su - 更改用户 ID 或成为超级用户

40、whoami - print effective userid

41、whereis - locate the binary, source, and manual page files for a command

42、which - locate a command

43、id - print real and effective user and group IDs

44、who - show who is logged on

45、grep, egrep, fgrep, rgrep - print lines matching a pattern

46、find - search for files in a directory hierarchy

47、history - GNU History Library

48、mkdir - make directories

49、tar — The GNU version of the tar archiving utility

50、finger — user information lookup program

51、ssh — OpenSSH SSH client (remote login program)

52、ssh_config — OpenSSH SSH client configuration files

53、shutdown 11:11 - 在11:11时关机

54、rmdir - remove empty directories

55、pwd - print name of current/working directory

56、locate - find files by name

57、ntpdate - set the date and time via NTP

58、dmesg | tail - 在终端打印内核信息

linux系统结构

linux系统有四个主要组成部分:内核(kernel)、shell、文件系统(file systems)和应用程序(users applications)

系统结构图:http://img.my.csdn.net/uploads/201210/25/1351159464_7814.png

3.1 linux内核(kernel)

内核是操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络服务,决定着系统的性能和稳定性。

linux内核由虚拟文件系统管理、内存管理、进程管理、抽象网络服务和设备驱动程序等组成。

内核结构图:http://img.my.csdn.net/uploads/201210/25/1351159614_1702.jpg

3.1.1 内存管理

3.1.2 进程管理

进程实际是某特定程序的一个运行实体。在linux系统中,可以同时运行多个进程,linux通过在短时间内轮流运行进程而实现多任务。

进程调度控制进程对CPU的访问,linux采用基于优先级的进程调度算法选择新的进程。

每个进程都有自己单独的地址空间,并且只能由这一进程访问。为了完成特定任务,有时需要两个程序的功能,例如一个程序输出文本,另一个程序对文本进行排序,为此,操作系统提供了进程间通讯的机制来帮助完成这样的任务。linux中常见的进程间通讯机制有信号、管道、共享内存、信号量和套接字等。

内核通过SCI提供一个应用程序编程接口API来创建一个新进程(fork、exec),并在他们之间进行通信和同步(signal)。

3.1.3 抽象网络服务

网络接口分为网络协议和网络驱动程序。

网络协议负责实现每一种可能的网络传输协议,linux的网络支持全部的TCP/IP协议。

linux内核的网络部分由BSD套接字、网络协议层和网络设备驱动程序组成。

3.1.4 设备驱动程序

设备驱动程序可以直接对硬件进行操作,设备驱动程序实际控制操作系统和硬件设备之间的交互。

设备驱动程序提供一组操作系统可理解的抽象接口完成和操作系统之间的交互,与硬件相关的具体操作细节由设备驱动程序完成。

网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。

3.1.5 虚拟文件系统管理

linux操作系统将独立的文件系统组合成了一个层次化的树形结构。

虚拟文件系统(virutalfile system/VFS):隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,虚拟文件系统分为逻辑文件系统和设备驱动程序。

逻辑文件系统指linux所支持的文件系统,设备驱动程序指为每一种硬件所编写的设备驱动程序模块。

虚拟文件系统结构图:https://img-blog.csdn.net/20160518101853198

3.2 shell

shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。他接受用户输入的命令并把它传入内核中去执行,是一个命令解释器。

目前主要有以下版本的shell:

Ⅰ bourne shell

Ⅱ bash

Ⅲ korn shell

Ⅳ C shell

3.3 文件系统

文件系统是文件存放在磁盘等存储设备上的组织方法。

3.3.1 文件系统类型

ext2 - 早期linux系统中常用的文件系统

ext3 - ext2的升级版,带日志

NFS - 网络文件系统,主要用于远程文件共享

FAT - windows XP 操作系统采用的文件系统

NTFS - windows NT/XP 操作系统采用的文件系统

3.3.2 文件类型

linux下主要的文件类型有:

Ⅰ 普通文件

Ⅱ 目录文件

Ⅲ 链接文件

Ⅳ 设备文件

Ⅴ 管道文件

Ⅵ 套接字文件

3.3.3 目录

linux目录采用的是树形结构,最上层是根目录,其他所有目录都由根目录出发而生成的。

linux目录结构图

http://img.my.csdn.net/uploads/201210/30/1351579754_9046.jpg

3.3.4 linux磁盘分区

硬盘分区一共有三种:主分区(primary partion)、扩展分区(extension partion)和逻辑分区(logical partion)

IDE接口的硬盘表示为:/dev/hda1、/dev/hdb1…

SCSI/SATA接口的硬盘表示为:/dev/sda、/dev/sdb…

任何一个分区都必须挂载到某个目录上才能进行读写操作。

3.3.5 linux主要目录的功用

/bin 二进制可执行命令

/dev 设备特殊文件

/etc 系统管理和配置文件

/etc/rc.d 系统启动的配置文件及脚本

/home 用户主目录的基点

/lib 标准程序设计库/动态链接共享库

/sbin 系统管理命令,存放系统管理员使用的管理程序

/tmp 公用的临时文件存储点

/root 系统管理员的主目录

/mnt 用户临时挂载其他文件系统

/lost+found 系统非正常关机留下的文件

/proc 虚拟的目录,系统内存的映射,可以访问这个目录来获取系统信息

/var
4000
某些大文件的溢出区

/usr/bin 应用程序

/usr/sbin 超级用户的管理程序

/usr/include linux下开发和编译应用程序所需要的头文件

/usr/lib 常用的动态链接库和软件包的配置文件

/usr/src 源代码

/usr/local/bin 本地增加的命令

/usr/local/lib 本地增加的库

对于一个磁盘分区来说,在被指定为相应的文件系统后,整个分区被分为1024、2048和4096大小字节的块,根据块使用的不同,可分为:

Ⅰ 超级块(superblock)

整个文件系统的第一块空间,包括整个文件系统的基本信息、指向inode和数据块的指针等相关信息。

Ⅱ inode块(文件索引节点)

是文件系统连接任何子目录、文件的桥梁,每个子目录和文件只有唯一的inode块,它包含文件系统中文件的基本属性、存放数据的位置等相关信息。

Ⅲ 数据块(block)

实际记录文件的内容,若文件太大,会占用多个block

3.3.6 挂在文件系统

linux系统中每个分区都是一个文件系统,将一个文件系统的顶层目录挂到另一个文件系统的子目录,使他们成为一个整体,称为挂载。

例如要读取硬盘中的一个格式化好的分区时,必须先把这些设备对应到某个目录上,才可以读取这些设备。

注意:

1、挂载点必须是一个目录;

2、一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。

挂载时使用mount命令,格式为:mount [-参数] [设备名称] [挂载点]

3.3.7 软链接、硬链接

可以用ln命令对一个已经存在的文件在建立一个新的链接,而不复制文件的内容,链接有软连接和硬链接之分,软连接又叫符号连接。

硬链接:文件的一个副本,原文件名和链接文件名都指向相同的物理地址,目录不能有硬链接;

软连接:类似windows下的快捷方式

硬链接与软连接的区别:

Ⅰ 硬链接源文件和新文件的inode标号一样,而软链接不同;

Ⅱ 对源文件删除,会导致软连接不可用,而硬链接不受影响;

Ⅲ 对源文件的修改,软、硬链接文件内容也一样会被修改

3.4 linux应用

标准的linux系统一般都有一套称为应用程序的程序集,包括文本编辑器、编程语言、X windows、办公套件、internet工具和数据库等。

在linux上安装服务器管理软件cockpit

4.1 安装cockpit

[root@localhost ~]# yum install cockpit


4.2 启动cockpit


[root@localhost ~]# systemctl start cockpit
[root@localhost ~]# systemctl enable cockpit.socket


4.3 允许通过防火墙

[root@localhost ~]# firewall-cmd --add-service=cockpit --permanent
[root@localhost ~]# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables-save


4.4 访问cockpit web界面

用浏览器打开http://ip-address:9090https://192.168.1.180:9090

界面效果图

http://a3.qpic.cn/psb?/c97e5076-88a2-4ec7-9116-2a7408c510c5/dIMumD3AMu..8*L4sPa8t5P5e4mPeRqls0S1xpjIH9Q!/b/dLAAAAAAAAAA&bo=JgSAAqAFZAMFCEk!&rf=viewer_4

5. centOS搭建linux驱动开发环境

五、centOS搭建linux驱动开发环境

5.1 https://www.kernel.org/下载kernel内核源码,解压到/usr/src目录下

xz -d linux-4.7.2.tar.xz得到linux-4.7.2.tar文件

tar -xvf linux-4.7.2.tar得到linux-4.7.2文件夹

5.2 为系统的include创建链接文件

cd /usr/include
rm -rf asm linux scsi
ln -s /usr/src/linux-4.7.2/include/asm-generic asm
ln -s /usr/src/linux-4.7.2/include/linux linux
ln -s /usr/src/linux-4.7.2/include/scsi scsi


5.3 下载安装内核开发包
yum install kernel-devel
5.4 建立构建的软连接
ln -s ../../../usr/src/kernels/3.10.0-327.28.3.el7.x86_64/ build
5.5 对应的Makefile文件(hello.c为例)


ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KDIR := /usr/include/build
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -rf *.ko *.o *.mod.o *.mod.c *.symvers
endif
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息