首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LINUX下 Udev详解[通俗易懂]

如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中。Mandrake,Gentoo等Linux分发版本采用了这种方式。devfs创建的设备文件是动态的。但是devfs有一些严重的限制,从 2.6.13版本后移走了。目前取代他的便是文本要提到的udev--一个用户空间程序。 目前很多的Linux分发版本采纳了udev的方式,因为它在Linux设备访问,特别是那些对设备有极端需求的站点(比如需要控制上千个硬盘)和热插拔设备(比如USB摄像头和MP3播放器)上解决了几个问题。下面我我们来看看如何管理udev设备。 实际上,对于那些为磁盘,终端设备等准备的标准配置文件而言,你不需要修改什么。但是,你需要了解udev配置来使用新的或者外来设备,如果不修改配置,这些设备可能无法访问,或者说Linux可能会采用不恰当的名字,属组或权限来创建这些设备文件。你可能也想知道如何修改RS-232串口,音频设备等文件的属组或者权限。这点在实际的Linux实施中是会遇到的。 为什么使用udev 在此之前的设备文件管理方法(静态文件和devfs)有几个缺点: * 不确定的设备映射。特别是那些动态设备,比如USB设备,设备文件到实际设备的映射并不可靠和确定。举一个例子:如果你有两个USB打印机。一个可能称为 /dev/usb/lp0,另外一个便是/dev/usb/lp1。但是到底哪个是哪个并不清楚,lp0,lp1和实际的设备没有一一对应的关系,因为他可能因为发现设备的顺序,打印机本身关闭等原因而导致这种映射并不确定。理想的方式应该是:两个打印机应该采用基于他们的序列号或者其他标识信息的唯一设备文件来映射。但是静态文件和devfs都无法做到这点。 *没有足够的主/辅设备号。我们知道,每一个设备文件是有两个8位的数字:一个是主设备号 ,另外一个是辅设备号来分配的。这两个8位的数字加上设备类型(块设备或者字符设备)来唯一标识一个设备。不幸的是,关联这些身边的的数字并不足够。 */dev目录下文件太多。一个系统采用静态设备文件关联的方式,那么这个目录下的文件必然是足够多。而同时你又不知道在你的系统上到底有那些设备文件是激活的。 *命名不够灵活。尽管devfs解决了以前的一些问题,但是它自身又带来了一些问题。其中一个就是命名不够灵活;你别想非常简单的就能修改设备文件的名字。缺省的devfs命令机制本身也很奇怪,他需要修改大量的配置文件和程序。; *内核内存使用,devfs特有的另外一个问题是,作为内核驱动模块,devfs需要消耗大量的内存,特别当系统上有大量的设备时(比如上面我们提到的系统一个上有好几千磁盘时) udev的目标是想解决上面提到的这些问题,他通采用用户空间(user-space)工具来管理/dev/目录树,他和文件系统分开。知道如何改变缺省配置能让你之大如何定制自己的系统,比如创建设备字符连接,改变设备文件属组,权限等。 udev配置文件 主要的udev配置文件是/etc/udev/udev.conf。这个文件通常很短,他可能只是包含几行#开头的注释,然后有几行选项:

03
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Initramfs_正在生成initramfs

    一、initramfs是什么 在2.6版本的linux内核中,都包含一个压缩过的cpio格式的打包文件。当内核启动时,会从这个打包文件中导出文件到内核的rootfs文件系统,然后内核检查rootfs中是否包含有init文件,如果有则执行它,作为PID为1的第一个进程。这个init进程负责启动系统后续的工作,包括定位、挂载“真正的”根文件系统设备(如果有的话)。如果内核没有在rootfs中找到init文件,则内核会按以前版本的方式定位、挂载根分区,然后执行 /sbin/init程序完成系统的后续初始化工作。 这个压缩过的cpio格式的打包文件就是initramfs。编译2.6版本的linux内核时,编译系统总会创建initramfs,然后把它与编译好的内核连接在一起。内核源代码树中的usr目录就是专门用于构建内核中的initramfs的,其中的initramfs_data.cpio.gz文件就是initramfs。缺省情况下,initramfs是空的,X86架构下的文件大小是134个字节。

    02

    Ubuntu 18.04 安装使用 Supervisor 进程守护并设置开机自动启动

    最近需要在 Ubuntu 上配置一下进程守护,因为有些进程必须一直运行,否则就比较尴尬。于是网上搜索了一下,比较原生的做法是使用 systemd 进行配置,但是看了下操作比较繁琐,于是搜到了 Supervisor。Supervisor(http://supervisord.org)是用 Python 开发的一个 client / server 服务,是 Linux / Unix 系统下的一个进程管理工具,不支持 Windows 系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用 Supervisor 管理的进程,当一个进程意外被杀死,Supervisord 监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写 shell 脚本来控制。

    04

    Linux系统:第六章:Linux服务

    1.创建简单的Linux脚本文件并执行 ①新建文本文件 vim invoke.sh ②加入几条简单的Linux命令,例如: ifconfig ll ③保存退出:wq ④修改文件权限信息 chmod 755 invoke.sh ⑤执行 ./invoke.sh ※为什么要带“./”? 因为前面什么都没有的话Linux会当作一个命令,但是又找不到对应的命令文件,所以无法执行。代码“./”之后Linux就知道这是一个路径,不会当作命令处理。 2.在CentOS7中将防火墙关闭并设置为开机不自动启动 systemctl stop firewalld.service systemctl disable firewalld.service 3.解压并配置JDK 第一步:解压JDK tar -zxvf /opt/jdk-8u121-linux-x64.tar.gz 第二步:编辑/etc/profile文件配置环境变量 cp /etc/profile /etc/profile.bak vim /etc/profile 第三步:配置JAVA_HOME和PATH 在/etc/profile文件末尾加入 JAVA_HOME=/opt/jdk1.8.0_121 PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH 第四步:使配置文件生效 source /etc/profile 或 reboot 第五步:验证 echo $PATH echo $JAVA_HOME java -version 4.解压并启动Tomcat 解压:tar -zxvf /opt/apache-tomcat-7.0.75.tar.gz 启动:/opt/apache-tomcat-7.0.75/bin/startup.sh 设置防火墙 5.MySQL安装 rpm -e --nodeps mariadb-libs-1:5.5.56-2.el7.x86_64 rpm -ivh /opt/MySQL-server-5.5.52-1.el6.x86_64.rpm rpm -ivh /opt/MySQL-client-5.5.52-1.el6.x86_64.rpm systemctl start mysql.service [root@rich opt]# mysqladmin -u root password New password: Confirm new password: [root@rich opt]# mysql -u root -p Enter password: 6.MySQL授权 第一步:登录MySQL服务器 第二步:use mysql; 第三步:查看user表部分内容 mysql> select host,user,password from user; +--------------+------+-------------------------------------------+ host user password +--------------+------+-------------------------------------------+ localhost root 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B computer_user root 127.0.0.1 root 1 root localhost computer_user +--------------+------+-------------------------------------------+ 6 rows in set (0.00 sec) 第四步:插入特定数据 insert into user(host,user,password) values('%','root','81F5E21E35407D884A6CD4A731AEBFB6AF209E1B');

    02
    领券