![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
你好啊陈同学
这个作者很懒,什么都没留下…
展开
-
linux top
linux关于top源码的一些分析原创 2022-07-17 16:13:13 · 226 阅读 · 1 评论 -
mount.nfs: access denied by server while mounting
access denied by server while mounting在服务器端/etc/exports中加入insecure原创 2021-12-20 15:22:18 · 321 阅读 · 0 评论 -
学习笔记九:linux驱动之等待队列
等待队列 waitqueue(等待队列)是内核用于管理等待资源的进程,当某个进程获取的资源没有准备好的时候,可以通过调用函数将当前进程添加到等待队列中,然后切换到其他进程继续执行。 当资源准备好,由资源提供方通过调用wake_up函数唤醒等待队列中的所有进程头文件#include <linux/wait.h>定义方法wait_queue_head_t wq;init_waitqueue_head(&wq);阻塞接口wait_event(wq,condition);原创 2021-11-05 23:47:02 · 362 阅读 · 0 评论 -
jiffies的初始值不为0
jiffiesjiffies记录了系统启动以来,经过了多少tick。一个tick代表多长时间,在内核的CONFIG_HZ中定义。比如CONFIG_HZ=200,则一个jiffies对应5ms时间。所以内核基于jiffies的定时器精度也是5ms。jiffies的初始值并不是0,而是300s后即将溢出的的值。这是为了存在溢出问题的情况下,尽早暴露问题。arch/arm/kernel/vmlinux.lds.S: jiffies = jiffies_64;include/linux/jiffi原创 2021-11-04 15:05:47 · 321 阅读 · 0 评论 -
modprobe和insmod的区别
modprobe和insmod首先modprobe和insmod都可以实现加载模块,但是更加推荐使用modprobe而不是insmod。因为modprobe可以解决模块间依赖的问题,比如A模块使用了符号导出,导出的符号需要在B模块中使用,这就要求在加载模块时需要先加载模块A再加载模块B,在insmod的情况下会给报错,而用modprobe则会在/lib/modules/$(shell uname -r)/目录下去寻找依赖模块。另一种情况,现在需要加载模块A,而模块A已经加载过了,已经存在了,使用insm原创 2021-11-02 15:59:52 · 1550 阅读 · 0 评论 -
学习笔记八:linux驱动之内核信号量
信号量信号量分为用户信号量和内核信号量,用户信号量又分为POSIX信号量和SYTEM V 信号量,POSIX信号量又细分为无名信号量与有名信号量。所以总共有四种信号量,即无名信号量、有名信号量、SYTEM V信号量、内核信号量。该文章中主要讲内核信号量的使用方法:初始化在linux/semaphore.h中#include <linux/semaphore.h>struct semaphore sem;sema_init(&sem,1);// 第一个参数是要操作的信号量原创 2021-10-26 13:48:00 · 174 阅读 · 0 评论 -
学习笔记二:新Linux驱动之字符设备驱动
新字符驱动设备首先看看分配设备号的函数(动态分配和静态分配):int register_chrdev_region(dev_t, unsigned, const char *);// 静态分配:通过已知未使用的主设备号像内核注册设备号// 缺点:设备号可能重复导致注册失败// 参数1:申请的设备号// 参数2:申请设备号个数(主设备号不变,次设备号增加)// 参数3:设备名(体现在/proc/devices)// 返回值: 成功返回0,失败返回负数int alloc_chrdev_reg原创 2021-08-12 13:27:33 · 86 阅读 · 0 评论 -
学习笔记一:Linux驱动之字符设备驱动
学习笔记一:Linux驱动之字符设备驱动先把用到的函数写在前面:// 注册字符设备int register_chrdev(unsigned int major, const char *name,const struct file_operations *fops);// 取消注册字符设备void unregister_chrdev(unsigned int major, const char *name);// file_operations中经常需要实现的成员如下struct file_原创 2021-08-04 14:40:01 · 114 阅读 · 0 评论 -
如何让Linux内核编译驱动模块时支持C99
如何让Linux内核编译驱动模块时支持C99嵌入式中使用的交叉编译器在编译时加上–std=c99选项可以支持c99arm-linux-gnueabihf-gcc test.c -o test --std=c99但在让内核编译驱动模块的时候并没有使用上述语句的机会,但是可以在内核模块的Makefile文件中加入下面这句话让其支持c99ccflags-y := -std=gnu99 -Wno-declaration-after-statement内核模块Makefile示例如下(源文件test.c原创 2021-08-03 16:29:08 · 3131 阅读 · 1 评论 -
obj-m与obj-y的区别
obj-m与obj-y的区别obj-y +=xxx.o该模块编译到zImageobj-m +=xxx.o该模块不会编译到zImage但会生成一个独立的xxx.ko 静态编译转载 2021-05-19 13:54:57 · 413 阅读 · 0 评论 -
Ubuntu安装tftp
Ubuntu安装tftp在 Ubuntu 上搭建 TFTP 服务器,需要安装 tftp-hpa 和 tftpd-hpa,命令如下:sudo apt-get install tftp-hpa tftpd-hpasudo apt-get install xinetd和 NFS 一样, TFTP 也需要一个文件夹来存放文件,在用户目录下新建一个目录,命令如下:mkdir /home/chen/linux/tftpbootchmod 777 /home/chen/linux/tftpboot这样我转载 2021-05-15 15:19:03 · 811 阅读 · 0 评论 -
Ubuntu开启SSH服务
Ubuntu开启SSH服务1.终端输入:sudo apt-get install openssh-server转载 2021-05-14 22:30:38 · 79 阅读 · 0 评论 -
Ubuntu安装nfs
Ubuntu安装nfs1.输入命令:sudo apt-get install nfs-kernel-server portmap2.创建一个用于nfs的文件夹mkdir nfscd nfs/pwd3.打开/etc/exportssudo vi /etc/exports4.向文件尾部写入#前面是nfs文件夹所在路径/home/chen/alientek/nfs *(rw,sync,no_root_squash) 5.重启NFS服务sudo /etc/init.d/nfs-ke转载 2021-05-14 22:21:54 · 313 阅读 · 0 评论 -
Uboot:Loading: *** ERROR: File lookup fail
Uboot:Loading: *** ERROR: File lookup fail出现以上这种问题主要是由于uboot中nfs版本与Ubuntu所用的nfs版本不同所导致的。解决方法让buntu中得NFS兼容V2。修改/etc/default/nfs-kernel-server 文件。(1)打开文件:sudo vim /etc/default/nfs-kernel-server (注意一定要sudo或者root权限)(2)修改如图:第2行,第12行,第19行(3)保存退出。(4)重启NF原创 2021-05-14 22:17:03 · 590 阅读 · 3 评论 -
ubuntu18.04设置清华镜像源
ubuntu18.04设置清华镜像源1.打开清华镜像源官网2.找到3.点击问号4.选择ubuntu版本18.04LTS5.复制给定的内容6.拷贝一份**/etc/apt/sources.list**文件$ sudo cp -v /etc/apt/sources.list /etc/apt/sources.list.backup7.编辑sources.list文件$ sudo gedit /etc/apt/sources.list8.全选并删除里面的内容,添加清华镜像源9.更新源原创 2020-09-30 12:58:57 · 3489 阅读 · 0 评论