分析文件系统后,再分析设备模型,从而自然的理解了sysfs和设备模型的关系.既然linux2.6引入了设备模型和sysfs,那肯定是比之前更为先进的.下面要分析下内核中如何利用设备模型去管理设备的,在内核的driver目录下有好多子目录,比如iic spi pci input usb这些子...
看完了bus device和driver,终于到了设备模型上层架构的最后一个单元:class.class的初始化同样是在driver_init下: driver_init--classes_init [cpp] view plain copy int __initclasses_init( void ) { class_kset=kset_create_and_add( class ,NULL,NULL); i...
看完了device看driver,给出device_driver的结构体: [cpp] view plain copy struct device_driver{ const char *name; struct bus_type*bus; struct module*owner; const char *mod_name; /*usedforbuilt-inmodules*/ bool suppress_bind_attrs; /*disables...
分析完了bus,接下来分析device: 同样在 driver_init--devices_init [cpp] view plain copy spanstyle= font-family:LiberationSerif,serif; int __initdevices_init( void ) { devices_kset=kset_create_and_add( devices ,device_uevent_ops,NULL); if (!...
在分析设备模型的bus之前,我们看一下初始化的过程,很有意思: start_kernel--rest_init--kernel_init--do_basic_setup 在do_basic_setup中有个usermodehelper_init有意思,凭感觉,这个函数与kobject_uevent有联系,kobject_uevent做什么的,就是内核空间...
首先看下sys/devices怎么来的? 在初始的启动汇编中会跳到start_kernel----rest_init----kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND)----do_basic_setup(void)----driver_init(void)----buses_init(); int __init buses_init(void) { bus_k...
首先看下sys/devices怎么来的? 在初始的启动汇编中会跳到start_kernel----rest_init----kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND)----do_basic_setup(void)----driver_init(void)----devices_init(); int __init devices_init(void) { de...
LDM以kobject和kset为根本,初步了解了kobject后,继续趁热打铁,对kset做下了解,并对kobject和kest的关系做下了解。 内核空间与用户空间的映射关系如下表所示: 内核空间(internel) 用户空间(externel) 内核对象 (kernel objects) 目录 (directories) 对象...
首先看了下/Documentation/kobject.txt文档中的说明,然后结合sample/kobject/kobject-example.c 对kobject做一些初步了解。 在内核配置中将kobject-example配置成model编译成.ko加载到内核之中。 在insmod kobject-example.ko时会用到 module_init(example_...
Linux驱动模型是整个linux设备驱动的基石。一般来说,驱动工程师可以忽略设备模型,因为底下的设备模型可以处理好复杂的device、driver、bus以及class等等的关系。了解linux的模块机制,了解file的read、write和ioctl,了解register_chrdev、misc_register等...
同样的,在看kset-example之前我们先看下kset的相关操作函数。 kobject_set_name设定kobject的name 这个函数就是前面介绍的kobject_set_name_vargs函数的封装。 kset_init初始化kset voidkset_init(struct kset *k) { kobject_init_internal(k-kobj); INIT_L...
Linux 设备模型之字符设备 以 ldd 中 scull 为例来分析一下设备模型的字符设备。 对 scull 做了一些修改,一方面是内核版本不同引起的一些定义上的修改,另一方面是去除了 scull 中包括的 scullpipe 等设备。 为使得我们对字符设备更清晰,我们不分析 scull...
最近配置ss多用户的时候由于需要放行多个端口,有网友反应部分账号不能使用,登录ssh查看后原来是由于linux防火墙(iptables)中未放行对应端口导致,最简单粗暴的方式就是直接关闭防火墙(视VPS情况而定),既然遇到了这样的情况就做个简单的记录,方便参考...
看完宋宝华的《Linux设备驱动开发详解》及其有关博客,对字符设备驱动做一个小总结。 一、字符设备、字符设备驱动与用户空间访问该设备的程序三者之间的关系。 如图,在Linux内核中使用cdev结构体来描述字符设备,通过其成员dev_t来定义设备号(分为主、次设...
随着安全威胁的不断发生,入侵检测系统(IDS)在如今的数据中心环境中显得尤为必要。然而,随着越来越多的服务器将他们的网卡升级到10GB/40GB以太网,对如此线路上的硬件进行计算密集型的入侵检测越来越困难。其中一种提升入侵检测系统性能的途径是多线程入...
今天,Ubuntu项目成员Nathan Haines在社区发布关于召开Ubuntu自由文化展示竞赛的通知,为Ubuntu 16.04 LTS(Xenial Xerus)公开招募摄影作品,任何有兴趣的艺术家和摄影师都可以参与报名。 Haines在声明中:这些精选的内容不仅将涵盖下一套Ubuntu碟片中在未来...
关闭SELinux的方法: 修改/etc/selinux/config文件中的SELINUX= 为 disabled ,然后重启。 如果不想重启系统,使用命令setenforce 0 注: setenforce 1 设置SELinux 成为enforcing模式 setenforce 0 设置SELinux 成为permissive模式 在lilo或者grub的启动参数...
(1) 重启后永久性生效: 开启:chkconfig iptables on 关闭:chkconfig iptables off (2) 即时生效,重启后失效: 开启:service iptables start 关闭:service iptables stop 需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。 在...
(一)RedHat/CentOS/Fedora 系统密码破解 1.在grub选项菜单按E进入编辑模式 2.编辑kernel 那行最后加上S (或者Single) 3.按B,启动到single-user mode 4.进入后执行下列命令 # mount -t proc proc /proc # mount -o remount,rw / #passwd #sync #reboot (二)De...
SElinux以及防火墙的关闭 关闭SELinux的方法: 修改/etc/selinux/config文件中的SELINUX= 为 disabled ,然后重启。 如果不想重启系统,使用命令setenforce 0 注: setenforce 1 设置SELinux 成为enforcing模式 setenforce 0 设置SELinux 成为permissive模式...
1、相关基础知识点 1)redhat的启动方式和执行次序是: 加载内核 执行init程序 /etc/rc.d/rc.sysinit # 由init执行的第一个脚本 /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式 /etc/rc.d/rc.local #相应级别服务启动之后、在执行该文件(其实也可以把...
定制安装的linux可 能没有把rzsz包安装到系统,这对用securecrt这 样的windows工具传输文件特别不方便。为了使用这个方便的法门,可以手动安装之。 也可以直接用Yum安装yum -y install lrzsz 1、 下 载软件 rzsz-3.48.tar.gz。登录linux, 用命令 wget http:...
大多数大规模Web应用程序都使用MySQL+Memcached架构,其中许多应用也同时使用了NoSQL数据库,如TokyoCabinet/Tyrant,也有一些人全部放弃MySQL,转投NoSQL的怀抱,曾经有人将这称为NoSQL运动,因为NoSQL数据库在处理一些简单访问模式,如主键查找时,比MySQL...
第一种方法是通过设置特殊key前缀实现分布,基本可以实现memcache和key的一对多关系,好处在于不会混淆,代码如下: ?php $key=en_key2; //print_r(mem_arr($key)); $mem_arr=mem_arr($key); $mem = new Memcache; $mem-connect($mem_arr[host],$mem_arr[port...
什么是APF? APF(Advanced Policy Firewall)是 Rf-x Networks 出品的Linux环境下的软件防火墙,被大部分Linux服务器管理员所采用,使用iptables的规则,易于理解及使用.可算是Linux使用较多的防火墙.APF的配置参数众多,有效利用这些配置参数可加强你的服务器安...
1. OSI网络分层参考模型 网络协议设计者不应当设计一个单一、巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议。这样做使得每个协议的设计、分析、时限和测试比较容易。协议划分的一个主...
一、命令 puppet 用于执行用户所写独立的mainfests文件 用法: puppet [-h|--help] [-V|--version] [-d|--debug] [-v|--verbose] [--detailed-exitcodes] [-l|--logdest ] # puppet -l /tmp/manifest.log manifest.pp puppetd 运行在被管理主机上的客户端程序...
一 puppet简介 puppet是一种Linux、Unix平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。...
https://www.2daygeek.com/category/shell-script/...
虽然 Linux 的设计是安全的,但还是存在许多安全漏洞的风险,弱密码就是其中之一。作...
对于我们这些刚入门的运维小白来说,极强的好奇心总会驱使我们去涉猎各种技术,弄到最...
记录所有用户登录系统的任何操作日志,以便有据可查。 1.编辑 /etc/profile 文件。 1 ...
概览: 目前网卡绑定 mode 共有七种 (0~6)bond0 、 bond1 、 bond2 、 bond3 、 bond4...
一、命令介绍: 1、chmod 命令用来修改文件、目录的权限,系通都会设置umask,所以创...