Linux杂项
文章平均质量分 81
这里的文章都是还没有分类,后续将移至其他专栏
R-QWERT
这个作者很懒,什么都没留下…
展开
-
Linux:服务器两块网卡路由优先级冲突 Metric值
为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。执行 route -n 查看路由的情况,就能看到修改的Metric值发生了变化。重启网络服务,配置的临时路由信息会失效。的方式来让udhcpc调用时设定优先级。我这里配置的是eth0的优先级高。修改网卡配置文件,如果没有就加上。再分享一下添加路由的命令。另外,嵌入式可以通过修改。转载 2023-06-25 21:26:19 · 1819 阅读 · 0 评论 -
嵌入式系统中常用的文件系统
嵌入式系统中常用文件系统包括cramfs、jffs2、NFS、initrd、ext4、squashfs、ubifs等。它们的特点如下:1、cramfs 和 jffs2 具有好的空间特性,很适合嵌入式产品应用。2、cramfs 与 squashfs 为只读文件系统,目前只有 SPI Nor FLASH 支持这两种文件系统。3、squashfs 压缩率最高。4、jffs2 为可读写文件系统。5、NFS 文件系统适用于开发初期的调试阶段。6、initrd 采用 cramfs 文件系统,为只读。转载 2023-02-15 23:02:00 · 1254 阅读 · 0 评论 -
Linux:如何使用wpa_supplicant及wpa_cli 创建p2p
注意,当 go_intent=15 时,说明强制当前设备为Go角色。最近在搞linux 系统的p2p,特此简单总结下。转载 2022-09-11 23:07:49 · 3476 阅读 · 0 评论 -
Linux:系统进程状态
例如,在进程对某些硬件进行操作时(比如进程调用read系统调用对某个设备文件进行读操作,而read系统调用最终执行到对应设备驱动的代码,并与对应的物理设备进行交互),可能需要使用TASK_UNINTERRUPTIBLE状态对进程进行保护,以避免进程与设备交互的过程被打断,造成设备陷入不可控的状态。也就是说,如果给一个TASK_INTERRUPTIBLE状态的进程发送SIGKILL信号,这个进程将先被唤醒(进入TASK_RUNNING状态),然后再响应SIGKILL信号而退出(变为TASK_DEAD状态)。转载 2022-09-11 22:55:07 · 546 阅读 · 0 评论 -
Linux:内核kernel启动流程
1. Linux启动流程框图ENTRY(stext) (arch/arm/kernel/head.S) |_ safe_svcmode_maskall (arch/arm/include/asm/assembler.h) |_ __lookup_processor_type (arch/arm/kernel/head-common.S) |_ __vet_atags (arch/arm/kernel/head-common.S) |_ __create_page_tables (arch/arm/原创 2021-06-10 20:16:30 · 1810 阅读 · 0 评论 -
Linux:udev机制详解
如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs, 一个基于内核的动态设备文件系统,他首次出现在2.3.46内核中。Mandrake,Gentoo等Linux分发版本采用了这种方式。devfs创建 的设备文件是动态的。但是devfs有一些严重的限制,从2.6.13版本后移走了。目前取代他的便是文本要提到的udev--一个用户空间转载 2021-06-02 16:24:28 · 1003 阅读 · 0 评论 -
Linux应用编程:几种定时器的使用
使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用 Linux 内部的三个定时器;另一个是用 sleep 或 usleep 函数让进程睡眠一段时间;其实,还有一个方法,那就是用 gettimeofday、difftime 等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用。1、alarm 如果不要求很精确的话,用 alarm() 和 signal() 就够了unsigned转载 2021-06-02 09:48:20 · 7896 阅读 · 0 评论 -
Linux :Inotify机制
描述Inotify API用于检测文件系统变化的机制。Inotify可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里的内容都会成为检测的对象。此种机制的出现的目的是当内核空间发生某种事件之后,可以立即通知到用户空间。方便用户做出具体的操作。Inotify APIinotify_init(void);用于创建一个inotify的实例,然后返回inotify事件队列的文件描述符。 同样内核也提供了inotify_init1(int flags)接口函数,当fl转载 2021-05-05 10:16:07 · 416 阅读 · 0 评论 -
Linux:apt与apt-get的区别
Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt 命令的引入。其实早在 2014 年,apt 命令就已经发布了第一个稳定版,只是直到 2016 年的 Ubuntu 16.04 系统发布时才开始引人关注。 随着 apt install package 命令的使用频率和普遍性逐步超过 apt-get install package,越来越多...转载 2021-04-19 15:00:19 · 305 阅读 · 0 评论 -
Linux:make install安装到指定路径
方法1./configure --prefix=/your/dirmakemake install这是使用autotools的项目比较标准的做法。方法2./configuremakemake install DESTDIR=/your/dir说明:这种方法libtool会因为之前"./configure"的“--prefix”参数与预期安装的目录不匹配而发出警告,例如以下打印:libtool: warning: remember to run 'libtool --finish /原创 2021-04-19 14:31:46 · 13058 阅读 · 0 评论 -
Linux:固定USB设备名称方法
当我们接入两个或两个以上的同类型usb设备时,内核会在/dev目录下生成对应的设备文件例如/dev/ttyUSB0,/dev/ttyUSB1。这样就会导致我们在访问设备时不知道相应的设备文件对应的是哪一个usb设备。下面讲一下几种方法来让大家能够正确的访问到想访问的设备。方法一: 如果是临时测试可以通过手动顺序插入设备来做到区分,先插入的设备生成的设备文件编号较低,比如usb转串口设备是按照ttyUSB0,ttyUSB1这种方式逐渐生成。方法二: 如果是想开机自动固定usb设备的名称,而且你转载 2021-04-19 08:43:15 · 1646 阅读 · 0 评论 -
Linux:pkg-config的一些用法(用于获得某个已安装的第三方库或模块的所有编译信息)
我们在用第三方库的时候,经常会用到pkg-config这个东西来编译程序。那pkg-config究竟是什么呢?本博文简单地说一下。 pkgconfig有什么用: 大家应该都知道用第三方库,就少不了要使用到第三方的头文件和库文件。我们在编译、链接的时候,必须要指定这些头文件和库...转载 2021-04-12 19:46:11 · 607 阅读 · 0 评论 -
Linux:内核空间内存申请函数kmalloc、kzalloc、vmalloc的区别
我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free()。注意:动态申请的内存使用完后必须要释放,否则会造成内存泄漏,如果内存泄漏发生在内核空间,则会造成系统崩溃。 那么,在内核空间中如何申请内存呢?一般我们会用到 kmalloc()、kzalloc()、vmalloc() 等,下面我们介绍一下这些函数的使用以及它们之间的区别。kmalloc()函数原型:void *kmalloc(size_t size, g转载 2021-03-27 11:23:49 · 243 阅读 · 0 评论 -
Linux:内核中修改和最小化保存defconfig的方法
1.要修改在arch/arm/configs下的文件xxx_defconfig2.make xxx_defconfig 会生成.config文件3.make menuconfig 修改配置后保存4.make savedefconfig 生成defconfg文件5.cp defconfig arch/arm/configs/xxx_defconfig 保存这样保存的defconfig文件,配置最小化。————————————————版权声明:本文为CSDN博主「j_j_g_a」的原创文章,遵循C转载 2021-03-22 09:25:00 · 545 阅读 · 0 评论 -
Linux:SQLite基本使用及C语言示例
SQLite基本使用及C语言示例1、简介sqlite3在2000年诞生,体积小(约250KB,3万行代码),是其他大型数据库的阉割版,集成了绝大多数的功能,但不是严格的数据类型匹配、不支持数据类型检测。轻量级的数据库,支持数据库大小至2TB,比目前流行的大多数数据库对数据操作要快。2、安装(大部分Linux发行版本已经默认自带)sudo apt-get install sqlite33、终端上的操作命令3.1 进入sqlite3sqlite33.2 系统命令(以“.”开头)原创 2021-03-14 11:59:07 · 404 阅读 · 0 评论 -
Linux:了解Kconfig的基本语法,顺便在linux源码中添加自定义菜单选项
文章目录前言1、Kconfig简介1.1 Kconfig与Makefile、.config的联系1.2 make menuconfig 流程1.3 内核中的Kconfig关键字1.3.1 菜单相关1.3.2 选项相关1.3.3 其他2、在make menuconfig中添加自己的选项2.1 先准备好自己的源码test.c2.2 修改Kconfig2.3 修改Makefile2.4 查看效果前言其实不管在kernel还是其他项目,Kconfig文件给我们最直观的体验就是用于make menuconfig时原创 2020-12-27 23:08:05 · 855 阅读 · 0 评论 -
Linux:命令行调试WiFi(iwlist/iwconfig/iw/wpa_supplicant/wpa_cli/dhcp/hostapd/hostapd_cli的使用方法)
文章目录1、编译步骤2、iwlist3、iwconfig4、iw5、wpa_supplicant5.1 wpa_supplicant —— 连接AP热点5.2 wpa_cli —— wpa_supplicant的客户端6、动态获取IP地址6.2 方式1:使用busybox自带的udhcpc工具(推荐)6.2 方式2:dhclient7、hostapd7.1 hostapd —— 创建AP热点7.2 hostapd_cli —— hostapd的客户端8、动态分配IP地址8.1 方式1:使用busybox自带原创 2020-07-21 20:54:28 · 7757 阅读 · 0 评论 -
Linux:u-boot、kernel、Busybox、Buildroot 、交叉编译工具链下载地址
工具名称下载地址arm-linux-http://www.arm9.net/download.asparm-linux-gnueabi-/arm-linux-gnueabihf-https://releases.linaro.org/components/toolchain/binaries/u-bootftp://ftp.denx.de/pub/u-boot/kernelhttps://mirrors.edge.kernel.org/pub/linux/ker...原创 2020-06-02 23:07:22 · 635 阅读 · 1 评论 -
Linux:printk与printf的区别、echo 0 > /proc/sys/kernel/printk
1、printk与printf的区别内核层使用printk打印,应用层调用C库的printf打印。在内核层是调用不了文件系统中C库的printf只能用printk。两者之间的一个显著区别在于printk允许通过指定一个标志来设置优先级(在include/linux/kern_levels.h中定义),不写则默认为级别4(MESSAGE_LOGLEVEL_DEFAULT),级别高于设定的输出级别才可以显示(可在include/linux/printk.h修改宏CONSOLE_LOGLEVEL_DEFAULT原创 2020-04-24 15:43:35 · 2607 阅读 · 0 评论 -
Linux:制作静态库和动态库
1、前言库一般都是将写好的比较成熟的代码进行封装,它的作用是方便代码重复利用、移植,不需要每次使用这些代码时都从零开始写起。编译C源码成可执行程序包括四个步骤:预处理->编译->汇编->链接(参考地址)。库是在链接阶段编进程序中,可以分为静态链接和动态链接两种方式:使用静态库是将 .a 文件包含的内容一起编译到可执行文件中,正是因为这样,如果我们需要编译多个不同的程序,这些程序各自都包含静态库的内容,导致可执行程序也会变大,而且多个程序在内存中就会存在多份。如果使用动态库,把 .s原创 2020-04-18 14:00:54 · 218 阅读 · 0 评论